Skip to content

Commit 7fd2497

Browse files
committed
✨ feat: add support for 'gemini' agent mode in chat
- Extend chat command handlers to include '/gemini' mode. - Update chat logic and types to integrate new agent mode commands. - Modify brain logic to handle 'gemini' related execution statuses and ensure correct provider initialization.
1 parent 40b2825 commit 7fd2497

5 files changed

Lines changed: 20 additions & 7 deletions

File tree

cmd/vibeaura/chat_handlers.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -635,7 +635,7 @@ func (m *model) handleAgentCommand(parts []string) (tea.Model, tea.Cmd) {
635635
if cfg.Mode == "custom" {
636636
msg += helpStyle.Render(fmt.Sprintf(" (%s)", cfg.ActiveCustom))
637637
}
638-
msg += "\n\n" + helpStyle.Render("Usage: /agent <mode>\nModes: /auracle, /sdk, /custom (Agentic Vibes)")
638+
msg += "\n\n" + helpStyle.Render("Usage: /agent <mode>\nModes: /auracle, /sdk, /gemini, /custom (Agentic Vibes)")
639639
msg += "\n\n" + helpStyle.Render("Subcommands for /custom (Agentic Vibes):\n• /agent /custom /list\n• /agent /custom /use <name>\n• /agent /custom /add <name> <prompt>")
640640
m.messages = append(m.messages, msg)
641641
m.viewport.SetContent(m.renderMessages())
@@ -694,6 +694,8 @@ func (m *model) handleAgentCommand(parts []string) (tea.Model, tea.Cmd) {
694694
icon = "🚀"
695695
} else if mode == "custom" {
696696
icon = "🌌"
697+
} else if mode == "gemini" {
698+
icon = "✨"
697699
}
698700
m.messages = append(m.messages, systemStyle.Render(" AGENT SWITCHED ")+"\n"+helpStyle.Render(fmt.Sprintf("%s Now using %s agentic runtime engine.", icon, strings.ToUpper(mode))))
699701
}

cmd/vibeaura/chat_logic.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ func (m *model) applySuggestion() (tea.Model, tea.Cmd) {
284284
"/sys": {"/stats": true, "/env": true, "/update": true, "/logs": true},
285285
"/mcp": {"/list": true, "/logs": true},
286286
"/skill": {"/list": true},
287-
"/agent": {"/vibe": true, "/sdk": true},
287+
"/agent": {"/vibe": true, "/sdk": true, "/gemini": true},
288288
"/session": {"/list": true, "/clear": true},
289289
}
290290

cmd/vibeaura/chat_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ var subCommands = map[string][]string{
388388
"/sys": {"/stats", "/env", "/update", "/logs"},
389389
"/skill": {"/list", "/info", "/load", "/disable"},
390390
"/models": {"/list", "/use", "/pull"},
391-
"/agent": {"/vibe", "/sdk", "/custom"},
391+
"/agent": {"/vibe", "/sdk", "/custom", "/gemini"},
392392
"/session": {"/list", "/clear"},
393393
"/connect": {"/list", "/new", "/join", "/close", "/clients"},
394394
"/share": {"/browser", "/tui", "/stop"},

internal/brain/brain.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,12 +302,23 @@ User Request (Thread ID: %s):
302302
}, nil
303303
}
304304

305-
if b.config.Agent.Mode == "auracle" {
305+
if b.config.Agent.Mode == "auracle" || b.config.Agent.Mode == "vibe" {
306306
if !silent {
307307
tooling.ReportStatus("🔮", "agent-auracle", "Executing via internal Auracle...")
308308
}
309309
}
310310

311+
if b.config.Agent.Mode == "gemini" {
312+
if !silent {
313+
tooling.ReportStatus("✨", "agent-gemini", "Executing via native Gemini engine...")
314+
}
315+
// Ensure we are using the gemini-cli provider if in gemini agent mode
316+
if b.config.Model.Provider != "gemini-cli" {
317+
b.config.Model.Provider = "gemini-cli"
318+
b.initProvider()
319+
}
320+
}
321+
311322
if b.config.Agent.Mode == "custom" {
312323
var activeAgent *sys.CustomAgent
313324
for _, a := range b.config.Agent.CustomAgents {

internal/brain/brain_agent.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ import (
88
"github.com/nathfavour/vibeauracle/sys"
99
)
1010

11-
// SetAgentMode switches between 'vibe', 'sdk', and 'custom' agentic runtimes
11+
// SetAgentMode switches between 'vibe', 'sdk', 'gemini', and 'custom' agentic runtimes
1212
func (b *Brain) SetAgentMode(mode string) error {
13-
if mode != "vibe" && mode != "sdk" && mode != "custom" {
14-
return fmt.Errorf("invalid agent mode: %s (must be 'vibe', 'sdk', or 'custom')", mode)
13+
if mode != "vibe" && mode != "sdk" && mode != "custom" && mode != "gemini" {
14+
return fmt.Errorf("invalid agent mode: %s (must be 'vibe', 'sdk', 'gemini', or 'custom')", mode)
1515
}
1616
b.config.Agent.Mode = mode
1717
b.config.Agent.UserConfigured = true

0 commit comments

Comments
 (0)