fix: prevent CLI hang on invalid config JSON syntax #7828
+94
−13
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.
What does this PR do?
Fixes #7789
Observations:
opencode runexits with error since it runs on the main threadopencoderuns the TUI on the main thread and spawns worker threads for the core business logicAlternatives Considered
Rpc.listen()and introduce a newrpc.errormessage type. Rejected because it required changes to the RPC protocol and didn't seem like that was in scopeTuiThreadCommand.handler()before the worker starts. Rejected because config loading is tightly coupled toInstance.state()which requires the worker context, and duplicating the file search logic would be heavy.Proposed Solution
Update the subscription logic for the TUI to handle the case where the worker returns
result.subscribed = falseinstead of always returningtrue. Ifresult.subscribed == false, we handleConfigJsonErrorandConfigInvalidErrorand propagate that error higher up the call stack.How did you verify your code works?