Commit Graph
7 Commits
Author SHA1 Message Date
c608805588 [SILO-1009] fix: copy @plane/logger package in runner Dockerfile (#6007)
The workspace symlink for @plane/logger was not resolving in the
runner container because the target package was never copied into
the final stage.

Co-authored-by: Claude Opus 4.6 <[email protected]>
2026-02-23 16:05:22 +05:30
07e2316dcb [SILO-990] feat: runner - system functions, node runner tests, and editor enhancements (#5989)
* Add vitest test suite for runInIsolate in node-runner

Adds 9 tests covering AutomationEventInput data flow, PlaneClient
injection, Functions library, execution timeout, domain-restricted
fetch, ENV exposure, and missing-main error handling.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* Add TypeScript parsing support and replace console with structured logger

- Use acorn-typescript plugin for AST-based code validation and function
  detection so user scripts can include TypeScript syntax
- Build user code as index.ts instead of index.js via esbuild
- Replace all console.log/error/warn calls with @plane/logger
- Add logger middleware to Express server
- Add dd-trace initialization via tracer module

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* fix: split tsconfig into build and base configs for test compatibility

Move rootDir/outDir into tsconfig.build.json so the base tsconfig.json
can include tests/**/* for ESLint and IDE support without breaking tsc.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* remove environment variables from scripts

* update tsconfig for tests

* fix bug in scripts UI to render code properly

* add 6 system functions and inject Plane/workspaceSlug into function factory

Expand buildFunctionsLibrary to pass Plane client and workspaceSlug into
the function factory so system functions can call the Plane SDK. Populate
the system_functions fixture with httpRequest, postToSlack, getChildren,
getSiblings, addComment, and addLabel.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* fix: add created_at/updated_at to system functions fixture

Django's auto_now_add/auto_now fields are not auto-populated when
loading fixtures via loaddata, causing a NOT NULL constraint violation.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* add parent_id filter and use advancedSearch in system functions

Add parent_id filter to ExtendedIssueFilterSet so work items can be
queried by parent. Update getChildren and getSiblings system functions
to use Plane.workItems.advancedSearch with parent_id filter instead of
the list endpoint which does not support parent filtering.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* Revert "feat: add pagination support to WorkItemAdvancedSearchEndpoint"

This reverts commit 9820a1d16e571c14539c7a7139aa269df9baece4.

* add system script: mark parent as done if all children are done

Populates system_scripts fixture with a script that triggers when a
work item enters a completed state group, checks all siblings, and
updates the parent to completed if every child is done.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* Add script - Create linked work item in another project on state change

* fix: form data + title width

* fix: implemented full screen editor + handled is_system

* fix: handled is_system

* disable error highlighting in code editor

* feat: add redirect url support for runner

- add is_internal to all the internal plane apps

* invalidate app credentials in cache when app got updated

* fix: pass workspace context for system script execution in automations

System scripts have workspace=None, so accessing script.workspace.id
would fail. Now the automation passes its own workspace_id/workspace_slug
and script_executor falls back to caller-provided values.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* refactor: extract shared TypeScript parser into ts-parser module

Move duplicated acorn + tsPlugin initialization from code-validator.ts
and server.ts into a single shared ts-parser.ts module.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* fix: type errors for acorn node

---------

Co-authored-by: Claude Opus 4.6 <[email protected]>
Co-authored-by: gakshita <[email protected]>
2026-02-21 17:39:52 +05:30
bb600f325c fix: package upgrades npm pacakges that are vulnerable (#5890)
* fix: package upgrades for qs and markdownit

* fix: upgrade plane node sdk

* chore: upgrade plane-node-sdk to v0.2.8

- update all usages to latest version

* increase turbo concurrency to 23

---------

Co-authored-by: Surya Prashanth <[email protected]>
2026-02-18 00:51:47 +05:30
sriram veeraghantaandGitHub 67662b9fde fix: update the missing package from cloud (#5934) 2026-02-18 00:15:51 +05:30
AaronandGitHub b91710bc7f [WEB-6249] chore: upgrade package dependencies (#5867)
* [WEB-6249] chore: upgrade patch versions of deps

* [WEB-6249] chore: upgrade minor versions of deps

* [WEB-6249] chore: use catalog versions and fix vite config

Replace hardcoded dependency versions with catalog: references
and restore atlaskit aliases in space vite config using
createRequire to avoid Vite 7.3.1 import.meta.resolve issue.

* [WEB-6249] chore: update catalog versions for @types packages

Bump @types/node, @types/react, @types/react-dom, and @types/express
to latest compatible versions. Keep @types/amqplib at 0.10.5 to avoid
breaking type changes.
2026-02-16 14:36:46 +05:30
Aaron Reisman 3bbba6293a fix: scope type packages to catalog 2026-02-13 12:32:22 +07:00
6aeeb5a1e7 [SILO-823] feat: introducing plane runner (#5545)
* feat: introducing plane runner

- Add a new runnerctl app in API to orchestrate and manage runs.
- Models to store and process RunnerTask and RunnerTaskExecutions
- APIs for both web and inter service communication

- Add a new app `node-runner` to run the node code in vm
- Setup sandboxing using node vm to build and run the code
- Talks to runnerctl through APIs to fetch and report the task run status

* feat: settings page with editor

* fix: typo

* feat: add list, create and update script screens

- update APIs to use Session Auth
- fix issues in node runner

* add test run modal

* add delete button for task

* fix: refactor

* feat: use Script as main entity in Plane runner

- all features would have to use Script's as their action use cases
instead of Runner manager all of them

* chore: implemented scripts in automations

* add migrations

* feat: add test endpoints to build and run the code

- add /test endpoint in runnerctl service
- add /execute-sync endpoint in node-runner to run code in sync

* fix: refactor

* fix: refactor + UI improvements

* fix: refactor

* feat: add RunScript node in automation actions

* fix: cancel fn

* refactor: use execute-sync endpoint for all executions

- remove async code for executing code
- remove runnerctl service related code from node-runner

* fix: UI for automation script main layout + refactoring

* chore: add execution stats in scripts listing endpoint

* fix: route changed from /runners to /scripts

* fix: added relative last run

* fix: editor bg

* fix: test payload

* Merge branch 'preview' of github.com:makeplane/plane-ee into feat-plane-runner-ui

* feat: setup runner app migration

* feat: use oauth tokens to run scripts

* fix: refactor

* fix: types

* chore: use workspaceSlug from execution context in runner

- use cached oauth tokens instead of generating new tokens all the time

* feat: only show scripts in sidebar and automations when installed

- now we'll enable Scripts as feature only when the oauth app is installed

* fix: refactor

* fix: refactor

* fix: refactor

* fix: refactor

* fix: formatting

* fix: added direct import for types to handle self hosted and airgapped instances

* add variables support

* add support for variables in node-runner

* Add fresh migrations for runnerctl

* add copyright on all runner files

* add variables UI for runner scripts and automations

- Add TVariableDefinition type and variables field to RunnerScript type
- Add TVariableFormData and variables to RunnerScriptFormData
- Add execution_variables to TRunScriptActionConfig for automations
- Create VariablesField component for script form (collapsible, save/remove)
- Update scriptToFormData and formDataToScriptPayload to handle variables
- Update TestScript component to show variable input fields and send execution_variables
- Update AutomationActionRunScriptConfiguration to show variable inputs when script selected
- Update runnerctl.service.ts to pass execution_variables in testScript
- Update Python API serializers to include variables in script list/lite responses
- Update script_test view to pass execution_variables to execute_sync

Co-Authored-By: Claude Opus 4.5 <[email protected]>

* add reusable functions feature for runner scripts

- Add ScriptFunction model with system/workspace function support
- Add API endpoints for functions CRUD operations
- Add system function seeds (http, notifications, data, utils)
- Add Functions namespace injection into node-runner VM context
- Add functions dashboard with search, filter, and view modal
- Add function browser modal for inserting functions into scripts
- Add create/update function form with auto-generated code templates
- Add function name mismatch warning in code editor

Co-Authored-By: Claude Opus 4.5 <[email protected]>

* build code and use build to run instead of building with every run

* refactor: update build api to extract functions from code

- only send used functions to runner for execution
- test api will also now validate the code and functions used

* add execution variables in automation and ui changes

* add fixtures for scripts and functions for system defined ones

* use threadpool to fetch token with new connection

* ui style changes for functions

* fix linter issues

* add PLANE_RUNNER feature flag and rename settings tab

* move ee components to core

* add runner urls in settings and reset migrations

* fix: refactoring + css fixes

* add node-runner build in github workflow

* replace node-runner Dockerfile with turbo-based Dockerfile.runner

- Remove old Dockerfile and docker-compose.yml
- Add Dockerfile.runner using turbo prune pattern (like silo)
- Update build-branch-cloud.yml to use Dockerfile.runner

Co-Authored-By: Claude Opus 4.5 <[email protected]>

* fix: refactor + route fixed

* fix: changed folder name from scripts to runner-scripts

* fix: monaco editor theme based color

* fix: empty state and upgrade screen without img

* chore: add code validators while executing code

- reset fixtures for scripts and functions to empty

* fix: empty state + upgrade

* fix: empty state + upgrade

* fix: empty state assets

* fix: empty state assets

* feat: add AutomationEventInput for better DX writing scripts

* fix: types + formatting

* fix: types + formatting

* fix: formatting

* fix: bumped @vitest/eslint-plugin

* fix: api formatting changes

---------

Co-authored-by: Surya Prashanth <[email protected]>
Co-authored-by: Claude Opus 4.5 <[email protected]>
2026-02-12 17:14:47 +05:30