feat(client): listStores / addStore / removeStore for the store manager
Some checks failed
Security / Security check (push) Failing after 2s

Regenerate the gRPC stubs for the new HubAdmin store-management RPCs and
wrap them in HubClient (returns StoreSource list / Add+RemoveStoreResponse)
so Studio can list and edit the module-store list from the GUI.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
flemming-it 2026-06-18 15:49:23 +02:00
parent 2d87030945
commit d07a0a9777
8 changed files with 956 additions and 143 deletions

View file

@ -83,8 +83,9 @@ const Payload$json = {
/// Descriptor for `Payload`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List payloadDescriptor = $convert.base64Decode(
'CgdQYXlsb2FkEhQKBHRleHQYASABKAlIAFIEdGV4dBItCgRqc29uGAIgASgLMhcuZ29vZ2xlLn'
'Byb3RvYnVmLlN0cnVjdEgAUgRqc29uEiUKBWJ5dGVzGAMgASgLMg0uZmFpLnYxLkJ5dGVzSABS'
'BWJ5dGVzEiUKBGZpbGUYBCABKAsyDy5mYWkudjEuRmlsZVJlZkgAUgRmaWxlQgYKBGtpbmQ=');
'Byb3RvYnVmLlN0cnVjdEgAUgRqc29uEicKBWJ5dGVzGAMgASgLMg8uY2hhaW4udjEuQnl0ZXNI'
'AFIFYnl0ZXMSJwoEZmlsZRgEIAEoCzIRLmNoYWluLnYxLkZpbGVSZWZIAFIEZmlsZUIGCgRraW'
'5k');
@$core.Deprecated('Use bytesDescriptor instead')
const Bytes$json = {
@ -150,8 +151,8 @@ const FaiError_Code$json = {
/// Descriptor for `FaiError`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List faiErrorDescriptor = $convert.base64Decode(
'CghGYWlFcnJvchIpCgRjb2RlGAEgASgOMhUuZmFpLnYxLkZhaUVycm9yLkNvZGVSBGNvZGUSGA'
'oHbWVzc2FnZRgCIAEoCVIHbWVzc2FnZRIYCgdkZXRhaWxzGAMgASgJUgdkZXRhaWxzIpgBCgRD'
'b2RlEgsKB1VOS05PV04QABIRCg1JTlZBTElEX0lOUFVUEAESHAoYQ0FQQUJJTElUWV9OT1RfU1'
'VQUE9SVEVEEAISFQoRUEVSTUlTU0lPTl9ERU5JRUQQAxIWChJSRVNPVVJDRV9FWEhBVVNURUQQ'
'BBIVChFERUFETElORV9FWENFRURFRBAFEgwKCElOVEVSTkFMEAY=');
'CghGYWlFcnJvchIrCgRjb2RlGAEgASgOMhcuY2hhaW4udjEuRmFpRXJyb3IuQ29kZVIEY29kZR'
'IYCgdtZXNzYWdlGAIgASgJUgdtZXNzYWdlEhgKB2RldGFpbHMYAyABKAlSB2RldGFpbHMimAEK'
'BENvZGUSCwoHVU5LTk9XThAAEhEKDUlOVkFMSURfSU5QVVQQARIcChhDQVBBQklMSVRZX05PVF'
'9TVVBQT1JURUQQAhIVChFQRVJNSVNTSU9OX0RFTklFRBADEhYKElJFU09VUkNFX0VYSEFVU1RF'
'RBAEEhUKEURFQURMSU5FX0VYQ0VFREVEEAUSDAoISU5URVJOQUwQBg==');

View file

@ -513,9 +513,9 @@ class HelloMessage extends $pb.GeneratedMessage {
static HelloMessage? _defaultInstance;
/// Immutable Hub Instance UUID (UUIDv7) generated at the
/// satellite's first `fai init`. Persisted in `~/.fai/hub-id`.
/// satellite's first `chain init`. Persisted in `~/.chain/hub-id`.
/// The federation cert's subject embeds this value; it can
/// never change without a fresh `fai init`.
/// never change without a fresh `chain init`.
@$pb.TagNumber(1)
$core.String get hubId => $_getSZ(0);
@$pb.TagNumber(1)
@ -538,7 +538,7 @@ class HelloMessage extends $pb.GeneratedMessage {
@$pb.TagNumber(2)
void clearDisplayName() => $_clearField(2);
/// FI binary version, informational. Lets the primary record
/// ChIn binary version, informational. Lets the primary record
/// satellite versions for operator visibility without coupling
/// them to wire compatibility (which is governed by
/// wire_versions_supported below).
@ -957,7 +957,7 @@ class CapabilityAdvertisement extends $pb.GeneratedMessage {
@$pb.TagNumber(8)
void clearWitVersion() => $_clearField(8);
/// FI binary version that loaded this capability at the
/// ChIn binary version that loaded this capability at the
/// origin. Informational.
@$pb.TagNumber(9)
$core.String get hubVersion => $_getSZ(8);
@ -1588,7 +1588,7 @@ class DispatchRequest extends $pb.GeneratedMessage {
$pb.PbMap<$core.String, $1.Payload> get inputs => $_getMap(2);
/// UUIDv7 correlation id shared across hops + audit logs on
/// both sides for a single cross-hub call. Lets `fai admin
/// both sides for a single cross-hub call. Lets `chain admin
/// events` reconstruct the full trace later.
@$pb.TagNumber(4)
$core.String get traceId => $_getSZ(3);

View file

@ -126,19 +126,19 @@ const ControlMessage$json = {
/// Descriptor for `ControlMessage`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List controlMessageDescriptor = $convert.base64Decode(
'Cg5Db250cm9sTWVzc2FnZRIsCgVoZWxsbxgBIAEoCzIULmZhaS52MS5IZWxsb01lc3NhZ2VIAF'
'IFaGVsbG8SLwoGYWNjZXB0GAIgASgLMhUuZmFpLnYxLkFjY2VwdE1lc3NhZ2VIAFIGYWNjZXB0'
'EjgKCWFkdmVydGlzZRgDIAEoCzIYLmZhaS52MS5BZHZlcnRpc2VNZXNzYWdlSABSCWFkdmVydG'
'lzZRI1Cgh3aXRoZHJhdxgEIAEoCzIXLmZhaS52MS5XaXRoZHJhd01lc3NhZ2VIAFIId2l0aGRy'
'YXcSOAoJaGVhcnRiZWF0GAUgASgLMhguZmFpLnYxLkhlYXJ0YmVhdE1lc3NhZ2VIAFIJaGVhcn'
'RiZWF0EjsKDWhlYXJ0YmVhdF9hY2sYBiABKAsyFC5mYWkudjEuSGVhcnRiZWF0QWNrSABSDGhl'
'YXJ0YmVhdEFjaxIvCgZyZW5hbWUYByABKAsyFS5mYWkudjEuUmVuYW1lTWVzc2FnZUgAUgZyZW'
'5hbWUSSAoSY2VydF9yZW5ld19yZXF1ZXN0GAggASgLMhguZmFpLnYxLkNlcnRSZW5ld1JlcXVl'
'c3RIAFIQY2VydFJlbmV3UmVxdWVzdBJLChNjZXJ0X3JlbmV3X3Jlc3BvbnNlGAkgASgLMhkuZm'
'FpLnYxLkNlcnRSZW5ld1Jlc3BvbnNlSABSEWNlcnRSZW5ld1Jlc3BvbnNlEjsKDWRpc3BhdGNo'
'X2NhbGwYCiABKAsyFC5mYWkudjEuRGlzcGF0Y2hDYWxsSABSDGRpc3BhdGNoQ2FsbBJBCg9kaX'
'NwYXRjaF9yZXN1bHQYCyABKAsyFi5mYWkudjEuRGlzcGF0Y2hSZXN1bHRIAFIOZGlzcGF0Y2hS'
'ZXN1bHRCBgoEa2luZA==');
'Cg5Db250cm9sTWVzc2FnZRIuCgVoZWxsbxgBIAEoCzIWLmNoYWluLnYxLkhlbGxvTWVzc2FnZU'
'gAUgVoZWxsbxIxCgZhY2NlcHQYAiABKAsyFy5jaGFpbi52MS5BY2NlcHRNZXNzYWdlSABSBmFj'
'Y2VwdBI6CglhZHZlcnRpc2UYAyABKAsyGi5jaGFpbi52MS5BZHZlcnRpc2VNZXNzYWdlSABSCW'
'FkdmVydGlzZRI3Cgh3aXRoZHJhdxgEIAEoCzIZLmNoYWluLnYxLldpdGhkcmF3TWVzc2FnZUgA'
'Ugh3aXRoZHJhdxI6CgloZWFydGJlYXQYBSABKAsyGi5jaGFpbi52MS5IZWFydGJlYXRNZXNzYW'
'dlSABSCWhlYXJ0YmVhdBI9Cg1oZWFydGJlYXRfYWNrGAYgASgLMhYuY2hhaW4udjEuSGVhcnRi'
'ZWF0QWNrSABSDGhlYXJ0YmVhdEFjaxIxCgZyZW5hbWUYByABKAsyFy5jaGFpbi52MS5SZW5hbW'
'VNZXNzYWdlSABSBnJlbmFtZRJKChJjZXJ0X3JlbmV3X3JlcXVlc3QYCCABKAsyGi5jaGFpbi52'
'MS5DZXJ0UmVuZXdSZXF1ZXN0SABSEGNlcnRSZW5ld1JlcXVlc3QSTQoTY2VydF9yZW5ld19yZX'
'Nwb25zZRgJIAEoCzIbLmNoYWluLnYxLkNlcnRSZW5ld1Jlc3BvbnNlSABSEWNlcnRSZW5ld1Jl'
'c3BvbnNlEj0KDWRpc3BhdGNoX2NhbGwYCiABKAsyFi5jaGFpbi52MS5EaXNwYXRjaENhbGxIAF'
'IMZGlzcGF0Y2hDYWxsEkMKD2Rpc3BhdGNoX3Jlc3VsdBgLIAEoCzIYLmNoYWluLnYxLkRpc3Bh'
'dGNoUmVzdWx0SABSDmRpc3BhdGNoUmVzdWx0QgYKBGtpbmQ=');
@$core.Deprecated('Use dispatchCallDescriptor instead')
const DispatchCall$json = {
@ -158,8 +158,8 @@ const DispatchCall$json = {
/// Descriptor for `DispatchCall`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List dispatchCallDescriptor = $convert.base64Decode(
'CgxEaXNwYXRjaENhbGwSHQoKcmVxdWVzdF9pZBgBIAEoCVIJcmVxdWVzdElkEjEKB3JlcXVlc3'
'QYAiABKAsyFy5mYWkudjEuRGlzcGF0Y2hSZXF1ZXN0UgdyZXF1ZXN0');
'CgxEaXNwYXRjaENhbGwSHQoKcmVxdWVzdF9pZBgBIAEoCVIJcmVxdWVzdElkEjMKB3JlcXVlc3'
'QYAiABKAsyGS5jaGFpbi52MS5EaXNwYXRjaFJlcXVlc3RSB3JlcXVlc3Q=');
@$core.Deprecated('Use dispatchResultDescriptor instead')
const DispatchResult$json = {
@ -179,8 +179,8 @@ const DispatchResult$json = {
/// Descriptor for `DispatchResult`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List dispatchResultDescriptor = $convert.base64Decode(
'Cg5EaXNwYXRjaFJlc3VsdBIdCgpyZXF1ZXN0X2lkGAEgASgJUglyZXF1ZXN0SWQSNAoIcmVzcG'
'9uc2UYAiABKAsyGC5mYWkudjEuRGlzcGF0Y2hSZXNwb25zZVIIcmVzcG9uc2U=');
'Cg5EaXNwYXRjaFJlc3VsdBIdCgpyZXF1ZXN0X2lkGAEgASgJUglyZXF1ZXN0SWQSNgoIcmVzcG'
'9uc2UYAiABKAsyGi5jaGFpbi52MS5EaXNwYXRjaFJlc3BvbnNlUghyZXNwb25zZQ==');
@$core.Deprecated('Use helloMessageDescriptor instead')
const HelloMessage$json = {
@ -283,8 +283,8 @@ const AdvertiseMessage$json = {
/// Descriptor for `AdvertiseMessage`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List advertiseMessageDescriptor = $convert.base64Decode(
'ChBBZHZlcnRpc2VNZXNzYWdlEkMKDGNhcGFiaWxpdGllcxgBIAMoCzIfLmZhaS52MS5DYXBhYm'
'lsaXR5QWR2ZXJ0aXNlbWVudFIMY2FwYWJpbGl0aWVz');
'ChBBZHZlcnRpc2VNZXNzYWdlEkUKDGNhcGFiaWxpdGllcxgBIAMoCzIhLmNoYWluLnYxLkNhcG'
'FiaWxpdHlBZHZlcnRpc2VtZW50UgxjYXBhYmlsaXRpZXM=');
@$core.Deprecated('Use capabilityAdvertisementDescriptor instead')
const CapabilityAdvertisement$json = {
@ -314,9 +314,9 @@ final $typed_data.Uint8List capabilityAdvertisementDescriptor = $convert.base64D
'ChdDYXBhYmlsaXR5QWR2ZXJ0aXNlbWVudBIjCg1jYXBhYmlsaXR5X2lkGAEgASgJUgxjYXBhYm'
'lsaXR5SWQSHwoLb3JpZ2luX3V1aWQYAiABKAlSCm9yaWdpblV1aWQSHwoLb3JpZ2luX25hbWUY'
'AyABKAlSCm9yaWdpbk5hbWUSFAoFcm91dGUYBCADKAlSBXJvdXRlEhYKBnJlZ2lvbhgFIAEoCV'
'IGcmVnaW9uEikKB3F1YWxpdHkYBiABKAsyDy5mYWkudjEuUXVhbGl0eVIHcXVhbGl0eRIgCgtw'
'ZXJtaXNzaW9ucxgHIAMoCVILcGVybWlzc2lvbnMSHwoLd2l0X3ZlcnNpb24YCCABKAlSCndpdF'
'ZlcnNpb24SHwoLaHViX3ZlcnNpb24YCSABKAlSCmh1YlZlcnNpb24=');
'IGcmVnaW9uEisKB3F1YWxpdHkYBiABKAsyES5jaGFpbi52MS5RdWFsaXR5UgdxdWFsaXR5EiAK'
'C3Blcm1pc3Npb25zGAcgAygJUgtwZXJtaXNzaW9ucxIfCgt3aXRfdmVyc2lvbhgIIAEoCVIKd2'
'l0VmVyc2lvbhIfCgtodWJfdmVyc2lvbhgJIAEoCVIKaHViVmVyc2lvbg==');
@$core.Deprecated('Use qualityDescriptor instead')
const Quality$json = {
@ -461,12 +461,12 @@ const DispatchRequest_InputsEntry$json = {
/// Descriptor for `DispatchRequest`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List dispatchRequestDescriptor = $convert.base64Decode(
'Cg9EaXNwYXRjaFJlcXVlc3QSIwoNY2FwYWJpbGl0eV9pZBgBIAEoCVIMY2FwYWJpbGl0eUlkEi'
'IKDXRhcmdldF9odWJfaWQYAiABKAlSC3RhcmdldEh1YklkEjsKBmlucHV0cxgDIAMoCzIjLmZh'
'aS52MS5EaXNwYXRjaFJlcXVlc3QuSW5wdXRzRW50cnlSBmlucHV0cxIZCgh0cmFjZV9pZBgEIA'
'EoCVIHdHJhY2VJZBIUCgVub25jZRgFIAEoCVIFbm9uY2USHwoLY2FsbGVyX25hbWUYBiABKAlS'
'CmNhbGxlck5hbWUSJwoPcmVnaW9uX3JlcXVpcmVkGAcgASgJUg5yZWdpb25SZXF1aXJlZBpKCg'
'tJbnB1dHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIlCgV2YWx1ZRgCIAEoCzIPLmZhaS52MS5Q'
'YXlsb2FkUgV2YWx1ZToCOAE=');
'IKDXRhcmdldF9odWJfaWQYAiABKAlSC3RhcmdldEh1YklkEj0KBmlucHV0cxgDIAMoCzIlLmNo'
'YWluLnYxLkRpc3BhdGNoUmVxdWVzdC5JbnB1dHNFbnRyeVIGaW5wdXRzEhkKCHRyYWNlX2lkGA'
'QgASgJUgd0cmFjZUlkEhQKBW5vbmNlGAUgASgJUgVub25jZRIfCgtjYWxsZXJfbmFtZRgGIAEo'
'CVIKY2FsbGVyTmFtZRInCg9yZWdpb25fcmVxdWlyZWQYByABKAlSDnJlZ2lvblJlcXVpcmVkGk'
'wKC0lucHV0c0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EicKBXZhbHVlGAIgASgLMhEuY2hhaW4u'
'djEuUGF5bG9hZFIFdmFsdWU6AjgB');
@$core.Deprecated('Use dispatchResponseDescriptor instead')
const DispatchResponse$json = {
@ -519,12 +519,12 @@ const DispatchResponse_OutputsEntry$json = {
/// Descriptor for `DispatchResponse`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List dispatchResponseDescriptor = $convert.base64Decode(
'ChBEaXNwYXRjaFJlc3BvbnNlEj8KB291dHB1dHMYASADKAsyJS5mYWkudjEuRGlzcGF0Y2hSZX'
'Nwb25zZS5PdXRwdXRzRW50cnlSB291dHB1dHMSJgoFZXJyb3IYAiABKAsyEC5mYWkudjEuRmFp'
'RXJyb3JSBWVycm9yEh8KC2R1cmF0aW9uX21zGAMgASgNUgpkdXJhdGlvbk1zEisKEmV4ZWN1dG'
'VkX2F0X2h1Yl9pZBgEIAEoCVIPZXhlY3V0ZWRBdEh1YklkGksKDE91dHB1dHNFbnRyeRIQCgNr'
'ZXkYASABKAlSA2tleRIlCgV2YWx1ZRgCIAEoCzIPLmZhaS52MS5QYXlsb2FkUgV2YWx1ZToCOA'
'E=');
'ChBEaXNwYXRjaFJlc3BvbnNlEkEKB291dHB1dHMYASADKAsyJy5jaGFpbi52MS5EaXNwYXRjaF'
'Jlc3BvbnNlLk91dHB1dHNFbnRyeVIHb3V0cHV0cxIoCgVlcnJvchgCIAEoCzISLmNoYWluLnYx'
'LkZhaUVycm9yUgVlcnJvchIfCgtkdXJhdGlvbl9tcxgDIAEoDVIKZHVyYXRpb25NcxIrChJleG'
'VjdXRlZF9hdF9odWJfaWQYBCABKAlSD2V4ZWN1dGVkQXRIdWJJZBpNCgxPdXRwdXRzRW50cnkS'
'EAoDa2V5GAEgASgJUgNrZXkSJwoFdmFsdWUYAiABKAsyES5jaGFpbi52MS5QYXlsb2FkUgV2YW'
'x1ZToCOAE=');
@$core.Deprecated('Use blobChunkDescriptor instead')
const BlobChunk$json = {
@ -566,9 +566,10 @@ const BlobChunk$json = {
/// Descriptor for `BlobChunk`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List blobChunkDescriptor = $convert.base64Decode(
'CglCbG9iQ2h1bmsSJgoEb3BlbhgBIAEoCzIQLmZhaS52MS5CbG9iT3BlbkgAUgRvcGVuEhQKBG'
'RhdGEYAiABKAxIAFIEZGF0YRIjCgNlb2YYAyABKAsyDy5mYWkudjEuQmxvYkVvZkgAUgNlb2YS'
'KQoFZXJyb3IYBCABKAsyES5mYWkudjEuQmxvYkVycm9ySABSBWVycm9yQgYKBGtpbmQ=');
'CglCbG9iQ2h1bmsSKAoEb3BlbhgBIAEoCzISLmNoYWluLnYxLkJsb2JPcGVuSABSBG9wZW4SFA'
'oEZGF0YRgCIAEoDEgAUgRkYXRhEiUKA2VvZhgDIAEoCzIRLmNoYWluLnYxLkJsb2JFb2ZIAFID'
'ZW9mEisKBWVycm9yGAQgASgLMhMuY2hhaW4udjEuQmxvYkVycm9ySABSBWVycm9yQgYKBGtpbm'
'Q=');
@$core.Deprecated('Use blobOpenDescriptor instead')
const BlobOpen$json = {

View file

@ -22,6 +22,62 @@ export 'package:protobuf/protobuf.dart' show GeneratedMessageGenericExtensions;
export 'hub.pbenum.dart';
class RevokeSatelliteRequest extends $pb.GeneratedMessage {
factory RevokeSatelliteRequest({
$core.String? hubId,
}) {
final result = create();
if (hubId != null) result.hubId = hubId;
return result;
}
RevokeSatelliteRequest._();
factory RevokeSatelliteRequest.fromBuffer($core.List<$core.int> data,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromBuffer(data, registry);
factory RevokeSatelliteRequest.fromJson($core.String json,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromJson(json, registry);
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
_omitMessageNames ? '' : 'RevokeSatelliteRequest',
package: const $pb.PackageName(_omitMessageNames ? '' : 'chain.v1'),
createEmptyInstance: create)
..aOS(1, _omitFieldNames ? '' : 'hubId')
..hasRequiredFields = false;
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
RevokeSatelliteRequest clone() => deepCopy();
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
RevokeSatelliteRequest copyWith(
void Function(RevokeSatelliteRequest) updates) =>
super.copyWith((message) => updates(message as RevokeSatelliteRequest))
as RevokeSatelliteRequest;
@$core.override
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static RevokeSatelliteRequest create() => RevokeSatelliteRequest._();
@$core.override
RevokeSatelliteRequest createEmptyInstance() => create();
@$core.pragma('dart2js:noInline')
static RevokeSatelliteRequest getDefault() => _defaultInstance ??=
$pb.GeneratedMessage.$_defaultFor<RevokeSatelliteRequest>(create);
static RevokeSatelliteRequest? _defaultInstance;
/// Immutable hub UUID of the satellite to revoke.
@$pb.TagNumber(1)
$core.String get hubId => $_getSZ(0);
@$pb.TagNumber(1)
set hubId($core.String value) => $_setString(0, value);
@$pb.TagNumber(1)
$core.bool hasHubId() => $_has(0);
@$pb.TagNumber(1)
void clearHubId() => $_clearField(1);
}
class SubmitRequest extends $pb.GeneratedMessage {
factory SubmitRequest({
$core.List<$core.int>? flowYaml,
@ -4266,7 +4322,7 @@ class ChannelStatusResponse extends $pb.GeneratedMessage {
$pb.GeneratedMessage.$_defaultFor<ChannelStatusResponse>(create);
static ChannelStatusResponse? _defaultInstance;
/// Active channel pointer from `~/.fai/current-channel`.
/// Active channel pointer from `~/.chain/current-channel`.
@$pb.TagNumber(1)
$core.String get active => $_getSZ(0);
@$pb.TagNumber(1)
@ -4362,7 +4418,7 @@ class ChannelEntry extends $pb.GeneratedMessage {
@$pb.TagNumber(3)
void clearRunning() => $_clearField(3);
/// Endpoint string from `~/.fai/run/<channel>.endpoint` when
/// Endpoint string from `~/.chain/run/<channel>.endpoint` when
/// the daemon is up, otherwise empty.
@$pb.TagNumber(4)
$core.String get endpoint => $_getSZ(3);
@ -4474,7 +4530,7 @@ class DaemonPathsResponse extends $pb.GeneratedMessage {
@$pb.TagNumber(4)
void clearFlowsDir() => $_clearField(4);
/// Operator config file (~/.fai/config.yaml).
/// Operator config file (~/.chain/config.yaml).
@$pb.TagNumber(5)
$core.String get configPath => $_getSZ(4);
@$pb.TagNumber(5)
@ -7140,7 +7196,7 @@ class SatelliteEntry extends $pb.GeneratedMessage {
@$pb.TagNumber(2)
void clearDisplayName() => $_clearField(2);
/// FI version the satellite reported.
/// ChIn version the satellite reported.
@$pb.TagNumber(3)
$core.String get hubVersion => $_getSZ(2);
@$pb.TagNumber(3)
@ -7175,6 +7231,482 @@ class SatelliteEntry extends $pb.GeneratedMessage {
$pb.PbList<$core.String> get capabilities => $_getList(5);
}
class ListStoresRequest extends $pb.GeneratedMessage {
factory ListStoresRequest() => create();
ListStoresRequest._();
factory ListStoresRequest.fromBuffer($core.List<$core.int> data,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromBuffer(data, registry);
factory ListStoresRequest.fromJson($core.String json,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromJson(json, registry);
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
_omitMessageNames ? '' : 'ListStoresRequest',
package: const $pb.PackageName(_omitMessageNames ? '' : 'chain.v1'),
createEmptyInstance: create)
..hasRequiredFields = false;
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
ListStoresRequest clone() => deepCopy();
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
ListStoresRequest copyWith(void Function(ListStoresRequest) updates) =>
super.copyWith((message) => updates(message as ListStoresRequest))
as ListStoresRequest;
@$core.override
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static ListStoresRequest create() => ListStoresRequest._();
@$core.override
ListStoresRequest createEmptyInstance() => create();
@$core.pragma('dart2js:noInline')
static ListStoresRequest getDefault() => _defaultInstance ??=
$pb.GeneratedMessage.$_defaultFor<ListStoresRequest>(create);
static ListStoresRequest? _defaultInstance;
}
class StoreSource extends $pb.GeneratedMessage {
factory StoreSource({
$core.String? name,
$core.String? url,
$core.bool? removable,
$core.int? moduleCount,
}) {
final result = create();
if (name != null) result.name = name;
if (url != null) result.url = url;
if (removable != null) result.removable = removable;
if (moduleCount != null) result.moduleCount = moduleCount;
return result;
}
StoreSource._();
factory StoreSource.fromBuffer($core.List<$core.int> data,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromBuffer(data, registry);
factory StoreSource.fromJson($core.String json,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromJson(json, registry);
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
_omitMessageNames ? '' : 'StoreSource',
package: const $pb.PackageName(_omitMessageNames ? '' : 'chain.v1'),
createEmptyInstance: create)
..aOS(1, _omitFieldNames ? '' : 'name')
..aOS(2, _omitFieldNames ? '' : 'url')
..aOB(3, _omitFieldNames ? '' : 'removable')
..aI(4, _omitFieldNames ? '' : 'moduleCount')
..hasRequiredFields = false;
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
StoreSource clone() => deepCopy();
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
StoreSource copyWith(void Function(StoreSource) updates) =>
super.copyWith((message) => updates(message as StoreSource))
as StoreSource;
@$core.override
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static StoreSource create() => StoreSource._();
@$core.override
StoreSource createEmptyInstance() => create();
@$core.pragma('dart2js:noInline')
static StoreSource getDefault() => _defaultInstance ??=
$pb.GeneratedMessage.$_defaultFor<StoreSource>(create);
static StoreSource? _defaultInstance;
/// "bundled" for the seed index, else the operator-given name.
@$pb.TagNumber(1)
$core.String get name => $_getSZ(0);
@$pb.TagNumber(1)
set name($core.String value) => $_setString(0, value);
@$pb.TagNumber(1)
$core.bool hasName() => $_has(0);
@$pb.TagNumber(1)
void clearName() => $_clearField(1);
/// Index URL; empty for the bundled seed.
@$pb.TagNumber(2)
$core.String get url => $_getSZ(1);
@$pb.TagNumber(2)
set url($core.String value) => $_setString(1, value);
@$pb.TagNumber(2)
$core.bool hasUrl() => $_has(1);
@$pb.TagNumber(2)
void clearUrl() => $_clearField(2);
/// False for the bundled seed (cannot be removed).
@$pb.TagNumber(3)
$core.bool get removable => $_getBF(2);
@$pb.TagNumber(3)
set removable($core.bool value) => $_setBool(2, value);
@$pb.TagNumber(3)
$core.bool hasRemovable() => $_has(2);
@$pb.TagNumber(3)
void clearRemovable() => $_clearField(3);
/// Modules currently contributed by this source to the live index.
@$pb.TagNumber(4)
$core.int get moduleCount => $_getIZ(3);
@$pb.TagNumber(4)
set moduleCount($core.int value) => $_setSignedInt32(3, value);
@$pb.TagNumber(4)
$core.bool hasModuleCount() => $_has(3);
@$pb.TagNumber(4)
void clearModuleCount() => $_clearField(4);
}
class ListStoresResponse extends $pb.GeneratedMessage {
factory ListStoresResponse({
$core.Iterable<StoreSource>? stores,
}) {
final result = create();
if (stores != null) result.stores.addAll(stores);
return result;
}
ListStoresResponse._();
factory ListStoresResponse.fromBuffer($core.List<$core.int> data,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromBuffer(data, registry);
factory ListStoresResponse.fromJson($core.String json,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromJson(json, registry);
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
_omitMessageNames ? '' : 'ListStoresResponse',
package: const $pb.PackageName(_omitMessageNames ? '' : 'chain.v1'),
createEmptyInstance: create)
..pPM<StoreSource>(1, _omitFieldNames ? '' : 'stores',
subBuilder: StoreSource.create)
..hasRequiredFields = false;
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
ListStoresResponse clone() => deepCopy();
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
ListStoresResponse copyWith(void Function(ListStoresResponse) updates) =>
super.copyWith((message) => updates(message as ListStoresResponse))
as ListStoresResponse;
@$core.override
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static ListStoresResponse create() => ListStoresResponse._();
@$core.override
ListStoresResponse createEmptyInstance() => create();
@$core.pragma('dart2js:noInline')
static ListStoresResponse getDefault() => _defaultInstance ??=
$pb.GeneratedMessage.$_defaultFor<ListStoresResponse>(create);
static ListStoresResponse? _defaultInstance;
@$pb.TagNumber(1)
$pb.PbList<StoreSource> get stores => $_getList(0);
}
class AddStoreRequest extends $pb.GeneratedMessage {
factory AddStoreRequest({
$core.String? name,
$core.String? url,
$core.String? bearerEnv,
$core.String? basicUser,
$core.String? basicPasswordEnv,
}) {
final result = create();
if (name != null) result.name = name;
if (url != null) result.url = url;
if (bearerEnv != null) result.bearerEnv = bearerEnv;
if (basicUser != null) result.basicUser = basicUser;
if (basicPasswordEnv != null) result.basicPasswordEnv = basicPasswordEnv;
return result;
}
AddStoreRequest._();
factory AddStoreRequest.fromBuffer($core.List<$core.int> data,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromBuffer(data, registry);
factory AddStoreRequest.fromJson($core.String json,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromJson(json, registry);
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
_omitMessageNames ? '' : 'AddStoreRequest',
package: const $pb.PackageName(_omitMessageNames ? '' : 'chain.v1'),
createEmptyInstance: create)
..aOS(1, _omitFieldNames ? '' : 'name')
..aOS(2, _omitFieldNames ? '' : 'url')
..aOS(3, _omitFieldNames ? '' : 'bearerEnv')
..aOS(4, _omitFieldNames ? '' : 'basicUser')
..aOS(5, _omitFieldNames ? '' : 'basicPasswordEnv')
..hasRequiredFields = false;
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
AddStoreRequest clone() => deepCopy();
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
AddStoreRequest copyWith(void Function(AddStoreRequest) updates) =>
super.copyWith((message) => updates(message as AddStoreRequest))
as AddStoreRequest;
@$core.override
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static AddStoreRequest create() => AddStoreRequest._();
@$core.override
AddStoreRequest createEmptyInstance() => create();
@$core.pragma('dart2js:noInline')
static AddStoreRequest getDefault() => _defaultInstance ??=
$pb.GeneratedMessage.$_defaultFor<AddStoreRequest>(create);
static AddStoreRequest? _defaultInstance;
/// Operator-friendly name, unique within configured stores.
@$pb.TagNumber(1)
$core.String get name => $_getSZ(0);
@$pb.TagNumber(1)
set name($core.String value) => $_setString(0, value);
@$pb.TagNumber(1)
$core.bool hasName() => $_has(0);
@$pb.TagNumber(1)
void clearName() => $_clearField(1);
/// Index URL: https:// , http:// , or file:// .
@$pb.TagNumber(2)
$core.String get url => $_getSZ(1);
@$pb.TagNumber(2)
set url($core.String value) => $_setString(1, value);
@$pb.TagNumber(2)
$core.bool hasUrl() => $_has(1);
@$pb.TagNumber(2)
void clearUrl() => $_clearField(2);
/// Optional bearer-token env var name (hub reads $value at request time).
@$pb.TagNumber(3)
$core.String get bearerEnv => $_getSZ(2);
@$pb.TagNumber(3)
set bearerEnv($core.String value) => $_setString(2, value);
@$pb.TagNumber(3)
$core.bool hasBearerEnv() => $_has(2);
@$pb.TagNumber(3)
void clearBearerEnv() => $_clearField(3);
/// Optional HTTP Basic username.
@$pb.TagNumber(4)
$core.String get basicUser => $_getSZ(3);
@$pb.TagNumber(4)
set basicUser($core.String value) => $_setString(3, value);
@$pb.TagNumber(4)
$core.bool hasBasicUser() => $_has(3);
@$pb.TagNumber(4)
void clearBasicUser() => $_clearField(4);
/// Optional HTTP Basic password env var name. Pair with basic_user.
@$pb.TagNumber(5)
$core.String get basicPasswordEnv => $_getSZ(4);
@$pb.TagNumber(5)
set basicPasswordEnv($core.String value) => $_setString(4, value);
@$pb.TagNumber(5)
$core.bool hasBasicPasswordEnv() => $_has(4);
@$pb.TagNumber(5)
void clearBasicPasswordEnv() => $_clearField(5);
}
class AddStoreResponse extends $pb.GeneratedMessage {
factory AddStoreResponse({
$core.int? modulesAdded,
$core.String? message,
}) {
final result = create();
if (modulesAdded != null) result.modulesAdded = modulesAdded;
if (message != null) result.message = message;
return result;
}
AddStoreResponse._();
factory AddStoreResponse.fromBuffer($core.List<$core.int> data,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromBuffer(data, registry);
factory AddStoreResponse.fromJson($core.String json,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromJson(json, registry);
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
_omitMessageNames ? '' : 'AddStoreResponse',
package: const $pb.PackageName(_omitMessageNames ? '' : 'chain.v1'),
createEmptyInstance: create)
..aI(1, _omitFieldNames ? '' : 'modulesAdded')
..aOS(2, _omitFieldNames ? '' : 'message')
..hasRequiredFields = false;
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
AddStoreResponse clone() => deepCopy();
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
AddStoreResponse copyWith(void Function(AddStoreResponse) updates) =>
super.copyWith((message) => updates(message as AddStoreResponse))
as AddStoreResponse;
@$core.override
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static AddStoreResponse create() => AddStoreResponse._();
@$core.override
AddStoreResponse createEmptyInstance() => create();
@$core.pragma('dart2js:noInline')
static AddStoreResponse getDefault() => _defaultInstance ??=
$pb.GeneratedMessage.$_defaultFor<AddStoreResponse>(create);
static AddStoreResponse? _defaultInstance;
/// Modules the new store contributed to the live index.
@$pb.TagNumber(1)
$core.int get modulesAdded => $_getIZ(0);
@$pb.TagNumber(1)
set modulesAdded($core.int value) => $_setSignedInt32(0, value);
@$pb.TagNumber(1)
$core.bool hasModulesAdded() => $_has(0);
@$pb.TagNumber(1)
void clearModulesAdded() => $_clearField(1);
/// Human-readable result (e.g. "added 8 modules from reclaim").
@$pb.TagNumber(2)
$core.String get message => $_getSZ(1);
@$pb.TagNumber(2)
set message($core.String value) => $_setString(1, value);
@$pb.TagNumber(2)
$core.bool hasMessage() => $_has(1);
@$pb.TagNumber(2)
void clearMessage() => $_clearField(2);
}
class RemoveStoreRequest extends $pb.GeneratedMessage {
factory RemoveStoreRequest({
$core.String? name,
}) {
final result = create();
if (name != null) result.name = name;
return result;
}
RemoveStoreRequest._();
factory RemoveStoreRequest.fromBuffer($core.List<$core.int> data,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromBuffer(data, registry);
factory RemoveStoreRequest.fromJson($core.String json,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromJson(json, registry);
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
_omitMessageNames ? '' : 'RemoveStoreRequest',
package: const $pb.PackageName(_omitMessageNames ? '' : 'chain.v1'),
createEmptyInstance: create)
..aOS(1, _omitFieldNames ? '' : 'name')
..hasRequiredFields = false;
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
RemoveStoreRequest clone() => deepCopy();
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
RemoveStoreRequest copyWith(void Function(RemoveStoreRequest) updates) =>
super.copyWith((message) => updates(message as RemoveStoreRequest))
as RemoveStoreRequest;
@$core.override
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static RemoveStoreRequest create() => RemoveStoreRequest._();
@$core.override
RemoveStoreRequest createEmptyInstance() => create();
@$core.pragma('dart2js:noInline')
static RemoveStoreRequest getDefault() => _defaultInstance ??=
$pb.GeneratedMessage.$_defaultFor<RemoveStoreRequest>(create);
static RemoveStoreRequest? _defaultInstance;
@$pb.TagNumber(1)
$core.String get name => $_getSZ(0);
@$pb.TagNumber(1)
set name($core.String value) => $_setString(0, value);
@$pb.TagNumber(1)
$core.bool hasName() => $_has(0);
@$pb.TagNumber(1)
void clearName() => $_clearField(1);
}
class RemoveStoreResponse extends $pb.GeneratedMessage {
factory RemoveStoreResponse({
$core.bool? removed,
$core.String? message,
}) {
final result = create();
if (removed != null) result.removed = removed;
if (message != null) result.message = message;
return result;
}
RemoveStoreResponse._();
factory RemoveStoreResponse.fromBuffer($core.List<$core.int> data,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromBuffer(data, registry);
factory RemoveStoreResponse.fromJson($core.String json,
[$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
create()..mergeFromJson(json, registry);
static final $pb.BuilderInfo _i = $pb.BuilderInfo(
_omitMessageNames ? '' : 'RemoveStoreResponse',
package: const $pb.PackageName(_omitMessageNames ? '' : 'chain.v1'),
createEmptyInstance: create)
..aOB(1, _omitFieldNames ? '' : 'removed')
..aOS(2, _omitFieldNames ? '' : 'message')
..hasRequiredFields = false;
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
RemoveStoreResponse clone() => deepCopy();
@$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
RemoveStoreResponse copyWith(void Function(RemoveStoreResponse) updates) =>
super.copyWith((message) => updates(message as RemoveStoreResponse))
as RemoveStoreResponse;
@$core.override
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static RemoveStoreResponse create() => RemoveStoreResponse._();
@$core.override
RemoveStoreResponse createEmptyInstance() => create();
@$core.pragma('dart2js:noInline')
static RemoveStoreResponse getDefault() => _defaultInstance ??=
$pb.GeneratedMessage.$_defaultFor<RemoveStoreResponse>(create);
static RemoveStoreResponse? _defaultInstance;
@$pb.TagNumber(1)
$core.bool get removed => $_getBF(0);
@$pb.TagNumber(1)
set removed($core.bool value) => $_setBool(0, value);
@$pb.TagNumber(1)
$core.bool hasRemoved() => $_has(0);
@$pb.TagNumber(1)
void clearRemoved() => $_clearField(1);
@$pb.TagNumber(2)
$core.String get message => $_getSZ(1);
@$pb.TagNumber(2)
set message($core.String value) => $_setString(1, value);
@$pb.TagNumber(2)
$core.bool hasMessage() => $_has(1);
@$pb.TagNumber(2)
void clearMessage() => $_clearField(2);
}
const $core.bool _omitFieldNames =
$core.bool.fromEnvironment('protobuf.omit_field_names');
const $core.bool _omitMessageNames =

View file

@ -243,6 +243,33 @@ class HubAdminClient extends $grpc.Client {
return $createUnaryCall(_$searchStore, request, options: options);
}
/// List the configured module stores (operator config `stores:`)
/// plus the implicit bundled seed, for the Studio store manager.
$grpc.ResponseFuture<$0.ListStoresResponse> listStores(
$0.ListStoresRequest request, {
$grpc.CallOptions? options,
}) {
return $createUnaryCall(_$listStores, request, options: options);
}
/// Register a new module store and merge its index into the live
/// store so its modules become searchable + installable immediately.
$grpc.ResponseFuture<$0.AddStoreResponse> addStore(
$0.AddStoreRequest request, {
$grpc.CallOptions? options,
}) {
return $createUnaryCall(_$addStore, request, options: options);
}
/// Drop a configured store by name and rebuild the live index
/// without it. The bundled seed cannot be removed.
$grpc.ResponseFuture<$0.RemoveStoreResponse> removeStore(
$0.RemoveStoreRequest request, {
$grpc.CallOptions? options,
}) {
return $createUnaryCall(_$removeStore, request, options: options);
}
/// Install a module from a .fai bundle (local path or http(s) URL).
$grpc.ResponseFuture<$0.InstallModuleResponse> installModule(
$0.InstallModuleRequest request, {
@ -336,7 +363,7 @@ class HubAdminClient extends $grpc.Client {
}
/// Walk the event-log hash chain and return whether tampering
/// was detected. Surfaced by the CLI as `fai admin verify-events`
/// was detected. Surfaced by the CLI as `chain admin verify-events`
/// and by Studio's health page.
$grpc.ResponseFuture<$0.VerifyEventChainResponse> verifyEventChain(
$1.Empty request, {
@ -348,7 +375,7 @@ class HubAdminClient extends $grpc.Client {
/// Wipe every audit event and seed the log with a single
/// `chain.reset` marker. Refused on `beta` / `production` for
/// compliance only callable on `local` / `dev`. Surfaced by
/// the CLI as `fai admin events clear`.
/// the CLI as `chain admin events clear`.
$grpc.ResponseFuture<$0.ClearEventLogResponse> clearEventLog(
$0.ClearEventLogRequest request, {
$grpc.CallOptions? options,
@ -394,7 +421,7 @@ class HubAdminClient extends $grpc.Client {
/// List host services declared in the operator config. Each
/// entry carries name + endpoint; reachability is operator-side
/// (on-demand `fai service status` or Studio probe).
/// (on-demand `chain service status` or Studio probe).
$grpc.ResponseFuture<$0.ServiceList> listServices(
$1.Empty request, {
$grpc.CallOptions? options,
@ -403,7 +430,7 @@ class HubAdminClient extends $grpc.Client {
}
/// Compare the running hub's version against the channel release
/// manifest. Surfaced by the CLI as `fai update check` and by
/// manifest. Surfaced by the CLI as `chain update check` and by
/// Studio's Doctor page as a "v0.x.y available" pill. Network
/// failures are returned as `manifest_reachable=false` rather
/// than gRPC errors so Studio can render gracefully when the
@ -438,7 +465,7 @@ class HubAdminClient extends $grpc.Client {
/// Configured MCP servers + their last-discovery report.
/// Studio's MCP-clients editor renders the result. Mirrors
/// `fai mcp list` on the CLI.
/// `chain mcp list` on the CLI.
$grpc.ResponseFuture<$0.ListMcpClientsResponse> listMcpClients(
$1.Empty request, {
$grpc.CallOptions? options,
@ -449,7 +476,7 @@ class HubAdminClient extends $grpc.Client {
/// Re-run discovery against every configured MCP server and
/// update the *live* store-index in place. Synthetic entries
/// for tools the server no longer exposes are dropped.
/// Mirrors `fai mcp refresh` but operates on the running
/// Mirrors `chain mcp refresh` but operates on the running
/// daemon Studio doesn't need to ask the operator to
/// restart anything.
$grpc.ResponseFuture<$0.ListMcpClientsResponse> refreshMcpClients(
@ -459,7 +486,7 @@ class HubAdminClient extends $grpc.Client {
return $createUnaryCall(_$refreshMcpClients, request, options: options);
}
/// Persist a new MCP server in `~/.fai/config.yaml` and
/// Persist a new MCP server in `~/.chain/config.yaml` and
/// re-run discovery. Returns the resulting list (same shape
/// as ListMcpClients) so Studio can repaint in one round-trip.
$grpc.ResponseFuture<$0.ListMcpClientsResponse> addMcpClient(
@ -530,7 +557,7 @@ class HubAdminClient extends $grpc.Client {
}
/// Persist a new system-AI configuration. Updates the live
/// hub state AND writes back to ~/.fai/config.yaml so the
/// hub state AND writes back to ~/.chain/config.yaml so the
/// change survives daemon restart. Used by Studio's settings
/// editor. Returns the resulting status (same shape as
/// SystemAiStatus) so the UI can refresh in one round-trip.
@ -620,9 +647,9 @@ class HubAdminClient extends $grpc.Client {
}
/// Federation (primary side). Issue a single-use bootstrap
/// token enrolling a named satellite (`fai admin satellites
/// token enrolling a named satellite (`chain admin satellites
/// peer-add`), and list the satellites currently connected
/// (`fai admin satellites list`).
/// (`chain admin satellites list`).
$grpc.ResponseFuture<$0.IssueBootstrapTokenResponse> issueBootstrapToken(
$0.IssueBootstrapTokenRequest request, {
$grpc.CallOptions? options,
@ -637,6 +664,16 @@ class HubAdminClient extends $grpc.Client {
return $createUnaryCall(_$listSatellites, request, options: options);
}
/// Revoke a satellite by UUID (`chain admin satellites revoke`):
/// drops any live connection and refuses future connects even
/// with a still-valid cert. Persisted across restarts.
$grpc.ResponseFuture<$1.Empty> revokeSatellite(
$0.RevokeSatelliteRequest request, {
$grpc.CallOptions? options,
}) {
return $createUnaryCall(_$revokeSatellite, request, options: options);
}
// method descriptors
static final _$listCapabilities =
@ -693,6 +730,21 @@ class HubAdminClient extends $grpc.Client {
'/chain.v1.HubAdmin/SearchStore',
($0.SearchStoreRequest value) => value.writeToBuffer(),
$0.StoreSearchResponse.fromBuffer);
static final _$listStores =
$grpc.ClientMethod<$0.ListStoresRequest, $0.ListStoresResponse>(
'/chain.v1.HubAdmin/ListStores',
($0.ListStoresRequest value) => value.writeToBuffer(),
$0.ListStoresResponse.fromBuffer);
static final _$addStore =
$grpc.ClientMethod<$0.AddStoreRequest, $0.AddStoreResponse>(
'/chain.v1.HubAdmin/AddStore',
($0.AddStoreRequest value) => value.writeToBuffer(),
$0.AddStoreResponse.fromBuffer);
static final _$removeStore =
$grpc.ClientMethod<$0.RemoveStoreRequest, $0.RemoveStoreResponse>(
'/chain.v1.HubAdmin/RemoveStore',
($0.RemoveStoreRequest value) => value.writeToBuffer(),
$0.RemoveStoreResponse.fromBuffer);
static final _$installModule =
$grpc.ClientMethod<$0.InstallModuleRequest, $0.InstallModuleResponse>(
'/chain.v1.HubAdmin/InstallModule',
@ -876,6 +928,11 @@ class HubAdminClient extends $grpc.Client {
'/chain.v1.HubAdmin/ListSatellites',
($1.Empty value) => value.writeToBuffer(),
$0.SatelliteList.fromBuffer);
static final _$revokeSatellite =
$grpc.ClientMethod<$0.RevokeSatelliteRequest, $1.Empty>(
'/chain.v1.HubAdmin/RevokeSatellite',
($0.RevokeSatelliteRequest value) => value.writeToBuffer(),
$1.Empty.fromBuffer);
}
@$pb.GrpcServiceName('chain.v1.HubAdmin')
@ -968,6 +1025,29 @@ abstract class HubAdminServiceBase extends $grpc.Service {
($core.List<$core.int> value) =>
$0.SearchStoreRequest.fromBuffer(value),
($0.StoreSearchResponse value) => value.writeToBuffer()));
$addMethod($grpc.ServiceMethod<$0.ListStoresRequest, $0.ListStoresResponse>(
'ListStores',
listStores_Pre,
false,
false,
($core.List<$core.int> value) => $0.ListStoresRequest.fromBuffer(value),
($0.ListStoresResponse value) => value.writeToBuffer()));
$addMethod($grpc.ServiceMethod<$0.AddStoreRequest, $0.AddStoreResponse>(
'AddStore',
addStore_Pre,
false,
false,
($core.List<$core.int> value) => $0.AddStoreRequest.fromBuffer(value),
($0.AddStoreResponse value) => value.writeToBuffer()));
$addMethod(
$grpc.ServiceMethod<$0.RemoveStoreRequest, $0.RemoveStoreResponse>(
'RemoveStore',
removeStore_Pre,
false,
false,
($core.List<$core.int> value) =>
$0.RemoveStoreRequest.fromBuffer(value),
($0.RemoveStoreResponse value) => value.writeToBuffer()));
$addMethod(
$grpc.ServiceMethod<$0.InstallModuleRequest, $0.InstallModuleResponse>(
'InstallModule',
@ -1265,6 +1345,14 @@ abstract class HubAdminServiceBase extends $grpc.Service {
false,
($core.List<$core.int> value) => $1.Empty.fromBuffer(value),
($0.SatelliteList value) => value.writeToBuffer()));
$addMethod($grpc.ServiceMethod<$0.RevokeSatelliteRequest, $1.Empty>(
'RevokeSatellite',
revokeSatellite_Pre,
false,
false,
($core.List<$core.int> value) =>
$0.RevokeSatelliteRequest.fromBuffer(value),
($1.Empty value) => value.writeToBuffer()));
}
$async.Future<$0.CapabilityList> listCapabilities_Pre(
@ -1357,6 +1445,30 @@ abstract class HubAdminServiceBase extends $grpc.Service {
$async.Future<$0.StoreSearchResponse> searchStore(
$grpc.ServiceCall call, $0.SearchStoreRequest request);
$async.Future<$0.ListStoresResponse> listStores_Pre($grpc.ServiceCall $call,
$async.Future<$0.ListStoresRequest> $request) async {
return listStores($call, await $request);
}
$async.Future<$0.ListStoresResponse> listStores(
$grpc.ServiceCall call, $0.ListStoresRequest request);
$async.Future<$0.AddStoreResponse> addStore_Pre($grpc.ServiceCall $call,
$async.Future<$0.AddStoreRequest> $request) async {
return addStore($call, await $request);
}
$async.Future<$0.AddStoreResponse> addStore(
$grpc.ServiceCall call, $0.AddStoreRequest request);
$async.Future<$0.RemoveStoreResponse> removeStore_Pre($grpc.ServiceCall $call,
$async.Future<$0.RemoveStoreRequest> $request) async {
return removeStore($call, await $request);
}
$async.Future<$0.RemoveStoreResponse> removeStore(
$grpc.ServiceCall call, $0.RemoveStoreRequest request);
$async.Future<$0.InstallModuleResponse> installModule_Pre(
$grpc.ServiceCall $call,
$async.Future<$0.InstallModuleRequest> $request) async {
@ -1670,4 +1782,12 @@ abstract class HubAdminServiceBase extends $grpc.Service {
$async.Future<$0.SatelliteList> listSatellites(
$grpc.ServiceCall call, $1.Empty request);
$async.Future<$1.Empty> revokeSatellite_Pre($grpc.ServiceCall $call,
$async.Future<$0.RevokeSatelliteRequest> $request) async {
return revokeSatellite($call, await $request);
}
$async.Future<$1.Empty> revokeSatellite(
$grpc.ServiceCall call, $0.RevokeSatelliteRequest request);
}

View file

@ -15,6 +15,19 @@ import 'dart:convert' as $convert;
import 'dart:core' as $core;
import 'dart:typed_data' as $typed_data;
@$core.Deprecated('Use revokeSatelliteRequestDescriptor instead')
const RevokeSatelliteRequest$json = {
'1': 'RevokeSatelliteRequest',
'2': [
{'1': 'hub_id', '3': 1, '4': 1, '5': 9, '10': 'hubId'},
],
};
/// Descriptor for `RevokeSatelliteRequest`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List revokeSatelliteRequestDescriptor =
$convert.base64Decode(
'ChZSZXZva2VTYXRlbGxpdGVSZXF1ZXN0EhUKBmh1Yl9pZBgBIAEoCVIFaHViSWQ=');
@$core.Deprecated('Use submitRequestDescriptor instead')
const SubmitRequest$json = {
'1': 'SubmitRequest',
@ -51,10 +64,10 @@ const SubmitRequest_InputsEntry$json = {
/// Descriptor for `SubmitRequest`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List submitRequestDescriptor = $convert.base64Decode(
'Cg1TdWJtaXRSZXF1ZXN0EhsKCWZsb3dfeWFtbBgBIAEoDFIIZmxvd1lhbWwSOQoGaW5wdXRzGA'
'IgAygLMiEuZmFpLnYxLlN1Ym1pdFJlcXVlc3QuSW5wdXRzRW50cnlSBmlucHV0cxpKCgtJbnB1'
'dHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIlCgV2YWx1ZRgCIAEoCzIPLmZhaS52MS5QYXlsb2'
'FkUgV2YWx1ZToCOAE=');
'Cg1TdWJtaXRSZXF1ZXN0EhsKCWZsb3dfeWFtbBgBIAEoDFIIZmxvd1lhbWwSOwoGaW5wdXRzGA'
'IgAygLMiMuY2hhaW4udjEuU3VibWl0UmVxdWVzdC5JbnB1dHNFbnRyeVIGaW5wdXRzGkwKC0lu'
'cHV0c0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EicKBXZhbHVlGAIgASgLMhEuY2hhaW4udjEuUG'
'F5bG9hZFIFdmFsdWU6AjgB');
@$core.Deprecated('Use submitResponseDescriptor instead')
const SubmitResponse$json = {
@ -99,10 +112,10 @@ const SubmitResponse_OutputsEntry$json = {
/// Descriptor for `SubmitResponse`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List submitResponseDescriptor = $convert.base64Decode(
'Cg5TdWJtaXRSZXNwb25zZRI5Cg1pbnZvY2F0aW9uX2lkGAEgASgLMhQuZmFpLnYxLkludm9jYX'
'Rpb25JZFIMaW52b2NhdGlvbklkEj0KB291dHB1dHMYAiADKAsyIy5mYWkudjEuU3VibWl0UmVz'
'cG9uc2UuT3V0cHV0c0VudHJ5UgdvdXRwdXRzGksKDE91dHB1dHNFbnRyeRIQCgNrZXkYASABKA'
'lSA2tleRIlCgV2YWx1ZRgCIAEoCzIPLmZhaS52MS5QYXlsb2FkUgV2YWx1ZToCOAE=');
'Cg5TdWJtaXRSZXNwb25zZRI7Cg1pbnZvY2F0aW9uX2lkGAEgASgLMhYuY2hhaW4udjEuSW52b2'
'NhdGlvbklkUgxpbnZvY2F0aW9uSWQSPwoHb3V0cHV0cxgCIAMoCzIlLmNoYWluLnYxLlN1Ym1p'
'dFJlc3BvbnNlLk91dHB1dHNFbnRyeVIHb3V0cHV0cxpNCgxPdXRwdXRzRW50cnkSEAoDa2V5GA'
'EgASgJUgNrZXkSJwoFdmFsdWUYAiABKAsyES5jaGFpbi52MS5QYXlsb2FkUgV2YWx1ZToCOAE=');
@$core.Deprecated('Use moduleListDescriptor instead')
const ModuleList$json = {
@ -121,8 +134,8 @@ const ModuleList$json = {
/// Descriptor for `ModuleList`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List moduleListDescriptor = $convert.base64Decode(
'CgpNb2R1bGVMaXN0Ei8KB21vZHVsZXMYASADKAsyFS5mYWkudjEuTW9kdWxlU3VtbWFyeVIHbW'
'9kdWxlcw==');
'CgpNb2R1bGVMaXN0EjEKB21vZHVsZXMYASADKAsyFy5jaGFpbi52MS5Nb2R1bGVTdW1tYXJ5Ug'
'dtb2R1bGVz');
@$core.Deprecated('Use moduleSummaryDescriptor instead')
const ModuleSummary$json = {
@ -144,8 +157,8 @@ const ModuleSummary$json = {
/// Descriptor for `ModuleSummary`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List moduleSummaryDescriptor = $convert.base64Decode(
'Cg1Nb2R1bGVTdW1tYXJ5EhIKBG5hbWUYASABKAlSBG5hbWUSGAoHdmVyc2lvbhgCIAEoCVIHdm'
'Vyc2lvbhIxCghwcm92aWRlcxgDIAMoCzIVLmZhaS52MS5DYXBhYmlsaXR5UmVmUghwcm92aWRl'
'cw==');
'Vyc2lvbhIzCghwcm92aWRlcxgDIAMoCzIXLmNoYWluLnYxLkNhcGFiaWxpdHlSZWZSCHByb3Zp'
'ZGVz');
@$core.Deprecated('Use healthStatusDescriptor instead')
const HealthStatus$json = {
@ -176,9 +189,9 @@ const HealthStatus_State$json = {
/// Descriptor for `HealthStatus`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List healthStatusDescriptor = $convert.base64Decode(
'CgxIZWFsdGhTdGF0dXMSMAoFc3RhdGUYASABKA4yGi5mYWkudjEuSGVhbHRoU3RhdHVzLlN0YX'
'RlUgVzdGF0ZRIWCgZkZXRhaWwYAiABKAlSBmRldGFpbCIyCgVTdGF0ZRILCgdVTktOT1dOEAAS'
'CwoHU0VSVklORxABEg8KC05PVF9TRVJWSU5HEAI=');
'CgxIZWFsdGhTdGF0dXMSMgoFc3RhdGUYASABKA4yHC5jaGFpbi52MS5IZWFsdGhTdGF0dXMuU3'
'RhdGVSBXN0YXRlEhYKBmRldGFpbBgCIAEoCVIGZGV0YWlsIjIKBVN0YXRlEgsKB1VOS05PV04Q'
'ABILCgdTRVJWSU5HEAESDwoLTk9UX1NFUlZJTkcQAg==');
@$core.Deprecated('Use capabilityListDescriptor instead')
const CapabilityList$json = {
@ -197,8 +210,8 @@ const CapabilityList$json = {
/// Descriptor for `CapabilityList`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List capabilityListDescriptor = $convert.base64Decode(
'Cg5DYXBhYmlsaXR5TGlzdBI7CgxjYXBhYmlsaXRpZXMYASADKAsyFy5mYWkudjEuQ2FwYWJpbG'
'l0eUVudHJ5UgxjYXBhYmlsaXRpZXM=');
'Cg5DYXBhYmlsaXR5TGlzdBI9CgxjYXBhYmlsaXRpZXMYASADKAsyGS5jaGFpbi52MS5DYXBhYm'
'lsaXR5RW50cnlSDGNhcGFiaWxpdGllcw==');
@$core.Deprecated('Use capabilityEntryDescriptor instead')
const CapabilityEntry$json = {
@ -282,12 +295,12 @@ const ModuleInfoResponse$json = {
/// Descriptor for `ModuleInfoResponse`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List moduleInfoResponseDescriptor = $convert.base64Decode(
'ChJNb2R1bGVJbmZvUmVzcG9uc2USEgoEbmFtZRgBIAEoCVIEbmFtZRIYCgd2ZXJzaW9uGAIgAS'
'gJUgd2ZXJzaW9uEjEKCHByb3ZpZGVzGAMgAygLMhUuZmFpLnYxLkNhcGFiaWxpdHlSZWZSCHBy'
'b3ZpZGVzEiAKC3Blcm1pc3Npb25zGAQgAygJUgtwZXJtaXNzaW9ucxIcCglkaXJlY3RvcnkYBS'
'ABKAlSCWRpcmVjdG9yeRIhCgxhY2NlcHRzX21pbWUYBiADKAlSC2FjY2VwdHNNaW1lEjYKCGNv'
'bnN1bWVzGAcgAygLMhouZmFpLnYxLkNvbnN1bWVkQ2FwYWJpbGl0eVIIY29uc3VtZXMSKwoGaW'
'5wdXRzGAggAygLMhMuZmFpLnYxLk1vZHVsZUZpZWxkUgZpbnB1dHMSLQoHb3V0cHV0cxgJIAMo'
'CzITLmZhaS52MS5Nb2R1bGVGaWVsZFIHb3V0cHV0cw==');
'gJUgd2ZXJzaW9uEjMKCHByb3ZpZGVzGAMgAygLMhcuY2hhaW4udjEuQ2FwYWJpbGl0eVJlZlII'
'cHJvdmlkZXMSIAoLcGVybWlzc2lvbnMYBCADKAlSC3Blcm1pc3Npb25zEhwKCWRpcmVjdG9yeR'
'gFIAEoCVIJZGlyZWN0b3J5EiEKDGFjY2VwdHNfbWltZRgGIAMoCVILYWNjZXB0c01pbWUSOAoI'
'Y29uc3VtZXMYByADKAsyHC5jaGFpbi52MS5Db25zdW1lZENhcGFiaWxpdHlSCGNvbnN1bWVzEi'
'0KBmlucHV0cxgIIAMoCzIVLmNoYWluLnYxLk1vZHVsZUZpZWxkUgZpbnB1dHMSLwoHb3V0cHV0'
'cxgJIAMoCzIVLmNoYWluLnYxLk1vZHVsZUZpZWxkUgdvdXRwdXRz');
@$core.Deprecated('Use consumedCapabilityDescriptor instead')
const ConsumedCapability$json = {
@ -334,10 +347,10 @@ const ModuleField_DescriptionEntry$json = {
/// Descriptor for `ModuleField`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List moduleFieldDescriptor = $convert.base64Decode(
'CgtNb2R1bGVGaWVsZBISCgRuYW1lGAEgASgJUgRuYW1lEhIKBHR5cGUYAiABKAlSBHR5cGUSRg'
'oLZGVzY3JpcHRpb24YAyADKAsyJC5mYWkudjEuTW9kdWxlRmllbGQuRGVzY3JpcHRpb25FbnRy'
'eVILZGVzY3JpcHRpb24aPgoQRGVzY3JpcHRpb25FbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCg'
'V2YWx1ZRgCIAEoCVIFdmFsdWU6AjgB');
'CgtNb2R1bGVGaWVsZBISCgRuYW1lGAEgASgJUgRuYW1lEhIKBHR5cGUYAiABKAlSBHR5cGUSSA'
'oLZGVzY3JpcHRpb24YAyADKAsyJi5jaGFpbi52MS5Nb2R1bGVGaWVsZC5EZXNjcmlwdGlvbkVu'
'dHJ5UgtkZXNjcmlwdGlvbho+ChBEZXNjcmlwdGlvbkVudHJ5EhAKA2tleRgBIAEoCVIDa2V5Eh'
'QKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAE=');
@$core.Deprecated('Use checkPermissionRequestDescriptor instead')
const CheckPermissionRequest$json = {
@ -400,8 +413,8 @@ const EventLogResponse$json = {
/// Descriptor for `EventLogResponse`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List eventLogResponseDescriptor = $convert.base64Decode(
'ChBFdmVudExvZ1Jlc3BvbnNlEisKBmV2ZW50cxgBIAMoCzITLmZhaS52MS5Mb2dnZWRFdmVudF'
'IGZXZlbnRz');
'ChBFdmVudExvZ1Jlc3BvbnNlEi0KBmV2ZW50cxgBIAMoCzIVLmNoYWluLnYxLkxvZ2dlZEV2ZW'
'50UgZldmVudHM=');
@$core.Deprecated('Use streamEventsRequestDescriptor instead')
const StreamEventsRequest$json = {
@ -518,7 +531,8 @@ const FlowList$json = {
/// Descriptor for `FlowList`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List flowListDescriptor = $convert.base64Decode(
'CghGbG93TGlzdBIpCgVmbG93cxgBIAMoCzITLmZhaS52MS5GbG93U3VtbWFyeVIFZmxvd3M=');
'CghGbG93TGlzdBIrCgVmbG93cxgBIAMoCzIVLmNoYWluLnYxLkZsb3dTdW1tYXJ5UgVmbG93cw'
'==');
@$core.Deprecated('Use flowSummaryDescriptor instead')
const FlowSummary$json = {
@ -579,10 +593,10 @@ const RunSavedFlowRequest_InputsEntry$json = {
/// Descriptor for `RunSavedFlowRequest`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List runSavedFlowRequestDescriptor = $convert.base64Decode(
'ChNSdW5TYXZlZEZsb3dSZXF1ZXN0EhIKBG5hbWUYASABKAlSBG5hbWUSPwoGaW5wdXRzGAIgAy'
'gLMicuZmFpLnYxLlJ1blNhdmVkRmxvd1JlcXVlc3QuSW5wdXRzRW50cnlSBmlucHV0cxpKCgtJ'
'bnB1dHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIlCgV2YWx1ZRgCIAEoCzIPLmZhaS52MS5QYX'
'lsb2FkUgV2YWx1ZToCOAE=');
'ChNSdW5TYXZlZEZsb3dSZXF1ZXN0EhIKBG5hbWUYASABKAlSBG5hbWUSQQoGaW5wdXRzGAIgAy'
'gLMikuY2hhaW4udjEuUnVuU2F2ZWRGbG93UmVxdWVzdC5JbnB1dHNFbnRyeVIGaW5wdXRzGkwK'
'C0lucHV0c0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EicKBXZhbHVlGAIgASgLMhEuY2hhaW4udj'
'EuUGF5bG9hZFIFdmFsdWU6AjgB');
@$core.Deprecated('Use getFlowDefinitionRequestDescriptor instead')
const GetFlowDefinitionRequest$json = {
@ -615,8 +629,8 @@ const FlowDefinition$json = {
/// Descriptor for `FlowDefinition`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List flowDefinitionDescriptor = $convert.base64Decode(
'Cg5GbG93RGVmaW5pdGlvbhISCgRuYW1lGAEgASgJUgRuYW1lEi0KBmlucHV0cxgCIAMoCzIVLm'
'ZhaS52MS5GbG93SW5wdXRTcGVjUgZpbnB1dHM=');
'Cg5GbG93RGVmaW5pdGlvbhISCgRuYW1lGAEgASgJUgRuYW1lEi8KBmlucHV0cxgCIAMoCzIXLm'
'NoYWluLnYxLkZsb3dJbnB1dFNwZWNSBmlucHV0cw==');
@$core.Deprecated('Use flowInputSpecDescriptor instead')
const FlowInputSpec$json = {
@ -670,8 +684,8 @@ const StoreSearchResponse$json = {
/// Descriptor for `StoreSearchResponse`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List storeSearchResponseDescriptor = $convert.base64Decode(
'ChNTdG9yZVNlYXJjaFJlc3BvbnNlEiwKB2VudHJpZXMYASADKAsyEi5mYWkudjEuU3RvcmVFbn'
'RyeVIHZW50cmllcw==');
'ChNTdG9yZVNlYXJjaFJlc3BvbnNlEi4KB2VudHJpZXMYASADKAsyFC5jaGFpbi52MS5TdG9yZU'
'VudHJ5UgdlbnRyaWVz');
@$core.Deprecated('Use installModuleRequestDescriptor instead')
const InstallModuleRequest$json = {
@ -890,8 +904,8 @@ const ApprovalList$json = {
/// Descriptor for `ApprovalList`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List approvalListDescriptor = $convert.base64Decode(
'CgxBcHByb3ZhbExpc3QSNgoHZW50cmllcxgBIAMoCzIcLmZhaS52MS5QZW5kaW5nQXBwcm92YW'
'xFbnRyeVIHZW50cmllcw==');
'CgxBcHByb3ZhbExpc3QSOAoHZW50cmllcxgBIAMoCzIeLmNoYWluLnYxLlBlbmRpbmdBcHByb3'
'ZhbEVudHJ5UgdlbnRyaWVz');
@$core.Deprecated('Use pendingApprovalEntryDescriptor instead')
const PendingApprovalEntry$json = {
@ -954,10 +968,10 @@ const DecideApprovalRequest_Decision$json = {
/// Descriptor for `DecideApprovalRequest`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List decideApprovalRequestDescriptor = $convert.base64Decode(
'ChVEZWNpZGVBcHByb3ZhbFJlcXVlc3QSHwoLYXBwcm92YWxfaWQYASABKAlSCmFwcHJvdmFsSW'
'QSQgoIZGVjaXNpb24YAiABKA4yJi5mYWkudjEuRGVjaWRlQXBwcm92YWxSZXF1ZXN0LkRlY2lz'
'aW9uUghkZWNpc2lvbhIaCghyZXZpZXdlchgDIAEoCVIIcmV2aWV3ZXISFgoGcmVhc29uGAQgAS'
'gJUgZyZWFzb24iPQoIRGVjaXNpb24SGAoUREVDSVNJT05fVU5TUEVDSUZJRUQQABILCgdBUFBS'
'T1ZFEAESCgoGUkVKRUNUEAI=');
'QSRAoIZGVjaXNpb24YAiABKA4yKC5jaGFpbi52MS5EZWNpZGVBcHByb3ZhbFJlcXVlc3QuRGVj'
'aXNpb25SCGRlY2lzaW9uEhoKCHJldmlld2VyGAMgASgJUghyZXZpZXdlchIWCgZyZWFzb24YBC'
'ABKAlSBnJlYXNvbiI9CghEZWNpc2lvbhIYChRERUNJU0lPTl9VTlNQRUNJRklFRBAAEgsKB0FQ'
'UFJPVkUQARIKCgZSRUpFQ1QQAg==');
@$core.Deprecated('Use decideApprovalResponseDescriptor instead')
const DecideApprovalResponse$json = {
@ -1006,8 +1020,8 @@ const ServiceList$json = {
/// Descriptor for `ServiceList`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List serviceListDescriptor = $convert.base64Decode(
'CgtTZXJ2aWNlTGlzdBIzCghzZXJ2aWNlcxgBIAMoCzIXLmZhaS52MS5EZWNsYXJlZFNlcnZpY2'
'VSCHNlcnZpY2Vz');
'CgtTZXJ2aWNlTGlzdBI1CghzZXJ2aWNlcxgBIAMoCzIZLmNoYWluLnYxLkRlY2xhcmVkU2Vydm'
'ljZVIIc2VydmljZXM=');
@$core.Deprecated('Use declaredServiceDescriptor instead')
const DeclaredService$json = {
@ -1100,8 +1114,8 @@ const ChannelStatusResponse$json = {
/// Descriptor for `ChannelStatusResponse`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List channelStatusResponseDescriptor = $convert.base64Decode(
'ChVDaGFubmVsU3RhdHVzUmVzcG9uc2USFgoGYWN0aXZlGAEgASgJUgZhY3RpdmUSMAoIY2hhbm'
'5lbHMYAiADKAsyFC5mYWkudjEuQ2hhbm5lbEVudHJ5UghjaGFubmVscw==');
'ChVDaGFubmVsU3RhdHVzUmVzcG9uc2USFgoGYWN0aXZlGAEgASgJUgZhY3RpdmUSMgoIY2hhbm'
'5lbHMYAiADKAsyFi5jaGFpbi52MS5DaGFubmVsRW50cnlSCGNoYW5uZWxz');
@$core.Deprecated('Use channelEntryDescriptor instead')
const ChannelEntry$json = {
@ -1299,8 +1313,8 @@ const ListSystemAiModelsResponse$json = {
final $typed_data.Uint8List listSystemAiModelsResponseDescriptor =
$convert.base64Decode(
'ChpMaXN0U3lzdGVtQWlNb2RlbHNSZXNwb25zZRIdCgplcnJvcl9raW5kGAEgASgJUgllcnJvck'
'tpbmQSEgoEdGV4dBgCIAEoCVIEdGV4dBItCgZtb2RlbHMYAyADKAsyFS5mYWkudjEuU3lzdGVt'
'QWlNb2RlbFIGbW9kZWxz');
'tpbmQSEgoEdGV4dBgCIAEoCVIEdGV4dBIvCgZtb2RlbHMYAyADKAsyFy5jaGFpbi52MS5TeXN0'
'ZW1BaU1vZGVsUgZtb2RlbHM=');
@$core.Deprecated('Use systemAiModelDescriptor instead')
const SystemAiModel$json = {
@ -1388,9 +1402,9 @@ const ListSystemAiCuratedModelsResponse$json = {
/// Descriptor for `ListSystemAiCuratedModelsResponse`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List listSystemAiCuratedModelsResponseDescriptor =
$convert.base64Decode(
'CiFMaXN0U3lzdGVtQWlDdXJhdGVkTW9kZWxzUmVzcG9uc2USLAoGbW9kZWxzGAEgAygLMhQuZm'
'FpLnYxLkN1cmF0ZWRNb2RlbFIGbW9kZWxzEiMKDWxhc3RfcmV2aWV3ZWQYAiABKAlSDGxhc3RS'
'ZXZpZXdlZA==');
'CiFMaXN0U3lzdGVtQWlDdXJhdGVkTW9kZWxzUmVzcG9uc2USLgoGbW9kZWxzGAEgAygLMhYuY2'
'hhaW4udjEuQ3VyYXRlZE1vZGVsUgZtb2RlbHMSIwoNbGFzdF9yZXZpZXdlZBgCIAEoCVIMbGFz'
'dFJldmlld2Vk');
@$core.Deprecated('Use curatedModelDescriptor instead')
const CuratedModel$json = {
@ -1517,8 +1531,8 @@ const ListMcpClientsResponse$json = {
/// Descriptor for `ListMcpClientsResponse`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List listMcpClientsResponseDescriptor =
$convert.base64Decode(
'ChZMaXN0TWNwQ2xpZW50c1Jlc3BvbnNlEjEKB2NsaWVudHMYASADKAsyFy5mYWkudjEuTWNwQ2'
'xpZW50U3RhdHVzUgdjbGllbnRz');
'ChZMaXN0TWNwQ2xpZW50c1Jlc3BvbnNlEjMKB2NsaWVudHMYASADKAsyGS5jaGFpbi52MS5NY3'
'BDbGllbnRTdGF0dXNSB2NsaWVudHM=');
@$core.Deprecated('Use mcpClientStatusDescriptor instead')
const McpClientStatus$json = {
@ -1540,9 +1554,9 @@ const McpClientStatus$json = {
/// Descriptor for `McpClientStatus`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List mcpClientStatusDescriptor = $convert.base64Decode(
'Cg9NY3BDbGllbnRTdGF0dXMSNAoGY29uZmlnGAEgASgLMhwuZmFpLnYxLk1jcENsaWVudENvbm'
'ZpZ0VudHJ5UgZjb25maWcSHQoKdG9vbF9jb3VudBgCIAEoDVIJdG9vbENvdW50Eh0KCmVycm9y'
'X2tpbmQYAyABKAlSCWVycm9yS2luZBIYCgdtZXNzYWdlGAQgASgJUgdtZXNzYWdl');
'Cg9NY3BDbGllbnRTdGF0dXMSNgoGY29uZmlnGAEgASgLMh4uY2hhaW4udjEuTWNwQ2xpZW50Q2'
'9uZmlnRW50cnlSBmNvbmZpZxIdCgp0b29sX2NvdW50GAIgASgNUgl0b29sQ291bnQSHQoKZXJy'
'b3Jfa2luZBgDIAEoCVIJZXJyb3JLaW5kEhgKB21lc3NhZ2UYBCABKAlSB21lc3NhZ2U=');
@$core.Deprecated('Use removeMcpClientRequestDescriptor instead')
const RemoveMcpClientRequest$json = {
@ -1592,8 +1606,8 @@ const ListN8nEndpointsResponse$json = {
/// Descriptor for `ListN8nEndpointsResponse`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List listN8nEndpointsResponseDescriptor =
$convert.base64Decode(
'ChhMaXN0TjhuRW5kcG9pbnRzUmVzcG9uc2USNwoJZW5kcG9pbnRzGAEgAygLMhkuZmFpLnYxLk'
'44bkVuZHBvaW50U3RhdHVzUgllbmRwb2ludHM=');
'ChhMaXN0TjhuRW5kcG9pbnRzUmVzcG9uc2USOQoJZW5kcG9pbnRzGAEgAygLMhsuY2hhaW4udj'
'EuTjhuRW5kcG9pbnRTdGF0dXNSCWVuZHBvaW50cw==');
@$core.Deprecated('Use n8nEndpointStatusDescriptor instead')
const N8nEndpointStatus$json = {
@ -1615,10 +1629,10 @@ const N8nEndpointStatus$json = {
/// Descriptor for `N8nEndpointStatus`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List n8nEndpointStatusDescriptor = $convert.base64Decode(
'ChFOOG5FbmRwb2ludFN0YXR1cxI2CgZjb25maWcYASABKAsyHi5mYWkudjEuTjhuRW5kcG9pbn'
'RDb25maWdFbnRyeVIGY29uZmlnEiUKDndvcmtmbG93X2NvdW50GAIgASgNUg13b3JrZmxvd0Nv'
'dW50Eh0KCmVycm9yX2tpbmQYAyABKAlSCWVycm9yS2luZBIYCgdtZXNzYWdlGAQgASgJUgdtZX'
'NzYWdl');
'ChFOOG5FbmRwb2ludFN0YXR1cxI4CgZjb25maWcYASABKAsyIC5jaGFpbi52MS5OOG5FbmRwb2'
'ludENvbmZpZ0VudHJ5UgZjb25maWcSJQoOd29ya2Zsb3dfY291bnQYAiABKA1SDXdvcmtmbG93'
'Q291bnQSHQoKZXJyb3Jfa2luZBgDIAEoCVIJZXJyb3JLaW5kEhgKB21lc3NhZ2UYBCABKAlSB2'
'1lc3NhZ2U=');
@$core.Deprecated('Use removeN8nEndpointRequestDescriptor instead')
const RemoveN8nEndpointRequest$json = {
@ -1684,8 +1698,8 @@ const SatelliteList$json = {
/// Descriptor for `SatelliteList`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List satelliteListDescriptor = $convert.base64Decode(
'Cg1TYXRlbGxpdGVMaXN0EjYKCnNhdGVsbGl0ZXMYASADKAsyFi5mYWkudjEuU2F0ZWxsaXRlRW'
'50cnlSCnNhdGVsbGl0ZXM=');
'Cg1TYXRlbGxpdGVMaXN0EjgKCnNhdGVsbGl0ZXMYASADKAsyGC5jaGFpbi52MS5TYXRlbGxpdG'
'VFbnRyeVIKc2F0ZWxsaXRlcw==');
@$core.Deprecated('Use satelliteEntryDescriptor instead')
const SatelliteEntry$json = {
@ -1706,3 +1720,113 @@ final $typed_data.Uint8List satelliteEntryDescriptor = $convert.base64Decode(
'gCIAEoCVILZGlzcGxheU5hbWUSHwoLaHViX3ZlcnNpb24YAyABKAlSCmh1YlZlcnNpb24SIQoM'
'd2lyZV92ZXJzaW9uGAQgASgNUgt3aXJlVmVyc2lvbhIWCgZyZWdpb24YBSABKAlSBnJlZ2lvbh'
'IiCgxjYXBhYmlsaXRpZXMYBiADKAlSDGNhcGFiaWxpdGllcw==');
@$core.Deprecated('Use listStoresRequestDescriptor instead')
const ListStoresRequest$json = {
'1': 'ListStoresRequest',
};
/// Descriptor for `ListStoresRequest`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List listStoresRequestDescriptor =
$convert.base64Decode('ChFMaXN0U3RvcmVzUmVxdWVzdA==');
@$core.Deprecated('Use storeSourceDescriptor instead')
const StoreSource$json = {
'1': 'StoreSource',
'2': [
{'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'},
{'1': 'url', '3': 2, '4': 1, '5': 9, '10': 'url'},
{'1': 'removable', '3': 3, '4': 1, '5': 8, '10': 'removable'},
{'1': 'module_count', '3': 4, '4': 1, '5': 5, '10': 'moduleCount'},
],
};
/// Descriptor for `StoreSource`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List storeSourceDescriptor = $convert.base64Decode(
'CgtTdG9yZVNvdXJjZRISCgRuYW1lGAEgASgJUgRuYW1lEhAKA3VybBgCIAEoCVIDdXJsEhwKCX'
'JlbW92YWJsZRgDIAEoCFIJcmVtb3ZhYmxlEiEKDG1vZHVsZV9jb3VudBgEIAEoBVILbW9kdWxl'
'Q291bnQ=');
@$core.Deprecated('Use listStoresResponseDescriptor instead')
const ListStoresResponse$json = {
'1': 'ListStoresResponse',
'2': [
{
'1': 'stores',
'3': 1,
'4': 3,
'5': 11,
'6': '.chain.v1.StoreSource',
'10': 'stores'
},
],
};
/// Descriptor for `ListStoresResponse`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List listStoresResponseDescriptor = $convert.base64Decode(
'ChJMaXN0U3RvcmVzUmVzcG9uc2USLQoGc3RvcmVzGAEgAygLMhUuY2hhaW4udjEuU3RvcmVTb3'
'VyY2VSBnN0b3Jlcw==');
@$core.Deprecated('Use addStoreRequestDescriptor instead')
const AddStoreRequest$json = {
'1': 'AddStoreRequest',
'2': [
{'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'},
{'1': 'url', '3': 2, '4': 1, '5': 9, '10': 'url'},
{'1': 'bearer_env', '3': 3, '4': 1, '5': 9, '10': 'bearerEnv'},
{'1': 'basic_user', '3': 4, '4': 1, '5': 9, '10': 'basicUser'},
{
'1': 'basic_password_env',
'3': 5,
'4': 1,
'5': 9,
'10': 'basicPasswordEnv'
},
],
};
/// Descriptor for `AddStoreRequest`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List addStoreRequestDescriptor = $convert.base64Decode(
'Cg9BZGRTdG9yZVJlcXVlc3QSEgoEbmFtZRgBIAEoCVIEbmFtZRIQCgN1cmwYAiABKAlSA3VybB'
'IdCgpiZWFyZXJfZW52GAMgASgJUgliZWFyZXJFbnYSHQoKYmFzaWNfdXNlchgEIAEoCVIJYmFz'
'aWNVc2VyEiwKEmJhc2ljX3Bhc3N3b3JkX2VudhgFIAEoCVIQYmFzaWNQYXNzd29yZEVudg==');
@$core.Deprecated('Use addStoreResponseDescriptor instead')
const AddStoreResponse$json = {
'1': 'AddStoreResponse',
'2': [
{'1': 'modules_added', '3': 1, '4': 1, '5': 5, '10': 'modulesAdded'},
{'1': 'message', '3': 2, '4': 1, '5': 9, '10': 'message'},
],
};
/// Descriptor for `AddStoreResponse`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List addStoreResponseDescriptor = $convert.base64Decode(
'ChBBZGRTdG9yZVJlc3BvbnNlEiMKDW1vZHVsZXNfYWRkZWQYASABKAVSDG1vZHVsZXNBZGRlZB'
'IYCgdtZXNzYWdlGAIgASgJUgdtZXNzYWdl');
@$core.Deprecated('Use removeStoreRequestDescriptor instead')
const RemoveStoreRequest$json = {
'1': 'RemoveStoreRequest',
'2': [
{'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'},
],
};
/// Descriptor for `RemoveStoreRequest`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List removeStoreRequestDescriptor = $convert
.base64Decode('ChJSZW1vdmVTdG9yZVJlcXVlc3QSEgoEbmFtZRgBIAEoCVIEbmFtZQ==');
@$core.Deprecated('Use removeStoreResponseDescriptor instead')
const RemoveStoreResponse$json = {
'1': 'RemoveStoreResponse',
'2': [
{'1': 'removed', '3': 1, '4': 1, '5': 8, '10': 'removed'},
{'1': 'message', '3': 2, '4': 1, '5': 9, '10': 'message'},
],
};
/// Descriptor for `RemoveStoreResponse`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List removeStoreResponseDescriptor = $convert.base64Decode(
'ChNSZW1vdmVTdG9yZVJlc3BvbnNlEhgKB3JlbW92ZWQYASABKAhSB3JlbW92ZWQSGAoHbWVzc2'
'FnZRgCIAEoCVIHbWVzc2FnZQ==');

View file

@ -67,12 +67,12 @@ const InvokeRequest_InputsEntry$json = {
/// Descriptor for `InvokeRequest`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List invokeRequestDescriptor = $convert.base64Decode(
'Cg1JbnZva2VSZXF1ZXN0EjkKDWludm9jYXRpb25faWQYASABKAsyFC5mYWkudjEuSW52b2NhdG'
'lvbklkUgxpbnZvY2F0aW9uSWQSNQoKY2FwYWJpbGl0eRgCIAEoCzIVLmZhaS52MS5DYXBhYmls'
'aXR5UmVmUgpjYXBhYmlsaXR5EjkKBmlucHV0cxgDIAMoCzIhLmZhaS52MS5JbnZva2VSZXF1ZX'
'N0LklucHV0c0VudHJ5UgZpbnB1dHMSHwoLZGVhZGxpbmVfbXMYBCABKARSCmRlYWRsaW5lTXMa'
'SgoLSW5wdXRzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSJQoFdmFsdWUYAiABKAsyDy5mYWkudj'
'EuUGF5bG9hZFIFdmFsdWU6AjgB');
'Cg1JbnZva2VSZXF1ZXN0EjsKDWludm9jYXRpb25faWQYASABKAsyFi5jaGFpbi52MS5JbnZvY2'
'F0aW9uSWRSDGludm9jYXRpb25JZBI3CgpjYXBhYmlsaXR5GAIgASgLMhcuY2hhaW4udjEuQ2Fw'
'YWJpbGl0eVJlZlIKY2FwYWJpbGl0eRI7CgZpbnB1dHMYAyADKAsyIy5jaGFpbi52MS5JbnZva2'
'VSZXF1ZXN0LklucHV0c0VudHJ5UgZpbnB1dHMSHwoLZGVhZGxpbmVfbXMYBCABKARSCmRlYWRs'
'aW5lTXMaTAoLSW5wdXRzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSJwoFdmFsdWUYAiABKAsyES'
'5jaGFpbi52MS5QYXlsb2FkUgV2YWx1ZToCOAE=');
@$core.Deprecated('Use invokeResponseDescriptor instead')
const InvokeResponse$json = {
@ -104,9 +104,9 @@ const InvokeResponse$json = {
/// Descriptor for `InvokeResponse`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List invokeResponseDescriptor = $convert.base64Decode(
'Cg5JbnZva2VSZXNwb25zZRIrCgdzdWNjZXNzGAEgASgLMg8uZmFpLnYxLlN1Y2Nlc3NIAFIHc3'
'VjY2VzcxIoCgVlcnJvchgCIAEoCzIQLmZhaS52MS5GYWlFcnJvckgAUgVlcnJvckIICgZyZXN1'
'bHQ=');
'Cg5JbnZva2VSZXNwb25zZRItCgdzdWNjZXNzGAEgASgLMhEuY2hhaW4udjEuU3VjY2Vzc0gAUg'
'dzdWNjZXNzEioKBWVycm9yGAIgASgLMhIuY2hhaW4udjEuRmFpRXJyb3JIAFIFZXJyb3JCCAoG'
'cmVzdWx0');
@$core.Deprecated('Use successDescriptor instead')
const Success$json = {
@ -143,9 +143,9 @@ const Success_OutputsEntry$json = {
/// Descriptor for `Success`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List successDescriptor = $convert.base64Decode(
'CgdTdWNjZXNzEjYKB291dHB1dHMYASADKAsyHC5mYWkudjEuU3VjY2Vzcy5PdXRwdXRzRW50cn'
'lSB291dHB1dHMaSwoMT3V0cHV0c0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiUKBXZhbHVlGAIg'
'ASgLMg8uZmFpLnYxLlBheWxvYWRSBXZhbHVlOgI4AQ==');
'CgdTdWNjZXNzEjgKB291dHB1dHMYASADKAsyHi5jaGFpbi52MS5TdWNjZXNzLk91dHB1dHNFbn'
'RyeVIHb3V0cHV0cxpNCgxPdXRwdXRzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSJwoFdmFsdWUY'
'AiABKAsyES5jaGFpbi52MS5QYXlsb2FkUgV2YWx1ZToCOAE=');
@$core.Deprecated('Use moduleDescriptorDescriptor instead')
const ModuleDescriptor$json = {
@ -168,5 +168,5 @@ const ModuleDescriptor$json = {
/// Descriptor for `ModuleDescriptor`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List moduleDescriptorDescriptor = $convert.base64Decode(
'ChBNb2R1bGVEZXNjcmlwdG9yEhIKBG5hbWUYASABKAlSBG5hbWUSGAoHdmVyc2lvbhgCIAEoCV'
'IHdmVyc2lvbhIxCghwcm92aWRlcxgDIAMoCzIVLmZhaS52MS5DYXBhYmlsaXR5UmVmUghwcm92'
'aWRlcxIgCgtwZXJtaXNzaW9ucxgEIAMoCVILcGVybWlzc2lvbnM=');
'IHdmVyc2lvbhIzCghwcm92aWRlcxgDIAMoCzIXLmNoYWluLnYxLkNhcGFiaWxpdHlSZWZSCHBy'
'b3ZpZGVzEiAKC3Blcm1pc3Npb25zGAQgAygJUgtwZXJtaXNzaW9ucw==');

View file

@ -51,6 +51,9 @@ typedef VerifyEventChainResponse = pb.VerifyEventChainResponse;
typedef CheckUpdateResponse = pb.CheckUpdateResponse;
typedef ChannelStatusResponse = pb.ChannelStatusResponse;
typedef ChannelEntry = pb.ChannelEntry;
typedef StoreSource = pb.StoreSource;
typedef AddStoreResponse = pb.AddStoreResponse;
typedef RemoveStoreResponse = pb.RemoveStoreResponse;
typedef SystemAiStatusResponse = pb.SystemAiStatusResponse;
typedef AskAiResponse = pb.AskAiResponse;
typedef ListSystemAiModelsResponse = pb.ListSystemAiModelsResponse;
@ -646,6 +649,38 @@ class HubClient {
return r.entries;
}
/// List the configured module stores (operator config `stores:`) plus
/// the bundled seed, each with how many modules it contributes to the
/// live index. Backs the Studio store manager.
Future<List<StoreSource>> listStores() async {
final r = await _admin.listStores(pb.ListStoresRequest());
return r.stores;
}
/// Register a new module store. The hub fetches + validates its index,
/// persists it to config, and merges it live so its modules are
/// immediately searchable + installable.
Future<AddStoreResponse> addStore({
required String name,
required String url,
String bearerEnv = '',
String basicUser = '',
String basicPasswordEnv = '',
}) {
return _admin.addStore(pb.AddStoreRequest(
name: name,
url: url,
bearerEnv: bearerEnv,
basicUser: basicUser,
basicPasswordEnv: basicPasswordEnv,
));
}
/// Drop a configured store by name. The bundled seed cannot be removed.
Future<RemoveStoreResponse> removeStore(String name) {
return _admin.removeStore(pb.RemoveStoreRequest(name: name));
}
/// Install a module from a `.fai` bundle. [source] is either a
/// URL or a local filesystem path; [expectedSha256] is an
/// optional hex digest the hub verifies before unpacking.