README

morning-start/prism/lux does not have a README file

#
AccumulatedResponse

pub struct AccumulatedResponse {
response : LucentResponse
annotations : Array[LucentAnnotation]
native_events : Array[LucentStreamEvent]
agent_actions : Array[LucentAgentAction]
diagnostics : Array[ConversionDiagnostic]
} derive(Eq,
Debug
)

AccumulatedResponse — 累加器产物:response + 未进入 response 的辅助信息

#
ConversionDiagnostic

pub struct ConversionDiagnostic {
field : String
status : ConversionStatus
detail : String?
} derive(Eq,
Debug
)

ConversionDiagnostic — 单个字段的转换结果诊断

#
ConversionDiagnostic::degraded

fn ConversionDiagnostic::degraded(field : String, detail : String?) -> ConversionDiagnostic

构造 Degraded 诊断(provider 适配器共用样板)。

#
ConversionDiagnostic::from_json

fn ConversionDiagnostic::from_json(jv : Json) -> Result[ConversionDiagnostic, String]

#
ConversionDiagnostic::new

fn ConversionDiagnostic::new(field : String, status : ConversionStatus, detail : String?) -> ConversionDiagnostic

#
ConversionDiagnostic::status

获取诊断状态。

#
ConversionDiagnostic::to_json

#
ConversionDiagnostic::unsupported

fn ConversionDiagnostic::unsupported(field : String, detail : String?) -> ConversionDiagnostic

构造 Unsupported 诊断(provider 适配器共用样板)。

#
ConversionResult

pub struct ConversionResult[T] {
value : T
diagnostics : Array[ConversionDiagnostic]
} derive(Eq,
Debug
)

ConversionResult — 带诊断的转换结果 成功时不等于 Exact:value 可用但部分字段已丢失

#
ConversionResult::diagnostics

获取转换诊断列表。

#
ConversionResult::envelope_json

fn[T] ConversionResult::envelope_json(self : ConversionResult[T], value_json : Json) -> Json

信封 JSON:{"value":<value_json>,"diagnostics":[...]}(WASM/SDK 边界用)。

#
ConversionResult::from_json

fn[T] ConversionResult::from_json(jv : Json, decode : (Json) -> Result[T, String]) -> Result[ConversionResult[T], String]

反序列化:value 由调用方提供解码函数。

#
ConversionResult::new

fn[T] ConversionResult::new(value : T) -> ConversionResult[T]

#
ConversionResult::to_json

fn[T] ConversionResult::to_json(self : ConversionResult[T], encode : (T) -> Json) -> Json

序列化:value 由调用方提供编码函数,diagnostics 统一编码。

#
ConversionResult::value

fn[T] ConversionResult::value(self : ConversionResult[T]) -> T

获取转换结果值。

#
ConversionResult::with_diagnostic

fn[T] ConversionResult::with_diagnostic(self : ConversionResult[T], diagnostic : ConversionDiagnostic) -> ConversionResult[T]

追加一条转换诊断(返回新结果,不修改原结果的诊断数组)。

#
ConversionResult::with_diagnostics

fn[T] ConversionResult::with_diagnostics(self : ConversionResult[T], diagnostics : Array[ConversionDiagnostic]) -> ConversionResult[T]

批量附加诊断(返回新结果,等价于逐条 with_diagnostic)。

#
ConversionStatus

pub(all) enum ConversionStatus {
Exact
Degraded
Unsupported
Invalid
} derive(Eq,
Debug
)

ConversionStatus — 字段转换状态(五道门治理要求)

#
ConversionStatus::from_json

fn ConversionStatus::from_json(jv : Json) -> Result[ConversionStatus, String]

#
ConversionStatus::to_json

fn ConversionStatus::to_json(self : ConversionStatus) -> Json

#
LucentAgentAction

pub struct LucentAgentAction {
kind : String
id : String
call_id : String?
name : String?
arguments_json : String?
result : String?
provider_payload : Json?
} derive(Eq,
Debug
)

LucentAgentAction — Agent 动作占位(v1 仅类型化,参数走 provider_payload)

#
LucentAgentAction::from_json

fn LucentAgentAction::from_json(jv : Json) -> Result[LucentAgentAction, String]

=== LucentAgentAction ===

#
LucentAgentAction::new

fn LucentAgentAction::new(kind : String, id : String, call_id : String?, name : String?, arguments_json : String?, result : String?, provider_payload : Json?) -> LucentAgentAction

#
LucentAgentAction::to_json

=== LucentAgentAction ===

#
LucentAnnotation

pub struct LucentAnnotation {
kind : LucentAnnotationKind
text : String?
reference : String?
start : Int?
end : Int?
} derive(Eq,
Debug
)

LucentAnnotation — 标注侧信道

#
LucentAnnotation::from_json

fn LucentAnnotation::from_json(jv : Json) -> Result[LucentAnnotation, String]

=== LucentAnnotation ===

#
LucentAnnotation::new

fn LucentAnnotation::new(kind : LucentAnnotationKind, text : String?, reference : String?, start : Int?, end : Int?) -> LucentAnnotation

#
LucentAnnotation::to_json

fn LucentAnnotation::to_json(self : LucentAnnotation) -> Json

=== LucentAnnotation ===

#
LucentAnnotationKind

pub(all) enum LucentAnnotationKind {
Url
FileCitation
WebSearchCitation
Native(String)
} derive(Eq,
Debug
)

LucentAnnotationKind — 标注类型

#
LucentAnnotationKind::from_json

fn LucentAnnotationKind::from_json(jv : Json) -> Result[LucentAnnotationKind, String]

=== LucentAnnotationKind ===

#
LucentAnnotationKind::to_json

fn LucentAnnotationKind::to_json(self : LucentAnnotationKind) -> String

=== LucentAnnotationKind ===

#
LucentBlockDelta

pub(all) enum LucentBlockDelta {
TextDelta(String)
ThinkingDelta(String)
SignatureDelta(String)
ToolArgumentsDelta(String)
RefusalDelta(String)
NativeDelta(String, Json)
} derive(Eq,
Debug
)

LucentBlockDelta — 块增量(类型化)

#
LucentBlockDelta::from_json

fn LucentBlockDelta::from_json(jv : Json) -> Result[LucentBlockDelta, String]

=== LucentBlockDelta ===

#
LucentBlockDelta::native_delta

fn LucentBlockDelta::native_delta(tag : String, raw : Json) -> LucentBlockDelta

#
LucentBlockDelta::refusal_delta

fn LucentBlockDelta::refusal_delta(s : String) -> LucentBlockDelta

#
LucentBlockDelta::signature_delta

fn LucentBlockDelta::signature_delta(s : String) -> LucentBlockDelta

#
LucentBlockDelta::text_delta

fn LucentBlockDelta::text_delta(s : String) -> LucentBlockDelta

#
LucentBlockDelta::thinking_delta

fn LucentBlockDelta::thinking_delta(s : String) -> LucentBlockDelta

#
LucentBlockDelta::to_json

fn LucentBlockDelta::to_json(self : LucentBlockDelta) -> Json

=== LucentBlockDelta ===

#
LucentBlockDelta::tool_arguments_delta

fn LucentBlockDelta::tool_arguments_delta(s : String) -> LucentBlockDelta

#
LucentBlockType

pub(all) enum LucentBlockType {
Text
ToolCall(String, String)
Thinking
Refusal
Image
Audio
Video
Native(String)
} derive(Eq,
Debug
)

LucentBlockType — 块类型(类型化,替代字符串)

#
LucentBlockType::from_json

fn LucentBlockType::from_json(jv : Json) -> Result[LucentBlockType, String]

=== LucentBlockType ===

#
LucentBlockType::native

fn LucentBlockType::native(tag : String) -> LucentBlockType

#
LucentBlockType::refusal

#
LucentBlockType::text

#
LucentBlockType::thinking

#
LucentBlockType::to_json

fn LucentBlockType::to_json(self : LucentBlockType) -> Json

=== LucentBlockType ===

#
LucentBlockType::tool_call

fn LucentBlockType::tool_call(id : String, name : String) -> LucentBlockType

#
LucentCapabilities

pub struct LucentCapabilities {
tool_calling : SupportLevel
parallel_tool_calls : SupportLevel
reasoning : SupportLevel
multimodal_input : SupportLevel
structured_output : SupportLevel
input_modalities : Array[LucentModality]
output_modalities : Array[LucentModality]
} derive(Eq,
Debug
)

LucentCapabilities — 标准化能力声明

#
LucentCapabilities::create

fn LucentCapabilities::create(tool_calling : SupportLevel, parallel_tool_calls : SupportLevel, reasoning : SupportLevel, multimodal_input : SupportLevel, structured_output : SupportLevel, input_modalities : Array[LucentModality], output_modalities : Array[LucentModality]) -> LucentCapabilities

#
LucentCapabilities::default

#
LucentCapabilities::from_json

fn LucentCapabilities::from_json(jv : Json) -> Result[LucentCapabilities, String]

=== LucentCapabilities ===

#
LucentCapabilities::to_json

=== LucentCapabilities ===

#
LucentChoice

pub struct LucentChoice {
index : Int
message : LucentMessage
finish_reason : LucentFinishReason
safety_ratings : Array[LucentSafetyRating]?
} derive(Eq,
Debug
)

LucentChoice — 候选回复

#
LucentChoice::from_json

fn LucentChoice::from_json(jv : Json) -> Result[LucentChoice, String]

=== LucentChoice ===

#
LucentChoice::new

fn LucentChoice::new(index : Int, message : LucentMessage, finish_reason : LucentFinishReason, safety_ratings : Array[LucentSafetyRating]?) -> LucentChoice

#
LucentChoice::to_json

fn LucentChoice::to_json(self : LucentChoice) -> Json

=== LucentChoice ===

#
LucentContent

pub(all) enum LucentContent {
Text(String, Array[LucentAnnotation]?)
ToolUse(LucentToolUse)
ToolResult(LucentToolResult)
Thinking(LucentThinking)
Refusal(String)
Image(LucentMultimedia)
Audio(LucentMultimedia)
Video(LucentMultimedia)
File(LucentMultimedia)
Native(String, Json)
} derive(Eq,
Debug
)

LucentContent — 内容块主枚举

#
LucentContent::audio

fn LucentContent::audio(media_type : String, source : LucentMediaSource) -> LucentContent

#
LucentContent::file

fn LucentContent::file(media_type : String, source : LucentMediaSource) -> LucentContent

构造文件 content(PDF 等非媒体文件),来源三选一:url / inline / file_uri

#
LucentContent::from_json

fn LucentContent::from_json(jv : Json) -> Result[LucentContent, String]

=== LucentContent ===

#
LucentContent::image

fn LucentContent::image(media_type : String, source : LucentMediaSource) -> LucentContent

#
LucentContent::native

fn LucentContent::native(type_tag : String, raw : Json) -> LucentContent

#
LucentContent::redacted_thinking

fn LucentContent::redacted_thinking(signature : String?) -> LucentContent

#
LucentContent::refusal

fn LucentContent::refusal(text : String) -> LucentContent

#
LucentContent::text

fn LucentContent::text(s : String) -> LucentContent

#
LucentContent::text_with_annotations

fn LucentContent::text_with_annotations(s : String, annotations : Array[LucentAnnotation]) -> LucentContent

#
LucentContent::thinking

fn LucentContent::thinking(text : String, signature : String?) -> LucentContent

#
LucentContent::to_json

fn LucentContent::to_json(self : LucentContent) -> Json

=== LucentContent ===

#
LucentContent::tool_result

fn LucentContent::tool_result(tool_use_id : String, content : Array[LucentContent]) -> LucentContent

#
LucentContent::tool_result_error

fn LucentContent::tool_result_error(tool_use_id : String, content : Array[LucentContent]) -> LucentContent

#
LucentContent::tool_use

fn LucentContent::tool_use(id : String, name : String, arguments_json : String, arguments_value : Json?) -> LucentContent

#
LucentContent::video

fn LucentContent::video(media_type : String, source : LucentMediaSource) -> LucentContent

#
LucentConversationItem

pub(all) enum LucentConversationItem {
Message(LucentMessage)
ToolCall(LucentToolUse)
ToolResult(LucentToolResult)
Reasoning(LucentThinking)
AgentAction(LucentAgentAction)
} derive(Eq,
Debug
)

LucentConversationItem — 会话项异质平级

#
LucentConversationItem::agent_action

#
LucentConversationItem::from_json

fn LucentConversationItem::from_json(jv : Json) -> Result[LucentConversationItem, String]

=== LucentConversationItem ===

#
LucentConversationItem::message

#
LucentConversationItem::reasoning

#
LucentConversationItem::to_json

=== LucentConversationItem ===

#
LucentConversationItem::tool_call

#
LucentConversationItem::tool_result

#
LucentConversationMeta

pub struct LucentConversationMeta {
id : String?
model : String?
usage_input : Int?
} derive(Eq,
Debug
)

LucentConversationMeta — 会话元信息(ConversationStart 携带)

#
LucentConversationMeta::from_json

fn LucentConversationMeta::from_json(jv : Json) -> Result[LucentConversationMeta, String]

=== LucentConversationMeta ===

#
LucentConversationMeta::new

fn LucentConversationMeta::new(id : String?, model : String?, usage_input : Int?) -> LucentConversationMeta

#
LucentConversationMeta::to_json

=== LucentConversationMeta ===

#
LucentDiscovery

pub struct LucentDiscovery {
schema_version : String
protocol_version : String
schema_url : String
providers : Array[ProviderCapability]
} derive(Eq,
Debug
)

LucentDiscovery — 能力发现响应 SDK 接入时第一步调用,获取 Prism 实例的能力清单

#
LucentDiscovery::from_json

fn LucentDiscovery::from_json(jv : Json) -> Result[LucentDiscovery, String]

=== LucentDiscovery ===

#
LucentDiscovery::new

fn LucentDiscovery::new(protocol_version : String, schema_url : String, providers : Array[ProviderCapability]) -> LucentDiscovery

#
LucentDiscovery::to_json

fn LucentDiscovery::to_json(self : LucentDiscovery) -> Json

=== LucentDiscovery ===

#
LucentError

pub struct LucentError {
kind : LucentErrorKind
message : String
provider_code : String?
} derive(Eq,
Debug
)

LucentError — 错误结构化

#
LucentError::from_json

fn LucentError::from_json(jv : Json) -> Result[LucentError, String]

=== LucentError ===

#
LucentError::new

fn LucentError::new(kind : LucentErrorKind, message : String, provider_code : String?) -> LucentError

#
LucentError::simple

fn LucentError::simple(message : String) -> LucentError

#
LucentError::to_json

fn LucentError::to_json(self : LucentError) -> Json

=== LucentError ===

#
LucentErrorKind

pub(all) enum LucentErrorKind {
RateLimit
InvalidRequest
Authentication
ServerError
ContentFilter
Native(String)
} derive(Eq,
Debug
)

LucentErrorKind — 错误类型化

#
LucentErrorKind::from_json

fn LucentErrorKind::from_json(jv : Json) -> Result[LucentErrorKind, String]

=== LucentErrorKind ===

#
LucentErrorKind::from_string

fn LucentErrorKind::from_string(s : String) -> LucentErrorKind

#
LucentErrorKind::to_json

fn LucentErrorKind::to_json(self : LucentErrorKind) -> Json

=== LucentErrorKind ===

#
LucentFinishReason

pub(all) enum LucentFinishReason {
Stop
Length
ToolCalls
ContentFilter
Safety
Recitation
MalformedToolCall
Error
Native(String)
} derive(Eq,
Debug
)

LucentFinishReason — 结束原因

#
LucentFinishReason::from_json

fn LucentFinishReason::from_json(jv : Json) -> Result[LucentFinishReason, String]

=== LucentFinishReason ===

#
LucentFinishReason::from_string

fn LucentFinishReason::from_string(s : String) -> LucentFinishReason

LucentFinishReason 字符串映射(适配器共用)

#
LucentFinishReason::to_json

=== LucentFinishReason ===

#
LucentFinishReason::to_string

fn LucentFinishReason::to_string(self : LucentFinishReason) -> String

#
LucentMediaSource

pub(all) enum LucentMediaSource {
Inline(String)
Url(String)
FileUri(String)
} derive(Eq,
Debug
)

LucentMediaSource — 多模态来源三选一

#
LucentMediaSource::file_uri

fn LucentMediaSource::file_uri(uri : String) -> LucentMediaSource

#
LucentMediaSource::from_json

fn LucentMediaSource::from_json(jv : Json) -> Result[LucentMediaSource, String]

=== LucentMediaSource ===

#
LucentMediaSource::inline

fn LucentMediaSource::inline(data : String) -> LucentMediaSource

#
LucentMediaSource::to_json

=== LucentMediaSource ===

#
LucentMediaSource::url

fn LucentMediaSource::url(u : String) -> LucentMediaSource

#
LucentMessage

pub struct LucentMessage {
role : LucentRole
content : Array[LucentContent]
phase : String?
reasoning : LucentThinking?
} derive(Eq,
Debug
)

LucentMessage — 消息特例(role + content 块数组)

#
LucentMessage::from_json

fn LucentMessage::from_json(jv : Json) -> Result[LucentMessage, String]

=== LucentMessage ===

#
LucentMessage::new

#
LucentMessage::to_json

fn LucentMessage::to_json(self : LucentMessage) -> Json

=== LucentMessage ===

#
LucentMessage::with_phase

fn LucentMessage::with_phase(role : LucentRole, content : Array[LucentContent], phase : String?) -> LucentMessage

#
LucentMessage::with_reasoning

fn LucentMessage::with_reasoning(role : LucentRole, content : Array[LucentContent], reasoning : LucentThinking?) -> LucentMessage

构造带消息级 reasoning 的 message(openai-chat 等适配器入站使用)

#
LucentModality

pub(all) enum LucentModality {
Text
Image
Audio
Video
Pdf
Native(String)
} derive(Eq,
Debug
)

LucentModality — 模态声明

#
LucentModality::from_json

fn LucentModality::from_json(jv : Json) -> Result[LucentModality, String]

=== LucentModality ===

#
LucentModality::from_string

fn LucentModality::from_string(s : String) -> LucentModality?

#
LucentModality::to_json

fn LucentModality::to_json(self : LucentModality) -> Json

=== LucentModality ===

#
LucentMultimedia

pub struct LucentMultimedia {
media_type : String
source : LucentMediaSource
} derive(Eq,
Debug
)

LucentMultimedia — 多模态媒体块

#
LucentMultimedia::from_json

fn LucentMultimedia::from_json(jv : Json) -> Result[LucentMultimedia, String]

=== LucentMultimedia ===

#
LucentMultimedia::new

fn LucentMultimedia::new(media_type : String, source : LucentMediaSource) -> LucentMultimedia

#
LucentMultimedia::to_json

fn LucentMultimedia::to_json(self : LucentMultimedia) -> Json

=== LucentMultimedia ===

#
LucentOptions

pub struct LucentOptions {
temperature : Double?
top_p : Double?
top_k : Int?
max_output_tokens : Int?
stop : Array[String]?
stream : Bool
candidate_count : Int?
structured_output : LucentStructuredOutput?
store : Bool?
extras : Map[String, Json]?
} derive(Eq,
Debug
)

LucentOptions — 生成参数

#
LucentOptions::default

fn LucentOptions::default() -> LucentOptions

#
LucentOptions::from_json

fn LucentOptions::from_json(jv : Json) -> Result[LucentOptions, String]

=== LucentOptions ===

#
LucentOptions::new

fn LucentOptions::new(temperature : Double?, top_p : Double?, top_k : Int?, max_output_tokens : Int?, stop : Array[String]?, stream : Bool, candidate_count : Int?, structured_output : LucentStructuredOutput?, store : Bool?, extras : Map[String, Json]?) -> LucentOptions

#
LucentOptions::to_json

fn LucentOptions::to_json(self : LucentOptions) -> Json

=== LucentOptions ===

#
LucentOptions::with_extras

fn LucentOptions::with_extras(self : LucentOptions, extras : Map[String, Json]?) -> LucentOptions

构建含 extras 的选项副本

#
LucentOptions::with_store

fn LucentOptions::with_store(self : LucentOptions, store : Bool?) -> LucentOptions

构建含 store 值的选项副本

#
LucentReasoningConfig

pub struct LucentReasoningConfig {
enabled : Bool
budget_tokens : Int?
effort : LucentReasoningEffort?
summary : LucentReasoningSummary?
} derive(Eq,
Debug
)

LucentReasoningConfig — 推理配置

#
LucentReasoningConfig::disabled

#
LucentReasoningConfig::enabled

fn LucentReasoningConfig::enabled(budget : Int?) -> LucentReasoningConfig

#
LucentReasoningConfig::from_json

fn LucentReasoningConfig::from_json(jv : Json) -> Result[LucentReasoningConfig, String]

=== LucentReasoningConfig ===

#
LucentReasoningConfig::new

#
LucentReasoningConfig::to_json

=== LucentReasoningConfig ===

#
LucentReasoningEffort

pub(all) enum LucentReasoningEffort {
Low
Medium
High
XHigh
} derive(Eq,
Debug
)

LucentReasoningEffort — 推理力度

#
LucentReasoningEffort::from_json

fn LucentReasoningEffort::from_json(jv : Json) -> Result[LucentReasoningEffort, String]

=== LucentReasoningEffort ===

#
LucentReasoningSummary

pub(all) enum LucentReasoningSummary {
Auto
Concise
Detailed
} derive(Eq,
Debug
)

LucentReasoningSummary — 推理摘要详细度

#
LucentReasoningSummary::from_json

fn LucentReasoningSummary::from_json(jv : Json) -> Result[LucentReasoningSummary, String]

=== LucentReasoningSummary ===

#
LucentRequest

pub struct LucentRequest {
schema_version : String
model : String
instructions : Array[LucentContent]?
conversation : Array[LucentConversationItem]
tools : Array[LucentTool]?
tool_choice : LucentToolChoice?
options : LucentOptions
capabilities : LucentCapabilities?
reasoning : LucentReasoningConfig?
metadata : Map[String, String]?
extra : Map[String, Json]?
} derive(Eq,
Debug
)

LucentRequest — 完整 LLM 请求

#
LucentRequest::from_json

fn LucentRequest::from_json(jv : Json) -> Result[LucentRequest, String]

=== LucentRequest ===

#
LucentRequest::from_messages

fn LucentRequest::from_messages(model : String, instructions : Array[LucentContent]?, messages : Array[LucentMessage], tools : Array[LucentTool]?, tool_choice : LucentToolChoice?, options : LucentOptions, capabilities : LucentCapabilities?, reasoning : LucentReasoningConfig?, metadata : Map[String, String]?, extra : Map[String, Json]?) -> LucentRequest

便利构造器:用 messages 数组(旧风格)替代 conversation

#
LucentRequest::new

fn LucentRequest::new(model : String, instructions : Array[LucentContent]?, conversation : Array[LucentConversationItem], tools : Array[LucentTool]?, tool_choice : LucentToolChoice?, options : LucentOptions, capabilities : LucentCapabilities?, reasoning : LucentReasoningConfig?, metadata : Map[String, String]?, extra : Map[String, Json]?) -> LucentRequest

#
LucentRequest::to_json

fn LucentRequest::to_json(self : LucentRequest) -> Json

=== LucentRequest ===

#
LucentRequest::validate

校验 LucentRequest 的字段值合法性(与 ProviderCapability 无关的基本校验) 例如:temperature 范围 [0, 2],max_output_tokens >= 1,model 非空

#
LucentRequest::with_conversation

fn LucentRequest::with_conversation(self : LucentRequest, conversation : Array[LucentConversationItem]) -> LucentRequest

构建含新 conversation 的请求(子包后处理用)

#
LucentRequest::with_stream

fn LucentRequest::with_stream(self : LucentRequest, stream : Bool) -> LucentRequest

构建含 stream 标志的请求副本(SDK 使用)

#
LucentResponse

pub struct LucentResponse {
schema_version : String
id : String
model : String
created_at : Int?
choices : Array[LucentChoice]
usage : LucentUsage?
provider_payload : Json?
} derive(Eq,
Debug
)

LucentResponse — 非流式 LLM 响应

#
LucentResponse::from_json

fn LucentResponse::from_json(jv : Json) -> Result[LucentResponse, String]

=== LucentResponse ===

#
LucentResponse::get_text

fn LucentResponse::get_text(self : LucentResponse) -> String

提取响应中的纯文本(L1 SDK 使用)

#
LucentResponse::new

fn LucentResponse::new(id : String, model : String, created_at : Int?, choices : Array[LucentChoice], usage : LucentUsage?, provider_payload : Json?) -> LucentResponse

#
LucentResponse::reasoning

fn LucentResponse::reasoning(self : LucentResponse) -> LucentThinking?

便捷访问:首个 choice 的消息级 reasoning(SDK 取用入口)

#
LucentResponse::to_json

fn LucentResponse::to_json(self : LucentResponse) -> Json

=== LucentResponse ===

#
LucentResponse::validate

校验 LucentResponse 字段合法性

#
LucentResponse::with_provider_payload

fn LucentResponse::with_provider_payload(self : LucentResponse, payload : Json?) -> LucentResponse

构建含 provider_payload 的新响应(外部包访问用)

#
LucentRole

pub(all) enum LucentRole {
System
User
Assistant
Tool
Model
Developer
Native(String)
} derive(Eq,
Debug
)

LucentRole — 对话角色

#
LucentRole::from_json

fn LucentRole::from_json(jv : Json) -> Result[LucentRole, String]

#
LucentRole::from_string

fn LucentRole::from_string(s : String) -> LucentRole?

#
LucentRole::to_json

fn LucentRole::to_json(self : LucentRole) -> Json

=== LucentRole ===

#
LucentRole::to_string

fn LucentRole::to_string(self : LucentRole) -> String

#
LucentSafetyRating

pub struct LucentSafetyRating {
category : String
probability : String
} derive(Eq,
Debug
)

LucentSafetyRating — 安全评级

#
LucentSafetyRating::from_json

fn LucentSafetyRating::from_json(jv : Json) -> Result[LucentSafetyRating, String]

=== LucentSafetyRating ===

#
LucentSafetyRating::new

fn LucentSafetyRating::new(category : String, probability : String) -> LucentSafetyRating

#
LucentSafetyRating::to_json

=== LucentSafetyRating ===

#
LucentStreamEvent

pub(all) enum LucentStreamEvent {
ConversationStart(LucentConversationMeta)
ItemStart(Int, LucentConversationItem)
BlockStart(Int, LucentBlockType)
BlockDelta(Int, LucentBlockDelta)
BlockEnd(Int)
ItemEnd(Int)
BlockDiscard(Int)
Annotations(Int, Array[LucentAnnotation])
Finish(LucentFinishReason)
Usage(LucentUsage)
Error(LucentError)
Done
} derive(Eq,
Debug
)

LucentStreamEvent — 流事件(canonical:块生命周期)

#
LucentStreamEvent::from_json

fn LucentStreamEvent::from_json(jv : Json) -> Result[LucentStreamEvent, String]

=== LucentStreamEvent ===

#
LucentStreamEvent::to_json

=== LucentStreamEvent ===

#
LucentStructuredOutput

pub(all) enum LucentStructuredOutput {
JsonObject
Text
JsonSchema(String)
} derive(Eq,
Debug
)

LucentStructuredOutput — 结构化输出

#
LucentStructuredOutput::from_json

fn LucentStructuredOutput::from_json(jv : Json) -> Result[LucentStructuredOutput, String]

=== LucentStructuredOutput ===

#
LucentStructuredOutput::to_json

=== LucentStructuredOutput ===

#
LucentThinking

pub struct LucentThinking {
text : String
signature : String?
redacted : Bool
summary : Array[LucentContent]?
} derive(Eq,
Debug
)

LucentThinking — 推理内容

#
LucentThinking::from_json

fn LucentThinking::from_json(jv : Json) -> Result[LucentThinking, String]

=== LucentThinking ===

#
LucentThinking::new

fn LucentThinking::new(text : String, signature : String?, redacted : Bool, summary : Array[LucentContent]?) -> LucentThinking

#
LucentThinking::redacted

fn LucentThinking::redacted(signature : String?) -> LucentThinking

#
LucentThinking::to_json

fn LucentThinking::to_json(self : LucentThinking) -> Json

=== LucentThinking ===

#
LucentThinking::visible

fn LucentThinking::visible(text : String, signature : String?) -> LucentThinking

#
LucentTool

pub struct LucentTool {
name : String
description : String?
parameters_json : String
strict : Bool?
kind : LucentToolKind
} derive(Eq,
Debug
)

LucentTool — 工具定义

#
LucentTool::from_json

fn LucentTool::from_json(jv : Json) -> Result[LucentTool, String]

=== LucentTool ===

#
LucentTool::new

fn LucentTool::new(name : String, description : String?, parameters_json : String, strict : Bool?, kind : LucentToolKind) -> LucentTool

#
LucentTool::simple

fn LucentTool::simple(name : String, description : String, parameters_json : String) -> LucentTool

#
LucentTool::to_json

fn LucentTool::to_json(self : LucentTool) -> Json

=== LucentTool ===

#
LucentToolChoice

pub(all) enum LucentToolChoice {
Auto
None
Required
SpecificTool(String)
} derive(Eq,
Debug
)

LucentToolChoice — 工具选择(类型化)

#
LucentToolChoice::from_json

fn LucentToolChoice::from_json(jv : Json) -> Result[LucentToolChoice, String]

=== LucentToolChoice ===

#
LucentToolChoice::to_json

fn LucentToolChoice::to_json(self : LucentToolChoice) -> Json

=== LucentToolChoice ===

#
LucentToolKind

pub(all) enum LucentToolKind {
Function
FileSearch
WebSearch
CodeInterpreter
ComputerUse
CodeExecution
Shell
ApplyPatch
MCP
Native(String)
} derive(Eq,
Debug
)

LucentToolKind — 工具类型(消费方处理逻辑不同)

#
LucentToolResult

pub struct LucentToolResult {
tool_use_id : String
content : Array[LucentContent]
is_error : Bool
} derive(Eq,
Debug
)

LucentToolResult — 工具结果(多块内容)

#
LucentToolResult::error

fn LucentToolResult::error(tool_use_id : String, content : Array[LucentContent]) -> LucentToolResult

#
LucentToolResult::from_json

fn LucentToolResult::from_json(jv : Json) -> Result[LucentToolResult, String]

=== LucentToolResult ===

#
LucentToolResult::new

fn LucentToolResult::new(tool_use_id : String, content : Array[LucentContent], is_error : Bool) -> LucentToolResult

#
LucentToolResult::ok

fn LucentToolResult::ok(tool_use_id : String, content : Array[LucentContent]) -> LucentToolResult

#
LucentToolResult::to_json

fn LucentToolResult::to_json(self : LucentToolResult) -> Json

=== LucentToolResult ===

#
LucentToolUse

pub struct LucentToolUse {
id : String
name : String
arguments_json : String
arguments_value : Json?
} derive(Eq,
Debug
)

LucentToolUse — 工具调用(结构化)

#
LucentToolUse::from_json

fn LucentToolUse::from_json(jv : Json) -> Result[LucentToolUse, String]

=== LucentToolUse ===

#
LucentToolUse::new

fn LucentToolUse::new(id : String, name : String, arguments_json : String, arguments_value : Json?) -> LucentToolUse

#
LucentToolUse::to_json

fn LucentToolUse::to_json(self : LucentToolUse) -> Json

=== LucentToolUse ===

#
LucentUsage

pub struct LucentUsage {
prompt_tokens : Int
completion_tokens : Int
total_tokens : Int
reasoning_tokens : Int?
cached_tokens : Int?
cache_creation_tokens : Int?
} derive(Eq,
Debug
)

LucentUsage — Token 用量(面向 reasoning 时代)

#
LucentUsage::from_json

fn LucentUsage::from_json(jv : Json) -> Result[LucentUsage, String]

=== LucentUsage ===

#
LucentUsage::new

fn LucentUsage::new(prompt_tokens : Int, completion_tokens : Int, total_tokens : Int) -> LucentUsage

#
LucentUsage::to_json

fn LucentUsage::to_json(self : LucentUsage) -> Json

=== LucentUsage ===

#
LucentUsage::with_reasoning

fn LucentUsage::with_reasoning(prompt_tokens : Int, completion_tokens : Int, total_tokens : Int, reasoning_tokens : Int) -> LucentUsage

#
ProviderCapability

pub struct ProviderCapability {
model_pattern : String
provider : String
capabilities : LucentCapabilities
extra_params : Map[String, Json]?
} derive(Eq,
Debug
)

ProviderCapability — 适配器能力声明(SDK 自省用)

#
ProviderCapability::from_json

fn ProviderCapability::from_json(jv : Json) -> Result[ProviderCapability, String]

=== ProviderCapability ===

#
ProviderCapability::new

fn ProviderCapability::new(model_pattern : String, provider : String, capabilities : LucentCapabilities, extra_params : Map[String, Json]?) -> ProviderCapability

#
ProviderCapability::to_json

=== ProviderCapability ===

#
SupportLevel

pub(all) enum SupportLevel {
Full
Partial
Absent
} derive(Eq,
Debug
)

SupportLevel — 能力支持级别 替代原有 Bool 能力声明,区分「完全支持 / 部分支持 / 不支持」三档。 线格式:"full" / "partial" / "none"Absent 命名避开 Option::None 冲突)。

#
SupportLevel::from_json

fn SupportLevel::from_json(jv : Json) -> Result[SupportLevel, String]

=== SupportLevel ===

#
SupportLevel::from_string

fn SupportLevel::from_string(s : String) -> SupportLevel?

#
SupportLevel::to_json

fn SupportLevel::to_json(self : SupportLevel) -> Json

=== SupportLevel ===

#
SupportLevel::to_string

fn SupportLevel::to_string(self : SupportLevel) -> String

#
ValidateResult

pub struct ValidateResult {
valid : Bool
errors : Array[String]
warnings : Array[String]
}

ValidateResult — 校验结果

#
ValidateResult::error

fn ValidateResult::error(msg : String) -> ValidateResult

#
ValidateResult::ok

#
lucent_collect_annotations

fn lucent_collect_annotations(events : Array[LucentStreamEvent]) -> Array[LucentAnnotation]

便利:从 LucentStreamEvent 流中提取所有 Annotations 事件(宿主语言收集标注用)

#
lucent_content_to_text

fn lucent_content_to_text(parts : Array[LucentContent]) -> String

将 LucentContent 数组拼接为纯文本(Text 块拼接,其他块忽略)

#
lucent_items_from_messages

fn lucent_items_from_messages(msgs : Array[LucentMessage]) -> Array[LucentConversationItem]

便利:将 Array[LucentMessage] 包装为 Array[LucentConversationItem]

#
lucent_messages_from_items

fn lucent_messages_from_items(items : Array[LucentConversationItem]) -> Array[LucentMessage]

从 conversation items 中提取所有 Message 项(用于适配器需要 messages 视图的场景)

#
lucent_stream_events_to_accumulated

fn lucent_stream_events_to_accumulated(events : Array[LucentStreamEvent], fallback_id : String, fallback_model : String) -> AccumulatedResponse

完整累加:把流事件合成为 LucentResponse,同时保留 annotations/native_events/agent_actions 及对应诊断。原 lucent_stream_events_to_response 是其薄包装(取 .response)。

#
lucent_stream_events_to_response

fn lucent_stream_events_to_response(events : Array[LucentStreamEvent], fallback_id : String, fallback_model : String) -> LucentResponse

薄包装:取累加结果的 response(既有调用方兼容)

#
lux_to_json_string

fn lux_to_json_string(jv : Json) -> String

=== Helper: stringify a Lux type to JSON ===