Expose profile inspection through the engine

This commit is contained in:
2026-07-30 19:52:00 +00:00
parent 0bf5f88136
commit 242eace4a7
5 changed files with 255 additions and 25 deletions

38
doc.go
View File

@@ -3,25 +3,27 @@
//
// Applications construct an [Engine] with [NewEngine], select filesystem or
// in-memory sources and optional engine-scoped [Backend] registrations, and
// call [Engine.Prepare], [Engine.PrepareExecution], [Engine.Run], or
// [Engine.RunPrepared]. Concrete registries, repositories, validators, and the
// built-in OpenAI-compatible client remain internal implementation details.
// call [Engine.InspectProfile], [Engine.Prepare], [Engine.PrepareExecution],
// [Engine.Run], or [Engine.RunPrepared]. Concrete registries, repositories,
// validators, and the built-in OpenAI-compatible client remain internal
// implementation details.
//
// # Concurrency and ownership
//
// An Engine supports concurrent Prepare, PrepareExecution, Run, and RunPrepared
// calls. Engine-local backend policies bound admitted Run and RunPrepared calls
// and model generations where configured, while different backend pools and
// unlimited backends continue independently. An injected [LLMClient] or
// [ArtifactReader] can therefore still receive concurrent calls and must be
// safe for that use.
// An Engine supports concurrent InspectProfile, Prepare, PrepareExecution, Run,
// and RunPrepared calls. Engine-local backend policies bound admitted Run and
// RunPrepared calls and model generations where configured, while different
// backend pools and unlimited backends continue independently. An injected
// [LLMClient] or [ArtifactReader] can therefore still receive concurrent calls
// and must be safe for that use.
//
// NewEngine copies in-memory profiles and backend definitions. Prepare,
// PrepareExecution, and Run copy request maps, slices, pointer values, and
// JSON-compatible extra parameters before using them. Returned values and
// values passed to extension interfaces are likewise isolated from engine
// state. Callers own those copies and may mutate them after the call that
// supplied or returned them.
// JSON-compatible extra parameters before using them. InspectProfile returns
// copied profile inspection values. Returned values and values passed to
// extension interfaces are likewise isolated from engine state. Callers own
// those copies and may mutate them after the call that supplied or returned
// them.
//
// # Security and sensitive data
//
@@ -47,11 +49,11 @@
// [GenerateResponse], [ExecutionTargetPresence], and the string value types
// used by those values.
//
// Construction and handle values, including [Config], [Backend], [RunRequest],
// [ArtifactRef], [ExecutionTargetOverride], [Profile],
// [OpenAICompatibleProfileConfig], and [PreparedExecution], do not have stable
// JSON representations. Direct API keys are nevertheless excluded from JSON
// for every public value.
// Construction, inspection, and handle values, including [Config], [Backend],
// [RunRequest], [ArtifactRef], [ExecutionTargetOverride], [Profile],
// [OpenAICompatibleProfileConfig], [ProfileInspection], and
// [PreparedExecution], do not have stable JSON representations. Direct API
// keys are nevertheless excluded from JSON for every public value.
//
// JSON timestamps use time.Time's RFC 3339 encoding and are omitted when zero.
// PreparedRun and RunResult durations are encoded as integer milliseconds in