Nytt CLI-verktøy `synops-ai` som leser cli_tool-noder fra PG, bygger en systemprompt med tilgjengelige verktøy og script-grammatikk, og bruker LLM til å foreslå orkestreringsscript fra fritekst-beskrivelse. Tre moduser: - Synkron: --description "..." → LLM genererer script → JSON output - System prompt: --generate-system-prompt → skriver auto-generert prompt - Eventually: --eventually → lagrer som work_item for Claude Code Maskinrommet: nytt endepunkt POST /intentions/ai_suggest_script som kaller synops-ai, validerer resultatet med script_compiler, og returnerer script + kompileringsresultat til frontend. Frontend: AI-assistent-knapp i OrchestrationTrait med fritekst-input, generer-knapp, og feilvisning. Generert script settes direkte i editoren. Migration: synops-ai seeded som cli_tool-node med norske verb-alias.
36 lines
1.4 KiB
PL/PgSQL
36 lines
1.4 KiB
PL/PgSQL
-- 024_cli_tool_synops_ai.sql
|
|
-- Oppgave 24.7: Seed cli_tool-node for synops-ai.
|
|
-- AI-assistert generering av orkestreringsscript fra fritekst-beskrivelse.
|
|
-- Ref: docs/concepts/orkestrering.md § "Nivå 2: AI-assistert oppretting"
|
|
|
|
BEGIN;
|
|
|
|
-- =============================================================================
|
|
-- synops-ai — AI-assistert script-generering
|
|
-- =============================================================================
|
|
INSERT INTO nodes (id, node_kind, title, visibility, metadata, created_by)
|
|
VALUES (
|
|
'f0000000-c100-4000-b000-000000000015',
|
|
'cli_tool',
|
|
'synops-ai',
|
|
'discoverable',
|
|
'{
|
|
"binary": "synops-ai",
|
|
"aliases": ["generer script", "lag orkestrering", "ai-forslag", "foreslå script"],
|
|
"description": "AI-assistert generering av orkestreringsscript fra fritekst-beskrivelse",
|
|
"args_hints": {
|
|
"beskrivelsen": "--description {input.description}",
|
|
"triggeren": "--trigger-event {input.trigger_event}",
|
|
"betingelsene": "--trigger-conditions {input.trigger_conditions}",
|
|
"i bakgrunnen": "--eventually",
|
|
"for brukeren": "--requested-by {event.node_id}",
|
|
"for samlingen": "--collection-id {event.collection_id}"
|
|
}
|
|
}'::jsonb,
|
|
'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'
|
|
)
|
|
ON CONFLICT (id) DO UPDATE SET
|
|
metadata = EXCLUDED.metadata,
|
|
title = EXCLUDED.title;
|
|
|
|
COMMIT;
|