diff --git a/cmd/server/server.go b/cmd/server/server.go index 8541e76..9bf2185 100644 --- a/cmd/server/server.go +++ b/cmd/server/server.go @@ -23,48 +23,44 @@ import ( type AgentType = msgfmt.AgentType const ( - AgentTypeClaude AgentType = msgfmt.AgentTypeClaude - AgentTypeGoose AgentType = msgfmt.AgentTypeGoose - AgentTypeAider AgentType = msgfmt.AgentTypeAider - AgentTypeCodex AgentType = msgfmt.AgentTypeCodex - AgentTypeGemini AgentType = msgfmt.AgentTypeGemini - AgentTypeAmp AgentType = msgfmt.AgentTypeAmp - AgentTypeCursorAgent AgentType = msgfmt.AgentTypeCursorAgent - AgentTypeCursor AgentType = msgfmt.AgentTypeCursor - AgentTypeAuggie AgentType = msgfmt.AgentTypeAuggie - AgentTypeAmazonQ AgentType = msgfmt.AgentTypeAmazonQ - AgentTypeQ AgentType = msgfmt.AgentTypeQ - AgentTypeCustom AgentType = msgfmt.AgentTypeCustom + AgentTypeClaude AgentType = msgfmt.AgentTypeClaude + AgentTypeGoose AgentType = msgfmt.AgentTypeGoose + AgentTypeAider AgentType = msgfmt.AgentTypeAider + AgentTypeCodex AgentType = msgfmt.AgentTypeCodex + AgentTypeGemini AgentType = msgfmt.AgentTypeGemini + AgentTypeAmp AgentType = msgfmt.AgentTypeAmp + AgentTypeCursor AgentType = msgfmt.AgentTypeCursor + AgentTypeAuggie AgentType = msgfmt.AgentTypeAuggie + AgentTypeAmazonQ AgentType = msgfmt.AgentTypeAmazonQ + AgentTypeCustom AgentType = msgfmt.AgentTypeCustom ) -// exhaustiveness of this map is checked by the exhaustive linter -var agentTypeMap = map[AgentType]bool{ - AgentTypeClaude: true, - AgentTypeGoose: true, - AgentTypeAider: true, - AgentTypeCodex: true, - AgentTypeGemini: true, - AgentTypeAmp: true, - AgentTypeCursorAgent: true, - AgentTypeCursor: true, - AgentTypeAuggie: true, - AgentTypeAmazonQ: true, - AgentTypeQ: true, - AgentTypeCustom: true, +// agentTypeAliases contains the mapping of possible input agent type strings to their canonical AgentType values +var agentTypeAliases = map[string]AgentType{ + "claude": AgentTypeClaude, + "goose": AgentTypeGoose, + "aider": AgentTypeAider, + "codex": AgentTypeCodex, + "gemini": AgentTypeGemini, + "amp": AgentTypeAmp, + "auggie": AgentTypeAuggie, + "cursor": AgentTypeCursor, + "cursor-agent": AgentTypeCursor, + "q": AgentTypeAmazonQ, + "amazonq": AgentTypeAmazonQ, + "custom": AgentTypeCustom, } func parseAgentType(firstArg string, agentTypeVar string) (AgentType, error) { // if the agent type is provided, use it - castedAgentType := AgentType(agentTypeVar) - if _, ok := agentTypeMap[castedAgentType]; ok { + if castedAgentType, ok := agentTypeAliases[agentTypeVar]; ok { return castedAgentType, nil } if agentTypeVar != "" { return AgentTypeCustom, fmt.Errorf("invalid agent type: %s", agentTypeVar) } // if the agent type is not provided, guess it from the first argument - castedFirstArg := AgentType(firstArg) - if _, ok := agentTypeMap[castedFirstArg]; ok { + if castedFirstArg, ok := agentTypeAliases[firstArg]; ok { return castedFirstArg, nil } return AgentTypeCustom, nil @@ -148,9 +144,9 @@ func runServer(ctx context.Context, logger *slog.Logger, argsToPass []string) er } var agentNames = (func() []string { - names := make([]string, 0, len(agentTypeMap)) - for agentType := range agentTypeMap { - names = append(names, string(agentType)) + names := make([]string, 0, len(agentTypeAliases)) + for agentType := range agentTypeAliases { + names = append(names, agentType) } sort.Strings(names) return names diff --git a/cmd/server/server_test.go b/cmd/server/server_test.go index 75b2417..17cd11d 100644 --- a/cmd/server/server_test.go +++ b/cmd/server/server_test.go @@ -50,7 +50,7 @@ func TestParseAgentType(t *testing.T) { { firstArg: "cursor-agent", agentTypeVar: "", - want: AgentTypeCursorAgent, + want: AgentTypeCursor, }, { firstArg: "cursor", @@ -65,7 +65,7 @@ func TestParseAgentType(t *testing.T) { { firstArg: "q", agentTypeVar: "", - want: AgentTypeQ, + want: AgentTypeAmazonQ, }, { firstArg: "auggie", @@ -115,12 +115,12 @@ func TestParseAgentType(t *testing.T) { { firstArg: "claude", agentTypeVar: "q", - want: AgentTypeQ, + want: AgentTypeAmazonQ, }, { firstArg: "claude", agentTypeVar: "cursor-agent", - want: AgentTypeCursorAgent, + want: AgentTypeCursor, }, { firstArg: "claude", diff --git a/lib/msgfmt/msgfmt.go b/lib/msgfmt/msgfmt.go index cca29ac..75082ff 100644 --- a/lib/msgfmt/msgfmt.go +++ b/lib/msgfmt/msgfmt.go @@ -192,7 +192,7 @@ func RemoveUserInput(msgRaw string, userInputRaw string, agentType AgentType) st if idx, found := skipTrailingInputBoxLine(msgLines, lastUserInputLineIdx, "╯", "╰"); found { lastUserInputLineIdx = idx } - } else if agentType == AgentTypeCursorAgent || agentType == AgentTypeCursor { + } else if agentType == AgentTypeCursor { if idx, found := skipTrailingInputBoxLine(msgLines, lastUserInputLineIdx, "┘", "└"); found { lastUserInputLineIdx = idx } @@ -225,18 +225,16 @@ func trimEmptyLines(message string) string { type AgentType string const ( - AgentTypeClaude AgentType = "claude" - AgentTypeGoose AgentType = "goose" - AgentTypeAider AgentType = "aider" - AgentTypeCodex AgentType = "codex" - AgentTypeGemini AgentType = "gemini" - AgentTypeAmp AgentType = "amp" - AgentTypeCursorAgent AgentType = "cursor-agent" - AgentTypeCursor AgentType = "cursor" - AgentTypeAuggie AgentType = "auggie" - AgentTypeAmazonQ AgentType = "amazonq" - AgentTypeQ AgentType = "q" - AgentTypeCustom AgentType = "custom" + AgentTypeClaude AgentType = "claude" + AgentTypeGoose AgentType = "goose" + AgentTypeAider AgentType = "aider" + AgentTypeCodex AgentType = "codex" + AgentTypeGemini AgentType = "gemini" + AgentTypeAmp AgentType = "amp" + AgentTypeCursor AgentType = "cursor" + AgentTypeAuggie AgentType = "auggie" + AgentTypeAmazonQ AgentType = "amazonq" + AgentTypeCustom AgentType = "custom" ) func formatGenericMessage(message string, userInput string, agentType AgentType) string { @@ -267,16 +265,12 @@ func FormatAgentMessage(agentType AgentType, message string, userInput string) s return formatGenericMessage(message, userInput, agentType) case AgentTypeAmp: return formatGenericMessage(message, userInput, agentType) - case AgentTypeCursorAgent: - return formatGenericMessage(message, userInput, agentType) case AgentTypeCursor: return formatGenericMessage(message, userInput, agentType) case AgentTypeAuggie: return formatGenericMessage(message, userInput, agentType) case AgentTypeAmazonQ: return formatGenericMessage(message, userInput, agentType) - case AgentTypeQ: - return formatGenericMessage(message, userInput, agentType) case AgentTypeCustom: return formatGenericMessage(message, userInput, agentType) default: diff --git a/lib/msgfmt/msgfmt_test.go b/lib/msgfmt/msgfmt_test.go index ebf1bc8..1afe6a6 100644 --- a/lib/msgfmt/msgfmt_test.go +++ b/lib/msgfmt/msgfmt_test.go @@ -218,7 +218,7 @@ func TestTrimEmptyLines(t *testing.T) { func TestFormatAgentMessage(t *testing.T) { dir := "testdata/format" - agentTypes := []AgentType{AgentTypeClaude, AgentTypeGoose, AgentTypeAider, AgentTypeGemini, AgentTypeAmp, AgentTypeCodex, AgentTypeCursorAgent, AgentTypeCursor, AgentTypeAuggie, AgentTypeQ, AgentTypeCustom} + agentTypes := []AgentType{AgentTypeClaude, AgentTypeGoose, AgentTypeAider, AgentTypeGemini, AgentTypeAmp, AgentTypeCodex, AgentTypeCursor, AgentTypeAuggie, AgentTypeAmazonQ, AgentTypeCustom} for _, agentType := range agentTypes { t.Run(string(agentType), func(t *testing.T) { cases, err := testdataDir.ReadDir(path.Join(dir, string(agentType))) diff --git a/lib/msgfmt/testdata/format/q/confirmation_box/expected.txt b/lib/msgfmt/testdata/format/amazonq/confirmation_box/expected.txt similarity index 100% rename from lib/msgfmt/testdata/format/q/confirmation_box/expected.txt rename to lib/msgfmt/testdata/format/amazonq/confirmation_box/expected.txt diff --git a/lib/msgfmt/testdata/format/q/confirmation_box/msg.txt b/lib/msgfmt/testdata/format/amazonq/confirmation_box/msg.txt similarity index 100% rename from lib/msgfmt/testdata/format/q/confirmation_box/msg.txt rename to lib/msgfmt/testdata/format/amazonq/confirmation_box/msg.txt diff --git a/lib/msgfmt/testdata/format/q/confirmation_box/user.txt b/lib/msgfmt/testdata/format/amazonq/confirmation_box/user.txt similarity index 100% rename from lib/msgfmt/testdata/format/q/confirmation_box/user.txt rename to lib/msgfmt/testdata/format/amazonq/confirmation_box/user.txt diff --git a/lib/msgfmt/testdata/format/q/first_message/expected.txt b/lib/msgfmt/testdata/format/amazonq/first_message/expected.txt similarity index 100% rename from lib/msgfmt/testdata/format/q/first_message/expected.txt rename to lib/msgfmt/testdata/format/amazonq/first_message/expected.txt diff --git a/lib/msgfmt/testdata/format/q/first_message/msg.txt b/lib/msgfmt/testdata/format/amazonq/first_message/msg.txt similarity index 100% rename from lib/msgfmt/testdata/format/q/first_message/msg.txt rename to lib/msgfmt/testdata/format/amazonq/first_message/msg.txt diff --git a/lib/msgfmt/testdata/format/q/first_message/user.txt b/lib/msgfmt/testdata/format/amazonq/first_message/user.txt similarity index 100% rename from lib/msgfmt/testdata/format/q/first_message/user.txt rename to lib/msgfmt/testdata/format/amazonq/first_message/user.txt diff --git a/lib/msgfmt/testdata/format/q/multi-line-input/expected.txt b/lib/msgfmt/testdata/format/amazonq/multi-line-input/expected.txt similarity index 100% rename from lib/msgfmt/testdata/format/q/multi-line-input/expected.txt rename to lib/msgfmt/testdata/format/amazonq/multi-line-input/expected.txt diff --git a/lib/msgfmt/testdata/format/q/multi-line-input/msg.txt b/lib/msgfmt/testdata/format/amazonq/multi-line-input/msg.txt similarity index 100% rename from lib/msgfmt/testdata/format/q/multi-line-input/msg.txt rename to lib/msgfmt/testdata/format/amazonq/multi-line-input/msg.txt diff --git a/lib/msgfmt/testdata/format/q/multi-line-input/user.txt b/lib/msgfmt/testdata/format/amazonq/multi-line-input/user.txt similarity index 100% rename from lib/msgfmt/testdata/format/q/multi-line-input/user.txt rename to lib/msgfmt/testdata/format/amazonq/multi-line-input/user.txt diff --git a/lib/msgfmt/testdata/format/q/second_message/expected.txt b/lib/msgfmt/testdata/format/amazonq/second_message/expected.txt similarity index 100% rename from lib/msgfmt/testdata/format/q/second_message/expected.txt rename to lib/msgfmt/testdata/format/amazonq/second_message/expected.txt diff --git a/lib/msgfmt/testdata/format/q/second_message/msg.txt b/lib/msgfmt/testdata/format/amazonq/second_message/msg.txt similarity index 100% rename from lib/msgfmt/testdata/format/q/second_message/msg.txt rename to lib/msgfmt/testdata/format/amazonq/second_message/msg.txt diff --git a/lib/msgfmt/testdata/format/q/second_message/user.txt b/lib/msgfmt/testdata/format/amazonq/second_message/user.txt similarity index 100% rename from lib/msgfmt/testdata/format/q/second_message/user.txt rename to lib/msgfmt/testdata/format/amazonq/second_message/user.txt diff --git a/lib/msgfmt/testdata/format/q/thinking/expected.txt b/lib/msgfmt/testdata/format/amazonq/thinking/expected.txt similarity index 100% rename from lib/msgfmt/testdata/format/q/thinking/expected.txt rename to lib/msgfmt/testdata/format/amazonq/thinking/expected.txt diff --git a/lib/msgfmt/testdata/format/q/thinking/msg.txt b/lib/msgfmt/testdata/format/amazonq/thinking/msg.txt similarity index 100% rename from lib/msgfmt/testdata/format/q/thinking/msg.txt rename to lib/msgfmt/testdata/format/amazonq/thinking/msg.txt diff --git a/lib/msgfmt/testdata/format/q/thinking/user.txt b/lib/msgfmt/testdata/format/amazonq/thinking/user.txt similarity index 100% rename from lib/msgfmt/testdata/format/q/thinking/user.txt rename to lib/msgfmt/testdata/format/amazonq/thinking/user.txt