Commit Graph
71 Commits
Author SHA1 Message Date
nsrbandCursor aa3c2a25b2 feat(ops): restart individual PM2 children and enrich manage UI
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 22:31:34 +07:00
nsrbandCursor 84f29057df feat(workflows): stamp runs with revision and improve history preview
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 22:31:18 +07:00
nsrbandCursor f68376587e feat(http-auth): resolve profiles by UUID and allow multi-auth triggers
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 22:31:02 +07:00
nsrbandCursor f74b0defc6 feat(web): add backup page and reorganize admin navigation
Move workflow backup/restore to a dedicated page, rename Ops to Manage,
and group sidebar links into Automate, Platform, and Admin sections.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 11:00:59 +07:00
nsrbandCursor eb94a2f669 fix(control): allow login when HTTP server is stopped
Mount auth routes on the control plane and proxy /api/auth to :8600 in
dev:pm2 so the UI can authenticate while the HTTP API process is down.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 11:00:47 +07:00
nsrbandCursor 21a31b0b54 fix(start-app): add missing control-bus imports
Import getConfigGeneration, startHeartbeatLoop, and subscribeReload so
the monolith runner starts without ReferenceError crashes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 11:00:23 +07:00
nsrbandCursor d953f8113b fix(scripts): import installPluginFromDirectory from plugin-store
The helper is exported from plugin-store, not plugin-install.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 11:00:23 +07:00
nsrbandCursor d74923c7e1 fix(workflows): export workflowFileStem from workflow-normalize
Restore the missing export so workflow duplication resolves YAML stems
without a broken import from workflow-duplicate.js.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 11:00:09 +07:00
nsrb 6a4a653f6b Merge branch 'cursor/workflow-history-trash-3038' of https://github.com/nasyarobby/jerapah-flow into cursor/control-pm2-split-3038 2026-08-20 09:50:04 +07:00
Cursor Agentandnsrb 7d51ff433f feat(workflows): add revision history, trash, UUID naming, and backup
- Store up to 50 revisions per workflow in SQLite with normalized SHA dedup
- Soft-delete workflows to trash (7-day retention) with restore and permanent purge
- Assign UUID filenames for new and duplicated workflows; show name + file in UI
- Warn on invalid YAML, unknown scripts, and plaintext secrets with save-anyway option
- Add workflow backup zip (workflows + plugins) and merge/replace restore
- Trash page, history panel on editor, and smoke test

Co-authored-by: Nasyarobby Putra <nasyarobby@gmail.com>
2026-08-20 02:14:50 +00:00
nsrb 82aff86fa0 fix(dev-pm2): correct control script path in PM2 launcher 2026-08-20 06:37:37 +07:00
nsrbandCursor bd0c11c20c feat(plugins): add joplin-api and send-sms under repo-root plugins/
Load user plugins from /plugins instead of data/plugins so site-specific scripts stay in git and workflows can reference plugin/joplin-api and plugin/send-sms.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 06:34:33 +07:00
Cursor Agentandnsrb 611511ae60 feat(plugins): core read-only scripts and user plugin system
Introduce plugin/<id> installs (zip, HTTPS git, example, fork),
jerapah-plugin.json manifests with jerapah semver ranges, isolated
plugin dirs under data/plugins, and app version 0.1.0. Core scripts
are non-editable; get-current-time moves to examples/plugins.

Co-authored-by: Nasyarobby Putra <nasyarobby@gmail.com>
2026-08-19 16:04:00 +00:00
Cursor Agentandnsrb f66d0931bd fix(control): resolve monorepo root from packages/server/dev-pm2.mjs
Co-authored-by: Nasyarobby Putra <nasyarobby@gmail.com>
2026-08-19 10:56:27 +00:00
Cursor Agentandnsrb 8590fce3f8 fix(control): ship dev-pm2 launcher outside ignored scripts path
Move launcher to packages/server/dev-pm2.mjs (scripts/dev-* is gitignored)
and fix repo root resolution. Improve Ops pause/resume button disabled styles.

Co-authored-by: Nasyarobby Putra <nasyarobby@gmail.com>
2026-08-19 10:55:56 +00:00
Cursor Agentandnsrb 4e6c336ae8 feat(web): add Ops page and proxy control on :8600
Vite listens on 8500 and proxies /ops to the control plane. Admin Ops UI
covers pause/resume, scale, drain/force restart, and restart-needed banner.

Co-authored-by: Nasyarobby Putra <nasyarobby@gmail.com>
2026-08-19 10:55:02 +00:00
Cursor Agentandnsrb 756ba8a7ac feat(queue): support REDIS_PASS for Redis AUTH
Wire optional REDIS_PASS into the BullMQ ioredis connection, redact
credentials in startup logs, and document REDIS_PASS plus JFLOW_ROLE.

Co-authored-by: Nasyarobby Putra <nasyarobby@gmail.com>
2026-08-19 09:05:29 +00:00
nsrb d122bd9a7f Merge branch 'main' into cursor/bullmq-queue-phase-a-3038 2026-08-19 15:53:07 +07:00
nsrb 453a6f2969 feat(workflows): add SFTP test workflow and update registers
- Introduced a new SFTP test workflow in `test-sftp.yaml` to list remote files using SFTP protocol.
- Updated `registers.yaml` to include the new SFTP test workflow.
2026-08-19 15:42:52 +07:00
nsrb 3850c529e4 Merge branch 'cursor/trigger-failure-workflow-3038' into cursor/ftp-sftp-script-3038 2026-08-19 15:26:20 +07:00
nsrb 5363dd50c3 Merge branch 'main' of https://github.com/nasyarobby/jerapah-flow into cursor/ftp-sftp-script-3038 2026-08-19 15:20:58 +07:00
nsrbandCursor dc0dfadd44 feat(workflows): add MinIO S3 test workflow
Exercise fetch-binary plus s3 write against a local HTTP MinIO endpoint.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 15:13:25 +07:00
nsrbandCursor f41e9dc23a fix(server): summarize Buffer values in stored and API JSON
Stop dumping every byte as a number in event I/O, workflow test results, and script dry-runs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 15:13:12 +07:00
nsrbandCursor 2845971670 fix(secrets): allow storing values shorter than 8 characters
Keep the 8-character floor only for log redaction so short MinIO keys can be saved.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 15:13:03 +07:00
nsrbandCursor 14f6331fce chore(server): change default HTTP port from 9000 to 8700
Avoid colliding with MinIO's default S3 API port.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 15:12:54 +07:00
Cursor Agentandnsrb a95e6d7bc8 feat(runner): queue workflow runs with BullMQ (phase A)
Enqueue HTTP, cron, and manual runs via Redis/BullMQ; workers execute
asynchronously with configurable concurrency. Triggers return 202 and
clients poll GET /api/runs/:id for progress (queued → running → done).

Co-authored-by: Nasyarobby Putra <nasyarobby@gmail.com>
2026-08-19 04:25:21 +00:00
Cursor Agentandnsrb 64f605b135 chore: merge origin/main into cursor/ftp-sftp-script-3038
Co-authored-by: Nasyarobby Putra <nasyarobby@gmail.com>
2026-08-18 23:59:56 +00:00
Cursor Agentandnsrb 88cea85701 chore: merge origin/main into cursor/s3-compatible-script-3038
Co-authored-by: Nasyarobby Putra <nasyarobby@gmail.com>
2026-08-18 23:59:45 +00:00
nsrb 04c0d4b801 feat(failures): implement consecutive failure tracking and dashboard integration
- Added a new function to list consecutive failure streaks for workflows, allowing tracking of workflows that have failed multiple times in a row.
- Integrated the consecutive failure data into the dashboard, displaying streaks and counts for better visibility of workflow health.
- Created a dedicated FailuresPage to present detailed information about consecutive failures, enhancing user experience and monitoring capabilities.
- Updated API endpoints and hooks to support the new failure tracking features, ensuring seamless data retrieval and display.

This enhancement improves the ability to monitor and respond to workflow failures, contributing to overall system reliability.
2026-08-18 11:14:46 +07:00
nsrb c668947c90 refactor(triggers): rename triggerWorkflow to onFailureWorkflow for clarity
- Updated all instances of `triggerWorkflow` to `onFailureWorkflow` across the codebase to improve clarity and consistency in naming.
- Adjusted related logic in workflow configurations and UI components to reflect the new naming convention.
- Enhanced error messages and documentation to align with the updated terminology.

This change aims to provide a clearer understanding of the workflow's failure handling mechanism.
2026-08-18 11:05:39 +07:00
nsrbandGitHub 93362208a2 Merge pull request #9 from nasyarobby/cursor/trigger-failure-workflow-3038
feat(triggers): alert workflow after consecutive cron/http failures
2026-08-18 10:23:35 +07:00
nsrbandGitHub 3ef95a3cce Merge pull request #8 from nasyarobby/cursor/slack-webhook-script-3038
feat(scripts): add slack-webhook script for Slack Incoming Webhooks
2026-08-18 09:11:30 +07:00
Cursor Agentandnsrb 7474bb5c6d feat(scripts): add remote-fs script for SFTP and FTP access
Co-authored-by: Nasyarobby Putra <nasyarobby@gmail.com>
2026-08-17 00:22:30 +00:00
Cursor Agentandnsrb a6d83eb7cb feat(scripts): add s3 script for S3-compatible object storage
Co-authored-by: Nasyarobby Putra <nasyarobby@gmail.com>
2026-08-17 00:07:04 +00:00
Cursor Agentandnsrb 0c416506d6 feat(triggers): start alert workflow after consecutive cron/http failures
Co-authored-by: Nasyarobby Putra <nasyarobby@gmail.com>
2026-08-16 23:45:45 +00:00
Cursor Agentandnsrb 989bf5d487 feat(scripts): add slack-webhook script for Slack Incoming Webhooks
Co-authored-by: Nasyarobby Putra <nasyarobby@gmail.com>
2026-08-16 23:33:06 +00:00
Cursor Agentandnsrb 534c5bbea3 feat(scripts): add list-webdav script for WebDAV directory listing
Co-authored-by: Nasyarobby Putra <nasyarobby@gmail.com>
2026-08-16 23:15:20 +00:00
Cursor Agentandnsrb 26d31af17f chore(server): allow webdav package in script sandbox
Co-authored-by: Nasyarobby Putra <nasyarobby@gmail.com>
2026-08-16 23:15:20 +00:00
nsrb 56a5d0e7d2 refactor: rename environment variables and update related configurations
- Updated environment variable names from JERAPAH_FLOW_* to JFLOW_* for consistency and clarity.
- Adjusted database path handling in knexfile.js to reflect the new variable naming.
- Modified logging and retention days configurations to use the new variable names.
- Ensured that the JWT secret and secrets key checks are aligned with the new naming convention.
- Updated workflow test storage prefix to match the new project branding.

This refactor enhances the clarity of environment variable usage and aligns with the project's rebranding efforts.
2026-08-16 22:44:19 +07:00
nsrbandGitHub cb3bca4837 Merge branch 'main' into workflow-editor-rehaul 2026-08-16 22:27:05 +07:00
nsrb 6c13e45213 feat(variables): introduce variable management system
- Added a new module for managing variables, including creation, retrieval, updating, and deletion functionalities.
- Implemented a new API endpoint for variable operations, allowing users to interact with variables through HTTP requests.
- Enhanced the configuration reference system to support variable references, replacing the previous KV reference system.
- Updated existing workflows and scripts to utilize the new variable management features, improving flexibility in configuration handling.
- Introduced smoke tests to validate the functionality of the variable system, ensuring reliability and robustness.

This update significantly enhances the ability to manage dynamic variables within workflows, improving overall usability and maintainability.
2026-08-16 22:23:49 +07:00
nsrb fd0865063b feat(config-refs): introduce config reference parsing and resolution
- Added a new module for parsing and resolving configuration references, supporting `$SECRET_`, `$KV_`, and `$CONTEXT_` prefixes.
- Implemented functions to handle the resolution of these references within workflow contexts, enhancing the flexibility of configuration management.
- Updated existing workflows and scripts to utilize the new config reference resolution, improving data handling and context management.
- Introduced a smoke test to validate the functionality of the config reference system, ensuring robustness and reliability.

This update significantly enhances the ability to manage dynamic configurations within workflows, improving overall usability and maintainability.
2026-08-16 21:36:15 +07:00
nsrb cf4b342e04 feat(workflows): implement workflow duplication feature
- Added functionality to duplicate workflows via a new API endpoint, allowing users to create copies of existing workflows with modified names and owners.
- Introduced utility functions for managing workflow filenames and ensuring unique names for duplicates.
- Created a user interface component for duplicating workflows, including validation for existing files and owner changes.
- Enhanced existing workflows to support the new duplication feature, ensuring seamless integration with the current workflow management system.

This update significantly improves user experience by enabling efficient workflow management and organization.
2026-08-15 23:00:16 +07:00
nsrb 43e9370638 feat(scripts): enhance script return structure and context handling
- Introduced a new contract for script returns, requiring an object with `output`, `context`, and `skipRemaining` fields.
- Refactored existing scripts to align with the new return structure, ensuring compatibility with the updated context management.
- Added utility functions for normalizing context and step results, improving the handling of script execution context.
- Updated various scripts (e.g., fetch-binary, fetch-html, fetch-http) to return structured output and context, enhancing data flow and usability.
- Improved error handling for script returns, ensuring clearer feedback when invalid structures are returned.

This update significantly enhances the flexibility and clarity of script interactions within workflows.
2026-08-15 22:32:42 +07:00
nsrb e8e1cf383d chore: update YAML file icon in the brand assets
Replaced the existing YAML file icon with a new version to enhance visual consistency within the theme brand folder.
2026-08-15 21:37:22 +07:00
nsrbandCursor 4a78f66e2d refactor: rename the project to JerapahFlow (jerapah-flow)
Update package names, env vars, cookie, and default ntfy topics while keeping SCRUNNER_* fallbacks.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-15 21:21:24 +07:00
nsrbandCursor 97bb8d7429 feat(web): add JerapahFlow brand assets and apply them in the UI
Organize mark, wordmark, app icon, and YAML file icon under the theme brand folder.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-15 21:21:24 +07:00
nsrbandCursor cae308359a feat(scripts): add sidecar icons and tags in the admin UI
Serve optional PNG/JPG next to each script and show meta tags in lists, cards, and the editor.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-15 21:21:24 +07:00
nsrb bccbf551e3 feat(scripts): add previewConfigKey to various scripts and enhance UI components
- Added `previewConfigKey` metadata to multiple scripts including fetch-binary, fetch-html, fetch-http, fetch-rss-feed, fingerprint, get-secret, jsonata, ntfy, render-template, and send-email, improving configuration visibility.
- Updated the `FieldHelp` and `ScriptCard` components to utilize the new preview configuration, enhancing the user interface for displaying script metadata.
- Refactored `TriggerCard` and `WorkflowTestPanel` components to support expanded views, improving user interaction and accessibility of configuration details.
- Enhanced the `WorkflowVisualEditor` to manage test panel visibility more effectively.

This update improves the overall user experience by providing clearer context and configuration options for scripts and workflows.
2026-08-15 19:14:19 +07:00
nsrb 7fe5defc43 feat(workflows): add Gmail sending and testing workflows
- Introduced a new `send-gmail` workflow for sending emails via Gmail SMTP, with configurable parameters for recipients, subject, and body content.
- Added a `test-send-gmail` workflow to facilitate testing the email sending functionality with sample data.
- Implemented a `track` workflow to monitor Gojek trips, enhancing the server's capabilities for tracking and notifications.
- Updated the workflow management interface to include new workflows and improved organization of existing scripts.

Co-authored-by: Nasyarobby Putra <nasyarobby@gmail.com>
2026-08-15 18:33:13 +07:00