mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-29 12:09:31 +08:00
### Summary Adds a `tenki` sandbox provider that runs each agent code execution in a disposable Tenki (https://tenki.cloud) microVM (create → exec → destroy, no volumes or snapshots). Registration mirrors PR #15039, configure `api_key` and `project_id` in Admin > Sandbox Settings. Both runtimes are covered: - Python: `agent/sandbox/providers/tenki.py` (structured results + artifact collection). - Go: `internal/agent/sandbox/tenki.go`, mirroring the e2b provider and wired into the provider manager. `tenki-sandbox` is an optional dependency (it requires `protobuf>=6.31`, which differs from RAGFlow's pinned gRPC stack), lazily imported with a clear error when missing; installation is documented in the sandbox quickstart. Unit tests cover execution, structured results, artifacts (symlink/size/extension limits), non-zero exit, timeout, error mapping, and idempotent destroy. --------- Co-authored-by: yiming.wang <yiming.wang@luxor.com>
54 lines
1.9 KiB
Python
54 lines
1.9 KiB
Python
#
|
|
# Copyright 2025 The InfiniFlow Authors. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
"""
|
|
Sandbox providers package.
|
|
|
|
This package contains:
|
|
- base.py: Base interface for all sandbox providers
|
|
- manager.py: Provider manager for managing active provider
|
|
- self_managed.py: Self-managed provider implementation (wraps existing executor_manager)
|
|
- aliyun_codeinterpreter.py: Aliyun Code Interpreter provider implementation
|
|
Official Documentation: https://help.aliyun.com/zh/functioncompute/fc/sandbox-sandbox-code-interepreter
|
|
- e2b.py: E2B provider implementation
|
|
- local.py: Local process provider implementation
|
|
- ssh.py: Remote SSH provider implementation
|
|
- tenki.py: Tenki disposable microVM provider implementation
|
|
"""
|
|
|
|
from .base import SandboxProvider, SandboxInstance, ExecutionResult, SandboxProviderConfigError
|
|
from .manager import ProviderManager
|
|
from .self_managed import SelfManagedProvider
|
|
from .aliyun_codeinterpreter import AliyunCodeInterpreterProvider
|
|
from .e2b import E2BProvider
|
|
from .local import LocalProvider
|
|
from .ssh import SSHProvider
|
|
from .tenki import TenkiProvider
|
|
|
|
__all__ = [
|
|
"SandboxProvider",
|
|
"SandboxInstance",
|
|
"ExecutionResult",
|
|
"SandboxProviderConfigError",
|
|
"ProviderManager",
|
|
"SelfManagedProvider",
|
|
"AliyunCodeInterpreterProvider",
|
|
"E2BProvider",
|
|
"LocalProvider",
|
|
"SSHProvider",
|
|
"TenkiProvider",
|
|
]
|