From 067026a0d019087a9a28cfc3d671f77f80b481a4 Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Mon, 7 Jul 2025 16:16:45 +1000 Subject: [PATCH] feat(ui): add autocomplete for Graph.addEdgeToMetadata --- .../src/features/nodes/util/graph/generation/Graph.ts | 3 ++- invokeai/frontend/web/src/services/api/types.ts | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/generation/Graph.ts b/invokeai/frontend/web/src/features/nodes/util/graph/generation/Graph.ts index 7d007c74bd..db94b946e8 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graph/generation/Graph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graph/generation/Graph.ts @@ -9,6 +9,7 @@ import type { AnyInvocationInputField, AnyInvocationOutputField, AnyModelConfig, + CoreMetadataFields, InputFields, Invocation, InvocationType, @@ -433,7 +434,7 @@ export class Graph { addEdgeToMetadata( fromNode: TFrom, fromField: OutputFields, - metadataField: string + metadataField: CoreMetadataFields | (string & Record) ): Edge { // @ts-expect-error `Graph` excludes `core_metadata` nodes due to its excessively wide typing return this.addEdge(fromNode, fromField, this.getMetadataNode(), metadataField); diff --git a/invokeai/frontend/web/src/services/api/types.ts b/invokeai/frontend/web/src/services/api/types.ts index 7bb5bf045b..640d0509a9 100644 --- a/invokeai/frontend/web/src/services/api/types.ts +++ b/invokeai/frontend/web/src/services/api/types.ts @@ -322,6 +322,15 @@ type NonInputFields = 'id' | 'type' | 'is_intermediate' | 'use_cache' | 'board' export type AnyInvocationInputField = Exclude>, NonInputFields>; export type InputFields = Extract; +type ExcludeIndexSignature = { + [K in keyof T as string extends K ? never : K]: T[K]; +}; + +export type CoreMetadataFields = Exclude< + keyof ExcludeIndexSignature, + NonInputFields +>; + type NonOutputFields = 'type'; export type AnyInvocationOutputField = Exclude>, NonOutputFields>; export type OutputFields = Extract<