Repository navigation
v0.1.1
v0.1.1
Bug Fixes
-
Batch retry not dispatching items: Fixed a critical issue where "Retry Failed Items" and "Retry All" triggered from the monitor UI had no effect. The root cause was that the
EventBatchRetryingevent published by the API only reached Redis Pub/Sub but never arrived at theOrchestratorActorthrough the Hollywood actor network. TheactorDispatchernow forwards orchestrator-relevant events (batch.retrying,workflow.retrying) directly to the orchestrator singleton viaDomainEventMsg. -
Batch item jobs stuck in "pending" status: Individual jobs spawned by a batch showed as "pending" in the Jobs tab even after successful completion. The
CompleteRunpipeline only persisted the Run record to history — it never updated the parent Job record's status. TheEventBridgeActornow performs a best-effort CAS update on the Job record after each run completes, setting its status tocompletedorfailedaccordingly.
New Feature
-
APIService— transport-agnostic service layer: The monitor API has been refactored into a two-layer architecture:APIService: Contains all business logic with no HTTP dependency. Methods acceptcontext.Contextand typed parameters, returning data +error(with*ApiErrorcarrying status codes). Covers Jobs, Schedules, Nodes, Runs, History, DLQ, Workflows, Batches, Groups, Queues, Stats, and all Bulk operations.API: A thin HTTP wrapper that parses requests, delegates toAPIService, and writes JSON responses.
This enables users to compose
APIServicewith custom HTTP handlers, gRPC services, or any other transport:svc := monitor.NewAPIService(store, dispatcher, logger) // Use with default HTTP handlers: api := monitor.NewAPI(svc) // Or build your own: http.HandleFunc("/my-endpoint", func(w http.ResponseWriter, r *http.Request) { jobs, total, err := svc.ListJobs(r.Context(), filter) // ... })
-
Exported WebSocket types:
WSClient,NewWSClient(), andHandleWebSocket()are now exported, allowing integration of the real-time event WebSocket endpoint into custom server setups.
Other
- Fixed README typo.
- Changed default config parse path.
- Added
mainbinary to.gitignore.