mirror of
https://github.com/stablyai/orca.git
synced 2026-11-04 11:07:42 +00:00
* fix(orcad-migration): a source fenced on a manifest no request can carry can be aborted by its identity A desktop that fenced a manifest just under the export cap before #30836 could never send its abort: every catalog request carries the whole manifest and refuses it before sending. The abort now asks the server by migration id and digest instead (orcad.migration.abortCatalogByReference, behind a new capability), and releases only on the server's durable absent answer. A committed server still refuses the release. Co-authored-by: Claude <noreply@anthropic.com> * test(orcad-migration): cover the durable abort by reference and its RPC method Co-authored-by: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
34 lines
2.0 KiB
TypeScript
34 lines
2.0 KiB
TypeScript
// Why: older hosts answer orcad.terminalCensus with method-not-found, so a client asks only when
|
|
// this is advertised and otherwise treats the census as unverifiable, never as zero.
|
|
export const ORCAD_TERMINAL_CENSUS_RUNTIME_CAPABILITY = 'orcad.terminal-census.v1' as const
|
|
|
|
// Why: an older host answers orcad.migration.* with method-not-found; a client stages, commits or
|
|
// reads a catalog only on a host advertising this, and treats its absence as a refusal.
|
|
export const ORCAD_MIGRATION_CATALOG_RUNTIME_CAPABILITY = 'orcad.migration-catalog.v1' as const
|
|
|
|
// Why: older hosts have no orcad.migration.abortCatalogByReference. A source fenced on a manifest
|
|
// no request can carry (before #30836 refused one) can be released only through it.
|
|
export const ORCAD_MIGRATION_CATALOG_ABORT_BY_REFERENCE_RUNTIME_CAPABILITY =
|
|
'orcad.migration-catalog-abort-by-reference.v1' as const
|
|
|
|
// Why per kind: an older destination drops `source.kind` and cannot tell a WSL source from an SSH
|
|
// one, so a client sends a non-SSH manifest only to a host advertising that kind. Not advertised
|
|
// until a destination parses `source.kind: 'local-wsl'`.
|
|
export const ORCAD_MIGRATION_LOCAL_WSL_SOURCE_RUNTIME_CAPABILITY =
|
|
'orcad.migration-source.local-wsl.v1' as const
|
|
|
|
// Why: older hosts have no orcad.migration.stageBlobChunk. The channel alone carries nothing: each
|
|
// blob kind also needs its own `orcad.migration-blob.<kind>.v1`, advertised once installed.
|
|
export const ORCAD_MIGRATION_BLOB_CHANNEL_RUNTIME_CAPABILITY = 'orcad.migration-blob.v1' as const
|
|
|
|
// Why: older hosts have no `accounts.setHostLaunchEnv`; a desktop that owns a host's accounts (a
|
|
// WSL host's) pushes them only to a host advertising this.
|
|
export const HOST_ACCOUNT_LAUNCH_ENV_RUNTIME_CAPABILITY = 'accounts.host-launch-env.v1' as const
|
|
|
|
export const ORCAD_RUNTIME_CAPABILITIES = [
|
|
ORCAD_TERMINAL_CENSUS_RUNTIME_CAPABILITY,
|
|
ORCAD_MIGRATION_CATALOG_RUNTIME_CAPABILITY,
|
|
ORCAD_MIGRATION_CATALOG_ABORT_BY_REFERENCE_RUNTIME_CAPABILITY,
|
|
HOST_ACCOUNT_LAUNCH_ENV_RUNTIME_CAPABILITY
|
|
] as const
|