diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index 9ffb80f..6c2488c 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -1193,6 +1193,27 @@ export function leaveCommunication( }); } +// ============================================================================= +// AI-prosessering +// ============================================================================= + +export interface AiProcessRequest { + source_node_id: string; + ai_preset_id: string; + direction: 'node_to_tool' | 'tool_to_node'; +} + +export interface AiProcessResponse { + job_id: string; +} + +export function aiProcess( + accessToken: string, + data: AiProcessRequest +): Promise { + return post(accessToken, '/intentions/ai_process', data); +} + /** Hent ressursforbruk for en spesifikk node (kun eier). */ export async function fetchNodeUsage( accessToken: string, diff --git a/frontend/src/lib/components/AiToolPanel.svelte b/frontend/src/lib/components/AiToolPanel.svelte new file mode 100644 index 0000000..1ba8218 --- /dev/null +++ b/frontend/src/lib/components/AiToolPanel.svelte @@ -0,0 +1,312 @@ + + +
+
+ +

AI-verktøy

+ {#if modelLabel} + + {modelLabel} + + {/if} +
+ +
+ +
+ + {#if presets.length === 0} +

Ingen AI-presets tilgjengelig.

+ {:else} +
+ {#each presets as preset (preset.id)} + {@const meta = parseMetadata(preset)} + + {/each} +
+ {/if} +
+ + + {#if selectedPreset && selectedMeta} +
+

{selectedPreset.title}

+

{selectedMeta.prompt}

+
+ Modell: {modelLabel} + Retning: { + defaultDirection === 'node_to_tool' ? 'Ny node' + : defaultDirection === 'tool_to_node' ? 'In-place' + : 'Begge' + } +
+
+ {/if} + + +
+ + +

+ Kommer i tillegg til valgt preset (funksjon under utvikling). +

+
+ + +
+ {#if droppedNode} + +
+

+ {droppedNode.title || 'Uten tittel'} +

+

+ {droppedNode.content?.slice(0, 120)}{(droppedNode.content?.length ?? 0) > 120 ? '…' : ''} +

+
+ + +
+
+ {:else if dragOver} +

Slipp her for AI-prosessering

+ {:else} +

Dra en tekstnode hit

+

Støtter innholds- og kommunikasjonsnoder

+ {/if} +
+ + + {#if lastResult} +
+ {lastResult.message} +
+ {/if} +
+
diff --git a/frontend/src/lib/components/traits/EditorTrait.svelte b/frontend/src/lib/components/traits/EditorTrait.svelte index 479f189..6153940 100644 --- a/frontend/src/lib/components/traits/EditorTrait.svelte +++ b/frontend/src/lib/components/traits/EditorTrait.svelte @@ -123,7 +123,16 @@ {:else}