docs(plugin-workflow-javascript): clarify unsafe module mode (#9629)

This commit is contained in:
Junyi
2026-05-30 11:11:20 +08:00
committed by GitHub
parent 79697695f4
commit 113acf62d3
10 changed files with 43 additions and 25 deletions
+4 -2
View File
@@ -67,7 +67,9 @@ JavaScript 脚本节点支持两种执行引擎,通过环境变量 `WORKFLOW_S
当**配置了** `WORKFLOW_SCRIPT_MODULES` 环境变量时,脚本切换为 Node.js 内置的 `vm` 引擎执行,以获得 `require` 能力。
:::warning{title="安全警告"}
非安全模式下,脚本虽然运行在 `vm` 沙箱中并限制了可用模块,但 Node.js 的 `vm` 模块并非安全的沙箱机制。启用此模式意味着信任所有有权编辑工作流脚本的用户。管理员应当自行评估安全风险,并严格管控模块白名单和工作流编辑权限。
非安全模式仅使用 Node.js 的 `vm` 来提供 CommonJS `require` 能力。Node.js 的 `vm` 模块并非安全的沙箱机制。启用此模式意味着信任所有有权编辑、测试或运行工作流脚本的用户,等同于允许这些用户以 NocoBase 服务端进程权限执行代码。
`WORKFLOW_SCRIPT_MODULES` 不是安全边界,也不是权限模型。它只用于控制脚本执行前 `require()` 可接受的模块名称。
:::
在脚本中使用模块与 CommonJS 一致,代码中使用 `require()` 指令引入模块。
@@ -79,7 +81,7 @@ WORKFLOW_SCRIPT_MODULES=crypto,timers,lodash,dayjs
```
:::info{title="提示"}
在环境变量 `WORKFLOW_SCRIPT_MODULES` 中未声明的模块,即使是 Node.js 原生的或 `node_modules` 中已安装的,也**不能**在脚本中使用。该策略可以用于在运维层管控用户可使用的模块列表,在一些场景下避免脚本权限过高。
在环境变量 `WORKFLOW_SCRIPT_MODULES` 中未声明的模块,即使是 Node.js 原生的或 `node_modules` 中已安装的,也**不能**通过 `require()` 直接引入。该列表仅用于配置支持的模块导入,不应依赖它来降低脚本权限,也不应以此将脚本编辑能力安全地委派给较低信任级别的用户。
:::
在非源码部署的环境下,如果某个模块未在 node_modules 中安装,可以将需要的包手动安装到 storage 目录中。例如需要使用 `exceljs` 包时,可以执行如下操作:
+5 -3
View File
@@ -68,7 +68,9 @@ Dies ist der empfohlene Standardmodus, geeignet für reine Berechnungs- und Date
Wenn `WORKFLOW_SCRIPT_MODULES` **konfiguriert ist**, wechseln Skripte zur integrierten Node.js-`vm`-Engine, um die `require`-Funktionalität zu ermöglichen.
:::warning{title="Sicherheitswarnung"}
Im unsicheren Modus werden Skripte zwar in einer `vm`-Sandbox mit eingeschränkter Modul-Whitelist ausgeführt, jedoch ist das Node.js-`vm`-Modul kein sicherer Sandbox-Mechanismus. Die Aktivierung dieses Modus bedeutet, dass allen Benutzern vertraut wird, die die Berechtigung zum Bearbeiten von Workflow-Skripten haben. Administratoren sollten die Sicherheitsrisiken eigenständig bewerten und die Modul-Whitelist sowie die Berechtigungen zur Workflow-Bearbeitung streng kontrollieren.
Der unsichere Modus verwendet Node.js `vm` nur, um CommonJS-`require` zu unterstützen. Das Node.js-`vm`-Modul ist kein sicherer Sandbox-Mechanismus. Die Aktivierung dieses Modus bedeutet, dass allen Benutzern vertraut wird, die Workflow-Skripte bearbeiten, testen oder ausführen können, als könnten sie Code mit den Berechtigungen des NocoBase-Servers ausführen.
`WORKFLOW_SCRIPT_MODULES` ist keine Sicherheitsgrenze und kein Berechtigungsmodell. Es steuert nur, welche Modulnamen von `require()` akzeptiert werden, bevor der Skriptcode ausgeführt wird.
:::
Module können im Skript konsistent mit CommonJS verwendet werden. Module werden im Code mit der `require()`-Anweisung importiert.
@@ -80,7 +82,7 @@ WORKFLOW_SCRIPT_MODULES=crypto,timers,lodash,dayjs
```
:::info{title="Hinweis"}
Module, die nicht in der Umgebungsvariable `WORKFLOW_SCRIPT_MODULES` deklariert sind, können im Skript **nicht** verwendet werden, selbst wenn sie nativ in Node.js vorhanden oder bereits in `node_modules` installiert sind. Diese Richtlinie kann auf Betriebsebene genutzt werden, um die Liste der für Benutzer verfügbaren Module zu steuern und in bestimmten Szenarien zu verhindern, dass Skripte übermäßige Berechtigungen erhalten.
Module, die nicht in der Umgebungsvariable `WORKFLOW_SCRIPT_MODULES` deklariert sind, können nicht direkt mit `require()` importiert werden, selbst wenn sie nativ in Node.js vorhanden oder bereits in `node_modules` installiert sind. Diese Liste dient nur zur Konfiguration unterstützter Imports. Verlassen Sie sich nicht darauf, um Skriptberechtigungen zu reduzieren oder die Bearbeitung von Skripten sicher an weniger vertrauenswürdige Benutzer zu delegieren.
:::
In einer Umgebung, die nicht aus dem Quellcode bereitgestellt wird, können Sie ein benötigtes Modul, das nicht in `node_modules` installiert ist, manuell in das `storage`-Verzeichnis installieren. Wenn Sie beispielsweise das `exceljs`-Paket verwenden möchten, können Sie die folgenden Schritte ausführen:
@@ -166,4 +168,4 @@ async function sleep(time) {
await sleep(1000);
return 123;
```
```
+4 -2
View File
@@ -64,7 +64,9 @@ This is the recommended default mode, suitable for pure computation and data pro
When `WORKFLOW_SCRIPT_MODULES` **is configured**, scripts switch to the Node.js built-in `vm` engine to enable `require` capability.
:::warning{title="Security Warning"}
In unsafe mode, although scripts run in a `vm` sandbox with a restricted module whitelist, the Node.js `vm` module is not a secure sandbox mechanism. Enabling this mode implies trusting all users who have permission to edit workflow scripts. Administrators should assess the security risks independently and strictly control the module whitelist and workflow editing permissions.
Unsafe mode uses Node.js `vm` only to provide CommonJS `require` support. The Node.js `vm` module is not a secure sandbox mechanism. Enabling this mode means trusting every user who can edit, test, or run workflow scripts as someone who can execute code with the NocoBase server's privileges.
`WORKFLOW_SCRIPT_MODULES` is not a security boundary or a permission model. It only controls which module names are accepted by `require()` before script code runs.
:::
Modules can be used in the script consistent with CommonJS, using the `require()` directive to import modules.
@@ -76,7 +78,7 @@ WORKFLOW_SCRIPT_MODULES=crypto,timers,lodash,dayjs
```
:::info{title="Note"}
Modules not declared in the `WORKFLOW_SCRIPT_MODULES` environment variable **cannot** be used in the script, even if they are native to Node.js or already installed in `node_modules`. This policy can be used at the operational level to control the list of modules available to users, preventing scripts from having excessive permissions in some scenarios.
Modules not declared in the `WORKFLOW_SCRIPT_MODULES` environment variable **cannot** be imported directly with `require()`, even if they are native to Node.js or already installed in `node_modules`. This list is intended only to configure supported imports. Do not rely on it to reduce script permissions or to safely delegate script editing to less-trusted users.
:::
When in a non-source-deployed environment, if a module is not installed in `node_modules`, you can manually install the required package into the `storage` directory. For example, to use the `exceljs` package, you can perform the following steps:
+5 -3
View File
@@ -68,7 +68,9 @@ Este es el modo predeterminado recomendado, adecuado para lógica de cálculo pu
Cuando `WORKFLOW_SCRIPT_MODULES` **está configurada**, los scripts cambian al motor `vm` integrado de Node.js para habilitar la capacidad de `require`.
:::warning{title="Advertencia de seguridad"}
En el modo no seguro, aunque los scripts se ejecutan en un sandbox `vm` con una lista blanca de módulos restringida, el módulo `vm` de Node.js no es un mecanismo de sandbox seguro. Habilitar este modo implica confiar en todos los usuarios que tienen permiso para editar scripts de flujo de trabajo. Los administradores deben evaluar los riesgos de seguridad de forma independiente y controlar estrictamente la lista blanca de módulos y los permisos de edición de flujos de trabajo.
El modo no seguro usa el módulo `vm` de Node.js solo para proporcionar soporte de CommonJS `require`. El módulo `vm` de Node.js no es un mecanismo de sandbox seguro. Habilitar este modo significa confiar en todos los usuarios que pueden editar, probar o ejecutar scripts de flujo de trabajo como usuarios capaces de ejecutar código con los privilegios del servidor NocoBase.
`WORKFLOW_SCRIPT_MODULES` no es una frontera de seguridad ni un modelo de permisos. Solo controla qué nombres de módulos acepta `require()` antes de que se ejecute el código del script.
:::
Los módulos pueden usarse en el script de forma consistente con CommonJS, utilizando la directiva `require()` para importarlos.
@@ -80,7 +82,7 @@ WORKFLOW_SCRIPT_MODULES=crypto,timers,lodash,dayjs
```
:::info{title="Nota"}
Los módulos no declarados en la variable de entorno `WORKFLOW_SCRIPT_MODULES` **no pueden** usarse en el script, incluso si son nativos de Node.js o ya están instalados en `node_modules`. Esta política puede utilizarse a nivel operativo para controlar la lista de módulos disponibles para los usuarios, evitando que los scripts tengan permisos excesivos en algunos escenarios.
Los módulos no declarados en la variable de entorno `WORKFLOW_SCRIPT_MODULES` **no pueden** importarse directamente con `require()`, incluso si son nativos de Node.js o ya están instalados en `node_modules`. Esta lista solo sirve para configurar imports admitidos. No confíe en ella para reducir los permisos de los scripts ni para delegar de forma segura la edición de scripts a usuarios de menor confianza.
:::
En un entorno sin despliegue desde el código fuente, si un módulo no está instalado en `node_modules`, puede instalar manualmente el paquete requerido en el directorio `storage`. Por ejemplo, para usar el paquete `exceljs`, puede realizar los siguientes pasos:
@@ -166,4 +168,4 @@ async function sleep(time) {
await sleep(1000);
return 123;
```
```
+4 -2
View File
@@ -68,7 +68,9 @@ C'est le mode par défaut recommandé, adapté aux logiques de calcul pur et de
Lorsque `WORKFLOW_SCRIPT_MODULES` **est configurée**, les scripts basculent vers le moteur `vm` natif de Node.js pour activer la fonctionnalité `require`.
:::warning{title="Avertissement de sécurité"}
En mode non sécurisé, bien que les scripts s'exécutent dans un bac à sable `vm` avec une liste blanche de modules restreinte, le module `vm` de Node.js n'est pas un mécanisme de bac à sable sécurisé. L'activation de ce mode implique de faire confiance à tous les utilisateurs ayant la permission de modifier les scripts de flux de travail. Les administrateurs doivent évaluer les risques de sécurité de manière indépendante et contrôler strictement la liste blanche des modules et les permissions de modification des flux de travail.
Le mode non sécurisé utilise le module `vm` de Node.js uniquement pour fournir la prise en charge de CommonJS `require`. Le module `vm` de Node.js n'est pas un mécanisme de bac à sable sécurisé. L'activation de ce mode implique de faire confiance à tous les utilisateurs pouvant modifier, tester ou exécuter des scripts de flux de travail comme à des utilisateurs capables d'exécuter du code avec les privilèges du serveur NocoBase.
`WORKFLOW_SCRIPT_MODULES` n'est ni une frontière de sécurité ni un modèle de permissions. Il contrôle seulement les noms de modules acceptés par `require()` avant l'exécution du script.
:::
Les modules peuvent être utilisés dans le script conformément à CommonJS, en utilisant la directive `require()` pour les importer.
@@ -80,7 +82,7 @@ WORKFLOW_SCRIPT_MODULES=crypto,timers,lodash,dayjs
```
:::info{title="Note"}
Les modules non déclarés dans la variable d'environnement `WORKFLOW_SCRIPT_MODULES`, même s'ils sont natifs de Node.js ou déjà installés dans `node_modules`, **ne peuvent pas** être utilisés dans le script. Cette politique peut être utilisée au niveau opérationnel pour contrôler la liste des modules accessibles aux utilisateurs, évitant ainsi que les scripts n'aient des permissions excessives dans certains scénarios.
Les modules non déclarés dans la variable d'environnement `WORKFLOW_SCRIPT_MODULES`, même s'ils sont natifs de Node.js ou déjà installés dans `node_modules`, **ne peuvent pas** être importés directement avec `require()`. Cette liste sert uniquement à configurer les imports pris en charge. Ne l'utilisez pas pour réduire les permissions des scripts ni pour déléguer en sécurité la modification des scripts à des utilisateurs moins fiables.
:::
Dans un environnement non déployé à partir des sources, si un module n'est pas installé dans `node_modules`, vous pouvez installer manuellement le paquet requis dans le répertoire `storage`. Par exemple, pour utiliser le paquet `exceljs`, vous pouvez effectuer les étapes suivantes :
+5 -3
View File
@@ -68,7 +68,9 @@ JavaScriptスクリプトノードは、環境変数`WORKFLOW_SCRIPT_MODULES`の
`WORKFLOW_SCRIPT_MODULES`が**設定されている**場合、`require`機能を有効にするため、スクリプトはNode.js組み込みの`vm`エンジンに切り替わります。
:::warning{title="セキュリティ警告"}
非セーフモードでは、スクリプトはモジュールホワイトリストが制限された`vm`サンドボックスで実行されますが、Node.jsの`vm`モジュールはセキュアなサンドボックスメカニズムではありません。このモードを有効にすることは、ワークフロースクリプトの編集権限を持つすべてのユーザーを信頼することを意味します。管理者はセキュリティリスクを独自に評価し、モジュールホワイトリストとワークフロー編集権限を厳密に管理する必要があります。
非セーフモードでは、CommonJS の `require` を提供するためだけに Node.js の `vm` を使用します。Node.js の `vm` モジュールはセキュアなサンドボックスメカニズムではありません。このモードを有効にすることは、ワークフロースクリプトを編集、テスト、または実行できるすべてのユーザーを、NocoBase サーバーの権限でコードを実行できるユーザーとして信頼することを意味します。
`WORKFLOW_SCRIPT_MODULES` はセキュリティ境界でも権限モデルでもありません。スクリプトコードの実行前に、`require()` が受け付けるモジュール名を制御するだけです。
:::
スクリプトでは、CommonJSと同様に、`require()`ディレクティブを使用してモジュールをインポートできます。
@@ -80,7 +82,7 @@ WORKFLOW_SCRIPT_MODULES=crypto,timers,lodash,dayjs
```
:::info{title="ヒント"}
環境変数`WORKFLOW_SCRIPT_MODULES`で宣言されていないモジュールは、Node.jsネイティブのものであっても、`node_modules`にインストール済みであっても、スクリプト内で**使用できません**。このポリシーは、運用レベルでユーザーが使用できるモジュールリストを管理するために利用でき、特定のシナリオでスクリプトの権限が過剰になるのを防ぎます。
環境変数`WORKFLOW_SCRIPT_MODULES`で宣言されていないモジュールは、Node.jsネイティブのものであっても、`node_modules`にインストール済みであっても、`require()` で直接インポートすることは**できません**。このリストは、サポートするインポートを設定するためだけのものです。スクリプト権限を下げたり、信頼度の低いユーザーへスクリプト編集権限を安全に委任したりする目的で依存しないでください。
:::
ソースコード以外の環境でデプロイされている場合、`node_modules`に特定のモジュールがインストールされていないときは、必要なパッケージを`storage`ディレクトリに手動でインストールできます。例えば、`exceljs`パッケージを使用する必要がある場合は、以下の操作を実行します。
@@ -166,4 +168,4 @@ async function sleep(time) {
await sleep(1000);
return 123;
```
```
+5 -3
View File
@@ -68,7 +68,9 @@ JavaScript 스크립트 노드는 두 가지 실행 엔진을 지원하며, `WOR
`WORKFLOW_SCRIPT_MODULES`가 **설정된** 경우, 스크립트는 `require` 기능을 사용하기 위해 Node.js 내장 `vm` 엔진으로 전환됩니다.
:::warning{title="보안 경고"}
비안전 모드에서는 스크립트가 제한된 모듈 화이트리스트를 가진 `vm` 샌드박스에서 실행되지만, Node.js `vm` 모듈은 보안 샌드박스 메커니즘이 아닙니다. 이 모드를 활성화하면 워크플로우 스크립트 편집 권한을 가진 모든 사용자를 신뢰하는 것을 의미합니다. 관리자는 보안 위험을 독립적으로 평가하고 모듈 화이트리스트 및 워크플로우 편집 권한을 엄격하게 제어해야 합니다.
비안전 모드는 CommonJS `require` 지원을 제공하기 위해서만 Node.js `vm`을 사용합니다. Node.js `vm` 모듈은 보안 샌드박스 메커니즘이 아닙니다. 이 모드를 활성화하면 워크플로우 스크립트를 편집, 테스트 또는 실행할 수 있는 모든 사용자를 NocoBase 서버 권한으로 코드를 실행할 수 있는 사용자로 신뢰하는 것을 의미합니다.
`WORKFLOW_SCRIPT_MODULES`는 보안 경계나 권한 모델이 아닙니다. 스크립트 코드가 실행되기 전에 `require()`가 허용할 모듈 이름만 제어합니다.
:::
스크립트에서 CommonJS와 동일하게 `require()` 지시어를 사용하여 모듈을 가져올 수 있습니다.
@@ -80,7 +82,7 @@ WORKFLOW_SCRIPT_MODULES=crypto,timers,lodash,dayjs
```
:::info{title="참고"}
환경 변수 `WORKFLOW_SCRIPT_MODULES`에 선언되지 않은 모듈은 Node.js 네이티브 모듈이거나 `node_modules`에 이미 설치되어 있더라도 스크립트에서 **사용할 수 없습니다**. 이 정책은 운영 단계에서 사용자가 사용할 수 있는 모듈 목록을 관리하고, 특정 시나리오에서 스크립트 권한이 과도하게 높아지는 것을 방지하는 데 사용될 수 있습니다.
환경 변수 `WORKFLOW_SCRIPT_MODULES`에 선언되지 않은 모듈은 Node.js 네이티브 모듈이거나 `node_modules`에 이미 설치되어 있더라도 `require()`로 직접 가져올 수 **없습니다**. 이 목록은 지원되는 import를 설정하기 위한 용도로만 사용됩니다. 스크립트 권한을 낮추거나 신뢰 수준이 낮은 사용자에게 스크립트 편집 권한을 안전하게 위임하기 위해 이 목록에 의존하지 마세요.
:::
소스 코드 배포 환경이 아닌 경우, 특정 모듈이 `node_modules`에 설치되어 있지 않다면, 필요한 패키지를 `storage` 디렉터리에 수동으로 설치할 수 있습니다. 예를 들어 `exceljs` 패키지를 사용해야 할 때 다음과 같이 실행할 수 있습니다.
@@ -166,4 +168,4 @@ async function sleep(time) {
await sleep(1000);
return 123;
```
```
+5 -3
View File
@@ -68,7 +68,9 @@ Este é o modo padrão recomendado, adequado para lógica de computação pura e
Quando `WORKFLOW_SCRIPT_MODULES` **está configurada**, os scripts utilizam o motor `vm` nativo do Node.js para habilitar a funcionalidade `require`.
:::warning{title="Aviso de segurança"}
No modo não seguro, embora os scripts sejam executados em um sandbox `vm` com uma lista restrita de módulos permitidos, o módulo `vm` do Node.js não é um mecanismo de sandbox seguro. Habilitar este modo implica confiar em todos os usuários que têm permissão para editar scripts de fluxo de trabalho. Os administradores devem avaliar os riscos de segurança de forma independente e controlar rigorosamente a lista de módulos permitidos e as permissões de edição de fluxos de trabalho.
O modo não seguro usa o módulo `vm` do Node.js apenas para fornecer suporte a CommonJS `require`. O módulo `vm` do Node.js não é um mecanismo de sandbox seguro. Habilitar este modo significa confiar em todos os usuários que podem editar, testar ou executar scripts de fluxo de trabalho como usuários capazes de executar código com os privilégios do servidor NocoBase.
`WORKFLOW_SCRIPT_MODULES` não é uma fronteira de segurança nem um modelo de permissões. Ele controla apenas quais nomes de módulos são aceitos por `require()` antes da execução do script.
:::
Os módulos podem ser usados no script de forma consistente com o CommonJS, utilizando a diretiva `require()` para importar módulos.
@@ -80,7 +82,7 @@ WORKFLOW_SCRIPT_MODULES=crypto,timers,lodash,dayjs
```
:::info{title="Dica"}
Módulos não declarados na variável de ambiente `WORKFLOW_SCRIPT_MODULES` **não podem** ser usados no script, mesmo que sejam nativos do Node.js ou já estejam instalados em `node_modules`. Essa política pode ser utilizada no nível operacional para controlar a lista de módulos disponíveis para os usuários, evitando que os scripts tenham permissões excessivas em alguns cenários.
Módulos não declarados na variável de ambiente `WORKFLOW_SCRIPT_MODULES` **não podem** ser importados diretamente com `require()`, mesmo que sejam nativos do Node.js ou já estejam instalados em `node_modules`. Esta lista serve apenas para configurar imports suportados. Não confie nela para reduzir permissões de scripts nem para delegar com segurança a edição de scripts a usuários menos confiáveis.
:::
Em um ambiente que não seja de implantação por código-fonte, se um módulo não estiver instalado em `node_modules`, você pode instalar manualmente o pacote necessário no diretório `storage`. Por exemplo, para usar o pacote `exceljs`, você pode seguir estas etapas:
@@ -166,4 +168,4 @@ async function sleep(time) {
await sleep(1000);
return 123;
```
```
+5 -3
View File
@@ -68,7 +68,9 @@ pkg: '@nocobase/plugin-workflow-javascript'
Когда `WORKFLOW_SCRIPT_MODULES` **настроена**, скрипты переключаются на встроенный движок `vm` Node.js для обеспечения возможности использования `require`.
:::warning{title="Предупреждение безопасности"}
В небезопасном режиме, хотя скрипты выполняются в песочнице `vm` с ограниченным списком разрешённых модулей, модуль `vm` Node.js не является безопасным механизмом песочницы. Включение этого режима подразумевает доверие ко всем пользователям, имеющим права на редактирование скриптов рабочих процессов. Администраторы должны самостоятельно оценить риски безопасности и строго контролировать список разрешённых модулей и права на редактирование рабочих процессов.
Небезопасный режим использует модуль Node.js `vm` только для поддержки CommonJS `require`. Модуль Node.js `vm` не является безопасным механизмом песочницы. Включение этого режима означает, что всем пользователям, которые могут редактировать, тестировать или запускать скрипты рабочих процессов, доверяют как пользователям, способным выполнять код с привилегиями сервера NocoBase.
`WORKFLOW_SCRIPT_MODULES` не является границей безопасности или моделью разрешений. Он только управляет тем, какие имена модулей принимаются `require()` перед выполнением кода скрипта.
:::
В скрипте можно использовать модули в соответствии со стандартом CommonJS, используя директиву `require()` для импорта модулей.
@@ -80,7 +82,7 @@ WORKFLOW_SCRIPT_MODULES=crypto,timers,lodash,dayjs
```
:::info{title="Примечание"}
Модули, не объявленные в переменной среды `WORKFLOW_SCRIPT_MODULES`, **не могут** быть использованы в скрипте, даже если они являются нативными для Node.js или уже установлены в `node_modules`. Эта политика позволяет на уровне эксплуатации контролировать список модулей, доступных пользователям, и в некоторых сценариях предотвращать чрезмерные права доступа скриптов.
Модули, не объявленные в переменной среды `WORKFLOW_SCRIPT_MODULES`, **не могут** быть импортированы напрямую через `require()`, даже если они являются нативными для Node.js или уже установлены в `node_modules`. Этот список предназначен только для настройки поддерживаемых импортов. Не полагайтесь на него для снижения прав скриптов или безопасного делегирования редактирования скриптов менее доверенным пользователям.
:::
В среде, где развертывание выполнено не из исходного кода, если какой-либо модуль не установлен в `node_modules`, вы можете вручную установить необходимый пакет в каталог `storage`. Например, для использования пакета `exceljs` выполните следующие действия:
@@ -166,4 +168,4 @@ async function sleep(time) {
await sleep(1000);
return 123;
```
```
@@ -21,7 +21,7 @@ type ScriptConfig = { content?: string; timeout?: number; continue?: boolean; ar
export default class ScriptInstruction extends Instruction {
/**
* Returns the worker script path based on whether WORKFLOW_SCRIPT_MODULES is configured.
* - WORKFLOW_SCRIPT_MODULES set: uses Node.js vm with require support (module whitelist)
* - WORKFLOW_SCRIPT_MODULES set: uses Node.js vm with require support (unsafe; not a security boundary)
* - WORKFLOW_SCRIPT_MODULES unset: uses isolated-vm for maximum security (no require, no Node.js APIs)
*/
static get workerScript() {