detached 895a89c

fix(ci): restore cross-platform trace checks

commit
895a89cb9f18e98523b4e4283cdf847d494e835a
author
brice · · 2026-08-12 05:51 UTC
parent
ab33287
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
3 files · +9 -42
M packages/agent/subagents/runner_e2e_test.go +0 -39
@@ -262,45 +262,6 @@ func retrySend(f *Supervisor, id, msg string, timeout time.Duration) error {
262262 return lastErr
263263 }
264264
265-func eventText(ev Event) string {
266- if ev.Type != "assistant_message" && ev.Type != "user_message" {
267- return ""
268- }
269- content, _ := ev.Data["content"].([]any)
270- var sb strings.Builder
271- for _, c := range content {
272- m, _ := c.(map[string]any)
273- if t, _ := m["type"].(string); t == "text" {
274- if txt, _ := m["text"].(string); txt != "" {
275- sb.WriteString(txt)
276- sb.WriteByte('\n')
277- }
278- }
279- }
280- return sb.String()
281-}
282-
283-func dumpEventsVerbose(evs []Event) string {
284- var sb strings.Builder
285- for _, ev := range evs {
286- sb.WriteString(ev.Type)
287- sb.WriteString("\t")
288- for k, v := range ev.Data {
289- sb.WriteString(k)
290- sb.WriteString("=")
291- switch vv := v.(type) {
292- case string:
293- sb.WriteString(vv)
294- default:
295- sb.WriteString("<...>")
296- }
297- sb.WriteString(" ")
298- }
299- sb.WriteString("\n")
300- }
301- return sb.String()
302-}
303-
304265 func formatEvents(evs []Event) string {
305266 var sb strings.Builder
306267 for _, ev := range evs {
@@ -262,45 +262,6 @@ func retrySend(f *Supervisor, id, msg string, timeout time.Duration) error {
262 return lastErr262 return lastErr
263 }263 }
264 264
265-func eventText(ev Event) string {
266- if ev.Type != "assistant_message" && ev.Type != "user_message" {
267- return ""
268- }
269- content, _ := ev.Data["content"].([]any)
270- var sb strings.Builder
271- for _, c := range content {
272- m, _ := c.(map[string]any)
273- if t, _ := m["type"].(string); t == "text" {
274- if txt, _ := m["text"].(string); txt != "" {
275- sb.WriteString(txt)
276- sb.WriteByte('\n')
277- }
278- }
279- }
280- return sb.String()
281-}
282-
283-func dumpEventsVerbose(evs []Event) string {
284- var sb strings.Builder
285- for _, ev := range evs {
286- sb.WriteString(ev.Type)
287- sb.WriteString("\t")
288- for k, v := range ev.Data {
289- sb.WriteString(k)
290- sb.WriteString("=")
291- switch vv := v.(type) {
292- case string:
293- sb.WriteString(vv)
294- default:
295- sb.WriteString("<...>")
296- }
297- sb.WriteString(" ")
298- }
299- sb.WriteString("\n")
300- }
301- return sb.String()
302-}
303-
304 func formatEvents(evs []Event) string {265 func formatEvents(evs []Event) string {
305 var sb strings.Builder266 var sb strings.Builder
306 for _, ev := range evs {267 for _, ev := range evs {
M packages/agent/subagents/trace_test.go +9 -0
@@ -163,6 +163,15 @@ func TestTraceWriterConcurrentRecordHasOrderedGlobalSequences(t *testing.T) {
163163
164164 func assertPrivate(t *testing.T, path string, want os.FileMode) {
165165 t.Helper()
166+ if os.PathSeparator == '\\' {
167+ // Windows does not expose POSIX permission bits through os.FileMode.
168+ // The writer still requests restrictive ACL-compatible modes; assert the
169+ // portable property that the bundle member exists instead.
170+ if _, err := os.Stat(path); err != nil {
171+ t.Fatal(err)
172+ }
173+ return
174+ }
166175 info, err := os.Stat(path)
167176 if err != nil {
168177 t.Fatal(err)
@@ -163,6 +163,15 @@ func TestTraceWriterConcurrentRecordHasOrderedGlobalSequences(t *testing.T) {
163 163
164 func assertPrivate(t *testing.T, path string, want os.FileMode) {164 func assertPrivate(t *testing.T, path string, want os.FileMode) {
165 t.Helper()165 t.Helper()
166+ if os.PathSeparator == '\\' {
167+ // Windows does not expose POSIX permission bits through os.FileMode.
168+ // The writer still requests restrictive ACL-compatible modes; assert the
169+ // portable property that the bundle member exists instead.
170+ if _, err := os.Stat(path); err != nil {
171+ t.Fatal(err)
172+ }
173+ return
174+ }
166 info, err := os.Stat(path)175 info, err := os.Stat(path)
167 if err != nil {176 if err != nil {
168 t.Fatal(err)177 t.Fatal(err)
M packages/agent/tracecmd.go +0 -3
@@ -3,7 +3,6 @@ package agent
33 import (
44 "fmt"
55 "io"
6- "os"
76 "sort"
87 "strings"
98 "time"
@@ -57,5 +56,3 @@ func renderTraceInspection(w io.Writer, views map[string]subagents.AgentTraceVie
5756 }
5857 return nil
5958 }
60-
61-func debugCommandStdout() io.Writer { return os.Stdout }
@@ -3,7 +3,6 @@ package agent
3 import (3 import (
4 "fmt"4 "fmt"
5 "io"5 "io"
6- "os"
7 "sort"6 "sort"
8 "strings"7 "strings"
9 "time"8 "time"
@@ -57,5 +56,3 @@ func renderTraceInspection(w io.Writer, views map[string]subagents.AgentTraceVie
57 }56 }
58 return nil57 return nil
59 }58 }
60-
61-func debugCommandStdout() io.Writer { return os.Stdout }

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 1

Tags 476

↑↓ moveenter openesc close