diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json deleted file mode 100644 index 68d175d..0000000 --- a/.dart_tool/package_config.json +++ /dev/null @@ -1,459 +0,0 @@ -{ - "configVersion": 2, - "packages": [ - { - "name": "_fe_analyzer_shared", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/_fe_analyzer_shared-80.0.0", - "packageUri": "lib/", - "languageVersion": "3.3" - }, - { - "name": "analyzer", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/analyzer-7.3.0", - "packageUri": "lib/", - "languageVersion": "3.3" - }, - { - "name": "args", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/args-2.7.0", - "packageUri": "lib/", - "languageVersion": "3.3" - }, - { - "name": "async", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/async-2.13.0", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "boolean_selector", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/boolean_selector-2.1.2", - "packageUri": "lib/", - "languageVersion": "3.1" - }, - { - "name": "build", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/build-2.4.2", - "packageUri": "lib/", - "languageVersion": "3.6" - }, - { - "name": "build_config", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/build_config-1.1.2", - "packageUri": "lib/", - "languageVersion": "3.6" - }, - { - "name": "build_daemon", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/build_daemon-4.0.4", - "packageUri": "lib/", - "languageVersion": "3.6" - }, - { - "name": "build_resolvers", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/build_resolvers-2.4.4", - "packageUri": "lib/", - "languageVersion": "3.6" - }, - { - "name": "build_runner", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/build_runner-2.4.15", - "packageUri": "lib/", - "languageVersion": "3.6" - }, - { - "name": "build_runner_core", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/build_runner_core-8.0.0", - "packageUri": "lib/", - "languageVersion": "3.6" - }, - { - "name": "built_collection", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/built_collection-5.1.1", - "packageUri": "lib/", - "languageVersion": "2.12" - }, - { - "name": "built_value", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/built_value-8.9.5", - "packageUri": "lib/", - "languageVersion": "3.0" - }, - { - "name": "checked_yaml", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/checked_yaml-2.0.3", - "packageUri": "lib/", - "languageVersion": "2.19" - }, - { - "name": "code_builder", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/code_builder-4.10.1", - "packageUri": "lib/", - "languageVersion": "3.5" - }, - { - "name": "collection", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/collection-1.19.1", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "convert", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/convert-3.1.2", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "coverage", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/coverage-1.11.1", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "crypto", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/crypto-3.0.6", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "dart_style", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/dart_style-3.0.1", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "file", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/file-7.0.1", - "packageUri": "lib/", - "languageVersion": "3.0" - }, - { - "name": "fixnum", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/fixnum-1.1.1", - "packageUri": "lib/", - "languageVersion": "3.1" - }, - { - "name": "freezed", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/freezed-3.0.4", - "packageUri": "lib/", - "languageVersion": "3.6" - }, - { - "name": "freezed_annotation", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/freezed_annotation-3.0.0", - "packageUri": "lib/", - "languageVersion": "3.0" - }, - { - "name": "frontend_server_client", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/frontend_server_client-4.0.0", - "packageUri": "lib/", - "languageVersion": "3.0" - }, - { - "name": "glob", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/glob-2.1.3", - "packageUri": "lib/", - "languageVersion": "3.3" - }, - { - "name": "graphs", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/graphs-2.3.2", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "http", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/http-1.3.0", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "http_multi_server", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/http_multi_server-3.2.2", - "packageUri": "lib/", - "languageVersion": "3.2" - }, - { - "name": "http_parser", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/http_parser-4.1.2", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "io", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/io-1.0.5", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "js", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/js-0.7.2", - "packageUri": "lib/", - "languageVersion": "3.7" - }, - { - "name": "json_annotation", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/json_annotation-4.9.0", - "packageUri": "lib/", - "languageVersion": "3.0" - }, - { - "name": "json_serializable", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/json_serializable-6.9.4", - "packageUri": "lib/", - "languageVersion": "3.6" - }, - { - "name": "lints", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/lints-5.1.1", - "packageUri": "lib/", - "languageVersion": "3.6" - }, - { - "name": "logging", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/logging-1.3.0", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "matcher", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/matcher-0.12.17", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "meta", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/meta-1.16.0", - "packageUri": "lib/", - "languageVersion": "2.12" - }, - { - "name": "mime", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/mime-2.0.0", - "packageUri": "lib/", - "languageVersion": "3.2" - }, - { - "name": "mockito", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/mockito-5.4.5", - "packageUri": "lib/", - "languageVersion": "3.6" - }, - { - "name": "node_preamble", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/node_preamble-2.0.2", - "packageUri": "lib/", - "languageVersion": "2.12" - }, - { - "name": "package_config", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/package_config-2.2.0", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "path", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/path-1.9.1", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "pool", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/pool-1.5.1", - "packageUri": "lib/", - "languageVersion": "2.12" - }, - { - "name": "pub_semver", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/pub_semver-2.2.0", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "pubspec_parse", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/pubspec_parse-1.5.0", - "packageUri": "lib/", - "languageVersion": "3.6" - }, - { - "name": "shelf", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/shelf-1.4.2", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "shelf_packages_handler", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/shelf_packages_handler-3.0.2", - "packageUri": "lib/", - "languageVersion": "2.17" - }, - { - "name": "shelf_static", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/shelf_static-1.1.3", - "packageUri": "lib/", - "languageVersion": "3.3" - }, - { - "name": "shelf_web_socket", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/shelf_web_socket-3.0.0", - "packageUri": "lib/", - "languageVersion": "3.5" - }, - { - "name": "source_gen", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/source_gen-2.0.0", - "packageUri": "lib/", - "languageVersion": "3.6" - }, - { - "name": "source_helper", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/source_helper-1.3.5", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "source_map_stack_trace", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/source_map_stack_trace-2.1.2", - "packageUri": "lib/", - "languageVersion": "3.3" - }, - { - "name": "source_maps", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/source_maps-0.10.13", - "packageUri": "lib/", - "languageVersion": "3.3" - }, - { - "name": "source_span", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/source_span-1.10.1", - "packageUri": "lib/", - "languageVersion": "3.1" - }, - { - "name": "sprintf", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/sprintf-7.0.0", - "packageUri": "lib/", - "languageVersion": "2.12" - }, - { - "name": "stack_trace", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/stack_trace-1.12.1", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "stream_channel", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/stream_channel-2.1.4", - "packageUri": "lib/", - "languageVersion": "3.3" - }, - { - "name": "stream_transform", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/stream_transform-2.1.1", - "packageUri": "lib/", - "languageVersion": "3.1" - }, - { - "name": "string_scanner", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/string_scanner-1.4.1", - "packageUri": "lib/", - "languageVersion": "3.1" - }, - { - "name": "term_glyph", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/term_glyph-1.2.2", - "packageUri": "lib/", - "languageVersion": "3.1" - }, - { - "name": "test", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/test-1.25.15", - "packageUri": "lib/", - "languageVersion": "3.5" - }, - { - "name": "test_api", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/test_api-0.7.4", - "packageUri": "lib/", - "languageVersion": "3.5" - }, - { - "name": "test_core", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/test_core-0.6.8", - "packageUri": "lib/", - "languageVersion": "3.5" - }, - { - "name": "timing", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/timing-1.0.2", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "typed_data", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/typed_data-1.4.0", - "packageUri": "lib/", - "languageVersion": "3.5" - }, - { - "name": "uuid", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/uuid-4.5.1", - "packageUri": "lib/", - "languageVersion": "3.0" - }, - { - "name": "vm_service", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/vm_service-15.0.0", - "packageUri": "lib/", - "languageVersion": "3.3" - }, - { - "name": "watcher", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/watcher-1.1.1", - "packageUri": "lib/", - "languageVersion": "3.1" - }, - { - "name": "web", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/web-1.1.1", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "web_socket", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/web_socket-0.1.6", - "packageUri": "lib/", - "languageVersion": "3.3" - }, - { - "name": "web_socket_channel", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/web_socket_channel-3.0.2", - "packageUri": "lib/", - "languageVersion": "3.3" - }, - { - "name": "webkit_inspection_protocol", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/webkit_inspection_protocol-1.2.1", - "packageUri": "lib/", - "languageVersion": "3.0" - }, - { - "name": "yaml", - "rootUri": "file:///home/menno/.pub-cache/hosted/pub.dev/yaml-3.1.3", - "packageUri": "lib/", - "languageVersion": "3.4" - }, - { - "name": "comfyui_api_sdk", - "rootUri": "../", - "packageUri": "lib/", - "languageVersion": "3.0" - } - ], - "generated": "2025-03-20T13:27:48.930532Z", - "generator": "pub", - "generatorVersion": "3.7.2", - "pubCache": "file:///home/menno/.pub-cache" -} diff --git a/.dart_tool/pub/bin/test/test.dart-3.7.2.snapshot b/.dart_tool/pub/bin/test/test.dart-3.7.2.snapshot deleted file mode 100644 index cec5c05..0000000 Binary files a/.dart_tool/pub/bin/test/test.dart-3.7.2.snapshot and /dev/null differ diff --git a/.dart_tool/test/incremental_kernel.Ly9AZGFydD0zLjA= b/.dart_tool/test/incremental_kernel.Ly9AZGFydD0zLjA= deleted file mode 100644 index 0a94f0b..0000000 Binary files a/.dart_tool/test/incremental_kernel.Ly9AZGFydD0zLjA= and /dev/null differ diff --git a/lib/src/comfyui_api.dart b/lib/src/comfyui_api.dart index d49c53b..05a58c7 100644 --- a/lib/src/comfyui_api.dart +++ b/lib/src/comfyui_api.dart @@ -14,6 +14,7 @@ import 'models/checkpoint.dart'; import 'models/vae.dart'; import 'models/lora.dart'; import 'websocket_manager.dart'; +import 'models/submit_prompt_response.dart'; /// A Dart SDK for interacting with the ComfyUI API class ComfyUiApi { @@ -186,7 +187,7 @@ class ComfyUiApi { } /// Submits a prompt (workflow) to generate an image - Future> submitPrompt(Map prompt) async { + Future submitPrompt(Map prompt) async { final response = await _httpClient.post( Uri.parse('$host/api/prompt'), headers: {'Content-Type': 'application/json'}, @@ -201,7 +202,7 @@ class ComfyUiApi { _webSocketManager.triggerOnPromptStart(promptId); } - return responseData; + return SubmitPromptResponse.fromJson(responseData); } /// Validates HTTP response and throws an exception if needed diff --git a/lib/src/models/history_response.dart b/lib/src/models/history_response.dart index d0b87c2..0f57920 100644 --- a/lib/src/models/history_response.dart +++ b/lib/src/models/history_response.dart @@ -1,3 +1,5 @@ +import 'package:http/http.dart' as http; + class HistoryResponse { final Map items; @@ -40,13 +42,13 @@ class Prompt { final int id; final String promptId; final Map nodes; - final ExtraPngInfo extraPngInfo; + final ExtraPngInfo? extraPngInfo; Prompt({ required this.id, required this.promptId, required this.nodes, - required this.extraPngInfo, + this.extraPngInfo, }); factory Prompt.fromJson(List json) { @@ -56,7 +58,9 @@ class Prompt { nodes: (json[2] as Map).map( (key, value) => MapEntry(key, Node.fromJson(value)), ), - extraPngInfo: ExtraPngInfo.fromJson(json[3]['extra_pnginfo']), + extraPngInfo: json[3]['extra_pnginfo'] != null + ? ExtraPngInfo.fromJson(json[3]['extra_pnginfo']) + : null, ); } } @@ -196,6 +200,15 @@ class Image { type: json['type'] as String, ); } + + Future> fetchImageBytes(String host) async { + final response = + await http.get(Uri.parse('$host/api/view?filename=$filename')); + if (response.statusCode != 200) { + throw Exception('Failed to fetch image: ${response.statusCode}'); + } + return response.bodyBytes; + } } class Status { diff --git a/lib/src/models/submit_prompt_response.dart b/lib/src/models/submit_prompt_response.dart new file mode 100644 index 0000000..4d8d5ed --- /dev/null +++ b/lib/src/models/submit_prompt_response.dart @@ -0,0 +1,27 @@ +class SubmitPromptResponse { + final String promptId; + final int number; + final Map nodeErrors; + + SubmitPromptResponse({ + required this.promptId, + required this.number, + required this.nodeErrors, + }); + + factory SubmitPromptResponse.fromJson(Map json) { + return SubmitPromptResponse( + promptId: json['prompt_id'], + number: json['number'], + nodeErrors: json['node_errors'] ?? {}, + ); + } + + Map toJson() { + return { + 'prompt_id': promptId, + 'number': number, + 'node_errors': nodeErrors, + }; + } +}