feat(agentcompat): add scoped IO stream capabilities

Co-authored-by: naiba/CloudCode <hi+cloudcode@nai.ba>
This commit is contained in:
naiba
2026-07-20 04:27:33 +00:00
co-authored by naiba/CloudCode
parent c756ef9385
commit 26e92da33b
31 changed files with 3540 additions and 0 deletions
@@ -0,0 +1,64 @@
//go:build !agentcompat
package rpc
import (
"context"
"errors"
"reflect"
"testing"
"github.com/stretchr/testify/require"
)
func TestAgentCompatCapabilityDefaultBuildHasNoRegistryState(t *testing.T) {
handler := NewNezhaHandler()
state := reflect.ValueOf(handler.agentCompatCapabilities)
require.Equal(t, 0, state.NumField())
}
func TestAgentCompatCapabilityDefaultBuildUsesStableUnavailableAndNoopContracts(t *testing.T) {
handler := NewNezhaHandler()
registration := AgentCompatCapabilityRegistration{}
capability, err := handler.RegisterAgentCompatIOStreamCapability(context.Background(), registration)
require.Empty(t, capability.String())
require.ErrorIs(t, err, ErrAgentCompatCapabilityUnavailable)
access := AgentCompatCapabilityAccess{}
require.ErrorIs(t, handler.BindAgentCompatIOStreamCapability(AgentCompatCapabilityBinding{}), ErrAgentCompatCapabilityUnavailable)
_, err = handler.ConsumeAgentCompatNATCapability(access)
require.ErrorIs(t, err, ErrAgentCompatCapabilityUnavailable)
require.ErrorIs(t, handler.PublishAgentCompatNATStream(AgentCompatNATPublishHandle{}, AgentCompatNATPublication{}), ErrAgentCompatCapabilityUnavailable)
_, err = handler.WaitAgentCompatIOStreamCapability(context.Background(), access)
require.True(t, errors.Is(err, ErrAgentCompatCapabilityUnavailable))
require.NoError(t, handler.CancelAgentCompatIOStreamCapability(access))
require.NoError(t, handler.UnregisterAgentCompatIOStreamCapability(access))
}
func TestAgentCompatNATCapabilityForProfileDefaultBuildIsUnavailableAndNoOp(t *testing.T) {
handler := NewNezhaHandler()
access, handle, err := handler.ConsumeAgentCompatNATCapabilityForProfile("not-a-capability", 1, 2)
require.Equal(t, AgentCompatCapabilityAccess{}, access)
require.Equal(t, AgentCompatNATPublishHandle{}, handle)
require.ErrorIs(t, err, ErrAgentCompatCapabilityUnavailable)
}
func TestAgentCompatNATAtomicStartDefaultBuildIsUnavailableAndStateless(t *testing.T) {
handler := NewNezhaHandler()
publicationOwned, err := handler.StartAgentCompatNATStream(AgentCompatNATPublishHandle{}, 0)
require.False(t, publicationOwned)
require.ErrorIs(t, err, ErrAgentCompatCapabilityUnavailable)
require.Equal(t, 0, handler.StreamCount())
}
func TestAgentCompatNATLeaseDefaultBuildIsUnavailableAndStateless(t *testing.T) {
handler := NewNezhaHandler()
lease, err := handler.CreateAgentCompatNATStream(AgentCompatNATPublishHandle{}, "known")
require.Nil(t, lease)
require.ErrorIs(t, err, ErrAgentCompatCapabilityUnavailable)
require.NoError(t, handler.CloseAgentCompatNATStreamLease(nil))
require.Equal(t, 0, handler.StreamCount())
}