veadk-python 0.5.33__tar.gz → 0.5.34__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.33 → veadk_python-0.5.34}/PKG-INFO +1 -1
- {veadk_python-0.5.33 → veadk_python-0.5.34}/pyproject.toml +1 -1
- {veadk_python-0.5.33 → veadk_python-0.5.34}/tests/test_feishu_channel_extension.py +90 -3
- veadk_python-0.5.34/veadk/community/langchain_ai/tools/execute_skills.py +100 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/community/langchain_ai/tools/run_code.py +13 -56
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/extensions/feishu_channel.py +113 -12
- veadk_python-0.5.34/veadk/tools/builtin_tools/_agentkit.py +155 -0
- veadk_python-0.5.34/veadk/tools/builtin_tools/coding.py +33 -0
- veadk_python-0.5.34/veadk/tools/builtin_tools/execute_skills.py +57 -0
- veadk_python-0.5.34/veadk/tools/builtin_tools/run_code.py +73 -0
- veadk_python-0.5.33/veadk/community/langchain_ai/tools/execute_skills.py → veadk_python-0.5.34/veadk/tools/builtin_tools/run_sandbox_agent.py +82 -120
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/version.py +1 -1
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk_python.egg-info/PKG-INFO +1 -1
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk_python.egg-info/SOURCES.txt +3 -0
- veadk_python-0.5.33/veadk/tools/builtin_tools/execute_skills.py +0 -267
- veadk_python-0.5.33/veadk/tools/builtin_tools/run_code.py +0 -127
- {veadk_python-0.5.33 → veadk_python-0.5.34}/LICENSE +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/README.md +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/setup.cfg +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/tests/test_agent.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/tests/test_cloud.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/tests/test_evaluator.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/tests/test_knowledgebase.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/tests/test_long_term_memory.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/tests/test_misc.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/tests/test_multiple_agents.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/tests/test_runner.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/tests/test_runtime_data_collecting.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/tests/test_short_term_memory.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/tests/test_tracing.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/tests/test_ve_a2a_middlewares.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/tests/test_ve_identity_auth_config.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/tests/test_ve_identity_function_tool.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/tests/test_ve_identity_mcp_tool.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/tests/test_ve_identity_mcp_toolset.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/a2a/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/a2a/agent_card.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/a2a/hub/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/a2a/hub/a2a_hub_client.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/a2a/hub/a2a_hub_server.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/a2a/hub/models.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/a2a/hub/rocketmq_middleware.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/a2a/remote_ve_agent.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/a2a/utils/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/a2a/utils/agent_to_a2a.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/a2a/ve_a2a_server.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/a2a/ve_agent_executor.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/a2a/ve_middlewares.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/a2a/ve_task_store.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/agent.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/agent_builder.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/agents/loop_agent.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/agents/parallel_agent.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/agents/sequential_agent.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/agents/supervise_agent.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/auth/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/auth/base_auth.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/auth/middleware/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/auth/middleware/oauth2_auth.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/auth/ve_credential_service.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/auth/veauth/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/auth/veauth/apmplus_veauth.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/auth/veauth/ark_veauth.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/auth/veauth/base_veauth.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/auth/veauth/cozeloop_veauth.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/auth/veauth/mse_veauth.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/auth/veauth/opensearch_veauth.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/auth/veauth/postgresql_veauth.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/auth/veauth/prompt_pilot_veauth.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/auth/veauth/speech_veauth.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/auth/veauth/utils.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/auth/veauth/vesearch_veauth.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/auth/veauth/viking_mem0_veauth.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/cli.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/cli_agentkit.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/cli_clean.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/cli_create.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/cli_deploy.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/cli_eval.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/cli_init.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/cli_kb.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/cli_pipeline.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/cli_prompt.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/cli_rl.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/cli_update.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/cli_uploadevalset.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/cli_web.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/templates/rl/ark/README.md +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/templates/rl/ark/arkworkspace.toml +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/templates/rl/ark/data/demo_dataset.jsonl +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/templates/rl/ark/job.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/templates/rl/ark/job.yaml +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/templates/rl/ark/plugins/random_reward.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/templates/rl/ark/plugins/raw_async_veadk_rollout.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/templates/rl/ark/plugins/test_utils.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/templates/rl/ark/requirements.txt +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/templates/rl/ark/test_faas.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/templates/rl/lightning/README.md +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/templates/rl/lightning/data/demo_test.parquet +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/templates/rl/lightning/data/demo_train.parquet +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/templates/rl/lightning/demo_calculate_agent.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/templates/rl/lightning/restart_ray.sh +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cli/templates/rl/lightning/train.sh +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cloud/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cloud/cloud_agent_engine.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/cloud/cloud_app.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/community/langchain_ai/checkpoint/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/community/langchain_ai/checkpoint/memory/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/community/langchain_ai/middlewares/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/community/langchain_ai/middlewares/save_session.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/community/langchain_ai/models/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/community/langchain_ai/models/ark_model.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/community/langchain_ai/store/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/community/langchain_ai/store/memory/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/community/langchain_ai/store/memory/viking_memory.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/community/langchain_ai/tools/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/community/langchain_ai/tools/load_knowledgebase.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/community/langchain_ai/tools/load_memory.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/community/langchain_ai/tools/web_search.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/config.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/configs/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/configs/auth_configs.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/configs/database_configs.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/configs/dynamic_config_manager.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/configs/model_configs.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/configs/tool_configs.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/configs/tracing_configs.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/consts.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/evaluation/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/evaluation/adk_evaluator/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/evaluation/adk_evaluator/adk_evaluator.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/evaluation/base_evaluator.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/evaluation/deepeval_evaluator/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/evaluation/eval_set_file_loader.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/evaluation/eval_set_recorder.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/evaluation/types.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/evaluation/utils/prometheus.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/examples/in_memory_example_store.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/examples/types.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/extensions/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/flows/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/flows/supervise_auto_flow.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/flows/supervise_single_flow.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_apig/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_apig/ve_apig.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_apig/ve_apig_utils.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_code_pipeline/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_code_pipeline/ve_code_pipeline.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_cozeloop/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_cozeloop/ve_cozeloop.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_cr/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_cr/ve_cr.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/template/cookiecutter.json +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/agent.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/agent.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/ve_faas.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/ve_faas_utils.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/cookiecutter.json +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/Dockerfile +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/init_db.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/models.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/css/style.css +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/js/admin.js +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/dashboard.html +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/edit_post.html +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/login.html +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/posts.html +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/base.html +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/index.html +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/post.html +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_identity/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_identity/auth_config.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_identity/auth_mixins.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_identity/auth_processor.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_identity/function_tool.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_identity/identity_client.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_identity/mcp_tool.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_identity/mcp_toolset.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_identity/models.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_identity/token_manager.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_identity/utils.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_prompt_pilot/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_prompt_pilot/ve_prompt_pilot.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_tls/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_tls/utils.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_tls/ve_tls.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_tos/ve_tos.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_viking_db_memory/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/integrations/ve_viking_db_memory/ve_viking_db_memory.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/knowledgebase/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/knowledgebase/backends/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/knowledgebase/backends/base_backend.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/knowledgebase/backends/context_search_backend.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/knowledgebase/backends/in_memory_backend.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/knowledgebase/backends/opensearch_backend.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/knowledgebase/backends/redis_backend.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/knowledgebase/backends/tos_vector_backend.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/knowledgebase/backends/utils.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/knowledgebase/backends/vikingdb_knowledge_backend.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/knowledgebase/entry.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/knowledgebase/knowledgebase.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/knowledgebase/types.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/memory/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/memory/long_term_memory.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/memory/long_term_memory_backends/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/memory/long_term_memory_backends/base_backend.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/memory/long_term_memory_backends/in_memory_backend.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/memory/long_term_memory_backends/mem0_backend.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/memory/long_term_memory_backends/opensearch_backend.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/memory/long_term_memory_backends/redis_backend.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/memory/save_session_callback.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/memory/short_term_memory.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/memory/short_term_memory_backends/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/memory/short_term_memory_backends/base_backend.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/memory/short_term_memory_backends/mysql_backend.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/memory/short_term_memory_backends/postgresql_backend.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/memory/short_term_memory_backends/sqlite_backend.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/memory/short_term_memory_processor.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/memory/types.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/models/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/models/ark_embedding.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/models/ark_llm.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/processors/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/processors/base_run_processor.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/prompts/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/prompts/agent_default_prompt.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/prompts/prompt_evaluator.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/prompts/prompt_manager.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/prompts/prompt_memory_processor.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/prompts/prompt_optimization.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/realtime/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/realtime/client.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/realtime/doubao_realtime_voice_llm.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/realtime/doubao_realtime_voice_llm_connection.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/realtime/live.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/realtime/protocol.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/reflector/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/reflector/base_reflector.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/reflector/local_reflector.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/runner.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/skills/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/skills/check_skills_callback.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/skills/skill.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/skills/utils.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/toolkits/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/toolkits/apps/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/toolkits/apps/reverse_mcp/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/toolkits/apps/reverse_mcp/client_with_reverse_mcp.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/toolkits/apps/reverse_mcp/server_with_reverse_mcp.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/toolkits/audio/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/toolkits/audio/asr/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/toolkits/audio/asr/asr_client.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/toolkits/audio/tts/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/toolkits/audio/tts/protocols.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/toolkits/audio/tts/tts_client.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/toolkits/dataset_auto_gen_callback.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/agent_authorization.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/generate_image.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/image_edit.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/image_generate.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/lark.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/las.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/link_reader.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/llm_shield.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/load_kb_queries.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/load_knowledgebase.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/mcp_router.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/mobile_run.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/parallel_web_search.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/playwright.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/supabase_toolset.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/tts.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/vesearch.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/video_generate.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/vod.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/web_scraper.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/builtin_tools/web_search.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/demo_tools.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/ghost_char.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/load_history_events.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/load_knowledgebase_tool.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/mcp_tool/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/mcp_tool/trusted_mcp_session_manager.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/mcp_tool/trusted_mcp_toolset.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/sandbox/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/sandbox/browser_sandbox.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/sandbox/code_sandbox.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/sandbox/computer_sandbox.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/skills_tools/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/skills_tools/bash_tool.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/skills_tools/download_skills_tool.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/skills_tools/file_tool.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/skills_tools/register_skills_tool.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/skills_tools/session_path.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/skills_tools/skills_tool.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/skills_tools/skills_toolset.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/vanna_tools/agent_memory.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/vanna_tools/clickhouse/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/vanna_tools/clickhouse/sql_runner.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/vanna_tools/examples/example.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/vanna_tools/examples/example_with_vikingdb_training.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/vanna_tools/file_system.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/vanna_tools/python.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/vanna_tools/run_sql.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/vanna_tools/summarize_data.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/vanna_tools/vanna_toolset.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/vanna_tools/vanna_trainer.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/vanna_tools/vikingdb_agent_memory.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tools/vanna_tools/visualize_data.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tracing/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tracing/base_tracer.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tracing/telemetry/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tracing/telemetry/attributes/attributes.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tracing/telemetry/attributes/extractors/types.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tracing/telemetry/exporters/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tracing/telemetry/exporters/apmplus_exporter.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tracing/telemetry/exporters/base_exporter.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tracing/telemetry/exporters/cozeloop_exporter.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tracing/telemetry/exporters/inmemory_exporter.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tracing/telemetry/exporters/tls_exporter.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tracing/telemetry/opentelemetry_tracer.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/tracing/telemetry/telemetry.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/types.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/utils/__init__.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/utils/audio_manager.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/utils/auth.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/utils/logger.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/utils/mcp_utils.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/utils/misc.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/utils/patches.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk/utils/volcengine_sign.py +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk_python.egg-info/dependency_links.txt +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk_python.egg-info/entry_points.txt +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/veadk_python.egg-info/requires.txt +0 -0
- {veadk_python-0.5.33 → veadk_python-0.5.34}/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.34
|
|
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
|
|
@@ -19,6 +19,11 @@ import pytest
|
|
|
19
19
|
from veadk.extensions.feishu_channel import FeishuChannelExtension
|
|
20
20
|
|
|
21
21
|
|
|
22
|
+
@pytest.fixture
|
|
23
|
+
def anyio_backend():
|
|
24
|
+
return "asyncio"
|
|
25
|
+
|
|
26
|
+
|
|
22
27
|
class FakeChannel:
|
|
23
28
|
def __init__(self):
|
|
24
29
|
self.handlers = {}
|
|
@@ -31,6 +36,25 @@ class FakeChannel:
|
|
|
31
36
|
self.sent_messages.append((chat_id, body, options))
|
|
32
37
|
|
|
33
38
|
|
|
39
|
+
class FakeStreamController:
|
|
40
|
+
def __init__(self):
|
|
41
|
+
self.chunks = []
|
|
42
|
+
|
|
43
|
+
async def append(self, chunk):
|
|
44
|
+
self.chunks.append(chunk)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class FakeStreamChannel(FakeChannel):
|
|
48
|
+
def __init__(self):
|
|
49
|
+
super().__init__()
|
|
50
|
+
self.stream_calls = []
|
|
51
|
+
|
|
52
|
+
async def stream(self, chat_id, spec, options=None):
|
|
53
|
+
controller = FakeStreamController()
|
|
54
|
+
await spec["markdown"](controller)
|
|
55
|
+
self.stream_calls.append((chat_id, controller.chunks, options))
|
|
56
|
+
|
|
57
|
+
|
|
34
58
|
class FakeRunner:
|
|
35
59
|
def __init__(self):
|
|
36
60
|
self.calls = []
|
|
@@ -46,6 +70,46 @@ class FakeRunner:
|
|
|
46
70
|
return f"echo:{messages}"
|
|
47
71
|
|
|
48
72
|
|
|
73
|
+
class FakeStreamingMemory:
|
|
74
|
+
def __init__(self):
|
|
75
|
+
self.sessions = []
|
|
76
|
+
self.session_service = object()
|
|
77
|
+
|
|
78
|
+
async def create_session(self, app_name, user_id, session_id):
|
|
79
|
+
self.sessions.append(
|
|
80
|
+
{"app_name": app_name, "user_id": user_id, "session_id": session_id}
|
|
81
|
+
)
|
|
82
|
+
return True
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
class FakeStreamingRunner:
|
|
86
|
+
def __init__(self):
|
|
87
|
+
self.app_name = "stream_app"
|
|
88
|
+
self.short_term_memory = FakeStreamingMemory()
|
|
89
|
+
self.run_async_calls = []
|
|
90
|
+
|
|
91
|
+
async def run_async(self, user_id, session_id, new_message, run_config=None):
|
|
92
|
+
self.run_async_calls.append(
|
|
93
|
+
{
|
|
94
|
+
"user_id": user_id,
|
|
95
|
+
"session_id": session_id,
|
|
96
|
+
"new_message": new_message,
|
|
97
|
+
"run_config": run_config,
|
|
98
|
+
}
|
|
99
|
+
)
|
|
100
|
+
yield SimpleNamespace(
|
|
101
|
+
content=SimpleNamespace(
|
|
102
|
+
parts=[
|
|
103
|
+
SimpleNamespace(text="hel", thought=False),
|
|
104
|
+
SimpleNamespace(text="thinking", thought=True),
|
|
105
|
+
]
|
|
106
|
+
)
|
|
107
|
+
)
|
|
108
|
+
yield SimpleNamespace(
|
|
109
|
+
content=SimpleNamespace(parts=[SimpleNamespace(text="lo", thought=False)])
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
|
|
49
113
|
def build_message(**overrides):
|
|
50
114
|
message = SimpleNamespace(
|
|
51
115
|
id="om_001",
|
|
@@ -73,7 +137,7 @@ def build_message(**overrides):
|
|
|
73
137
|
return message
|
|
74
138
|
|
|
75
139
|
|
|
76
|
-
@pytest.mark.
|
|
140
|
+
@pytest.mark.anyio
|
|
77
141
|
async def test_extension_uses_union_id_and_thread_id():
|
|
78
142
|
runner = FakeRunner()
|
|
79
143
|
channel = FakeChannel()
|
|
@@ -102,7 +166,7 @@ async def test_extension_uses_union_id_and_thread_id():
|
|
|
102
166
|
]
|
|
103
167
|
|
|
104
168
|
|
|
105
|
-
@pytest.mark.
|
|
169
|
+
@pytest.mark.anyio
|
|
106
170
|
async def test_extension_falls_back_to_chat_id_when_thread_missing():
|
|
107
171
|
runner = FakeRunner()
|
|
108
172
|
channel = FakeChannel()
|
|
@@ -118,7 +182,7 @@ async def test_extension_falls_back_to_chat_id_when_thread_missing():
|
|
|
118
182
|
assert runner.calls[0]["session_id"] == "oc_chat"
|
|
119
183
|
|
|
120
184
|
|
|
121
|
-
@pytest.mark.
|
|
185
|
+
@pytest.mark.anyio
|
|
122
186
|
async def test_extension_ignores_empty_message_by_default():
|
|
123
187
|
runner = FakeRunner()
|
|
124
188
|
channel = FakeChannel()
|
|
@@ -130,3 +194,26 @@ async def test_extension_ignores_empty_message_by_default():
|
|
|
130
194
|
|
|
131
195
|
assert runner.calls == []
|
|
132
196
|
assert channel.sent_messages == []
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
@pytest.mark.anyio
|
|
200
|
+
async def test_extension_streaming_uses_markdown_producer_controller():
|
|
201
|
+
runner = FakeStreamingRunner()
|
|
202
|
+
channel = FakeStreamChannel()
|
|
203
|
+
extension = FeishuChannelExtension(
|
|
204
|
+
runner=runner,
|
|
205
|
+
channel=channel,
|
|
206
|
+
streaming=True,
|
|
207
|
+
)
|
|
208
|
+
|
|
209
|
+
await extension._on_message(build_message())
|
|
210
|
+
|
|
211
|
+
assert runner.short_term_memory.sessions == [
|
|
212
|
+
{
|
|
213
|
+
"app_name": "stream_app",
|
|
214
|
+
"user_id": "on_union",
|
|
215
|
+
"session_id": "oc_chat",
|
|
216
|
+
}
|
|
217
|
+
]
|
|
218
|
+
assert len(runner.run_async_calls) == 1
|
|
219
|
+
assert channel.stream_calls == [("oc_chat", ["hel", "lo"], {"reply_to": "om_001"})]
|
|
@@ -0,0 +1,100 @@
|
|
|
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 typing import List, Optional
|
|
16
|
+
|
|
17
|
+
from langchain.tools import ToolRuntime, tool
|
|
18
|
+
|
|
19
|
+
from veadk.tools.builtin_tools._agentkit import (
|
|
20
|
+
get_agentkit_account_id,
|
|
21
|
+
resolve_agentkit_tool_id,
|
|
22
|
+
)
|
|
23
|
+
from veadk.tools.builtin_tools.run_sandbox_agent import (
|
|
24
|
+
_format_execution_result,
|
|
25
|
+
_build_agent_command,
|
|
26
|
+
_build_agent_runner_code,
|
|
27
|
+
)
|
|
28
|
+
from veadk.utils.logger import get_logger
|
|
29
|
+
from veadk.tools.builtin_tools._agentkit import (
|
|
30
|
+
get_agentkit_endpoint_config,
|
|
31
|
+
invoke_agentkit_run_code,
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
logger = get_logger(__name__)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@tool
|
|
38
|
+
def execute_skills(
|
|
39
|
+
workflow_prompt: str,
|
|
40
|
+
runtime: ToolRuntime,
|
|
41
|
+
skills: Optional[List[str]] = None,
|
|
42
|
+
timeout: int = 900,
|
|
43
|
+
) -> str:
|
|
44
|
+
"""execute skills in a code sandbox and return the output.
|
|
45
|
+
For C++ code, don't execute it directly, compile and execute via Python; write sources and object files to /tmp.
|
|
46
|
+
|
|
47
|
+
Args:
|
|
48
|
+
workflow_prompt (str): instruction of workflow
|
|
49
|
+
skills (Optional[List[str]]): The skills will be invoked
|
|
50
|
+
timeout (int, optional): The timeout in seconds for the code execution, less than or equal to 900. Defaults to 900.
|
|
51
|
+
|
|
52
|
+
Returns:
|
|
53
|
+
str: The output of the code execution.
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
tool_id = resolve_agentkit_tool_id("AGENTKIT_TOOL_ID_SKILLS")
|
|
57
|
+
service, region, host, _ = get_agentkit_endpoint_config()
|
|
58
|
+
logger.debug(f"tools endpoint: {host}")
|
|
59
|
+
|
|
60
|
+
session_id = runtime.session_id # type: ignore
|
|
61
|
+
agent_name = runtime.context.agent_name # type: ignore
|
|
62
|
+
user_id = runtime.context.user_id # type: ignore
|
|
63
|
+
tool_user_session_id = agent_name + "_" + user_id + "_" + session_id
|
|
64
|
+
logger.debug(f"tool_user_session_id: {tool_user_session_id}")
|
|
65
|
+
|
|
66
|
+
logger.debug(
|
|
67
|
+
f"Execute skills in session_id={session_id}, tool_id={tool_id}, host={host}, service={service}, region={region}, timeout={timeout}"
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
cmd = _build_agent_command(workflow_prompt=workflow_prompt, skills=skills)
|
|
71
|
+
try:
|
|
72
|
+
account_id = get_agentkit_account_id()
|
|
73
|
+
except KeyError as e:
|
|
74
|
+
logger.error(f"Error occurred while getting account id: {e}")
|
|
75
|
+
return {"error": str(e)}
|
|
76
|
+
|
|
77
|
+
env_vars = {"TOOL_USER_SESSION_ID": tool_user_session_id}
|
|
78
|
+
if account_id:
|
|
79
|
+
env_vars["TOS_SKILLS_DIR"] = f"tos://agentkit-platform-{account_id}/skills/"
|
|
80
|
+
|
|
81
|
+
code = _build_agent_runner_code(
|
|
82
|
+
cmd=cmd,
|
|
83
|
+
timeout=timeout,
|
|
84
|
+
env_vars=env_vars,
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
res = invoke_agentkit_run_code(
|
|
88
|
+
tool_id=tool_id,
|
|
89
|
+
tool_user_session_id=tool_user_session_id,
|
|
90
|
+
code=code,
|
|
91
|
+
timeout=timeout,
|
|
92
|
+
kernel_name="python3",
|
|
93
|
+
)
|
|
94
|
+
logger.debug(f"Invoke run code response: {res}")
|
|
95
|
+
|
|
96
|
+
try:
|
|
97
|
+
return _format_execution_result(res["Result"]["Result"])
|
|
98
|
+
except KeyError as e:
|
|
99
|
+
logger.error(f"Error occurred while running code: {e}, response is {res}")
|
|
100
|
+
return res
|
|
@@ -12,15 +12,14 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
import json
|
|
16
|
-
import os
|
|
17
|
-
|
|
18
15
|
from langchain.tools import ToolRuntime, tool
|
|
19
16
|
|
|
20
|
-
from veadk.
|
|
21
|
-
|
|
17
|
+
from veadk.tools.builtin_tools._agentkit import (
|
|
18
|
+
get_agentkit_endpoint_config,
|
|
19
|
+
invoke_agentkit_run_code,
|
|
20
|
+
resolve_agentkit_tool_id,
|
|
21
|
+
)
|
|
22
22
|
from veadk.utils.logger import get_logger
|
|
23
|
-
from veadk.utils.volcengine_sign import ve_request
|
|
24
23
|
|
|
25
24
|
logger = get_logger(__name__)
|
|
26
25
|
|
|
@@ -39,18 +38,8 @@ def run_code(code: str, language: str, runtime: ToolRuntime, timeout: int = 30)
|
|
|
39
38
|
str: The output of the code execution.
|
|
40
39
|
"""
|
|
41
40
|
|
|
42
|
-
tool_id =
|
|
43
|
-
|
|
44
|
-
service = getenv(
|
|
45
|
-
"AGENTKIT_TOOL_SERVICE_CODE", "agentkit"
|
|
46
|
-
) # temporary service for code run tool
|
|
47
|
-
region = getenv("AGENTKIT_TOOL_REGION", "cn-beijing")
|
|
48
|
-
host = getenv(
|
|
49
|
-
"AGENTKIT_TOOL_HOST", service + "." + region + ".volces.com"
|
|
50
|
-
) # temporary host for code run tool
|
|
51
|
-
scheme = os.getenv("AGENTKIT_TOOL_SCHEME", "https").lower()
|
|
52
|
-
if scheme not in {"http", "https"}:
|
|
53
|
-
scheme = "https"
|
|
41
|
+
tool_id = resolve_agentkit_tool_id("AGENTKIT_TOOL_ID_SCRIPT")
|
|
42
|
+
service, region, host, _ = get_agentkit_endpoint_config()
|
|
54
43
|
logger.debug(f"tools endpoint: {host}")
|
|
55
44
|
|
|
56
45
|
session_id = runtime.context.session_id # type: ignore
|
|
@@ -64,44 +53,12 @@ def run_code(code: str, language: str, runtime: ToolRuntime, timeout: int = 30)
|
|
|
64
53
|
f"Running code in language: {language}, session_id={session_id}, code={code}, tool_id={tool_id}, host={host}, service={service}, region={region}, timeout={timeout}"
|
|
65
54
|
)
|
|
66
55
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
logger.debug(
|
|
74
|
-
"Get AK/SK from environment variables failed. Try to use credential from Iam."
|
|
75
|
-
)
|
|
76
|
-
credential = get_credential_from_vefaas_iam()
|
|
77
|
-
ak = credential.access_key_id
|
|
78
|
-
sk = credential.secret_access_key
|
|
79
|
-
header = {"X-Security-Token": credential.session_token}
|
|
80
|
-
else:
|
|
81
|
-
logger.debug("Successfully get AK/SK from environment variables.")
|
|
82
|
-
|
|
83
|
-
res = ve_request(
|
|
84
|
-
request_body={
|
|
85
|
-
"ToolId": tool_id,
|
|
86
|
-
"UserSessionId": tool_user_session_id,
|
|
87
|
-
"OperationType": "RunCode",
|
|
88
|
-
"OperationPayload": json.dumps(
|
|
89
|
-
{
|
|
90
|
-
"code": code,
|
|
91
|
-
"timeout": timeout,
|
|
92
|
-
"kernel_name": language,
|
|
93
|
-
}
|
|
94
|
-
),
|
|
95
|
-
},
|
|
96
|
-
action="InvokeTool",
|
|
97
|
-
ak=ak,
|
|
98
|
-
sk=sk,
|
|
99
|
-
service=service,
|
|
100
|
-
version="2025-10-30",
|
|
101
|
-
region=region,
|
|
102
|
-
host=host,
|
|
103
|
-
header=header,
|
|
104
|
-
scheme=scheme, # type: ignore
|
|
56
|
+
res = invoke_agentkit_run_code(
|
|
57
|
+
tool_id=tool_id,
|
|
58
|
+
tool_user_session_id=tool_user_session_id,
|
|
59
|
+
code=code,
|
|
60
|
+
timeout=timeout,
|
|
61
|
+
kernel_name=language,
|
|
105
62
|
)
|
|
106
63
|
logger.debug(f"Invoke run code response: {res}")
|
|
107
64
|
|
|
@@ -60,6 +60,9 @@ class FeishuMessageContext:
|
|
|
60
60
|
text: str
|
|
61
61
|
|
|
62
62
|
|
|
63
|
+
FEISHU_EMOJI_ONE_SECOND = "OneSecond"
|
|
64
|
+
|
|
65
|
+
|
|
63
66
|
class FeishuChannelExtension:
|
|
64
67
|
"""Bridge a Feishu bot channel with a VeADK runner.
|
|
65
68
|
|
|
@@ -84,6 +87,8 @@ class FeishuChannelExtension:
|
|
|
84
87
|
reply_in_thread: bool = True,
|
|
85
88
|
ignore_empty_messages: bool = True,
|
|
86
89
|
channel_kwargs: dict[str, Any] | None = None,
|
|
90
|
+
streaming: bool = False,
|
|
91
|
+
reactions: bool = False,
|
|
87
92
|
) -> None:
|
|
88
93
|
self.runner = runner
|
|
89
94
|
self.session_id_factory = session_id_factory or self.default_session_id_factory
|
|
@@ -92,6 +97,14 @@ class FeishuChannelExtension:
|
|
|
92
97
|
self.response_formatter = response_formatter or self.default_response_formatter
|
|
93
98
|
self.reply_in_thread = reply_in_thread
|
|
94
99
|
self.ignore_empty_messages = ignore_empty_messages
|
|
100
|
+
self.reactions = (
|
|
101
|
+
reactions
|
|
102
|
+
or str(os.getenv("TOOL_FEISHU_CHANNEL_REACTIONS", "")).lower() == "true"
|
|
103
|
+
)
|
|
104
|
+
self.streaming = (
|
|
105
|
+
streaming
|
|
106
|
+
or str(os.getenv("TOOL_FEISHU_CHANNEL_STREAMING", "")).lower() == "true"
|
|
107
|
+
)
|
|
95
108
|
|
|
96
109
|
if channel is not None:
|
|
97
110
|
self.channel = channel
|
|
@@ -167,8 +180,100 @@ class FeishuChannelExtension:
|
|
|
167
180
|
|
|
168
181
|
context = self.build_message_context(message=message, text=text)
|
|
169
182
|
|
|
183
|
+
if self.reactions and context.message_id:
|
|
184
|
+
try:
|
|
185
|
+
import lark_oapi.api.im.v1 as lark_im
|
|
186
|
+
|
|
187
|
+
emoji = (
|
|
188
|
+
lark_im.Emoji.builder().emoji_type(FEISHU_EMOJI_ONE_SECOND).build()
|
|
189
|
+
)
|
|
190
|
+
request = (
|
|
191
|
+
lark_im.CreateMessageReactionRequest.builder()
|
|
192
|
+
.message_id(context.message_id)
|
|
193
|
+
.request_body(
|
|
194
|
+
lark_im.CreateMessageReactionRequestBody.builder()
|
|
195
|
+
.reaction_type(emoji)
|
|
196
|
+
.build()
|
|
197
|
+
)
|
|
198
|
+
.build()
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
if hasattr(self.channel, "client"):
|
|
202
|
+
response = await self._maybe_await(
|
|
203
|
+
self.channel.client.im.v1.message_reaction.create(request)
|
|
204
|
+
)
|
|
205
|
+
|
|
206
|
+
if not response.success():
|
|
207
|
+
logger.error(
|
|
208
|
+
f"Failed to add reaction to message {context.message_id}: {response.code} {response.msg}"
|
|
209
|
+
)
|
|
210
|
+
else:
|
|
211
|
+
logger.warning(
|
|
212
|
+
"Channel has no client attribute, cannot send reaction"
|
|
213
|
+
)
|
|
214
|
+
except Exception as e:
|
|
215
|
+
logger.error(
|
|
216
|
+
f"Failed to add reaction to message {context.message_id}: {e}"
|
|
217
|
+
)
|
|
218
|
+
|
|
219
|
+
send_options = {}
|
|
220
|
+
if self.reply_in_thread and context.message_id:
|
|
221
|
+
send_options["reply_to"] = context.message_id
|
|
222
|
+
|
|
170
223
|
if self.message_handler is not None:
|
|
171
224
|
response_text = await self._maybe_await(self.message_handler(context))
|
|
225
|
+
if not response_text:
|
|
226
|
+
return
|
|
227
|
+
|
|
228
|
+
await self._maybe_await(
|
|
229
|
+
self.channel.send(
|
|
230
|
+
context.chat_id,
|
|
231
|
+
self.response_formatter(str(response_text)),
|
|
232
|
+
send_options,
|
|
233
|
+
)
|
|
234
|
+
)
|
|
235
|
+
elif getattr(self, "streaming", False) and hasattr(self.channel, "stream"):
|
|
236
|
+
from google.adk.agents import RunConfig
|
|
237
|
+
from google.adk.agents.run_config import StreamingMode
|
|
238
|
+
from veadk.config import getenv
|
|
239
|
+
from veadk.runner import _convert_messages
|
|
240
|
+
|
|
241
|
+
if self.runner.short_term_memory:
|
|
242
|
+
await self.runner.short_term_memory.create_session(
|
|
243
|
+
app_name=self.runner.app_name,
|
|
244
|
+
user_id=context.user_id,
|
|
245
|
+
session_id=context.session_id,
|
|
246
|
+
)
|
|
247
|
+
|
|
248
|
+
converted_messages = _convert_messages(
|
|
249
|
+
context.text, self.runner.app_name, context.user_id, context.session_id
|
|
250
|
+
)
|
|
251
|
+
|
|
252
|
+
run_config = RunConfig(
|
|
253
|
+
streaming_mode=StreamingMode.SSE,
|
|
254
|
+
max_llm_calls=int(getenv("MODEL_AGENT_MAX_LLM_CALLS", 100)),
|
|
255
|
+
)
|
|
256
|
+
|
|
257
|
+
async def stream_to_feishu(stream):
|
|
258
|
+
for converted_message in converted_messages:
|
|
259
|
+
async for event in self.runner.run_async(
|
|
260
|
+
user_id=context.user_id,
|
|
261
|
+
session_id=context.session_id,
|
|
262
|
+
new_message=converted_message,
|
|
263
|
+
run_config=run_config,
|
|
264
|
+
):
|
|
265
|
+
if event.content and event.content.parts:
|
|
266
|
+
for part in event.content.parts:
|
|
267
|
+
if not getattr(part, "thought", False) and part.text:
|
|
268
|
+
await stream.append(part.text)
|
|
269
|
+
|
|
270
|
+
await self._maybe_await(
|
|
271
|
+
self.channel.stream(
|
|
272
|
+
context.chat_id,
|
|
273
|
+
{"markdown": stream_to_feishu},
|
|
274
|
+
send_options,
|
|
275
|
+
)
|
|
276
|
+
)
|
|
172
277
|
else:
|
|
173
278
|
response_text = await self.runner.run(
|
|
174
279
|
messages=context.text,
|
|
@@ -176,20 +281,16 @@ class FeishuChannelExtension:
|
|
|
176
281
|
session_id=context.session_id,
|
|
177
282
|
)
|
|
178
283
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
send_options = {}
|
|
183
|
-
if self.reply_in_thread and context.message_id:
|
|
184
|
-
send_options["reply_to"] = context.message_id
|
|
284
|
+
if not response_text:
|
|
285
|
+
return
|
|
185
286
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
287
|
+
await self._maybe_await(
|
|
288
|
+
self.channel.send(
|
|
289
|
+
context.chat_id,
|
|
290
|
+
self.response_formatter(str(response_text)),
|
|
291
|
+
send_options,
|
|
292
|
+
)
|
|
191
293
|
)
|
|
192
|
-
)
|
|
193
294
|
|
|
194
295
|
def build_message_context(
|
|
195
296
|
self, message: Any, text: str | None = None
|
|
@@ -0,0 +1,155 @@
|
|
|
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 json
|
|
16
|
+
import os
|
|
17
|
+
from typing import Any, Optional
|
|
18
|
+
|
|
19
|
+
from veadk.auth.veauth.utils import get_credential_from_vefaas_iam
|
|
20
|
+
from veadk.config import getenv
|
|
21
|
+
from veadk.utils.logger import get_logger
|
|
22
|
+
from veadk.utils.volcengine_sign import ve_request
|
|
23
|
+
|
|
24
|
+
logger = get_logger(__name__)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def resolve_agentkit_tool_id(*preferred_env_names: str) -> str:
|
|
28
|
+
"""Resolve the first configured AgentKit tool id with AGENTKIT_TOOL_ID fallback."""
|
|
29
|
+
for env_name in [*preferred_env_names, "AGENTKIT_TOOL_ID"]:
|
|
30
|
+
tool_id = os.getenv(env_name)
|
|
31
|
+
if tool_id:
|
|
32
|
+
return tool_id
|
|
33
|
+
|
|
34
|
+
return getenv("AGENTKIT_TOOL_ID")
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def get_agentkit_endpoint_config(
|
|
38
|
+
host_env_name: str = "AGENTKIT_TOOL_HOST",
|
|
39
|
+
) -> tuple[str, str, str, str]:
|
|
40
|
+
"""Return service, region, host and scheme for AgentKit tool invocation."""
|
|
41
|
+
service = getenv("AGENTKIT_TOOL_SERVICE_CODE", "agentkit")
|
|
42
|
+
|
|
43
|
+
cloud_provider = (os.getenv("CLOUD_PROVIDER") or "").lower()
|
|
44
|
+
if cloud_provider == "byteplus":
|
|
45
|
+
sld = "bytepluses"
|
|
46
|
+
default_region = "ap-southeast-1"
|
|
47
|
+
else:
|
|
48
|
+
sld = "volces"
|
|
49
|
+
default_region = "cn-beijing"
|
|
50
|
+
|
|
51
|
+
region = getenv("AGENTKIT_TOOL_REGION", default_region)
|
|
52
|
+
host = getenv(host_env_name, service + "." + region + f".{sld}.com")
|
|
53
|
+
scheme = getenv("AGENTKIT_TOOL_SCHEME", "https", allow_false_values=True).lower()
|
|
54
|
+
if scheme not in {"http", "https"}:
|
|
55
|
+
scheme = "https"
|
|
56
|
+
|
|
57
|
+
return service, region, host, scheme
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def get_agentkit_credentials(
|
|
61
|
+
tool_state: Optional[dict[str, Any]] = None,
|
|
62
|
+
) -> tuple[str, str, dict[str, str]]:
|
|
63
|
+
"""Resolve AgentKit invocation credentials from tool state, env, or IAM."""
|
|
64
|
+
ak = tool_state.get("VOLCENGINE_ACCESS_KEY") if tool_state else None
|
|
65
|
+
sk = tool_state.get("VOLCENGINE_SECRET_KEY") if tool_state else None
|
|
66
|
+
header: dict[str, str] = {}
|
|
67
|
+
|
|
68
|
+
if not (ak and sk):
|
|
69
|
+
logger.debug("Get AK/SK from tool context failed.")
|
|
70
|
+
ak = os.getenv("VOLCENGINE_ACCESS_KEY")
|
|
71
|
+
sk = os.getenv("VOLCENGINE_SECRET_KEY")
|
|
72
|
+
if not (ak and sk):
|
|
73
|
+
logger.debug(
|
|
74
|
+
"Get AK/SK from environment variables failed. Try to use credential from Iam."
|
|
75
|
+
)
|
|
76
|
+
credential = get_credential_from_vefaas_iam()
|
|
77
|
+
ak = credential.access_key_id
|
|
78
|
+
sk = credential.secret_access_key
|
|
79
|
+
header = {"X-Security-Token": credential.session_token}
|
|
80
|
+
else:
|
|
81
|
+
logger.debug("Successfully get AK/SK from environment variables.")
|
|
82
|
+
else:
|
|
83
|
+
logger.debug("Successfully get AK/SK from tool context.")
|
|
84
|
+
|
|
85
|
+
return ak, sk, header
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def get_agentkit_account_id(tool_state: Optional[dict[str, Any]] = None) -> str:
|
|
89
|
+
"""Get the current caller account id for remote skills sandbox setup."""
|
|
90
|
+
cloud_provider = (os.getenv("CLOUD_PROVIDER") or "").lower()
|
|
91
|
+
if cloud_provider == "vestack":
|
|
92
|
+
return ""
|
|
93
|
+
|
|
94
|
+
_, region, _, _ = get_agentkit_endpoint_config()
|
|
95
|
+
ak, sk, header = get_agentkit_credentials(tool_state)
|
|
96
|
+
host = (
|
|
97
|
+
"open.byteplusapi.com"
|
|
98
|
+
if cloud_provider == "byteplus"
|
|
99
|
+
else "sts.volcengineapi.com"
|
|
100
|
+
)
|
|
101
|
+
res = ve_request(
|
|
102
|
+
request_body={},
|
|
103
|
+
action="GetCallerIdentity",
|
|
104
|
+
ak=ak,
|
|
105
|
+
sk=sk,
|
|
106
|
+
service="sts",
|
|
107
|
+
version="2018-01-01",
|
|
108
|
+
region=region,
|
|
109
|
+
host=host,
|
|
110
|
+
header=header,
|
|
111
|
+
)
|
|
112
|
+
return res["Result"]["AccountId"]
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def invoke_agentkit_run_code(
|
|
116
|
+
*,
|
|
117
|
+
tool_id: str,
|
|
118
|
+
tool_user_session_id: str,
|
|
119
|
+
code: str,
|
|
120
|
+
timeout: int,
|
|
121
|
+
kernel_name: str,
|
|
122
|
+
tool_state: Optional[dict[str, Any]] = None,
|
|
123
|
+
ttl: Optional[int] = None,
|
|
124
|
+
) -> dict[str, Any]:
|
|
125
|
+
"""Invoke the AgentKit RunCode operation."""
|
|
126
|
+
service, region, host, scheme = get_agentkit_endpoint_config()
|
|
127
|
+
ak, sk, header = get_agentkit_credentials(tool_state)
|
|
128
|
+
|
|
129
|
+
request_body: dict[str, Any] = {
|
|
130
|
+
"ToolId": tool_id,
|
|
131
|
+
"UserSessionId": tool_user_session_id,
|
|
132
|
+
"OperationType": "RunCode",
|
|
133
|
+
"OperationPayload": json.dumps(
|
|
134
|
+
{
|
|
135
|
+
"code": code,
|
|
136
|
+
"timeout": timeout,
|
|
137
|
+
"kernel_name": kernel_name,
|
|
138
|
+
}
|
|
139
|
+
),
|
|
140
|
+
}
|
|
141
|
+
if ttl is not None:
|
|
142
|
+
request_body["Ttl"] = ttl
|
|
143
|
+
|
|
144
|
+
return ve_request(
|
|
145
|
+
request_body=request_body,
|
|
146
|
+
action="InvokeTool",
|
|
147
|
+
ak=ak,
|
|
148
|
+
sk=sk,
|
|
149
|
+
service=service,
|
|
150
|
+
version="2025-10-30",
|
|
151
|
+
region=region,
|
|
152
|
+
host=host,
|
|
153
|
+
header=header,
|
|
154
|
+
scheme=scheme,
|
|
155
|
+
)
|