agent: move TokenUsage and SkillEvent to the leaf types package · Entire

agent: move TokenUsage and SkillEvent to the leaf types package

7017397·

Soph·4w ago·5 files·+120 added/-82 removed

The checkpoint contract DTOs embed TokenUsage and SkillEvent, but both lived in the heavy agent package — so any package referencing the checkpoint metadata types transitively pulled in agent (and its TUI/launch/review dependencies). That blocks relocating the contract to a standalone api/checkpoint package.

Move the type definitions (and the SkillEvent string constants) into the existing leaf agent/types package (which has no imports) and leave transparent aliases in agent:

type TokenUsage = types.TokenUsage type SkillEvent = types.SkillEvent (+ the four Skill* sub-types) const SkillEventTypePromptInvocation = types.SkillEventTypePromptInvocation (+ the rest)

All ~34 existing agent.TokenUsage / agent.SkillEvent references keep compiling unchanged via the aliases. The SkillEventExtractor interface stays in agent (it's agent-implementation behavior, not contract data); the constants move alongside the structs so the leaf package is self-contained for constructing skill events. checkpoint.go now references types.* and no longer imports agent — the prerequisite for the api/checkpoint relocation (next in the stack).

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

Sessions

44f690c46059View transcript

Changes

5

1
2
3
4
5
6
7
3
4
9
5
6
7
8
9
11
12
13
14
10
11
12
16
17
18
19
13
14
15
16
21
22
23
24
17
18
19
20
21
22
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
23
24
25
26
27
28
29
30
31
32

package agent

// Skill event types recorded in checkpoint metadata. const ( SkillEventTypePromptInvocation = "prompt_invocation" SkillEventTypeToolInvocation = "tool_invocation" ) import "github.com/entireio/cli/cmd/entire/cli/agent/types"

// Skill event source signals. // The skill-event types and their constants live in the leaf agent/types // package so the checkpoint contract can construct and reference skill events // without importing the full agent package. These aliases keep existing // agent.SkillEvent* references working. const ( SkillSignalPiInputSlashCommand = "input_slash_command" SkillSignalPromptSlashCommand = "prompt_slash_command" SkillSignalClaudeSkillToolUse = "skill_tool_use" ) SkillEventTypePromptInvocation = types.SkillEventTypePromptInvocation SkillEventTypeToolInvocation = types.SkillEventTypeToolInvocation

// Skill event confidence values. const ( SkillConfidenceExplicit = "explicit" ) SkillSignalPiInputSlashCommand = types.SkillSignalPiInputSlashCommand SkillSignalPromptSlashCommand = types.SkillSignalPromptSlashCommand SkillSignalClaudeSkillToolUse = types.SkillSignalClaudeSkillToolUse

// Skill event collapse targets. const ( SkillCollapseTargetUserMessage = "user_message" SkillCollapseTargetToolPair = "tool_pair" SkillConfidenceExplicit = types.SkillConfidenceExplicit

SkillCollapseTargetUserMessage = types.SkillCollapseTargetUserMessage SkillCollapseTargetToolPair = types.SkillCollapseTargetToolPair )

// SkillEvent records a native agent skill signal without rewriting the raw transcript. // Consumers use TranscriptAnchor/Native to locate the underlying raw event and Collapse // to decide whether/how to hide verbose skill material by default. type SkillEvent struct { ID string json:"id,omitempty" EventType string json:"event_type" Skill SkillEventSkill json:"skill" Source SkillEventSource json:"source"

TurnID string json:"turn_id,omitempty" Timestamp string json:"timestamp,omitempty"

TranscriptAnchor *SkillEventTranscriptAnchor json:"transcript_anchor,omitempty" Native map[string]string json:"native,omitempty" Collapse SkillEventCollapse json:"collapse" }

type SkillEventSkill struct { Name string json:"name" }

type SkillEventSource struct { Agent string json:"agent" Signal string json:"signal" Confidence string json:"confidence" }

type SkillEventTranscriptAnchor struct { Unit string json:"unit,omitempty" Start int json:"start,omitempty" End int json:"end,omitempty" EntryIDs []string json:"entry_ids,omitempty" ToolUseID string json:"tool_use_id,omitempty" }

type SkillEventCollapse struct { Target string json:"target" Label string json:"label,omitempty" DefaultCollapsed bool json:"default_collapsed" } type ( SkillEvent = types.SkillEvent SkillEventSkill = types.SkillEventSkill SkillEventSource = types.SkillEventSource SkillEventTranscriptAnchor = types.SkillEventTranscriptAnchor SkillEventCollapse = types.SkillEventCollapse )

// SkillEventExtractor is implemented by agents that can derive native skill events // from their transcript format.