feat: implement tier 1 quick wins (tool groups, typing, pruning, verbose, think)

Five additive features with no breaking changes:

- Tool groups: group:fs, group:runtime, group:web, group:memory syntactic
  sugar for allow/deny lists in tool policy config
- Typing indicators: Discord sendTyping() and WhatsApp sendStateTyping()
  on message receipt for better UX feedback
- Session pruning: TTL-based auto-cleanup via sessions.ttl config with
  hourly daemon timer and SQLite GROUP BY pruning
- /verbose command: TUI command parser toggle for raw streaming display
- !!think prefix: per-message extended thinking mode wired through
  Anthropic (budget_tokens), OpenAI/GitHub (reasoning_effort), and
  Gemini (thinkingConfig) providers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
William Valentin
2026-02-07 13:35:00 -08:00
parent 6bb424cddc
commit 1c2f54fae3
19 changed files with 563 additions and 20 deletions
+10 -3
View File
@@ -25,13 +25,20 @@ export class GeminiClient implements ModelClient {
? [{ functionDeclarations: request.tools.map(t => convertToolDefinition(t)) }]
: undefined;
const generationConfig: Record<string, unknown> = {
maxOutputTokens: request.maxTokens ?? this.defaultMaxTokens,
};
// Extended thinking mode
if (request.thinking) {
generationConfig.thinkingConfig = { thinkingBudget: 4096 };
}
return this.genAI.getGenerativeModel({
model: this.model,
systemInstruction: request.system || undefined,
tools,
generationConfig: {
maxOutputTokens: request.maxTokens ?? this.defaultMaxTokens,
},
generationConfig,
});
}