aicodingsession

package
v1.109.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 17, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
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"
)
View Source
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

func Redact(ctx context.Context, evidence []byte) ([]byte, *redaction.Report, error)

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

func ResolveMode(mode string) string

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 Agent

type Agent struct {
	Name    string `json:"name"`
	Version string `json:"version,omitempty"`
}

Agent identifies the AI agent provider.

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

func NewEvidence(data Data) *Evidence

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 LineRange added in v1.89.11

type LineRange struct {
	Start int `json:"start"`
	End   int `json:"end"`
}

LineRange represents a contiguous range of lines.

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

type SubagentTokens struct {
	Input  int `json:"input"`
	Output int `json:"output"`
}

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL