Skip to content

Function: defineApp() ​

ts
function defineApp<M>(spec): App<M>;

Turns an author's spec into the module's exports. Each export reads its envelope with Host.inputString(), builds the context over the host functions (Host.getFunctions(), each called with the offset of a Memory block holding its JSON request and answering the offset of its JSON answer), runs the handler, and answers with Host.outputString(): { status: 'ok', output }, { status: 'pending', externalId, callbackTimeoutSeconds? } or { status: 'error', message, retryable? } for invoke; { status: 'event', event }, { status: 'ignored' }, { status: 'rejected', message } for handle_webhook; { status: 'ok', handoff } for handoff. Only an action the manifest declares runs, by its own name: toString is no action. An action's input is parsed with its zod schema (defaults applied) and the config with configSchema; a thrown AppError becomes the error answer with its retryable, any other throw an error answer without it. A handler may return a Promise: its answer is written when the Promise settles, which happens before the export returns. Every export answers 0; the failures are in the answers.

Calling defineApp installs fetch on globalThis (fetch.ts) for the module's lifetime, and replaces Math.random with one drawn from crypto.getRandomValues (random.ts), which differs from call to call where the runtime's own generator would repeat itself.

Type Parameters ​

M ​

M extends AppManifestSpec<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, Record<string, ActionSpec<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>>>

Parameters ​

spec ​

AppSpec<M>

Returns ​

App<M>

Released under the Apache-2.0 License.