| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- from typing import TYPE_CHECKING
- from core_domain import (
- ToolBindingContract,
- ToolBindingDetailContract,
- ToolCredentialContract,
- ToolCredentialRevealContract,
- ToolDefinitionContract,
- ToolVersionContract,
- )
- from core_shared import JSONValue
- from pydantic import BaseModel, Field
- if TYPE_CHECKING:
- from app.db.models import ToolBinding, ToolCredential, ToolDefinition, ToolVersion
- class ToolCreateRequest(BaseModel):
- plugin_id: str | None = None
- code: str
- name: str
- tool_type: str
- description: str | None = None
- class ToolResponse(ToolDefinitionContract):
- @classmethod
- def from_entity(cls, entity: "ToolDefinition") -> "ToolResponse":
- return cls.model_validate(entity, from_attributes=True)
- class ToolVersionCreateRequest(BaseModel):
- tool_id: str
- input_schema_json: dict[str, JSONValue] = Field(default_factory=dict)
- output_schema_json: dict[str, JSONValue] = Field(default_factory=dict)
- invoke_config_json: dict[str, JSONValue] = Field(default_factory=dict)
- timeout_ms: int | None = None
- retry_policy_json: dict[str, JSONValue] = Field(default_factory=dict)
- class ToolVersionResponse(ToolVersionContract):
- @classmethod
- def from_entity(cls, entity: "ToolVersion") -> "ToolVersionResponse":
- return cls.model_validate(entity, from_attributes=True)
- class ToolBindingCreateRequest(BaseModel):
- app_id: str
- tool_version_id: str
- credential_id: str | None = None
- binding_scope: str = "app"
- enabled: bool = True
- config_json: dict[str, JSONValue] = Field(default_factory=dict)
- class ToolBindingResponse(ToolBindingContract):
- @classmethod
- def from_entity(cls, entity: "ToolBinding") -> "ToolBindingResponse":
- return cls.model_validate(entity, from_attributes=True)
- class ToolBindingDetailResponse(ToolBindingDetailContract):
- binding: ToolBindingResponse
- tool_version: ToolVersionResponse
- tool_definition: ToolResponse
- class ToolCredentialCreateRequest(BaseModel):
- name: str
- credential_type: str = "generic"
- secret_json: dict[str, JSONValue] = Field(default_factory=dict)
- metadata_json: dict[str, JSONValue] = Field(default_factory=dict)
- class ToolCredentialResponse(ToolCredentialContract):
- @classmethod
- def from_entity(cls, entity: "ToolCredential") -> "ToolCredentialResponse":
- return cls.model_validate(entity, from_attributes=True)
- class ToolCredentialRevealResponse(ToolCredentialRevealContract):
- credential: ToolCredentialResponse
|