# Core Types URL: /docs/api/types Core Types [#core-types] Use these types when handling kernel operation results, errors, geometry output, and worker state. They form the shared contract between the client and worker runtime. Result Types [#result-types] All kernel operations return a discriminated union: `KernelSuccessResult | KernelErrorResult`. Check the `success` field to narrow the result. ```typescript @ts-nocheck type KernelResult = KernelSuccessResult | KernelErrorResult; ``` Issue and Location Types [#issue-and-location-types] Worker State and Render Phase [#worker-state-and-render-phase] `WorkerState` is the worker's current lifecycle state: `'idle'`, `'rendering'`, or `'error'`. Subscribe via `client.on('state', handler)`. `RenderPhase` identifies the current phase of a render: `'resolvingDeps'`, `'bundling'`, `'extractingParams'`, `'computingGeometry'`, `'postProcessing'`. Subscribe via `client.on('progress', handler)`. Dependency Types [#dependency-types] Dependencies represent what a kernel's geometry depends on. The `Dependency` union type is used for cache key computation, middleware, and change detection: ", "simplifiedType": "Record", "required": true, "deprecated": false } ] }} /> ", "simplifiedType": "Record", "required": true, "deprecated": false } ] }} /> `Dependency` is the union: `FileDependency | MiddlewareDependency | FrameworkDependency | OptionDependency | ParameterDependency | AssetDependency`. Filesystem Types [#filesystem-types] ; (path: string): Promise>; }", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "writeFile", "description": "Write file (text or binary).", "tags": [], "type": "(path: string, data: Uint8Array | string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "mkdir", "description": "Create directory, optionally recursive.", "tags": [], "type": "(path: string, options?: { recursive?: boolean; }) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "readdir", "description": "List directory entries (file/dir names).", "tags": [], "type": "(path: string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "unlink", "description": "Delete file.", "tags": [], "type": "(path: string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "rmdir", "description": "Remove an empty directory.", "tags": [], "type": "(path: string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "rename", "description": "Rename / move a file or directory.", "tags": [], "type": "(oldPath: string, newPath: string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "stat", "description": "Get file or directory metadata.", "tags": [], "type": "(path: string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "lstat", "description": "Get file or directory metadata without following symlinks.", "tags": [], "type": "(path: string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "exists", "description": "Check if path exists.", "tags": [], "type": "(path: string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "watch", "description": "Subscribe to filesystem change events for the given paths.\nReturns an unsubscribe function. Events are filtered server-side.", "tags": [], "type": "((request: RuntimeWatchRequest, handler: (event: RuntimeWatchEvent) => void) => () => void) | undefined", "simplifiedType": "function", "required": false, "deprecated": false } ] }} /> ; (path: string): Promise>; }", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "writeFile", "description": "Write file (text or binary).", "tags": [], "type": "(path: string, data: Uint8Array | string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "mkdir", "description": "Create directory, optionally recursive.", "tags": [], "type": "(path: string, options?: { recursive?: boolean; }) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "readdir", "description": "List directory entries (file/dir names).", "tags": [], "type": "(path: string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "unlink", "description": "Delete file.", "tags": [], "type": "(path: string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "rmdir", "description": "Remove an empty directory.", "tags": [], "type": "(path: string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "rename", "description": "Rename / move a file or directory.", "tags": [], "type": "(oldPath: string, newPath: string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "stat", "description": "Get file or directory metadata.", "tags": [], "type": "(path: string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "lstat", "description": "Get file or directory metadata without following symlinks.", "tags": [], "type": "(path: string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "exists", "description": "Check if path exists.", "tags": [], "type": "(path: string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "watch", "description": "Subscribe to filesystem change events for the given paths.\nReturns an unsubscribe function. Events are filtered server-side.", "tags": [], "type": "((request: RuntimeWatchRequest, handler: (event: RuntimeWatchEvent) => void) => () => void) | undefined", "simplifiedType": "function", "required": false, "deprecated": false }, { "name": "readFiles", "description": "Batch-read multiple files as binary. Default: `Promise.all(paths.map(readFile))`.", "tags": [], "type": "(paths: string[]) => Promise>>", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "readdirContents", "description": "Read all file contents in a directory (skips subdirectories).", "tags": [], "type": "(directoryPath: string) => Promise>>", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "readdirStat", "description": "Get stat information for all entries in a directory.", "tags": [], "type": "(directoryPath: string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "ensureDir", "description": "Ensure a directory exists, creating parents as needed. Default: `mkdir(path, { recursive: true })`.", "tags": [], "type": "(path: string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false } ] }} /> Kernel Types [#kernel-types] > | undefined", "simplifiedType": "object", "required": false, "deprecated": false }, { "name": "renderSchema", "description": "Zod schema for kernel-specific render options. Type is inferred and threaded to createGeometry input.", "tags": [], "type": "RenderSchema | undefined", "simplifiedType": "RenderSchema", "required": false, "deprecated": false }, { "name": "exportSchemas", "description": "Zod schemas for per-format export options. Keys define supported formats; provides type-safe narrowing in exportGeometry.", "tags": [], "type": "ExportSchemas | undefined", "simplifiedType": "ExportSchemas", "required": false, "deprecated": false }, { "name": "initialize", "description": "Initialize kernel with typed options. Options type is inferred from optionsSchema.", "tags": [], "type": "(options: Options, runtime: KernelRuntime) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "getDependencies", "description": "Return resolved and unresolved dependency paths for change-detection, cache invalidation, and watch-set expansion.", "tags": [], "type": "(input: GetDependenciesInput, runtime: KernelRuntime, context: Context) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "getParameters", "description": "Extract user-facing parameters (and their JSON Schema) from the active file.", "tags": [], "type": "(input: GetParametersInput, runtime: KernelRuntime, context: Context) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "createGeometry", "description": "Evaluate the active file and produce tessellated geometry plus a native handle for export.", "tags": [], "type": "(input: CreateGeometryInput, runtime: KernelRuntime, context: Context) => Promise>", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "exportGeometry", "description": "Convert a previously created native geometry handle into one or more export file blobs.", "tags": [], "type": "(input: ExportGeometryInput, runtime: KernelRuntime, context: Context) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "serializeHandle", "description": "Serialize the native geometry handle to a cacheable representation.", "tags": [], "type": "((nativeHandle: NativeHandle, context: Context) => SerializedHandle) | undefined", "simplifiedType": "function", "required": false, "deprecated": false }, { "name": "deserializeHandle", "description": "Restore native geometry handle from cached serialized data.", "tags": [], "type": "((data: SerializedHandle, context: Context) => NativeHandle) | undefined", "simplifiedType": "function", "required": false, "deprecated": false }, { "name": "cleanup", "description": "Tear down kernel resources (WASM instances, temp files, etc.) when the worker is disposed.", "tags": [], "type": "((context: Context) => Promise) | undefined", "simplifiedType": "function", "required": false, "deprecated": false } ] }} /> >", "simplifiedType": "object", "required": true, "deprecated": false }, { "name": "bundler", "description": "Esbuild bundler for JS/TS kernels. Lazily initialised on first access.", "tags": [], "type": "KernelBundler", "simplifiedType": "KernelBundler", "required": true, "deprecated": false }, { "name": "tracer", "description": "Span tracer for kernel-authored performance instrumentation", "tags": [], "type": "RuntimeSpanTracer", "simplifiedType": "RuntimeSpanTracer", "required": true, "deprecated": false }, { "name": "execute", "description": "Execute bundled JS/TS code via dynamic import and return the module exports.\nBrowser uses Blob URL, Node.js uses data URL.", "tags": [], "type": "(code: string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false } ] }} /> Bundler Types [#bundler-types] > | undefined", "simplifiedType": "object", "required": false, "deprecated": false }, { "name": "initialize", "description": "Initialize the bundler. Receives framework init options plus user-provided options.", "tags": [], "type": "(initOptions: BundlerInitOptions, options: Options) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "detectImports", "description": "Detect which bare-specifier modules are imported transitively.\nResolves relative imports normally but marks bare specifiers as external.\nReturns detected modules and project dependencies without producing runnable code.\nThis is the primary mechanism for kernel selection -- no module stubs required.", "tags": [], "type": "(input: BundleInput, context: Context) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "bundle", "description": "Produce runnable code with all registered modules resolved.\nCalled AFTER kernel selection and initialization (modules are registered).", "tags": [], "type": "(input: BundleInput, context: Context) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "execute", "description": "Execute bundled code (tied to this bundler's output format).", "tags": [], "type": "(code: string, context: Context) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "registerModule", "description": "Register a builtin module for resolution during bundle().", "tags": [], "type": "(name: string, builtinModule: BuiltinModule, context: Context) => void", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "resolveDependencies", "description": "Optional fast-path dependency resolution without full bundling.\nFalls back to bundle().dependencies when not implemented.", "tags": [], "type": "((input: BundleInput, context: Context) => Promise) | undefined", "simplifiedType": "function", "required": false, "deprecated": false }, { "name": "cleanup", "description": "Clean up bundler resources (e.g., esbuild.stop()).", "tags": [], "type": "((context: Context) => Promise) | undefined", "simplifiedType": "function", "required": false, "deprecated": false } ] }} /> Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "resolveDependencies", "description": "Resolve all transitive dependencies without generating output code.\nReturns both resolved dependencies and unresolved import paths.", "tags": [], "type": "(entryPath: string) => Promise", "simplifiedType": "function", "required": true, "deprecated": false }, { "name": "registerModule", "description": "Register a built-in module that will be served from memory during bundling.\nUsed by JS/TS kernels to register WASM-loaded libraries (replicad,", "tags": [ { "name": "jscad", "text": "/modeling).\nMust be called before the first bundle() call." } ], "type": "(name: string, entry: BuiltinModule) => void", "simplifiedType": "function", "required": true, "deprecated": false } ] }} /> Tracer Types [#tracer-types] void", "simplifiedType": "function", "required": true, "deprecated": false } ] }} /> ) => SpanHandle", "simplifiedType": "function", "required": true, "deprecated": false } ] }} /> Geometry and Export Types [#geometry-and-export-types] Usage [#usage] ```typescript @ts-nocheck const result = await client.render({ file: 'main.ts' }); if (result.success) { console.log(result.data.length); } else { console.error(result.issues); } ``` Related [#related] * [Handle Errors](../guides/error-handling) * [API: Client](./client) * [API: Filesystem](./filesystem)