woml-cli 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,11 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/script-host/json.ts", "../src/script-host/worker.ts"],
4
+ "sourcesContent": [
5
+ "import type { JsonValue } from './types';\n\nexport interface JsonViolation {\n readonly path: string;\n readonly reason: string;\n}\n\nfunction inspectJsonValue(\n value: unknown,\n path: string,\n ancestors: Set<object>,\n): JsonViolation | undefined {\n if (value === null || typeof value === 'string' || typeof value === 'boolean') {\n return undefined;\n }\n if (typeof value === 'number') {\n return Number.isFinite(value)\n ? undefined\n : { path, reason: 'numbers must be finite' };\n }\n if (typeof value !== 'object') {\n return { path, reason: `${typeof value} is not a JSON value` };\n }\n if (ancestors.has(value)) {\n return { path, reason: 'circular references are not JSON values' };\n }\n\n ancestors.add(value);\n try {\n if (Array.isArray(value)) {\n const allowedKeys = new Set(['length']);\n for (let index = 0; index < value.length; index += 1) {\n allowedKeys.add(String(index));\n if (!Object.prototype.hasOwnProperty.call(value, index)) {\n return {\n path: `${path}[${index}]`,\n reason: 'array holes are not JSON values',\n };\n }\n const issue = inspectJsonValue(value[index], `${path}[${index}]`, ancestors);\n if (issue !== undefined) return issue;\n }\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== 'string' || !allowedKeys.has(key)) {\n return { path, reason: 'arrays must not contain custom properties' };\n }\n }\n return undefined;\n }\n\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n return { path, reason: 'objects must be plain JSON objects' };\n }\n\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== 'string') {\n return { path, reason: 'symbol keys are not JSON object keys' };\n }\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (\n descriptor === undefined ||\n descriptor.enumerable !== true ||\n 'get' in descriptor ||\n 'set' in descriptor\n ) {\n return {\n path: `${path}.${key}`,\n reason: 'JSON fields must be enumerable data properties',\n };\n }\n const issue = inspectJsonValue(descriptor.value, `${path}.${key}`, ancestors);\n if (issue !== undefined) return issue;\n }\n return undefined;\n } finally {\n ancestors.delete(value);\n }\n}\n\nexport function findJsonViolation(value: unknown): JsonViolation | undefined {\n return inspectJsonValue(value, '$', new Set());\n}\n\nexport function deepFreezeJson<T extends JsonValue>(value: T): T {\n if (typeof value !== 'object' || value === null) return value;\n if (Array.isArray(value)) {\n for (const item of value) deepFreezeJson(item);\n } else {\n for (const item of Object.values(value)) deepFreezeJson(item);\n }\n return Object.isFrozen(value) ? value : Object.freeze(value);\n}\n",
6
+ "import { deepFreezeJson, findJsonViolation } from './json';\nimport type {\n CapabilityCallRequest,\n CapabilityCallResult,\n CapabilityFailure,\n FetchObservationAckMessage,\n JsonObject,\n JsonValue,\n LifecycleBindingV1,\n NativeFetchObservation,\n ReusableLifecycleBindingV1,\n ReusableScriptBindingV3,\n ScriptAttempt,\n ScriptBindingsV1,\n ScriptContext,\n} from './types';\n\nexport interface ScriptWorkerRequest {\n readonly invocationId: string;\n readonly runId: string;\n readonly nodeId: string;\n readonly timeoutMs: number;\n readonly source: string;\n readonly context: ScriptContext;\n readonly mode?: 'step' | 'lifecycle';\n readonly lifecycle?: LifecycleBindingV1;\n readonly reusable?: ReusableScriptBindingV3;\n readonly reusableLifecycle?: ReusableLifecycleBindingV1;\n readonly attempt?: ScriptAttempt;\n readonly bindings?: ScriptBindingsV1;\n readonly modules?: readonly ScriptWorkerModule[];\n}\n\nexport interface ScriptWorkerModule {\n readonly name: string;\n readonly bundleDigest: string;\n readonly exports: readonly string[];\n readonly bundle: string;\n readonly sourceMapDigest?: string;\n readonly sourceMap?: string;\n}\n\nexport type ScriptWorkerResponse =\n | { readonly ok: true; readonly result: JsonValue }\n | {\n readonly ok: false;\n readonly error: {\n readonly kind: 'script' | 'non-json' | 'service';\n readonly name: string;\n readonly message: string;\n readonly stack?: string;\n readonly moduleFrame?: string;\n readonly capability?: string;\n readonly operation?: string;\n readonly callId?: string;\n readonly cause?: CapabilityFailure;\n };\n };\n\nexport type ScriptWorkerInbound =\n | { readonly messageType: 'execute'; readonly request: ScriptWorkerRequest }\n | {\n readonly messageType: 'capability_result';\n readonly callId: string;\n readonly result: CapabilityCallResult;\n }\n | {\n readonly messageType: 'fetch_observation_ack';\n readonly requestId: string;\n readonly ack: FetchObservationAckMessage;\n };\n\nexport type ScriptWorkerOutbound =\n | {\n readonly messageType: 'completed';\n readonly response: ScriptWorkerResponse;\n }\n | {\n readonly messageType: 'capability_call';\n readonly call: CapabilityCallRequest;\n }\n | {\n readonly messageType: 'fetch_observation';\n readonly observation: NativeFetchObservation;\n };\n\ntype AsyncFunction = (...arguments_: unknown[]) => Promise<unknown>;\ntype AsyncFunctionConstructor = new (\n ...parametersAndBody: string[]\n) => AsyncFunction;\n\nconst AsyncFunction = Object.getPrototypeOf(\n async function emptyAsyncFunction() {}\n).constructor as AsyncFunctionConstructor;\n\nfunction redactKnownSecrets(value: string, secrets: readonly string[]): string {\n let redacted = value;\n for (const secret of secrets) {\n if (secret.length > 0) redacted = redacted.split(secret).join('[REDACTED]');\n }\n return redacted.slice(0, 1024);\n}\n\nfunction safeSourceMapSources(sourceMap: string): readonly string[] {\n try {\n const decoded = JSON.parse(sourceMap) as { sources?: unknown };\n if (!Array.isArray(decoded.sources)) return [];\n return decoded.sources.filter(\n (source): source is string =>\n typeof source === 'string' &&\n source.length > 0 &&\n source.length <= 512 &&\n !source.startsWith('/') &&\n !source.includes('\\\\') &&\n !source.split('/').includes('..')\n );\n } catch {\n return [];\n }\n}\n\nfunction executableModuleBundle(module: ScriptWorkerModule): string {\n if (module.sourceMap === undefined) return module.bundle;\n const sourceMapUrl = Buffer.from(module.sourceMap, 'utf8').toString('base64');\n return `${module.bundle.replace(/\\n?\\/\\/# sourceMappingURL=.*$/m, '')}\\n//# sourceMappingURL=data:application/json;base64,${sourceMapUrl}`;\n}\n\nfunction safeModuleFrame(\n stack: string | undefined,\n modules: readonly ScriptWorkerModule[] | undefined\n): string | undefined {\n if (stack === undefined || modules === undefined) return undefined;\n const sources = new Set<string>();\n for (const module of modules) {\n if (module.sourceMap === undefined) continue;\n for (const source of safeSourceMapSources(module.sourceMap))\n sources.add(source);\n }\n for (const line of stack.split('\\n')) {\n for (const source of sources) {\n const offset = line.indexOf(source);\n if (offset < 0) continue;\n const suffix = line.slice(offset + source.length);\n const location = /^:(\\d+):(\\d+)/.exec(suffix);\n if (location !== null) return `${source}:${location[1]}:${location[2]}`;\n }\n }\n for (const module of modules) {\n if (module.sourceMap === undefined) continue;\n const source = safeSourceMapSources(module.sourceMap)[0];\n if (source === undefined) continue;\n const encoded = Buffer.from(\n executableModuleBundle(module),\n 'utf8'\n ).toString('base64');\n const offset = stack.indexOf(`data:text/javascript;base64,${encoded}`);\n if (offset < 0) continue;\n const suffix = stack.slice(\n offset + `data:text/javascript;base64,${encoded}`.length\n );\n const location = /^:(\\d+):(\\d+)/.exec(suffix);\n if (location !== null) return `${source}:${location[1]}:${location[2]}`;\n }\n return undefined;\n}\n\nfunction serializeError(\n error: unknown,\n secrets: readonly string[] = [],\n modules?: readonly ScriptWorkerModule[]\n): ScriptWorkerResponse {\n if (error instanceof NativeFetchTrackingError) {\n return {\n ok: false,\n error: {\n kind: 'service',\n name: error.name,\n message: redactKnownSecrets(error.message, secrets),\n capability: 'http',\n operation: 'fetch',\n callId: error.callId,\n cause: error.cause,\n },\n };\n }\n if (\n (typeof error === 'object' && error !== null) ||\n typeof error === 'function'\n ) {\n const nativeFetch = nativeFetchFailures.get(error);\n if (nativeFetch !== undefined) {\n return {\n ok: false,\n error: {\n kind: 'service',\n name: error instanceof Error ? error.name : 'Error',\n message: redactKnownSecrets(nativeFetch.cause.message, secrets),\n capability: 'http',\n operation: 'fetch',\n callId: nativeFetch.callId,\n cause: nativeFetch.cause,\n },\n };\n }\n }\n if (error instanceof ServiceCallError) {\n return {\n ok: false,\n error: {\n kind: 'service',\n name: error.name,\n message: redactKnownSecrets(error.message, secrets),\n capability: error.capability,\n operation: error.operation,\n callId: error.callId,\n cause: error.cause,\n },\n };\n }\n if (error instanceof Error) {\n return {\n ok: false,\n error: {\n kind: 'script',\n name: error.name,\n message: redactKnownSecrets(error.message, secrets),\n ...(error.stack === undefined\n ? {}\n : { stack: redactKnownSecrets(error.stack, secrets) }),\n ...(safeModuleFrame(error.stack, modules) === undefined\n ? {}\n : { moduleFrame: safeModuleFrame(error.stack, modules) }),\n },\n };\n }\n return {\n ok: false,\n error: {\n kind: 'script',\n name: 'Error',\n message: redactKnownSecrets(String(error), secrets),\n },\n };\n}\n\nclass ServiceCallError extends Error {\n readonly code: string;\n readonly service: string;\n readonly capability: string;\n readonly operation: string;\n readonly callId: string;\n readonly retryable: boolean;\n readonly ambiguous: boolean;\n readonly details?: Readonly<Record<string, JsonValue>>;\n readonly cause: CapabilityFailure;\n\n constructor(\n capability: string,\n operation: string,\n callId: string,\n cause: CapabilityFailure\n ) {\n super(cause.message);\n this.name = 'WomlServiceError';\n this.code = cause.code;\n this.service = capability;\n this.capability = capability;\n this.operation = operation;\n this.callId = callId;\n this.retryable = cause.retryable;\n this.ambiguous = cause.ambiguous;\n this.details = cause.details;\n this.cause = cause;\n }\n}\n\ninterface PendingCapabilityCall {\n readonly capability: string;\n readonly operation: string;\n readonly resolve: (value: JsonValue) => void;\n readonly reject: (error: ServiceCallError) => void;\n}\n\nconst pendingCalls = new Map<string, PendingCapabilityCall>();\nconst pendingFetchAcks = new Map<\n string,\n {\n readonly resolve: () => void;\n readonly reject: (error: NativeFetchTrackingError) => void;\n }\n>();\nconst operationSequences = new Map<string, number>();\nconst automaticEffectfulCalls = new Map<string, number>();\nconst workflowTargetIdentityModes = new Map<string, 'automatic' | 'named'>();\nlet fetchSequence = 0;\nconst nativeFetch = globalThis.fetch.bind(globalThis);\nconst nativeFetchFailures = new WeakMap<\n object,\n { readonly callId: string; readonly cause: CapabilityFailure }\n>();\n\nclass NativeFetchTrackingError extends Error {\n readonly callId: string;\n readonly cause: CapabilityFailure;\n readonly code: string;\n readonly retryable: boolean;\n readonly ambiguous: boolean;\n\n constructor(callId: string, failure: CapabilityFailure) {\n super(failure.message);\n this.name = 'WomlFetchTrackingError';\n this.callId = callId;\n this.cause = failure;\n this.code = failure.code;\n this.retryable = failure.retryable;\n this.ambiguous = failure.ambiguous;\n }\n}\n\nfunction requestBodyBytes(\n body: BodyInit | null | undefined\n): number | undefined {\n if (body === undefined || body === null) return undefined;\n if (typeof body === 'string') return Buffer.byteLength(body, 'utf8');\n if (body instanceof URLSearchParams) {\n return Buffer.byteLength(body.toString(), 'utf8');\n }\n if (body instanceof Blob) return body.size;\n if (body instanceof ArrayBuffer) return body.byteLength;\n if (ArrayBuffer.isView(body)) return body.byteLength;\n return undefined;\n}\n\nfunction fetchStartObservation(\n request: ScriptWorkerRequest,\n requestId: string,\n input: RequestInfo | URL,\n init?: RequestInit\n): NativeFetchObservation | undefined {\n const rawUrl =\n input instanceof Request\n ? input.url\n : input instanceof URL\n ? input.href\n : String(input);\n const url = new URL(rawUrl);\n if (url.protocol !== 'http:' && url.protocol !== 'https:') {\n return undefined;\n }\n const method = String(\n init?.method ?? (input instanceof Request ? input.method : 'GET')\n ).toUpperCase();\n const bytes = requestBodyBytes(init?.body);\n return {\n contract: 'woml.native-fetch-observation',\n contractVersion: 1,\n observationType: 'started',\n invocationId: request.invocationId,\n requestId,\n method,\n origin: url.origin,\n path: url.pathname,\n ...(bytes === undefined ? {} : { requestBodyBytes: bytes }),\n startedAt: new Date().toISOString(),\n };\n}\n\nasync function observeFetch(\n observation: NativeFetchObservation\n): Promise<void> {\n if (pendingFetchAcks.has(observation.requestId)) {\n throw new Error('Native Fetch reused an active request ID.');\n }\n await new Promise<void>((resolve, reject) => {\n pendingFetchAcks.set(observation.requestId, { resolve, reject });\n self.postMessage({\n messageType: 'fetch_observation',\n observation,\n } satisfies ScriptWorkerOutbound);\n });\n}\n\nfunction trackedNativeFetch(request: ScriptWorkerRequest): typeof fetch {\n const tracked = async (\n input: RequestInfo | URL,\n init?: RequestInit\n ): Promise<Response> => {\n const requestId = `fetch_${++fetchSequence}_${crypto.randomUUID().replaceAll('-', '')}`;\n const startedAt = performance.now();\n const start = fetchStartObservation(request, requestId, input, init);\n if (start === undefined) return nativeFetch(input, init);\n await observeFetch(start);\n\n let response: Response;\n try {\n response = await nativeFetch(input, init);\n } catch (error) {\n const name = error instanceof Error ? error.name : '';\n const kind =\n name === 'AbortError'\n ? 'cancelled'\n : name === 'TimeoutError'\n ? 'timed_out'\n : 'fetch_rejected';\n const failure: CapabilityFailure = {\n kind:\n kind === 'cancelled'\n ? 'cancelled'\n : kind === 'timed_out'\n ? 'timed_out'\n : 'transport_failed',\n code:\n kind === 'cancelled'\n ? 'WOML_NATIVE_FETCH_CANCELLED'\n : kind === 'timed_out'\n ? 'WOML_NATIVE_FETCH_TIMED_OUT'\n : 'WOML_NATIVE_FETCH_REJECTED',\n message:\n kind === 'cancelled'\n ? 'Bun Fetch was cancelled.'\n : kind === 'timed_out'\n ? 'Bun Fetch exceeded its deadline.'\n : 'Bun Fetch rejected the request.',\n retryable: false,\n ambiguous: true,\n };\n await observeFetch({\n contract: 'woml.native-fetch-observation',\n contractVersion: 1,\n observationType: 'failed',\n invocationId: request.invocationId,\n requestId,\n durationMs: Math.max(0, performance.now() - startedAt),\n failedAt: new Date().toISOString(),\n error: {\n kind,\n code: failure.code,\n message: failure.message,\n },\n });\n if (\n (typeof error === 'object' && error !== null) ||\n typeof error === 'function'\n ) {\n nativeFetchFailures.set(error, { callId: requestId, cause: failure });\n }\n throw error;\n }\n\n await observeFetch({\n contract: 'woml.native-fetch-observation',\n contractVersion: 1,\n observationType: 'completed',\n invocationId: request.invocationId,\n requestId,\n status: response.status,\n responseBodyBytes: null,\n durationMs: Math.max(0, performance.now() - startedAt),\n completedAt: new Date().toISOString(),\n });\n return response;\n };\n return tracked as typeof fetch;\n}\n\nasync function operationKey(\n stepIdempotencyKey: string,\n operationName: string\n): Promise<string> {\n const bytes = new TextEncoder().encode(\n `woml.capability-operation\\0v1\\0${stepIdempotencyKey}\\0${operationName}`\n );\n const digest = new Uint8Array(await crypto.subtle.digest('SHA-256', bytes));\n return `sha256:${[...digest]\n .map(byte => byte.toString(16).padStart(2, '0'))\n .join('')}`;\n}\n\nfunction callId(): string {\n return `call_${crypto.randomUUID().replaceAll('-', '')}`;\n}\n\nfunction plainObject(value: unknown): Record<string, JsonValue> | undefined {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n ? (value as Record<string, JsonValue>)\n : undefined;\n}\n\nfunction httpTimeoutMilliseconds(input: Record<string, JsonValue>): number {\n if (input.timeout !== undefined && input.timeoutMs !== undefined) {\n throw new TypeError('Managed HTTP accepts timeout or timeoutMs, not both.');\n }\n const value = input.timeout ?? input.timeoutMs ?? 30_000;\n if (typeof value === 'number' && Number.isSafeInteger(value)) return value;\n if (typeof value !== 'string') {\n throw new TypeError(\n 'Managed HTTP timeout must be milliseconds or a duration string.'\n );\n }\n const match = value.match(/^(\\d+)(ms|s|m|h)$/);\n if (match === null) {\n throw new TypeError(\n 'Managed HTTP timeout must look like 500ms, 10s, 2m, or 1h.'\n );\n }\n const multiplier =\n match[2] === 'ms'\n ? 1\n : match[2] === 's'\n ? 1_000\n : match[2] === 'm'\n ? 60_000\n : 3_600_000;\n return Number(match[1]) * multiplier;\n}\n\nfunction normalizeHttpRequest(input: JsonValue): JsonObject {\n const object = plainObject(input);\n if (object === undefined) {\n throw new TypeError('services.http.request() requires a request object.');\n }\n const allowed = new Set([\n 'url',\n 'method',\n 'headers',\n 'query',\n 'json',\n 'text',\n 'bytesBase64',\n 'responseType',\n 'storage',\n 'timeout',\n 'timeoutMs',\n 'acceptedStatus',\n 'redirect',\n 'maximumRedirects',\n 'idempotency',\n ]);\n const unknown = Object.keys(object).find(key => !allowed.has(key));\n if (unknown !== undefined) {\n throw new TypeError(`Unknown managed HTTP option \"${unknown}\".`);\n }\n if (typeof object.url !== 'string' || object.url.length === 0) {\n throw new TypeError('Managed HTTP requires a URL string.');\n }\n const method = String(object.method ?? 'GET').toUpperCase();\n const headers = plainObject(object.headers ?? {});\n if (\n headers === undefined ||\n Object.values(headers).some(value => typeof value !== 'string')\n ) {\n throw new TypeError('Managed HTTP headers must contain string values.');\n }\n const timeoutMs = httpTimeoutMilliseconds(object);\n if (\n !Number.isSafeInteger(timeoutMs) ||\n timeoutMs < 1 ||\n timeoutMs > 86_400_000\n ) {\n throw new TypeError(\n 'Managed HTTP timeout must be between 1 ms and 24 hours.'\n );\n }\n const responseType = object.responseType ?? 'json';\n const storage = plainObject(object.storage);\n if (responseType === 'storage') {\n if (storage === undefined) {\n throw new TypeError(\n 'Managed HTTP responseType \"storage\" requires a storage target.'\n );\n }\n const unknownStorageOption = Object.keys(storage).find(\n key => !['key', 'contentType', 'overwrite', 'ifVersion'].includes(key)\n );\n if (unknownStorageOption !== undefined) {\n throw new TypeError(\n `Unknown managed HTTP storage option \"${unknownStorageOption}\".`\n );\n }\n if (typeof storage.key !== 'string' || storage.key.length === 0) {\n throw new TypeError('Managed HTTP storage requires a key string.');\n }\n if (\n storage.contentType !== undefined &&\n typeof storage.contentType !== 'string'\n ) {\n throw new TypeError('Managed HTTP storage contentType must be a string.');\n }\n if (\n storage.overwrite !== undefined &&\n typeof storage.overwrite !== 'boolean'\n ) {\n throw new TypeError('Managed HTTP storage overwrite must be a Boolean.');\n }\n if (\n storage.ifVersion !== undefined &&\n typeof storage.ifVersion !== 'string'\n ) {\n throw new TypeError('Managed HTTP storage ifVersion must be a string.');\n }\n if (storage.overwrite !== undefined && storage.ifVersion !== undefined) {\n throw new TypeError(\n 'Managed HTTP storage overwrite and ifVersion are mutually exclusive.'\n );\n }\n } else if (object.storage !== undefined) {\n throw new TypeError(\n 'Managed HTTP storage is valid only with responseType \"storage\".'\n );\n }\n const normalized: Record<string, JsonValue> = {\n contract: 'woml.managed-http',\n contractVersion: 1,\n kind: 'request',\n method,\n url: object.url,\n headers,\n responseType,\n timeoutMs,\n acceptedStatus: object.acceptedStatus ?? { minimum: 200, maximum: 299 },\n redirect: object.redirect ?? 'follow',\n maximumRedirects: object.maximumRedirects ?? 10,\n };\n for (const field of [\n 'query',\n 'json',\n 'text',\n 'bytesBase64',\n 'idempotency',\n 'storage',\n ] as const) {\n if (object[field] !== undefined) normalized[field] = object[field];\n }\n return normalized;\n}\n\nfunction normalizeTelegramSend(input: JsonValue): JsonObject {\n const object = plainObject(input);\n if (object === undefined) {\n throw new TypeError('services.telegram.send() requires a request object.');\n }\n const allowed = new Set([\n 'botToken',\n 'conversationId',\n 'text',\n 'replyToMessageId',\n ]);\n const unknown = Object.keys(object).find(key => !allowed.has(key));\n if (unknown !== undefined) {\n throw new TypeError(`Unknown Telegram send option \"${unknown}\".`);\n }\n for (const required of ['botToken', 'conversationId', 'text'] as const) {\n if (typeof object[required] !== 'string' || object[required].length === 0) {\n throw new TypeError(`Telegram send requires a non-empty ${required} string.`);\n }\n }\n if (\n object.replyToMessageId !== undefined &&\n (typeof object.replyToMessageId !== 'string' ||\n object.replyToMessageId.length === 0)\n ) {\n throw new TypeError('Telegram replyToMessageId must be a non-empty string.');\n }\n return {\n contract: 'woml.telegram-message',\n contractVersion: 1,\n kind: 'send',\n botToken: object.botToken,\n conversationId: object.conversationId,\n text: object.text,\n ...(object.replyToMessageId === undefined\n ? {}\n : { replyToMessageId: object.replyToMessageId }),\n };\n}\n\nfunction publicTelegramResult(result: JsonValue): JsonValue {\n const object = plainObject(result);\n if (\n object === undefined ||\n object.provider !== 'telegram' ||\n typeof object.conversationId !== 'string' ||\n typeof object.messageId !== 'string' ||\n typeof object.acceptedAt !== 'string'\n ) {\n throw new TypeError('Telegram returned an invalid managed result.');\n }\n return Object.freeze({\n provider: 'telegram',\n conversationId: object.conversationId,\n messageId: object.messageId,\n acceptedAt: object.acceptedAt,\n });\n}\n\nfunction normalizeDiscordSend(input: JsonValue): JsonObject {\n const object = plainObject(input);\n if (object === undefined) {\n throw new TypeError('services.discord.send() requires a request object.');\n }\n const allowed = new Set([\n 'botToken',\n 'conversationId',\n 'text',\n 'replyToMessageId',\n ]);\n const unknown = Object.keys(object).find(key => !allowed.has(key));\n if (unknown !== undefined) {\n throw new TypeError(`Unknown Discord send option \"${unknown}\".`);\n }\n for (const required of ['botToken', 'conversationId', 'text'] as const) {\n if (typeof object[required] !== 'string' || object[required].length === 0) {\n throw new TypeError(`Discord send requires a non-empty ${required} string.`);\n }\n }\n if (!/^[0-9]{17,20}$/.test(object.conversationId as string)) {\n throw new TypeError('Discord conversationId must be a numeric snowflake.');\n }\n if ((object.text as string).length > 2_000) {\n throw new TypeError('Discord text may contain at most 2000 characters.');\n }\n if (\n object.replyToMessageId !== undefined &&\n (typeof object.replyToMessageId !== 'string' ||\n !/^[0-9]{17,20}$/.test(object.replyToMessageId))\n ) {\n throw new TypeError('Discord replyToMessageId must be a numeric snowflake.');\n }\n return {\n contract: 'woml.discord-message',\n contractVersion: 1,\n kind: 'send',\n botToken: object.botToken,\n conversationId: object.conversationId,\n text: object.text,\n ...(object.replyToMessageId === undefined\n ? {}\n : { replyToMessageId: object.replyToMessageId }),\n };\n}\n\nfunction publicDiscordResult(result: JsonValue): JsonValue {\n const object = plainObject(result);\n if (\n object === undefined ||\n object.provider !== 'discord' ||\n typeof object.conversationId !== 'string' ||\n typeof object.messageId !== 'string' ||\n typeof object.acceptedAt !== 'string'\n ) {\n throw new TypeError('Discord returned an invalid managed result.');\n }\n return Object.freeze({\n provider: 'discord',\n conversationId: object.conversationId,\n messageId: object.messageId,\n acceptedAt: object.acceptedAt,\n });\n}\n\nfunction normalizeWhatsAppSend(input: JsonValue): JsonObject {\n const object = plainObject(input);\n if (object === undefined) {\n throw new TypeError('services.whatsapp.send() requires a request object.');\n }\n const allowed = new Set([\n 'accessToken',\n 'phoneNumberId',\n 'conversationId',\n 'template',\n ]);\n const unknown = Object.keys(object).find(key => !allowed.has(key));\n if (unknown !== undefined) {\n throw new TypeError(`Unknown WhatsApp send option \"${unknown}\".`);\n }\n for (const required of [\n 'accessToken',\n 'phoneNumberId',\n 'conversationId',\n ] as const) {\n if (typeof object[required] !== 'string' || object[required].length === 0) {\n throw new TypeError(\n `WhatsApp send requires a non-empty ${required} string.`\n );\n }\n }\n if (!/^[0-9]{6,32}$/.test(object.phoneNumberId as string)) {\n throw new TypeError('WhatsApp phoneNumberId must be a numeric Meta Phone Number ID.');\n }\n if (!/^[0-9]{8,16}$/.test(object.conversationId as string)) {\n throw new TypeError(\n 'WhatsApp conversationId must contain 8 to 16 digits without a plus sign.'\n );\n }\n const template = plainObject(object.template);\n if (\n template === undefined ||\n Object.keys(template).some(\n key => key !== 'name' && key !== 'language' && key !== 'parameters'\n ) ||\n typeof template.name !== 'string' ||\n !/^[a-z][a-z0-9_]{0,511}$/.test(template.name) ||\n typeof template.language !== 'string' ||\n !/^[a-z]{2,3}(?:_[A-Z]{2})?$/.test(template.language) ||\n !Array.isArray(template.parameters) ||\n template.parameters.length > 32 ||\n template.parameters.some(\n value => typeof value !== 'string' || value.length > 1024\n )\n ) {\n throw new TypeError(\n 'WhatsApp template must contain a valid name, language, and string parameters array.'\n );\n }\n return {\n contract: 'woml.whatsapp-message',\n contractVersion: 1,\n kind: 'send',\n accessToken: object.accessToken,\n phoneNumberId: object.phoneNumberId,\n conversationId: object.conversationId,\n template: {\n name: template.name,\n language: template.language,\n parameters: template.parameters,\n },\n };\n}\n\nfunction publicWhatsAppResult(result: JsonValue): JsonValue {\n const object = plainObject(result);\n if (\n object === undefined ||\n object.provider !== 'whatsapp' ||\n typeof object.conversationId !== 'string' ||\n typeof object.messageId !== 'string' ||\n typeof object.acceptedAt !== 'string'\n ) {\n throw new TypeError('WhatsApp returned an invalid managed result.');\n }\n return Object.freeze({\n provider: 'whatsapp',\n conversationId: object.conversationId,\n messageId: object.messageId,\n acceptedAt: object.acceptedAt,\n });\n}\n\nfunction namedOperation(\n capability: string,\n operation: string,\n options: JsonValue | undefined\n): { readonly mode: 'automatic' | 'named'; readonly name: string } {\n if (options === undefined) {\n const key = `${capability}.${operation}`;\n const sequence = (operationSequences.get(key) ?? 0) + 1;\n operationSequences.set(key, sequence);\n return {\n mode: 'automatic',\n name: sequence === 1 ? key : `${key}.${sequence}`,\n };\n }\n const object = plainObject(options);\n const name = object?.name;\n if (\n object === undefined ||\n Object.keys(object).length !== 1 ||\n typeof name !== 'string' ||\n !/^[a-z][a-z0-9._-]{0,127}$/.test(name)\n ) {\n throw new TypeError(\n 'Service call options must be exactly { name: \"stable-operation-name\" }.'\n );\n }\n return { mode: 'named', name: `${capability}.${operation}.${name}` };\n}\n\nfunction publicHttpResult(result: JsonValue): JsonObject {\n const object = plainObject(result);\n if (\n object?.contract !== 'woml.managed-http' ||\n object.contractVersion !== 1 ||\n object.kind !== 'result'\n ) {\n throw new TypeError('Rust returned an invalid Managed HTTP v1 result.');\n }\n return {\n status: object.status,\n ok: object.ok,\n headers: object.headers,\n data: object.data,\n url: object.url,\n redirected: object.redirected,\n };\n}\n\nconst databaseOperations = new Set([\n 'query',\n 'execute',\n 'read',\n 'insert',\n 'update',\n 'delete',\n 'transaction',\n]);\n\nfunction normalizeDatabaseConfig(input: JsonValue): JsonObject {\n const object = plainObject(input);\n if (\n object === undefined ||\n Object.keys(object).some(key => key !== 'driver' && key !== 'connection') ||\n (object.driver !== 'sqlite' && object.driver !== 'postgres') ||\n typeof object.connection !== 'string' ||\n object.connection.length === 0\n ) {\n throw new TypeError(\n 'services.db() requires exactly { driver: \"sqlite\" | \"postgres\", connection: \"database connection\" }.'\n );\n }\n return { driver: object.driver, connection: object.connection };\n}\n\nfunction normalizeDatabaseRequest(\n config: JsonObject,\n operation: string,\n input: JsonValue\n): JsonObject {\n if (!databaseOperations.has(operation)) {\n throw new TypeError(`Unknown Database v1 operation \"${operation}\".`);\n }\n return {\n contract: 'woml.database',\n contractVersion: 1,\n kind: 'request',\n driver: config.driver,\n connection: config.connection,\n operation,\n input,\n };\n}\n\nfunction publicDatabaseResult(result: JsonValue, operation: string): JsonValue {\n const object = plainObject(result);\n if (\n object?.contract !== 'woml.database' ||\n object.contractVersion !== 1 ||\n object.kind !== 'result' ||\n object.operation !== operation ||\n object.data === undefined\n ) {\n throw new TypeError('Rust returned an invalid Database v1 result.');\n }\n return object.data;\n}\n\nconst storageOperations = new Set(['put', 'get', 'head', 'list', 'delete']);\nconst cacheOperations = new Set([\n 'get',\n 'set',\n 'delete',\n 'has',\n 'increment',\n 'setIfAbsent',\n]);\nconst stateOperations = new Set([\n 'get',\n 'has',\n 'set',\n 'delete',\n 'increment',\n 'setIfAbsent',\n]);\nconst stateWireOperations = new Set([\n 'get',\n 'has',\n 'set',\n 'delete',\n 'increment',\n 'set_if_absent',\n]);\nconst cacheWireOperations = new Set([\n 'get',\n 'set',\n 'delete',\n 'has',\n 'increment',\n 'set_if_absent',\n]);\nconst eventOperations = new Set(['emit']);\n\nfunction normalizeStorageInput(\n operation: string,\n rawInput: JsonValue\n): JsonObject {\n const object = plainObject(rawInput);\n if (object === undefined) {\n throw new TypeError(`services.storage.${operation}() requires an object.`);\n }\n const allowedByOperation: Readonly<Record<string, readonly string[]>> = {\n put: [\n 'key',\n 'value',\n 'text',\n 'bytesBase64',\n 'contentType',\n 'overwrite',\n 'ifVersion',\n ],\n get: ['key', 'responseType', 'ifVersion'],\n head: ['key'],\n list: ['prefix', 'limit', 'cursor'],\n delete: ['key', 'ifVersion'],\n };\n const allowed = allowedByOperation[operation];\n if (allowed === undefined) {\n throw new TypeError(`Unknown Storage v1 operation \"${operation}\".`);\n }\n const unknown = Object.keys(object).find(key => !allowed.includes(key));\n if (unknown !== undefined) {\n throw new TypeError(`Unknown Storage v1 ${operation} option \"${unknown}\".`);\n }\n if (operation === 'get') {\n return { ...object, responseType: object.responseType ?? 'json' };\n }\n if (operation === 'list') {\n return { prefix: '', limit: 100, ...object };\n }\n return object;\n}\n\nfunction normalizeStorageRequest(\n operation: string,\n input: JsonValue\n): JsonObject {\n if (!storageOperations.has(operation)) {\n throw new TypeError(`Unknown Storage v1 operation \"${operation}\".`);\n }\n return {\n contract: 'woml.storage',\n contractVersion: 1,\n kind: 'request',\n operation,\n input: normalizeStorageInput(operation, input),\n };\n}\n\nfunction publicStorageResult(result: JsonValue, operation: string): JsonValue {\n const object = plainObject(result);\n if (\n object?.contract !== 'woml.storage' ||\n object.contractVersion !== 1 ||\n object.kind !== 'result' ||\n object.operation !== operation ||\n object.data === undefined\n ) {\n throw new TypeError('Rust returned an invalid Storage v1 result.');\n }\n return object.data;\n}\n\nfunction cacheTtlMilliseconds(value: JsonValue | undefined): number {\n if (value === undefined) return 300_000;\n if (typeof value === 'number' && Number.isSafeInteger(value)) {\n if (value >= 1 && value <= 2_592_000_000) return value;\n } else if (typeof value === 'string') {\n const match = value.match(/^(\\d+)(ms|s|m|h|d)$/);\n if (match !== null) {\n const multiplier =\n match[2] === 'ms'\n ? 1\n : match[2] === 's'\n ? 1_000\n : match[2] === 'm'\n ? 60_000\n : match[2] === 'h'\n ? 3_600_000\n : 86_400_000;\n const ttl = Number(match[1]) * multiplier;\n if (Number.isSafeInteger(ttl) && ttl >= 1 && ttl <= 2_592_000_000) {\n return ttl;\n }\n }\n }\n throw new TypeError(\n 'Cache ttl must be milliseconds or a whole duration from 1ms through 30d.'\n );\n}\n\nfunction normalizeCacheOptions(\n value: unknown,\n acceptsTtl: boolean\n): { readonly ttlMs: number; readonly callOptions?: JsonObject } {\n if (value === undefined) {\n return { ttlMs: 300_000 };\n }\n const object = plainObject(value);\n const allowed = acceptsTtl ? ['ttl', 'name'] : ['name'];\n if (\n object === undefined ||\n Object.keys(object).some(key => !allowed.includes(key)) ||\n (object.name !== undefined && typeof object.name !== 'string')\n ) {\n throw new TypeError(\n acceptsTtl\n ? 'Cache options accept only ttl and a stable name.'\n : 'Cache options accept only a stable name.'\n );\n }\n return {\n ttlMs: cacheTtlMilliseconds(object.ttl),\n ...(object.name === undefined\n ? {}\n : { callOptions: { name: object.name } }),\n };\n}\n\nfunction normalizeCacheRequest(\n operation: string,\n args: readonly unknown[]\n): { readonly request: JsonObject; readonly callOptions?: JsonObject } {\n if (!cacheOperations.has(operation)) {\n throw new TypeError(`Unknown Cache v1 operation \"${operation}\".`);\n }\n const key = args[0];\n if (typeof key !== 'string') {\n throw new TypeError(`services.cache.${operation}() requires a string key.`);\n }\n let input: JsonObject;\n let callOptions: JsonObject | undefined;\n const wireOperation =\n operation === 'setIfAbsent' ? 'set_if_absent' : operation;\n if (operation === 'get' || operation === 'has') {\n if (args.length !== 1) {\n throw new TypeError(`services.cache.${operation}() accepts only a key.`);\n }\n input = { key };\n } else if (operation === 'delete') {\n if (args.length > 2) {\n throw new TypeError('services.cache.delete() accepts key and options.');\n }\n const normalized = normalizeCacheOptions(args[1], false);\n input = { key };\n callOptions = normalized.callOptions;\n } else if (operation === 'set' || operation === 'setIfAbsent') {\n if (args.length < 2 || args.length > 3) {\n throw new TypeError(\n `services.cache.${operation}() requires key, value, and optional options.`\n );\n }\n const normalized = normalizeCacheOptions(args[2], true);\n input = { key, value: args[1] as JsonValue, ttlMs: normalized.ttlMs };\n callOptions = normalized.callOptions;\n } else {\n if (args.length > 3) {\n throw new TypeError(\n 'services.cache.increment() accepts key, optional amount, and options.'\n );\n }\n const secondIsOptions = plainObject(args[1]) !== undefined;\n const amount = args[1] === undefined || secondIsOptions ? 1 : args[1];\n if (typeof amount !== 'number' || !Number.isSafeInteger(amount)) {\n throw new TypeError('Cache increment amount must be a safe integer.');\n }\n const normalized = normalizeCacheOptions(\n secondIsOptions ? args[1] : args[2],\n true\n );\n input = { key, amount, ttlMs: normalized.ttlMs };\n callOptions = normalized.callOptions;\n }\n return {\n request: {\n contract: 'woml.cache',\n contractVersion: 1,\n kind: 'request',\n operation: wireOperation,\n input,\n },\n ...(callOptions === undefined ? {} : { callOptions }),\n };\n}\n\nfunction publicCacheResult(result: JsonValue, operation: string): JsonValue {\n const object = plainObject(result);\n if (\n object?.contract !== 'woml.cache' ||\n object.contractVersion !== 1 ||\n object.kind !== 'result' ||\n object.operation !== operation ||\n object.data === undefined\n ) {\n throw new TypeError('Rust returned an invalid Cache v1 result.');\n }\n return object.data;\n}\n\nfunction stateKey(value: unknown, operation: string): string {\n if (\n typeof value !== 'string' ||\n value.length === 0 ||\n Buffer.byteLength(value, 'utf8') > 256\n ) {\n throw new TypeError(\n `services.state.${operation}() requires a non-empty key up to 256 UTF-8 bytes.`\n );\n }\n return value;\n}\n\nfunction stateMutationOptions(\n value: unknown,\n acceptsVersion: boolean\n): { readonly callOptions: JsonObject; readonly ifVersion?: number } {\n const object = plainObject(value);\n const allowed = acceptsVersion ? ['name', 'ifVersion'] : ['name'];\n if (\n object === undefined ||\n Object.keys(object).some(key => !allowed.includes(key)) ||\n typeof object.name !== 'string' ||\n !/^[a-z][a-z0-9._-]{0,127}$/.test(object.name) ||\n (object.ifVersion !== undefined &&\n (!Number.isSafeInteger(object.ifVersion) || Number(object.ifVersion) < 0))\n ) {\n throw new TypeError(\n acceptsVersion\n ? 'State mutation options require a stable name and optional non-negative ifVersion.'\n : 'State mutation options require exactly one stable name.'\n );\n }\n return {\n callOptions: { name: object.name },\n ...(object.ifVersion === undefined\n ? {}\n : { ifVersion: Number(object.ifVersion) }),\n };\n}\n\nfunction stateValue(value: unknown): JsonValue {\n const violation = findJsonViolation(value);\n if (violation !== undefined) {\n throw new TypeError(`State value ${violation.path}: ${violation.reason}`);\n }\n const encoded = JSON.stringify(value);\n if (Buffer.byteLength(encoded, 'utf8') > 262_144) {\n throw new TypeError('State values must not exceed 256 KiB of canonical JSON.');\n }\n return value as JsonValue;\n}\n\nfunction normalizeStateRequest(\n operation: string,\n args: readonly unknown[]\n): { readonly request: JsonObject; readonly callOptions?: JsonObject } {\n if (!stateOperations.has(operation)) {\n throw new TypeError(`Unknown Durable User State v1 operation \"${operation}\".`);\n }\n const key = stateKey(args[0], operation);\n let input: JsonObject;\n let callOptions: JsonObject | undefined;\n const wireOperation = operation === 'setIfAbsent' ? 'set_if_absent' : operation;\n if (operation === 'get' || operation === 'has') {\n if (args.length !== 1) {\n throw new TypeError(`services.state.${operation}() accepts only a key.`);\n }\n input = { key };\n } else if (operation === 'delete') {\n if (args.length !== 2) {\n throw new TypeError('services.state.delete() requires key and mutation options.');\n }\n const options = stateMutationOptions(args[1], true);\n input = { key, ...(options.ifVersion === undefined ? {} : { ifVersion: options.ifVersion }) };\n callOptions = options.callOptions;\n } else if (operation === 'set' || operation === 'setIfAbsent') {\n if (args.length !== 3) {\n throw new TypeError(\n `services.state.${operation}() requires key, JSON value, and mutation options.`\n );\n }\n const options = stateMutationOptions(args[2], operation === 'set');\n input = {\n key,\n value: stateValue(args[1]),\n ...(options.ifVersion === undefined ? {} : { ifVersion: options.ifVersion }),\n };\n callOptions = options.callOptions;\n } else {\n if (\n args.length !== 3 ||\n typeof args[1] !== 'number' ||\n !Number.isSafeInteger(args[1])\n ) {\n throw new TypeError(\n 'services.state.increment() requires key, safe-integer amount, and mutation options.'\n );\n }\n const options = stateMutationOptions(args[2], true);\n input = {\n key,\n amount: args[1],\n ...(options.ifVersion === undefined ? {} : { ifVersion: options.ifVersion }),\n };\n callOptions = options.callOptions;\n }\n return {\n request: {\n contract: 'woml.state',\n contractVersion: 1,\n kind: 'request',\n operation: wireOperation,\n input,\n },\n ...(callOptions === undefined ? {} : { callOptions }),\n };\n}\n\nfunction publicStateResult(result: JsonValue, operation: string): JsonValue {\n const object = plainObject(result);\n const data = plainObject(object?.data);\n const exact = (required: readonly string[], optional: readonly string[] = []) =>\n data !== undefined &&\n required.every(key => Object.hasOwn(data, key)) &&\n Object.keys(data).every(key => required.includes(key) || optional.includes(key));\n const version = (value: JsonValue | undefined) =>\n typeof value === 'number' && Number.isSafeInteger(value) && value >= 1;\n const instant = (value: JsonValue | undefined) =>\n typeof value === 'string' && Number.isFinite(Date.parse(value));\n const validData =\n operation === 'get'\n ? (exact(['found']) && data?.found === false) ||\n (exact(['found', 'value', 'version', 'updatedAt']) &&\n data?.found === true &&\n version(data.version) &&\n instant(data.updatedAt))\n : operation === 'has'\n ? (exact(['present']) && data?.present === false) ||\n (exact(['present', 'version']) &&\n data?.present === true &&\n version(data.version))\n : operation === 'set'\n ? exact(['stored', 'version', 'updatedAt']) &&\n data?.stored === true &&\n version(data.version) &&\n instant(data.updatedAt)\n : operation === 'delete'\n ? exact(['deleted']) && typeof data?.deleted === 'boolean'\n : operation === 'increment'\n ? exact(['value', 'version', 'updatedAt']) &&\n typeof data?.value === 'number' &&\n Number.isSafeInteger(data.value) &&\n version(data.version) &&\n instant(data.updatedAt)\n : operation === 'set_if_absent'\n ? exact(['stored', 'value', 'version', 'updatedAt']) &&\n typeof data?.stored === 'boolean' &&\n version(data.version) &&\n instant(data.updatedAt)\n : false;\n if (\n object?.contract !== 'woml.state' ||\n object.contractVersion !== 1 ||\n object.kind !== 'result' ||\n object.operation !== operation ||\n !validData\n ) {\n throw new TypeError('Rust returned an invalid Durable User State v1 result.');\n }\n return deepFreezeJson(data!);\n}\n\nfunction normalizeEventEmit(args: readonly unknown[]): {\n readonly request: JsonObject;\n readonly callOptions?: JsonObject;\n} {\n if (args.length < 1 || args.length > 3) {\n throw new TypeError(\n 'services.events.emit() requires an event name, optional payload, and optional options.'\n );\n }\n const name = args[0];\n if (\n typeof name !== 'string' ||\n !/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$/.test(name) ||\n Buffer.byteLength(name, 'utf8') > 256\n ) {\n throw new TypeError(\n 'services.events.emit() requires a valid lowercase dotted event name.'\n );\n }\n const payload = args[1] ?? {};\n if (plainObject(payload) === undefined) {\n throw new TypeError('Event payload must be a top-level JSON object.');\n }\n const options = args[2];\n if (options !== undefined) {\n // namedOperation performs the authoritative options validation.\n namedOperation('events', 'emit', options as JsonValue);\n }\n return {\n request: {\n contract: 'woml.events',\n contractVersion: 1,\n kind: 'request',\n operation: 'emit',\n input: { name, payload: payload as JsonValue },\n },\n ...(options === undefined ? {} : { callOptions: options as JsonObject }),\n };\n}\n\nfunction publicEventResult(result: JsonValue): JsonValue {\n const object = plainObject(result);\n if (\n object?.contract !== 'woml.events' ||\n object.contractVersion !== 1 ||\n object.kind !== 'result' ||\n object.operation !== 'emit' ||\n object.data === undefined\n ) {\n throw new TypeError('Rust returned an invalid Events Service v1 result.');\n }\n return object.data;\n}\n\nfunction workflowCallTimeoutMilliseconds(value: unknown): number {\n if (typeof value === 'number' && Number.isSafeInteger(value)) return value;\n if (typeof value !== 'string') {\n throw new TypeError(\n 'Workflow Call timeout must be milliseconds or a duration string.'\n );\n }\n const match = value.match(/^(\\d+)(ms|s|m|h)$/);\n if (match === null) {\n throw new TypeError(\n 'Workflow Call timeout must look like 500ms, 10s, 2m, or 1h.'\n );\n }\n const multiplier =\n match[2] === 'ms'\n ? 1\n : match[2] === 's'\n ? 1_000\n : match[2] === 'm'\n ? 60_000\n : 3_600_000;\n return Number(match[1]) * multiplier;\n}\n\nfunction normalizeWorkflowOperation(\n operation: 'call' | 'start',\n args: readonly unknown[],\n remainingTimeoutMs: number\n): {\n readonly request: JsonObject;\n readonly callOptions?: JsonObject;\n} {\n if (args.length < 2 || args.length > 3) {\n throw new TypeError(\n `services.workflows.${operation}() requires workflowId, payload, and optional options.`\n );\n }\n const [workflowId, payload, rawOptions] = args;\n if (\n typeof workflowId !== 'string' ||\n !/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/.test(workflowId) ||\n workflowId.length > 256\n ) {\n throw new TypeError(\n `Workflow ${operation} workflowId must use lowercase kebab-case.`\n );\n }\n const payloadObject = plainObject(payload as JsonValue);\n if (payloadObject === undefined) {\n throw new TypeError(`Workflow ${operation} payload must be a JSON object.`);\n }\n const options =\n rawOptions === undefined ? {} : plainObject(rawOptions as JsonValue);\n if (options === undefined) {\n throw new TypeError(`Workflow ${operation} options must be an object.`);\n }\n const unknown = Object.keys(options).find(\n key => key !== 'name' && (operation !== 'call' || key !== 'timeout')\n );\n if (unknown !== undefined) {\n throw new TypeError(\n `Unknown services.workflows.${operation}() option \"${unknown}\".`\n );\n }\n const name = options.name;\n if (\n name !== undefined &&\n (typeof name !== 'string' ||\n !/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/.test(name) ||\n name.length > 128)\n ) {\n throw new TypeError(`Workflow ${operation} name is invalid.`);\n }\n const timeoutMs =\n operation === 'call'\n ? options.timeout === undefined\n ? remainingTimeoutMs\n : workflowCallTimeoutMilliseconds(options.timeout)\n : undefined;\n if (timeoutMs !== undefined && (timeoutMs < 1 || timeoutMs > 86_400_000)) {\n throw new TypeError(\n 'Workflow Call timeout must be between 1 ms and 24 hours.'\n );\n }\n if (timeoutMs !== undefined && timeoutMs > remainingTimeoutMs) {\n throw new TypeError(\n 'Workflow Call timeout cannot exceed the calling step remaining timeout.'\n );\n }\n const identityMode = name === undefined ? 'automatic' : 'named';\n const targetIdentityKey = `${operation}:${workflowId}`;\n const previousIdentityMode =\n workflowTargetIdentityModes.get(targetIdentityKey);\n if (\n previousIdentityMode !== undefined &&\n (previousIdentityMode === 'automatic' || identityMode === 'automatic')\n ) {\n throw new TypeError(\n `Multiple services.workflows.${operation}() operations for workflow \"${workflowId}\" in one step require stable names, for example { name: \"primary-operation\" }.`\n );\n }\n workflowTargetIdentityModes.set(targetIdentityKey, identityMode);\n return {\n request: {\n contract:\n operation === 'call' ? 'woml.workflow-call' : 'woml.workflow-start',\n contractVersion: 1,\n kind: 'request',\n workflowId,\n payload: payloadObject,\n options: {\n ...(name === undefined ? {} : { name }),\n ...(timeoutMs === undefined ? {} : { timeoutMs }),\n },\n },\n ...(name === undefined ? {} : { callOptions: { name } }),\n };\n}\n\nfunction publicWorkflowResult(\n result: JsonValue,\n operation: 'call' | 'start'\n): JsonValue {\n const object = plainObject(result);\n if (operation === 'start') {\n if (\n object?.contract !== 'woml.workflow-start' ||\n object.contractVersion !== 1 ||\n object.kind !== 'started' ||\n typeof object.workflowId !== 'string' ||\n typeof object.runId !== 'string' ||\n typeof object.duplicate !== 'boolean'\n ) {\n throw new TypeError('Rust returned an invalid Workflow Start v1 result.');\n }\n return Object.freeze({\n workflowId: object.workflowId,\n runId: object.runId,\n duplicate: object.duplicate,\n });\n }\n if (\n object?.contract !== 'woml.workflow-call' ||\n object.contractVersion !== 1 ||\n object.kind !== 'succeeded' ||\n typeof object.workflowId !== 'string' ||\n typeof object.definitionHash !== 'string' ||\n typeof object.childRunId !== 'string' ||\n !Object.hasOwn(object, 'result')\n ) {\n throw new TypeError('Rust returned an invalid Workflow Call v1 result.');\n }\n return object.result as JsonValue;\n}\n\nfunction deeplyReadonlyServiceFacade(\n request: ScriptWorkerRequest,\n executionDeadline: number\n): unknown {\n if (request.attempt === undefined || request.bindings === undefined) {\n return Object.freeze({});\n }\n const attempt = request.attempt;\n const capabilityCache = new Map<string, unknown>();\n const invokeCapability = async (\n capability: string,\n operation: string,\n input: JsonValue,\n callOptions?: JsonValue\n ): Promise<JsonValue> => {\n const managedHttp = capability === 'http' && operation === 'request';\n const managedDatabase =\n capability === 'db' && databaseOperations.has(operation);\n const managedStorage =\n capability === 'storage' && storageOperations.has(operation);\n const managedCache =\n capability === 'cache' && cacheWireOperations.has(operation);\n const managedState =\n capability === 'state' && stateWireOperations.has(operation);\n const managedEvents =\n capability === 'events' && eventOperations.has(operation);\n const managedWorkflows =\n capability === 'workflows' &&\n (operation === 'call' || operation === 'start');\n const managedTelegram = capability === 'telegram' && operation === 'send';\n const managedDiscord = capability === 'discord' && operation === 'send';\n const managedWhatsApp = capability === 'whatsapp' && operation === 'send';\n if (\n !managedHttp &&\n !managedDatabase &&\n !managedStorage &&\n !managedCache &&\n !managedState &&\n !managedEvents &&\n !managedWorkflows &&\n !managedTelegram &&\n !managedDiscord &&\n !managedWhatsApp &&\n callOptions !== undefined\n ) {\n throw new TypeError(\n 'Named service-call options are supported by managed WOML services only.'\n );\n }\n const violation = findJsonViolation(input);\n if (violation !== undefined) {\n throw new TypeError(`${violation.path}: ${violation.reason}`);\n }\n const inputBytes = Buffer.byteLength(JSON.stringify(input), 'utf8');\n const inputLimit = managedWorkflows ? 1_052_672 : 1_048_576;\n if (inputBytes > inputLimit) {\n const id = callId();\n throw new ServiceCallError(capability, operation, id, {\n kind: 'input_too_large',\n code: 'WOML_CAPABILITY_INPUT_TOO_LARGE',\n message: 'The capability input exceeds its configured byte limit.',\n retryable: false,\n ambiguous: false,\n details: { actualBytes: inputBytes, limitBytes: inputLimit },\n });\n }\n const identity = namedOperation(capability, operation, callOptions);\n const method = managedHttp\n ? String((input as JsonObject).method)\n : undefined;\n const effectful = managedHttp\n ? (input as JsonObject).responseType === 'storage' ||\n (method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS')\n : managedDatabase\n ? operation !== 'query' && operation !== 'read'\n : managedStorage && (operation === 'put' || operation === 'delete');\n const cacheEffectful =\n managedCache && operation !== 'get' && operation !== 'has';\n const stateEffectful =\n managedState && operation !== 'get' && operation !== 'has';\n if (\n (effectful ||\n cacheEffectful ||\n stateEffectful ||\n managedEvents ||\n managedTelegram ||\n managedDiscord ||\n managedWhatsApp) &&\n identity.mode === 'automatic'\n ) {\n const key = `${capability}.${operation}`;\n const count = (automaticEffectfulCalls.get(key) ?? 0) + 1;\n automaticEffectfulCalls.set(key, count);\n if (count > 1) {\n throw new TypeError(\n `Multiple effectful services.${capability}.${operation}() calls in one step require stable names, for example { name: \"write-customer\" }.`\n );\n }\n }\n const httpIdempotency = managedHttp\n ? plainObject((input as JsonObject).idempotency)\n : undefined;\n const providerIdempotencyKey =\n typeof httpIdempotency?.value === 'string'\n ? httpIdempotency.value\n : undefined;\n const timeoutMs = managedHttp\n ? Math.min(86_400_000, Number((input as JsonObject).timeoutMs) + 1_000)\n : managedWorkflows\n ? Math.min(\n 86_400_000,\n Number(\n plainObject((input as JsonObject).options)?.timeoutMs ?? 30_000\n ) + 1_000\n )\n : 30_000;\n const id = callId();\n const call: CapabilityCallRequest = {\n contract: 'woml.capability-call',\n contractVersion: 1,\n messageType: 'request',\n invocationId: request.invocationId,\n callId: id,\n runId: request.runId,\n nodeId: request.nodeId,\n attemptNumber: attempt.number,\n capability,\n operation,\n inputContractVersion: 1,\n resultContractVersion: 1,\n identity: {\n mode: identity.mode,\n stepIdempotencyKey: attempt.idempotencyKey,\n operationName: identity.name,\n operationKey: await operationKey(attempt.idempotencyKey, identity.name),\n ...(providerIdempotencyKey === undefined\n ? {}\n : { providerIdempotencyKey }),\n },\n limits: {\n inputBytes: inputLimit,\n resultBytes: managedWorkflows ? 4_198_400 : 4_194_304,\n timeoutMs,\n },\n input,\n };\n const result = await new Promise<JsonValue>((resolve, reject) => {\n pendingCalls.set(id, { capability, operation, resolve, reject });\n self.postMessage({\n messageType: 'capability_call',\n call,\n } satisfies ScriptWorkerOutbound);\n });\n return managedHttp\n ? publicHttpResult(result)\n : managedDatabase\n ? publicDatabaseResult(result, operation)\n : managedStorage\n ? publicStorageResult(result, operation)\n : managedCache\n ? publicCacheResult(result, operation)\n : managedState\n ? publicStateResult(result, operation)\n : managedEvents\n ? publicEventResult(result)\n : managedWorkflows\n ? publicWorkflowResult(result, operation as 'call' | 'start')\n : managedTelegram\n ? publicTelegramResult(result)\n : managedDiscord\n ? publicDiscordResult(result)\n : managedWhatsApp\n ? publicWhatsAppResult(result)\n : result;\n };\n return new Proxy(Object.freeze({}), {\n get(_target, capabilityProperty) {\n if (typeof capabilityProperty !== 'string') return undefined;\n const cached = capabilityCache.get(capabilityProperty);\n if (cached !== undefined) return cached;\n if (capabilityProperty === 'db') {\n const database = (rawConfig: JsonValue): unknown => {\n const config = Object.freeze(normalizeDatabaseConfig(rawConfig));\n const operationCache = new Map<string, unknown>();\n return new Proxy(Object.freeze({}), {\n get(_databaseTarget, operationProperty) {\n if (typeof operationProperty !== 'string') return undefined;\n const known = operationCache.get(operationProperty);\n if (known !== undefined) return known;\n if (!databaseOperations.has(operationProperty)) {\n return undefined;\n }\n const invoke = async (\n rawInput: JsonValue = null,\n callOptions?: JsonValue\n ): Promise<JsonValue> =>\n invokeCapability(\n 'db',\n operationProperty,\n normalizeDatabaseRequest(config, operationProperty, rawInput),\n callOptions\n );\n Object.freeze(invoke);\n operationCache.set(operationProperty, invoke);\n return invoke;\n },\n set: () => false,\n defineProperty: () => false,\n deleteProperty: () => false,\n });\n };\n Object.freeze(database);\n capabilityCache.set(capabilityProperty, database);\n return database;\n }\n if (capabilityProperty === 'storage') {\n const operationCache = new Map<string, unknown>();\n const storage = new Proxy(Object.freeze({}), {\n get(_storageTarget, operationProperty) {\n if (typeof operationProperty !== 'string') return undefined;\n const known = operationCache.get(operationProperty);\n if (known !== undefined) return known;\n if (!storageOperations.has(operationProperty)) return undefined;\n const invoke = async (\n rawInput: JsonValue = {},\n callOptions?: JsonValue\n ): Promise<JsonValue> =>\n invokeCapability(\n 'storage',\n operationProperty,\n normalizeStorageRequest(operationProperty, rawInput),\n callOptions\n );\n Object.freeze(invoke);\n operationCache.set(operationProperty, invoke);\n return invoke;\n },\n set: () => false,\n defineProperty: () => false,\n deleteProperty: () => false,\n });\n capabilityCache.set(capabilityProperty, storage);\n return storage;\n }\n if (capabilityProperty === 'cache') {\n const operationCache = new Map<string, unknown>();\n const cache = new Proxy(Object.freeze({}), {\n get(_cacheTarget, operationProperty) {\n if (typeof operationProperty !== 'string') return undefined;\n const known = operationCache.get(operationProperty);\n if (known !== undefined) return known;\n if (!cacheOperations.has(operationProperty)) return undefined;\n const invoke = async (...args: unknown[]): Promise<JsonValue> => {\n const normalized = normalizeCacheRequest(operationProperty, args);\n const wireOperation = String(normalized.request.operation);\n return invokeCapability(\n 'cache',\n wireOperation,\n normalized.request,\n normalized.callOptions\n );\n };\n Object.freeze(invoke);\n operationCache.set(operationProperty, invoke);\n return invoke;\n },\n set: () => false,\n defineProperty: () => false,\n deleteProperty: () => false,\n });\n capabilityCache.set(capabilityProperty, cache);\n return cache;\n }\n if (capabilityProperty === 'state') {\n const operationCache = new Map<string, unknown>();\n const state = new Proxy(Object.freeze({}), {\n get(_stateTarget, operationProperty) {\n if (typeof operationProperty !== 'string') return undefined;\n const known = operationCache.get(operationProperty);\n if (known !== undefined) return known;\n if (!stateOperations.has(operationProperty)) return undefined;\n const invoke = async (...args: unknown[]): Promise<JsonValue> => {\n const normalized = normalizeStateRequest(operationProperty, args);\n const wireOperation = String(normalized.request.operation);\n return invokeCapability(\n 'state',\n wireOperation,\n normalized.request,\n normalized.callOptions\n );\n };\n Object.freeze(invoke);\n operationCache.set(operationProperty, invoke);\n return invoke;\n },\n set: () => false,\n defineProperty: () => false,\n deleteProperty: () => false,\n });\n capabilityCache.set(capabilityProperty, state);\n return state;\n }\n if (capabilityProperty === 'events') {\n const emit = async (...args: unknown[]): Promise<JsonValue> => {\n const normalized = normalizeEventEmit(args);\n return invokeCapability(\n 'events',\n 'emit',\n normalized.request,\n normalized.callOptions\n );\n };\n Object.freeze(emit);\n const events = Object.freeze({ emit });\n capabilityCache.set(capabilityProperty, events);\n return events;\n }\n if (capabilityProperty === 'workflows') {\n const call = async (...args: unknown[]): Promise<JsonValue> => {\n const remainingTimeoutMs = Math.max(\n 1,\n Math.floor(executionDeadline - performance.now())\n );\n const normalized = normalizeWorkflowOperation(\n 'call',\n args,\n remainingTimeoutMs\n );\n return invokeCapability(\n 'workflows',\n 'call',\n normalized.request,\n normalized.callOptions\n );\n };\n const start = async (...args: unknown[]): Promise<JsonValue> => {\n const remainingTimeoutMs = Math.max(\n 1,\n Math.floor(executionDeadline - performance.now())\n );\n const normalized = normalizeWorkflowOperation(\n 'start',\n args,\n remainingTimeoutMs\n );\n return invokeCapability(\n 'workflows',\n 'start',\n normalized.request,\n normalized.callOptions\n );\n };\n Object.freeze(call);\n Object.freeze(start);\n const workflows = Object.freeze({ call, start });\n capabilityCache.set(capabilityProperty, workflows);\n return workflows;\n }\n const operationCache = new Map<string, unknown>();\n const capability = new Proxy(Object.freeze({}), {\n get(_capabilityTarget, operationProperty) {\n if (typeof operationProperty !== 'string') return undefined;\n const known = operationCache.get(operationProperty);\n if (known !== undefined) return known;\n const invoke = async (\n rawInput: JsonValue = null,\n callOptions?: JsonValue\n ): Promise<JsonValue> =>\n invokeCapability(\n capabilityProperty,\n operationProperty,\n capabilityProperty === 'http' && operationProperty === 'request'\n ? normalizeHttpRequest(rawInput)\n : capabilityProperty === 'telegram' && operationProperty === 'send'\n ? normalizeTelegramSend(rawInput)\n : capabilityProperty === 'discord' && operationProperty === 'send'\n ? normalizeDiscordSend(rawInput)\n : capabilityProperty === 'whatsapp' && operationProperty === 'send'\n ? normalizeWhatsAppSend(rawInput)\n : rawInput,\n callOptions\n );\n Object.freeze(invoke);\n operationCache.set(operationProperty, invoke);\n return invoke;\n },\n set: () => false,\n defineProperty: () => false,\n deleteProperty: () => false,\n });\n capabilityCache.set(capabilityProperty, capability);\n return capability;\n },\n set: () => false,\n defineProperty: () => false,\n deleteProperty: () => false,\n });\n}\n\nclass ModuleInitializationEffectError extends Error {\n constructor() {\n super(\n 'Fetch and managed services cannot be used while a WOML module is initializing.'\n );\n this.name = 'ModuleInitializationEffectError';\n }\n}\n\nfunction servicePath(root: unknown, path: readonly PropertyKey[]): unknown {\n let value = root;\n for (const part of path) value = Reflect.get(value as object, part);\n return value;\n}\n\nfunction guardedModuleServices(\n currentServices: () => unknown,\n invocationActive: () => boolean,\n path: readonly PropertyKey[] = []\n): unknown {\n const callable = function guardedWomlModuleService() {};\n return new Proxy(callable, {\n get(_target, property) {\n return guardedModuleServices(currentServices, invocationActive, [\n ...path,\n property,\n ]);\n },\n apply(_target, thisArgument, argumentsList) {\n if (!invocationActive()) throw new ModuleInitializationEffectError();\n const value = servicePath(currentServices(), path);\n if (typeof value !== 'function') {\n throw new TypeError(\n `services.${path.map(String).join('.')} is not callable.`\n );\n }\n return Reflect.apply(value, thisArgument, argumentsList);\n },\n set: () => false,\n defineProperty: () => false,\n deleteProperty: () => false,\n });\n}\n\nfunction mergedServiceFacade(\n builtIns: unknown,\n modules: Readonly<Record<string, Readonly<Record<string, Function>>>>\n): unknown {\n return new Proxy(Object.freeze({}), {\n get(_target, property) {\n if (typeof property === 'string' && Object.hasOwn(modules, property)) {\n return modules[property];\n }\n return Reflect.get(builtIns as object, property);\n },\n set: () => false,\n defineProperty: () => false,\n deleteProperty: () => false,\n });\n}\n\nasync function loadRuntimeModules(\n request: ScriptWorkerRequest,\n builtIns: unknown,\n trackedFetch: typeof globalThis.fetch\n): Promise<unknown> {\n const imported: Record<string, Readonly<Record<string, Function>>> = {};\n let moduleInvocationDepth = 0;\n let activeServices: unknown = builtIns;\n const invocationActive = () => moduleInvocationDepth > 0;\n const moduleServices = guardedModuleServices(\n () => activeServices,\n invocationActive\n );\n const moduleFetch: typeof globalThis.fetch = ((\n ...args: Parameters<typeof fetch>\n ) => {\n if (!invocationActive()) throw new ModuleInitializationEffectError();\n return trackedFetch(...args);\n }) as typeof globalThis.fetch;\n Object.defineProperty(globalThis, 'services', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: moduleServices,\n });\n Object.defineProperty(globalThis, 'fetch', {\n configurable: false,\n enumerable: true,\n writable: false,\n value: moduleFetch,\n });\n\n for (const module of request.modules ?? []) {\n const actualDigest = `sha256:${new Bun.CryptoHasher('sha256')\n .update(module.bundle)\n .digest('hex')}`;\n if (actualDigest !== module.bundleDigest) {\n throw new Error(`Module ${module.name} failed its Worker digest check.`);\n }\n if (module.sourceMap !== undefined) {\n const actualSourceMapDigest = `sha256:${new Bun.CryptoHasher('sha256')\n .update(module.sourceMap)\n .digest('hex')}`;\n if (actualSourceMapDigest !== module.sourceMapDigest) {\n throw new Error(\n `Module ${module.name} failed its source-map digest check.`\n );\n }\n }\n const executableBundle = executableModuleBundle(module);\n const encoded = Buffer.from(executableBundle, 'utf8').toString('base64');\n const namespace = (await import(\n `data:text/javascript;base64,${encoded}`\n )) as Record<string, unknown>;\n const exposed: Record<string, Function> = {};\n for (const exportName of module.exports) {\n const implementation = namespace[exportName];\n if (typeof implementation !== 'function') {\n throw new TypeError(\n `Module ${module.name} export ${exportName} is not a function.`\n );\n }\n const wrapped = function womlImportedModuleFunction(\n this: unknown,\n ...args: unknown[]\n ): unknown {\n moduleInvocationDepth += 1;\n try {\n const result = Reflect.apply(implementation, undefined, args);\n if (\n (typeof result === 'object' && result !== null) ||\n typeof result === 'function'\n ) {\n const then = Reflect.get(result, 'then');\n if (typeof then === 'function') {\n return Promise.resolve(result).finally(() => {\n moduleInvocationDepth -= 1;\n });\n }\n }\n moduleInvocationDepth -= 1;\n return result;\n } catch (error) {\n moduleInvocationDepth -= 1;\n throw error;\n }\n };\n Object.freeze(wrapped);\n exposed[exportName] = wrapped;\n }\n imported[module.name] = Object.freeze(exposed);\n }\n activeServices = mergedServiceFacade(builtIns, imported);\n return activeServices;\n}\n\nasync function execute(request: ScriptWorkerRequest): Promise<void> {\n let secretValues: readonly string[] = [];\n try {\n const executionDeadline = performance.now() + request.timeoutMs;\n operationSequences.clear();\n automaticEffectfulCalls.clear();\n workflowTargetIdentityModes.clear();\n const context = deepFreezeJson({\n ...request.context,\n payload: request.context.trigger,\n });\n const attempt =\n request.attempt === undefined\n ? undefined\n : deepFreezeJson(request.attempt);\n const secrets = deepFreezeJson(request.bindings?.secrets ?? {});\n const lifecycle =\n request.lifecycle === undefined\n ? undefined\n : (deepFreezeJson(\n request.lifecycle as unknown as JsonValue\n ) as unknown as LifecycleBindingV1);\n const reusable =\n request.reusable === undefined\n ? undefined\n : (deepFreezeJson(\n request.reusable as unknown as JsonValue\n ) as unknown as ReusableScriptBindingV3);\n const reusableLifecycle =\n request.reusableLifecycle === undefined\n ? undefined\n : (deepFreezeJson(\n request.reusableLifecycle as unknown as JsonValue\n ) as unknown as ReusableLifecycleBindingV1);\n secretValues = Object.values(request.bindings?.secrets ?? {});\n const safeConsole = Object.freeze({\n log: (...values: unknown[]) =>\n globalThis.console.error(\n redactKnownSecrets(\n values.map(value => String(value)).join(' '),\n secretValues\n )\n ),\n info: (...values: unknown[]) =>\n globalThis.console.error(\n redactKnownSecrets(\n values.map(value => String(value)).join(' '),\n secretValues\n )\n ),\n warn: (...values: unknown[]) =>\n globalThis.console.error(\n redactKnownSecrets(\n values.map(value => String(value)).join(' '),\n secretValues\n )\n ),\n error: (...values: unknown[]) =>\n globalThis.console.error(\n redactKnownSecrets(\n values.map(value => String(value)).join(' '),\n secretValues\n )\n ),\n });\n const builtInServices = deeplyReadonlyServiceFacade(\n request,\n executionDeadline\n );\n const nativeFetch = trackedNativeFetch(request);\n const services =\n request.modules === undefined\n ? builtInServices\n : await loadRuntimeModules(request, builtInServices, nativeFetch);\n if (request.bindings !== undefined && request.modules === undefined) {\n Object.defineProperty(globalThis, 'fetch', {\n configurable: false,\n enumerable: true,\n writable: false,\n value: nativeFetch,\n });\n }\n const safeNodeId = request.nodeId.replace(/[^A-Za-z0-9_-]/g, '_');\n const body = `\"use strict\";\\n${request.source}\\n//# sourceURL=woml-${request.mode === 'lifecycle' ? 'lifecycle' : 'step'}-${safeNodeId}.js`;\n const script =\n request.bindings === undefined\n ? new AsyncFunction('context', 'attempt', 'console', body)\n : reusable !== undefined && reusableLifecycle !== undefined\n ? reusable.definition.kind === 'step'\n ? new AsyncFunction(\n 'props',\n 'context',\n 'lifecycle',\n 'services',\n 'fetch',\n 'console',\n body\n )\n : new AsyncFunction(\n 'props',\n 'lifecycle',\n 'services',\n 'fetch',\n 'console',\n body\n )\n : reusable !== undefined\n ? new AsyncFunction(\n 'props',\n 'context',\n 'attempt',\n 'services',\n 'fetch',\n 'console',\n body\n )\n : request.mode === 'lifecycle'\n ? new AsyncFunction(\n 'context',\n 'lifecycle',\n 'attempt',\n 'services',\n 'secrets',\n 'fetch',\n 'console',\n body\n )\n : new AsyncFunction(\n 'context',\n 'attempt',\n 'services',\n 'secrets',\n 'fetch',\n 'console',\n body\n );\n let result =\n request.bindings === undefined\n ? await script(context, attempt, safeConsole)\n : reusable !== undefined && reusableLifecycle !== undefined\n ? reusable.definition.kind === 'step'\n ? await script(\n reusable.props,\n context,\n reusableLifecycle,\n services,\n nativeFetch,\n safeConsole\n )\n : await script(\n reusable.props,\n reusableLifecycle,\n services,\n nativeFetch,\n safeConsole\n )\n : reusable !== undefined\n ? await script(\n reusable.props,\n context,\n attempt,\n services,\n nativeFetch,\n safeConsole\n )\n : request.mode === 'lifecycle'\n ? await script(\n context,\n lifecycle,\n attempt,\n services,\n secrets,\n nativeFetch,\n safeConsole\n )\n : await script(\n context,\n attempt,\n services,\n secrets,\n nativeFetch,\n safeConsole\n );\n if (\n (request.mode === 'lifecycle' || reusableLifecycle !== undefined) &&\n result === undefined\n ) {\n result = null;\n }\n const violation = findJsonViolation(result);\n if (violation !== undefined) {\n self.postMessage({\n messageType: 'completed',\n response: {\n ok: false,\n error: {\n kind: 'non-json',\n name: 'NonJsonResult',\n message: `${violation.path}: ${violation.reason}`,\n },\n },\n } satisfies ScriptWorkerOutbound);\n return;\n }\n self.postMessage({\n messageType: 'completed',\n response: { ok: true, result: result as JsonValue },\n } satisfies ScriptWorkerOutbound);\n } catch (error) {\n self.postMessage({\n messageType: 'completed',\n response: serializeError(error, secretValues, request.modules),\n } satisfies ScriptWorkerOutbound);\n }\n}\n\nself.onmessage = (event: MessageEvent<ScriptWorkerInbound>) => {\n const message = event.data;\n if (message.messageType === 'execute') {\n void execute(message.request);\n return;\n }\n if (message.messageType === 'fetch_observation_ack') {\n const pending = pendingFetchAcks.get(message.requestId);\n if (pending === undefined) return;\n pendingFetchAcks.delete(message.requestId);\n if (message.ack.accepted) pending.resolve();\n else\n pending.reject(\n new NativeFetchTrackingError(message.requestId, message.ack.error)\n );\n return;\n }\n const pending = pendingCalls.get(message.callId);\n if (pending === undefined) return;\n pendingCalls.delete(message.callId);\n if (message.result.outcome === 'succeeded') {\n const actualBytes = Buffer.byteLength(\n JSON.stringify(message.result.result),\n 'utf8'\n );\n if (actualBytes > 4_194_304 || actualBytes !== message.result.resultBytes) {\n pending.reject(\n new ServiceCallError(\n pending.capability,\n pending.operation,\n message.callId,\n {\n kind: 'invalid_result',\n code: 'WOML_CAPABILITY_RESULT_INVALID',\n message: 'The capability result failed its byte-size contract.',\n retryable: false,\n ambiguous: false,\n }\n )\n );\n return;\n }\n pending.resolve(message.result.result);\n } else {\n pending.reject(\n new ServiceCallError(\n pending.capability,\n pending.operation,\n message.callId,\n message.result.error\n )\n );\n }\n};\n"
7
+ ],
8
+ "mappings": "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",
9
+ "debugId": "3B98B459CBEA2E9664756E2164756E21",
10
+ "names": []
11
+ }