mirror of
https://github.com/NVIDIA/OpenShell.git
synced 2026-10-16 05:20:22 +08:00
* feat(extensions)!: normalize protocol negotiation Closes #3057 Introduce a shared extension handshake, enforce protocol and capability compatibility across extension families, and expose immutable negotiated snapshots through gateway info and the Go SDK. Signed-off-by: Seth Jennings <sjenning@redhat.com> * fix(credentials): fail fast on negotiation errors Signed-off-by: Seth Jennings <sjenning@redhat.com> * fix(extensions): validate gateway handshake metadata Signed-off-by: Seth Jennings <sjenning@redhat.com> * fix(go-sdk): re-export extension kind constants Signed-off-by: Seth Jennings <sjenning@redhat.com> * fix(extensions): fail fast on credential handshake rejection Signed-off-by: Seth Jennings <sjenning@redhat.com> --------- Signed-off-by: Seth Jennings <sjenning@redhat.com>
35 lines
1.1 KiB
Protocol Buffer
35 lines
1.1 KiB
Protocol Buffer
// SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
syntax = "proto3";
|
|
|
|
package openshell.extension.v1;
|
|
|
|
// Version of an OpenShell extension protocol contract.
|
|
//
|
|
// The major version changes when peers cannot safely interoperate. Minor
|
|
// versions add optional fields or capabilities and remain compatible when both
|
|
// peers' required capabilities are satisfied.
|
|
message ProtocolVersion {
|
|
uint32 major = 1;
|
|
uint32 minor = 2;
|
|
}
|
|
|
|
// Non-secret metadata exchanged by the gateway and an extension before use.
|
|
message PeerMetadata {
|
|
// Extension-family protocol contract version, distinct from the build.
|
|
ProtocolVersion protocol_version = 1;
|
|
|
|
// Stable human-readable implementation identity, such as "openshell/docker".
|
|
string implementation_name = 2;
|
|
|
|
// Implementation or build version used only for diagnostics.
|
|
string implementation_version = 3;
|
|
|
|
// Optional namespaced capabilities this peer understands.
|
|
repeated string supported_capabilities = 4;
|
|
|
|
// Capabilities that the opposite peer must advertise.
|
|
repeated string required_capabilities = 5;
|
|
}
|