mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 19:01:08 +02:00
feat(ai): web-research pre-step + auto-kontext + save_news_article tool
Mission objectives matching /recherch|research|news|finde|suche|aktuelle|neueste/i trigger a synchronous deep-research call (mana-search + mana-llm via the existing /api/v1/research/start-sync pipeline) before the planner runs; the summary plus top-8 source URLs are injected as a synthetic ResolvedInput so the planner can stage save_news_article proposals against real URLs. The kontext singleton is auto-attached to every mission's planner input (decrypted client-side, gated on non-empty content + not already linked). save_news_article is a new proposable tool routed through articlesStore .saveFromUrl (Readability via /api/v1/news/extract/save). AiProposalInbox mounted on /news so the user can approve/reject inline. mana-ai planner tool list mirrors the new tool to keep the boot-time drift guard happy. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
4c8034f9d0
commit
fdb8e60d07
6 changed files with 182 additions and 5 deletions
|
|
@ -83,6 +83,27 @@ export const AI_AVAILABLE_TOOLS: readonly AvailableTool[] = [
|
|||
description: 'Macht den letzten Drink-Eintrag rückgängig',
|
||||
parameters: [],
|
||||
},
|
||||
{
|
||||
name: 'save_news_article',
|
||||
module: 'news',
|
||||
description:
|
||||
'Speichert einen Artikel von einer URL in die Leseliste. URL wird serverseitig per Readability extrahiert.',
|
||||
parameters: [
|
||||
{ name: 'url', type: 'string', description: 'Die Artikel-URL', required: true },
|
||||
{
|
||||
name: 'title',
|
||||
type: 'string',
|
||||
description: 'Anzeigetitel für den Approval-Dialog (informativ)',
|
||||
required: false,
|
||||
},
|
||||
{
|
||||
name: 'summary',
|
||||
type: 'string',
|
||||
description: 'Kurze Begründung warum dieser Artikel relevant ist',
|
||||
required: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
export const AI_AVAILABLE_TOOL_NAMES = new Set<string>(AI_AVAILABLE_TOOLS.map((t) => t.name));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue