agentkit-sdk-python 0.6.3__tar.gz → 0.6.4__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.6.3 → agentkit_sdk_python-0.6.4}/PKG-INFO +2 -1
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/session.py +95 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/sso.py +9 -1
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/skills/client.py +12 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/skills/types.py +21 -1
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli.py +4 -0
- agentkit_sdk_python-0.6.4/agentkit/toolkit/cli/cli_delete.py +186 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_deploy.py +52 -11
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_invoke.py +250 -4
- agentkit_sdk_python-0.6.4/agentkit/toolkit/cli/cli_list.py +404 -0
- agentkit_sdk_python-0.6.4/agentkit/toolkit/cli/cli_logs.py +253 -0
- agentkit_sdk_python-0.6.4/agentkit/toolkit/cli/cli_skill.py +476 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/__init__.py +2 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/cli.py +4 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/cli_create.py +27 -56
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/cli_exec.py +49 -5
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/cli_file.py +1 -1
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/cli_get.py +1 -1
- agentkit_sdk_python-0.6.4/agentkit/toolkit/cli/sandbox/cli_mount.py +361 -0
- agentkit_sdk_python-0.6.4/agentkit/toolkit/cli/sandbox/cli_run.py +365 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/cli_shell.py +3 -3
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/cli_web.py +1 -1
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/session_create.py +3 -51
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/session_sync.py +1 -1
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/tool_resolve.py +1 -1
- agentkit_sdk_python-0.6.4/agentkit/toolkit/cli/sandbox/tos_config.py +141 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/utils.py +17 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/executors/init_executor.py +13 -3
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/harness/__init__.py +2 -1
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/harness/config_builder.py +7 -1
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/harness/deploy.py +146 -5
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/__init__.py +2 -1
- agentkit_sdk_python-0.6.4/agentkit/toolkit/volcengine/apmplus_logs.py +184 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/version.py +1 -1
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit_sdk_python.egg-info/PKG-INFO +2 -1
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit_sdk_python.egg-info/SOURCES.txt +7 -1
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit_sdk_python.egg-info/requires.txt +1 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/pyproject.toml +2 -1
- agentkit_sdk_python-0.6.3/agentkit/toolkit/cli/cli_delete.py +0 -84
- agentkit_sdk_python-0.6.3/agentkit/toolkit/cli/cli_list.py +0 -203
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/LICENSE +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/MANIFEST.in +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/README.md +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/a2a_app/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/a2a_app/a2a_app.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/a2a_app/telemetry.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/agent_server_app/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/agent_server_app/agent_server_app.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/agent_server_app/middleware.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/agent_server_app/origin.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/agent_server_app/telemetry.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/base_app.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/mcp_app/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/mcp_app/mcp_app.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/mcp_app/telemetry.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/simple_app/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/simple_app/simple_app.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/simple_app/simple_app_handlers.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/simple_app/telemetry.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/utils.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/_openapi.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/_redact.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/_sigv4.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/admin.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/credential_hosting.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/errors.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/oauth.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/profile.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/providers.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/resolve.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/ssl_trust.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/store.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/sts.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/client/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/client/base_agentkit_client.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/client/base_iam_client.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/client/base_service_client.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/platform/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/platform/configuration.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/platform/console_urls.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/platform/constants.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/platform/context.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/platform/provider.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/account/client.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/account/types.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/identity/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/identity/auth.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/identity/client.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/identity/types.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/knowledge/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/knowledge/client.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/knowledge/types.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/mcp/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/mcp/client.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/mcp/types.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/memory/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/memory/client.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/memory/types.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/runtime/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/runtime/client.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/runtime/types.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/skills/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/tools/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/tools/client.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/tools/types.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/builders/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/builders/base.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/builders/local_docker.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/builders/ve_pipeline.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/__main__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_add.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_auth.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_build.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_config.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_destroy.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_init.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_knowledge.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_launch.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_memory.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_runtime.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_skills.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_skills_workflow.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_status.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_tools.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_version.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/console_reporter.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/interactive_config.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/git_config.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/model_config.py +0 -0
- /agentkit_sdk_python-0.6.3/agentkit/toolkit/cli/sandbox/utils.py → /agentkit_sdk_python-0.6.4/agentkit/toolkit/cli/sandbox/sandbox_client.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/utils.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/choice_resolvers.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/cloud_provider.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/config.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/config_handler.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/config_validator.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/constants.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/dataclass_utils.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/docker_build_config.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/global_config.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/region_defaults.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/region_resolver.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/strategy_configs.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/context.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/docker/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/docker/base_images.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/docker/container.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/docker/dockerfile/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/docker/dockerfile/manager.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/docker/dockerfile/metadata.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/docker/utils.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/errors.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/executors/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/executors/base_executor.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/executors/build_executor.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/executors/deploy_executor.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/executors/invoke_executor.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/executors/lifecycle_executor.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/executors/status_executor.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/harness/env_mapping.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/models.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/reporter.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/__pycache__/customer_support_assistant.cpython-312.pyc +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/__pycache__/financial_analyst.cpython-312.pyc +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/__pycache__/simple_app_veadk.cpython-312.pyc +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/__pycache__/simple_mcp_veadk.cpython-312.pyc +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/a2a.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/agent_server.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/basic.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/basic_stream.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/customer_support_assistant.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/eino_a2a/agent.go +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/eino_a2a/build.sh +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/eino_a2a/go.mod +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/eino_a2a/go.sum +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/eino_a2a/main.go +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/financial_analyst.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/langchain_basic_stream.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/simple_app_veadk.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/simple_mcp_veadk.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_a2a/agent.go +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_a2a/build.sh +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_a2a/go.mod +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_a2a/go.sum +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_a2a/main.go +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_basic/agent.go +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_basic/build.sh +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_basic/go.mod +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_basic/go.sum +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_basic/main.go +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/templates/code-pipeline-tos-cr-step.j2 +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/templates/golang/Dockerfile.j2 +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/templates/python/Dockerfile.j2 +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/wrappers/wrapper_basic.py.jinja2 +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/wrappers/wrapper_stream.py.jinja2 +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/runners/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/runners/base.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/runners/local_docker.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/runners/ve_agentkit.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/bindings/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/bindings/memory.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/builder.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/client.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/config.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/deployer.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/initializer.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/invoker.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/lifecycle.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/status.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/strategies/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/strategies/base_strategy.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/strategies/cloud_strategy.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/strategies/hybrid_strategy.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/strategies/local_strategy.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/utils/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/utils/agent_parser.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/code_pipeline.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/cr.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/iam.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/services/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/services/cr_service.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/services/tos_service.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/sts.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/utils/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/utils/project_archiver.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/utils/__init__.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/utils/global_config_io.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/utils/logging_config.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/utils/misc.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/utils/request.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/utils/template_utils.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/utils/ve_sign.py +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit_sdk_python.egg-info/dependency_links.txt +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit_sdk_python.egg-info/entry_points.txt +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit_sdk_python.egg-info/top_level.txt +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/setup.cfg +0 -0
- {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/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.6.
|
|
3
|
+
Version: 0.6.4
|
|
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
|
|
@@ -226,6 +226,7 @@ Requires-Dist: opentelemetry-exporter-otlp-proto-grpc<=1.37.0,>=1.32.1
|
|
|
226
226
|
Requires-Dist: opentelemetry-sdk<=1.37.0,>=1.32.1
|
|
227
227
|
Requires-Dist: pydantic>=2.11.9
|
|
228
228
|
Requires-Dist: requests>=2.32.5
|
|
229
|
+
Requires-Dist: PyJWT>=2.10.1
|
|
229
230
|
Requires-Dist: uvicorn>=0.37.0
|
|
230
231
|
Requires-Dist: pyyaml
|
|
231
232
|
Requires-Dist: python-dotenv>=1.1.0
|
|
@@ -77,6 +77,26 @@ def _effective_expiry(
|
|
|
77
77
|
return datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(seconds=duration_seconds)
|
|
78
78
|
|
|
79
79
|
|
|
80
|
+
def _jwt_expired(token: str, skew_seconds: int) -> bool:
|
|
81
|
+
"""True if a JWT is expired, within ``skew_seconds`` of expiry, or unreadable.
|
|
82
|
+
|
|
83
|
+
Reads only the ``exp`` claim (no signature check — the harness endpoint verifies
|
|
84
|
+
the signature; we just decide locally whether to refresh). An unparseable token or
|
|
85
|
+
a missing/invalid ``exp`` is treated as expired so we refresh rather than send a
|
|
86
|
+
token that will be rejected."""
|
|
87
|
+
try:
|
|
88
|
+
import jwt as _jwt
|
|
89
|
+
|
|
90
|
+
claims = _jwt.decode(token, options={"verify_signature": False, "verify_exp": False})
|
|
91
|
+
except Exception:
|
|
92
|
+
return True
|
|
93
|
+
exp = claims.get("exp")
|
|
94
|
+
if not isinstance(exp, (int, float)):
|
|
95
|
+
return True
|
|
96
|
+
now = datetime.datetime.now(datetime.timezone.utc).timestamp()
|
|
97
|
+
return now >= (exp - skew_seconds)
|
|
98
|
+
|
|
99
|
+
|
|
80
100
|
@dataclass(frozen=True)
|
|
81
101
|
class StsCredentials:
|
|
82
102
|
"""Short-lived Volcengine STS credentials."""
|
|
@@ -104,11 +124,17 @@ class AuthSession:
|
|
|
104
124
|
refresh_token: str | None = None,
|
|
105
125
|
sts: StsCredentials | None = None,
|
|
106
126
|
duration_seconds: int = 3600,
|
|
127
|
+
id_token: str | None = None,
|
|
128
|
+
access_token: str | None = None,
|
|
107
129
|
) -> None:
|
|
108
130
|
self.profile = profile
|
|
109
131
|
self._refresh_token = refresh_token
|
|
110
132
|
self._sts = sts
|
|
111
133
|
self._duration = duration_seconds
|
|
134
|
+
# OIDC tokens kept for data-plane (JWT) auth — the id_token is the inbound
|
|
135
|
+
# credential for `agentkit invoke harness`; access_token is stored for parity.
|
|
136
|
+
self._id_token = id_token
|
|
137
|
+
self._access_token = access_token
|
|
112
138
|
self._lock = threading.Lock()
|
|
113
139
|
|
|
114
140
|
# -- persistence ----------------------------------------------------------
|
|
@@ -118,6 +144,8 @@ class AuthSession:
|
|
|
118
144
|
"profile": self.profile.name,
|
|
119
145
|
"issuer": self.profile.issuer,
|
|
120
146
|
"refresh_token": self._refresh_token,
|
|
147
|
+
"id_token": self._id_token,
|
|
148
|
+
"access_token": self._access_token,
|
|
121
149
|
"duration_seconds": self._duration,
|
|
122
150
|
"sts": None
|
|
123
151
|
if sts is None
|
|
@@ -151,6 +179,8 @@ class AuthSession:
|
|
|
151
179
|
refresh_token=blob.get("refresh_token"),
|
|
152
180
|
sts=sts,
|
|
153
181
|
duration_seconds=int(blob.get("duration_seconds") or 3600),
|
|
182
|
+
id_token=blob.get("id_token"),
|
|
183
|
+
access_token=blob.get("access_token"),
|
|
154
184
|
)
|
|
155
185
|
|
|
156
186
|
# -- credentials ----------------------------------------------------------
|
|
@@ -180,6 +210,67 @@ class AuthSession:
|
|
|
180
210
|
assert self._sts is not None
|
|
181
211
|
return self._sts
|
|
182
212
|
|
|
213
|
+
# -- data-plane JWT (id_token) --------------------------------------------
|
|
214
|
+
def valid_id_token(self, *, skew_seconds: int = 60, force_refresh: bool = False) -> str:
|
|
215
|
+
"""Return a currently-valid OIDC ``id_token`` for data-plane (JWT) auth.
|
|
216
|
+
|
|
217
|
+
Used by ``agentkit invoke harness`` as the inbound Bearer credential — it never
|
|
218
|
+
touches STS. Refreshes via the ``refresh_token`` (``grant_type=refresh_token`` at
|
|
219
|
+
the UserPool token endpoint) when the cached id_token is missing, within
|
|
220
|
+
``skew_seconds`` of expiry, or when ``force_refresh`` is set (e.g. the harness
|
|
221
|
+
returned 401). Raises :class:`AuthError` pointing at ``agentkit login`` when no
|
|
222
|
+
refresh is possible.
|
|
223
|
+
"""
|
|
224
|
+
with self._lock:
|
|
225
|
+
if not force_refresh and self._id_token and not _jwt_expired(self._id_token, skew_seconds):
|
|
226
|
+
return self._id_token
|
|
227
|
+
with _profile_file_lock(self.profile.name):
|
|
228
|
+
# Re-read under the lock to pick up any sibling's rotated refresh_token /
|
|
229
|
+
# refreshed STS — so we neither refresh with a stale refresh_token nor clobber
|
|
230
|
+
# a sibling's update when we save below.
|
|
231
|
+
blob = store.load_session(self.profile.name)
|
|
232
|
+
if blob:
|
|
233
|
+
sibling = AuthSession.from_blob(self.profile, blob)
|
|
234
|
+
self._refresh_token = sibling._refresh_token or self._refresh_token
|
|
235
|
+
self._sts = sibling._sts or self._sts
|
|
236
|
+
if not force_refresh and sibling._id_token and not _jwt_expired(sibling._id_token, skew_seconds):
|
|
237
|
+
self._id_token = sibling._id_token
|
|
238
|
+
self._access_token = sibling._access_token or self._access_token
|
|
239
|
+
return self._id_token
|
|
240
|
+
self._refresh_id_token_locked()
|
|
241
|
+
assert self._id_token is not None
|
|
242
|
+
return self._id_token
|
|
243
|
+
|
|
244
|
+
def _refresh_id_token_locked(self) -> None:
|
|
245
|
+
if not self._refresh_token:
|
|
246
|
+
raise AuthError(
|
|
247
|
+
"no id_token and no refresh token available; re-login required.",
|
|
248
|
+
hint="run `agentkit login` to start a new browser session.",
|
|
249
|
+
)
|
|
250
|
+
from agentkit.auth.ssl_trust import harden_default_ssl_context
|
|
251
|
+
|
|
252
|
+
harden_default_ssl_context()
|
|
253
|
+
client = OAuthClient(self.profile.issuer, self.profile.client_id, scope=self.profile.scope)
|
|
254
|
+
try:
|
|
255
|
+
token = client.refresh(self._refresh_token)
|
|
256
|
+
except AuthError as exc:
|
|
257
|
+
raise AuthError(
|
|
258
|
+
"session refresh failed — the login has expired or was revoked.",
|
|
259
|
+
hint="run `agentkit login` to log in again.",
|
|
260
|
+
) from exc
|
|
261
|
+
id_token = str(token.get("id_token") or "")
|
|
262
|
+
if not id_token:
|
|
263
|
+
raise AuthError(
|
|
264
|
+
"refresh did not return an id_token; re-login required.",
|
|
265
|
+
hint="ensure the OAuth scope includes 'openid' (OIDC requires an ID Token).",
|
|
266
|
+
)
|
|
267
|
+
self._id_token = id_token
|
|
268
|
+
if token.get("access_token"):
|
|
269
|
+
self._access_token = str(token["access_token"])
|
|
270
|
+
if token.get("refresh_token"):
|
|
271
|
+
self._refresh_token = str(token["refresh_token"])
|
|
272
|
+
self.save()
|
|
273
|
+
|
|
183
274
|
def _renew_locked(self) -> None:
|
|
184
275
|
if not self._refresh_token:
|
|
185
276
|
raise AuthError(
|
|
@@ -199,6 +290,10 @@ class AuthSession:
|
|
|
199
290
|
"refresh did not return an id_token; re-login required.",
|
|
200
291
|
hint="ensure the OAuth scope includes 'openid' (OIDC requires an ID Token).",
|
|
201
292
|
)
|
|
293
|
+
# Keep the freshly-issued OIDC tokens for data-plane (JWT) auth, not just STS.
|
|
294
|
+
self._id_token = id_token
|
|
295
|
+
if token.get("access_token"):
|
|
296
|
+
self._access_token = str(token["access_token"])
|
|
202
297
|
# A rotated refresh token, if returned, must replace the old one.
|
|
203
298
|
if token.get("refresh_token"):
|
|
204
299
|
self._refresh_token = str(token["refresh_token"])
|
|
@@ -102,7 +102,15 @@ def login(
|
|
|
102
102
|
account_id=account,
|
|
103
103
|
)
|
|
104
104
|
session = AuthSession(
|
|
105
|
-
prof,
|
|
105
|
+
prof,
|
|
106
|
+
refresh_token=refresh_token,
|
|
107
|
+
sts=sts,
|
|
108
|
+
duration_seconds=duration_seconds,
|
|
109
|
+
# Persist the OIDC tokens so the data plane (`agentkit invoke harness`) can use
|
|
110
|
+
# the id_token as its inbound Bearer credential. Store the real id_token (not the
|
|
111
|
+
# access_token fallback used above for AssumeRoleWithOIDC).
|
|
112
|
+
id_token=token.get("id_token"),
|
|
113
|
+
access_token=token.get("access_token"),
|
|
106
114
|
)
|
|
107
115
|
session.save()
|
|
108
116
|
# Mark this profile active so separate CLI invocations (e.g. `sandbox create`)
|
|
@@ -28,6 +28,8 @@ from .types import (
|
|
|
28
28
|
DeleteSkillResponse,
|
|
29
29
|
DeleteSkillSpaceRequest,
|
|
30
30
|
DeleteSkillSpaceResponse,
|
|
31
|
+
GenTempTosObjectUrlRequest,
|
|
32
|
+
GenTempTosObjectUrlResponse,
|
|
31
33
|
GetSkillInfoRequest,
|
|
32
34
|
GetSkillInfoResponse,
|
|
33
35
|
GetSkillRequest,
|
|
@@ -69,6 +71,7 @@ class AgentkitSkillsClient(BaseAgentkitClient):
|
|
|
69
71
|
"CreateSkillSpace": "CreateSkillSpace",
|
|
70
72
|
"DeleteSkill": "DeleteSkill",
|
|
71
73
|
"DeleteSkillSpace": "DeleteSkillSpace",
|
|
74
|
+
"GenTempTosObjectUrl": "GenTempTosObjectUrl",
|
|
72
75
|
"GetSkill": "GetSkill",
|
|
73
76
|
"GetSkillInfo": "GetSkillInfo",
|
|
74
77
|
"GetSkillSpace": "GetSkillSpace",
|
|
@@ -133,6 +136,15 @@ class AgentkitSkillsClient(BaseAgentkitClient):
|
|
|
133
136
|
response_type=DeleteSkillSpaceResponse,
|
|
134
137
|
)
|
|
135
138
|
|
|
139
|
+
def gen_temp_tos_object_url(
|
|
140
|
+
self, request: GenTempTosObjectUrlRequest
|
|
141
|
+
) -> GenTempTosObjectUrlResponse:
|
|
142
|
+
return self._invoke_api(
|
|
143
|
+
api_action="GenTempTosObjectUrl",
|
|
144
|
+
request=request,
|
|
145
|
+
response_type=GenTempTosObjectUrlResponse,
|
|
146
|
+
)
|
|
147
|
+
|
|
136
148
|
def get_skill(self, request: GetSkillRequest) -> GetSkillResponse:
|
|
137
149
|
return self._invoke_api(
|
|
138
150
|
api_action="GetSkill",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
from __future__ import annotations
|
|
19
19
|
|
|
20
20
|
from typing import Optional
|
|
21
|
-
from pydantic import BaseModel, Field
|
|
21
|
+
from pydantic import AliasChoices, BaseModel, Field
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
class SkillsBaseModel(BaseModel):
|
|
@@ -354,3 +354,23 @@ class UpdateSkillSpaceRequest(SkillsBaseModel):
|
|
|
354
354
|
|
|
355
355
|
class UpdateSkillSpaceResponse(SkillsBaseModel):
|
|
356
356
|
pass
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
class GenTempTosObjectUrlRequest(SkillsBaseModel):
|
|
360
|
+
project_name: str = Field(..., alias="ProjectName")
|
|
361
|
+
skill_name: str = Field(..., alias="SkillName")
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
class GenTempTosObjectUrlResponse(SkillsBaseModel):
|
|
365
|
+
# The exact response key is tolerated across known spellings; `extra="allow"`
|
|
366
|
+
# keeps any other returned fields so callers can fast-fail with full context
|
|
367
|
+
# when no URL is present.
|
|
368
|
+
model_config = {"populate_by_name": True, "extra": "allow"}
|
|
369
|
+
|
|
370
|
+
url: Optional[str] = Field(
|
|
371
|
+
default=None,
|
|
372
|
+
validation_alias=AliasChoices(
|
|
373
|
+
"Url", "TosUrl", "TempUrl", "ObjectUrl", "PresignedUrl"
|
|
374
|
+
),
|
|
375
|
+
serialization_alias="Url",
|
|
376
|
+
)
|
|
@@ -36,6 +36,7 @@ from agentkit.toolkit.cli.cli_knowledge import knowledge_app
|
|
|
36
36
|
from agentkit.toolkit.cli.cli_tools import tools_app
|
|
37
37
|
from agentkit.toolkit.cli.cli_runtime import runtime_app
|
|
38
38
|
from agentkit.toolkit.cli.cli_skills import skills_app
|
|
39
|
+
from agentkit.toolkit.cli.cli_skill import skill_app
|
|
39
40
|
from agentkit.toolkit.cli.sandbox.cli import sandbox_app
|
|
40
41
|
from agentkit.toolkit.cli.cli_auth import (
|
|
41
42
|
auth_app,
|
|
@@ -47,6 +48,7 @@ from agentkit.toolkit.cli.cli_auth import (
|
|
|
47
48
|
from agentkit.toolkit.cli.cli_add import add_app
|
|
48
49
|
from agentkit.toolkit.cli.cli_list import list_app
|
|
49
50
|
from agentkit.toolkit.cli.cli_delete import delete_app
|
|
51
|
+
from agentkit.toolkit.cli.cli_logs import logs_command
|
|
50
52
|
|
|
51
53
|
# Note: Avoid importing heavy packages at the top to keep CLI startup fast
|
|
52
54
|
|
|
@@ -109,6 +111,7 @@ app.command(name="deploy")(deploy_command)
|
|
|
109
111
|
app.command(name="launch")(launch_command)
|
|
110
112
|
app.command(name="status")(status_command)
|
|
111
113
|
app.command(name="destroy")(destroy_command)
|
|
114
|
+
app.command(name="logs")(logs_command)
|
|
112
115
|
|
|
113
116
|
# Auth: top-level convenience commands + an `auth` group for profiles.
|
|
114
117
|
app.command(name="login")(login_command)
|
|
@@ -123,6 +126,7 @@ app.add_typer(knowledge_app, name="knowledge")
|
|
|
123
126
|
app.add_typer(tools_app, name="tools")
|
|
124
127
|
app.add_typer(runtime_app, name="runtime")
|
|
125
128
|
app.add_typer(skills_app, name="skills")
|
|
129
|
+
app.add_typer(skill_app, name="skill")
|
|
126
130
|
app.add_typer(sandbox_app, name="sandbox")
|
|
127
131
|
app.add_typer(invoke_app, name="invoke")
|
|
128
132
|
app.add_typer(add_app, name="add")
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. and/or its affiliates.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
"""AgentKit CLI - ``delete`` commands.
|
|
16
|
+
|
|
17
|
+
``agentkit delete credential <name>`` removes an inbound auth config. The
|
|
18
|
+
config is addressed by ``InboundAuthConfigId``, so the name is first resolved
|
|
19
|
+
to its id via ``ListInboundAuthConfigs``.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
from typing import Optional
|
|
23
|
+
|
|
24
|
+
import typer
|
|
25
|
+
from rich.console import Console
|
|
26
|
+
|
|
27
|
+
console = Console()
|
|
28
|
+
|
|
29
|
+
delete_app = typer.Typer(
|
|
30
|
+
name="delete",
|
|
31
|
+
help="Delete AgentKit resources.",
|
|
32
|
+
add_completion=False,
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@delete_app.command("credential")
|
|
37
|
+
def delete_credential_command(
|
|
38
|
+
name: str = typer.Argument(..., help="Credential name to delete."),
|
|
39
|
+
region: Optional[str] = typer.Option(
|
|
40
|
+
None,
|
|
41
|
+
"--region",
|
|
42
|
+
help=(
|
|
43
|
+
"Region override for this command (e.g. cn-beijing, cn-shanghai). "
|
|
44
|
+
"Defaults to VOLCENGINE_AGENTKIT_REGION/VOLCENGINE_REGION/global config."
|
|
45
|
+
),
|
|
46
|
+
),
|
|
47
|
+
):
|
|
48
|
+
"""Delete a credential (inbound auth config) by name."""
|
|
49
|
+
from agentkit.toolkit.cli.utils import PaginationHelper
|
|
50
|
+
from agentkit.sdk.identity.client import AgentkitIdentityClient
|
|
51
|
+
from agentkit.sdk.identity import types as it
|
|
52
|
+
|
|
53
|
+
client = AgentkitIdentityClient(region=(region or "").strip())
|
|
54
|
+
|
|
55
|
+
def build_request(next_token_val):
|
|
56
|
+
return it.ListInboundAuthConfigsRequest(
|
|
57
|
+
max_results=50,
|
|
58
|
+
next_token=next_token_val,
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
configs, _, _ = PaginationHelper.fetch_all_pages(
|
|
62
|
+
request_func=client.list_inbound_auth_configs,
|
|
63
|
+
request_builder=build_request,
|
|
64
|
+
max_results=50,
|
|
65
|
+
next_token=None,
|
|
66
|
+
fetch_all=True,
|
|
67
|
+
max_batches=None,
|
|
68
|
+
sleep_ms=0,
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
matches = [c for c in configs if c.config_name == name]
|
|
72
|
+
if not matches:
|
|
73
|
+
console.print(f"[red]Error: credential '{name}' not found.[/red]")
|
|
74
|
+
raise typer.Exit(1)
|
|
75
|
+
|
|
76
|
+
for config in matches:
|
|
77
|
+
config_id = config.inbound_auth_config_id
|
|
78
|
+
if not config_id:
|
|
79
|
+
continue
|
|
80
|
+
client.delete_inbound_auth_config(
|
|
81
|
+
it.DeleteInboundAuthConfigRequest(inbound_auth_config_id=config_id)
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
console.print(f"[green]✓ Deleted credential '{name}'[/green]")
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
@delete_app.command("harness")
|
|
88
|
+
def delete_harness_command(
|
|
89
|
+
name: str = typer.Option(..., "--name", help="Harness runtime name to delete."),
|
|
90
|
+
region: Optional[str] = typer.Option(
|
|
91
|
+
None,
|
|
92
|
+
"--region",
|
|
93
|
+
help=(
|
|
94
|
+
"Region override for this command (e.g. cn-beijing, cn-shanghai). "
|
|
95
|
+
"Defaults to VOLCENGINE_AGENTKIT_REGION/VOLCENGINE_REGION/global config."
|
|
96
|
+
),
|
|
97
|
+
),
|
|
98
|
+
timeout: int = typer.Option(
|
|
99
|
+
300, "--timeout", help="Max seconds to wait for the async deletion to finish."
|
|
100
|
+
),
|
|
101
|
+
):
|
|
102
|
+
"""Delete a harness runtime by name.
|
|
103
|
+
|
|
104
|
+
Resolves ``--name`` to a runtime and only deletes it when it carries the
|
|
105
|
+
deploy-time harness tag (``agentkit:agenttype=harness``):
|
|
106
|
+
|
|
107
|
+
* not found -> reports it and exits non-zero;
|
|
108
|
+
* exists, not a harness -> warns and refuses to delete (exits non-zero);
|
|
109
|
+
* exists and a harness -> deletes it, then polls until the deletion (which
|
|
110
|
+
is asynchronous) actually completes.
|
|
111
|
+
"""
|
|
112
|
+
import time
|
|
113
|
+
|
|
114
|
+
from agentkit.toolkit.cli.utils import PaginationHelper
|
|
115
|
+
from agentkit.sdk.runtime.client import AgentkitRuntimeClient
|
|
116
|
+
from agentkit.sdk.runtime import types as rt
|
|
117
|
+
from agentkit.toolkit.harness.deploy import HARNESS_TAG_KEY, HARNESS_TAG_VALUE
|
|
118
|
+
|
|
119
|
+
client = AgentkitRuntimeClient(region=(region or "").strip())
|
|
120
|
+
|
|
121
|
+
def build_request(next_token_val):
|
|
122
|
+
return rt.ListRuntimesRequest(max_results=50, next_token=next_token_val)
|
|
123
|
+
|
|
124
|
+
runtimes, _, _ = PaginationHelper.fetch_all_pages(
|
|
125
|
+
request_func=client.list_runtimes,
|
|
126
|
+
request_builder=build_request,
|
|
127
|
+
max_results=50,
|
|
128
|
+
next_token=None,
|
|
129
|
+
fetch_all=True,
|
|
130
|
+
max_batches=None,
|
|
131
|
+
sleep_ms=0,
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
matches = [r for r in runtimes if r.name == name]
|
|
135
|
+
if not matches:
|
|
136
|
+
console.print(f"[yellow]Harness '{name}' not found.[/yellow]")
|
|
137
|
+
raise typer.Exit(1)
|
|
138
|
+
|
|
139
|
+
def _is_harness(runtime) -> bool:
|
|
140
|
+
return any(
|
|
141
|
+
tag.key == HARNESS_TAG_KEY and tag.value == HARNESS_TAG_VALUE
|
|
142
|
+
for tag in (runtime.tags or [])
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
harness_matches = [r for r in matches if _is_harness(r)]
|
|
146
|
+
if not harness_matches:
|
|
147
|
+
console.print(
|
|
148
|
+
f"[red]✗ '{name}' exists but is not a harness runtime "
|
|
149
|
+
f"(missing {HARNESS_TAG_KEY}={HARNESS_TAG_VALUE} tag). "
|
|
150
|
+
"Refusing to delete.[/red]"
|
|
151
|
+
)
|
|
152
|
+
raise typer.Exit(1)
|
|
153
|
+
|
|
154
|
+
for runtime in harness_matches:
|
|
155
|
+
runtime_id = runtime.runtime_id
|
|
156
|
+
console.print(
|
|
157
|
+
f"[cyan]Deleting harness '{name}' (runtime_id: {runtime_id})...[/cyan]"
|
|
158
|
+
)
|
|
159
|
+
client.delete_runtime(rt.DeleteRuntimeRequest(runtime_id=runtime_id))
|
|
160
|
+
|
|
161
|
+
# Deletion is asynchronous: poll get_runtime until it reports the runtime
|
|
162
|
+
# is gone (the API raises InvalidAgentKitRuntime.NotFound once removed).
|
|
163
|
+
deadline = time.monotonic() + timeout
|
|
164
|
+
with console.status(
|
|
165
|
+
f"[cyan]Waiting for '{name}' deletion...[/cyan]", spinner="dots"
|
|
166
|
+
):
|
|
167
|
+
while True:
|
|
168
|
+
try:
|
|
169
|
+
current = client.get_runtime(
|
|
170
|
+
rt.GetRuntimeRequest(runtime_id=runtime_id)
|
|
171
|
+
)
|
|
172
|
+
except Exception as exc:
|
|
173
|
+
if "InvalidAgentKitRuntime.NotFound" in str(exc):
|
|
174
|
+
break
|
|
175
|
+
raise
|
|
176
|
+
if time.monotonic() > deadline:
|
|
177
|
+
console.print(
|
|
178
|
+
f"[red]✗ Timed out after {timeout}s waiting for '{name}' "
|
|
179
|
+
f"deletion (last status: {current.status}).[/red]"
|
|
180
|
+
)
|
|
181
|
+
raise typer.Exit(1)
|
|
182
|
+
time.sleep(3)
|
|
183
|
+
|
|
184
|
+
console.print(
|
|
185
|
+
f"[green]✓ Deleted harness '{name}' (runtime_id: {runtime_id})[/green]"
|
|
186
|
+
)
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"""AgentKit CLI - Deploy command implementation."""
|
|
16
16
|
|
|
17
17
|
from pathlib import Path
|
|
18
|
-
from typing import Optional
|
|
18
|
+
from typing import Callable, Dict, Optional
|
|
19
19
|
|
|
20
20
|
import typer
|
|
21
21
|
from rich.console import Console
|
|
@@ -25,6 +25,17 @@ from rich.console import Console
|
|
|
25
25
|
console = Console()
|
|
26
26
|
|
|
27
27
|
|
|
28
|
+
def _prompt_harness_update(info: Dict) -> bool:
|
|
29
|
+
"""Interactive [y/N] confirmation to update an existing same-name harness."""
|
|
30
|
+
version = info.get("version")
|
|
31
|
+
version_label = f"v{version}" if version is not None else "unknown"
|
|
32
|
+
return typer.confirm(
|
|
33
|
+
f"Harness '{info['name']}' already exists (current version "
|
|
34
|
+
f"{version_label}). Update it to a new version?",
|
|
35
|
+
default=False,
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
|
|
28
39
|
def deploy_command(
|
|
29
40
|
config_file: Path = typer.Option("agentkit.yaml", help="Configuration file"),
|
|
30
41
|
harness: Optional[str] = typer.Option(
|
|
@@ -52,6 +63,12 @@ def deploy_command(
|
|
|
52
63
|
"--allowed-id",
|
|
53
64
|
help="Comma-separated allowed client IDs for OAuth2/JWT auth (harness deploy).",
|
|
54
65
|
),
|
|
66
|
+
yes: bool = typer.Option(
|
|
67
|
+
False,
|
|
68
|
+
"--yes",
|
|
69
|
+
"-y",
|
|
70
|
+
help="Harness deploy: update an existing same-name harness without prompting.",
|
|
71
|
+
),
|
|
55
72
|
):
|
|
56
73
|
"""Deploy the Agent to target environment."""
|
|
57
74
|
from agentkit.toolkit.executors import DeployExecutor
|
|
@@ -66,6 +83,7 @@ def deploy_command(
|
|
|
66
83
|
secret_key=volcengine_secret_key,
|
|
67
84
|
discovery_url=discovery_url,
|
|
68
85
|
allowed_id=allowed_id,
|
|
86
|
+
assume_yes=yes,
|
|
69
87
|
)
|
|
70
88
|
return
|
|
71
89
|
|
|
@@ -107,9 +125,12 @@ def _deploy_harness(
|
|
|
107
125
|
secret_key,
|
|
108
126
|
discovery_url,
|
|
109
127
|
allowed_id,
|
|
128
|
+
assume_yes: bool = False,
|
|
110
129
|
):
|
|
111
130
|
"""Deploy a harness spec <name>.harness.json from the current directory."""
|
|
112
|
-
|
|
131
|
+
import sys
|
|
132
|
+
|
|
133
|
+
from agentkit.toolkit.sdk import deploy_harness, HarnessDeployAborted
|
|
113
134
|
from agentkit.toolkit.cli.console_reporter import ConsoleReporter
|
|
114
135
|
from agentkit.toolkit.context import ExecutionContext
|
|
115
136
|
|
|
@@ -118,15 +139,35 @@ def _deploy_harness(
|
|
|
118
139
|
reporter = ConsoleReporter()
|
|
119
140
|
ExecutionContext.set_reporter(reporter)
|
|
120
141
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
142
|
+
# Decide how a same-name harness collision is resolved:
|
|
143
|
+
# --yes -> update without prompting
|
|
144
|
+
# tty -> prompt [y/N]
|
|
145
|
+
# non-tty -> on_conflict=None, so deploy_harness fast-fails
|
|
146
|
+
on_conflict: Optional[Callable[[Dict], bool]] = None
|
|
147
|
+
if assume_yes:
|
|
148
|
+
on_conflict = lambda info: True # noqa: E731
|
|
149
|
+
elif sys.stdin.isatty():
|
|
150
|
+
on_conflict = _prompt_harness_update
|
|
151
|
+
|
|
152
|
+
# Surface fast-fail input/validation errors (missing spec, missing creds,
|
|
153
|
+
# name collision) as a clean CLI error + exit code, not a raw traceback.
|
|
154
|
+
try:
|
|
155
|
+
result = deploy_harness(
|
|
156
|
+
name=name,
|
|
157
|
+
region=region,
|
|
158
|
+
access_key=access_key,
|
|
159
|
+
secret_key=secret_key,
|
|
160
|
+
discovery_url=discovery_url,
|
|
161
|
+
allowed_id=allowed_id,
|
|
162
|
+
reporter=reporter,
|
|
163
|
+
on_conflict=on_conflict,
|
|
164
|
+
)
|
|
165
|
+
except HarnessDeployAborted:
|
|
166
|
+
console.print("[yellow]Harness deploy cancelled.[/yellow]")
|
|
167
|
+
return
|
|
168
|
+
except (ValueError, FileNotFoundError, NotADirectoryError) as exc:
|
|
169
|
+
console.print(f"[red]❌ Harness deploy failed: {exc}[/red]")
|
|
170
|
+
raise typer.Exit(1)
|
|
130
171
|
|
|
131
172
|
if not result.success:
|
|
132
173
|
console.print(f"[red]❌ Harness deploy failed: {result.error}[/red]")
|