Skip to content

feat: Transaction sequence runner with automatic sequence numbers - #168

Merged
dotunv merged 9 commits into
Savitura:mainfrom
ARAPHI20:feat/issue-154-feat-transaction-sequence-runner-with-automatic
Aug 31, 2026
Merged

feat: Transaction sequence runner with automatic sequence numbers#168
dotunv merged 9 commits into
Savitura:mainfrom
ARAPHI20:feat/issue-154-feat-transaction-sequence-runner-with-automatic

Conversation

@ARAPHI20

Copy link
Copy Markdown
Contributor

Overview

This PR adds a Transaction Sequence Runner to the Stellar composer that models multi-step flows, computes sequence numbers automatically so dependent operations run in order, submits steps sequentially with configurable stop/continue-on-failure, and persists per-step results — reducing manual sequence-number math and errors in complex multi-operation flows.

Related Issue

Changes

🧩 Transaction Sequence Runner

  • [ADD] apps/api/src/modules/composer/dto/transaction-sequence.dto.ts

    • Defines sequence payloads: steps, operations, source account, dependency references, and stopOnFailure.
    • Validates dependency references (e.g., previous step's resulting account) before submission.
  • [ADD] apps/api/src/modules/composer/entities/transaction-sequence-run.entity.ts

    • Persists each run with step index, transaction hash, status, and next sequence number.
  • [ADD] apps/api/src/database/migrations/1786000000000-create-transaction-sequence.ts

    • Creates the transaction_sequence_run table for sequence-run history.
  • [MODIFY] Sequence execution engine

    • apps/api/src/modules/composer/composer.service.ts — fetches current sequence and increments per step for automatic numbering; submits steps in order; honors stop/continue-on-failure; resolves dependencies to prior step outputs.
    • apps/api/src/modules/composer/composer.controller.ts — exposes create/run/history endpoints and per-step result retrieval.
    • apps/api/src/modules/composer/composer.module.ts — wires the new DTO, entity, and service.
  • [MODIFY] Composer UI / client

    • apps/web/src/components/tools/composer/index.tsx — adds Transaction Sequence mode with multi-step editor, dependency picker, stop-on-failure toggle, and per-step result display.
    • apps/web/src/lib/composer-api.ts — adds createSequence, runSequence, and getSequenceHistory client methods.
  • [ADD] apps/api/src/modules/composer/__tests__/transaction-sequence.service.test.ts

    • Coverage for correct sequence numbering, stop/continue on failure, dependency resolution, and history persistence.

Verification Results

npm test -- apps/api/src/modules/composer/__tests__/transaction-sequence.service.test.ts
✅ 16/16 passed

Live acceptance check:
✅ Sequence numbers computed automatically (current seq + 1 per step)
✅ Stop-on-failure halts at first failed step
✅ Continue-on-failure submits remaining steps and reports all statuses
✅ Dependency references resolved from prior step outputs
✅ Sequence runs persisted to history with per-step hash/status/next sequence
Acceptance Criteria Status
Users can add multiple transactions to a sequence ✅ Multi-step editor with add/remove/reorder in composer
Sequence numbers are computed automatically so steps run in order ✅ Current seq fetched and incremented per step
User can choose stop-on-failure vs continue-on-failure ✅ Per-run toggle in API and UI
Each step's result (hash, status, next sequence) is reported ✅ Per-step result rows after submission
Dependent sources can reference the prior step's output ✅ Dependency picker resolves prior-step accounts
Sequence runs are persisted to history transaction_sequence_run table + history endpoint
Validation rejects invalid dependency references before running ✅ Pre-flight validation rejects missing/circular refs
Tests cover: correct sequence numbering, stop/continue on failure, dependency resolution, history persistence ✅ 16 tests passing

Closes #154

@drips-wave

drips-wave Bot commented Aug 31, 2026

Copy link
Copy Markdown

@ARAPHI20 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@dotunv
dotunv merged commit 8f2be36 into Savitura:main Aug 31, 2026
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.

feat: Transaction sequence runner with automatic sequence numbers

2 participants