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.
Files changed (245) hide show
  1. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/PKG-INFO +2 -1
  2. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/session.py +95 -0
  3. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/sso.py +9 -1
  4. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/skills/client.py +12 -0
  5. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/skills/types.py +21 -1
  6. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli.py +4 -0
  7. agentkit_sdk_python-0.6.4/agentkit/toolkit/cli/cli_delete.py +186 -0
  8. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_deploy.py +52 -11
  9. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_invoke.py +250 -4
  10. agentkit_sdk_python-0.6.4/agentkit/toolkit/cli/cli_list.py +404 -0
  11. agentkit_sdk_python-0.6.4/agentkit/toolkit/cli/cli_logs.py +253 -0
  12. agentkit_sdk_python-0.6.4/agentkit/toolkit/cli/cli_skill.py +476 -0
  13. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/__init__.py +2 -0
  14. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/cli.py +4 -0
  15. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/cli_create.py +27 -56
  16. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/cli_exec.py +49 -5
  17. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/cli_file.py +1 -1
  18. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/cli_get.py +1 -1
  19. agentkit_sdk_python-0.6.4/agentkit/toolkit/cli/sandbox/cli_mount.py +361 -0
  20. agentkit_sdk_python-0.6.4/agentkit/toolkit/cli/sandbox/cli_run.py +365 -0
  21. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/cli_shell.py +3 -3
  22. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/cli_web.py +1 -1
  23. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/session_create.py +3 -51
  24. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/session_sync.py +1 -1
  25. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/tool_resolve.py +1 -1
  26. agentkit_sdk_python-0.6.4/agentkit/toolkit/cli/sandbox/tos_config.py +141 -0
  27. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/utils.py +17 -0
  28. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/executors/init_executor.py +13 -3
  29. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/harness/__init__.py +2 -1
  30. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/harness/config_builder.py +7 -1
  31. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/harness/deploy.py +146 -5
  32. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/__init__.py +2 -1
  33. agentkit_sdk_python-0.6.4/agentkit/toolkit/volcengine/apmplus_logs.py +184 -0
  34. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/version.py +1 -1
  35. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit_sdk_python.egg-info/PKG-INFO +2 -1
  36. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit_sdk_python.egg-info/SOURCES.txt +7 -1
  37. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit_sdk_python.egg-info/requires.txt +1 -0
  38. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/pyproject.toml +2 -1
  39. agentkit_sdk_python-0.6.3/agentkit/toolkit/cli/cli_delete.py +0 -84
  40. agentkit_sdk_python-0.6.3/agentkit/toolkit/cli/cli_list.py +0 -203
  41. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/LICENSE +0 -0
  42. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/MANIFEST.in +0 -0
  43. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/README.md +0 -0
  44. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/__init__.py +0 -0
  45. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/__init__.py +0 -0
  46. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/a2a_app/__init__.py +0 -0
  47. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/a2a_app/a2a_app.py +0 -0
  48. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/a2a_app/telemetry.py +0 -0
  49. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/agent_server_app/__init__.py +0 -0
  50. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/agent_server_app/agent_server_app.py +0 -0
  51. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/agent_server_app/middleware.py +0 -0
  52. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/agent_server_app/origin.py +0 -0
  53. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/agent_server_app/telemetry.py +0 -0
  54. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/base_app.py +0 -0
  55. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/mcp_app/__init__.py +0 -0
  56. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/mcp_app/mcp_app.py +0 -0
  57. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/mcp_app/telemetry.py +0 -0
  58. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/simple_app/__init__.py +0 -0
  59. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/simple_app/simple_app.py +0 -0
  60. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/simple_app/simple_app_handlers.py +0 -0
  61. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/simple_app/telemetry.py +0 -0
  62. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/apps/utils.py +0 -0
  63. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/__init__.py +0 -0
  64. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/_openapi.py +0 -0
  65. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/_redact.py +0 -0
  66. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/_sigv4.py +0 -0
  67. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/admin.py +0 -0
  68. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/credential_hosting.py +0 -0
  69. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/errors.py +0 -0
  70. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/oauth.py +0 -0
  71. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/profile.py +0 -0
  72. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/providers.py +0 -0
  73. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/resolve.py +0 -0
  74. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/ssl_trust.py +0 -0
  75. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/store.py +0 -0
  76. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/auth/sts.py +0 -0
  77. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/client/__init__.py +0 -0
  78. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/client/base_agentkit_client.py +0 -0
  79. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/client/base_iam_client.py +0 -0
  80. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/client/base_service_client.py +0 -0
  81. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/platform/__init__.py +0 -0
  82. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/platform/configuration.py +0 -0
  83. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/platform/console_urls.py +0 -0
  84. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/platform/constants.py +0 -0
  85. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/platform/context.py +0 -0
  86. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/platform/provider.py +0 -0
  87. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/__init__.py +0 -0
  88. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/account/client.py +0 -0
  89. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/account/types.py +0 -0
  90. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/identity/__init__.py +0 -0
  91. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/identity/auth.py +0 -0
  92. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/identity/client.py +0 -0
  93. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/identity/types.py +0 -0
  94. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/knowledge/__init__.py +0 -0
  95. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/knowledge/client.py +0 -0
  96. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/knowledge/types.py +0 -0
  97. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/mcp/__init__.py +0 -0
  98. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/mcp/client.py +0 -0
  99. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/mcp/types.py +0 -0
  100. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/memory/__init__.py +0 -0
  101. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/memory/client.py +0 -0
  102. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/memory/types.py +0 -0
  103. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/runtime/__init__.py +0 -0
  104. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/runtime/client.py +0 -0
  105. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/runtime/types.py +0 -0
  106. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/skills/__init__.py +0 -0
  107. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/tools/__init__.py +0 -0
  108. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/tools/client.py +0 -0
  109. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/sdk/tools/types.py +0 -0
  110. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/__init__.py +0 -0
  111. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/builders/__init__.py +0 -0
  112. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/builders/base.py +0 -0
  113. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/builders/local_docker.py +0 -0
  114. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/builders/ve_pipeline.py +0 -0
  115. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/__init__.py +0 -0
  116. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/__main__.py +0 -0
  117. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_add.py +0 -0
  118. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_auth.py +0 -0
  119. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_build.py +0 -0
  120. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_config.py +0 -0
  121. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_destroy.py +0 -0
  122. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_init.py +0 -0
  123. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_knowledge.py +0 -0
  124. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_launch.py +0 -0
  125. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_memory.py +0 -0
  126. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_runtime.py +0 -0
  127. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_skills.py +0 -0
  128. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_skills_workflow.py +0 -0
  129. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_status.py +0 -0
  130. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_tools.py +0 -0
  131. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/cli_version.py +0 -0
  132. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/console_reporter.py +0 -0
  133. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/interactive_config.py +0 -0
  134. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/git_config.py +0 -0
  135. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/sandbox/model_config.py +0 -0
  136. /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
  137. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/cli/utils.py +0 -0
  138. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/__init__.py +0 -0
  139. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/choice_resolvers.py +0 -0
  140. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/cloud_provider.py +0 -0
  141. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/config.py +0 -0
  142. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/config_handler.py +0 -0
  143. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/config_validator.py +0 -0
  144. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/constants.py +0 -0
  145. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/dataclass_utils.py +0 -0
  146. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/docker_build_config.py +0 -0
  147. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/global_config.py +0 -0
  148. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/region_defaults.py +0 -0
  149. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/region_resolver.py +0 -0
  150. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/config/strategy_configs.py +0 -0
  151. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/context.py +0 -0
  152. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/docker/__init__.py +0 -0
  153. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/docker/base_images.py +0 -0
  154. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/docker/container.py +0 -0
  155. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/docker/dockerfile/__init__.py +0 -0
  156. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/docker/dockerfile/manager.py +0 -0
  157. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/docker/dockerfile/metadata.py +0 -0
  158. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/docker/utils.py +0 -0
  159. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/errors.py +0 -0
  160. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/executors/__init__.py +0 -0
  161. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/executors/base_executor.py +0 -0
  162. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/executors/build_executor.py +0 -0
  163. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/executors/deploy_executor.py +0 -0
  164. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/executors/invoke_executor.py +0 -0
  165. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/executors/lifecycle_executor.py +0 -0
  166. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/executors/status_executor.py +0 -0
  167. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/harness/env_mapping.py +0 -0
  168. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/models.py +0 -0
  169. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/reporter.py +0 -0
  170. {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
  171. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/__pycache__/financial_analyst.cpython-312.pyc +0 -0
  172. {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
  173. {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
  174. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/a2a.py +0 -0
  175. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/agent_server.py +0 -0
  176. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/basic.py +0 -0
  177. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/basic_stream.py +0 -0
  178. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/customer_support_assistant.py +0 -0
  179. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/eino_a2a/agent.go +0 -0
  180. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/eino_a2a/build.sh +0 -0
  181. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/eino_a2a/go.mod +0 -0
  182. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/eino_a2a/go.sum +0 -0
  183. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/eino_a2a/main.go +0 -0
  184. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/financial_analyst.py +0 -0
  185. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/langchain_basic_stream.py +0 -0
  186. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/simple_app_veadk.py +0 -0
  187. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/simple_mcp_veadk.py +0 -0
  188. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_a2a/agent.go +0 -0
  189. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_a2a/build.sh +0 -0
  190. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_a2a/go.mod +0 -0
  191. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_a2a/go.sum +0 -0
  192. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_a2a/main.go +0 -0
  193. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_basic/agent.go +0 -0
  194. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_basic/build.sh +0 -0
  195. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_basic/go.mod +0 -0
  196. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_basic/go.sum +0 -0
  197. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/samples/veadk_go_basic/main.go +0 -0
  198. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/templates/code-pipeline-tos-cr-step.j2 +0 -0
  199. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/templates/golang/Dockerfile.j2 +0 -0
  200. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/templates/python/Dockerfile.j2 +0 -0
  201. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/wrappers/wrapper_basic.py.jinja2 +0 -0
  202. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/resources/wrappers/wrapper_stream.py.jinja2 +0 -0
  203. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/runners/__init__.py +0 -0
  204. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/runners/base.py +0 -0
  205. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/runners/local_docker.py +0 -0
  206. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/runners/ve_agentkit.py +0 -0
  207. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/bindings/__init__.py +0 -0
  208. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/bindings/memory.py +0 -0
  209. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/builder.py +0 -0
  210. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/client.py +0 -0
  211. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/config.py +0 -0
  212. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/deployer.py +0 -0
  213. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/initializer.py +0 -0
  214. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/invoker.py +0 -0
  215. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/lifecycle.py +0 -0
  216. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/sdk/status.py +0 -0
  217. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/strategies/__init__.py +0 -0
  218. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/strategies/base_strategy.py +0 -0
  219. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/strategies/cloud_strategy.py +0 -0
  220. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/strategies/hybrid_strategy.py +0 -0
  221. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/strategies/local_strategy.py +0 -0
  222. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/utils/__init__.py +0 -0
  223. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/utils/agent_parser.py +0 -0
  224. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/__init__.py +0 -0
  225. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/code_pipeline.py +0 -0
  226. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/cr.py +0 -0
  227. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/iam.py +0 -0
  228. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/services/__init__.py +0 -0
  229. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/services/cr_service.py +0 -0
  230. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/services/tos_service.py +0 -0
  231. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/sts.py +0 -0
  232. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/utils/__init__.py +0 -0
  233. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/toolkit/volcengine/utils/project_archiver.py +0 -0
  234. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/utils/__init__.py +0 -0
  235. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/utils/global_config_io.py +0 -0
  236. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/utils/logging_config.py +0 -0
  237. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/utils/misc.py +0 -0
  238. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/utils/request.py +0 -0
  239. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/utils/template_utils.py +0 -0
  240. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit/utils/ve_sign.py +0 -0
  241. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit_sdk_python.egg-info/dependency_links.txt +0 -0
  242. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit_sdk_python.egg-info/entry_points.txt +0 -0
  243. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/agentkit_sdk_python.egg-info/top_level.txt +0 -0
  244. {agentkit_sdk_python-0.6.3 → agentkit_sdk_python-0.6.4}/setup.cfg +0 -0
  245. {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
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, refresh_token=refresh_token, sts=sts, duration_seconds=duration_seconds
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
- from agentkit.toolkit.sdk import deploy_harness
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
- result = deploy_harness(
122
- name=name,
123
- region=region,
124
- access_key=access_key,
125
- secret_key=secret_key,
126
- discovery_url=discovery_url,
127
- allowed_id=allowed_id,
128
- reporter=reporter,
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]")