feat(odin): Phase 2a read-only agentic assistant + tool-trace UI
- agentic chat loop (max 6 round-trips, budget re-checked between iterations) over 10 read-only, permission-delegated tools in src/services/ai-tools.ts - persist assistant tool trace in ai_chat_messages.content_json (+ migration) - consulted-tools chips in OdinThread; header now shows month spend only (budget cap hidden from the UI, server-side 402 guard unchanged) - seed: ai.use permission; Settings exposes the ai permission module - docs: REVIEW consolidation; deployment-guide.md superseded by docs/release.md Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
-- Odin Phase 2a: assistant turns carry structured metadata (tool-call trace,
|
||||
-- later full content blocks). `content` stays the plain-text display
|
||||
-- projection; `content_json` holds the structured form. Anticipated by the
|
||||
-- Phase-2 design notes (2026-06-08).
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE `ai_chat_messages` ADD COLUMN `content_json` LONGTEXT NULL AFTER `content`;
|
||||
@@ -104,6 +104,7 @@ model ai_chat_messages {
|
||||
conversation_id Int
|
||||
role String @db.VarChar(20)
|
||||
content String @db.Text
|
||||
content_json String? @db.LongText
|
||||
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||
conversation ai_conversations @relation(fields: [conversation_id], references: [id], onDelete: Cascade)
|
||||
|
||||
|
||||
@@ -295,6 +295,16 @@ const PERMISSIONS: {
|
||||
module: "warehouse",
|
||||
description: "Vytvářet a potvrzovat inventurní sčítkání",
|
||||
},
|
||||
|
||||
// AI asistent (Odin) — mirrors migration 20260608120000_add_ai_assistant;
|
||||
// the seed WIPES permissions, so every migration-added permission must also
|
||||
// live here or a dev reseed silently loses it (happened 2026-06-10).
|
||||
{
|
||||
name: "ai.use",
|
||||
display_name: "AI asistent",
|
||||
module: "ai",
|
||||
description: "Používat AI asistenta (chat a import faktur)",
|
||||
},
|
||||
];
|
||||
|
||||
async function main() {
|
||||
|
||||
Reference in New Issue
Block a user