diff --git a/frontend/src/lib/components/FlowBuilder.svelte b/frontend/src/lib/components/FlowBuilder.svelte index 55ea15bcad..f23523cac5 100644 --- a/frontend/src/lib/components/FlowBuilder.svelte +++ b/frontend/src/lib/components/FlowBuilder.svelte @@ -44,6 +44,8 @@ import FlowPreviewButtons from './flows/header/FlowPreviewButtons.svelte' import type { FlowEditorContext, FlowInput, FlowInputEditorState } from './flows/types' import { SelectionManager } from './graph/selectionUtils.svelte' + import { NoteEditor } from './graph/noteEditor.svelte' + import { setNoteEditorContext } from './graph/noteEditor.svelte' import { cleanInputs } from './flows/utils' import { Calendar, @@ -636,6 +638,10 @@ outputPickerOpenFns }) + // Set up NoteEditor context for note editing capabilities + const noteEditor = new NoteEditor(flowStore) + setNoteEditorContext(noteEditor) + setContext( 'FlowGraphAssetContext', initFlowGraphAssetsCtx({ getModules: () => flowStore.val.value.modules }) diff --git a/frontend/src/lib/components/flows/map/FlowModuleSchemaMap.svelte b/frontend/src/lib/components/flows/map/FlowModuleSchemaMap.svelte index 82de07f459..825e01f271 100644 --- a/frontend/src/lib/components/flows/map/FlowModuleSchemaMap.svelte +++ b/frontend/src/lib/components/flows/map/FlowModuleSchemaMap.svelte @@ -42,6 +42,7 @@ import { ModulesTestStates } from '$lib/components/modulesTest.svelte' import type { StateStore } from '$lib/utils' import { type AgentTool, flowModuleToAgentTool, createMcpTool } from '../agentToolUtils' + import { getNoteEditorContext } from '$lib/components/graph/noteEditor.svelte' interface Props { sidebarSize?: number | undefined @@ -111,6 +112,9 @@ const { flowPropPickerConfig } = getContext('PropPickerContext') + // Get NoteEditor context for note position updates + const noteEditorContext = getNoteEditorContext() + export async function insertNewModuleAtIndex( modules: FlowModule[] | AgentTool[], index: number, @@ -426,7 +430,7 @@ maxHeight={minHeight} modules={flowStore.val.value.modules} {noteMode} - bind:notes={flowStore.val.value.notes} + notes={flowStore.val.value.notes} preprocessorModule={flowStore.val.value?.preprocessor_module} {selectionManager} {workspace} @@ -655,6 +659,12 @@ {onOpenPreview} {onHideJobStatus} exitNoteMode={() => (noteMode = false)} + onNotePositionUpdate={(noteId, position) => { + // Update note position via NoteEditor context in edit mode + if (noteEditorContext?.noteEditor) { + noteEditorContext.noteEditor.updatePosition(noteId, position) + } + }} multiSelectEnabled /> diff --git a/frontend/src/lib/components/flows/types.ts b/frontend/src/lib/components/flows/types.ts index 1c69c46fea..62334ffc37 100644 --- a/frontend/src/lib/components/flows/types.ts +++ b/frontend/src/lib/components/flows/types.ts @@ -37,9 +37,6 @@ export type ExtendedOpenFlow = OpenFlow & { dedicated_worker?: boolean visible_to_runner_only?: boolean on_behalf_of_email?: string - ui?: { - notes?: FlowNote[] - } } export type FlowInputEditorState = { diff --git a/frontend/src/lib/components/graph/FlowGraphV2.svelte b/frontend/src/lib/components/graph/FlowGraphV2.svelte index e02421e502..daafdb6452 100644 --- a/frontend/src/lib/components/graph/FlowGraphV2.svelte +++ b/frontend/src/lib/components/graph/FlowGraphV2.svelte @@ -1,7 +1,6 @@ - - {@render children()} - +{#if noteEditorContext?.noteEditor} + + {@render children()} + +{/if} diff --git a/frontend/src/lib/components/graph/NoteTool.svelte b/frontend/src/lib/components/graph/NoteTool.svelte index 01db3d8f05..8ca53e88b3 100644 --- a/frontend/src/lib/components/graph/NoteTool.svelte +++ b/frontend/src/lib/components/graph/NoteTool.svelte @@ -1,11 +1,16 @@