mirror of
https://github.com/stablyai/orca.git
synced 2026-10-31 00:57:45 +00:00
refactor(rpc): name the terminal.subscribe modules (#27444)
Co-authored-by: m4air <m4air@Mac.localdomain>
This commit is contained in:
+4
-4
@@ -4,10 +4,10 @@ import {
|
||||
decodeTerminalStreamText
|
||||
} from '../../../../../shared/terminal-stream-protocol'
|
||||
import { isTerminalInputLockedForClient, sendTerminalStreamInput } from './terminal-input-delivery'
|
||||
import type { TerminalSubscriptionArgs } from './terminal-legacy-subscription-types'
|
||||
import type { TerminalSubscriptionArgs } from './terminal-subscribe-types'
|
||||
import { updateViewportForClient } from './terminal-viewport-update'
|
||||
|
||||
type LegacyBinaryControlState = {
|
||||
type TerminalSubscribeBinaryControlState = {
|
||||
isClosed: () => boolean
|
||||
isBuffering: () => boolean
|
||||
setRegisteredRemoteDesktopDriver: () => void
|
||||
@@ -17,11 +17,11 @@ type LegacyBinaryControlState = {
|
||||
sendFrame: (opcode: TerminalStreamOpcode, payload?: Uint8Array<ArrayBufferLike>) => void
|
||||
}
|
||||
|
||||
export function registerLegacyBinaryControlFrames(
|
||||
export function registerTerminalSubscribeBinaryControlFrames(
|
||||
args: TerminalSubscriptionArgs,
|
||||
streamId: number,
|
||||
remoteDesktopSubscriptionKey: string,
|
||||
controls: LegacyBinaryControlState
|
||||
controls: TerminalSubscribeBinaryControlState
|
||||
): () => void {
|
||||
const {
|
||||
params,
|
||||
+5
-5
@@ -10,13 +10,13 @@ import {
|
||||
} from './terminal-snapshot-publication'
|
||||
import { updateViewportForClient } from './terminal-viewport-update'
|
||||
import type {
|
||||
LegacyBinarySubscriptionState,
|
||||
TerminalSubscribeBinaryState,
|
||||
TerminalSubscriptionArgs
|
||||
} from './terminal-legacy-subscription-types'
|
||||
} from './terminal-subscribe-types'
|
||||
|
||||
export function activateLegacyBinarySubscription(
|
||||
export function activateTerminalSubscribeBinaryLive(
|
||||
args: TerminalSubscriptionArgs,
|
||||
state: LegacyBinarySubscriptionState
|
||||
state: TerminalSubscribeBinaryState
|
||||
): void {
|
||||
const { params, runtime, emit, ptyId, clientId, isMobile, supportsDesktopViewportClaims } = args
|
||||
const lateRendererReady = state.lateRendererReadyPromise
|
||||
@@ -152,7 +152,7 @@ export function activateLegacyBinarySubscription(
|
||||
).catch(() => {})
|
||||
}
|
||||
|
||||
// Legacy fit-override-changed for non-mobile (desktop) subscribers
|
||||
// fit-override-changed for non-mobile (desktop) subscribers
|
||||
state.unsubscribeFit = !isMobile
|
||||
? runtime.subscribeToFitOverrideChanges(ptyId, (event) => {
|
||||
const mode =
|
||||
+6
-6
@@ -11,15 +11,15 @@ import {
|
||||
trimPendingOutputCoveredBySnapshot
|
||||
} from './terminal-stream-replay'
|
||||
import type {
|
||||
LegacyBinarySubscriptionState,
|
||||
TerminalSubscribeBinaryState,
|
||||
TerminalSubscriptionArgs
|
||||
} from './terminal-legacy-subscription-types'
|
||||
} from './terminal-subscribe-types'
|
||||
|
||||
const MOBILE_RENDERER_MOUNT_READY_TIMEOUT_MS = 3_000
|
||||
|
||||
export async function publishLegacyBinaryInitialSnapshot(
|
||||
export async function publishTerminalSubscribeBinarySnapshot(
|
||||
args: TerminalSubscriptionArgs,
|
||||
state: LegacyBinarySubscriptionState
|
||||
state: TerminalSubscribeBinaryState
|
||||
): Promise<void> {
|
||||
const {
|
||||
params,
|
||||
@@ -38,7 +38,7 @@ export async function publishLegacyBinaryInitialSnapshot(
|
||||
if (isMobile && clientId) {
|
||||
await registration.addMobilePresence(ptyId, clientId, params.viewport)
|
||||
} else if (clientId && params.viewport) {
|
||||
// Why: legacy subscribe records geometry without taking ownership; only an explicit activity/claim frame may suppress the host.
|
||||
// Why: terminal.subscribe records geometry without taking ownership; only an explicit activity/claim frame may suppress the host.
|
||||
state.registeredRemoteDesktopDriver = true
|
||||
state.pendingRemoteDesktopViewport = params.viewport
|
||||
}
|
||||
@@ -83,7 +83,7 @@ export async function publishLegacyBinaryInitialSnapshot(
|
||||
!rendererReady &&
|
||||
(rendererMountRequestedBeforePty || runtime.requestRendererTerminalTabMount(params.terminal))
|
||||
if (mountRequested) {
|
||||
// Why: an idle legacy PTY emits no later byte, so wait for a settle proving this remount completed before replaying its screen.
|
||||
// Why: an idle PTY emits no later byte, so wait for a settle proving this remount completed before replaying its screen.
|
||||
const mountWaitController = new AbortController()
|
||||
const abortMountWait = (): void => mountWaitController.abort()
|
||||
state.abortRendererMountWait = abortMountWait
|
||||
+9
-9
@@ -16,13 +16,13 @@ import { createTerminalOutputBatcher, type TerminalOutputBatcher } from './termi
|
||||
import { trimPendingOutputToBudget } from './terminal-stream-replay'
|
||||
import { allocateTerminalSubscriptionStreamId } from './terminal-subscription-stream-id'
|
||||
import type {
|
||||
LegacyBinarySubscriptionState,
|
||||
TerminalSubscribeBinaryState,
|
||||
TerminalSubscriptionArgs
|
||||
} from './terminal-legacy-subscription-types'
|
||||
} from './terminal-subscribe-types'
|
||||
import type { TerminalOutputChunk } from './terminal-stream-types'
|
||||
import { publishLegacyBinaryInitialSnapshot } from './terminal-legacy-subscribe-snapshot'
|
||||
import { activateLegacyBinarySubscription } from './terminal-legacy-subscribe-live'
|
||||
import { registerLegacyBinaryControlFrames } from './terminal-legacy-binary-control-frames'
|
||||
import { publishTerminalSubscribeBinarySnapshot } from './terminal-subscribe-binary-snapshot'
|
||||
import { activateTerminalSubscribeBinaryLive } from './terminal-subscribe-binary-live'
|
||||
import { registerTerminalSubscribeBinaryControlFrames } from './terminal-subscribe-binary-control-frames'
|
||||
const TERMINAL_QUERY_REPLAY_MAX_CHARS = 16 * 1024
|
||||
export async function runTerminalBinarySubscription(args: TerminalSubscriptionArgs): Promise<void> {
|
||||
const { runtime, registration, sendBinary, ptyId, clientId, isMobile } = args
|
||||
@@ -97,7 +97,7 @@ export async function runTerminalBinarySubscription(args: TerminalSubscriptionAr
|
||||
sendFrame(chunk.opcode ?? TerminalStreamOpcode.Output, chunk.bytes, chunk.seq)
|
||||
}
|
||||
})
|
||||
unregisterBinaryHandler = registerLegacyBinaryControlFrames(
|
||||
unregisterBinaryHandler = registerTerminalSubscribeBinaryControlFrames(
|
||||
args,
|
||||
streamId,
|
||||
remoteDesktopSubscriptionKey,
|
||||
@@ -164,7 +164,7 @@ export async function runTerminalBinarySubscription(args: TerminalSubscriptionAr
|
||||
releaseViewSubscriber()
|
||||
unsubscribeStreamData()
|
||||
}
|
||||
const state: LegacyBinarySubscriptionState = {
|
||||
const state: TerminalSubscribeBinaryState = {
|
||||
streamId,
|
||||
remoteDesktopSubscriptionKey,
|
||||
get closed() {
|
||||
@@ -257,10 +257,10 @@ export async function runTerminalBinarySubscription(args: TerminalSubscriptionAr
|
||||
streamClosed,
|
||||
sendFrame
|
||||
}
|
||||
await publishLegacyBinaryInitialSnapshot(args, state)
|
||||
await publishTerminalSubscribeBinarySnapshot(args, state)
|
||||
if (registration.released) {
|
||||
return
|
||||
}
|
||||
activateLegacyBinarySubscription(args, state)
|
||||
activateTerminalSubscribeBinaryLive(args, state)
|
||||
await streamClosed
|
||||
}
|
||||
+2
-2
@@ -3,7 +3,7 @@ import type { TerminalOutputBatcher } from './terminal-output-batcher'
|
||||
import { isTerminalReadPayloadIncomplete } from './terminal-stream-replay'
|
||||
import { serializeBudgetedMobileSnapshot } from './terminal-snapshot-publication'
|
||||
import { updateViewportForClient } from './terminal-viewport-update'
|
||||
import type { TerminalSubscriptionArgs } from './terminal-legacy-subscription-types'
|
||||
import type { TerminalSubscriptionArgs } from './terminal-subscribe-types'
|
||||
import { allocateTerminalSubscriptionStreamId } from './terminal-subscription-stream-id'
|
||||
|
||||
export async function runTerminalLeaseSubscription(args: TerminalSubscriptionArgs): Promise<void> {
|
||||
@@ -93,7 +93,7 @@ export async function runTerminalJsonSubscription(args: TerminalSubscriptionArgs
|
||||
const unsubscribeStreamData = runtime.subscribeToTerminalData(ptyId, (data) => {
|
||||
outputBatcher?.push(data)
|
||||
})
|
||||
// Why: the legacy JSON stream can feed a live xterm view, so register as a view subscriber; worst case is a withheld model reply, safer than a double reply.
|
||||
// Why: the terminal.subscribe JSON stream can feed a live xterm view, so register as a view subscriber; worst case is a withheld model reply, safer than a double reply.
|
||||
const releaseViewSubscriber = runtime.registerRemoteTerminalViewSubscriber(ptyId)
|
||||
unsubscribeData = () => {
|
||||
releaseViewSubscriber()
|
||||
@@ -1,12 +1,12 @@
|
||||
import { defineStreamingMethod } from '../../core'
|
||||
import { TerminalSubscribe } from '../../../../../shared/rpc-contract/terminal-stream-params'
|
||||
import { isTerminalReadPayloadIncomplete } from './terminal-stream-replay'
|
||||
import { runTerminalBinarySubscription } from './terminal-legacy-subscribe-binary'
|
||||
import { runTerminalBinarySubscription } from './terminal-subscribe-binary'
|
||||
import {
|
||||
runTerminalJsonSubscription,
|
||||
runTerminalLeaseSubscription
|
||||
} from './terminal-legacy-simple-subscriptions'
|
||||
import type { TerminalSubscriptionArgs } from './terminal-legacy-subscription-types'
|
||||
} from './terminal-subscribe-json-and-lease'
|
||||
import type { TerminalSubscriptionArgs } from './terminal-subscribe-types'
|
||||
import { registerTerminalSubscription } from './terminal-subscription-registration'
|
||||
|
||||
export const TERMINAL_SUBSCRIBE_METHODS = [
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ export type TerminalSubscriptionArgs = {
|
||||
serializerGenerationBeforeMobileFit: number
|
||||
}
|
||||
|
||||
export type LegacyBinarySubscriptionState = {
|
||||
export type TerminalSubscribeBinaryState = {
|
||||
readonly streamId: number
|
||||
readonly remoteDesktopSubscriptionKey: string
|
||||
closed: boolean
|
||||
Reference in New Issue
Block a user