veadk-python 0.2.6__tar.gz → 0.2.7__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.

Potentially problematic release.


This version of veadk-python might be problematic. Click here for more details.

Files changed (194) hide show
  1. {veadk_python-0.2.6 → veadk_python-0.2.7}/PKG-INFO +2 -1
  2. {veadk_python-0.2.6 → veadk_python-0.2.7}/pyproject.toml +6 -5
  3. veadk_python-0.2.7/tests/test_agent.py +207 -0
  4. {veadk_python-0.2.6 → veadk_python-0.2.7}/tests/test_runner.py +24 -9
  5. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/agent.py +11 -16
  6. veadk_python-0.2.7/veadk/agent_builder.py +94 -0
  7. veadk_python-0.2.7/veadk/auth/base_auth.py +22 -0
  8. veadk_python-0.2.7/veadk/auth/veauth/apmplus_veauth.py +65 -0
  9. veadk_python-0.2.7/veadk/auth/veauth/ark_veauth.py +77 -0
  10. veadk_python-0.2.7/veadk/auth/veauth/base_veauth.py +50 -0
  11. veadk_python-0.2.7/veadk/auth/veauth/prompt_pilot_veauth.py +60 -0
  12. veadk_python-0.2.7/veadk/auth/veauth/vesearch_veauth.py +62 -0
  13. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/cli/cli.py +2 -0
  14. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/cli/cli_deploy.py +3 -2
  15. veadk_python-0.2.7/veadk/cli/cli_pipeline.py +220 -0
  16. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/cli/cli_prompt.py +4 -4
  17. veadk_python-0.2.7/veadk/config.py +95 -0
  18. veadk_python-0.2.7/veadk/configs/database_configs.py +83 -0
  19. veadk_python-0.2.7/veadk/configs/model_configs.py +42 -0
  20. veadk_python-0.2.7/veadk/configs/tool_configs.py +42 -0
  21. veadk_python-0.2.7/veadk/configs/tracing_configs.py +110 -0
  22. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/consts.py +13 -1
  23. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/database_adapter.py +172 -7
  24. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/local_database.py +1 -0
  25. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/viking/viking_database.py +222 -55
  26. veadk_python-0.2.7/veadk/integrations/ve_code_pipeline/ve_code_pipeline.py +431 -0
  27. veadk_python-0.2.7/veadk/integrations/ve_cozeloop/ve_cozeloop.py +96 -0
  28. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_cr/ve_cr.py +20 -5
  29. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/template/cookiecutter.json +1 -1
  30. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/deploy.py +2 -2
  31. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/agent.py +1 -1
  32. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/run.sh +1 -5
  33. veadk_python-0.2.7/veadk/integrations/ve_faas/ve_faas.py +728 -0
  34. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_prompt_pilot/ve_prompt_pilot.py +6 -3
  35. veadk_python-0.2.7/veadk/integrations/ve_tls/utils.py +117 -0
  36. veadk_python-0.2.7/veadk/integrations/ve_tls/ve_tls.py +208 -0
  37. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_tos/ve_tos.py +68 -75
  38. veadk_python-0.2.7/veadk/knowledgebase/knowledgebase.py +178 -0
  39. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/memory/long_term_memory.py +20 -21
  40. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/memory/short_term_memory_processor.py +9 -4
  41. veadk_python-0.2.7/veadk/runner.py +386 -0
  42. veadk_python-0.2.7/veadk/tools/__init__.py +13 -0
  43. veadk_python-0.2.7/veadk/tools/builtin_tools/__init__.py +13 -0
  44. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/builtin_tools/vesearch.py +2 -2
  45. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/builtin_tools/video_generate.py +27 -20
  46. veadk_python-0.2.7/veadk/tools/sandbox/__init__.py +13 -0
  47. veadk_python-0.2.7/veadk/tracing/__init__.py +13 -0
  48. veadk_python-0.2.7/veadk/tracing/telemetry/__init__.py +13 -0
  49. veadk_python-0.2.7/veadk/tracing/telemetry/exporters/__init__.py +13 -0
  50. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/exporters/apmplus_exporter.py +158 -12
  51. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/exporters/cozeloop_exporter.py +4 -9
  52. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/exporters/tls_exporter.py +4 -10
  53. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/telemetry.py +4 -1
  54. veadk_python-0.2.7/veadk/utils/__init__.py +13 -0
  55. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/utils/logger.py +1 -1
  56. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/utils/misc.py +48 -0
  57. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/utils/volcengine_sign.py +6 -2
  58. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/version.py +1 -1
  59. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk_python.egg-info/PKG-INFO +2 -1
  60. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk_python.egg-info/SOURCES.txt +25 -4
  61. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk_python.egg-info/requires.txt +1 -0
  62. veadk_python-0.2.6/tests/test_agent.py +0 -63
  63. veadk_python-0.2.6/tests/test_agent_card.py +0 -33
  64. veadk_python-0.2.6/tests/test_tos.py +0 -169
  65. veadk_python-0.2.6/veadk/config.py +0 -131
  66. veadk_python-0.2.6/veadk/integrations/ve_faas/ve_faas.py +0 -413
  67. veadk_python-0.2.6/veadk/knowledgebase/knowledgebase.py +0 -90
  68. veadk_python-0.2.6/veadk/runner.py +0 -429
  69. {veadk_python-0.2.6 → veadk_python-0.2.7}/LICENSE +0 -0
  70. {veadk_python-0.2.6 → veadk_python-0.2.7}/README.md +0 -0
  71. {veadk_python-0.2.6 → veadk_python-0.2.7}/setup.cfg +0 -0
  72. {veadk_python-0.2.6 → veadk_python-0.2.7}/tests/test_cloud.py +0 -0
  73. {veadk_python-0.2.6 → veadk_python-0.2.7}/tests/test_evaluator.py +0 -0
  74. {veadk_python-0.2.6 → veadk_python-0.2.7}/tests/test_knowledgebase.py +0 -0
  75. {veadk_python-0.2.6 → veadk_python-0.2.7}/tests/test_long_term_memory.py +0 -0
  76. {veadk_python-0.2.6 → veadk_python-0.2.7}/tests/test_multiple_agents.py +0 -0
  77. {veadk_python-0.2.6 → veadk_python-0.2.7}/tests/test_runtime_data_collecting.py +0 -0
  78. {veadk_python-0.2.6 → veadk_python-0.2.7}/tests/test_short_term_memory.py +0 -0
  79. {veadk_python-0.2.6 → veadk_python-0.2.7}/tests/test_tracing.py +0 -0
  80. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/__init__.py +0 -0
  81. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/a2a/__init__.py +0 -0
  82. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/a2a/agent_card.py +0 -0
  83. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/a2a/remote_ve_agent.py +0 -0
  84. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/a2a/ve_a2a_server.py +0 -0
  85. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/a2a/ve_agent_executor.py +0 -0
  86. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/a2a/ve_task_store.py +0 -0
  87. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/agents/loop_agent.py +0 -0
  88. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/agents/parallel_agent.py +0 -0
  89. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/agents/sequential_agent.py +0 -0
  90. {veadk_python-0.2.6/veadk/cli → veadk_python-0.2.7/veadk/auth}/__init__.py +0 -0
  91. {veadk_python-0.2.6/veadk/cloud → veadk_python-0.2.7/veadk/auth/veauth}/__init__.py +0 -0
  92. veadk_python-0.2.6/veadk/database/kv/__init__.py → veadk_python-0.2.7/veadk/auth/veauth/cozeloop_veauth.py +0 -0
  93. {veadk_python-0.2.6/veadk/database/relational → veadk_python-0.2.7/veadk/cli}/__init__.py +0 -0
  94. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/cli/cli_init.py +1 -1
  95. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/cli/cli_web.py +0 -0
  96. {veadk_python-0.2.6/veadk/database/vector → veadk_python-0.2.7/veadk/cloud}/__init__.py +0 -0
  97. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/cloud/cloud_agent_engine.py +0 -0
  98. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/cloud/cloud_app.py +0 -0
  99. {veadk_python-0.2.6/veadk/database/viking → veadk_python-0.2.7/veadk/configs}/__init__.py +0 -0
  100. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/__init__.py +0 -0
  101. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/base_database.py +0 -0
  102. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/database_factory.py +0 -0
  103. {veadk_python-0.2.6/veadk/integrations/ve_apig → veadk_python-0.2.7/veadk/database/kv}/__init__.py +0 -0
  104. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/kv/redis_database.py +0 -0
  105. {veadk_python-0.2.6/veadk/integrations/ve_cr → veadk_python-0.2.7/veadk/database/relational}/__init__.py +0 -0
  106. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/relational/mysql_database.py +0 -0
  107. {veadk_python-0.2.6/veadk/integrations/ve_faas → veadk_python-0.2.7/veadk/database/vector}/__init__.py +0 -0
  108. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/vector/opensearch_vector_database.py +0 -0
  109. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/vector/type.py +0 -0
  110. {veadk_python-0.2.6/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}} → veadk_python-0.2.7/veadk/database/viking}/__init__.py +0 -0
  111. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/viking/viking_memory_db.py +0 -0
  112. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/__init__.py +0 -0
  113. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/adk_evaluator/__init__.py +0 -0
  114. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/adk_evaluator/adk_evaluator.py +0 -0
  115. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/base_evaluator.py +0 -0
  116. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/deepeval_evaluator/__init__.py +0 -0
  117. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +0 -0
  118. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/eval_set_file_loader.py +0 -0
  119. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/eval_set_recorder.py +0 -0
  120. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/types.py +0 -0
  121. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/utils/prometheus.py +0 -0
  122. {veadk_python-0.2.6/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src → veadk_python-0.2.7/veadk/integrations/ve_apig}/__init__.py +0 -0
  123. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_apig/ve_apig.py +0 -0
  124. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_apig/ve_apig_utils.py +0 -0
  125. {veadk_python-0.2.6/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}} → veadk_python-0.2.7/veadk/integrations/ve_code_pipeline}/__init__.py +0 -0
  126. {veadk_python-0.2.6/veadk/integrations/ve_prompt_pilot → veadk_python-0.2.7/veadk/integrations/ve_cozeloop}/__init__.py +0 -0
  127. {veadk_python-0.2.6/veadk/memory → veadk_python-0.2.7/veadk/integrations/ve_cr}/__init__.py +0 -0
  128. {veadk_python-0.2.6/veadk/prompts → veadk_python-0.2.7/veadk/integrations/ve_faas}/__init__.py +0 -0
  129. {veadk_python-0.2.6/veadk/tools → veadk_python-0.2.7/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}}/__init__.py +0 -0
  130. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
  131. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
  132. {veadk_python-0.2.6/veadk/tools/builtin_tools → veadk_python-0.2.7/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src}/__init__.py +0 -0
  133. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
  134. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
  135. {veadk_python-0.2.6/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name|replace('-', '_') }} → veadk_python-0.2.7/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}}/__init__.py +0 -0
  136. {veadk_python-0.2.6/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name|replace('-', '_') }} → veadk_python-0.2.7/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}}/agent.py +0 -0
  137. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/ve_faas_utils.py +0 -0
  138. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/cookiecutter.json +0 -0
  139. {veadk_python-0.2.6/veadk/tools/sandbox → veadk_python-0.2.7/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}}/__init__.py +0 -0
  140. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
  141. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
  142. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
  143. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/Dockerfile +0 -0
  144. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
  145. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/init_db.py +0 -0
  146. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/models.py +0 -0
  147. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
  148. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
  149. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/css/style.css +0 -0
  150. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/js/admin.js +0 -0
  151. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/dashboard.html +0 -0
  152. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/edit_post.html +0 -0
  153. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/login.html +0 -0
  154. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/posts.html +0 -0
  155. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/base.html +0 -0
  156. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/index.html +0 -0
  157. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/post.html +0 -0
  158. {veadk_python-0.2.6/veadk/tracing → veadk_python-0.2.7/veadk/integrations/ve_prompt_pilot}/__init__.py +0 -0
  159. {veadk_python-0.2.6/veadk/tracing/telemetry → veadk_python-0.2.7/veadk/integrations/ve_tls}/__init__.py +0 -0
  160. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/knowledgebase/__init__.py +0 -0
  161. {veadk_python-0.2.6/veadk/tracing/telemetry/exporters → veadk_python-0.2.7/veadk/memory}/__init__.py +0 -0
  162. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/memory/short_term_memory.py +0 -0
  163. {veadk_python-0.2.6/veadk/utils → veadk_python-0.2.7/veadk/prompts}/__init__.py +0 -0
  164. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/prompts/agent_default_prompt.py +0 -0
  165. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/prompts/prompt_evaluator.py +0 -0
  166. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/prompts/prompt_memory_processor.py +0 -0
  167. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/prompts/prompt_optimization.py +0 -0
  168. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/builtin_tools/image_edit.py +0 -0
  169. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/builtin_tools/image_generate.py +0 -0
  170. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/builtin_tools/lark.py +0 -0
  171. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/builtin_tools/las.py +0 -0
  172. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/builtin_tools/mcp_router.py +0 -0
  173. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/builtin_tools/web_scraper.py +0 -0
  174. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/builtin_tools/web_search.py +0 -0
  175. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/demo_tools.py +0 -0
  176. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/load_knowledgebase_tool.py +0 -0
  177. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/sandbox/browser_sandbox.py +0 -0
  178. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/sandbox/code_sandbox.py +0 -0
  179. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/sandbox/computer_sandbox.py +0 -0
  180. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/base_tracer.py +0 -0
  181. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/attributes/attributes.py +0 -0
  182. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py +0 -0
  183. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py +0 -0
  184. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py +0 -0
  185. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/attributes/extractors/types.py +0 -0
  186. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/exporters/base_exporter.py +0 -0
  187. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/exporters/inmemory_exporter.py +0 -0
  188. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/opentelemetry_tracer.py +0 -0
  189. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/types.py +0 -0
  190. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/utils/mcp_utils.py +0 -0
  191. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/utils/patches.py +0 -0
  192. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk_python.egg-info/dependency_links.txt +0 -0
  193. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk_python.egg-info/entry_points.txt +0 -0
  194. {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk_python.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: veadk-python
3
- Version: 0.2.6
3
+ Version: 0.2.7
4
4
  Summary: Volcengine agent development kit, integrations with Volcengine cloud services.
5
5
  Author-email: Yaozheng Fang <fangyozheng@gmail.com>, Guodong Li <cu.eric.lee@gmail.com>, Zhi Han <sliverydayday@gmail.com>, Meng Wang <mengwangwm@gmail.com>
6
6
  License: Apache License
@@ -223,6 +223,7 @@ Requires-Dist: agent-pilot-sdk>=0.0.9
223
223
  Requires-Dist: fastmcp>=2.11.3
224
224
  Requires-Dist: cookiecutter>=2.6.0
225
225
  Requires-Dist: opensearch-py==2.8.0
226
+ Requires-Dist: omegaconf>=2.3.0
226
227
  Provides-Extra: database
227
228
  Requires-Dist: redis>=6.2.0; extra == "database"
228
229
  Requires-Dist: pymysql>=1.1.1; extra == "database"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "veadk-python"
3
- version = "0.2.6"
3
+ version = "0.2.7"
4
4
  description = "Volcengine agent development kit, integrations with Volcengine cloud services."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -23,10 +23,11 @@ dependencies = [
23
23
  "wrapt>=1.17.2", # For patching built-in functions
24
24
  "openai<1.100", # For fix https://github.com/BerriAI/litellm/issues/13710
25
25
  "volcengine-python-sdk==4.0.3", # For Volcengine API
26
- "agent-pilot-sdk>=0.0.9", # Prompt optimization by Volcengine AgentPilot/PromptPilot toolkits
27
- "fastmcp>=2.11.3", # For running MCP
28
- "cookiecutter>=2.6.0", # For cloud deploy
29
- "opensearch-py==2.8.0" # For OpenSearch database
26
+ "agent-pilot-sdk>=0.0.9", # Prompt optimization by Volcengine AgentPilot/PromptPilot toolkits
27
+ "fastmcp>=2.11.3", # For running MCP
28
+ "cookiecutter>=2.6.0", # For cloud deploy # For OpenSearch database
29
+ "opensearch-py==2.8.0",
30
+ "omegaconf>=2.3.0", # For agent builder
30
31
  ]
31
32
 
32
33
  [project.scripts]
@@ -0,0 +1,207 @@
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
+ from unittest.mock import Mock, patch
16
+
17
+ from google.adk.agents.llm_agent import LlmAgent
18
+ from google.adk.models.lite_llm import LiteLlm
19
+ from google.adk.tools import load_memory
20
+
21
+ from veadk import Agent
22
+ from veadk.consts import (
23
+ DEFAULT_AGENT_NAME,
24
+ DEFAULT_MODEL_AGENT_API_BASE,
25
+ DEFAULT_MODEL_AGENT_NAME,
26
+ DEFAULT_MODEL_AGENT_PROVIDER,
27
+ DEFAULT_MODEL_EXTRA_CONFIG,
28
+ )
29
+ from veadk.knowledgebase import KnowledgeBase
30
+ from veadk.memory.long_term_memory import LongTermMemory
31
+ from veadk.tools import load_knowledgebase_tool
32
+ from veadk.tracing.telemetry.opentelemetry_tracer import OpentelemetryTracer
33
+
34
+
35
+ def test_agent():
36
+ knowledgebase = KnowledgeBase()
37
+ long_term_memory = LongTermMemory(backend="local")
38
+ tracer = OpentelemetryTracer()
39
+
40
+ extra_config = {
41
+ "extra_headers": {"thinking": "test"},
42
+ "extra_body": {"content": "test"},
43
+ }
44
+
45
+ agent = Agent(
46
+ model_name="test_model_name",
47
+ model_provider="test_model_provider",
48
+ model_api_key="test_model_api_key",
49
+ model_api_base="test_model_api_base",
50
+ model_extra_config=extra_config,
51
+ tools=[],
52
+ sub_agents=[],
53
+ knowledgebase=knowledgebase,
54
+ long_term_memory=long_term_memory,
55
+ tracers=[tracer],
56
+ )
57
+
58
+ assert agent.model.model == f"{agent.model_provider}/{agent.model_name}" # type: ignore
59
+
60
+ expected_config = DEFAULT_MODEL_EXTRA_CONFIG.copy()
61
+ expected_config["extra_headers"] |= extra_config["extra_headers"]
62
+ expected_config["extra_body"] |= extra_config["extra_body"]
63
+
64
+ assert agent.model_extra_config == expected_config
65
+
66
+ assert agent.knowledgebase == knowledgebase
67
+ assert agent.knowledgebase.backend == "local" # type: ignore
68
+ assert load_knowledgebase_tool.knowledgebase == agent.knowledgebase
69
+ assert load_knowledgebase_tool.load_knowledgebase_tool in agent.tools
70
+
71
+ assert agent.long_term_memory.backend == "local" # type: ignore
72
+ assert load_memory in agent.tools
73
+
74
+
75
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
76
+ def test_agent_default_values():
77
+ agent = Agent()
78
+
79
+ assert agent.name == DEFAULT_AGENT_NAME
80
+
81
+ assert agent.model_name == DEFAULT_MODEL_AGENT_NAME
82
+ assert agent.model_provider == DEFAULT_MODEL_AGENT_PROVIDER
83
+ assert agent.model_api_base == DEFAULT_MODEL_AGENT_API_BASE
84
+
85
+ assert agent.tools == []
86
+ assert agent.sub_agents == []
87
+ assert agent.knowledgebase is None
88
+ assert agent.long_term_memory is None
89
+ assert agent.tracers == []
90
+
91
+
92
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
93
+ def test_agent_without_knowledgebase():
94
+ agent = Agent()
95
+
96
+ assert agent.knowledgebase is None
97
+ assert load_knowledgebase_tool.load_knowledgebase_tool not in agent.tools
98
+
99
+
100
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
101
+ def test_agent_without_long_term_memory():
102
+ agent = Agent()
103
+
104
+ assert agent.long_term_memory is None
105
+ assert load_memory not in agent.tools
106
+
107
+
108
+ @patch("veadk.agent.LiteLlm")
109
+ def test_agent_model_creation(mock_lite_llm):
110
+ mock_model = Mock()
111
+ mock_lite_llm.return_value = mock_model
112
+
113
+ agent = Agent(
114
+ model_name="test_model",
115
+ model_provider="test_provider",
116
+ model_api_key="test_key",
117
+ model_api_base="test_base",
118
+ )
119
+
120
+ mock_lite_llm.assert_called_once()
121
+ assert agent.model == mock_model
122
+
123
+
124
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
125
+ def test_agent_with_existing_model():
126
+ existing_model = LiteLlm(model="test_model")
127
+ agent = Agent(model=existing_model)
128
+
129
+ assert agent.model == existing_model
130
+
131
+
132
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
133
+ def test_agent_model_extra_config_merge():
134
+ user_config = {
135
+ "extra_headers": {"custom": "header"},
136
+ "extra_body": {"custom": "body"},
137
+ "other_param": "value",
138
+ }
139
+
140
+ agent = Agent(model_extra_config=user_config)
141
+
142
+ expected_headers = DEFAULT_MODEL_EXTRA_CONFIG["extra_headers"].copy()
143
+ expected_headers["custom"] = "header"
144
+
145
+ expected_body = DEFAULT_MODEL_EXTRA_CONFIG["extra_body"].copy()
146
+ expected_body["custom"] = "body"
147
+
148
+ assert agent.model_extra_config["extra_headers"] == expected_headers
149
+ assert agent.model_extra_config["extra_body"] == expected_body
150
+ assert agent.model_extra_config["other_param"] == "value"
151
+
152
+
153
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
154
+ def test_agent_empty_model_extra_config():
155
+ agent = Agent(model_extra_config={})
156
+
157
+ assert (
158
+ agent.model_extra_config["extra_headers"]
159
+ == DEFAULT_MODEL_EXTRA_CONFIG["extra_headers"]
160
+ )
161
+ assert (
162
+ agent.model_extra_config["extra_body"]
163
+ == DEFAULT_MODEL_EXTRA_CONFIG["extra_body"]
164
+ )
165
+
166
+
167
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
168
+ def test_agent_with_tools():
169
+ mock_tool = Mock()
170
+ agent = Agent(tools=[mock_tool])
171
+
172
+ assert mock_tool in agent.tools
173
+
174
+
175
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
176
+ def test_agent_with_sub_agents():
177
+ adk_agent = LlmAgent(name="agent")
178
+ veadk_agent = Agent(name="agent")
179
+ agent = Agent(sub_agents=[adk_agent, veadk_agent])
180
+
181
+ assert adk_agent in agent.sub_agents
182
+ assert veadk_agent in agent.sub_agents
183
+ assert adk_agent.parent_agent == agent
184
+ assert veadk_agent.parent_agent == agent
185
+
186
+
187
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
188
+ def test_agent_with_tracers():
189
+ tracer1 = OpentelemetryTracer()
190
+ tracer2 = OpentelemetryTracer()
191
+
192
+ agent = Agent(tracers=[tracer1, tracer2])
193
+
194
+ assert len(agent.tracers) == 2
195
+ assert tracer1 in agent.tracers
196
+ assert tracer2 in agent.tracers
197
+
198
+
199
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
200
+ def test_agent_custom_name_and_description():
201
+ custom_name = "CustomAgent"
202
+ custom_description = "A custom agent for testing"
203
+
204
+ agent = Agent(name=custom_name, description=custom_description)
205
+
206
+ assert agent.name == custom_name
207
+ assert agent.description == custom_description
@@ -20,7 +20,13 @@ from veadk.memory.short_term_memory import ShortTermMemory
20
20
  from veadk.runner import Runner
21
21
 
22
22
 
23
+ # Import the standalone function instead of accessing as class method
24
+ from veadk.runner import _convert_messages
25
+
26
+
23
27
  def _test_convert_messages(runner):
28
+ """Test message conversion logic using standalone _convert_messages function"""
29
+ # Test single text message conversion
24
30
  message = "test message"
25
31
  expected_message = [
26
32
  types.Content(
@@ -28,11 +34,16 @@ def _test_convert_messages(runner):
28
34
  role="user",
29
35
  )
30
36
  ]
31
- actual_message = runner._convert_messages(
32
- message, session_id="test_session_id", upload_inline_data_to_tos=True
37
+ # Modified: Call _convert_messages directly (not as runner method)
38
+ actual_message = _convert_messages(
39
+ message,
40
+ app_name=runner.app_name,
41
+ user_id=runner.user_id,
42
+ session_id="test_session_id",
33
43
  )
34
44
  assert actual_message == expected_message
35
45
 
46
+ # Test multiple text messages conversion
36
47
  message = ["test message 1", "test message 2"]
37
48
  expected_message = [
38
49
  types.Content(
@@ -44,13 +55,18 @@ def _test_convert_messages(runner):
44
55
  role="user",
45
56
  ),
46
57
  ]
47
- actual_message = runner._convert_messages(
48
- message, session_id="test_session_id", upload_inline_data_to_tos=True
58
+ # Modified: Call _convert_messages directly (not as runner method)
59
+ actual_message = _convert_messages(
60
+ message,
61
+ app_name=runner.app_name,
62
+ user_id=runner.user_id,
63
+ session_id="test_session_id",
49
64
  )
50
65
  assert actual_message == expected_message
51
66
 
52
67
 
53
68
  def test_runner():
69
+ """Test Runner class initialization and core properties"""
54
70
  short_term_memory = ShortTermMemory()
55
71
  long_term_memory = LongTermMemory(backend="local")
56
72
  agent = Agent(
@@ -64,10 +80,9 @@ def test_runner():
64
80
  runner = Runner(agent=agent, short_term_memory=short_term_memory)
65
81
  assert runner.long_term_memory == agent.long_term_memory
66
82
 
67
- adk_runner = runner.runner
68
- assert adk_runner.memory_service == agent.long_term_memory
69
- assert adk_runner.session_service == runner.short_term_memory.session_service
83
+ # Verify inherited ADKRunner properties
84
+ assert runner.memory_service == agent.long_term_memory
85
+ assert runner.session_service == runner.short_term_memory.session_service
70
86
 
71
- _test_convert_messages(runner)
72
- _test_convert_messages(runner)
87
+ # Run message conversion tests
73
88
  _test_convert_messages(runner)
@@ -14,11 +14,11 @@
14
14
 
15
15
  from __future__ import annotations
16
16
 
17
- from typing import Optional
17
+ from typing import Optional, Union
18
18
 
19
19
  from google.adk.agents import LlmAgent, RunConfig
20
20
  from google.adk.agents.base_agent import BaseAgent
21
- from google.adk.agents.llm_agent import ToolUnion
21
+ from google.adk.agents.llm_agent import InstructionProvider, ToolUnion
22
22
  from google.adk.agents.run_config import StreamingMode
23
23
  from google.adk.models.lite_llm import LiteLlm
24
24
  from google.adk.runners import Runner
@@ -26,11 +26,9 @@ from google.genai import types
26
26
  from pydantic import ConfigDict, Field
27
27
  from typing_extensions import Any
28
28
 
29
- from veadk.config import getenv
29
+ from veadk.config import settings
30
30
  from veadk.consts import (
31
- DEFAULT_MODEL_AGENT_API_BASE,
32
- DEFAULT_MODEL_AGENT_NAME,
33
- DEFAULT_MODEL_AGENT_PROVIDER,
31
+ DEFAULT_AGENT_NAME,
34
32
  DEFAULT_MODEL_EXTRA_CONFIG,
35
33
  )
36
34
  from veadk.evaluation import EvalSetRecorder
@@ -53,25 +51,25 @@ class Agent(LlmAgent):
53
51
  model_config = ConfigDict(arbitrary_types_allowed=True, extra="allow")
54
52
  """The model config"""
55
53
 
56
- name: str = "veAgent"
54
+ name: str = DEFAULT_AGENT_NAME
57
55
  """The name of the agent."""
58
56
 
59
57
  description: str = DEFAULT_DESCRIPTION
60
58
  """The description of the agent. This will be helpful in A2A scenario."""
61
59
 
62
- instruction: str = DEFAULT_INSTRUCTION
63
- """The instruction for the agent, such as principles of function calling."""
60
+ instruction: Union[str, InstructionProvider] = DEFAULT_INSTRUCTION
61
+ """The instruction for the agent."""
64
62
 
65
- model_name: str = getenv("MODEL_AGENT_NAME", DEFAULT_MODEL_AGENT_NAME)
63
+ model_name: str = Field(default_factory=lambda: settings.model.name)
66
64
  """The name of the model for agent running."""
67
65
 
68
- model_provider: str = getenv("MODEL_AGENT_PROVIDER", DEFAULT_MODEL_AGENT_PROVIDER)
66
+ model_provider: str = Field(default_factory=lambda: settings.model.provider)
69
67
  """The provider of the model for agent running."""
70
68
 
71
- model_api_base: str = getenv("MODEL_AGENT_API_BASE", DEFAULT_MODEL_AGENT_API_BASE)
69
+ model_api_base: str = Field(default_factory=lambda: settings.model.api_base)
72
70
  """The api base of the model for agent running."""
73
71
 
74
- model_api_key: str = Field(default_factory=lambda: getenv("MODEL_AGENT_API_KEY"))
72
+ model_api_key: str = Field(default_factory=lambda: settings.model.api_key)
75
73
  """The api key of the model for agent running."""
76
74
 
77
75
  model_extra_config: dict = Field(default_factory=dict)
@@ -95,9 +93,6 @@ class Agent(LlmAgent):
95
93
  tracers: list[BaseTracer] = []
96
94
  """The tracers provided to agent."""
97
95
 
98
- serve_url: str = ""
99
- """The url of agent serving host. Show in agent card."""
100
-
101
96
  def model_post_init(self, __context: Any) -> None:
102
97
  super().model_post_init(None) # for sub_agents init
103
98
 
@@ -0,0 +1,94 @@
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
+ import importlib
16
+
17
+ from google.adk.agents import BaseAgent
18
+ from omegaconf import OmegaConf
19
+
20
+ from veadk.a2a.remote_ve_agent import RemoteVeAgent
21
+ from veadk.agent import Agent
22
+ from veadk.agents.loop_agent import LoopAgent
23
+ from veadk.agents.parallel_agent import ParallelAgent
24
+ from veadk.agents.sequential_agent import SequentialAgent
25
+ from veadk.utils.logger import get_logger
26
+
27
+ logger = get_logger(__name__)
28
+
29
+ AGENT_TYPES = {
30
+ "Agent": Agent,
31
+ "SequentialAgent": SequentialAgent,
32
+ "ParallelAgent": ParallelAgent,
33
+ "LoopAgent": LoopAgent,
34
+ "RemoteVeAgent": RemoteVeAgent,
35
+ }
36
+
37
+
38
+ class AgentBuilder:
39
+ def __init__(self) -> None:
40
+ pass
41
+
42
+ def _build(self, agent_config: dict) -> BaseAgent:
43
+ logger.info(f"Building agent with config: {agent_config}")
44
+
45
+ sub_agents = []
46
+ if agent_config.get("sub_agents", None):
47
+ for sub_agent_config in agent_config["sub_agents"]:
48
+ agent = self._build(sub_agent_config)
49
+ sub_agents.append(agent)
50
+ agent_config.pop("sub_agents")
51
+
52
+ tools = []
53
+ if agent_config.get("tools", []):
54
+ for tool in agent_config["tools"]:
55
+ module_name = tool["module"]
56
+ func_name = tool["func"]
57
+
58
+ module = importlib.import_module(module_name)
59
+ func = getattr(module, func_name)
60
+
61
+ tools.append(func)
62
+ agent_config.pop("tools")
63
+
64
+ agent_cls = AGENT_TYPES[agent_config["type"]]
65
+ agent = agent_cls(**agent_config, sub_agents=sub_agents, tools=tools)
66
+
67
+ logger.debug("Build agent done.")
68
+
69
+ return agent
70
+
71
+ def _read_config(self, path: str) -> dict:
72
+ """Read config file (from `path`) to a in-memory dict."""
73
+ assert path.endswith(".yaml"), "Agent config file must be a `.yaml` file."
74
+
75
+ config = OmegaConf.load(path)
76
+ config_dict = OmegaConf.to_container(config, resolve=True)
77
+
78
+ assert isinstance(config_dict, dict), (
79
+ "Parsed config must in `dict` format. Pls check your building file format."
80
+ )
81
+
82
+ return config_dict
83
+
84
+ def build(
85
+ self,
86
+ path: str,
87
+ root_agent_identifier: str = "root_agent",
88
+ ) -> BaseAgent:
89
+ config = self._read_config(path)
90
+
91
+ agent_config = config[root_agent_identifier]
92
+ agent = self._build(agent_config)
93
+
94
+ return agent
@@ -0,0 +1,22 @@
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
+ class BaseAuth:
17
+ def __init__(self) -> None: ...
18
+
19
+ def _fetch_token(self) -> str | dict: ...
20
+
21
+ @property
22
+ def token(self) -> str | dict: ...
@@ -0,0 +1,65 @@
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
+ import os
16
+
17
+ from typing_extensions import override
18
+
19
+ from veadk.auth.veauth.base_veauth import BaseVeAuth
20
+ from veadk.utils.logger import get_logger
21
+ from veadk.utils.volcengine_sign import ve_request
22
+
23
+ logger = get_logger(__name__)
24
+
25
+
26
+ class APMPlusVeAuth(BaseVeAuth):
27
+ def __init__(
28
+ self,
29
+ access_key: str = os.getenv("VOLCENGINE_ACCESS_KEY", ""),
30
+ secret_key: str = os.getenv("VOLCENGINE_SECRET_KEY", ""),
31
+ region: str = "cn-beijing",
32
+ ) -> None:
33
+ super().__init__(access_key, secret_key)
34
+
35
+ self.region = region
36
+
37
+ self._token: str = ""
38
+
39
+ @override
40
+ def _fetch_token(self) -> None:
41
+ logger.info("Fetching APMPlus token...")
42
+
43
+ res = ve_request(
44
+ request_body={},
45
+ action="GetAppKey",
46
+ ak=self.access_key,
47
+ sk=self.secret_key,
48
+ service="apmplus_server",
49
+ version="2024-07-30",
50
+ region=self.region,
51
+ host="open.volcengineapi.com",
52
+ # APMPlus frontend required
53
+ header={"X-Apmplus-Region": self.region.replace("-", "_")},
54
+ )
55
+ try:
56
+ self._token = res["data"]["app_key"]
57
+ except KeyError:
58
+ raise ValueError(f"Failed to get APMPlus token: {res}")
59
+
60
+ @property
61
+ def token(self) -> str:
62
+ if self._token:
63
+ return self._token
64
+ self._fetch_token()
65
+ return self._token
@@ -0,0 +1,77 @@
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
+ import os
16
+
17
+ from typing_extensions import override
18
+
19
+ from veadk.auth.veauth.base_veauth import BaseVeAuth
20
+ from veadk.utils.logger import get_logger
21
+ from veadk.utils.volcengine_sign import ve_request
22
+
23
+ logger = get_logger(__name__)
24
+
25
+
26
+ class ARKVeAuth(BaseVeAuth):
27
+ def __init__(
28
+ self,
29
+ access_key: str = os.getenv("VOLCENGINE_ACCESS_KEY", ""),
30
+ secret_key: str = os.getenv("VOLCENGINE_SECRET_KEY", ""),
31
+ ) -> None:
32
+ super().__init__(access_key, secret_key)
33
+
34
+ self._token: str = ""
35
+
36
+ @override
37
+ def _fetch_token(self) -> None:
38
+ logger.info("Fetching ARK token...")
39
+ # list api keys
40
+ first_api_key_id = ""
41
+ res = ve_request(
42
+ request_body={"ProjectName": "default", "Filter": {}},
43
+ action="ListApiKeys",
44
+ ak=self.access_key,
45
+ sk=self.secret_key,
46
+ service="ark",
47
+ version="2024-01-01",
48
+ region="cn-beijing",
49
+ host="open.volcengineapi.com",
50
+ )
51
+ try:
52
+ first_api_key_id = res["Result"]["Items"][0]["Id"]
53
+ except KeyError:
54
+ raise ValueError(f"Failed to get ARK api key list: {res}")
55
+
56
+ # get raw api key
57
+ res = ve_request(
58
+ request_body={"Id": first_api_key_id},
59
+ action="GetRawApiKey",
60
+ ak=self.access_key,
61
+ sk=self.secret_key,
62
+ service="ark",
63
+ version="2024-01-01",
64
+ region="cn-beijing",
65
+ host="open.volcengineapi.com",
66
+ )
67
+ try:
68
+ self._token = res["Result"]["ApiKey"]
69
+ except KeyError:
70
+ raise ValueError(f"Failed to get ARK api key: {res}")
71
+
72
+ @property
73
+ def token(self) -> str:
74
+ if self._token:
75
+ return self._token
76
+ self._fetch_token()
77
+ return self._token