Compare commits

..

No commits in common. "d1c5ef4055cd63f65371aac9c0d1499b66b9d03c" and "38330dfd42fdf74cbd7d4fc76059f069cb8344af" have entirely different histories.

3 changed files with 138 additions and 28 deletions

View File

@ -54,12 +54,7 @@ class GrokImageNode(IO.ComfyNode):
inputs=[
IO.Combo.Input(
"model",
options=[
"grok-imagine-image-quality",
"grok-imagine-image-pro",
"grok-imagine-image",
"grok-imagine-image-beta",
],
options=["grok-imagine-image-pro", "grok-imagine-image", "grok-imagine-image-beta"],
),
IO.String.Input(
"prompt",
@ -116,12 +111,10 @@ class GrokImageNode(IO.ComfyNode):
],
is_api_node=True,
price_badge=IO.PriceBadge(
depends_on=IO.PriceBadgeDepends(widgets=["model", "number_of_images", "resolution"]),
depends_on=IO.PriceBadgeDepends(widgets=["model", "number_of_images"]),
expr="""
(
$rate := widgets.model = "grok-imagine-image-quality"
? (widgets.resolution = "1k" ? 0.05 : 0.07)
: ($contains(widgets.model, "pro") ? 0.07 : 0.02);
$rate := $contains(widgets.model, "pro") ? 0.07 : 0.02;
{"type":"usd","usd": $rate * widgets.number_of_images}
)
""",
@ -174,12 +167,7 @@ class GrokImageEditNode(IO.ComfyNode):
inputs=[
IO.Combo.Input(
"model",
options=[
"grok-imagine-image-quality",
"grok-imagine-image-pro",
"grok-imagine-image",
"grok-imagine-image-beta",
],
options=["grok-imagine-image-pro", "grok-imagine-image", "grok-imagine-image-beta"],
),
IO.Image.Input("image", display_name="images"),
IO.String.Input(
@ -240,19 +228,11 @@ class GrokImageEditNode(IO.ComfyNode):
],
is_api_node=True,
price_badge=IO.PriceBadge(
depends_on=IO.PriceBadgeDepends(widgets=["model", "number_of_images", "resolution"]),
depends_on=IO.PriceBadgeDepends(widgets=["model", "number_of_images"]),
expr="""
(
$isQualityModel := widgets.model = "grok-imagine-image-quality";
$isPro := $contains(widgets.model, "pro");
$rate := $isQualityModel
? (widgets.resolution = "1k" ? 0.05 : 0.07)
: ($isPro ? 0.07 : 0.02);
$base := $isQualityModel ? 0.01 : 0.002;
$output := $rate * widgets.number_of_images;
$isPro
? {"type":"usd","usd": $base + $output}
: {"type":"range_usd","min_usd": $base + $output, "max_usd": 3 * $base + $output}
$rate := $contains(widgets.model, "pro") ? 0.07 : 0.02;
{"type":"usd","usd": 0.002 + $rate * widgets.number_of_images}
)
""",
),

View File

@ -2115,6 +2115,76 @@ paths:
schema:
$ref: "#/components/schemas/CloudError"
/api/job/{job_id}:
get:
operationId: getCloudJob
tags: [queue]
summary: Get a single cloud job by ID
description: "[cloud-only] Returns the full cloud job record, including workflow, outputs, and execution metadata."
x-runtime: [cloud]
parameters:
- name: job_id
in: path
required: true
schema:
type: string
format: uuid
description: The job ID to fetch.
responses:
"200":
description: Cloud job detail
content:
application/json:
schema:
$ref: "#/components/schemas/CloudJob"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/CloudError"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/CloudError"
/api/job/{job_id}/outputs:
get:
operationId: getCloudJobOutputs
tags: [queue]
summary: Get outputs for a cloud job
description: "[cloud-only] Returns the output assets produced by a cloud job execution."
x-runtime: [cloud]
parameters:
- name: job_id
in: path
required: true
schema:
type: string
format: uuid
description: The job ID to fetch outputs for.
responses:
"200":
description: Job outputs
content:
application/json:
schema:
$ref: "#/components/schemas/CloudJobOutputs"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/CloudError"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/CloudError"
/api/job/{job_id}/status:
get:
operationId: getCloudJobStatus
@ -6888,6 +6958,51 @@ components:
additionalProperties: true
description: Additional error context
CloudJob:
type: object
x-runtime: [cloud]
description: "[cloud-only] Full cloud job record including workflow and execution metadata."
required:
- id
- status
properties:
id:
type: string
format: uuid
status:
type: string
enum: [pending, running, completed, failed, cancelled]
workflow:
type: object
additionalProperties: true
description: Submitted workflow graph
outputs:
type: object
additionalProperties: true
description: Execution outputs keyed by node ID
created_at:
type: string
format: date-time
started_at:
type: string
format: date-time
nullable: true
completed_at:
type: string
format: date-time
nullable: true
workflow_id:
type: string
format: uuid
nullable: true
machine_id:
type: string
nullable: true
error:
type: string
nullable: true
description: Error message if the job failed
CloudJobStatus:
type: object
x-runtime: [cloud]
@ -6916,6 +7031,21 @@ components:
format: date-time
nullable: true
CloudJobOutputs:
type: object
x-runtime: [cloud]
description: "[cloud-only] Output assets produced by a cloud job execution."
properties:
outputs:
type: object
additionalProperties: true
description: Output data keyed by node ID
assets:
type: array
items:
$ref: "#/components/schemas/Asset"
description: Asset records created from job outputs
CloudPrompt:
type: object
x-runtime: [cloud]

View File

@ -1,5 +1,5 @@
comfyui-frontend-package==1.43.17
comfyui-workflow-templates==0.9.72
comfyui-workflow-templates==0.9.69
comfyui-embedded-docs==0.4.4
torch
torchsde