Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(nodes/ui): refactor field types, workflows #5157

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
4552cd2
feat(ui): add support for custom field types
psychedelicious Nov 17, 2023
314600f
feat(ui): improved UI for missing node field templates
psychedelicious Nov 25, 2023
e9824ef
feat(nodes): improve docstrings in baseinvocation, disambiguate metho…
psychedelicious Nov 25, 2023
5978fc5
feat(nodes): warn if node has no version specified; fall back on 1.0.0
psychedelicious Nov 25, 2023
dd18cfe
feat(ui): remove `docs/` from prettierignore
psychedelicious Nov 25, 2023
df634ea
fix(ui): fix mis-named typeguard
psychedelicious Nov 25, 2023
0d41abc
feat(ui): constrain w/h in imageoutput schema
psychedelicious Nov 25, 2023
968a13e
feat(ui): update frontend README
psychedelicious Nov 25, 2023
47a9f89
feat(ui): add workflows design & implementation doc (WIP)
psychedelicious Nov 25, 2023
e23069b
feat(ui): update fields docstring
psychedelicious Nov 26, 2023
2116546
feat(ui): add errors for invalid polymorphic types
psychedelicious Nov 26, 2023
4ff99a4
feat(ui): move field output template builder to own file
psychedelicious Nov 26, 2023
77a8e8a
feat(ui): make buildFieldInputTemplate arg name consistent
psychedelicious Nov 26, 2023
29660e6
feat(ui): update workflows design & implementation docs (wip)
psychedelicious Nov 26, 2023
9613418
feat(ui): tidy node-related types
psychedelicious Nov 26, 2023
89d2188
feat(ui): organize node utils
psychedelicious Nov 26, 2023
9b978da
feat(ui): organize migrations files
psychedelicious Nov 26, 2023
c8f4dc0
feat(ui): update workflows design & implementation docs
psychedelicious Nov 26, 2023
24bb353
feat(ui): add links to relevant files in workflows doc
psychedelicious Nov 26, 2023
a369b2c
feat(ui): update readme
psychedelicious Nov 26, 2023
564d5c5
feat(ui): improve openapi schema types
psychedelicious Nov 27, 2023
1d5be9c
feat(nodes,ui): add detection of custom nodes
psychedelicious Nov 27, 2023
9132ad9
fix(nodes): fix loading node pack display
psychedelicious Nov 27, 2023
74a7ee4
fix(tests): remove deprecated arg
psychedelicious Nov 27, 2023
f666259
fix(ui): fix capitalization
psychedelicious Nov 27, 2023
fa1ef47
feat(ui): update comments in field.ts
psychedelicious Nov 27, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 14 additions & 8 deletions invokeai/app/api_app.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
from typing import Any

from fastapi.responses import HTMLResponse

from .services.config import InvokeAIAppConfig

# parse_args() must be called before any other imports. if it is not called first, consumers of the config
Expand All @@ -16,14 +12,15 @@
import socket
from inspect import signature
from pathlib import Path
from typing import Any

import uvicorn
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.middleware.gzip import GZipMiddleware
from fastapi.openapi.docs import get_redoc_html, get_swagger_ui_html
from fastapi.openapi.utils import get_openapi
from fastapi.responses import FileResponse
from fastapi.responses import FileResponse, HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi_events.handlers.local import local_handler
from fastapi_events.middleware import EventHandlerASGIMiddleware
Expand Down Expand Up @@ -51,7 +48,12 @@
workflows,
)
from .api.sockets import SocketIO
from .invocations.baseinvocation import BaseInvocation, UIConfigBase, _InputField, _OutputField
from .invocations.baseinvocation import (
BaseInvocation,
InputFieldJSONSchemaExtra,
OutputFieldJSONSchemaExtra,
UIConfigBase,
)

if is_mps_available():
import invokeai.backend.util.mps_fixes # noqa: F401 (monkeypatching on import)
Expand Down Expand Up @@ -147,15 +149,19 @@ def custom_openapi() -> dict[str, Any]:

# Add Node Editor UI helper schemas
ui_config_schemas = models_json_schema(
[(UIConfigBase, "serialization"), (_InputField, "serialization"), (_OutputField, "serialization")],
[
(UIConfigBase, "serialization"),
(InputFieldJSONSchemaExtra, "serialization"),
(OutputFieldJSONSchemaExtra, "serialization"),
],
ref_template="#/components/schemas/{model}",
)
for schema_key, ui_config_schema in ui_config_schemas[1]["$defs"].items():
openapi_schema["components"]["schemas"][schema_key] = ui_config_schema

# Add a reference to the output type to additionalProperties of the invoker schema
for invoker in all_invocations:
invoker_name = invoker.__name__
invoker_name = invoker.__name__ # type: ignore [attr-defined] # this is a valid attribute
output_type = signature(obj=invoker.invoke).return_annotation
output_type_title = output_type_titles[output_type.__name__]
invoker_schema = openapi_schema["components"]["schemas"][f"{invoker_name}"]
Expand Down
Loading