mirror of
https://github.com/langgenius/dify.git
synced 2026-02-11 19:00:44 -05:00
26 lines
847 B
Python
26 lines
847 B
Python
import secrets
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from core.skill.entities import ToolAccessPolicy
|
|
|
|
from .session import BaseSession, SessionManager
|
|
|
|
|
|
class CliApiSession(BaseSession):
|
|
secret: str = Field(default_factory=lambda: secrets.token_urlsafe(32))
|
|
|
|
|
|
class CliContext(BaseModel):
|
|
tool_access: ToolAccessPolicy | None = Field(default=None, description="Tool access policy")
|
|
|
|
|
|
class CliApiSessionManager(SessionManager[CliApiSession]):
|
|
def __init__(self, ttl: int | None = None):
|
|
super().__init__(key_prefix="cli_api_session", session_class=CliApiSession, ttl=ttl)
|
|
|
|
def create(self, tenant_id: str, user_id: str, context: CliContext) -> CliApiSession:
|
|
session = CliApiSession(tenant_id=tenant_id, user_id=user_id, context=context.model_dump(mode="json"))
|
|
self.save(session)
|
|
return session
|