morning-start/prism/lux does not have a README file
pub struct AccumulatedResponse {
response : LucentResponse
annotations : Array[LucentAnnotation]
native_events : Array[LucentStreamEvent]
agent_actions : Array[LucentAgentAction]
diagnostics : Array[ConversionDiagnostic]
} derive(Eq, Debug)pub struct ConversionDiagnostic {
field : String
status : ConversionStatus
detail : String?
} derive(Eq, Debug)fn ConversionDiagnostic::new(field : String, status : ConversionStatus, detail : String?) -> ConversionDiagnosticpub struct ConversionResult[T] {
value : T
diagnostics : Array[ConversionDiagnostic]
} derive(Eq, Debug)fn[T] ConversionResult::from_json(jv : Json, decode : (Json) -> Result[T, String]) -> Result[ConversionResult[T], String]fn[T] ConversionResult::with_diagnostic(self : ConversionResult[T], diagnostic : ConversionDiagnostic) -> ConversionResult[T]fn[T] ConversionResult::with_diagnostics(self : ConversionResult[T], diagnostics : Array[ConversionDiagnostic]) -> ConversionResult[T]fn LucentAgentAction::new(kind : String, id : String, call_id : String?, name : String?, arguments_json : String?, result : String?, provider_payload : Json?) -> LucentAgentActionpub struct LucentAnnotation {
kind : LucentAnnotationKind
text : String?
reference : String?
start : Int?
end : Int?
} derive(Eq, Debug)fn LucentAnnotation::new(kind : LucentAnnotationKind, text : String?, reference : String?, start : Int?, end : Int?) -> LucentAnnotationpub 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)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]) -> LucentCapabilitiespub struct LucentChoice {
index : Int
message : LucentMessage
finish_reason : LucentFinishReason
safety_ratings : Array[LucentSafetyRating]?
} derive(Eq, Debug)fn LucentChoice::new(index : Int, message : LucentMessage, finish_reason : LucentFinishReason, safety_ratings : Array[LucentSafetyRating]?) -> LucentChoicepub(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)fn LucentContent::text_with_annotations(s : String, annotations : Array[LucentAnnotation]) -> LucentContentfn LucentContent::tool_result(tool_use_id : String, content : Array[LucentContent]) -> LucentContentfn LucentContent::tool_result_error(tool_use_id : String, content : Array[LucentContent]) -> LucentContentfn LucentContent::tool_use(id : String, name : String, arguments_json : String, arguments_value : Json?) -> LucentContentpub(all) enum LucentConversationItem {
Message(LucentMessage)
ToolCall(LucentToolUse)
ToolResult(LucentToolResult)
Reasoning(LucentThinking)
AgentAction(LucentAgentAction)
} derive(Eq, Debug)fn LucentConversationMeta::new(id : String?, model : String?, usage_input : Int?) -> LucentConversationMetapub struct LucentDiscovery {
schema_version : String
protocol_version : String
schema_url : String
providers : Array[ProviderCapability]
} derive(Eq, Debug)fn LucentDiscovery::new(protocol_version : String, schema_url : String, providers : Array[ProviderCapability]) -> LucentDiscoverypub struct LucentError {
kind : LucentErrorKind
message : String
provider_code : String?
} derive(Eq, Debug)fn LucentError::new(kind : LucentErrorKind, message : String, provider_code : String?) -> LucentErrorpub struct LucentMessage {
role : LucentRole
content : Array[LucentContent]
phase : String?
reasoning : LucentThinking?
} derive(Eq, Debug)fn LucentMessage::with_phase(role : LucentRole, content : Array[LucentContent], phase : String?) -> LucentMessagefn LucentMessage::with_reasoning(role : LucentRole, content : Array[LucentContent], reasoning : LucentThinking?) -> LucentMessagefn 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]?) -> LucentOptionspub struct LucentReasoningConfig {
enabled : Bool
budget_tokens : Int?
effort : LucentReasoningEffort?
summary : LucentReasoningSummary?
} derive(Eq, Debug)fn LucentReasoningConfig::new(effort : LucentReasoningEffort?, summary : LucentReasoningSummary?) -> LucentReasoningConfigpub 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)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]?) -> LucentRequestfn 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]?) -> LucentRequestfn LucentRequest::with_conversation(self : LucentRequest, conversation : Array[LucentConversationItem]) -> LucentRequestpub struct LucentResponse {
schema_version : String
id : String
model : String
created_at : Int?
choices : Array[LucentChoice]
usage : LucentUsage?
provider_payload : Json?
} derive(Eq, Debug)fn LucentResponse::new(id : String, model : String, created_at : Int?, choices : Array[LucentChoice], usage : LucentUsage?, provider_payload : Json?) -> LucentResponsepub(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)pub struct LucentThinking {
text : String
signature : String?
redacted : Bool
summary : Array[LucentContent]?
} derive(Eq, Debug)fn LucentThinking::new(text : String, signature : String?, redacted : Bool, summary : Array[LucentContent]?) -> LucentThinkingpub struct LucentTool {
name : String
description : String?
parameters_json : String
strict : Bool?
kind : LucentToolKind
} derive(Eq, Debug)fn LucentTool::new(name : String, description : String?, parameters_json : String, strict : Bool?, kind : LucentToolKind) -> LucentToolpub struct LucentToolResult {
tool_use_id : String
content : Array[LucentContent]
is_error : Bool
} derive(Eq, Debug)fn LucentToolResult::error(tool_use_id : String, content : Array[LucentContent]) -> LucentToolResultfn LucentToolResult::new(tool_use_id : String, content : Array[LucentContent], is_error : Bool) -> LucentToolResultfn LucentToolUse::new(id : String, name : String, arguments_json : String, arguments_value : Json?) -> LucentToolUsefn LucentUsage::new(prompt_tokens : Int, completion_tokens : Int, total_tokens : Int) -> LucentUsagefn LucentUsage::with_reasoning(prompt_tokens : Int, completion_tokens : Int, total_tokens : Int, reasoning_tokens : Int) -> LucentUsagepub struct ProviderCapability {
model_pattern : String
provider : String
capabilities : LucentCapabilities
extra_params : Map[String, Json]?
} derive(Eq, Debug)fn ProviderCapability::new(model_pattern : String, provider : String, capabilities : LucentCapabilities, extra_params : Map[String, Json]?) -> ProviderCapabilityfn lucent_stream_events_to_accumulated(events : Array[LucentStreamEvent], fallback_id : String, fallback_model : String) -> AccumulatedResponsefn lucent_stream_events_to_response(events : Array[LucentStreamEvent], fallback_id : String, fallback_model : String) -> LucentResponseA unified LLM protocol middleware converting between OpenAI, Anthropic, Gemini and other provider formats via the Lucent IR neutral protocol