add role/from_me filters and trigger error aggregation

This commit is contained in:
DBT
2026-02-23 14:17:28 +00:00
parent 1fbe28a97d
commit 6f26464766
5 changed files with 139 additions and 7 deletions

View File

@@ -93,12 +93,24 @@ func statusCmd() {
if data, err := os.ReadFile(triggerStats); err == nil {
fmt.Printf("Trigger Stats: %s\n", strings.TrimSpace(string(data)))
}
if errs, err := collectRecentTriggerErrors(filepath.Join(workspace, "memory", "trigger-audit.jsonl"), 5); err == nil && len(errs) > 0 {
auditPath := filepath.Join(workspace, "memory", "trigger-audit.jsonl")
if errs, err := collectRecentTriggerErrors(auditPath, 5); err == nil && len(errs) > 0 {
fmt.Println("Recent Trigger Errors:")
for _, e := range errs {
fmt.Printf(" - %s\n", e)
}
}
if agg, err := collectTriggerErrorCounts(auditPath); err == nil && len(agg) > 0 {
fmt.Println("Trigger Error Counts:")
keys := make([]string, 0, len(agg))
for k := range agg {
keys = append(keys, k)
}
sort.Strings(keys)
for _, trigger := range keys {
fmt.Printf(" %s: %d\n", trigger, agg[trigger])
}
}
sessionsDir := filepath.Join(filepath.Dir(configPath), "sessions")
if kinds, err := collectSessionKindCounts(sessionsDir); err == nil && len(kinds) > 0 {
@@ -182,6 +194,37 @@ func collectRecentTriggerErrors(path string, limit int) ([]string, error) {
return out, nil
}
func collectTriggerErrorCounts(path string) (map[string]int, error) {
data, err := os.ReadFile(path)
if err != nil {
return nil, err
}
lines := strings.Split(strings.TrimSpace(string(data)), "\n")
counts := map[string]int{}
for _, line := range lines {
line = strings.TrimSpace(line)
if line == "" {
continue
}
var row struct {
Trigger string `json:"trigger"`
Error string `json:"error"`
}
if err := json.Unmarshal([]byte(line), &row); err != nil {
continue
}
if strings.TrimSpace(row.Error) == "" {
continue
}
trigger := strings.ToLower(strings.TrimSpace(row.Trigger))
if trigger == "" {
trigger = "unknown"
}
counts[trigger]++
}
return counts, nil
}
func collectRecentSubagentSessions(sessionsDir string, limit int) ([]string, error) {
entries, err := os.ReadDir(sessionsDir)
if err != nil {