refactor: tighten daemon output helpers#892
Merged
Merged
Conversation
Size Report
Startup median (7 runs, lower is better):
Top changed chunks:
|
|
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.
Summary
Tightens daemon-output parsing by replacing helper-style
readRecord/readRecordArraywith domain types for screenshot, batch, observability network/log output, runtime hints, and target shutdown results.Restores one shared
isRecordguard for real JSON/unknown boundaries, so repeated inline object predicates are gone without reintroducingreadRecord. Arrays remain rejected for daemon record data because record contracts should be JSON objects, not arrays.Keeps observability resilient where the formatter still trusts daemon output: missing network
entriesrenders as no entries, and nullable display fields are skipped instead of printingfield=null.Adds a shared
TargetShutdownResultcontract sosessions.closeandapps.closeno longer expose raw shutdown records, and the daemon-side shutdown result aliases the same public shape.Touched files: 32. Scope stayed in daemon/client output typing, batch projection/output, screenshot parsing, perf/debug-symbol/xctestrun JSON readers, and AGENTS guidance.
Validation
Static checks passed with direct project binaries: TypeScript no-emit, OXLint on touched files, targeted Vitest batch/observability/client coverage (6 files, 63 tests),
rslib build, andfallow audit --base origin/main.Cleanup scans confirmed
readRecord/readRecordArrayare gone, old batch/networkunknownformatter signatures are not present, and the remainingisRecordcalls are deliberate JSON/plist/daemon-response boundaries. Three explorer subagents independently audited the remainingisRecordusage by area; no uncertain cases were left open.