cloudflare
Import
Section titled “Import”import * as api from "@fungi.computer/darkroom/cloudflare";Exports
Section titled “Exports”| 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. |
MediaOperationDOclass
Section titled “MediaOperationDO”Cloudflare lifecycle and RPC surface around the durable media owner.
Extends
Section titled “Extends”DurableObject<MediaOperationCloudflareEnvironment>
Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”new MediaOperationDO(ctx, env): MediaOperationDO;Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
ctx |
DurableObjectState |
env |
MediaOperationCloudflareEnvironment |
Returns
Section titled “Returns”Overrides
Section titled “Overrides”DurableObject<MediaOperationCloudflareEnvironment>.constructorMethods
Section titled “Methods”read()
Section titled “read()”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.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
…input |
[] |
Returns
Section titled “Returns”| 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
preflightErasure()
Section titled “preflightErasure()”preflightErasure(...input): ReturnType<MediaOperationOwner["preflightErasure"]>;Check host namespace, request identity and inactivity before erasure.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
…input |
[string, string] |
- |
Returns
Section titled “Returns”ReturnType<MediaOperationOwner["preflightErasure"]>
erase()
Section titled “erase()”erase(...input): Promise<Readonly<{ clear: boolean;}>>;Erase inactive output and local storage, then retain the durable erasure marker.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
…input |
[string, string] |
- |
Returns
Section titled “Returns”Promise<Readonly<{ clear: boolean; }>>
readErasure()
Section titled “readErasure()”readErasure(...input): Promise<Readonly<{ clear: boolean;}>>;Read back empty SQL, alarm and retained output with the durable erasure marker.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
…input |
[] |
Returns
Section titled “Returns”Promise<Readonly<{ clear: boolean; }>>
admit()
Section titled “admit()”admit(...input): ReturnType<MediaOperationOwner["admit"]>;Capture immutable host identity and input, replaying exact requests and refusing changed input.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
…input |
[string, object, string, MediaOperationRequest] |
- |
Returns
Section titled “Returns”ReturnType<MediaOperationOwner["admit"]>
claim()
Section titled “claim()”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.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
…input |
[] |
Returns
Section titled “Returns”Promise<Readonly<{ kind: | "admitted" | "succeeded" |
"interrupted" | "conflict" | "replayed" | "claimed" | "pending";
operation: MediaOperationProjection;
leaseId?: string; }>>
recordEstimate()
Section titled “recordEstimate()”recordEstimate(...input): ReturnType<MediaOperationOwner["recordEstimate"]>;Pin the admitted price and begin the generation lease.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
…input |
[string, number] |
- |
Returns
Section titled “Returns”ReturnType<MediaOperationOwner["recordEstimate"]>
dispatchInBackground()
Section titled “dispatchInBackground()”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.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
…input |
[string, readonly Readonly<{ bytes: Uint8Array; format: ImageFormat; width: number; height: number; filename?: string; }>[]] |
- |
Returns
Section titled “Returns”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; }>>
alarm()
Section titled “alarm()”alarm(...input): Promise<void>;Run a background generation once; a retried alarm never redispatches.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
…input |
[] |
Returns
Section titled “Returns”Promise<void>
Overrides
Section titled “Overrides”DurableObject.alarm;interruptGeneration()
Section titled “interruptGeneration()”interruptGeneration(...input): ReturnType<MediaOperationOwner["interruptGeneration"]>;An aborted in-flight provider call is terminal for this request ID.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
…input |
[string, Readonly<{ stage: "provider" | "normalization"; safetyRefused: boolean; provider?: MediaProviderDiagnostic; }>] |
- |
Returns
Section titled “Returns”ReturnType<MediaOperationOwner["interruptGeneration"]>
recordGenerated()
Section titled “recordGenerated()”recordGenerated(...input): Promise<MediaRetentionResult>;Retain immutable provider output before making the save state visible.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
…input |
[string, Uint8Array<ArrayBufferLike>, string] |
- |
Returns
Section titled “Returns”Promise<MediaRetentionResult>
readGenerated()
Section titled “readGenerated()”readGenerated(...input): Promise<Uint8Array<ArrayBufferLike>>;Read exact retained bytes under the current save lease.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
…input |
[string] |
- |
Returns
Section titled “Returns”Promise<Uint8Array<ArrayBufferLike>>
releaseWrite()
Section titled “releaseWrite()”releaseWrite(...input): ReturnType<MediaOperationOwner["releaseWrite"]>;A fixed-path exact-byte save is safe to retry without repeating generation.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
…input |
[string] |
- |
Returns
Section titled “Returns”ReturnType<MediaOperationOwner["releaseWrite"]>
recordWritten()
Section titled “recordWritten()”recordWritten(...input): ReturnType<MediaOperationOwner["recordWritten"]>;Record a destination write and move to idempotent settlement.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
…input |
[string, string, object] |
- |
Returns
Section titled “Returns”ReturnType<MediaOperationOwner["recordWritten"]>
recordWrittenWithoutSettlement()
Section titled “recordWrittenWithoutSettlement()”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.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
…input |
[string, string, object] |
- |
Returns
Section titled “Returns”ReturnType<MediaOperationOwner["recordWrittenWithoutSettlement"]>
recordSucceeded()
Section titled “recordSucceeded()”recordSucceeded(...input): ReturnType<MediaOperationOwner["recordSucceeded"]>;Commit the settled receipt after verifying the saved output and admitted price.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
…input |
[string, object] |
- |
Returns
Section titled “Returns”ReturnType<MediaOperationOwner["recordSucceeded"]>
releaseEstimate()
Section titled “releaseEstimate()”releaseEstimate(...input): ReturnType<MediaOperationOwner["releaseEstimate"]>;Release preparation or refused admission so the same request can retry.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
…input |
[string] |
- |
Returns
Section titled “Returns”ReturnType<MediaOperationOwner["releaseEstimate"]>
MediaAiPorttype alias
Section titled “MediaAiPort”type MediaAiPort = object;Workers AI results vary by model; the provider decodes them at this boundary.
Methods
Section titled “Methods”run( model, input, options?): Promise<MediaAiResult>;Dispatch to the native Workers AI binding.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
model |
string |
input |
Record<string, unknown> |
options? |
AiOptions |
Returns
Section titled “Returns”Promise<MediaAiResult>
MediaImagePorttype alias
Section titled “MediaImagePort”type MediaImagePort = object;Only image metadata and the bounded resize chain are consumed by Media.
Methods
Section titled “Methods”info()
Section titled “info()”info(input): Promise<ImageInfoResponse>;Read decoded image metadata through the Images binding.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
input |
ReadableStream<Uint8Array<ArrayBufferLike>> |
Returns
Section titled “Returns”Promise<ImageInfoResponse>
input()
Section titled “input()”input(input): object;Start the native resize and encode chain.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
input |
ReadableStream<Uint8Array<ArrayBufferLike>> |
Returns
Section titled “Returns”| Name | Type | Description |
|---|---|---|
transform() |
(options) => object |
Apply the native scale-down transform. |
MediaOperationCloudflareEnvironmenttype alias
Section titled “MediaOperationCloudflareEnvironment”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()”function createWorkersAiMediaProvider(ai, options?): MediaProvider;Media’s provider port on the Workers AI binding, with fixed options such as the AI Gateway route.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
ai |
MediaAiPort |
options? |
AiOptions |
Returns
Section titled “Returns”createImagesReferenceFitter()function
Section titled “createImagesReferenceFitter()”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.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
images |
MediaImagePort |
Returns
Section titled “Returns”createImagesViewFitter()function
Section titled “createImagesViewFitter()”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.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
images |
MediaImagePort |
Returns
Section titled “Returns”References
Section titled “References”MediaOperationCoordinates
Section titled “MediaOperationCoordinates”Re-exports MediaOperationCoordinates
MediaOperationRequest
Section titled “MediaOperationRequest”Re-exports MediaOperationRequest
MediaAiResult
Section titled “MediaAiResult”Re-exports MediaAiResult
MediaOperationOwner
Section titled “MediaOperationOwner”Re-exports MediaOperationOwner
MediaOperationContext
Section titled “MediaOperationContext”Re-exports MediaOperationContext
MediaOperationStorage
Section titled “MediaOperationStorage”Re-exports MediaOperationStorage
MediaOperationBucket
Section titled “MediaOperationBucket”Re-exports MediaOperationBucket
MediaOperationObject
Section titled “MediaOperationObject”Re-exports MediaOperationObject