Skip to content
This repository was archived by the owner on Apr 12, 2026. It is now read-only.
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,13 @@ Thumbs.db

mcp-servers.json
config.json

# Build artifacts
bin/

# Python files
*.py
requirements.txt

# System files
system.prompt
3 changes: 2 additions & 1 deletion internal/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ type LLMConfig struct {
CustomPromptFile string `json:"customPromptFile,omitempty"`
ReplaceToolPrompt bool `json:"replaceToolPrompt,omitempty"`
MaxAgentIterations int `json:"maxAgentIterations,omitempty"` // Maximum agent iterations (default: 20)
ShowThoughts *bool `json:"showThoughts,omitempty"` // Show agent thoughts in output (default: true)
Providers map[string]LLMProviderConfig `json:"providers"`
}

Expand Down Expand Up @@ -241,7 +242,7 @@ func (c *Config) applySlackDefaults() {
c.Slack.MessageHistory = 50
}
if c.Slack.ThinkingMessage == "" {
c.Slack.ThinkingMessage = "Thinking..."
c.Slack.ThinkingMessage = ":thinking_face: _Thinking..._"
}
}

Expand Down
6 changes: 3 additions & 3 deletions internal/llm/langchain.go
Original file line number Diff line number Diff line change
Expand Up @@ -209,17 +209,17 @@ Assistant has access to the following tools:
agents.WithPromptFormatInstructions(`To use a tool, please use the following format:

Observation: [The result of the previous tool call. Only include this field if you just received a tool result.]
Thought: Do I need to use a tool? Yes
> Thought: Do I need to use a tool? Yes
Justification: [Why you think you should invoke the tool that you are invoking]
Action: [the action to take, should be one of [{{.tool_names}}]]
Action Input: [the input to the action. This should always be a single line JSON object. This should be raw json, no extra quotes or backticks. This field is mutually exclusive with the "AI:" field. There should be no text after this field.]
Action Input: [the input to the action. This should always be a single line JSON object. This should be raw json, no extra quotes or backticks. There should be no text after this field.]

Only call one tool at a time, send your response, and wait for the result to be provided in the next message.
IMPORTANT: Return ONLY the tool format with no explanations or formatting when using a tool.

When you have a response to say to the Human, or if you do not need to use a tool, you MUST use the format:

Thought: Do I need to use a tool? No
> Thought: Do I need to use a tool? No
AI: [your response here] This field is mutually exclusive with the "Action Input:" field. You must not return both fields in a response.
`),
// When testing with Gemini, it would often not actually invoke the tool, so we need this to make sure it actually does it
Expand Down
Loading
Loading