Skip to content
API reference

cloudflare

Import
import * as api from "@fungi.computer/darkroom/cloudflare";
Kind Export Description
class MediaOperationDO Cloudflare lifecycle and RPC surface around the durable media owner.
type alias MediaAiPort Workers AI results vary by model; the provider decodes them at this boundary.
type alias MediaImagePort Only image metadata and the bounded resize chain are consumed by Media.
type alias MediaOperationCloudflareEnvironment Retention storage and native background provider bindings for the operation DO.
function createWorkersAiMediaProvider() Media’s provider port on the Workers AI binding, with fixed options such as the AI Gateway route.
function createImagesReferenceFitter() Media’s reference preparation on the Images binding: decode the real bytes, scale an oversized image down to MAX_REFERENCE_DIMENSION as PNG, then decode the output so its metadata describes the bytes actually sent.
function createImagesViewFitter() Fit one image for a model to look at on the Images binding: always re-encode it as JPEG (quality 80), scaled down within maxDimension, and decode the output so its metadata describes the bytes actually returned.

Cloudflare lifecycle and RPC surface around the durable media owner.

Signature
new MediaOperationDO(ctx, env): MediaOperationDO;
Parameter Type
ctx DurableObjectState
env MediaOperationCloudflareEnvironment

MediaOperationDO

Signature
DurableObject<MediaOperationCloudflareEnvironment>.constructor
Signature
read(...input):
| Readonly<{
operationId: string;
requestId: string;
namespace: string;
owner: string;
state: | "admitted"
| "estimating"
| "generating"
| "writing"
| "charging"
| "written"
| "succeeded"
| "interrupted";
spentFailure: "output_format_mismatch" | null;
providerFailure: | Readonly<{
stage: "provider" | "normalization";
safetyRefused: boolean;
provider?: MediaProviderDiagnostic;
}>
| null;
estimatedCostMilliunits: number | null;
image: | {
bytes: number;
format: string;
}
| null;
result: | {
generationId: string;
bytes: number;
format: string;
costMilliunits: number;
}
| null;
createdAt: number;
updatedAt: number;
}>
| null;

Read the safe persisted operation projection, or null before admission or after erasure.

Parameter Type
…input []

| Readonly<{ operationId: string; requestId: string; namespace: string; owner: string; state: | "admitted" | "estimating" | "generating" | "writing" | "charging" | "written" | "succeeded" | "interrupted"; spentFailure: "output_format_mismatch" | null; providerFailure: | Readonly<{ stage: "provider" | "normalization"; safetyRefused: boolean; provider?: MediaProviderDiagnostic; }> | null; estimatedCostMilliunits: number | null; image: | { bytes: number; format: string; } | null; result: | { generationId: string; bytes: number; format: string; costMilliunits: number; } | null; createdAt: number; updatedAt: number; }> | null

Signature
preflightErasure(...input): ReturnType<MediaOperationOwner["preflightErasure"]>;

Check host namespace, request identity and inactivity before erasure.

Parameter Type Description
…input [string, string] -

ReturnType<MediaOperationOwner["preflightErasure"]>

Signature
erase(...input): Promise<Readonly<{
clear: boolean;
}>>;

Erase inactive output and local storage, then retain the durable erasure marker.

Parameter Type Description
…input [string, string] -

Promise<Readonly<{ clear: boolean; }>>

Signature
readErasure(...input): Promise<Readonly<{
clear: boolean;
}>>;

Read back empty SQL, alarm and retained output with the durable erasure marker.

Parameter Type
…input []

Promise<Readonly<{ clear: boolean; }>>

Signature
admit(...input): ReturnType<MediaOperationOwner["admit"]>;

Capture immutable host identity and input, replaying exact requests and refusing changed input.

Parameter Type Description
…input [string, object, string, MediaOperationRequest] -

ReturnType<MediaOperationOwner["admit"]>

Signature
claim(...input): Promise<Readonly<{
kind: | "admitted"
| "succeeded"
| "interrupted"
| "conflict"
| "replayed"
| "claimed"
| "pending";
operation: MediaOperationProjection;
leaseId?: string;
}>>;

Claim a safe dispatch or save lease, recovering retained output without redispatching inference.

Parameter Type
…input []

Promise<Readonly<{ kind: | "admitted" | "succeeded" | "interrupted" | "conflict" | "replayed" | "claimed" | "pending"; operation: MediaOperationProjection; leaseId?: string; }>>

Signature
recordEstimate(...input): ReturnType<MediaOperationOwner["recordEstimate"]>;

Pin the admitted price and begin the generation lease.

Parameter Type Description
…input [string, number] -

ReturnType<MediaOperationOwner["recordEstimate"]>

Signature
dispatchInBackground(...input): Promise<Readonly<{
operationId: string;
requestId: string;
namespace: string;
owner: string;
state: | "admitted"
| "estimating"
| "generating"
| "writing"
| "charging"
| "written"
| "succeeded"
| "interrupted";
spentFailure: "output_format_mismatch" | null;
providerFailure: | Readonly<{
stage: "provider" | "normalization";
safetyRefused: boolean;
provider?: MediaProviderDiagnostic;
}>
| null;
estimatedCostMilliunits: number | null;
image: | {
bytes: number;
format: string;
}
| null;
result: | {
generationId: string;
bytes: number;
format: string;
costMilliunits: number;
}
| null;
createdAt: number;
updatedAt: number;
}>>;

Hand a long (video) generation to this owner’s alarm. The caller’s request returns at once; the alarm dispatches the provider exactly once, retains the output, and releases the lease so a later retry saves and charges it.

Parameter Type Description
…input [string, readonly Readonly<{ bytes: Uint8Array; format: ImageFormat; width: number; height: number; filename?: string; }>[]] -

Promise<Readonly<{ operationId: string; requestId: string; namespace: string; owner: string; state: | "admitted" | "estimating" | "generating" | "writing" | "charging" | "written" | "succeeded" | "interrupted"; spentFailure: "output_format_mismatch" | null; providerFailure: | Readonly<{ stage: "provider" | "normalization"; safetyRefused: boolean; provider?: MediaProviderDiagnostic; }> | null; estimatedCostMilliunits: number | null; image: | { bytes: number; format: string; } | null; result: | { generationId: string; bytes: number; format: string; costMilliunits: number; } | null; createdAt: number; updatedAt: number; }>>

Signature
alarm(...input): Promise<void>;

Run a background generation once; a retried alarm never redispatches.

Parameter Type
…input []

Promise<void>

Signature
DurableObject.alarm;
Signature
interruptGeneration(...input): ReturnType<MediaOperationOwner["interruptGeneration"]>;

An aborted in-flight provider call is terminal for this request ID.

Parameter Type Description
…input [string, Readonly<{ stage: "provider" | "normalization"; safetyRefused: boolean; provider?: MediaProviderDiagnostic; }>] -

ReturnType<MediaOperationOwner["interruptGeneration"]>

Signature
recordGenerated(...input): Promise<MediaRetentionResult>;

Retain immutable provider output before making the save state visible.

Parameter Type Description
…input [string, Uint8Array<ArrayBufferLike>, string] -

Promise<MediaRetentionResult>

Signature
readGenerated(...input): Promise<Uint8Array<ArrayBufferLike>>;

Read exact retained bytes under the current save lease.

Parameter Type Description
…input [string] -

Promise<Uint8Array<ArrayBufferLike>>

Signature
releaseWrite(...input): ReturnType<MediaOperationOwner["releaseWrite"]>;

A fixed-path exact-byte save is safe to retry without repeating generation.

Parameter Type Description
…input [string] -

ReturnType<MediaOperationOwner["releaseWrite"]>

Signature
recordWritten(...input): ReturnType<MediaOperationOwner["recordWritten"]>;

Record a destination write and move to idempotent settlement.

Parameter Type Description
…input [string, string, object] -

ReturnType<MediaOperationOwner["recordWritten"]>

Signature
recordWrittenWithoutSettlement(...input): ReturnType<MediaOperationOwner["recordWrittenWithoutSettlement"]>;

Persist a completed Computer write without claiming billing success. A lost receipt may replay the exact retained bytes to the captured path; it never repeats provider generation.

Parameter Type Description
…input [string, string, object] -

ReturnType<MediaOperationOwner["recordWrittenWithoutSettlement"]>

Signature
recordSucceeded(...input): ReturnType<MediaOperationOwner["recordSucceeded"]>;

Commit the settled receipt after verifying the saved output and admitted price.

Parameter Type Description
…input [string, object] -

ReturnType<MediaOperationOwner["recordSucceeded"]>

Signature
releaseEstimate(...input): ReturnType<MediaOperationOwner["releaseEstimate"]>;

Release preparation or refused admission so the same request can retry.

Parameter Type Description
…input [string] -

ReturnType<MediaOperationOwner["releaseEstimate"]>

MediaAiPorttype alias

Section titled “MediaAiPort”
Signature
type MediaAiPort = object;

Workers AI results vary by model; the provider decodes them at this boundary.

Signature
run(
model,
input,
options?
): Promise<MediaAiResult>;

Dispatch to the native Workers AI binding.

Parameter Type
model string
input Record<string, unknown>
options? AiOptions

Promise<MediaAiResult>


MediaImagePorttype alias

Section titled “MediaImagePort”
Signature
type MediaImagePort = object;

Only image metadata and the bounded resize chain are consumed by Media.

Signature
info(input): Promise<ImageInfoResponse>;

Read decoded image metadata through the Images binding.

Parameter Type
input ReadableStream<Uint8Array<ArrayBufferLike>>

Promise<ImageInfoResponse>

Signature
input(input): object;

Start the native resize and encode chain.

Parameter Type
input ReadableStream<Uint8Array<ArrayBufferLike>>
Name Type Description
transform() (options) => object Apply the native scale-down transform.

MediaOperationCloudflareEnvironmenttype alias

Section titled “MediaOperationCloudflareEnvironment”
Signature
type MediaOperationCloudflareEnvironment = MediaOperationEnvironment &
Readonly<{
AI?: MediaAiPort;
AI_GATEWAY_ID?: string;
}>;

Retention storage and native background provider bindings for the operation DO.

createWorkersAiMediaProvider()function

Section titled “createWorkersAiMediaProvider()”
Signature
function createWorkersAiMediaProvider(ai, options?): MediaProvider;

Media’s provider port on the Workers AI binding, with fixed options such as the AI Gateway route.

Parameter Type
ai MediaAiPort
options? AiOptions

MediaProvider


createImagesReferenceFitter()function

Section titled “createImagesReferenceFitter()”
Signature
function createImagesReferenceFitter(images): ReferenceImageFitter;

Media’s reference preparation on the Images binding: decode the real bytes, scale an oversized image down to MAX_REFERENCE_DIMENSION as PNG, then decode the output so its metadata describes the bytes actually sent.

Parameter Type
images MediaImagePort

ReferenceImageFitter


createImagesViewFitter()function

Section titled “createImagesViewFitter()”
Signature
function createImagesViewFitter(images): ImageViewFitter;

Fit one image for a model to look at on the Images binding: always re-encode it as JPEG (quality 80), scaled down within maxDimension, and decode the output so its metadata describes the bytes actually returned.

Parameter Type
images MediaImagePort

ImageViewFitter

Re-exports MediaOperationCoordinates


Re-exports MediaOperationRequest


Re-exports MediaAiResult


Re-exports MediaOperationOwner


Re-exports MediaOperationContext


Re-exports MediaOperationStorage


Re-exports MediaOperationBucket


Re-exports MediaOperationObject