MCPcopy Create free account
hub / github.com/MiniCodeMonkey/chief / ParseLineOpenCode

Function ParseLineOpenCode

internal/loop/opencode_parser.go:65–136  ·  view source on GitHub ↗
(line string)

Source from the content-addressed store, hash-verified

63}
64
65func ParseLineOpenCode(line string) *Event {
66 line = strings.TrimSpace(line)
67 if line == "" {
68 return nil
69 }
70
71 var ev opencodeEvent
72 if err := json.Unmarshal([]byte(line), &ev); err != nil {
73 return nil
74 }
75
76 switch ev.Type {
77 case "step_start":
78 return &Event{Type: EventIterationStart}
79
80 case "tool_use":
81 if ev.Part == nil {
82 return nil
83 }
84 if ev.Part.State != nil && ev.Part.State.Status == "completed" {
85 return &Event{
86 Type: EventToolResult,
87 Tool: ev.Part.Tool,
88 Text: ev.Part.State.Output,
89 }
90 }
91 // Tool starting or in-progress
92 return &Event{
93 Type: EventToolStart,
94 Tool: ev.Part.Tool,
95 }
96
97 case "text":
98 if ev.Part == nil {
99 return nil
100 }
101 if strings.Contains(ev.Part.Text, "<chief-done/>") {
102 return &Event{
103 Type: EventStoryDone,
104 Text: ev.Part.Text,
105 }
106 }
107 return &Event{
108 Type: EventAssistantText,
109 Text: ev.Part.Text,
110 }
111
112 case "step_finish":
113 if ev.Part == nil {
114 return nil
115 }
116 if ev.Part.Reason == "stop" {
117 return &Event{Type: EventComplete}
118 }
119 return nil
120
121 case "error":
122 msg := "unknown error"

Calls

no outgoing calls