summaryrefslogtreecommitdiff
path: root/bot.go
diff options
context:
space:
mode:
Diffstat (limited to 'bot.go')
-rw-r--r--bot.go20
1 files changed, 19 insertions, 1 deletions
diff --git a/bot.go b/bot.go
index e7cedc5..4fc037c 100644
--- a/bot.go
+++ b/bot.go
@@ -50,6 +50,8 @@ func createClient(connectTimeout time.Duration) *http.Client {
}
var (
+ cluedoState *extra.CluedoRoundInfo // Current game state
+ playerOrder []string // Turn order tracking
cfg *config.Config
logger *slog.Logger
logLevel = new(slog.LevelVar)
@@ -290,6 +292,22 @@ func chatRound(userMsg, role string, tv *tview.TextView, regen, resume bool) {
}
go sendMsgToLLM(reader)
logger.Debug("looking at vars in chatRound", "msg", userMsg, "regen", regen, "resume", resume)
+
+ // Handle Cluedo game flow
+ if cfg.EnableCluedo && cluedoState != nil && !resume {
+ currentPlayer := playerOrder[0]
+ playerOrder = append(playerOrder[1:], currentPlayer) // Rotate turns
+ if role == cfg.UserRole {
+ userMsg = fmt.Sprintf("Your cards: %s\n%s",
+ cluedoState.GetPlayerCards(currentPlayer), userMsg)
+ } else {
+ chatBody.Messages = append(chatBody.Messages, models.RoleMsg{
+ Role: cfg.ToolRole,
+ Content: cluedoState.GetPlayerCards(currentPlayer),
+ })
+ }
+ }
+
if !resume {
fmt.Fprintf(tv, "[-:-:b](%d) ", len(chatBody.Messages))
fmt.Fprint(tv, roleToIcon(cfg.AssistantRole))
@@ -378,7 +396,7 @@ func chatToText(showSys bool) string {
func removeThinking(chatBody *models.ChatBody) {
msgs := []models.RoleMsg{}
for _, msg := range chatBody.Messages {
- rm := models.RoleMsg{}
+ // Filter out tool messages and thinking markers
if msg.Role == cfg.ToolRole {
continue
}