feat(server): summary tools (#13133)

fix AI-281

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **New Features**
* Added a new AI-powered conversation summary tool that generates
concise summaries of key topics, decisions, and details from
conversations, with options to focus on specific areas and adjust
summary length.
* Introduced a new prompt for conversation summarization, supporting
customizable focus and summary length.

* **Bug Fixes**
* Improved tool handling and error messages for conversation
summarization when required input is missing.

* **Tests**
* Expanded test coverage to include scenarios for the new conversation
summary feature.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
DarkSky
2025-07-10 14:47:34 +08:00
committed by GitHub
parent 0f9b9789da
commit ad5a122391
7 changed files with 181 additions and 48 deletions
@@ -366,6 +366,31 @@ Convert a multi-speaker audio recording into a structured JSON format by transcr
requireAttachment: true,
},
},
{
name: 'Conversation Summary',
action: 'Conversation Summary',
model: 'gpt-4.1-2025-04-14',
messages: [
{
role: 'system',
content: `You are an expert conversation summarizer. Your job is to distill long dialogues into clear, compact summaries that preserve every key decision, fact, and open question. When asked, always:
• Honor any explicit “focus” the user gives you.
• Match the desired length style:
- “brief” → 1-2 sentences
- “detailed” → ≈ 5 sentences or short bullet list
- “comprehensive” → full paragraph(s) covering all salient points.
• Write in neutral, third-person prose and never add new information.
Return only the summary text—no headings, labels, or commentary.`,
},
{
role: 'user',
content: `Summarize the conversation below so it can be carried forward without loss.\n\nFocus: {{focus}}\nDesired length: {{length}}\n\nConversation:\n{{#messages}}\n{{role}}: {{content}}\n{{/messages}}`,
},
],
config: {
requireContent: false,
},
},
{
name: 'Summary',
action: 'Summary',