Documentation
¶
Index ¶
- Constants
- func Redact(ctx context.Context, evidence []byte) ([]byte, *redaction.Report, error)
- func ResolveMode(mode string) string
- type Agent
- type CodeChanges
- type Conversation
- type Data
- type Evidence
- type FileChange
- type GitContext
- type LineRange
- type Model
- type Session
- type Subagent
- type SubagentTokens
- type ToolSummary
- type ToolsUsed
- type Usage
Constants ¶
const ( // EvidenceID is the identifier for the AI coding session material type EvidenceID = "CHAINLOOP_AI_CODING_SESSION" // EvidenceSchemaURL is the URL to the JSON schema for AI coding session EvidenceSchemaURL = "https://schemas.chainloop.dev/aicodingsession/0.1/ai-coding-session.schema.json" )
const ( // ModeCoding is a session traced through the agent and git hooks installed // by `chainloop trace init`. It is what an absent mode means, so sessions // recorded before the field existed keep their meaning. ModeCoding = "coding" // ModeGeneric is a single-shot session wrapped by `chainloop trace run`. ModeGeneric = "generic" )
How `chainloop trace` was driven for a session. Recorded so that consumers can tell an ongoing coding session apart from a one-shot wrapped command instead of presenting them as the same thing. More modes are expected, so the field is a plain string rather than a closed enumeration.
Variables ¶
This section is empty.
Functions ¶
func Redact ¶ added in v1.107.0
Redact removes detected secrets from an AI coding session evidence document.
It returns the sanitised bytes and a summary of what was replaced. A document with no detected secrets is returned verbatim, so that the common case keeps its original digest. The result is guaranteed to still validate against the AI coding session schema; if it does not, redaction fails rather than uploading either an invalid document or an unredacted one.
func ResolveMode ¶ added in v1.109.5
ResolveMode maps an unset mode onto the one an absent mode means, so that the default is written down once instead of at each producer and consumer.
Types ¶
type CodeChanges ¶
type CodeChanges struct {
FilesModified int `json:"files_modified,omitempty"`
FilesCreated int `json:"files_created,omitempty"`
FilesDeleted int `json:"files_deleted,omitempty"`
LinesAdded int `json:"lines_added,omitempty"`
LinesRemoved int `json:"lines_removed,omitempty"`
AILinesAdded int `json:"ai_lines_added,omitempty"`
AILinesRemoved int `json:"ai_lines_removed,omitempty"`
HumanLinesAdded int `json:"human_lines_added,omitempty"`
HumanLinesRemoved int `json:"human_lines_removed,omitempty"`
Files []FileChange `json:"files,omitempty"`
}
CodeChanges summarizes code modifications made during the session.
type Conversation ¶
type Conversation struct {
TotalMessages int `json:"total_messages,omitempty"`
UserMessages int `json:"user_messages,omitempty"`
AssistantMessages int `json:"assistant_messages,omitempty"`
}
Conversation holds message count statistics.
type Data ¶
type Data struct {
SchemaVersion string `json:"schema_version"`
Agent Agent `json:"agent"`
Session Session `json:"session"`
GitContext *GitContext `json:"git_context,omitempty"`
CodeChanges *CodeChanges `json:"code_changes,omitempty"`
Model *Model `json:"model,omitempty"`
Usage *Usage `json:"usage,omitempty"`
ToolsUsed *ToolsUsed `json:"tools_used,omitempty"`
Conversation *Conversation `json:"conversation,omitempty"`
Subagents []Subagent `json:"subagents,omitempty"`
RawSession map[string][]json.RawMessage `json:"raw_session,omitempty"`
Warnings []string `json:"warnings,omitempty"`
}
Data is the AI coding session payload.
type Evidence ¶
type Evidence struct {
ID string `json:"chainloop.material.evidence.id"`
Schema string `json:"schema"`
Data Data `json:"data"`
}
Evidence represents the complete evidence structure for AI coding session.
func NewEvidence ¶
NewEvidence creates a new Evidence instance.
type FileChange ¶
type FileChange struct {
Path string `json:"path"`
Status string `json:"status"`
LinesAdded int `json:"lines_added,omitempty"`
LinesRemoved int `json:"lines_removed,omitempty"`
Attribution string `json:"attribution,omitempty"`
LineRanges []LineRange `json:"line_ranges,omitempty"`
SessionIDs []string `json:"session_ids,omitempty"`
}
FileChange represents a single file modification in the session.
type GitContext ¶
type GitContext struct {
Repository string `json:"repository,omitempty"`
Branch string `json:"branch,omitempty"`
WorkDir string `json:"work_dir,omitempty"`
CommitStart string `json:"commit_start,omitempty"`
CommitEnd string `json:"commit_end,omitempty"`
Commits []string `json:"commits,omitempty"`
CommitCount int `json:"commit_count,omitempty"`
}
GitContext holds repository and commit information at capture time.
type Model ¶
type Model struct {
Primary string `json:"primary,omitempty"`
Provider string `json:"provider,omitempty"`
ModelsUsed []string `json:"models_used,omitempty"`
}
Model holds information about the AI models used in the session.
type Session ¶
type Session struct {
ID string `json:"id"`
Slug string `json:"slug,omitempty"`
// Mode is one of the Mode* constants. Empty means ModeCoding.
Mode string `json:"mode,omitempty"`
StartedAt string `json:"started_at"`
EndedAt string `json:"ended_at,omitempty"`
DurationSeconds int `json:"duration_seconds"`
}
Session holds timing and identity information for the coding session.
type Subagent ¶ added in v1.89.11
type Subagent struct {
ID string `json:"id"`
Type string `json:"type"`
Description string `json:"description"`
Tokens SubagentTokens `json:"tokens"`
}
Subagent describes a spawned subagent within the session.
type SubagentTokens ¶ added in v1.89.11
SubagentTokens holds token usage for a subagent.
type ToolSummary ¶
type ToolSummary struct {
ToolName string `json:"tool_name"`
InvocationCount int `json:"invocation_count"`
}
ToolSummary represents usage statistics for a single tool.
type ToolsUsed ¶
type ToolsUsed struct {
Summary []ToolSummary `json:"summary,omitempty"`
TotalInvocations int `json:"total_invocations,omitempty"`
}
ToolsUsed summarizes tool usage during the session.
type Usage ¶
type Usage struct {
InputTokens int `json:"input_tokens,omitempty"`
OutputTokens int `json:"output_tokens,omitempty"`
TotalTokens int `json:"total_tokens,omitempty"`
CacheReadInputTokens int `json:"cache_read_input_tokens,omitempty"`
CacheCreationInputTokens int `json:"cache_creation_input_tokens,omitempty"`
EstimatedCostUSD float64 `json:"estimated_cost_usd,omitempty"`
}
Usage holds token usage and cost information.