agentkit-sdk-python 0.2.0__tar.gz → 0.2.2__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 (168) hide show
  1. {agentkit_sdk_python-0.2.0/agentkit_sdk_python.egg-info → agentkit_sdk_python-0.2.2}/PKG-INFO +1 -1
  2. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/apps/agent_server_app/agent_server_app.py +1 -5
  3. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/apps/agent_server_app/middleware.py +2 -2
  4. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/apps/agent_server_app/telemetry.py +2 -2
  5. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/client/base_service_client.py +15 -3
  6. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/builders/local_docker.py +2 -3
  7. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/builders/ve_pipeline.py +11 -6
  8. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/cli/cli.py +3 -0
  9. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/config/config.py +7 -1
  10. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/config/dataclass_utils.py +56 -13
  11. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/docker/container.py +8 -60
  12. agentkit_sdk_python-0.2.2/agentkit/toolkit/docker/utils.py +98 -0
  13. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/executors/init_executor.py +3 -35
  14. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/runners/ve_agentkit.py +5 -2
  15. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/utils/__init__.py +1 -0
  16. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/volcengine/iam.py +7 -1
  17. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/volcengine/utils/project_archiver.py +3 -0
  18. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/utils/misc.py +18 -0
  19. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/utils/template_utils.py +13 -5
  20. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/utils/ve_sign.py +61 -2
  21. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/version.py +1 -1
  22. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2/agentkit_sdk_python.egg-info}/PKG-INFO +1 -1
  23. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit_sdk_python.egg-info/SOURCES.txt +1 -0
  24. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/pyproject.toml +1 -1
  25. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/LICENSE +0 -0
  26. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/MANIFEST.in +0 -0
  27. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/README.md +0 -0
  28. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/__init__.py +0 -0
  29. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/apps/__init__.py +0 -0
  30. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/apps/a2a_app/__init__.py +0 -0
  31. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/apps/a2a_app/a2a_app.py +0 -0
  32. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/apps/a2a_app/telemetry.py +0 -0
  33. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/apps/agent_server_app/__init__.py +0 -0
  34. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/apps/base_app.py +0 -0
  35. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/apps/mcp_app/__init__.py +0 -0
  36. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/apps/mcp_app/mcp_app.py +0 -0
  37. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/apps/mcp_app/telemetry.py +0 -0
  38. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/apps/simple_app/__init__.py +0 -0
  39. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/apps/simple_app/simple_app.py +0 -0
  40. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/apps/simple_app/simple_app_handlers.py +0 -0
  41. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/apps/simple_app/telemetry.py +0 -0
  42. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/apps/utils.py +0 -0
  43. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/client/__init__.py +0 -0
  44. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/client/base_agentkit_client.py +0 -0
  45. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/client/base_iam_client.py +0 -0
  46. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/__init__.py +0 -0
  47. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/account/client.py +0 -0
  48. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/account/types.py +0 -0
  49. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/identity/__init__.py +0 -0
  50. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/identity/auth.py +0 -0
  51. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/knowledge/__init__.py +0 -0
  52. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/knowledge/client.py +0 -0
  53. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/knowledge/types.py +0 -0
  54. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/mcp/__init__.py +0 -0
  55. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/mcp/client.py +0 -0
  56. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/mcp/types.py +0 -0
  57. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/memory/__init__.py +0 -0
  58. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/memory/client.py +0 -0
  59. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/memory/types.py +0 -0
  60. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/runtime/__init__.py +0 -0
  61. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/runtime/client.py +0 -0
  62. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/runtime/types.py +0 -0
  63. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/tools/__init__.py +0 -0
  64. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/tools/client.py +0 -0
  65. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/sdk/tools/types.py +0 -0
  66. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/__init__.py +0 -0
  67. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/builders/__init__.py +0 -0
  68. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/builders/base.py +0 -0
  69. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/cli/__init__.py +0 -0
  70. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/cli/__main__.py +0 -0
  71. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/cli/cli_build.py +0 -0
  72. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/cli/cli_config.py +0 -0
  73. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/cli/cli_deploy.py +0 -0
  74. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/cli/cli_destroy.py +0 -0
  75. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/cli/cli_init.py +0 -0
  76. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/cli/cli_invoke.py +0 -0
  77. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/cli/cli_knowledge.py +0 -0
  78. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/cli/cli_launch.py +0 -0
  79. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/cli/cli_memory.py +0 -0
  80. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/cli/cli_runtime.py +0 -0
  81. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/cli/cli_status.py +0 -0
  82. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/cli/cli_tools.py +0 -0
  83. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/cli/cli_version.py +0 -0
  84. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/cli/console_reporter.py +0 -0
  85. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/cli/interactive_config.py +0 -0
  86. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/cli/utils.py +0 -0
  87. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/config/__init__.py +0 -0
  88. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/config/config_handler.py +0 -0
  89. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/config/config_validator.py +0 -0
  90. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/config/constants.py +0 -0
  91. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/config/docker_build_config.py +0 -0
  92. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/config/global_config.py +0 -0
  93. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/config/strategy_configs.py +0 -0
  94. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/config/utils.py +0 -0
  95. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/context.py +0 -0
  96. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/docker/__init__.py +0 -0
  97. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/docker/dockerfile/__init__.py +0 -0
  98. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/docker/dockerfile/manager.py +0 -0
  99. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/docker/dockerfile/metadata.py +0 -0
  100. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/errors.py +0 -0
  101. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/executors/__init__.py +0 -0
  102. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/executors/base_executor.py +0 -0
  103. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/executors/build_executor.py +0 -0
  104. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/executors/deploy_executor.py +0 -0
  105. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/executors/invoke_executor.py +0 -0
  106. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/executors/lifecycle_executor.py +0 -0
  107. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/executors/status_executor.py +0 -0
  108. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/models.py +0 -0
  109. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/reporter.py +0 -0
  110. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/samples/__pycache__/customer_support_assistant.cpython-312.pyc +0 -0
  111. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/samples/__pycache__/financial_analyst.cpython-312.pyc +0 -0
  112. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/samples/__pycache__/simple_app_veadk.cpython-312.pyc +0 -0
  113. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/samples/__pycache__/simple_mcp_veadk.cpython-312.pyc +0 -0
  114. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/samples/a2a.py +0 -0
  115. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/samples/basic.py +0 -0
  116. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/samples/basic_stream.py +0 -0
  117. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/samples/customer_support_assistant.py +0 -0
  118. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/samples/eino_a2a/agent.go +0 -0
  119. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/samples/eino_a2a/build.sh +0 -0
  120. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/samples/eino_a2a/go.mod +0 -0
  121. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/samples/eino_a2a/go.sum +0 -0
  122. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/samples/eino_a2a/main.go +0 -0
  123. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/samples/financial_analyst.py +0 -0
  124. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/samples/simple_app_veadk.py +0 -0
  125. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/samples/simple_mcp_veadk.py +0 -0
  126. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/templates/code-pipeline-tos-cr-step.j2 +0 -0
  127. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/templates/golang/Dockerfile.j2 +0 -0
  128. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/templates/python/Dockerfile.j2 +0 -0
  129. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/wrappers/wrapper_basic.py.jinja2 +0 -0
  130. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/resources/wrappers/wrapper_stream.py.jinja2 +0 -0
  131. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/runners/__init__.py +0 -0
  132. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/runners/base.py +0 -0
  133. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/runners/local_docker.py +0 -0
  134. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/sdk/__init__.py +0 -0
  135. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/sdk/bindings/__init__.py +0 -0
  136. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/sdk/bindings/memory.py +0 -0
  137. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/sdk/builder.py +0 -0
  138. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/sdk/client.py +0 -0
  139. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/sdk/config.py +0 -0
  140. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/sdk/deployer.py +0 -0
  141. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/sdk/initializer.py +0 -0
  142. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/sdk/invoker.py +0 -0
  143. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/sdk/lifecycle.py +0 -0
  144. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/sdk/status.py +0 -0
  145. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/strategies/__init__.py +0 -0
  146. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/strategies/base_strategy.py +0 -0
  147. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/strategies/cloud_strategy.py +0 -0
  148. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/strategies/hybrid_strategy.py +0 -0
  149. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/strategies/local_strategy.py +0 -0
  150. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/utils/agent_parser.py +0 -0
  151. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/volcengine/__init__.py +0 -0
  152. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/volcengine/code_pipeline.py +0 -0
  153. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/volcengine/cr.py +0 -0
  154. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/volcengine/services/__init__.py +0 -0
  155. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/volcengine/services/cr_service.py +0 -0
  156. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/volcengine/services/tos_service.py +0 -0
  157. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/volcengine/sts.py +0 -0
  158. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/toolkit/volcengine/utils/__init__.py +0 -0
  159. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/utils/__init__.py +0 -0
  160. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/utils/credential.py +0 -0
  161. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/utils/global_config_io.py +0 -0
  162. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/utils/logging_config.py +0 -0
  163. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit/utils/request.py +0 -0
  164. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit_sdk_python.egg-info/dependency_links.txt +0 -0
  165. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit_sdk_python.egg-info/entry_points.txt +0 -0
  166. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit_sdk_python.egg-info/requires.txt +0 -0
  167. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/agentkit_sdk_python.egg-info/top_level.txt +0 -0
  168. {agentkit_sdk_python-0.2.0 → agentkit_sdk_python-0.2.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentkit-sdk-python
3
- Version: 0.2.0
3
+ Version: 0.2.2
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
@@ -102,11 +102,7 @@ class AgentkitAgentServerApp(BaseAgentkitApp):
102
102
  user_id = (
103
103
  headers.get("user_id") or headers.get("x-user-id") or "agentkit_user"
104
104
  )
105
- session_id = (
106
- headers.get("session_id")
107
- or headers.get("x-session-id")
108
- or "agentkit_sample_session"
109
- )
105
+ session_id = headers.get("session_id") or ""
110
106
 
111
107
  # Determine app_name from loader
112
108
  app_names = self.server.agent_loader.list_agents()
@@ -43,8 +43,8 @@ class AgentkitTelemetryHTTPMiddleware:
43
43
  }
44
44
 
45
45
  # Currently unable to retrieve user_id and session_id from headers; keep logic for future use
46
- user_id = headers.get("user_id") or headers.get("x-user-id") or ""
47
- session_id = headers.get("session_id") or headers.get("x-session-id") or ""
46
+ user_id = headers.get("user_id")
47
+ session_id = headers.get("session_id")
48
48
  headers["user_id"] = user_id
49
49
  headers["session_id"] = session_id
50
50
  telemetry.trace_agent_server(
@@ -72,10 +72,10 @@ class Telemetry:
72
72
  value=safe_serialize_to_json_string(headers),
73
73
  )
74
74
 
75
- session_id = headers.get("session_id") or headers.get("x-session-id") or ""
75
+ session_id = headers.get("session_id")
76
76
  if session_id:
77
77
  span.set_attribute(key="gen_ai.session.id", value=session_id)
78
- user_id = headers.get("user_id") or headers.get("x-user-id") or ""
78
+ user_id = headers.get("user_id")
79
79
  if user_id:
80
80
  span.set_attribute(key="gen_ai.user.id", value=user_id)
81
81
 
@@ -26,7 +26,10 @@ from volcengine.base.Service import Service
26
26
  from volcengine.Credentials import Credentials
27
27
  from volcengine.ServiceInfo import ServiceInfo
28
28
 
29
- from agentkit.utils.ve_sign import get_volc_ak_sk_region
29
+ from agentkit.utils.ve_sign import (
30
+ get_volc_ak_sk_region,
31
+ ensure_x_custom_source_header,
32
+ )
30
33
 
31
34
  T = TypeVar("T")
32
35
 
@@ -73,7 +76,7 @@ class BaseServiceClient(Service):
73
76
  session_token: str = "",
74
77
  service_name: str = "",
75
78
  credential_env_prefix: str = "",
76
- header: Optional[Dict[str, Any]] = {"Accept": "application/json"},
79
+ header: Optional[Dict[str, Any]] = None,
77
80
  ) -> None:
78
81
  """
79
82
  Initialize the service client.
@@ -105,6 +108,15 @@ class BaseServiceClient(Service):
105
108
  self.session_token = session_token
106
109
  self.service_name = service_name
107
110
 
111
+ if header is None:
112
+ effective_header: Dict[str, Any] = {"Accept": "application/json"}
113
+ else:
114
+ effective_header = header.copy()
115
+ if "Accept" not in effective_header:
116
+ effective_header = {"Accept": "application/json", **effective_header}
117
+
118
+ effective_header = ensure_x_custom_source_header(effective_header)
119
+
108
120
  # Get service-specific configuration from subclass
109
121
  config = self._get_service_config()
110
122
  self.host = config["host"]
@@ -115,7 +127,7 @@ class BaseServiceClient(Service):
115
127
  # Create ServiceInfo
116
128
  self.service_info = ServiceInfo(
117
129
  host=self.host,
118
- header=header,
130
+ header=effective_header,
119
131
  credentials=Credentials(
120
132
  ak=self.access_key,
121
133
  sk=self.secret_key,
@@ -25,6 +25,7 @@ from dataclasses import dataclass, field
25
25
  from datetime import datetime
26
26
  from agentkit.toolkit.config import CommonConfig
27
27
  from agentkit.toolkit.config.dataclass_utils import AutoSerializableMixin
28
+ from agentkit.toolkit.docker.utils import create_dockerignore_file
28
29
  from agentkit.toolkit.models import BuildResult, ImageInfo
29
30
  from agentkit.toolkit.reporter import Reporter
30
31
  from agentkit.toolkit.errors import ErrorCode
@@ -334,9 +335,7 @@ class LocalDockerBuilder(Builder):
334
335
  force_regenerate=force_regenerate,
335
336
  )
336
337
 
337
- dockerignore_path = self.workdir / ".dockerignore"
338
- if not dockerignore_path.exists():
339
- renderer.create_dockerignore(str(dockerignore_path))
338
+ create_dockerignore_file(str(self.workdir))
340
339
  image_name = f"{docker_config.image_name or 'agentkit-app'}"
341
340
  image_tag = f"{docker_config.image_tag or 'latest'}"
342
341
 
@@ -32,7 +32,11 @@ from agentkit.toolkit.config.dataclass_utils import AutoSerializableMixin
32
32
  from agentkit.toolkit.models import BuildResult, ImageInfo
33
33
  from agentkit.toolkit.reporter import Reporter
34
34
  from agentkit.toolkit.errors import ErrorCode
35
- from agentkit.utils.misc import generate_random_id, calculate_nonlinear_progress
35
+ from agentkit.utils.misc import (
36
+ generate_random_id,
37
+ calculate_nonlinear_progress,
38
+ retry,
39
+ )
36
40
  from agentkit.toolkit.volcengine.services import CRServiceConfig
37
41
  from .base import Builder
38
42
 
@@ -1303,11 +1307,12 @@ class VeCPCRBuilder(Builder):
1303
1307
 
1304
1308
  while True:
1305
1309
  try:
1306
- # Get pipeline run status
1307
- status = cp_client.get_pipeline_run_status(
1308
- workspace_id=workspace_id,
1309
- pipeline_id=pipeline_id,
1310
- run_id=run_id,
1310
+ status = retry(
1311
+ lambda: cp_client.get_pipeline_run_status(
1312
+ workspace_id=workspace_id,
1313
+ pipeline_id=pipeline_id,
1314
+ run_id=run_id,
1315
+ )
1311
1316
  )
1312
1317
 
1313
1318
  # Update progress description
@@ -14,6 +14,8 @@
14
14
 
15
15
  """AgentKit CLI - Main entry point for AgentKit Starter Toolkit."""
16
16
 
17
+ import os
18
+
17
19
  import typer
18
20
  from rich.panel import Panel
19
21
  from rich.console import Console
@@ -77,6 +79,7 @@ def main(
77
79
  ),
78
80
  ):
79
81
  """AgentKit CLI - Deploy AI agents with ease."""
82
+ os.environ.setdefault("AGENTKIT_CLIENT_TYPE", "cli")
80
83
  # If no subcommand is provided, show logo
81
84
  if ctx.invoked_subcommand is None:
82
85
  show_logo()
@@ -297,7 +297,13 @@ class AgentkitConfigManager:
297
297
  """Save configuration file"""
298
298
  os.makedirs(self.config_path.parent, exist_ok=True)
299
299
  with open(self.config_path, "w", encoding="utf-8") as f:
300
- yaml.dump(self._data, f, default_flow_style=False, sort_keys=False)
300
+ yaml.dump(
301
+ self._data,
302
+ f,
303
+ default_flow_style=False,
304
+ sort_keys=False,
305
+ allow_unicode=True,
306
+ )
301
307
 
302
308
  def get_common_config(self) -> CommonConfig:
303
309
  """Get common configuration"""
@@ -21,6 +21,40 @@ logger = logging.getLogger(__name__)
21
21
 
22
22
  T = TypeVar("T")
23
23
 
24
+ SENSITIVE_FIELDS = {
25
+ "runtime_envs",
26
+ "runtime_apikey_name",
27
+ "runtime_apikey",
28
+ "runtime_jwt_discovery_url",
29
+ "runtime_jwt_allowed_clients",
30
+ }
31
+
32
+
33
+ def _get_safe_value(field_name: str, value: Any) -> Any:
34
+ if field_name in SENSITIVE_FIELDS:
35
+ return "******"
36
+ return value
37
+
38
+
39
+ def _sanitize_dict(data: Dict[str, Any]) -> Dict[str, Any]:
40
+ """Sanitize sensitive fields in a dictionary."""
41
+ if not isinstance(data, dict):
42
+ return data
43
+ return {k: _get_safe_value(k, v) for k, v in data.items()}
44
+
45
+
46
+ def _sanitize_diff(diff: Dict[str, Any]) -> Dict[str, Any]:
47
+ """Sanitize sensitive fields in a diff dictionary."""
48
+ if not isinstance(diff, dict):
49
+ return diff
50
+ sanitized = {}
51
+ for k, v in diff.items():
52
+ if k in SENSITIVE_FIELDS:
53
+ sanitized[k] = ("******", "******")
54
+ else:
55
+ sanitized[k] = v
56
+ return sanitized
57
+
24
58
 
25
59
  class DataclassSerializer:
26
60
  @staticmethod
@@ -50,7 +84,7 @@ class DataclassSerializer:
50
84
  logger.debug(
51
85
  "[DataclassSerializer] source=local field=%s value=%r",
52
86
  field_name,
53
- kwargs[field_name],
87
+ _get_safe_value(field_name, kwargs[field_name]),
54
88
  )
55
89
  else:
56
90
  # Try aliases (backward compatibility)
@@ -65,7 +99,7 @@ class DataclassSerializer:
65
99
  "[DataclassSerializer] source=alias(%s) -> local field=%s value=%r",
66
100
  alias,
67
101
  field_name,
68
- kwargs[field_name],
102
+ _get_safe_value(field_name, kwargs[field_name]),
69
103
  )
70
104
  break
71
105
 
@@ -77,7 +111,7 @@ class DataclassSerializer:
77
111
  logger.debug(
78
112
  "[DataclassSerializer] source=default_factory field=%s value=%r",
79
113
  field_name,
80
- kwargs[field_name],
114
+ _get_safe_value(field_name, kwargs[field_name]),
81
115
  )
82
116
  elif field.default is not MISSING:
83
117
  kwargs[field_name] = field.default
@@ -85,7 +119,7 @@ class DataclassSerializer:
85
119
  logger.debug(
86
120
  "[DataclassSerializer] source=default field=%s value=%r",
87
121
  field_name,
88
- kwargs[field_name],
122
+ _get_safe_value(field_name, kwargs[field_name]),
89
123
  )
90
124
  else:
91
125
  kwargs[field_name] = None
@@ -157,7 +191,11 @@ class AutoSerializableMixin:
157
191
  from .global_config import apply_global_config_defaults
158
192
 
159
193
  before = instance.to_dict()
160
- logger.debug("from_dict: before globals for %s -> %r", cls.__name__, before)
194
+ logger.debug(
195
+ "from_dict: before globals for %s -> %r",
196
+ cls.__name__,
197
+ _sanitize_dict(before),
198
+ )
161
199
  instance = apply_global_config_defaults(instance, data)
162
200
  after = instance.to_dict()
163
201
  if before != after:
@@ -169,7 +207,7 @@ class AutoSerializableMixin:
169
207
  logger.debug(
170
208
  "from_dict: applied global defaults for %s; changes=%r",
171
209
  cls.__name__,
172
- diff,
210
+ _sanitize_diff(diff),
173
211
  )
174
212
  else:
175
213
  logger.debug(
@@ -254,7 +292,7 @@ class AutoSerializableMixin:
254
292
  "[%s] [template] start field render check: name=%s, value=%r, has_placeholders=%s",
255
293
  cfg_name,
256
294
  field_info.name,
257
- field_value,
295
+ _get_safe_value(field_info.name, field_value),
258
296
  (
259
297
  isinstance(field_value, str)
260
298
  and ("{{" in field_value and "}}" in field_value)
@@ -269,7 +307,7 @@ class AutoSerializableMixin:
269
307
  "[%s] [template] field %s is Auto/empty -> using default_template=%r",
270
308
  cfg_name,
271
309
  field_info.name,
272
- default_template,
310
+ _get_safe_value(field_info.name, default_template),
273
311
  )
274
312
  field_value = default_template
275
313
  self._template_originals[field_info.name] = default_template
@@ -300,17 +338,20 @@ class AutoSerializableMixin:
300
338
  "[%s] [template] save original template for %s: %r",
301
339
  cfg_name,
302
340
  field_info.name,
303
- field_value,
341
+ _get_safe_value(field_info.name, field_value),
304
342
  )
305
343
 
306
344
  try:
307
- rendered = render_template(field_value)
345
+ is_sensitive = field_info.name in SENSITIVE_FIELDS
346
+ rendered = render_template(
347
+ field_value, sensitive=is_sensitive
348
+ )
308
349
  logger.debug(
309
350
  "[%s] [template] rendered field %s: %r -> %r",
310
351
  cfg_name,
311
352
  field_info.name,
312
- field_value,
313
- rendered,
353
+ _get_safe_value(field_info.name, field_value),
354
+ _get_safe_value(field_info.name, rendered),
314
355
  )
315
356
  # Fail if unresolved placeholders remain
316
357
  if "{{" in str(rendered) and "}}" in str(rendered):
@@ -356,7 +397,9 @@ class AutoSerializableMixin:
356
397
  "[%s] [template] field %s is not marked for rendering, value: %r",
357
398
  cfg_name,
358
399
  field_info.name,
359
- getattr(self, field_info.name),
400
+ _get_safe_value(
401
+ field_info.name, getattr(self, field_info.name)
402
+ ),
360
403
  )
361
404
  except ImportError:
362
405
  # If template utils are not available, no-op
@@ -19,6 +19,8 @@ import logging
19
19
  import docker
20
20
  from docker.errors import DockerException, ImageNotFound
21
21
 
22
+ from agentkit.toolkit.docker.utils import create_dockerignore_file
23
+
22
24
  logger = logging.getLogger(__name__)
23
25
 
24
26
 
@@ -84,10 +86,8 @@ class DockerfileRenderer:
84
86
 
85
87
  # Create .dockerignore file if requested
86
88
  if create_dockerignore:
87
- dockerignore_path = os.path.join(
88
- output_dir or os.path.dirname(output_path), ".dockerignore"
89
- )
90
- self.create_dockerignore(dockerignore_path, dockerignore_entries)
89
+ target_dir = output_dir or os.path.dirname(output_path)
90
+ create_dockerignore_file(target_dir, dockerignore_entries)
91
91
 
92
92
  return rendered_content
93
93
 
@@ -106,6 +106,8 @@ class DockerfileRenderer:
106
106
  """
107
107
  Create .dockerignore file with default and additional entries.
108
108
 
109
+ Deprecated: Use agentkit.toolkit.docker.utils.create_dockerignore_file instead.
110
+
109
111
  Args:
110
112
  dockerignore_path: Path to .dockerignore file
111
113
  additional_entries: Additional entries to add to .dockerignore
@@ -113,62 +115,8 @@ class DockerfileRenderer:
113
115
  Raises:
114
116
  IOError: When file write fails
115
117
  """
116
- try:
117
- # Check if .dockerignore already exists
118
- if os.path.exists(dockerignore_path):
119
- logger.info(
120
- f".dockerignore already exists at: {dockerignore_path}, skipping creation"
121
- )
122
- return
123
-
124
- # Default entries to exclude
125
- default_entries = [
126
- "# AgentKit configuration",
127
- "agentkit.yaml",
128
- "agentkit*.yaml",
129
- "",
130
- "# Python cache",
131
- "__pycache__/",
132
- "*.py[cod]",
133
- "*$py.class",
134
- "",
135
- "# Virtual environments",
136
- ".venv/",
137
- "venv/",
138
- "ENV/",
139
- "env/",
140
- "",
141
- "# IDE",
142
- ".vscode/",
143
- ".idea/",
144
- ".windsurf/",
145
- "",
146
- "# Git",
147
- ".git/",
148
- ".gitignore",
149
- "",
150
- "# Docker",
151
- "Dockerfile*",
152
- ".dockerignore",
153
- ]
154
-
155
- # Combine default and additional entries
156
- all_entries = default_entries.copy()
157
- if additional_entries:
158
- all_entries.append("")
159
- all_entries.append("# Additional entries")
160
- all_entries.extend(additional_entries)
161
-
162
- # Write .dockerignore file
163
- with open(dockerignore_path, "w", encoding="utf-8") as f:
164
- f.write("\n".join(all_entries))
165
- f.write("\n") # End with newline
166
-
167
- logger.info(f"Successfully created .dockerignore at: {dockerignore_path}")
168
-
169
- except Exception as e:
170
- logger.error(f"Error creating .dockerignore: {str(e)}")
171
- raise
118
+ target_dir = os.path.dirname(dockerignore_path)
119
+ create_dockerignore_file(target_dir, additional_entries)
172
120
 
173
121
 
174
122
  class DockerManager:
@@ -0,0 +1,98 @@
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
+
16
+ import os
17
+ import logging
18
+ from typing import List, Optional
19
+
20
+ logger = logging.getLogger(__name__)
21
+
22
+
23
+ def create_dockerignore_file(
24
+ target_dir: str, additional_entries: Optional[List[str]] = None
25
+ ) -> bool:
26
+ """
27
+ Create .dockerignore file with default and additional entries.
28
+
29
+ Args:
30
+ target_dir: Directory where .dockerignore should be created
31
+ additional_entries: Additional entries to add to .dockerignore
32
+
33
+ Returns:
34
+ bool: True if file was created, False if it already existed
35
+
36
+ Raises:
37
+ IOError: When file write fails
38
+ """
39
+ dockerignore_path = os.path.join(target_dir, ".dockerignore")
40
+
41
+ try:
42
+ # Check if .dockerignore already exists
43
+ if os.path.exists(dockerignore_path):
44
+ logger.info(
45
+ f".dockerignore already exists at: {dockerignore_path}, skipping creation"
46
+ )
47
+ return False
48
+
49
+ # Default entries to exclude
50
+ default_entries = [
51
+ "# AgentKit configuration",
52
+ "agentkit.yaml",
53
+ "agentkit*.yaml",
54
+ ".agentkit/",
55
+ "",
56
+ "# Python cache",
57
+ "__pycache__/",
58
+ "*.py[cod]",
59
+ "*$py.class",
60
+ "",
61
+ "# Virtual environments",
62
+ ".venv/",
63
+ "venv/",
64
+ "ENV/",
65
+ "env/",
66
+ "",
67
+ "# IDE",
68
+ ".vscode/",
69
+ ".idea/",
70
+ ".windsurf/",
71
+ "",
72
+ "# Git",
73
+ ".git/",
74
+ ".gitignore",
75
+ "",
76
+ "# Docker",
77
+ "Dockerfile*",
78
+ ".dockerignore",
79
+ ]
80
+
81
+ # Combine default and additional entries
82
+ all_entries = default_entries.copy()
83
+ if additional_entries:
84
+ all_entries.append("")
85
+ all_entries.append("# Additional entries")
86
+ all_entries.extend(additional_entries)
87
+
88
+ # Write .dockerignore file
89
+ with open(dockerignore_path, "w", encoding="utf-8") as f:
90
+ f.write("\n".join(all_entries))
91
+ f.write("\n") # End with newline
92
+
93
+ logger.info(f"Successfully created .dockerignore at: {dockerignore_path}")
94
+ return True
95
+
96
+ except Exception as e:
97
+ logger.error(f"Error creating .dockerignore: {str(e)}")
98
+ raise
@@ -50,6 +50,7 @@ from agentkit.toolkit.config.constants import (
50
50
  DEFAULT_CR_INSTANCE_TEMPLATE_NAME,
51
51
  DEFAULT_TOS_BUCKET_TEMPLATE_NAME,
52
52
  )
53
+ from agentkit.toolkit.docker.utils import create_dockerignore_file
53
54
 
54
55
 
55
56
  TEMPLATES = {
@@ -593,41 +594,8 @@ class InitExecutor(BaseExecutor):
593
594
 
594
595
  def _create_dockerignore(self, target_dir: Path):
595
596
  """Create .dockerignore file."""
596
- dockerignore_file_path = target_dir / ".dockerignore"
597
- if dockerignore_file_path.exists():
598
- self.logger.info("File .dockerignore already exists, skipping")
599
- return
600
-
601
- dockerignore_content = """# AgentKit configuration
602
- agentkit.yaml
603
- agentkit*.yaml
604
-
605
- # Python cache
606
- __pycache__/
607
- *.py[cod]
608
- *$py.class
609
-
610
- # Virtual environments
611
- .venv/
612
- venv/
613
- ENV/
614
- env/
615
-
616
- # IDE
617
- .vscode/
618
- .idea/
619
- .windsurf/
620
-
621
- # Git
622
- .git/
623
- .gitignore
624
-
625
- # Docker
626
- Dockerfile*
627
- .dockerignore
628
- """
629
- dockerignore_file_path.write_text(dockerignore_content, encoding="utf-8")
630
- self.created_files.append(".dockerignore")
597
+ if create_dockerignore_file(str(target_dir)):
598
+ self.created_files.append(".dockerignore")
631
599
 
632
600
  def init_from_agent_file(
633
601
  self,
@@ -39,6 +39,7 @@ from agentkit.utils.misc import (
39
39
  generate_apikey_name,
40
40
  generate_client_token,
41
41
  calculate_nonlinear_progress,
42
+ retry,
42
43
  )
43
44
  from agentkit.sdk.runtime.client import AgentkitRuntimeClient
44
45
  from agentkit.toolkit.volcengine.iam import VeIAM
@@ -834,8 +835,10 @@ class VeAgentkitRuntimeRunner(Runner):
834
835
  # Use reporter.long_task() for progress tracking
835
836
  with self.reporter.long_task(task_description, total=total_time) as task:
836
837
  while True:
837
- runtime = self.agentkit_runtime_client.get_runtime(
838
- runtime_types.GetRuntimeRequest(runtime_id=runtime_id)
838
+ runtime = retry(
839
+ lambda: self.agentkit_runtime_client.get_runtime(
840
+ runtime_types.GetRuntimeRequest(runtime_id=runtime_id)
841
+ )
839
842
  )
840
843
 
841
844
  # Check if target status reached
@@ -16,4 +16,5 @@
16
16
 
17
17
  from .agent_parser import AgentParser
18
18
 
19
+
19
20
  __all__ = ["AgentParser"]
@@ -221,7 +221,13 @@ class VeIAM(BaseIAMClient):
221
221
  data="{}",
222
222
  )
223
223
  response_data = json.loads(res)
224
- return GetRoleResponse(**response_data.get("Result", {}))
224
+ result_data = response_data.get("Result", {})
225
+ role_data = result_data.get("Role")
226
+ if isinstance(role_data, dict):
227
+ tpd = role_data.get("TrustPolicyDocument")
228
+ if isinstance(tpd, dict):
229
+ role_data["TrustPolicyDocument"] = json.dumps(tpd)
230
+ return GetRoleResponse(**result_data)
225
231
  except Exception as e:
226
232
  # If role not found, return None
227
233
  if "RoleNotExist" in str(e) or "NotFound" in str(e) or "404" in str(e):
@@ -34,6 +34,8 @@ class ArchiveConfig:
34
34
  exclude_patterns: List[str] = field(
35
35
  default_factory=lambda: [
36
36
  "__pycache__",
37
+ "agentkit.yaml",
38
+ ".env",
37
39
  "*.pyc",
38
40
  "*.pyo",
39
41
  ".git",
@@ -44,6 +46,7 @@ class ArchiveConfig:
44
46
  "dist/",
45
47
  "build/",
46
48
  "*.egg-info/",
49
+ ".agentkit/",
47
50
  ]
48
51
  )
49
52
 
@@ -15,6 +15,10 @@
15
15
  import math
16
16
  import string
17
17
  import random
18
+ import time
19
+ from typing import Callable, TypeVar
20
+
21
+ T = TypeVar("T")
18
22
 
19
23
 
20
24
  def generate_random_id(length=8):
@@ -102,3 +106,17 @@ def calculate_nonlinear_progress(
102
106
  """
103
107
  progress = max_time * (1 - math.exp(-elapsed / expected_time))
104
108
  return min(progress, max_time * max_ratio)
109
+
110
+
111
+ def retry(
112
+ func: Callable[[], T],
113
+ retries: int = 3,
114
+ delay: float = 1.0,
115
+ ) -> T:
116
+ for attempt in range(retries):
117
+ try:
118
+ return func()
119
+ except Exception: # noqa: BLE001
120
+ if attempt == retries - 1:
121
+ raise
122
+ time.sleep(delay)