supsrc 2025-09-21
Introduced workflow engine, decomposed feed table, added atomic save detection and Makefile
40 files · 4,235+ · 1,416-

Workflow execution engine with composable steps

7 files changed
  • __init__.py Workflow package initialization
  • executor.py Workflow execution engine (344 lines)
  • steps.py Workflow step definitions (283 lines)
  • git_operations.py Git operations step (62 lines)
  • llm_utils.py LLM integration utilities (67 lines)
  • test_runner.py Test execution step (67 lines)
  • action_handler.py Significantly reduced from ~548 lines
  • Created runtime/workflow/ package with executor, steps, git_operations, llm_utils, and test_runner instantiate behavioral
    3 files
    • executor.py
    • steps.py
    • git_operations.py
  • Replaces monolithic action handler with composable workflow steps, significantly reducing action_handler.py decouple internal
    1 file
    • action_handler.py

Atomic save detection for editor compatibility

1 file changed
  • atomic_detection.py Detects atomic save patterns from Vim, Emacs, JetBrains IDEs (115 lines)
  • Added events/atomic_detection.py (115 lines) for detecting atomic save patterns (write-to-temp-then-rename) from editors like Vim, Emacs, and JetBrains IDEs harden behavioral
    1 file
    • atomic_detection.py
  • Improved event buffering to account for atomic save sequences harden internal
    1 file
    • atomic_detection.py

Makefile for common development tasks

1 file changed
  • Makefile Development task targets (109 lines) for test, lint, format, build
  • Added Makefile (109 lines) with targets for common development tasks (test, lint, format, build) baseline internal
    1 file
    • Makefile

Feed table decomposed into package

4 files changed
  • __init__.py Feed table package initialization
  • widget.py Feed table widget (149 lines)
  • formatters.py Event formatters (308 lines)
  • file_utils.py File utilities (121 lines)
  • Decomposed events/feed_table.py (489 lines) into events/feed_table/ package with widget.py, formatters.py, and file_utils.py decouple internal
    3 files
    • widget.py
    • formatters.py
    • file_utils.py

Event buffer improvements and configuration updates

4 files changed
  • buffer_events.py Buffer-specific event types (88 lines)
  • buffer.py Improved grouping and deduplication
  • defaults.py New config defaults
  • models.py Config model improvements
  • Added events/buffer_events.py (88 lines) for buffer-specific event types and improved grouping logic decouple behavioral
    2 files
    • buffer_events.py
    • buffer.py
  • Added new config defaults and model improvements for workflow and event processing baseline internal
    2 files
    • defaults.py
    • models.py

Workflow tests and dependency updates

6 files changed
  • test_executor.py Workflow executor tests (274 lines)
  • test_git_operations.py Git operations tests (118 lines)
  • test_llm_utils.py LLM utils tests (181 lines)
  • test_steps.py Workflow steps tests (316 lines)
  • test_test_runner.py Test runner tests (169 lines)
  • uv.lock Large lock file refresh (1317 lines of changes)
  • Added comprehensive workflow tests – executor (274 lines), git_operations (118 lines), llm_utils (181 lines), steps (316 lines), and test_runner (169 lines) qualify internal
    3 files
    • test_executor.py
    • test_steps.py
    • test_llm_utils.py
  • Large uv.lock refresh (1317 lines of changes) with updated dependencies baseline internal
    1 file
    • uv.lock