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.
- {veadk_python-0.5.31 → veadk_python-0.5.33}/PKG-INFO +24 -3
- {veadk_python-0.5.31 → veadk_python-0.5.33}/README.md +20 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/pyproject.toml +5 -4
- {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_agent.py +27 -14
- veadk_python-0.5.33/tests/test_feishu_channel_extension.py +132 -0
- veadk_python-0.5.33/veadk/extensions/__init__.py +17 -0
- veadk_python-0.5.33/veadk/extensions/feishu_channel.py +289 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/version.py +1 -1
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk_python.egg-info/PKG-INFO +24 -3
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk_python.egg-info/SOURCES.txt +3 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk_python.egg-info/requires.txt +3 -2
- {veadk_python-0.5.31 → veadk_python-0.5.33}/LICENSE +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/setup.cfg +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_cloud.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_evaluator.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_knowledgebase.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_long_term_memory.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_misc.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_multiple_agents.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_runner.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_runtime_data_collecting.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_short_term_memory.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_tracing.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_ve_a2a_middlewares.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_ve_identity_auth_config.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_ve_identity_function_tool.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_ve_identity_mcp_tool.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/tests/test_ve_identity_mcp_toolset.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/agent_card.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/hub/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/hub/a2a_hub_client.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/hub/a2a_hub_server.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/hub/models.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/hub/rocketmq_middleware.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/remote_ve_agent.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/utils/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/utils/agent_to_a2a.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/ve_a2a_server.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/ve_agent_executor.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/ve_middlewares.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/a2a/ve_task_store.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/agent.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/agent_builder.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/agents/loop_agent.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/agents/parallel_agent.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/agents/sequential_agent.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/agents/supervise_agent.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/base_auth.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/middleware/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/middleware/oauth2_auth.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/ve_credential_service.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/apmplus_veauth.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/ark_veauth.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/base_veauth.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/cozeloop_veauth.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/mse_veauth.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/opensearch_veauth.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/postgresql_veauth.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/prompt_pilot_veauth.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/speech_veauth.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/utils.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/vesearch_veauth.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/auth/veauth/viking_mem0_veauth.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_agentkit.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_clean.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_create.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_deploy.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_eval.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_init.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_kb.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_pipeline.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_prompt.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_rl.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_update.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_uploadevalset.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/cli_web.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/README.md +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/arkworkspace.toml +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/data/demo_dataset.jsonl +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/job.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/job.yaml +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/plugins/random_reward.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/plugins/raw_async_veadk_rollout.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/plugins/test_utils.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/requirements.txt +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/ark/test_faas.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/lightning/README.md +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/lightning/data/demo_test.parquet +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/lightning/data/demo_train.parquet +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/lightning/demo_calculate_agent.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/lightning/restart_ray.sh +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cli/templates/rl/lightning/train.sh +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cloud/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cloud/cloud_agent_engine.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/cloud/cloud_app.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/checkpoint/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/checkpoint/memory/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/middlewares/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/middlewares/save_session.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/models/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/models/ark_model.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/store/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/store/memory/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/store/memory/viking_memory.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/tools/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/tools/execute_skills.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/tools/load_knowledgebase.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/tools/load_memory.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/tools/run_code.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/community/langchain_ai/tools/web_search.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/config.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/configs/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/configs/auth_configs.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/configs/database_configs.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/configs/dynamic_config_manager.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/configs/model_configs.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/configs/tool_configs.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/configs/tracing_configs.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/consts.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/adk_evaluator/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/adk_evaluator/adk_evaluator.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/base_evaluator.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/deepeval_evaluator/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/eval_set_file_loader.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/eval_set_recorder.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/types.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/evaluation/utils/prometheus.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/examples/in_memory_example_store.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/examples/types.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/flows/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/flows/supervise_auto_flow.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/flows/supervise_single_flow.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_apig/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_apig/ve_apig.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_apig/ve_apig_utils.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_code_pipeline/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_code_pipeline/ve_code_pipeline.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_cozeloop/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_cozeloop/ve_cozeloop.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_cr/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_cr/ve_cr.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/cookiecutter.json +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/agent.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
- {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
- {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
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/ve_faas.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/ve_faas_utils.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/cookiecutter.json +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {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
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/Dockerfile +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/auth_config.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/auth_mixins.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/auth_processor.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/function_tool.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/identity_client.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/mcp_tool.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/mcp_toolset.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/models.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/token_manager.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_identity/utils.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_prompt_pilot/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_prompt_pilot/ve_prompt_pilot.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_tls/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_tls/utils.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_tls/ve_tls.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_tos/ve_tos.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_viking_db_memory/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/integrations/ve_viking_db_memory/ve_viking_db_memory.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/backends/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/backends/base_backend.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/backends/context_search_backend.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/backends/in_memory_backend.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/backends/opensearch_backend.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/backends/redis_backend.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/backends/tos_vector_backend.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/backends/utils.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/backends/vikingdb_knowledge_backend.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/entry.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/knowledgebase.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/knowledgebase/types.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/long_term_memory.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/long_term_memory_backends/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/long_term_memory_backends/base_backend.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/long_term_memory_backends/in_memory_backend.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/long_term_memory_backends/mem0_backend.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/long_term_memory_backends/opensearch_backend.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/long_term_memory_backends/redis_backend.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/save_session_callback.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/short_term_memory.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/short_term_memory_backends/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/short_term_memory_backends/base_backend.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/short_term_memory_backends/mysql_backend.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/short_term_memory_backends/postgresql_backend.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/short_term_memory_backends/sqlite_backend.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/short_term_memory_processor.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/memory/types.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/models/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/models/ark_embedding.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/models/ark_llm.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/processors/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/processors/base_run_processor.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/prompts/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/prompts/agent_default_prompt.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/prompts/prompt_evaluator.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/prompts/prompt_manager.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/prompts/prompt_memory_processor.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/prompts/prompt_optimization.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/realtime/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/realtime/client.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/realtime/doubao_realtime_voice_llm.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/realtime/doubao_realtime_voice_llm_connection.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/realtime/live.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/realtime/protocol.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/reflector/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/reflector/base_reflector.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/reflector/local_reflector.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/runner.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/skills/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/skills/check_skills_callback.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/skills/skill.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/skills/utils.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/apps/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/apps/reverse_mcp/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/apps/reverse_mcp/client_with_reverse_mcp.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/apps/reverse_mcp/server_with_reverse_mcp.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/audio/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/audio/asr/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/audio/asr/asr_client.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/audio/tts/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/audio/tts/protocols.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/audio/tts/tts_client.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/toolkits/dataset_auto_gen_callback.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/agent_authorization.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/execute_skills.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/generate_image.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/image_edit.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/image_generate.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/lark.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/las.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/link_reader.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/llm_shield.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/load_kb_queries.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/load_knowledgebase.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/mcp_router.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/mobile_run.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/parallel_web_search.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/playwright.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/run_code.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/supabase_toolset.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/tts.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/vesearch.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/video_generate.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/vod.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/web_scraper.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/builtin_tools/web_search.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/demo_tools.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/ghost_char.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/load_history_events.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/load_knowledgebase_tool.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/mcp_tool/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/mcp_tool/trusted_mcp_session_manager.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/mcp_tool/trusted_mcp_toolset.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/sandbox/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/sandbox/browser_sandbox.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/sandbox/code_sandbox.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/sandbox/computer_sandbox.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/skills_tools/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/skills_tools/bash_tool.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/skills_tools/download_skills_tool.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/skills_tools/file_tool.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/skills_tools/register_skills_tool.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/skills_tools/session_path.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/skills_tools/skills_tool.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/skills_tools/skills_toolset.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/agent_memory.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/clickhouse/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/clickhouse/sql_runner.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/examples/example.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/examples/example_with_vikingdb_training.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/file_system.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/python.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/run_sql.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/summarize_data.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/vanna_toolset.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/vanna_trainer.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/vikingdb_agent_memory.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tools/vanna_tools/visualize_data.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/base_tracer.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/attributes/attributes.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/attributes/extractors/types.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/exporters/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/exporters/apmplus_exporter.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/exporters/base_exporter.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/exporters/cozeloop_exporter.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/exporters/inmemory_exporter.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/exporters/tls_exporter.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/opentelemetry_tracer.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/tracing/telemetry/telemetry.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/types.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/utils/__init__.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/utils/audio_manager.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/utils/auth.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/utils/logger.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/utils/mcp_utils.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/utils/misc.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/utils/patches.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk/utils/volcengine_sign.py +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk_python.egg-info/dependency_links.txt +0 -0
- {veadk_python-0.5.31 → veadk_python-0.5.33}/veadk_python.egg-info/entry_points.txt +0 -0
- {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.
|
|
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
|
|
212
|
+
Requires-Dist: a2a-sdk==0.3.7
|
|
213
213
|
Requires-Dist: deprecated==1.2.18
|
|
214
|
-
Requires-Dist: google-adk
|
|
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.
|
|
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
|
|
16
|
+
"a2a-sdk==0.3.7", # For Google Agent2Agent protocol
|
|
17
17
|
"deprecated==1.2.18",
|
|
18
|
-
"google-adk
|
|
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
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: veadk-python
|
|
3
|
-
Version: 0.5.
|
|
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
|
|
212
|
+
Requires-Dist: a2a-sdk==0.3.7
|
|
213
213
|
Requires-Dist: deprecated==1.2.18
|
|
214
|
-
Requires-Dist: google-adk
|
|
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:
|