Skip to main content

exec

How exec works in this workspace. The command is the source of an ECMAScript module, evaluated in a fresh Dynamic Worker, not a shell command. Read this before running code, and when a run fails with "Disallowed operation called within global scope" or returns nothing.

Datos de origen

Repositorio
cloudflare/computer
Última actividad en el origen
12 de octubre de 2026 a las 14:03
Idioma detectado de SKILL.md
inglés
Estrellas
9608
Forks
563

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
exec
description
How exec works in this workspace. The command is the source of an ECMAScript module, evaluated in a fresh Dynamic Worker, not a shell command. Read this before running code, and when a run fails with "Disallowed operation called within global scope" or returns nothing.
# Running code Every `exec` call takes **JavaScript module source**, not a shell command. The durable object builds a module graph from it, starts a fresh Dynamic Worker, and evaluates the module there. Nothing is shared between calls. ## The shape of a module Put the work inside the default export, and return what you want back: ```js import { readdir, readFile } from "node:fs/promises"; export default async function (input) { const names = await readdir(input.dir); const first = await readFile(`${input.dir}/${names[0]}`, "utf8"); return { count: names.length, first }; } ``` - The default export gets the call's `input` value. - Its return value comes back as the result's `value`. It must be JSON-compatible. - `console.log` and `console.info` go to standard output. `console.warn` and `console.error` go to standard error. - A thrown error ends the run with a non-zero exit code and the message on standard error. So does a promise that rejects with nothing handling it, so `await` everything you start. - Code at the top level runs before the call is set up. A file read or a `fetch` there fails with `Disallowed operation called within global scope`. Imports at the top are fine. ## What code can import - `node:fs/promises` (also `node:fs`): the workspace's files. The supported calls are `readFile`, `writeFile`, `mkdir`, `rm`, `readdir`, `stat`, `lstat`, `readlink`, `symlink`, `chmod` and `access`. All of them are async. - Node.js built-ins such as `node:path`, `node:crypto`, `node:zlib` and `node:buffer`, with subpaths like `node:stream/promises`. Bare names such as `path` work too. - Relative imports resolve from `cwd` in the workspace, so you can write a helper module with one call and import it in the next. - There is no `node_modules` lookup and no npm. Beyond the modules above, only the ones the host configures are available. ## Limits - No direct network access. `fetch` to the internet fails. - Each run has a time limit: one minute by default, three at most. - Source, `input` and the returned value are capped at 1 MiB each. ## Files - `cwd` defaults to `/workspace`. - File operations go straight to the durable object's storage. There's nothing to sync, so a write is visible to the next call right away. - `/workspace/r2` is a read-only copy of an R2 bucket. - `/workspace/.agents/skills` (where this file lives) is a read-only copy of files shipped with the Worker. Writing under either one fails with `EROFS`.
Ver en GitHub