experimental: codex / ai integration
This commit is contained in:
@@ -43,6 +43,7 @@ type ViewKeyBindings struct {
|
||||
AutoMerge []string `toml:"auto_merge"`
|
||||
MergeNow []string `toml:"merge_now"`
|
||||
ToggleList []string `toml:"toggle_list"`
|
||||
AI []string `toml:"ai"`
|
||||
}
|
||||
|
||||
type ThreadKeyBindings struct {
|
||||
@@ -122,6 +123,7 @@ func defaultKeyBindings() KeyBindings {
|
||||
Open: []string{"enter", "l"}, Dashboard: []string{"d"},
|
||||
Health: []string{"H"}, Edit: []string{"e"}, ToggleList: []string{"tab"},
|
||||
AutoMerge: []string{"a"}, MergeNow: []string{"M"},
|
||||
AI: []string{"A"},
|
||||
},
|
||||
Threads: ThreadKeyBindings{
|
||||
Search: []string{"/"}, ClearFilter: []string{"F"},
|
||||
@@ -338,6 +340,8 @@ func (k KeyBindings) canonicalMainKey(key string, current screen) string {
|
||||
return "H"
|
||||
case keyMatches(key, k.Views.Edit):
|
||||
return "e"
|
||||
case (current == dashboardScreen || current == threadScreen) && keyMatches(key, k.Views.AI):
|
||||
return "A"
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
@@ -400,6 +404,7 @@ func validateKeyBindings(bindings KeyBindings) error {
|
||||
"health": bindings.Views.Health, "edit": bindings.Views.Edit,
|
||||
"auto_merge": bindings.Views.AutoMerge, "merge_now": bindings.Views.MergeNow,
|
||||
"toggle_list": bindings.Views.ToggleList,
|
||||
"ai": bindings.Views.AI,
|
||||
}},
|
||||
{"keybindings.threads", map[string][]string{
|
||||
"search": bindings.Threads.Search, "clear_filter": bindings.Threads.ClearFilter,
|
||||
@@ -492,6 +497,7 @@ func validateKeyBindingContexts(bindings KeyBindings) error {
|
||||
contextBinding{"edit", views.Edit},
|
||||
contextBinding{"auto_merge", views.AutoMerge},
|
||||
contextBinding{"merge_now", views.MergeNow},
|
||||
contextBinding{"ai", views.AI},
|
||||
)...); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -511,6 +517,7 @@ func validateKeyBindingContexts(bindings KeyBindings) error {
|
||||
contextBinding{"resolve", threads.Resolve},
|
||||
contextBinding{"toggle", threads.Toggle},
|
||||
contextBinding{"fold_prefix", threads.FoldPrefix},
|
||||
contextBinding{"ai", views.AI},
|
||||
)...); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -554,6 +561,26 @@ func validateKeyBindingContexts(bindings KeyBindings) error {
|
||||
); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := validateKeyContext("AI menu",
|
||||
contextBinding{"quit", nonTextBindings(general.Quit)},
|
||||
contextBinding{"cancel", appendCopy(general.Back, input.Cancel...)},
|
||||
contextBinding{"down", navigation.Down},
|
||||
contextBinding{"up", navigation.Up},
|
||||
contextBinding{"select", appendCopy(views.Open, input.Newline...)},
|
||||
); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := validateKeyContext("AI confirmation",
|
||||
contextBinding{"quit", nonTextBindings(general.Quit)},
|
||||
contextBinding{"confirm", general.Confirm},
|
||||
contextBinding{"cancel", appendCopy(general.Reject, input.Cancel...)},
|
||||
contextBinding{"down", navigation.Down},
|
||||
contextBinding{"up", navigation.Up},
|
||||
contextBinding{"page_down", navigation.PageDown},
|
||||
contextBinding{"page_up", navigation.PageUp},
|
||||
); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
editorOuter := []contextBinding{
|
||||
{"help", general.Help},
|
||||
|
||||
Reference in New Issue
Block a user