mirror of
https://github.com/stablyai/orca.git
synced 2026-10-31 09:07:40 +00:00
* fix(ssh): flag a macOS host whose managed server outlived its launching SSH session macOS Local Network privacy pins a nohup-launched orcad to the sshd-session that started it; once that session ends, its terminals lose LAN access (#25934). A macOS launch now records that session, a connect reports it when it proved exited, and the host status offers a restart when no terminals are running. * fix(ssh): retire the idle terminal daemon on a launch-session restart * fix(ssh): keep the fence on an unsettled restart stop, and report a restart that can't hold its session * fix(ssh): carry the launch session forward while the terminal daemon survives; never redial for the check * chore(i18n): add the launch-session warning and restart strings to the English catalog
78 lines
4.1 KiB
TypeScript
78 lines
4.1 KiB
TypeScript
/** Managed orcad servers over SSH; desktop-only, so web clients leave it undefined. */
|
|
import { ipcRenderer } from 'electron'
|
|
import type {
|
|
OrcadDeltaMovePreview,
|
|
OrcadDeltaMoveResult,
|
|
OrcadManagedCancelStopResult,
|
|
OrcadManagedConversionResult,
|
|
OrcadManagedDeployResult,
|
|
OrcadManagedForgetResult,
|
|
OrcadManagedPendingMigrationRow,
|
|
OrcadManagedRecoveryResult,
|
|
OrcadManagedRestartResult,
|
|
OrcadManagedRollbackResult,
|
|
OrcadManagedRuntimeStatus,
|
|
OrcadManagedStopResult
|
|
} from '../../shared/orcad-managed-runtime'
|
|
import type { PublicKnownRuntimeEnvironment } from '../../shared/runtime-environments'
|
|
import type {
|
|
RuntimeSshAccessLinkRequest,
|
|
RuntimeSshAccessUnlinkRequest
|
|
} from '../../shared/runtime-ssh-access'
|
|
|
|
export type ManagedOrcadPreloadApi = {
|
|
deploy: (args: {
|
|
name: string
|
|
sshTargetId: string
|
|
force?: boolean
|
|
}) => Promise<OrcadManagedDeployResult>
|
|
getStatus: (args: { selector: string }) => Promise<OrcadManagedRuntimeStatus>
|
|
update: (args: { selector: string; force?: boolean }) => Promise<OrcadManagedDeployResult>
|
|
rollback: (args: { selector: string }) => Promise<OrcadManagedRollbackResult>
|
|
recover: (args: {
|
|
selector: string
|
|
/** Restore the snapshot over state a rejected build changed; see ORCAD_RECOVERY_CHANGED_STATE_CODE. */
|
|
acceptChangedState?: boolean
|
|
}) => Promise<OrcadManagedRecoveryResult>
|
|
/** Restarts from this client's SSH session; refused while terminals run. */
|
|
restart: (args: { selector: string }) => Promise<OrcadManagedRestartResult>
|
|
stop: (args: { selector: string }) => Promise<OrcadManagedStopResult>
|
|
cancelStop: (args: { selector: string }) => Promise<OrcadManagedCancelStopResult>
|
|
forget: (args: { selector: string }) => Promise<OrcadManagedForgetResult>
|
|
linkSshAccess: (args: RuntimeSshAccessLinkRequest) => Promise<PublicKnownRuntimeEnvironment>
|
|
unlinkSshAccess: (args: RuntimeSshAccessUnlinkRequest) => Promise<PublicKnownRuntimeEnvironment>
|
|
convertSshHost: (args: {
|
|
sshTargetId: string
|
|
name: string
|
|
}) => Promise<OrcadManagedConversionResult>
|
|
listPendingMigrations: () => Promise<OrcadManagedPendingMigrationRow[]>
|
|
previewDeltaMove: (args: { sshTargetId: string }) => Promise<OrcadDeltaMovePreview>
|
|
moveDelta: (args: { sshTargetId: string }) => Promise<OrcadDeltaMoveResult>
|
|
keepServerVersion: (args: { sshTargetId: string }) => Promise<void>
|
|
/** "Move anyway": the next connect leaves what can't move on this desktop. */
|
|
allowMoveLeavingBehind: (args: { sshTargetId: string }) => Promise<void>
|
|
}
|
|
|
|
export const managedOrcadApi: ManagedOrcadPreloadApi = {
|
|
deploy: (args) => ipcRenderer.invoke('runtimeEnvironments:deployOrcad', args),
|
|
getStatus: (args) => ipcRenderer.invoke('runtimeEnvironments:getOrcadStatus', args),
|
|
update: (args) => ipcRenderer.invoke('runtimeEnvironments:updateOrcad', args),
|
|
rollback: (args) => ipcRenderer.invoke('runtimeEnvironments:rollbackOrcad', args),
|
|
recover: (args) => ipcRenderer.invoke('runtimeEnvironments:recoverOrcad', args),
|
|
restart: (args) => ipcRenderer.invoke('runtimeEnvironments:restartOrcad', args),
|
|
stop: (args) => ipcRenderer.invoke('runtimeEnvironments:stopOrcad', args),
|
|
cancelStop: (args) => ipcRenderer.invoke('runtimeEnvironments:cancelOrcadStop', args),
|
|
forget: (args) => ipcRenderer.invoke('runtimeEnvironments:forgetOrcad', args),
|
|
linkSshAccess: (args) => ipcRenderer.invoke('runtimeEnvironments:linkSshAccess', args),
|
|
unlinkSshAccess: (args) => ipcRenderer.invoke('runtimeEnvironments:unlinkSshAccess', args),
|
|
convertSshHost: (args) =>
|
|
ipcRenderer.invoke('runtimeEnvironments:convertSshHostToManagedOrcad', args),
|
|
listPendingMigrations: () => ipcRenderer.invoke('runtimeEnvironments:listPendingOrcadMigrations'),
|
|
previewDeltaMove: (args) => ipcRenderer.invoke('runtimeEnvironments:previewOrcadDeltaMove', args),
|
|
moveDelta: (args) => ipcRenderer.invoke('runtimeEnvironments:moveOrcadDelta', args),
|
|
keepServerVersion: (args) =>
|
|
ipcRenderer.invoke('runtimeEnvironments:keepOrcadServerVersion', args),
|
|
allowMoveLeavingBehind: (args) =>
|
|
ipcRenderer.invoke('runtimeEnvironments:allowOrcadMoveLeavingBehind', args)
|
|
}
|