Files

48 lines
1.2 KiB
Go

// Copyright (c) 2026 Storm Dragon
// SPDX-License-Identifier: GPL-3.0-or-later
package app
import (
"encoding/json"
"os"
"strings"
"git.stormux.org/storm/fenrir/internal/applicationoverrides/codex"
)
func (a *application) codex_event(text string) string {
kind, payload, _ := strings.Cut(text, " ")
if kind != "CODEX" {
return "Unsupported application event"
}
var event codex.Event
if err := json.Unmarshal([]byte(payload), &event); err != nil {
return "Invalid Codex event JSON"
}
if a.options.TerminalMode {
if event.Window == "" || event.Window != os.Getenv("WINDOWID") || event.Terminal != 1 {
return "Codex event belongs to another terminal"
}
} else if event.Window != "" || event.Terminal != a.lastTerminal {
return "Codex event belongs to another terminal"
}
selected := a.overrides[event.Terminal]
if selected == nil || selected.id != "codex" {
return "Codex override is not selected"
}
if !selected.initialized || a.overrideTransition {
a.overrideDirty = true
return "Codex override is loading"
}
adapter, ok := selected.adapter.(*codex.Adapter)
if !ok {
return "Codex override is unavailable"
}
if err := adapter.Accept(event); err != nil {
return err.Error()
}
a.overrideDirty = true
return ""
}