fix(mobile): require a reader for RPC result variants

This commit is contained in:
Jinwoo-H
2026-09-12 01:10:45 -04:00
parent 48829c295f
commit 7e1d0a998c
2 changed files with 8 additions and 1 deletions
@@ -1,6 +1,7 @@
import type { RpcClient } from './rpc-client'
import type { RpcMethodName } from './rpc-params-contract'
import { defineRpcOperation, runRpcOperation, startRpcOperation } from './rpc-operation'
import { rpcResultVariants } from './rpc-operation-result-reader'
import {
workspaceListAtBarrier,
workspaceListOrNull,
@@ -24,6 +25,9 @@ import type {
declare const client: RpcClient
// @ts-expect-error a variant reader combinator must have at least one reader
const _fenceEmptyVariantReaders = rpcResultVariants([])
// FENCE: probe-cannot-take-a-reader
export const fenceProbeWithReader: CapabilityProbeRpcDefinition<'worktree.ps', 'on-settle'> = {
name: 'fence.probeWithReader',
@@ -39,7 +39,10 @@ export function rpcResultVariant<Variant extends string, Schema extends z.ZodTyp
/** Tries each variant in declared order and takes the first that reads. */
export function rpcResultVariants<Variant extends string, Value>(
readers: readonly NamedRpcResultReader<Variant, Value>[]
readers: readonly [
NamedRpcResultReader<Variant, Value>,
...NamedRpcResultReader<Variant, Value>[]
]
): RpcCompatibleReader<unknown, Variant, Value> {
return (raw) => {
const issues: RpcDecodeIssue[] = []