veadk-python 0.5.31__tar.gz → 0.5.33__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 (357) hide show
  1. {veadk_python-0.5.31 → veadk_python-0.5.33}/PKG-INFO +24 -3
  2. {veadk_python-0.5.31 → veadk_python-0.5.33}/README.md +20 -0
  3. {veadk_python-0.5.31 → veadk_python-0.5.33}/pyproject.toml +5 -4
  4. {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_agent.py +27 -14
  5. veadk_python-0.5.33/tests/test_feishu_channel_extension.py +132 -0
  6. veadk_python-0.5.33/veadk/extensions/__init__.py +17 -0
  7. veadk_python-0.5.33/veadk/extensions/feishu_channel.py +289 -0
  8. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/version.py +1 -1
  9. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk_python.egg-info/PKG-INFO +24 -3
  10. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk_python.egg-info/SOURCES.txt +3 -0
  11. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk_python.egg-info/requires.txt +3 -2
  12. {veadk_python-0.5.31 → veadk_python-0.5.33}/LICENSE +0 -0
  13. {veadk_python-0.5.31 → veadk_python-0.5.33}/setup.cfg +0 -0
  14. {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_cloud.py +0 -0
  15. {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_evaluator.py +0 -0
  16. {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_knowledgebase.py +0 -0
  17. {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_long_term_memory.py +0 -0
  18. {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_misc.py +0 -0
  19. {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_multiple_agents.py +0 -0
  20. {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_runner.py +0 -0
  21. {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_runtime_data_collecting.py +0 -0
  22. {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_short_term_memory.py +0 -0
  23. {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_tracing.py +0 -0
  24. {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_ve_a2a_middlewares.py +0 -0
  25. {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_ve_identity_auth_config.py +0 -0
  26. {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_ve_identity_function_tool.py +0 -0
  27. {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_ve_identity_mcp_tool.py +0 -0
  28. {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_ve_identity_mcp_toolset.py +0 -0
  29. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/__init__.py +0 -0
  30. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/__init__.py +0 -0
  31. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/agent_card.py +0 -0
  32. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/hub/__init__.py +0 -0
  33. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/hub/a2a_hub_client.py +0 -0
  34. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/hub/a2a_hub_server.py +0 -0
  35. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/hub/models.py +0 -0
  36. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/hub/rocketmq_middleware.py +0 -0
  37. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/remote_ve_agent.py +0 -0
  38. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/utils/__init__.py +0 -0
  39. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/utils/agent_to_a2a.py +0 -0
  40. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/ve_a2a_server.py +0 -0
  41. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/ve_agent_executor.py +0 -0
  42. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/ve_middlewares.py +0 -0
  43. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/ve_task_store.py +0 -0
  44. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/agent.py +0 -0
  45. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/agent_builder.py +0 -0
  46. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/agents/loop_agent.py +0 -0
  47. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/agents/parallel_agent.py +0 -0
  48. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/agents/sequential_agent.py +0 -0
  49. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/agents/supervise_agent.py +0 -0
  50. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/__init__.py +0 -0
  51. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/base_auth.py +0 -0
  52. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/middleware/__init__.py +0 -0
  53. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/middleware/oauth2_auth.py +0 -0
  54. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/ve_credential_service.py +0 -0
  55. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/__init__.py +0 -0
  56. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/apmplus_veauth.py +0 -0
  57. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/ark_veauth.py +0 -0
  58. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/base_veauth.py +0 -0
  59. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/cozeloop_veauth.py +0 -0
  60. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/mse_veauth.py +0 -0
  61. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/opensearch_veauth.py +0 -0
  62. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/postgresql_veauth.py +0 -0
  63. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/prompt_pilot_veauth.py +0 -0
  64. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/speech_veauth.py +0 -0
  65. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/utils.py +0 -0
  66. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/vesearch_veauth.py +0 -0
  67. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/viking_mem0_veauth.py +0 -0
  68. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/__init__.py +0 -0
  69. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli.py +0 -0
  70. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_agentkit.py +0 -0
  71. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_clean.py +0 -0
  72. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_create.py +0 -0
  73. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_deploy.py +0 -0
  74. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_eval.py +0 -0
  75. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_init.py +0 -0
  76. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_kb.py +0 -0
  77. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_pipeline.py +0 -0
  78. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_prompt.py +0 -0
  79. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_rl.py +0 -0
  80. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_update.py +0 -0
  81. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_uploadevalset.py +0 -0
  82. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_web.py +0 -0
  83. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/README.md +0 -0
  84. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/arkworkspace.toml +0 -0
  85. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/data/demo_dataset.jsonl +0 -0
  86. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/job.py +0 -0
  87. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/job.yaml +0 -0
  88. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/plugins/random_reward.py +0 -0
  89. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/plugins/raw_async_veadk_rollout.py +0 -0
  90. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/plugins/test_utils.py +0 -0
  91. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/requirements.txt +0 -0
  92. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/test_faas.py +0 -0
  93. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/lightning/README.md +0 -0
  94. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/lightning/data/demo_test.parquet +0 -0
  95. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/lightning/data/demo_train.parquet +0 -0
  96. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/lightning/demo_calculate_agent.py +0 -0
  97. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/lightning/restart_ray.sh +0 -0
  98. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/lightning/train.sh +0 -0
  99. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cloud/__init__.py +0 -0
  100. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cloud/cloud_agent_engine.py +0 -0
  101. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cloud/cloud_app.py +0 -0
  102. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/checkpoint/__init__.py +0 -0
  103. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/checkpoint/memory/__init__.py +0 -0
  104. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/middlewares/__init__.py +0 -0
  105. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/middlewares/save_session.py +0 -0
  106. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/models/__init__.py +0 -0
  107. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/models/ark_model.py +0 -0
  108. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/store/__init__.py +0 -0
  109. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/store/memory/__init__.py +0 -0
  110. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/store/memory/viking_memory.py +0 -0
  111. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/tools/__init__.py +0 -0
  112. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/tools/execute_skills.py +0 -0
  113. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/tools/load_knowledgebase.py +0 -0
  114. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/tools/load_memory.py +0 -0
  115. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/tools/run_code.py +0 -0
  116. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/tools/web_search.py +0 -0
  117. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/config.py +0 -0
  118. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/configs/__init__.py +0 -0
  119. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/configs/auth_configs.py +0 -0
  120. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/configs/database_configs.py +0 -0
  121. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/configs/dynamic_config_manager.py +0 -0
  122. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/configs/model_configs.py +0 -0
  123. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/configs/tool_configs.py +0 -0
  124. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/configs/tracing_configs.py +0 -0
  125. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/consts.py +0 -0
  126. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/__init__.py +0 -0
  127. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/adk_evaluator/__init__.py +0 -0
  128. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/adk_evaluator/adk_evaluator.py +0 -0
  129. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/base_evaluator.py +0 -0
  130. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/deepeval_evaluator/__init__.py +0 -0
  131. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +0 -0
  132. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/eval_set_file_loader.py +0 -0
  133. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/eval_set_recorder.py +0 -0
  134. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/types.py +0 -0
  135. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/utils/prometheus.py +0 -0
  136. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/examples/in_memory_example_store.py +0 -0
  137. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/examples/types.py +0 -0
  138. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/flows/__init__.py +0 -0
  139. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/flows/supervise_auto_flow.py +0 -0
  140. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/flows/supervise_single_flow.py +0 -0
  141. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/__init__.py +0 -0
  142. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_apig/__init__.py +0 -0
  143. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_apig/ve_apig.py +0 -0
  144. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_apig/ve_apig_utils.py +0 -0
  145. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_code_pipeline/__init__.py +0 -0
  146. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_code_pipeline/ve_code_pipeline.py +0 -0
  147. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_cozeloop/__init__.py +0 -0
  148. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_cozeloop/ve_cozeloop.py +0 -0
  149. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_cr/__init__.py +0 -0
  150. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_cr/ve_cr.py +0 -0
  151. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/__init__.py +0 -0
  152. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/cookiecutter.json +0 -0
  153. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
  154. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
  155. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
  156. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
  157. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/__init__.py +0 -0
  158. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/agent.py +0 -0
  159. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
  160. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
  161. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
  162. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/__init__.py +0 -0
  163. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/agent.py +0 -0
  164. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/ve_faas.py +0 -0
  165. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/ve_faas_utils.py +0 -0
  166. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/cookiecutter.json +0 -0
  167. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
  168. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
  169. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
  170. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
  171. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/Dockerfile +0 -0
  172. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
  173. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/init_db.py +0 -0
  174. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/models.py +0 -0
  175. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
  176. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
  177. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/css/style.css +0 -0
  178. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/js/admin.js +0 -0
  179. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/dashboard.html +0 -0
  180. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/edit_post.html +0 -0
  181. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/login.html +0 -0
  182. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/posts.html +0 -0
  183. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/base.html +0 -0
  184. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/index.html +0 -0
  185. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/post.html +0 -0
  186. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/__init__.py +0 -0
  187. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/auth_config.py +0 -0
  188. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/auth_mixins.py +0 -0
  189. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/auth_processor.py +0 -0
  190. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/function_tool.py +0 -0
  191. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/identity_client.py +0 -0
  192. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/mcp_tool.py +0 -0
  193. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/mcp_toolset.py +0 -0
  194. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/models.py +0 -0
  195. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/token_manager.py +0 -0
  196. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/utils.py +0 -0
  197. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_prompt_pilot/__init__.py +0 -0
  198. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_prompt_pilot/ve_prompt_pilot.py +0 -0
  199. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_tls/__init__.py +0 -0
  200. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_tls/utils.py +0 -0
  201. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_tls/ve_tls.py +0 -0
  202. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_tos/ve_tos.py +0 -0
  203. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_viking_db_memory/__init__.py +0 -0
  204. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_viking_db_memory/ve_viking_db_memory.py +0 -0
  205. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/__init__.py +0 -0
  206. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/backends/__init__.py +0 -0
  207. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/backends/base_backend.py +0 -0
  208. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/backends/context_search_backend.py +0 -0
  209. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/backends/in_memory_backend.py +0 -0
  210. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/backends/opensearch_backend.py +0 -0
  211. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/backends/redis_backend.py +0 -0
  212. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/backends/tos_vector_backend.py +0 -0
  213. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/backends/utils.py +0 -0
  214. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/backends/vikingdb_knowledge_backend.py +0 -0
  215. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/entry.py +0 -0
  216. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/knowledgebase.py +0 -0
  217. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/types.py +0 -0
  218. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/__init__.py +0 -0
  219. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/long_term_memory.py +0 -0
  220. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/long_term_memory_backends/__init__.py +0 -0
  221. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/long_term_memory_backends/base_backend.py +0 -0
  222. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/long_term_memory_backends/in_memory_backend.py +0 -0
  223. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/long_term_memory_backends/mem0_backend.py +0 -0
  224. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/long_term_memory_backends/opensearch_backend.py +0 -0
  225. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/long_term_memory_backends/redis_backend.py +0 -0
  226. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py +0 -0
  227. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/save_session_callback.py +0 -0
  228. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/short_term_memory.py +0 -0
  229. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/short_term_memory_backends/__init__.py +0 -0
  230. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/short_term_memory_backends/base_backend.py +0 -0
  231. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/short_term_memory_backends/mysql_backend.py +0 -0
  232. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/short_term_memory_backends/postgresql_backend.py +0 -0
  233. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/short_term_memory_backends/sqlite_backend.py +0 -0
  234. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/short_term_memory_processor.py +0 -0
  235. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/types.py +0 -0
  236. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/models/__init__.py +0 -0
  237. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/models/ark_embedding.py +0 -0
  238. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/models/ark_llm.py +0 -0
  239. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/processors/__init__.py +0 -0
  240. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/processors/base_run_processor.py +0 -0
  241. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/prompts/__init__.py +0 -0
  242. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/prompts/agent_default_prompt.py +0 -0
  243. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/prompts/prompt_evaluator.py +0 -0
  244. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/prompts/prompt_manager.py +0 -0
  245. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/prompts/prompt_memory_processor.py +0 -0
  246. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/prompts/prompt_optimization.py +0 -0
  247. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/realtime/__init__.py +0 -0
  248. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/realtime/client.py +0 -0
  249. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/realtime/doubao_realtime_voice_llm.py +0 -0
  250. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/realtime/doubao_realtime_voice_llm_connection.py +0 -0
  251. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/realtime/live.py +0 -0
  252. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/realtime/protocol.py +0 -0
  253. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/reflector/__init__.py +0 -0
  254. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/reflector/base_reflector.py +0 -0
  255. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/reflector/local_reflector.py +0 -0
  256. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/runner.py +0 -0
  257. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/skills/__init__.py +0 -0
  258. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/skills/check_skills_callback.py +0 -0
  259. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/skills/skill.py +0 -0
  260. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/skills/utils.py +0 -0
  261. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/__init__.py +0 -0
  262. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/apps/__init__.py +0 -0
  263. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/apps/reverse_mcp/__init__.py +0 -0
  264. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/apps/reverse_mcp/client_with_reverse_mcp.py +0 -0
  265. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/apps/reverse_mcp/server_with_reverse_mcp.py +0 -0
  266. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/audio/__init__.py +0 -0
  267. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/audio/asr/__init__.py +0 -0
  268. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/audio/asr/asr_client.py +0 -0
  269. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/audio/tts/__init__.py +0 -0
  270. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/audio/tts/protocols.py +0 -0
  271. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/audio/tts/tts_client.py +0 -0
  272. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/dataset_auto_gen_callback.py +0 -0
  273. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/__init__.py +0 -0
  274. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/__init__.py +0 -0
  275. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/agent_authorization.py +0 -0
  276. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/execute_skills.py +0 -0
  277. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/generate_image.py +0 -0
  278. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/image_edit.py +0 -0
  279. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/image_generate.py +0 -0
  280. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/lark.py +0 -0
  281. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/las.py +0 -0
  282. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/link_reader.py +0 -0
  283. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/llm_shield.py +0 -0
  284. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/load_kb_queries.py +0 -0
  285. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/load_knowledgebase.py +0 -0
  286. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/mcp_router.py +0 -0
  287. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/mobile_run.py +0 -0
  288. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/parallel_web_search.py +0 -0
  289. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/playwright.py +0 -0
  290. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/run_code.py +0 -0
  291. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/supabase_toolset.py +0 -0
  292. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/tts.py +0 -0
  293. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/vesearch.py +0 -0
  294. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/video_generate.py +0 -0
  295. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/vod.py +0 -0
  296. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/web_scraper.py +0 -0
  297. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/web_search.py +0 -0
  298. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/demo_tools.py +0 -0
  299. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/ghost_char.py +0 -0
  300. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/load_history_events.py +0 -0
  301. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/load_knowledgebase_tool.py +0 -0
  302. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/mcp_tool/__init__.py +0 -0
  303. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/mcp_tool/trusted_mcp_session_manager.py +0 -0
  304. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/mcp_tool/trusted_mcp_toolset.py +0 -0
  305. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/sandbox/__init__.py +0 -0
  306. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/sandbox/browser_sandbox.py +0 -0
  307. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/sandbox/code_sandbox.py +0 -0
  308. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/sandbox/computer_sandbox.py +0 -0
  309. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/skills_tools/__init__.py +0 -0
  310. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/skills_tools/bash_tool.py +0 -0
  311. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/skills_tools/download_skills_tool.py +0 -0
  312. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/skills_tools/file_tool.py +0 -0
  313. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/skills_tools/register_skills_tool.py +0 -0
  314. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/skills_tools/session_path.py +0 -0
  315. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/skills_tools/skills_tool.py +0 -0
  316. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/skills_tools/skills_toolset.py +0 -0
  317. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/agent_memory.py +0 -0
  318. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/clickhouse/__init__.py +0 -0
  319. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/clickhouse/sql_runner.py +0 -0
  320. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/examples/example.py +0 -0
  321. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/examples/example_with_vikingdb_training.py +0 -0
  322. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/file_system.py +0 -0
  323. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/python.py +0 -0
  324. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/run_sql.py +0 -0
  325. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/summarize_data.py +0 -0
  326. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/vanna_toolset.py +0 -0
  327. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/vanna_trainer.py +0 -0
  328. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/vikingdb_agent_memory.py +0 -0
  329. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/visualize_data.py +0 -0
  330. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/__init__.py +0 -0
  331. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/base_tracer.py +0 -0
  332. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/__init__.py +0 -0
  333. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/attributes/attributes.py +0 -0
  334. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py +0 -0
  335. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py +0 -0
  336. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py +0 -0
  337. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/attributes/extractors/types.py +0 -0
  338. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/exporters/__init__.py +0 -0
  339. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/exporters/apmplus_exporter.py +0 -0
  340. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/exporters/base_exporter.py +0 -0
  341. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/exporters/cozeloop_exporter.py +0 -0
  342. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/exporters/inmemory_exporter.py +0 -0
  343. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/exporters/tls_exporter.py +0 -0
  344. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/opentelemetry_tracer.py +0 -0
  345. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/telemetry.py +0 -0
  346. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/types.py +0 -0
  347. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/utils/__init__.py +0 -0
  348. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/utils/audio_manager.py +0 -0
  349. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/utils/auth.py +0 -0
  350. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/utils/logger.py +0 -0
  351. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/utils/mcp_utils.py +0 -0
  352. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/utils/misc.py +0 -0
  353. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/utils/patches.py +0 -0
  354. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/utils/volcengine_sign.py +0 -0
  355. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk_python.egg-info/dependency_links.txt +0 -0
  356. {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk_python.egg-info/entry_points.txt +0 -0
  357. {veadk_python-0.5.31 → veadk_python-0.5.33}/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.5.31
3
+ Version: 0.5.33
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
@@ -209,9 +209,9 @@ Requires-Python: >=3.10
209
209
  Description-Content-Type: text/markdown
210
210
  License-File: LICENSE
211
211
  Requires-Dist: pydantic-settings==2.10.1
212
- Requires-Dist: a2a-sdk>=0.3.7
212
+ Requires-Dist: a2a-sdk==0.3.7
213
213
  Requires-Dist: deprecated==1.2.18
214
- Requires-Dist: google-adk>=1.19.0
214
+ Requires-Dist: google-adk==1.19.0
215
215
  Requires-Dist: litellm<=1.82.6,>=1.74.3
216
216
  Requires-Dist: loguru==0.7.3
217
217
  Requires-Dist: opentelemetry-exporter-otlp==1.37.0
@@ -243,6 +243,7 @@ Requires-Dist: llama-index-llms-openai-like==0.5.1; extra == "extensions"
243
243
  Requires-Dist: llama-index-vector-stores-redis>=0.6.1; extra == "extensions"
244
244
  Requires-Dist: llama-index-vector-stores-opensearch==0.6.1; extra == "extensions"
245
245
  Requires-Dist: opensearch-py==2.8.0; extra == "extensions"
246
+ Requires-Dist: lark-oapi; extra == "extensions"
246
247
  Provides-Extra: database
247
248
  Requires-Dist: redis>=5.0; extra == "database"
248
249
  Requires-Dist: pymysql>=1.1.1; extra == "database"
@@ -343,6 +344,21 @@ res = asyncio.run(agent.run("hello!"))
343
344
  print(res)
344
345
  ```
345
346
 
347
+ ## Feishu bot channel
348
+
349
+ VeADK now provides `veadk.extensions.FeishuChannelExtension` for bridging a Feishu bot with a `Runner`. It maps `union_id` to `user_id`, and `thread_id` / `chat_id` to `session_id`, so VeADK memory and tracing can work directly in Feishu conversations.
350
+
351
+ ```python
352
+ from veadk import Agent, Runner
353
+ from veadk.extensions import FeishuChannelExtension
354
+
355
+ agent = Agent()
356
+ runner = Runner(agent=agent, app_name="feishu_demo")
357
+ channel = FeishuChannelExtension(runner=runner)
358
+ ```
359
+
360
+ Configure credentials with `TOOL_FEISHU_CHANNEL_APP_ID` and `TOOL_FEISHU_CHANNEL_APP_SECRET`, or in `config.yaml` under `tool.feishu_channel`.
361
+
346
362
  ## Command line tools
347
363
 
348
364
  VeADK provides several useful command line tools for faster deployment and optimization, such as:
@@ -365,6 +381,11 @@ Before commit or push your changes, please make sure the unittests are passed ,o
365
381
  pytest -n 16
366
382
  ```
367
383
 
384
+ ## Security and privacy
385
+
386
+ This project takes security seriously.
387
+ For vulnerability reporting and supported versions, see [SECURITY.md](SECURITY.md)
388
+
368
389
  ## Contact with us
369
390
 
370
391
  Join our discussion group by scanning the QR code below:
@@ -80,6 +80,21 @@ res = asyncio.run(agent.run("hello!"))
80
80
  print(res)
81
81
  ```
82
82
 
83
+ ## Feishu bot channel
84
+
85
+ VeADK now provides `veadk.extensions.FeishuChannelExtension` for bridging a Feishu bot with a `Runner`. It maps `union_id` to `user_id`, and `thread_id` / `chat_id` to `session_id`, so VeADK memory and tracing can work directly in Feishu conversations.
86
+
87
+ ```python
88
+ from veadk import Agent, Runner
89
+ from veadk.extensions import FeishuChannelExtension
90
+
91
+ agent = Agent()
92
+ runner = Runner(agent=agent, app_name="feishu_demo")
93
+ channel = FeishuChannelExtension(runner=runner)
94
+ ```
95
+
96
+ Configure credentials with `TOOL_FEISHU_CHANNEL_APP_ID` and `TOOL_FEISHU_CHANNEL_APP_SECRET`, or in `config.yaml` under `tool.feishu_channel`.
97
+
83
98
  ## Command line tools
84
99
 
85
100
  VeADK provides several useful command line tools for faster deployment and optimization, such as:
@@ -102,6 +117,11 @@ Before commit or push your changes, please make sure the unittests are passed ,o
102
117
  pytest -n 16
103
118
  ```
104
119
 
120
+ ## Security and privacy
121
+
122
+ This project takes security seriously.
123
+ For vulnerability reporting and supported versions, see [SECURITY.md](SECURITY.md)
124
+
105
125
  ## Contact with us
106
126
 
107
127
  Join our discussion group by scanning the QR code below:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "veadk-python"
3
- version = "0.5.31"
3
+ version = "0.5.33"
4
4
  description = "Volcengine agent development kit, integrations with Volcengine cloud services."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -13,9 +13,9 @@ authors = [
13
13
  ]
14
14
  dependencies = [
15
15
  "pydantic-settings==2.10.1", # Config management
16
- "a2a-sdk>=0.3.7", # For Google Agent2Agent protocol
16
+ "a2a-sdk==0.3.7", # For Google Agent2Agent protocol
17
17
  "deprecated==1.2.18",
18
- "google-adk>=1.19.0", # For basic agent architecture
18
+ "google-adk==1.19.0", # For basic agent architecture
19
19
  "litellm>=1.74.3,<=1.82.6", # For model inference
20
20
  "loguru==0.7.3", # For better logging
21
21
  "opentelemetry-exporter-otlp==1.37.0",
@@ -53,6 +53,7 @@ extensions = [
53
53
  "llama-index-vector-stores-redis>=0.6.1", # For Redis database
54
54
  "llama-index-vector-stores-opensearch==0.6.1", # For Opensearch database
55
55
  "opensearch-py==2.8.0",
56
+ "lark-oapi",
56
57
  ]
57
58
  database = [
58
59
  "redis>=5.0", # For Redis database
@@ -97,4 +98,4 @@ include-package-data = true
97
98
  exclude = [
98
99
  "veadk/integrations/ve_faas/template/*",
99
100
  "veadk/integrations/ve_faas/web_template/*"
100
- ]
101
+ ]
@@ -13,7 +13,7 @@
13
13
  # limitations under the License.
14
14
 
15
15
  import os
16
- from unittest.mock import Mock, patch
16
+ from unittest.mock import Mock, PropertyMock, patch
17
17
 
18
18
  from google.adk.agents.llm_agent import LlmAgent
19
19
  from google.adk.models.lite_llm import LiteLlm
@@ -76,19 +76,32 @@ def test_agent():
76
76
 
77
77
  @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
78
78
  def test_agent_default_values():
79
- agent = Agent()
80
-
81
- assert agent.name == DEFAULT_AGENT_NAME
82
-
83
- assert agent.model_name == DEFAULT_MODEL_AGENT_NAME
84
- assert agent.model_provider == DEFAULT_MODEL_AGENT_PROVIDER
85
- assert agent.model_api_base == DEFAULT_MODEL_AGENT_API_BASE
86
-
87
- assert agent.tools == []
88
- assert agent.sub_agents == []
89
- assert agent.knowledgebase is None
90
- assert agent.long_term_memory is None
91
- # assert agent.tracers == []
79
+ with (
80
+ patch("veadk.agent.settings.model.name", new=DEFAULT_MODEL_AGENT_NAME),
81
+ patch("veadk.agent.settings.model.provider", new=DEFAULT_MODEL_AGENT_PROVIDER),
82
+ patch(
83
+ "veadk.agent.settings.model.api_base",
84
+ new=DEFAULT_MODEL_AGENT_API_BASE,
85
+ ),
86
+ patch(
87
+ "veadk.configs.model_configs.ModelConfig.api_key",
88
+ new_callable=PropertyMock,
89
+ return_value="mock_api_key",
90
+ ),
91
+ ):
92
+ agent = Agent()
93
+
94
+ assert agent.name == DEFAULT_AGENT_NAME
95
+
96
+ assert agent.model_name == DEFAULT_MODEL_AGENT_NAME
97
+ assert agent.model_provider == DEFAULT_MODEL_AGENT_PROVIDER
98
+ assert agent.model_api_base == DEFAULT_MODEL_AGENT_API_BASE
99
+
100
+ assert agent.tools == []
101
+ assert agent.sub_agents == []
102
+ assert agent.knowledgebase is None
103
+ assert agent.long_term_memory is None
104
+ # assert agent.tracers == []
92
105
 
93
106
 
94
107
  @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
@@ -0,0 +1,132 @@
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 types import SimpleNamespace
16
+
17
+ import pytest
18
+
19
+ from veadk.extensions.feishu_channel import FeishuChannelExtension
20
+
21
+
22
+ class FakeChannel:
23
+ def __init__(self):
24
+ self.handlers = {}
25
+ self.sent_messages = []
26
+
27
+ def on(self, event_name, handler):
28
+ self.handlers[event_name] = handler
29
+
30
+ async def send(self, chat_id, body, options=None):
31
+ self.sent_messages.append((chat_id, body, options))
32
+
33
+
34
+ class FakeRunner:
35
+ def __init__(self):
36
+ self.calls = []
37
+
38
+ async def run(self, messages, user_id="", session_id="", **kwargs):
39
+ self.calls.append(
40
+ {
41
+ "messages": messages,
42
+ "user_id": user_id,
43
+ "session_id": session_id,
44
+ }
45
+ )
46
+ return f"echo:{messages}"
47
+
48
+
49
+ def build_message(**overrides):
50
+ message = SimpleNamespace(
51
+ id="om_001",
52
+ message_id="om_001",
53
+ chat_id="oc_chat",
54
+ chat_type="p2p",
55
+ thread_id="",
56
+ reply_to_message_id="",
57
+ content_text="你好",
58
+ sender_id="ou_sender",
59
+ sender=SimpleNamespace(
60
+ union_id="on_union",
61
+ open_id="ou_sender",
62
+ user_id="u_sender",
63
+ ),
64
+ conversation=SimpleNamespace(
65
+ chat_id="oc_chat",
66
+ chat_type="p2p",
67
+ thread_id="",
68
+ ),
69
+ reply=SimpleNamespace(message_id=""),
70
+ )
71
+ for key, value in overrides.items():
72
+ setattr(message, key, value)
73
+ return message
74
+
75
+
76
+ @pytest.mark.asyncio
77
+ async def test_extension_uses_union_id_and_thread_id():
78
+ runner = FakeRunner()
79
+ channel = FakeChannel()
80
+ extension = FeishuChannelExtension(runner=runner, channel=channel)
81
+
82
+ message = build_message(
83
+ thread_id="thread_1",
84
+ conversation=SimpleNamespace(
85
+ chat_id="oc_chat",
86
+ chat_type="group",
87
+ thread_id="thread_1",
88
+ ),
89
+ )
90
+
91
+ await extension._on_message(message)
92
+
93
+ assert runner.calls == [
94
+ {
95
+ "messages": "你好",
96
+ "user_id": "on_union",
97
+ "session_id": "thread_1",
98
+ }
99
+ ]
100
+ assert channel.sent_messages == [
101
+ ("oc_chat", {"text": "echo:你好"}, {"reply_to": "om_001"})
102
+ ]
103
+
104
+
105
+ @pytest.mark.asyncio
106
+ async def test_extension_falls_back_to_chat_id_when_thread_missing():
107
+ runner = FakeRunner()
108
+ channel = FakeChannel()
109
+ extension = FeishuChannelExtension(runner=runner, channel=channel)
110
+
111
+ message = build_message(
112
+ sender=SimpleNamespace(union_id="", open_id="ou_fallback", user_id="u_sender")
113
+ )
114
+
115
+ await extension._on_message(message)
116
+
117
+ assert runner.calls[0]["user_id"] == "ou_fallback"
118
+ assert runner.calls[0]["session_id"] == "oc_chat"
119
+
120
+
121
+ @pytest.mark.asyncio
122
+ async def test_extension_ignores_empty_message_by_default():
123
+ runner = FakeRunner()
124
+ channel = FakeChannel()
125
+ extension = FeishuChannelExtension(runner=runner, channel=channel)
126
+
127
+ message = build_message(content_text=" ")
128
+
129
+ await extension._on_message(message)
130
+
131
+ assert runner.calls == []
132
+ assert channel.sent_messages == []
@@ -0,0 +1,17 @@
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 veadk.extensions.feishu_channel import FeishuChannelExtension
16
+
17
+ __all__ = ["FeishuChannelExtension"]
@@ -0,0 +1,289 @@
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 inspect
16
+ import os
17
+ from dataclasses import dataclass
18
+ from typing import TYPE_CHECKING, Any, Awaitable, Callable
19
+
20
+ from veadk.utils.logger import get_logger
21
+
22
+ if TYPE_CHECKING:
23
+ from veadk.runner import Runner
24
+
25
+ logger = get_logger(__name__)
26
+
27
+ MessageHandler = Callable[["FeishuMessageContext"], Awaitable[str | None] | str | None]
28
+ SessionIdFactory = Callable[[Any], str]
29
+ UserIdFactory = Callable[[Any], str]
30
+
31
+
32
+ def _coalesce(*values: Any) -> str:
33
+ for value in values:
34
+ if value:
35
+ return str(value)
36
+ return ""
37
+
38
+
39
+ def _read_attr(obj: Any, *path: str) -> Any:
40
+ current = obj
41
+ for key in path:
42
+ if current is None:
43
+ return None
44
+ current = getattr(current, key, None)
45
+ return current
46
+
47
+
48
+ @dataclass(slots=True)
49
+ class FeishuMessageContext:
50
+ message_id: str
51
+ chat_id: str
52
+ chat_type: str
53
+ thread_id: str
54
+ reply_to_message_id: str
55
+ user_id: str
56
+ session_id: str
57
+ union_id: str
58
+ open_id: str
59
+ raw_message: Any
60
+ text: str
61
+
62
+
63
+ class FeishuChannelExtension:
64
+ """Bridge a Feishu bot channel with a VeADK runner.
65
+
66
+ The extension subscribes to normalized ``message`` events from
67
+ ``lark_oapi.channel.FeishuChannel`` and forwards the incoming text to a VeADK
68
+ ``Runner``. It maps Feishu sender identity to VeADK ``user_id`` and Feishu
69
+ conversation/thread identity to VeADK ``session_id`` so existing short-term
70
+ memory, long-term memory and tracing continue to work without changes.
71
+ """
72
+
73
+ def __init__(
74
+ self,
75
+ runner: "Runner",
76
+ *,
77
+ app_id: str | None = None,
78
+ app_secret: str | None = None,
79
+ channel: Any | None = None,
80
+ session_id_factory: SessionIdFactory | None = None,
81
+ user_id_factory: UserIdFactory | None = None,
82
+ message_handler: MessageHandler | None = None,
83
+ response_formatter: Callable[[str], dict[str, str]] | None = None,
84
+ reply_in_thread: bool = True,
85
+ ignore_empty_messages: bool = True,
86
+ channel_kwargs: dict[str, Any] | None = None,
87
+ ) -> None:
88
+ self.runner = runner
89
+ self.session_id_factory = session_id_factory or self.default_session_id_factory
90
+ self.user_id_factory = user_id_factory or self.default_user_id_factory
91
+ self.message_handler = message_handler
92
+ self.response_formatter = response_formatter or self.default_response_formatter
93
+ self.reply_in_thread = reply_in_thread
94
+ self.ignore_empty_messages = ignore_empty_messages
95
+
96
+ if channel is not None:
97
+ self.channel = channel
98
+ else:
99
+ self.channel = self._build_channel(
100
+ app_id=app_id,
101
+ app_secret=app_secret,
102
+ channel_kwargs=channel_kwargs,
103
+ )
104
+
105
+ self.channel.on("message", self._on_message)
106
+
107
+ @staticmethod
108
+ def default_user_id_factory(message: Any) -> str:
109
+ sender = _read_attr(message, "sender")
110
+ user_id = _coalesce(
111
+ getattr(sender, "union_id", None),
112
+ getattr(sender, "open_id", None),
113
+ getattr(sender, "user_id", None),
114
+ getattr(message, "sender_id", None),
115
+ )
116
+ if user_id:
117
+ return user_id
118
+ raise ValueError("Cannot resolve Feishu sender identity into a VeADK user_id.")
119
+
120
+ @staticmethod
121
+ def default_session_id_factory(message: Any) -> str:
122
+ thread_id = _coalesce(
123
+ _read_attr(message, "conversation", "thread_id"),
124
+ getattr(message, "thread_id", None),
125
+ getattr(message, "reply_to_message_id", None),
126
+ )
127
+ chat_id = _coalesce(
128
+ getattr(message, "chat_id", None),
129
+ _read_attr(message, "conversation", "chat_id"),
130
+ )
131
+ return thread_id or chat_id or getattr(message, "message_id", "")
132
+
133
+ @staticmethod
134
+ def default_response_formatter(text: str) -> dict[str, str]:
135
+ return {"text": text}
136
+
137
+ async def connect(self) -> Any:
138
+ return await self._maybe_await(self.channel.connect())
139
+
140
+ async def disconnect(self) -> Any:
141
+ disconnect = getattr(self.channel, "disconnect", None)
142
+ if disconnect is None:
143
+ return None
144
+ result = disconnect()
145
+ if inspect.isawaitable(result):
146
+ return await result
147
+ return result
148
+
149
+ async def handle_webhook_request(
150
+ self, headers: dict[str, str], body: bytes | str
151
+ ) -> Any:
152
+ handler = getattr(self.channel, "handle_webhook_request", None)
153
+ if handler is None:
154
+ raise AttributeError("Current channel does not support webhook requests.")
155
+ result = handler(headers, body)
156
+ if inspect.isawaitable(result):
157
+ return await result
158
+ return result
159
+
160
+ async def _on_message(self, message: Any) -> None:
161
+ text = str(getattr(message, "content_text", "") or "").strip()
162
+ if self.ignore_empty_messages and not text:
163
+ logger.debug(
164
+ f"Ignore empty Feishu message: {getattr(message, 'message_id', '')}"
165
+ )
166
+ return
167
+
168
+ context = self.build_message_context(message=message, text=text)
169
+
170
+ if self.message_handler is not None:
171
+ response_text = await self._maybe_await(self.message_handler(context))
172
+ else:
173
+ response_text = await self.runner.run(
174
+ messages=context.text,
175
+ user_id=context.user_id,
176
+ session_id=context.session_id,
177
+ )
178
+
179
+ if not response_text:
180
+ return
181
+
182
+ send_options = {}
183
+ if self.reply_in_thread and context.message_id:
184
+ send_options["reply_to"] = context.message_id
185
+
186
+ await self._maybe_await(
187
+ self.channel.send(
188
+ context.chat_id,
189
+ self.response_formatter(str(response_text)),
190
+ send_options,
191
+ )
192
+ )
193
+
194
+ def build_message_context(
195
+ self, message: Any, text: str | None = None
196
+ ) -> FeishuMessageContext:
197
+ user_id = self.user_id_factory(message)
198
+ session_id = self.session_id_factory(message)
199
+ message_id = _coalesce(
200
+ getattr(message, "message_id", None),
201
+ getattr(message, "id", None),
202
+ )
203
+ chat_id = _coalesce(
204
+ getattr(message, "chat_id", None),
205
+ _read_attr(message, "conversation", "chat_id"),
206
+ )
207
+ chat_type = _coalesce(
208
+ getattr(message, "chat_type", None),
209
+ _read_attr(message, "conversation", "chat_type"),
210
+ )
211
+ thread_id = _coalesce(
212
+ getattr(message, "thread_id", None),
213
+ _read_attr(message, "conversation", "thread_id"),
214
+ )
215
+ reply_to_message_id = _coalesce(
216
+ getattr(message, "reply_to_message_id", None),
217
+ _read_attr(message, "reply", "message_id"),
218
+ )
219
+ union_id = _coalesce(_read_attr(message, "sender", "union_id"))
220
+ open_id = _coalesce(
221
+ _read_attr(message, "sender", "open_id"),
222
+ getattr(message, "sender_id", None),
223
+ )
224
+
225
+ return FeishuMessageContext(
226
+ message_id=message_id,
227
+ chat_id=chat_id,
228
+ chat_type=chat_type,
229
+ thread_id=thread_id,
230
+ reply_to_message_id=reply_to_message_id,
231
+ user_id=user_id,
232
+ session_id=session_id,
233
+ union_id=union_id,
234
+ open_id=open_id,
235
+ raw_message=message,
236
+ text=text
237
+ if text is not None
238
+ else str(getattr(message, "content_text", "") or ""),
239
+ )
240
+
241
+ def _build_channel(
242
+ self,
243
+ *,
244
+ app_id: str | None,
245
+ app_secret: str | None,
246
+ channel_kwargs: dict[str, Any] | None,
247
+ ) -> Any:
248
+ try:
249
+ from lark_oapi.channel import FeishuChannel
250
+ except ImportError as exc:
251
+ raise ImportError(
252
+ "Feishu channel extension requires `lark-oapi`. "
253
+ "Install `veadk-python[extensions]` or `pip install lark-oapi`."
254
+ ) from exc
255
+
256
+ resolved_app_id = (
257
+ app_id
258
+ or os.getenv("TOOL_FEISHU_CHANNEL_APP_ID")
259
+ or os.getenv("TOOL_LARK_ENDPOINT")
260
+ )
261
+ resolved_app_secret = (
262
+ app_secret
263
+ or os.getenv("TOOL_FEISHU_CHANNEL_APP_SECRET")
264
+ or os.getenv("TOOL_LARK_API_KEY")
265
+ )
266
+
267
+ if not resolved_app_id or not resolved_app_secret:
268
+ raise ValueError(
269
+ "Missing Feishu app credentials. Set `app_id` / `app_secret` or configure "
270
+ "`TOOL_FEISHU_CHANNEL_APP_ID` / `TOOL_FEISHU_CHANNEL_APP_SECRET` "
271
+ "(compatible fallback: `TOOL_LARK_ENDPOINT` / `TOOL_LARK_API_KEY`)."
272
+ )
273
+
274
+ resolved_channel_kwargs = dict(channel_kwargs or {})
275
+ resolved_channel_kwargs.setdefault(
276
+ "transport", os.getenv("TOOL_FEISHU_CHANNEL_TRANSPORT", "ws")
277
+ )
278
+
279
+ return FeishuChannel(
280
+ app_id=resolved_app_id,
281
+ app_secret=resolved_app_secret,
282
+ **resolved_channel_kwargs,
283
+ )
284
+
285
+ @staticmethod
286
+ async def _maybe_await(value: Any) -> Any:
287
+ if inspect.isawaitable(value):
288
+ return await value
289
+ return value
@@ -12,4 +12,4 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- VERSION = "0.5.31"
15
+ VERSION = "0.5.33"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: veadk-python
3
- Version: 0.5.31
3
+ Version: 0.5.33
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
@@ -209,9 +209,9 @@ Requires-Python: >=3.10
209
209
  Description-Content-Type: text/markdown
210
210
  License-File: LICENSE
211
211
  Requires-Dist: pydantic-settings==2.10.1
212
- Requires-Dist: a2a-sdk>=0.3.7
212
+ Requires-Dist: a2a-sdk==0.3.7
213
213
  Requires-Dist: deprecated==1.2.18
214
- Requires-Dist: google-adk>=1.19.0
214
+ Requires-Dist: google-adk==1.19.0
215
215
  Requires-Dist: litellm<=1.82.6,>=1.74.3
216
216
  Requires-Dist: loguru==0.7.3
217
217
  Requires-Dist: opentelemetry-exporter-otlp==1.37.0
@@ -243,6 +243,7 @@ Requires-Dist: llama-index-llms-openai-like==0.5.1; extra == "extensions"
243
243
  Requires-Dist: llama-index-vector-stores-redis>=0.6.1; extra == "extensions"
244
244
  Requires-Dist: llama-index-vector-stores-opensearch==0.6.1; extra == "extensions"
245
245
  Requires-Dist: opensearch-py==2.8.0; extra == "extensions"
246
+ Requires-Dist: lark-oapi; extra == "extensions"
246
247
  Provides-Extra: database
247
248
  Requires-Dist: redis>=5.0; extra == "database"
248
249
  Requires-Dist: pymysql>=1.1.1; extra == "database"
@@ -343,6 +344,21 @@ res = asyncio.run(agent.run("hello!"))
343
344
  print(res)
344
345
  ```
345
346
 
347
+ ## Feishu bot channel
348
+
349
+ VeADK now provides `veadk.extensions.FeishuChannelExtension` for bridging a Feishu bot with a `Runner`. It maps `union_id` to `user_id`, and `thread_id` / `chat_id` to `session_id`, so VeADK memory and tracing can work directly in Feishu conversations.
350
+
351
+ ```python
352
+ from veadk import Agent, Runner
353
+ from veadk.extensions import FeishuChannelExtension
354
+
355
+ agent = Agent()
356
+ runner = Runner(agent=agent, app_name="feishu_demo")
357
+ channel = FeishuChannelExtension(runner=runner)
358
+ ```
359
+
360
+ Configure credentials with `TOOL_FEISHU_CHANNEL_APP_ID` and `TOOL_FEISHU_CHANNEL_APP_SECRET`, or in `config.yaml` under `tool.feishu_channel`.
361
+
346
362
  ## Command line tools
347
363
 
348
364
  VeADK provides several useful command line tools for faster deployment and optimization, such as:
@@ -365,6 +381,11 @@ Before commit or push your changes, please make sure the unittests are passed ,o
365
381
  pytest -n 16
366
382
  ```
367
383
 
384
+ ## Security and privacy
385
+
386
+ This project takes security seriously.
387
+ For vulnerability reporting and supported versions, see [SECURITY.md](SECURITY.md)
388
+
368
389
  ## Contact with us
369
390
 
370
391
  Join our discussion group by scanning the QR code below: