Skip to content

refactor(automation): organize runtime and execution services - #3075

Merged
ryanweiler92 merged 4 commits into
devfrom
feat/automation-refactoring
Oct 2, 2026
Merged

ryanweiler92 merged 4 commits into
devfrom
feat/automation-refactoring

Conversation

@ppatel9703

@ppatel9703 ppatel9703 commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Description

Organizes the Automation backend by owned responsibility and completes the server contracts used by the updated authoring and run experience. Execution, permissions, SQL routing, and engine guardrails remain server-owned. Row-shaped node output reuses the run-owned SEMOSS Insight and standard frame behavior instead of introducing a separate Automation data service.

Changes Made

  • Split Automation classes into focused agent, definition, project, run, and utils packages, with package-level AGENTS.md guidance.
  • Renamed ambiguous implementation classes to match their ownership, including AutomationProjectService, AutomationRunStore, and AutomationRunRegistry.
  • Extended generated-node validation and source rendering for supported database, model, storage, vector, function, agent, and Jev options.
  • Kept the database-query result limit in the Automation node contract while preserving the existing shared SqlQuery implementation unchanged. Database-specific offsets remain part of the user's SQL when needed.
  • Added explicit Jev choice and Yes/No route validation, confidence fallback behavior, and stable control ports.
  • Registered non-empty row-shaped node results as standard SEMOSS frames by the node's output variable in the run-owned execution Insight.
  • Returned the execution Insight ID and frame noun from GetAutomationRun only while that project-owned run workspace remains available.
  • Preserved durable run history and saved output previews while allowing the UI to page live frame data through existing frame reactors.
  • Kept trace-linked child-agent review/resume state connected to Automation run history and startup recovery.
  • Reorganized focused Automation unit tests alongside the packages that own the behavior.
  • Merged the latest dev changes and reconciled the renamed Automation run-store tests with the current JDBC utilities.

How to Test

  1. Create or open an Automation and add a database-query node with a result limit.
  2. Run it and confirm the query follows configured database permissions and guardrails and respects the result limit.
  3. If database paging is needed, include the database's supported offset syntax directly in the SQL and confirm the shared SqlQuery behavior remains unchanged.
  4. Confirm non-empty row-shaped output is registered under the node's output variable and appears as a frame while the execution Insight remains active.
  5. Confirm non-tabular output and closed historical workspaces continue to use the saved result preview.
  6. Test a Jev choice decision and a Yes/No decision with every route and the low-confidence fallback connected.
  7. Test an agent node that pauses for input, resolve the request, and confirm the Automation resumes.
  8. Restart the backend and confirm stale active runs become interrupted rather than remaining indefinitely active.

Verification

  • Snyk PR check: passed.
  • Automation flows were exercised through the paired UI PR, including database output, Jev routing, model/media input, agent review, and historical-run inspection.
  • Python Automation runtime syntax was checked during implementation.
  • Latest dev merged without unresolved files; renamed run-store test references were reconciled.
  • No local Maven command was run.

Notes

  • The 47-file count is primarily Automation package moves/renames plus their import, guidance, and test updates.
  • AbstractSqlQueryReactor is not changed by this PR.
  • SMSSWebWatcher only updates the Automation run-store import and startup method references required by the package move; watcher behavior is unchanged.
  • This PR does not add a parallel Automation data service or change storage-engine behavior.
  • Frame-backed display data follows the execution Insight lifetime by design. Durable saved output previews remain in run history; durable large artifacts remain a separate lifecycle decision.
  • Paired UI PR: feat(automation): improve node authoring and run UX semoss-ui#3698.

@snyk-io

snyk-io Bot commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

✅ Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
✅ Open Source Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@ppatel9703
ppatel9703 marked this pull request as ready for review October 2, 2026 16:05
@ppatel9703
ppatel9703 requested a review from a team as a code owner October 2, 2026 16:05
@ryanweiler92
ryanweiler92 merged commit 6c8b408 into dev Oct 2, 2026
5 checks passed
@ryanweiler92
ryanweiler92 deleted the feat/automation-refactoring branch October 2, 2026 17:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants