feat(auto): live engine events, forward-compatible decoding, process control - #626
Merged
Merged
Conversation
…control Deliver Pulumi engine events as they happen instead of only after the CLI exits, and stop a successful deployment from being reported as a failure. - OnEvent / EventLog / OnProcessStart options on preview/up/refresh/destroy - new EventLogs: tails the --event-log file on a daemon thread; parse errors are collected into `parseErrors` instead of failing the operation - Other(String) on DiffKind/ProgressType/OpType for unknown wire values; fix OpTypeFormat.write to emit JsString so it survives as a Map key - OperationFailedError keeps diagnostics/failures on the failure path, where the log was previously never parsed - ChildProcess exposes the pulumi process; interrupt() sends SIGINT, the only signal pulumi treats as a graceful cancel - shell.apply reimplemented as spawn + collect + join (from os-lib's call) - results gained resourcePreEvents/resourceOperations/failures/parseErrors tailf 0.1.0 -> 0.2.0, fixes a lot of tailf issues
There was a problem hiding this comment.
Pull request overview
Adds live Pulumi engine-event streaming, process cancellation controls, resilient event decoding, and richer lifecycle results.
Changes:
- Adds event-log streaming and process-start callbacks to lifecycle operations.
- Preserves unknown wire values and failure diagnostics.
- Reworks subprocess execution and expands tests.
Reviewed changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
auto/project.scala |
Updates event-tailing and logging dependencies. |
auto/src/main/scala/besom/auto/internal/AutoError.scala |
Adds structured operation failures. |
auto/src/main/scala/besom/auto/internal/ChildProcess.scala |
Exposes process control operations. |
auto/src/main/scala/besom/auto/internal/EventLogs.scala |
Implements event-log parsing and live delivery. |
auto/src/main/scala/besom/auto/internal/Events.scala |
Preserves unknown event enum values. |
auto/src/main/scala/besom/auto/internal/shell.scala |
Adds process-start callbacks and process collection. |
auto/src/main/scala/besom/auto/internal/Stack.scala |
Integrates events, process callbacks, and richer results. |
auto/src/test/scala/besom/auto/internal/EventLogsTest.scala |
Tests parsing and live event delivery. |
auto/src/test/scala/besom/auto/internal/LocalWorkspaceTest.scala |
Tests live events and resource hierarchy. |
auto/src/test/scala/besom/auto/internal/OptionsTest.scala |
Tests new lifecycle options. |
auto/src/test/scala/besom/auto/internal/ShellTest.scala |
Tests output collection and process control. |
auto/src/test/scala/besom/auto/internal/StackTest.scala |
Tests forward-compatible event decoding. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Deliver Pulumi engine events as they happen instead of only after the CLI exits, and stop a successful deployment from being reported as a failure.
parseErrorsinstead of failing the operationtailf 0.1.0 -> 0.2.0, fixes a lot of tailf issues