diff --git a/.gitattributes b/.gitattributes index 5268ebf221..8becc95c1f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,4 @@ /frontend/console/src/protos/**/* linguist-generated=true go.sum linguist-generated=true go.work.sum linguist-generated=true +/python-runtime/ftl/src/ftl/protos/**/* linguist-generated=true \ No newline at end of file diff --git a/backend/protos/buf.gen.yaml b/backend/protos/buf.gen.yaml index 15b176c811..dd8e9a8765 100644 --- a/backend/protos/buf.gen.yaml +++ b/backend/protos/buf.gen.yaml @@ -12,3 +12,7 @@ plugins: - plugin: connect-es out: ../../frontend/console/src/protos opt: target=ts + - plugin: python + out: ../../python-runtime/ftl/src/ftl/protos + opt: + - pyi_out=../../python-runtime/ftl/src/ftl/protos diff --git a/python-runtime/ftl/pyproject.toml b/python-runtime/ftl/pyproject.toml index 36c67b968c..a32edf62c0 100644 --- a/python-runtime/ftl/pyproject.toml +++ b/python-runtime/ftl/pyproject.toml @@ -7,7 +7,9 @@ authors = [ { name = "Moe Jangda", email = "moe@tbd.email" } ] requires-python = ">=3.12" -dependencies = [] +dependencies = [ + "protobuf>=5.28.3", +] [build-system] requires = ["hatchling"] diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/admin_pb2.py b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/admin_pb2.py new file mode 100644 index 0000000000..eef4e283da --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/admin_pb2.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xyz/block/ftl/v1/admin.proto +# Protobuf Python Version: 5.28.3 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 28, + 3, + '', + 'xyz/block/ftl/v1/admin.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from xyz.block.ftl.v1 import ftl_pb2 as xyz_dot_block_dot_ftl_dot_v1_dot_ftl__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cxyz/block/ftl/v1/admin.proto\x12\x10xyz.block.ftl.v1\x1a\x1axyz/block/ftl/v1/ftl.proto\"G\n\tConfigRef\x12\x1b\n\x06module\x18\x01 \x01(\tH\x00R\x06module\x88\x01\x01\x12\x12\n\x04name\x18\x02 \x01(\tR\x04nameB\t\n\x07_module\"\xca\x01\n\x11ListConfigRequest\x12\x1b\n\x06module\x18\x01 \x01(\tH\x00R\x06module\x88\x01\x01\x12*\n\x0einclude_values\x18\x02 \x01(\x08H\x01R\rincludeValues\x88\x01\x01\x12\x41\n\x08provider\x18\x03 \x01(\x0e\x32 .xyz.block.ftl.v1.ConfigProviderH\x02R\x08provider\x88\x01\x01\x42\t\n\x07_moduleB\x11\n\x0f_include_valuesB\x0b\n\t_provider\"\xa4\x01\n\x12ListConfigResponse\x12\x45\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32+.xyz.block.ftl.v1.ListConfigResponse.ConfigR\x07\x63onfigs\x1aG\n\x06\x43onfig\x12\x18\n\x07refPath\x18\x01 \x01(\tR\x07refPath\x12\x19\n\x05value\x18\x02 \x01(\x0cH\x00R\x05value\x88\x01\x01\x42\x08\n\x06_value\"A\n\x10GetConfigRequest\x12-\n\x03ref\x18\x01 \x01(\x0b\x32\x1b.xyz.block.ftl.v1.ConfigRefR\x03ref\")\n\x11GetConfigResponse\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\"\xa7\x01\n\x10SetConfigRequest\x12\x41\n\x08provider\x18\x01 \x01(\x0e\x32 .xyz.block.ftl.v1.ConfigProviderH\x00R\x08provider\x88\x01\x01\x12-\n\x03ref\x18\x02 \x01(\x0b\x32\x1b.xyz.block.ftl.v1.ConfigRefR\x03ref\x12\x14\n\x05value\x18\x03 \x01(\x0cR\x05valueB\x0b\n\t_provider\"\x13\n\x11SetConfigResponse\"\x93\x01\n\x12UnsetConfigRequest\x12\x41\n\x08provider\x18\x01 \x01(\x0e\x32 .xyz.block.ftl.v1.ConfigProviderH\x00R\x08provider\x88\x01\x01\x12-\n\x03ref\x18\x02 \x01(\x0b\x32\x1b.xyz.block.ftl.v1.ConfigRefR\x03refB\x0b\n\t_provider\"\x15\n\x13UnsetConfigResponse\"\xcb\x01\n\x12ListSecretsRequest\x12\x1b\n\x06module\x18\x01 \x01(\tH\x00R\x06module\x88\x01\x01\x12*\n\x0einclude_values\x18\x02 \x01(\x08H\x01R\rincludeValues\x88\x01\x01\x12\x41\n\x08provider\x18\x03 \x01(\x0e\x32 .xyz.block.ftl.v1.SecretProviderH\x02R\x08provider\x88\x01\x01\x42\t\n\x07_moduleB\x11\n\x0f_include_valuesB\x0b\n\t_provider\"\xa6\x01\n\x13ListSecretsResponse\x12\x46\n\x07secrets\x18\x01 \x03(\x0b\x32,.xyz.block.ftl.v1.ListSecretsResponse.SecretR\x07secrets\x1aG\n\x06Secret\x12\x18\n\x07refPath\x18\x01 \x01(\tR\x07refPath\x12\x19\n\x05value\x18\x02 \x01(\x0cH\x00R\x05value\x88\x01\x01\x42\x08\n\x06_value\"A\n\x10GetSecretRequest\x12-\n\x03ref\x18\x01 \x01(\x0b\x32\x1b.xyz.block.ftl.v1.ConfigRefR\x03ref\")\n\x11GetSecretResponse\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\"\xa7\x01\n\x10SetSecretRequest\x12\x41\n\x08provider\x18\x01 \x01(\x0e\x32 .xyz.block.ftl.v1.SecretProviderH\x00R\x08provider\x88\x01\x01\x12-\n\x03ref\x18\x02 \x01(\x0b\x32\x1b.xyz.block.ftl.v1.ConfigRefR\x03ref\x12\x14\n\x05value\x18\x03 \x01(\x0cR\x05valueB\x0b\n\t_provider\"\x13\n\x11SetSecretResponse\"\x93\x01\n\x12UnsetSecretRequest\x12\x41\n\x08provider\x18\x01 \x01(\x0e\x32 .xyz.block.ftl.v1.SecretProviderH\x00R\x08provider\x88\x01\x01\x12-\n\x03ref\x18\x02 \x01(\x0b\x32\x1b.xyz.block.ftl.v1.ConfigRefR\x03refB\x0b\n\t_provider\"\x15\n\x13UnsetSecretResponse*D\n\x0e\x43onfigProvider\x12\x11\n\rCONFIG_INLINE\x10\x00\x12\x10\n\x0c\x43ONFIG_ENVAR\x10\x01\x12\r\n\tCONFIG_DB\x10\x02*i\n\x0eSecretProvider\x12\x11\n\rSECRET_INLINE\x10\x00\x12\x10\n\x0cSECRET_ENVAR\x10\x01\x12\x13\n\x0fSECRET_KEYCHAIN\x10\x02\x12\r\n\tSECRET_OP\x10\x03\x12\x0e\n\nSECRET_ASM\x10\x04\x32\x9f\x06\n\x0c\x41\x64minService\x12J\n\x04Ping\x12\x1d.xyz.block.ftl.v1.PingRequest\x1a\x1e.xyz.block.ftl.v1.PingResponse\"\x03\x90\x02\x01\x12W\n\nConfigList\x12#.xyz.block.ftl.v1.ListConfigRequest\x1a$.xyz.block.ftl.v1.ListConfigResponse\x12T\n\tConfigGet\x12\".xyz.block.ftl.v1.GetConfigRequest\x1a#.xyz.block.ftl.v1.GetConfigResponse\x12T\n\tConfigSet\x12\".xyz.block.ftl.v1.SetConfigRequest\x1a#.xyz.block.ftl.v1.SetConfigResponse\x12Z\n\x0b\x43onfigUnset\x12$.xyz.block.ftl.v1.UnsetConfigRequest\x1a%.xyz.block.ftl.v1.UnsetConfigResponse\x12Z\n\x0bSecretsList\x12$.xyz.block.ftl.v1.ListSecretsRequest\x1a%.xyz.block.ftl.v1.ListSecretsResponse\x12T\n\tSecretGet\x12\".xyz.block.ftl.v1.GetSecretRequest\x1a#.xyz.block.ftl.v1.GetSecretResponse\x12T\n\tSecretSet\x12\".xyz.block.ftl.v1.SetSecretRequest\x1a#.xyz.block.ftl.v1.SetSecretResponse\x12Z\n\x0bSecretUnset\x12$.xyz.block.ftl.v1.UnsetSecretRequest\x1a%.xyz.block.ftl.v1.UnsetSecretResponseBDP\x01Z@github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1;ftlv1b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xyz.block.ftl.v1.admin_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'P\001Z@github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1;ftlv1' + _globals['_ADMINSERVICE'].methods_by_name['Ping']._loaded_options = None + _globals['_ADMINSERVICE'].methods_by_name['Ping']._serialized_options = b'\220\002\001' + _globals['_CONFIGPROVIDER']._serialized_start=1846 + _globals['_CONFIGPROVIDER']._serialized_end=1914 + _globals['_SECRETPROVIDER']._serialized_start=1916 + _globals['_SECRETPROVIDER']._serialized_end=2021 + _globals['_CONFIGREF']._serialized_start=78 + _globals['_CONFIGREF']._serialized_end=149 + _globals['_LISTCONFIGREQUEST']._serialized_start=152 + _globals['_LISTCONFIGREQUEST']._serialized_end=354 + _globals['_LISTCONFIGRESPONSE']._serialized_start=357 + _globals['_LISTCONFIGRESPONSE']._serialized_end=521 + _globals['_LISTCONFIGRESPONSE_CONFIG']._serialized_start=450 + _globals['_LISTCONFIGRESPONSE_CONFIG']._serialized_end=521 + _globals['_GETCONFIGREQUEST']._serialized_start=523 + _globals['_GETCONFIGREQUEST']._serialized_end=588 + _globals['_GETCONFIGRESPONSE']._serialized_start=590 + _globals['_GETCONFIGRESPONSE']._serialized_end=631 + _globals['_SETCONFIGREQUEST']._serialized_start=634 + _globals['_SETCONFIGREQUEST']._serialized_end=801 + _globals['_SETCONFIGRESPONSE']._serialized_start=803 + _globals['_SETCONFIGRESPONSE']._serialized_end=822 + _globals['_UNSETCONFIGREQUEST']._serialized_start=825 + _globals['_UNSETCONFIGREQUEST']._serialized_end=972 + _globals['_UNSETCONFIGRESPONSE']._serialized_start=974 + _globals['_UNSETCONFIGRESPONSE']._serialized_end=995 + _globals['_LISTSECRETSREQUEST']._serialized_start=998 + _globals['_LISTSECRETSREQUEST']._serialized_end=1201 + _globals['_LISTSECRETSRESPONSE']._serialized_start=1204 + _globals['_LISTSECRETSRESPONSE']._serialized_end=1370 + _globals['_LISTSECRETSRESPONSE_SECRET']._serialized_start=1299 + _globals['_LISTSECRETSRESPONSE_SECRET']._serialized_end=1370 + _globals['_GETSECRETREQUEST']._serialized_start=1372 + _globals['_GETSECRETREQUEST']._serialized_end=1437 + _globals['_GETSECRETRESPONSE']._serialized_start=1439 + _globals['_GETSECRETRESPONSE']._serialized_end=1480 + _globals['_SETSECRETREQUEST']._serialized_start=1483 + _globals['_SETSECRETREQUEST']._serialized_end=1650 + _globals['_SETSECRETRESPONSE']._serialized_start=1652 + _globals['_SETSECRETRESPONSE']._serialized_end=1671 + _globals['_UNSETSECRETREQUEST']._serialized_start=1674 + _globals['_UNSETSECRETREQUEST']._serialized_end=1821 + _globals['_UNSETSECRETRESPONSE']._serialized_start=1823 + _globals['_UNSETSECRETRESPONSE']._serialized_end=1844 + _globals['_ADMINSERVICE']._serialized_start=2024 + _globals['_ADMINSERVICE']._serialized_end=2823 +# @@protoc_insertion_point(module_scope) diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/admin_pb2.pyi b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/admin_pb2.pyi new file mode 100644 index 0000000000..766323fc78 --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/admin_pb2.pyi @@ -0,0 +1,160 @@ +from xyz.block.ftl.v1 import ftl_pb2 as _ftl_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class ConfigProvider(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + CONFIG_INLINE: _ClassVar[ConfigProvider] + CONFIG_ENVAR: _ClassVar[ConfigProvider] + CONFIG_DB: _ClassVar[ConfigProvider] + +class SecretProvider(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + SECRET_INLINE: _ClassVar[SecretProvider] + SECRET_ENVAR: _ClassVar[SecretProvider] + SECRET_KEYCHAIN: _ClassVar[SecretProvider] + SECRET_OP: _ClassVar[SecretProvider] + SECRET_ASM: _ClassVar[SecretProvider] +CONFIG_INLINE: ConfigProvider +CONFIG_ENVAR: ConfigProvider +CONFIG_DB: ConfigProvider +SECRET_INLINE: SecretProvider +SECRET_ENVAR: SecretProvider +SECRET_KEYCHAIN: SecretProvider +SECRET_OP: SecretProvider +SECRET_ASM: SecretProvider + +class ConfigRef(_message.Message): + __slots__ = ("module", "name") + MODULE_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + module: str + name: str + def __init__(self, module: _Optional[str] = ..., name: _Optional[str] = ...) -> None: ... + +class ListConfigRequest(_message.Message): + __slots__ = ("module", "include_values", "provider") + MODULE_FIELD_NUMBER: _ClassVar[int] + INCLUDE_VALUES_FIELD_NUMBER: _ClassVar[int] + PROVIDER_FIELD_NUMBER: _ClassVar[int] + module: str + include_values: bool + provider: ConfigProvider + def __init__(self, module: _Optional[str] = ..., include_values: bool = ..., provider: _Optional[_Union[ConfigProvider, str]] = ...) -> None: ... + +class ListConfigResponse(_message.Message): + __slots__ = ("configs",) + class Config(_message.Message): + __slots__ = ("refPath", "value") + REFPATH_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + refPath: str + value: bytes + def __init__(self, refPath: _Optional[str] = ..., value: _Optional[bytes] = ...) -> None: ... + CONFIGS_FIELD_NUMBER: _ClassVar[int] + configs: _containers.RepeatedCompositeFieldContainer[ListConfigResponse.Config] + def __init__(self, configs: _Optional[_Iterable[_Union[ListConfigResponse.Config, _Mapping]]] = ...) -> None: ... + +class GetConfigRequest(_message.Message): + __slots__ = ("ref",) + REF_FIELD_NUMBER: _ClassVar[int] + ref: ConfigRef + def __init__(self, ref: _Optional[_Union[ConfigRef, _Mapping]] = ...) -> None: ... + +class GetConfigResponse(_message.Message): + __slots__ = ("value",) + VALUE_FIELD_NUMBER: _ClassVar[int] + value: bytes + def __init__(self, value: _Optional[bytes] = ...) -> None: ... + +class SetConfigRequest(_message.Message): + __slots__ = ("provider", "ref", "value") + PROVIDER_FIELD_NUMBER: _ClassVar[int] + REF_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + provider: ConfigProvider + ref: ConfigRef + value: bytes + def __init__(self, provider: _Optional[_Union[ConfigProvider, str]] = ..., ref: _Optional[_Union[ConfigRef, _Mapping]] = ..., value: _Optional[bytes] = ...) -> None: ... + +class SetConfigResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class UnsetConfigRequest(_message.Message): + __slots__ = ("provider", "ref") + PROVIDER_FIELD_NUMBER: _ClassVar[int] + REF_FIELD_NUMBER: _ClassVar[int] + provider: ConfigProvider + ref: ConfigRef + def __init__(self, provider: _Optional[_Union[ConfigProvider, str]] = ..., ref: _Optional[_Union[ConfigRef, _Mapping]] = ...) -> None: ... + +class UnsetConfigResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class ListSecretsRequest(_message.Message): + __slots__ = ("module", "include_values", "provider") + MODULE_FIELD_NUMBER: _ClassVar[int] + INCLUDE_VALUES_FIELD_NUMBER: _ClassVar[int] + PROVIDER_FIELD_NUMBER: _ClassVar[int] + module: str + include_values: bool + provider: SecretProvider + def __init__(self, module: _Optional[str] = ..., include_values: bool = ..., provider: _Optional[_Union[SecretProvider, str]] = ...) -> None: ... + +class ListSecretsResponse(_message.Message): + __slots__ = ("secrets",) + class Secret(_message.Message): + __slots__ = ("refPath", "value") + REFPATH_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + refPath: str + value: bytes + def __init__(self, refPath: _Optional[str] = ..., value: _Optional[bytes] = ...) -> None: ... + SECRETS_FIELD_NUMBER: _ClassVar[int] + secrets: _containers.RepeatedCompositeFieldContainer[ListSecretsResponse.Secret] + def __init__(self, secrets: _Optional[_Iterable[_Union[ListSecretsResponse.Secret, _Mapping]]] = ...) -> None: ... + +class GetSecretRequest(_message.Message): + __slots__ = ("ref",) + REF_FIELD_NUMBER: _ClassVar[int] + ref: ConfigRef + def __init__(self, ref: _Optional[_Union[ConfigRef, _Mapping]] = ...) -> None: ... + +class GetSecretResponse(_message.Message): + __slots__ = ("value",) + VALUE_FIELD_NUMBER: _ClassVar[int] + value: bytes + def __init__(self, value: _Optional[bytes] = ...) -> None: ... + +class SetSecretRequest(_message.Message): + __slots__ = ("provider", "ref", "value") + PROVIDER_FIELD_NUMBER: _ClassVar[int] + REF_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + provider: SecretProvider + ref: ConfigRef + value: bytes + def __init__(self, provider: _Optional[_Union[SecretProvider, str]] = ..., ref: _Optional[_Union[ConfigRef, _Mapping]] = ..., value: _Optional[bytes] = ...) -> None: ... + +class SetSecretResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class UnsetSecretRequest(_message.Message): + __slots__ = ("provider", "ref") + PROVIDER_FIELD_NUMBER: _ClassVar[int] + REF_FIELD_NUMBER: _ClassVar[int] + provider: SecretProvider + ref: ConfigRef + def __init__(self, provider: _Optional[_Union[SecretProvider, str]] = ..., ref: _Optional[_Union[ConfigRef, _Mapping]] = ...) -> None: ... + +class UnsetSecretResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/console/console_pb2.py b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/console/console_pb2.py new file mode 100644 index 0000000000..20e7db3b07 --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/console/console_pb2.py @@ -0,0 +1,131 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xyz/block/ftl/v1/console/console.proto +# Protobuf Python Version: 5.28.3 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 28, + 3, + '', + 'xyz/block/ftl/v1/console/console.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from xyz.block.ftl.v1 import ftl_pb2 as xyz_dot_block_dot_ftl_dot_v1_dot_ftl__pb2 +from xyz.block.ftl.v1.schema import schema_pb2 as xyz_dot_block_dot_ftl_dot_v1_dot_schema_dot_schema__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&xyz/block/ftl/v1/console/console.proto\x12\x18xyz.block.ftl.v1.console\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1axyz/block/ftl/v1/ftl.proto\x1a$xyz/block/ftl/v1/schema/schema.proto\"\xb6\x03\n\x08LogEvent\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKey\x12$\n\x0brequest_key\x18\x02 \x01(\tH\x00R\nrequestKey\x88\x01\x01\x12\x39\n\ntime_stamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimeStamp\x12\x1b\n\tlog_level\x18\x04 \x01(\x05R\x08logLevel\x12R\n\nattributes\x18\x05 \x03(\x0b\x32\x32.xyz.block.ftl.v1.console.LogEvent.AttributesEntryR\nattributes\x12\x18\n\x07message\x18\x06 \x01(\tR\x07message\x12\x19\n\x05\x65rror\x18\x07 \x01(\tH\x01R\x05\x65rror\x88\x01\x01\x12\x19\n\x05stack\x18\x08 \x01(\tH\x02R\x05stack\x88\x01\x01\x1a=\n\x0f\x41ttributesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x0e\n\x0c_request_keyB\x08\n\x06_errorB\x08\n\x06_stack\"\x95\x04\n\tCallEvent\x12$\n\x0brequest_key\x18\x01 \x01(\tH\x00R\nrequestKey\x88\x01\x01\x12%\n\x0e\x64\x65ployment_key\x18\x02 \x01(\tR\rdeploymentKey\x12\x39\n\ntime_stamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimeStamp\x12I\n\x0fsource_verb_ref\x18\x0b \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefH\x01R\rsourceVerbRef\x88\x01\x01\x12N\n\x14\x64\x65stination_verb_ref\x18\x0c \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x12\x64\x65stinationVerbRef\x12\x35\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x18\n\x07request\x18\x07 \x01(\tR\x07request\x12\x1a\n\x08response\x18\x08 \x01(\tR\x08response\x12\x19\n\x05\x65rror\x18\t \x01(\tH\x02R\x05\x65rror\x88\x01\x01\x12\x19\n\x05stack\x18\n \x01(\tH\x03R\x05stack\x88\x01\x01\x42\x0e\n\x0c_request_keyB\x12\n\x10_source_verb_refB\x08\n\x06_errorB\x08\n\x06_stackJ\x04\x08\x04\x10\x05J\x04\x08\x05\x10\x06\"\xb8\x01\n\x16\x44\x65ploymentCreatedEvent\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x1a\n\x08language\x18\x02 \x01(\tR\x08language\x12\x1f\n\x0bmodule_name\x18\x03 \x01(\tR\nmoduleName\x12!\n\x0cmin_replicas\x18\x04 \x01(\x05R\x0bminReplicas\x12\x1f\n\x08replaced\x18\x05 \x01(\tH\x00R\x08replaced\x88\x01\x01\x42\x0b\n\t_replaced\"y\n\x16\x44\x65ploymentUpdatedEvent\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12!\n\x0cmin_replicas\x18\x02 \x01(\x05R\x0bminReplicas\x12*\n\x11prev_min_replicas\x18\x03 \x01(\x05R\x0fprevMinReplicas\"\x8e\x04\n\x0cIngressEvent\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKey\x12$\n\x0brequest_key\x18\x02 \x01(\tH\x00R\nrequestKey\x88\x01\x01\x12\x37\n\x08verb_ref\x18\x03 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x07verbRef\x12\x16\n\x06method\x18\x04 \x01(\tR\x06method\x12\x12\n\x04path\x18\x05 \x01(\tR\x04path\x12\x1f\n\x0bstatus_code\x18\x07 \x01(\x05R\nstatusCode\x12\x39\n\ntime_stamp\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimeStamp\x12\x35\n\x08\x64uration\x18\t \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x18\n\x07request\x18\n \x01(\tR\x07request\x12%\n\x0erequest_header\x18\x0b \x01(\tR\rrequestHeader\x12\x1a\n\x08response\x18\x0c \x01(\tR\x08response\x12\'\n\x0fresponse_header\x18\r \x01(\tR\x0eresponseHeader\x12\x19\n\x05\x65rror\x18\x0e \x01(\tH\x01R\x05\x65rror\x88\x01\x01\x42\x0e\n\x0c_request_keyB\x08\n\x06_error\"\xe6\x02\n\x12\x43ronScheduledEvent\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKey\x12\x37\n\x08verb_ref\x18\x02 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x07verbRef\x12\x39\n\ntime_stamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimeStamp\x12\x35\n\x08\x64uration\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12=\n\x0cscheduled_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0bscheduledAt\x12\x1a\n\x08schedule\x18\x06 \x01(\tR\x08schedule\x12\x19\n\x05\x65rror\x18\x07 \x01(\tH\x00R\x05\x65rror\x88\x01\x01\x42\x08\n\x06_error\"\x9b\x03\n\x11\x41syncExecuteEvent\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKey\x12$\n\x0brequest_key\x18\x02 \x01(\tH\x00R\nrequestKey\x88\x01\x01\x12\x37\n\x08verb_ref\x18\x03 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x07verbRef\x12\x39\n\ntime_stamp\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimeStamp\x12\x35\n\x08\x64uration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12Y\n\x10\x61sync_event_type\x18\x06 \x01(\x0e\x32/.xyz.block.ftl.v1.console.AsyncExecuteEventTypeR\x0e\x61syncEventType\x12\x19\n\x05\x65rror\x18\x07 \x01(\tH\x01R\x05\x65rror\x88\x01\x01\x42\x0e\n\x0c_request_keyB\x08\n\x06_error\"\x7f\n\x06\x43onfig\x12\x37\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ConfigR\x06\x63onfig\x12<\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\nreferences\"\x8f\x01\n\x04\x44\x61ta\x12\x31\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.DataR\x04\x64\x61ta\x12\x16\n\x06schema\x18\x02 \x01(\tR\x06schema\x12<\n\nreferences\x18\x03 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\nreferences\"\x87\x01\n\x08\x44\x61tabase\x12=\n\x08\x64\x61tabase\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.DatabaseR\x08\x64\x61tabase\x12<\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\nreferences\"w\n\x04\x45num\x12\x31\n\x04\x65num\x18\x01 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.EnumR\x04\x65num\x12<\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\nreferences\"{\n\x05Topic\x12\x34\n\x05topic\x18\x01 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.TopicR\x05topic\x12<\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\nreferences\"\x8b\x01\n\tTypeAlias\x12@\n\ttypealias\x18\x01 \x01(\x0b\x32\".xyz.block.ftl.v1.schema.TypeAliasR\ttypealias\x12<\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\nreferences\"\x7f\n\x06Secret\x12\x37\n\x06secret\x18\x01 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.SecretR\x06secret\x12<\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\nreferences\"\x97\x01\n\x0cSubscription\x12I\n\x0csubscription\x18\x01 \x01(\x0b\x32%.xyz.block.ftl.v1.schema.SubscriptionR\x0csubscription\x12<\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\nreferences\"\xbf\x01\n\x04Verb\x12\x31\n\x04verb\x18\x01 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.VerbR\x04verb\x12\x16\n\x06schema\x18\x02 \x01(\tR\x06schema\x12.\n\x13json_request_schema\x18\x03 \x01(\tR\x11jsonRequestSchema\x12<\n\nreferences\x18\x04 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\nreferences\"\x9f\x05\n\x06Module\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12%\n\x0e\x64\x65ployment_key\x18\x02 \x01(\tR\rdeploymentKey\x12\x1a\n\x08language\x18\x03 \x01(\tR\x08language\x12\x16\n\x06schema\x18\x04 \x01(\tR\x06schema\x12\x34\n\x05verbs\x18\x05 \x03(\x0b\x32\x1e.xyz.block.ftl.v1.console.VerbR\x05verbs\x12\x32\n\x04\x64\x61ta\x18\x06 \x03(\x0b\x32\x1e.xyz.block.ftl.v1.console.DataR\x04\x64\x61ta\x12:\n\x07secrets\x18\x07 \x03(\x0b\x32 .xyz.block.ftl.v1.console.SecretR\x07secrets\x12:\n\x07\x63onfigs\x18\x08 \x03(\x0b\x32 .xyz.block.ftl.v1.console.ConfigR\x07\x63onfigs\x12@\n\tdatabases\x18\t \x03(\x0b\x32\".xyz.block.ftl.v1.console.DatabaseR\tdatabases\x12\x34\n\x05\x65nums\x18\n \x03(\x0b\x32\x1e.xyz.block.ftl.v1.console.EnumR\x05\x65nums\x12\x37\n\x06topics\x18\x0b \x03(\x0b\x32\x1f.xyz.block.ftl.v1.console.TopicR\x06topics\x12\x45\n\x0btypealiases\x18\x0c \x03(\x0b\x32#.xyz.block.ftl.v1.console.TypeAliasR\x0btypealiases\x12L\n\rsubscriptions\x18\r \x03(\x0b\x32&.xyz.block.ftl.v1.console.SubscriptionR\rsubscriptions\")\n\rTopologyGroup\x12\x18\n\x07modules\x18\x01 \x03(\tR\x07modules\"K\n\x08Topology\x12?\n\x06levels\x18\x01 \x03(\x0b\x32\'.xyz.block.ftl.v1.console.TopologyGroupR\x06levels\"\x13\n\x11GetModulesRequest\"\x90\x01\n\x12GetModulesResponse\x12:\n\x07modules\x18\x01 \x03(\x0b\x32 .xyz.block.ftl.v1.console.ModuleR\x07modules\x12>\n\x08topology\x18\x02 \x01(\x0b\x32\".xyz.block.ftl.v1.console.TopologyR\x08topology\"\x16\n\x14StreamModulesRequest\"S\n\x15StreamModulesResponse\x12:\n\x07modules\x18\x01 \x03(\x0b\x32 .xyz.block.ftl.v1.console.ModuleR\x07modules\"\xe4\r\n\x0b\x45ventsQuery\x12\x46\n\x07\x66ilters\x18\x01 \x03(\x0b\x32,.xyz.block.ftl.v1.console.EventsQuery.FilterR\x07\x66ilters\x12\x14\n\x05limit\x18\x02 \x01(\x05R\x05limit\x12\x41\n\x05order\x18\x03 \x01(\x0e\x32+.xyz.block.ftl.v1.console.EventsQuery.OrderR\x05order\x1a#\n\x0bLimitFilter\x12\x14\n\x05limit\x18\x01 \x01(\x05R\x05limit\x1aQ\n\x0eLogLevelFilter\x12?\n\tlog_level\x18\x01 \x01(\x0e\x32\".xyz.block.ftl.v1.console.LogLevelR\x08logLevel\x1a\x34\n\x10\x44\x65ploymentFilter\x12 \n\x0b\x64\x65ployments\x18\x01 \x03(\tR\x0b\x64\x65ployments\x1a+\n\rRequestFilter\x12\x1a\n\x08requests\x18\x01 \x03(\tR\x08requests\x1aW\n\x0f\x45ventTypeFilter\x12\x44\n\x0b\x65vent_types\x18\x01 \x03(\x0e\x32#.xyz.block.ftl.v1.console.EventTypeR\neventTypes\x1a\xaa\x01\n\nTimeFilter\x12>\n\nolder_than\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\tolderThan\x88\x01\x01\x12>\n\nnewer_than\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\tnewerThan\x88\x01\x01\x42\r\n\x0b_older_thanB\r\n\x0b_newer_than\x1as\n\x08IDFilter\x12\"\n\nlower_than\x18\x01 \x01(\x03H\x00R\tlowerThan\x88\x01\x01\x12$\n\x0bhigher_than\x18\x02 \x01(\x03H\x01R\nhigherThan\x88\x01\x01\x42\r\n\x0b_lower_thanB\x0e\n\x0c_higher_than\x1a\x99\x01\n\nCallFilter\x12\x1f\n\x0b\x64\x65st_module\x18\x01 \x01(\tR\ndestModule\x12 \n\tdest_verb\x18\x02 \x01(\tH\x00R\x08\x64\x65stVerb\x88\x01\x01\x12(\n\rsource_module\x18\x03 \x01(\tH\x01R\x0csourceModule\x88\x01\x01\x42\x0c\n\n_dest_verbB\x10\n\x0e_source_module\x1aH\n\x0cModuleFilter\x12\x16\n\x06module\x18\x01 \x01(\tR\x06module\x12\x17\n\x04verb\x18\x02 \x01(\tH\x00R\x04verb\x88\x01\x01\x42\x07\n\x05_verb\x1a\xdb\x05\n\x06\x46ilter\x12I\n\x05limit\x18\x01 \x01(\x0b\x32\x31.xyz.block.ftl.v1.console.EventsQuery.LimitFilterH\x00R\x05limit\x12S\n\tlog_level\x18\x02 \x01(\x0b\x32\x34.xyz.block.ftl.v1.console.EventsQuery.LogLevelFilterH\x00R\x08logLevel\x12Z\n\x0b\x64\x65ployments\x18\x03 \x01(\x0b\x32\x36.xyz.block.ftl.v1.console.EventsQuery.DeploymentFilterH\x00R\x0b\x64\x65ployments\x12Q\n\x08requests\x18\x04 \x01(\x0b\x32\x33.xyz.block.ftl.v1.console.EventsQuery.RequestFilterH\x00R\x08requests\x12X\n\x0b\x65vent_types\x18\x05 \x01(\x0b\x32\x35.xyz.block.ftl.v1.console.EventsQuery.EventTypeFilterH\x00R\neventTypes\x12\x46\n\x04time\x18\x06 \x01(\x0b\x32\x30.xyz.block.ftl.v1.console.EventsQuery.TimeFilterH\x00R\x04time\x12@\n\x02id\x18\x07 \x01(\x0b\x32..xyz.block.ftl.v1.console.EventsQuery.IDFilterH\x00R\x02id\x12\x46\n\x04\x63\x61ll\x18\x08 \x01(\x0b\x32\x30.xyz.block.ftl.v1.console.EventsQuery.CallFilterH\x00R\x04\x63\x61ll\x12L\n\x06module\x18\t \x01(\x0b\x32\x32.xyz.block.ftl.v1.console.EventsQuery.ModuleFilterH\x00R\x06moduleB\x08\n\x06\x66ilter\"\x1a\n\x05Order\x12\x07\n\x03\x41SC\x10\x00\x12\x08\n\x04\x44\x45SC\x10\x01\"\xaf\x01\n\x13StreamEventsRequest\x12G\n\x0fupdate_interval\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00R\x0eupdateInterval\x88\x01\x01\x12;\n\x05query\x18\x02 \x01(\x0b\x32%.xyz.block.ftl.v1.console.EventsQueryR\x05queryB\x12\n\x10_update_interval\"O\n\x14StreamEventsResponse\x12\x37\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x1f.xyz.block.ftl.v1.console.EventR\x06\x65vents\"\x83\x05\n\x05\x45vent\x12\x39\n\ntime_stamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimeStamp\x12\x0e\n\x02id\x18\x02 \x01(\x03R\x02id\x12\x36\n\x03log\x18\x03 \x01(\x0b\x32\".xyz.block.ftl.v1.console.LogEventH\x00R\x03log\x12\x39\n\x04\x63\x61ll\x18\x04 \x01(\x0b\x32#.xyz.block.ftl.v1.console.CallEventH\x00R\x04\x63\x61ll\x12\x61\n\x12\x64\x65ployment_created\x18\x05 \x01(\x0b\x32\x30.xyz.block.ftl.v1.console.DeploymentCreatedEventH\x00R\x11\x64\x65ploymentCreated\x12\x61\n\x12\x64\x65ployment_updated\x18\x06 \x01(\x0b\x32\x30.xyz.block.ftl.v1.console.DeploymentUpdatedEventH\x00R\x11\x64\x65ploymentUpdated\x12\x42\n\x07ingress\x18\x07 \x01(\x0b\x32&.xyz.block.ftl.v1.console.IngressEventH\x00R\x07ingress\x12U\n\x0e\x63ron_scheduled\x18\x08 \x01(\x0b\x32,.xyz.block.ftl.v1.console.CronScheduledEventH\x00R\rcronScheduled\x12R\n\rasync_execute\x18\t \x01(\x0b\x32+.xyz.block.ftl.v1.console.AsyncExecuteEventH\x00R\x0c\x61syncExecuteB\x07\n\x05\x65ntry\"t\n\x11GetEventsResponse\x12\x37\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x1f.xyz.block.ftl.v1.console.EventR\x06\x65vents\x12\x1b\n\x06\x63ursor\x18\x02 \x01(\x03H\x00R\x06\x63ursor\x88\x01\x01\x42\t\n\x07_cursor*\xe7\x01\n\tEventType\x12\x16\n\x12\x45VENT_TYPE_UNKNOWN\x10\x00\x12\x12\n\x0e\x45VENT_TYPE_LOG\x10\x01\x12\x13\n\x0f\x45VENT_TYPE_CALL\x10\x02\x12!\n\x1d\x45VENT_TYPE_DEPLOYMENT_CREATED\x10\x03\x12!\n\x1d\x45VENT_TYPE_DEPLOYMENT_UPDATED\x10\x04\x12\x16\n\x12\x45VENT_TYPE_INGRESS\x10\x05\x12\x1d\n\x19\x45VENT_TYPE_CRON_SCHEDULED\x10\x06\x12\x1c\n\x18\x45VENT_TYPE_ASYNC_EXECUTE\x10\x07*\xa7\x01\n\x15\x41syncExecuteEventType\x12$\n ASYNC_EXECUTE_EVENT_TYPE_UNKNOWN\x10\x00\x12!\n\x1d\x41SYNC_EXECUTE_EVENT_TYPE_CRON\x10\x01\x12 \n\x1c\x41SYNC_EXECUTE_EVENT_TYPE_FSM\x10\x02\x12#\n\x1f\x41SYNC_EXECUTE_EVENT_TYPE_PUBSUB\x10\x03*\x88\x01\n\x08LogLevel\x12\x15\n\x11LOG_LEVEL_UNKNOWN\x10\x00\x12\x13\n\x0fLOG_LEVEL_TRACE\x10\x01\x12\x13\n\x0fLOG_LEVEL_DEBUG\x10\x05\x12\x12\n\x0eLOG_LEVEL_INFO\x10\t\x12\x12\n\x0eLOG_LEVEL_WARN\x10\r\x12\x13\n\x0fLOG_LEVEL_ERROR\x10\x11\x32\x8b\x04\n\x0e\x43onsoleService\x12J\n\x04Ping\x12\x1d.xyz.block.ftl.v1.PingRequest\x1a\x1e.xyz.block.ftl.v1.PingResponse\"\x03\x90\x02\x01\x12g\n\nGetModules\x12+.xyz.block.ftl.v1.console.GetModulesRequest\x1a,.xyz.block.ftl.v1.console.GetModulesResponse\x12r\n\rStreamModules\x12..xyz.block.ftl.v1.console.StreamModulesRequest\x1a/.xyz.block.ftl.v1.console.StreamModulesResponse0\x01\x12o\n\x0cStreamEvents\x12-.xyz.block.ftl.v1.console.StreamEventsRequest\x1a..xyz.block.ftl.v1.console.StreamEventsResponse0\x01\x12_\n\tGetEvents\x12%.xyz.block.ftl.v1.console.EventsQuery\x1a+.xyz.block.ftl.v1.console.GetEventsResponseBPP\x01ZLgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/console;pbconsoleb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xyz.block.ftl.v1.console.console_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'P\001ZLgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/console;pbconsole' + _globals['_LOGEVENT_ATTRIBUTESENTRY']._loaded_options = None + _globals['_LOGEVENT_ATTRIBUTESENTRY']._serialized_options = b'8\001' + _globals['_CONSOLESERVICE'].methods_by_name['Ping']._loaded_options = None + _globals['_CONSOLESERVICE'].methods_by_name['Ping']._serialized_options = b'\220\002\001' + _globals['_EVENTTYPE']._serialized_start=7930 + _globals['_EVENTTYPE']._serialized_end=8161 + _globals['_ASYNCEXECUTEEVENTTYPE']._serialized_start=8164 + _globals['_ASYNCEXECUTEEVENTTYPE']._serialized_end=8331 + _globals['_LOGLEVEL']._serialized_start=8334 + _globals['_LOGLEVEL']._serialized_end=8470 + _globals['_LOGEVENT']._serialized_start=200 + _globals['_LOGEVENT']._serialized_end=638 + _globals['_LOGEVENT_ATTRIBUTESENTRY']._serialized_start=541 + _globals['_LOGEVENT_ATTRIBUTESENTRY']._serialized_end=602 + _globals['_CALLEVENT']._serialized_start=641 + _globals['_CALLEVENT']._serialized_end=1174 + _globals['_DEPLOYMENTCREATEDEVENT']._serialized_start=1177 + _globals['_DEPLOYMENTCREATEDEVENT']._serialized_end=1361 + _globals['_DEPLOYMENTUPDATEDEVENT']._serialized_start=1363 + _globals['_DEPLOYMENTUPDATEDEVENT']._serialized_end=1484 + _globals['_INGRESSEVENT']._serialized_start=1487 + _globals['_INGRESSEVENT']._serialized_end=2013 + _globals['_CRONSCHEDULEDEVENT']._serialized_start=2016 + _globals['_CRONSCHEDULEDEVENT']._serialized_end=2374 + _globals['_ASYNCEXECUTEEVENT']._serialized_start=2377 + _globals['_ASYNCEXECUTEEVENT']._serialized_end=2788 + _globals['_CONFIG']._serialized_start=2790 + _globals['_CONFIG']._serialized_end=2917 + _globals['_DATA']._serialized_start=2920 + _globals['_DATA']._serialized_end=3063 + _globals['_DATABASE']._serialized_start=3066 + _globals['_DATABASE']._serialized_end=3201 + _globals['_ENUM']._serialized_start=3203 + _globals['_ENUM']._serialized_end=3322 + _globals['_TOPIC']._serialized_start=3324 + _globals['_TOPIC']._serialized_end=3447 + _globals['_TYPEALIAS']._serialized_start=3450 + _globals['_TYPEALIAS']._serialized_end=3589 + _globals['_SECRET']._serialized_start=3591 + _globals['_SECRET']._serialized_end=3718 + _globals['_SUBSCRIPTION']._serialized_start=3721 + _globals['_SUBSCRIPTION']._serialized_end=3872 + _globals['_VERB']._serialized_start=3875 + _globals['_VERB']._serialized_end=4066 + _globals['_MODULE']._serialized_start=4069 + _globals['_MODULE']._serialized_end=4740 + _globals['_TOPOLOGYGROUP']._serialized_start=4742 + _globals['_TOPOLOGYGROUP']._serialized_end=4783 + _globals['_TOPOLOGY']._serialized_start=4785 + _globals['_TOPOLOGY']._serialized_end=4860 + _globals['_GETMODULESREQUEST']._serialized_start=4862 + _globals['_GETMODULESREQUEST']._serialized_end=4881 + _globals['_GETMODULESRESPONSE']._serialized_start=4884 + _globals['_GETMODULESRESPONSE']._serialized_end=5028 + _globals['_STREAMMODULESREQUEST']._serialized_start=5030 + _globals['_STREAMMODULESREQUEST']._serialized_end=5052 + _globals['_STREAMMODULESRESPONSE']._serialized_start=5054 + _globals['_STREAMMODULESRESPONSE']._serialized_end=5137 + _globals['_EVENTSQUERY']._serialized_start=5140 + _globals['_EVENTSQUERY']._serialized_end=6904 + _globals['_EVENTSQUERY_LIMITFILTER']._serialized_start=5316 + _globals['_EVENTSQUERY_LIMITFILTER']._serialized_end=5351 + _globals['_EVENTSQUERY_LOGLEVELFILTER']._serialized_start=5353 + _globals['_EVENTSQUERY_LOGLEVELFILTER']._serialized_end=5434 + _globals['_EVENTSQUERY_DEPLOYMENTFILTER']._serialized_start=5436 + _globals['_EVENTSQUERY_DEPLOYMENTFILTER']._serialized_end=5488 + _globals['_EVENTSQUERY_REQUESTFILTER']._serialized_start=5490 + _globals['_EVENTSQUERY_REQUESTFILTER']._serialized_end=5533 + _globals['_EVENTSQUERY_EVENTTYPEFILTER']._serialized_start=5535 + _globals['_EVENTSQUERY_EVENTTYPEFILTER']._serialized_end=5622 + _globals['_EVENTSQUERY_TIMEFILTER']._serialized_start=5625 + _globals['_EVENTSQUERY_TIMEFILTER']._serialized_end=5795 + _globals['_EVENTSQUERY_IDFILTER']._serialized_start=5797 + _globals['_EVENTSQUERY_IDFILTER']._serialized_end=5912 + _globals['_EVENTSQUERY_CALLFILTER']._serialized_start=5915 + _globals['_EVENTSQUERY_CALLFILTER']._serialized_end=6068 + _globals['_EVENTSQUERY_MODULEFILTER']._serialized_start=6070 + _globals['_EVENTSQUERY_MODULEFILTER']._serialized_end=6142 + _globals['_EVENTSQUERY_FILTER']._serialized_start=6145 + _globals['_EVENTSQUERY_FILTER']._serialized_end=6876 + _globals['_EVENTSQUERY_ORDER']._serialized_start=6878 + _globals['_EVENTSQUERY_ORDER']._serialized_end=6904 + _globals['_STREAMEVENTSREQUEST']._serialized_start=6907 + _globals['_STREAMEVENTSREQUEST']._serialized_end=7082 + _globals['_STREAMEVENTSRESPONSE']._serialized_start=7084 + _globals['_STREAMEVENTSRESPONSE']._serialized_end=7163 + _globals['_EVENT']._serialized_start=7166 + _globals['_EVENT']._serialized_end=7809 + _globals['_GETEVENTSRESPONSE']._serialized_start=7811 + _globals['_GETEVENTSRESPONSE']._serialized_end=7927 + _globals['_CONSOLESERVICE']._serialized_start=8473 + _globals['_CONSOLESERVICE']._serialized_end=8996 +# @@protoc_insertion_point(module_scope) diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/console/console_pb2.pyi b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/console/console_pb2.pyi new file mode 100644 index 0000000000..47a13d961e --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/console/console_pb2.pyi @@ -0,0 +1,475 @@ +from google.protobuf import duration_pb2 as _duration_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from xyz.block.ftl.v1 import ftl_pb2 as _ftl_pb2 +from xyz.block.ftl.v1.schema import schema_pb2 as _schema_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class EventType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + EVENT_TYPE_UNKNOWN: _ClassVar[EventType] + EVENT_TYPE_LOG: _ClassVar[EventType] + EVENT_TYPE_CALL: _ClassVar[EventType] + EVENT_TYPE_DEPLOYMENT_CREATED: _ClassVar[EventType] + EVENT_TYPE_DEPLOYMENT_UPDATED: _ClassVar[EventType] + EVENT_TYPE_INGRESS: _ClassVar[EventType] + EVENT_TYPE_CRON_SCHEDULED: _ClassVar[EventType] + EVENT_TYPE_ASYNC_EXECUTE: _ClassVar[EventType] + +class AsyncExecuteEventType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + ASYNC_EXECUTE_EVENT_TYPE_UNKNOWN: _ClassVar[AsyncExecuteEventType] + ASYNC_EXECUTE_EVENT_TYPE_CRON: _ClassVar[AsyncExecuteEventType] + ASYNC_EXECUTE_EVENT_TYPE_FSM: _ClassVar[AsyncExecuteEventType] + ASYNC_EXECUTE_EVENT_TYPE_PUBSUB: _ClassVar[AsyncExecuteEventType] + +class LogLevel(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + LOG_LEVEL_UNKNOWN: _ClassVar[LogLevel] + LOG_LEVEL_TRACE: _ClassVar[LogLevel] + LOG_LEVEL_DEBUG: _ClassVar[LogLevel] + LOG_LEVEL_INFO: _ClassVar[LogLevel] + LOG_LEVEL_WARN: _ClassVar[LogLevel] + LOG_LEVEL_ERROR: _ClassVar[LogLevel] +EVENT_TYPE_UNKNOWN: EventType +EVENT_TYPE_LOG: EventType +EVENT_TYPE_CALL: EventType +EVENT_TYPE_DEPLOYMENT_CREATED: EventType +EVENT_TYPE_DEPLOYMENT_UPDATED: EventType +EVENT_TYPE_INGRESS: EventType +EVENT_TYPE_CRON_SCHEDULED: EventType +EVENT_TYPE_ASYNC_EXECUTE: EventType +ASYNC_EXECUTE_EVENT_TYPE_UNKNOWN: AsyncExecuteEventType +ASYNC_EXECUTE_EVENT_TYPE_CRON: AsyncExecuteEventType +ASYNC_EXECUTE_EVENT_TYPE_FSM: AsyncExecuteEventType +ASYNC_EXECUTE_EVENT_TYPE_PUBSUB: AsyncExecuteEventType +LOG_LEVEL_UNKNOWN: LogLevel +LOG_LEVEL_TRACE: LogLevel +LOG_LEVEL_DEBUG: LogLevel +LOG_LEVEL_INFO: LogLevel +LOG_LEVEL_WARN: LogLevel +LOG_LEVEL_ERROR: LogLevel + +class LogEvent(_message.Message): + __slots__ = ("deployment_key", "request_key", "time_stamp", "log_level", "attributes", "message", "error", "stack") + class AttributesEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... + DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] + REQUEST_KEY_FIELD_NUMBER: _ClassVar[int] + TIME_STAMP_FIELD_NUMBER: _ClassVar[int] + LOG_LEVEL_FIELD_NUMBER: _ClassVar[int] + ATTRIBUTES_FIELD_NUMBER: _ClassVar[int] + MESSAGE_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + STACK_FIELD_NUMBER: _ClassVar[int] + deployment_key: str + request_key: str + time_stamp: _timestamp_pb2.Timestamp + log_level: int + attributes: _containers.ScalarMap[str, str] + message: str + error: str + stack: str + def __init__(self, deployment_key: _Optional[str] = ..., request_key: _Optional[str] = ..., time_stamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., log_level: _Optional[int] = ..., attributes: _Optional[_Mapping[str, str]] = ..., message: _Optional[str] = ..., error: _Optional[str] = ..., stack: _Optional[str] = ...) -> None: ... + +class CallEvent(_message.Message): + __slots__ = ("request_key", "deployment_key", "time_stamp", "source_verb_ref", "destination_verb_ref", "duration", "request", "response", "error", "stack") + REQUEST_KEY_FIELD_NUMBER: _ClassVar[int] + DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] + TIME_STAMP_FIELD_NUMBER: _ClassVar[int] + SOURCE_VERB_REF_FIELD_NUMBER: _ClassVar[int] + DESTINATION_VERB_REF_FIELD_NUMBER: _ClassVar[int] + DURATION_FIELD_NUMBER: _ClassVar[int] + REQUEST_FIELD_NUMBER: _ClassVar[int] + RESPONSE_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + STACK_FIELD_NUMBER: _ClassVar[int] + request_key: str + deployment_key: str + time_stamp: _timestamp_pb2.Timestamp + source_verb_ref: _schema_pb2.Ref + destination_verb_ref: _schema_pb2.Ref + duration: _duration_pb2.Duration + request: str + response: str + error: str + stack: str + def __init__(self, request_key: _Optional[str] = ..., deployment_key: _Optional[str] = ..., time_stamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., source_verb_ref: _Optional[_Union[_schema_pb2.Ref, _Mapping]] = ..., destination_verb_ref: _Optional[_Union[_schema_pb2.Ref, _Mapping]] = ..., duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., request: _Optional[str] = ..., response: _Optional[str] = ..., error: _Optional[str] = ..., stack: _Optional[str] = ...) -> None: ... + +class DeploymentCreatedEvent(_message.Message): + __slots__ = ("key", "language", "module_name", "min_replicas", "replaced") + KEY_FIELD_NUMBER: _ClassVar[int] + LANGUAGE_FIELD_NUMBER: _ClassVar[int] + MODULE_NAME_FIELD_NUMBER: _ClassVar[int] + MIN_REPLICAS_FIELD_NUMBER: _ClassVar[int] + REPLACED_FIELD_NUMBER: _ClassVar[int] + key: str + language: str + module_name: str + min_replicas: int + replaced: str + def __init__(self, key: _Optional[str] = ..., language: _Optional[str] = ..., module_name: _Optional[str] = ..., min_replicas: _Optional[int] = ..., replaced: _Optional[str] = ...) -> None: ... + +class DeploymentUpdatedEvent(_message.Message): + __slots__ = ("key", "min_replicas", "prev_min_replicas") + KEY_FIELD_NUMBER: _ClassVar[int] + MIN_REPLICAS_FIELD_NUMBER: _ClassVar[int] + PREV_MIN_REPLICAS_FIELD_NUMBER: _ClassVar[int] + key: str + min_replicas: int + prev_min_replicas: int + def __init__(self, key: _Optional[str] = ..., min_replicas: _Optional[int] = ..., prev_min_replicas: _Optional[int] = ...) -> None: ... + +class IngressEvent(_message.Message): + __slots__ = ("deployment_key", "request_key", "verb_ref", "method", "path", "status_code", "time_stamp", "duration", "request", "request_header", "response", "response_header", "error") + DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] + REQUEST_KEY_FIELD_NUMBER: _ClassVar[int] + VERB_REF_FIELD_NUMBER: _ClassVar[int] + METHOD_FIELD_NUMBER: _ClassVar[int] + PATH_FIELD_NUMBER: _ClassVar[int] + STATUS_CODE_FIELD_NUMBER: _ClassVar[int] + TIME_STAMP_FIELD_NUMBER: _ClassVar[int] + DURATION_FIELD_NUMBER: _ClassVar[int] + REQUEST_FIELD_NUMBER: _ClassVar[int] + REQUEST_HEADER_FIELD_NUMBER: _ClassVar[int] + RESPONSE_FIELD_NUMBER: _ClassVar[int] + RESPONSE_HEADER_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + deployment_key: str + request_key: str + verb_ref: _schema_pb2.Ref + method: str + path: str + status_code: int + time_stamp: _timestamp_pb2.Timestamp + duration: _duration_pb2.Duration + request: str + request_header: str + response: str + response_header: str + error: str + def __init__(self, deployment_key: _Optional[str] = ..., request_key: _Optional[str] = ..., verb_ref: _Optional[_Union[_schema_pb2.Ref, _Mapping]] = ..., method: _Optional[str] = ..., path: _Optional[str] = ..., status_code: _Optional[int] = ..., time_stamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., request: _Optional[str] = ..., request_header: _Optional[str] = ..., response: _Optional[str] = ..., response_header: _Optional[str] = ..., error: _Optional[str] = ...) -> None: ... + +class CronScheduledEvent(_message.Message): + __slots__ = ("deployment_key", "verb_ref", "time_stamp", "duration", "scheduled_at", "schedule", "error") + DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] + VERB_REF_FIELD_NUMBER: _ClassVar[int] + TIME_STAMP_FIELD_NUMBER: _ClassVar[int] + DURATION_FIELD_NUMBER: _ClassVar[int] + SCHEDULED_AT_FIELD_NUMBER: _ClassVar[int] + SCHEDULE_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + deployment_key: str + verb_ref: _schema_pb2.Ref + time_stamp: _timestamp_pb2.Timestamp + duration: _duration_pb2.Duration + scheduled_at: _timestamp_pb2.Timestamp + schedule: str + error: str + def __init__(self, deployment_key: _Optional[str] = ..., verb_ref: _Optional[_Union[_schema_pb2.Ref, _Mapping]] = ..., time_stamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., scheduled_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., schedule: _Optional[str] = ..., error: _Optional[str] = ...) -> None: ... + +class AsyncExecuteEvent(_message.Message): + __slots__ = ("deployment_key", "request_key", "verb_ref", "time_stamp", "duration", "async_event_type", "error") + DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] + REQUEST_KEY_FIELD_NUMBER: _ClassVar[int] + VERB_REF_FIELD_NUMBER: _ClassVar[int] + TIME_STAMP_FIELD_NUMBER: _ClassVar[int] + DURATION_FIELD_NUMBER: _ClassVar[int] + ASYNC_EVENT_TYPE_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + deployment_key: str + request_key: str + verb_ref: _schema_pb2.Ref + time_stamp: _timestamp_pb2.Timestamp + duration: _duration_pb2.Duration + async_event_type: AsyncExecuteEventType + error: str + def __init__(self, deployment_key: _Optional[str] = ..., request_key: _Optional[str] = ..., verb_ref: _Optional[_Union[_schema_pb2.Ref, _Mapping]] = ..., time_stamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., async_event_type: _Optional[_Union[AsyncExecuteEventType, str]] = ..., error: _Optional[str] = ...) -> None: ... + +class Config(_message.Message): + __slots__ = ("config", "references") + CONFIG_FIELD_NUMBER: _ClassVar[int] + REFERENCES_FIELD_NUMBER: _ClassVar[int] + config: _schema_pb2.Config + references: _containers.RepeatedCompositeFieldContainer[_schema_pb2.Ref] + def __init__(self, config: _Optional[_Union[_schema_pb2.Config, _Mapping]] = ..., references: _Optional[_Iterable[_Union[_schema_pb2.Ref, _Mapping]]] = ...) -> None: ... + +class Data(_message.Message): + __slots__ = ("data", "schema", "references") + DATA_FIELD_NUMBER: _ClassVar[int] + SCHEMA_FIELD_NUMBER: _ClassVar[int] + REFERENCES_FIELD_NUMBER: _ClassVar[int] + data: _schema_pb2.Data + schema: str + references: _containers.RepeatedCompositeFieldContainer[_schema_pb2.Ref] + def __init__(self, data: _Optional[_Union[_schema_pb2.Data, _Mapping]] = ..., schema: _Optional[str] = ..., references: _Optional[_Iterable[_Union[_schema_pb2.Ref, _Mapping]]] = ...) -> None: ... + +class Database(_message.Message): + __slots__ = ("database", "references") + DATABASE_FIELD_NUMBER: _ClassVar[int] + REFERENCES_FIELD_NUMBER: _ClassVar[int] + database: _schema_pb2.Database + references: _containers.RepeatedCompositeFieldContainer[_schema_pb2.Ref] + def __init__(self, database: _Optional[_Union[_schema_pb2.Database, _Mapping]] = ..., references: _Optional[_Iterable[_Union[_schema_pb2.Ref, _Mapping]]] = ...) -> None: ... + +class Enum(_message.Message): + __slots__ = ("enum", "references") + ENUM_FIELD_NUMBER: _ClassVar[int] + REFERENCES_FIELD_NUMBER: _ClassVar[int] + enum: _schema_pb2.Enum + references: _containers.RepeatedCompositeFieldContainer[_schema_pb2.Ref] + def __init__(self, enum: _Optional[_Union[_schema_pb2.Enum, _Mapping]] = ..., references: _Optional[_Iterable[_Union[_schema_pb2.Ref, _Mapping]]] = ...) -> None: ... + +class Topic(_message.Message): + __slots__ = ("topic", "references") + TOPIC_FIELD_NUMBER: _ClassVar[int] + REFERENCES_FIELD_NUMBER: _ClassVar[int] + topic: _schema_pb2.Topic + references: _containers.RepeatedCompositeFieldContainer[_schema_pb2.Ref] + def __init__(self, topic: _Optional[_Union[_schema_pb2.Topic, _Mapping]] = ..., references: _Optional[_Iterable[_Union[_schema_pb2.Ref, _Mapping]]] = ...) -> None: ... + +class TypeAlias(_message.Message): + __slots__ = ("typealias", "references") + TYPEALIAS_FIELD_NUMBER: _ClassVar[int] + REFERENCES_FIELD_NUMBER: _ClassVar[int] + typealias: _schema_pb2.TypeAlias + references: _containers.RepeatedCompositeFieldContainer[_schema_pb2.Ref] + def __init__(self, typealias: _Optional[_Union[_schema_pb2.TypeAlias, _Mapping]] = ..., references: _Optional[_Iterable[_Union[_schema_pb2.Ref, _Mapping]]] = ...) -> None: ... + +class Secret(_message.Message): + __slots__ = ("secret", "references") + SECRET_FIELD_NUMBER: _ClassVar[int] + REFERENCES_FIELD_NUMBER: _ClassVar[int] + secret: _schema_pb2.Secret + references: _containers.RepeatedCompositeFieldContainer[_schema_pb2.Ref] + def __init__(self, secret: _Optional[_Union[_schema_pb2.Secret, _Mapping]] = ..., references: _Optional[_Iterable[_Union[_schema_pb2.Ref, _Mapping]]] = ...) -> None: ... + +class Subscription(_message.Message): + __slots__ = ("subscription", "references") + SUBSCRIPTION_FIELD_NUMBER: _ClassVar[int] + REFERENCES_FIELD_NUMBER: _ClassVar[int] + subscription: _schema_pb2.Subscription + references: _containers.RepeatedCompositeFieldContainer[_schema_pb2.Ref] + def __init__(self, subscription: _Optional[_Union[_schema_pb2.Subscription, _Mapping]] = ..., references: _Optional[_Iterable[_Union[_schema_pb2.Ref, _Mapping]]] = ...) -> None: ... + +class Verb(_message.Message): + __slots__ = ("verb", "schema", "json_request_schema", "references") + VERB_FIELD_NUMBER: _ClassVar[int] + SCHEMA_FIELD_NUMBER: _ClassVar[int] + JSON_REQUEST_SCHEMA_FIELD_NUMBER: _ClassVar[int] + REFERENCES_FIELD_NUMBER: _ClassVar[int] + verb: _schema_pb2.Verb + schema: str + json_request_schema: str + references: _containers.RepeatedCompositeFieldContainer[_schema_pb2.Ref] + def __init__(self, verb: _Optional[_Union[_schema_pb2.Verb, _Mapping]] = ..., schema: _Optional[str] = ..., json_request_schema: _Optional[str] = ..., references: _Optional[_Iterable[_Union[_schema_pb2.Ref, _Mapping]]] = ...) -> None: ... + +class Module(_message.Message): + __slots__ = ("name", "deployment_key", "language", "schema", "verbs", "data", "secrets", "configs", "databases", "enums", "topics", "typealiases", "subscriptions") + NAME_FIELD_NUMBER: _ClassVar[int] + DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] + LANGUAGE_FIELD_NUMBER: _ClassVar[int] + SCHEMA_FIELD_NUMBER: _ClassVar[int] + VERBS_FIELD_NUMBER: _ClassVar[int] + DATA_FIELD_NUMBER: _ClassVar[int] + SECRETS_FIELD_NUMBER: _ClassVar[int] + CONFIGS_FIELD_NUMBER: _ClassVar[int] + DATABASES_FIELD_NUMBER: _ClassVar[int] + ENUMS_FIELD_NUMBER: _ClassVar[int] + TOPICS_FIELD_NUMBER: _ClassVar[int] + TYPEALIASES_FIELD_NUMBER: _ClassVar[int] + SUBSCRIPTIONS_FIELD_NUMBER: _ClassVar[int] + name: str + deployment_key: str + language: str + schema: str + verbs: _containers.RepeatedCompositeFieldContainer[Verb] + data: _containers.RepeatedCompositeFieldContainer[Data] + secrets: _containers.RepeatedCompositeFieldContainer[Secret] + configs: _containers.RepeatedCompositeFieldContainer[Config] + databases: _containers.RepeatedCompositeFieldContainer[Database] + enums: _containers.RepeatedCompositeFieldContainer[Enum] + topics: _containers.RepeatedCompositeFieldContainer[Topic] + typealiases: _containers.RepeatedCompositeFieldContainer[TypeAlias] + subscriptions: _containers.RepeatedCompositeFieldContainer[Subscription] + def __init__(self, name: _Optional[str] = ..., deployment_key: _Optional[str] = ..., language: _Optional[str] = ..., schema: _Optional[str] = ..., verbs: _Optional[_Iterable[_Union[Verb, _Mapping]]] = ..., data: _Optional[_Iterable[_Union[Data, _Mapping]]] = ..., secrets: _Optional[_Iterable[_Union[Secret, _Mapping]]] = ..., configs: _Optional[_Iterable[_Union[Config, _Mapping]]] = ..., databases: _Optional[_Iterable[_Union[Database, _Mapping]]] = ..., enums: _Optional[_Iterable[_Union[Enum, _Mapping]]] = ..., topics: _Optional[_Iterable[_Union[Topic, _Mapping]]] = ..., typealiases: _Optional[_Iterable[_Union[TypeAlias, _Mapping]]] = ..., subscriptions: _Optional[_Iterable[_Union[Subscription, _Mapping]]] = ...) -> None: ... + +class TopologyGroup(_message.Message): + __slots__ = ("modules",) + MODULES_FIELD_NUMBER: _ClassVar[int] + modules: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, modules: _Optional[_Iterable[str]] = ...) -> None: ... + +class Topology(_message.Message): + __slots__ = ("levels",) + LEVELS_FIELD_NUMBER: _ClassVar[int] + levels: _containers.RepeatedCompositeFieldContainer[TopologyGroup] + def __init__(self, levels: _Optional[_Iterable[_Union[TopologyGroup, _Mapping]]] = ...) -> None: ... + +class GetModulesRequest(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class GetModulesResponse(_message.Message): + __slots__ = ("modules", "topology") + MODULES_FIELD_NUMBER: _ClassVar[int] + TOPOLOGY_FIELD_NUMBER: _ClassVar[int] + modules: _containers.RepeatedCompositeFieldContainer[Module] + topology: Topology + def __init__(self, modules: _Optional[_Iterable[_Union[Module, _Mapping]]] = ..., topology: _Optional[_Union[Topology, _Mapping]] = ...) -> None: ... + +class StreamModulesRequest(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class StreamModulesResponse(_message.Message): + __slots__ = ("modules",) + MODULES_FIELD_NUMBER: _ClassVar[int] + modules: _containers.RepeatedCompositeFieldContainer[Module] + def __init__(self, modules: _Optional[_Iterable[_Union[Module, _Mapping]]] = ...) -> None: ... + +class EventsQuery(_message.Message): + __slots__ = ("filters", "limit", "order") + class Order(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + ASC: _ClassVar[EventsQuery.Order] + DESC: _ClassVar[EventsQuery.Order] + ASC: EventsQuery.Order + DESC: EventsQuery.Order + class LimitFilter(_message.Message): + __slots__ = ("limit",) + LIMIT_FIELD_NUMBER: _ClassVar[int] + limit: int + def __init__(self, limit: _Optional[int] = ...) -> None: ... + class LogLevelFilter(_message.Message): + __slots__ = ("log_level",) + LOG_LEVEL_FIELD_NUMBER: _ClassVar[int] + log_level: LogLevel + def __init__(self, log_level: _Optional[_Union[LogLevel, str]] = ...) -> None: ... + class DeploymentFilter(_message.Message): + __slots__ = ("deployments",) + DEPLOYMENTS_FIELD_NUMBER: _ClassVar[int] + deployments: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, deployments: _Optional[_Iterable[str]] = ...) -> None: ... + class RequestFilter(_message.Message): + __slots__ = ("requests",) + REQUESTS_FIELD_NUMBER: _ClassVar[int] + requests: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, requests: _Optional[_Iterable[str]] = ...) -> None: ... + class EventTypeFilter(_message.Message): + __slots__ = ("event_types",) + EVENT_TYPES_FIELD_NUMBER: _ClassVar[int] + event_types: _containers.RepeatedScalarFieldContainer[EventType] + def __init__(self, event_types: _Optional[_Iterable[_Union[EventType, str]]] = ...) -> None: ... + class TimeFilter(_message.Message): + __slots__ = ("older_than", "newer_than") + OLDER_THAN_FIELD_NUMBER: _ClassVar[int] + NEWER_THAN_FIELD_NUMBER: _ClassVar[int] + older_than: _timestamp_pb2.Timestamp + newer_than: _timestamp_pb2.Timestamp + def __init__(self, older_than: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., newer_than: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + class IDFilter(_message.Message): + __slots__ = ("lower_than", "higher_than") + LOWER_THAN_FIELD_NUMBER: _ClassVar[int] + HIGHER_THAN_FIELD_NUMBER: _ClassVar[int] + lower_than: int + higher_than: int + def __init__(self, lower_than: _Optional[int] = ..., higher_than: _Optional[int] = ...) -> None: ... + class CallFilter(_message.Message): + __slots__ = ("dest_module", "dest_verb", "source_module") + DEST_MODULE_FIELD_NUMBER: _ClassVar[int] + DEST_VERB_FIELD_NUMBER: _ClassVar[int] + SOURCE_MODULE_FIELD_NUMBER: _ClassVar[int] + dest_module: str + dest_verb: str + source_module: str + def __init__(self, dest_module: _Optional[str] = ..., dest_verb: _Optional[str] = ..., source_module: _Optional[str] = ...) -> None: ... + class ModuleFilter(_message.Message): + __slots__ = ("module", "verb") + MODULE_FIELD_NUMBER: _ClassVar[int] + VERB_FIELD_NUMBER: _ClassVar[int] + module: str + verb: str + def __init__(self, module: _Optional[str] = ..., verb: _Optional[str] = ...) -> None: ... + class Filter(_message.Message): + __slots__ = ("limit", "log_level", "deployments", "requests", "event_types", "time", "id", "call", "module") + LIMIT_FIELD_NUMBER: _ClassVar[int] + LOG_LEVEL_FIELD_NUMBER: _ClassVar[int] + DEPLOYMENTS_FIELD_NUMBER: _ClassVar[int] + REQUESTS_FIELD_NUMBER: _ClassVar[int] + EVENT_TYPES_FIELD_NUMBER: _ClassVar[int] + TIME_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + CALL_FIELD_NUMBER: _ClassVar[int] + MODULE_FIELD_NUMBER: _ClassVar[int] + limit: EventsQuery.LimitFilter + log_level: EventsQuery.LogLevelFilter + deployments: EventsQuery.DeploymentFilter + requests: EventsQuery.RequestFilter + event_types: EventsQuery.EventTypeFilter + time: EventsQuery.TimeFilter + id: EventsQuery.IDFilter + call: EventsQuery.CallFilter + module: EventsQuery.ModuleFilter + def __init__(self, limit: _Optional[_Union[EventsQuery.LimitFilter, _Mapping]] = ..., log_level: _Optional[_Union[EventsQuery.LogLevelFilter, _Mapping]] = ..., deployments: _Optional[_Union[EventsQuery.DeploymentFilter, _Mapping]] = ..., requests: _Optional[_Union[EventsQuery.RequestFilter, _Mapping]] = ..., event_types: _Optional[_Union[EventsQuery.EventTypeFilter, _Mapping]] = ..., time: _Optional[_Union[EventsQuery.TimeFilter, _Mapping]] = ..., id: _Optional[_Union[EventsQuery.IDFilter, _Mapping]] = ..., call: _Optional[_Union[EventsQuery.CallFilter, _Mapping]] = ..., module: _Optional[_Union[EventsQuery.ModuleFilter, _Mapping]] = ...) -> None: ... + FILTERS_FIELD_NUMBER: _ClassVar[int] + LIMIT_FIELD_NUMBER: _ClassVar[int] + ORDER_FIELD_NUMBER: _ClassVar[int] + filters: _containers.RepeatedCompositeFieldContainer[EventsQuery.Filter] + limit: int + order: EventsQuery.Order + def __init__(self, filters: _Optional[_Iterable[_Union[EventsQuery.Filter, _Mapping]]] = ..., limit: _Optional[int] = ..., order: _Optional[_Union[EventsQuery.Order, str]] = ...) -> None: ... + +class StreamEventsRequest(_message.Message): + __slots__ = ("update_interval", "query") + UPDATE_INTERVAL_FIELD_NUMBER: _ClassVar[int] + QUERY_FIELD_NUMBER: _ClassVar[int] + update_interval: _duration_pb2.Duration + query: EventsQuery + def __init__(self, update_interval: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., query: _Optional[_Union[EventsQuery, _Mapping]] = ...) -> None: ... + +class StreamEventsResponse(_message.Message): + __slots__ = ("events",) + EVENTS_FIELD_NUMBER: _ClassVar[int] + events: _containers.RepeatedCompositeFieldContainer[Event] + def __init__(self, events: _Optional[_Iterable[_Union[Event, _Mapping]]] = ...) -> None: ... + +class Event(_message.Message): + __slots__ = ("time_stamp", "id", "log", "call", "deployment_created", "deployment_updated", "ingress", "cron_scheduled", "async_execute") + TIME_STAMP_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + LOG_FIELD_NUMBER: _ClassVar[int] + CALL_FIELD_NUMBER: _ClassVar[int] + DEPLOYMENT_CREATED_FIELD_NUMBER: _ClassVar[int] + DEPLOYMENT_UPDATED_FIELD_NUMBER: _ClassVar[int] + INGRESS_FIELD_NUMBER: _ClassVar[int] + CRON_SCHEDULED_FIELD_NUMBER: _ClassVar[int] + ASYNC_EXECUTE_FIELD_NUMBER: _ClassVar[int] + time_stamp: _timestamp_pb2.Timestamp + id: int + log: LogEvent + call: CallEvent + deployment_created: DeploymentCreatedEvent + deployment_updated: DeploymentUpdatedEvent + ingress: IngressEvent + cron_scheduled: CronScheduledEvent + async_execute: AsyncExecuteEvent + def __init__(self, time_stamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., id: _Optional[int] = ..., log: _Optional[_Union[LogEvent, _Mapping]] = ..., call: _Optional[_Union[CallEvent, _Mapping]] = ..., deployment_created: _Optional[_Union[DeploymentCreatedEvent, _Mapping]] = ..., deployment_updated: _Optional[_Union[DeploymentUpdatedEvent, _Mapping]] = ..., ingress: _Optional[_Union[IngressEvent, _Mapping]] = ..., cron_scheduled: _Optional[_Union[CronScheduledEvent, _Mapping]] = ..., async_execute: _Optional[_Union[AsyncExecuteEvent, _Mapping]] = ...) -> None: ... + +class GetEventsResponse(_message.Message): + __slots__ = ("events", "cursor") + EVENTS_FIELD_NUMBER: _ClassVar[int] + CURSOR_FIELD_NUMBER: _ClassVar[int] + events: _containers.RepeatedCompositeFieldContainer[Event] + cursor: int + def __init__(self, events: _Optional[_Iterable[_Union[Event, _Mapping]]] = ..., cursor: _Optional[int] = ...) -> None: ... diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/controller_pb2.py b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/controller_pb2.py new file mode 100644 index 0000000000..8b65ac5e47 --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/controller_pb2.py @@ -0,0 +1,129 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xyz/block/ftl/v1/controller.proto +# Protobuf Python Version: 5.28.3 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 28, + 3, + '', + 'xyz/block/ftl/v1/controller.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from xyz.block.ftl.v1 import ftl_pb2 as xyz_dot_block_dot_ftl_dot_v1_dot_ftl__pb2 +from xyz.block.ftl.v1.schema import schema_pb2 as xyz_dot_block_dot_ftl_dot_v1_dot_schema_dot_schema__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!xyz/block/ftl/v1/controller.proto\x12\x10xyz.block.ftl.v1\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1axyz/block/ftl/v1/ftl.proto\x1a$xyz/block/ftl/v1/schema/schema.proto\"w\n\x17GetCertificationRequest\x12>\n\x07request\x18\x01 \x01(\x0b\x32$.xyz.block.ftl.v1.CertificateContentR\x07request\x12\x1c\n\tsignature\x18\x02 \x01(\x0cR\tsignature\"[\n\x18GetCertificationResponse\x12?\n\x0b\x63\x65rtificate\x18\x01 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.CertificateR\x0b\x63\x65rtificate\"O\n\x12\x43\x65rtificateContent\x12\x1a\n\x08identity\x18\x01 \x01(\tR\x08identity\x12\x1d\n\npublic_key\x18\x02 \x01(\x0cR\tpublicKey\"\x80\x01\n\x0b\x43\x65rtificate\x12>\n\x07\x63ontent\x18\x01 \x01(\x0b\x32$.xyz.block.ftl.v1.CertificateContentR\x07\x63ontent\x12\x31\n\x14\x63ontroller_signature\x18\x03 \x01(\x0cR\x13\x63ontrollerSignature\"\x12\n\x10GetSchemaRequest\"L\n\x11GetSchemaResponse\x12\x37\n\x06schema\x18\x01 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.SchemaR\x06schema\"\x13\n\x11PullSchemaRequest\"\x82\x02\n\x12PullSchemaResponse\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKey\x12\x1f\n\x0bmodule_name\x18\x02 \x01(\tR\nmoduleName\x12<\n\x06schema\x18\x04 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ModuleH\x00R\x06schema\x88\x01\x01\x12\x12\n\x04more\x18\x03 \x01(\x08R\x04more\x12G\n\x0b\x63hange_type\x18\x05 \x01(\x0e\x32&.xyz.block.ftl.v1.DeploymentChangeTypeR\nchangeTypeB\t\n\x07_schema\"@\n\x17GetArtefactDiffsRequest\x12%\n\x0e\x63lient_digests\x18\x01 \x03(\tR\rclientDigests\"\x94\x01\n\x18GetArtefactDiffsResponse\x12\'\n\x0fmissing_digests\x18\x01 \x03(\tR\x0emissingDigests\x12O\n\x10\x63lient_artefacts\x18\x02 \x03(\x0b\x32$.xyz.block.ftl.v1.DeploymentArtefactR\x0f\x63lientArtefacts\"1\n\x15UploadArtefactRequest\x12\x18\n\x07\x63ontent\x18\x01 \x01(\x0cR\x07\x63ontent\"0\n\x16UploadArtefactResponse\x12\x16\n\x06\x64igest\x18\x02 \x01(\x0cR\x06\x64igest\"`\n\x12\x44\x65ploymentArtefact\x12\x16\n\x06\x64igest\x18\x01 \x01(\tR\x06\x64igest\x12\x12\n\x04path\x18\x02 \x01(\tR\x04path\x12\x1e\n\nexecutable\x18\x03 \x01(\x08R\nexecutable\"\xd7\x01\n\x17\x43reateDeploymentRequest\x12\x37\n\x06schema\x18\x01 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ModuleR\x06schema\x12\x42\n\tartefacts\x18\x02 \x03(\x0b\x32$.xyz.block.ftl.v1.DeploymentArtefactR\tartefacts\x12\x34\n\x06labels\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x00R\x06labels\x88\x01\x01\x42\t\n\x07_labels\"\x94\x01\n\x18\x43reateDeploymentResponse\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKey\x12\x37\n\x15\x61\x63tive_deployment_key\x18\x02 \x01(\tH\x00R\x13\x61\x63tiveDeploymentKey\x88\x01\x01\x42\x18\n\x16_active_deployment_key\"\x93\x01\n\x1dGetDeploymentArtefactsRequest\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKey\x12K\n\x0ehave_artefacts\x18\x02 \x03(\x0b\x32$.xyz.block.ftl.v1.DeploymentArtefactR\rhaveArtefacts\"x\n\x1eGetDeploymentArtefactsResponse\x12@\n\x08\x61rtefact\x18\x01 \x01(\x0b\x32$.xyz.block.ftl.v1.DeploymentArtefactR\x08\x61rtefact\x12\x14\n\x05\x63hunk\x18\x02 \x01(\x0cR\x05\x63hunk\"=\n\x14GetDeploymentRequest\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKey\"\x94\x01\n\x15GetDeploymentResponse\x12\x37\n\x06schema\x18\x01 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ModuleR\x06schema\x12\x42\n\tartefacts\x18\x02 \x03(\x0b\x32$.xyz.block.ftl.v1.DeploymentArtefactR\tartefacts\"\x96\x01\n\x15RegisterRunnerRequest\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x1a\n\x08\x65ndpoint\x18\x02 \x01(\tR\x08\x65ndpoint\x12\x1e\n\ndeployment\x18\x03 \x01(\tR\ndeployment\x12/\n\x06labels\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructR\x06labels\"\x18\n\x16RegisterRunnerResponse\"_\n\x13UpdateDeployRequest\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKey\x12!\n\x0cmin_replicas\x18\x02 \x01(\x05R\x0bminReplicas\"\x16\n\x14UpdateDeployResponse\"`\n\x14ReplaceDeployRequest\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKey\x12!\n\x0cmin_replicas\x18\x02 \x01(\x05R\x0bminReplicas\"\x17\n\x15ReplaceDeployResponse\"\xaf\x03\n\x1bStreamDeploymentLogsRequest\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKey\x12$\n\x0brequest_key\x18\x02 \x01(\tH\x00R\nrequestKey\x88\x01\x01\x12\x39\n\ntime_stamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimeStamp\x12\x1b\n\tlog_level\x18\x04 \x01(\x05R\x08logLevel\x12]\n\nattributes\x18\x05 \x03(\x0b\x32=.xyz.block.ftl.v1.StreamDeploymentLogsRequest.AttributesEntryR\nattributes\x12\x18\n\x07message\x18\x06 \x01(\tR\x07message\x12\x19\n\x05\x65rror\x18\x07 \x01(\tH\x01R\x05\x65rror\x88\x01\x01\x1a=\n\x0f\x41ttributesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x0e\n\x0c_request_keyB\x08\n\x06_error\"\x1e\n\x1cStreamDeploymentLogsResponse\"\x0f\n\rStatusRequest\"\x86\t\n\x0eStatusResponse\x12M\n\x0b\x63ontrollers\x18\x01 \x03(\x0b\x32+.xyz.block.ftl.v1.StatusResponse.ControllerR\x0b\x63ontrollers\x12\x41\n\x07runners\x18\x02 \x03(\x0b\x32\'.xyz.block.ftl.v1.StatusResponse.RunnerR\x07runners\x12M\n\x0b\x64\x65ployments\x18\x03 \x03(\x0b\x32+.xyz.block.ftl.v1.StatusResponse.DeploymentR\x0b\x64\x65ployments\x12T\n\x0eingress_routes\x18\x04 \x03(\x0b\x32-.xyz.block.ftl.v1.StatusResponse.IngressRouteR\ringressRoutes\x12>\n\x06routes\x18\x05 \x03(\x0b\x32&.xyz.block.ftl.v1.StatusResponse.RouteR\x06routes\x1aT\n\nController\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x1a\n\x08\x65ndpoint\x18\x02 \x01(\tR\x08\x65ndpoint\x12\x18\n\x07version\x18\x03 \x01(\tR\x07version\x1a\xb9\x01\n\x06Runner\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x1c\n\tlanguages\x18\x02 \x03(\tR\tlanguages\x12\x1a\n\x08\x65ndpoint\x18\x03 \x01(\tR\x08\x65ndpoint\x12#\n\ndeployment\x18\x05 \x01(\tH\x00R\ndeployment\x88\x01\x01\x12/\n\x06labels\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructR\x06labelsB\r\n\x0b_deployment\x1a\xf7\x01\n\nDeployment\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x1a\n\x08language\x18\x02 \x01(\tR\x08language\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12!\n\x0cmin_replicas\x18\x04 \x01(\x05R\x0bminReplicas\x12\x1a\n\x08replicas\x18\x07 \x01(\x05R\x08replicas\x12/\n\x06labels\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructR\x06labels\x12\x37\n\x06schema\x18\x06 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ModuleR\x06schema\x1a\x93\x01\n\x0cIngressRoute\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKey\x12\x30\n\x04verb\x18\x02 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x04verb\x12\x16\n\x06method\x18\x03 \x01(\tR\x06method\x12\x12\n\x04path\x18\x04 \x01(\tR\x04path\x1a[\n\x05Route\x12\x16\n\x06module\x18\x01 \x01(\tR\x06module\x12\x1e\n\ndeployment\x18\x02 \x01(\tR\ndeployment\x12\x1a\n\x08\x65ndpoint\x18\x03 \x01(\tR\x08\x65ndpoint\"\x14\n\x12ProcessListRequest\"\xaf\x03\n\x13ProcessListResponse\x12K\n\tprocesses\x18\x01 \x03(\x0b\x32-.xyz.block.ftl.v1.ProcessListResponse.ProcessR\tprocesses\x1an\n\rProcessRunner\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x1a\n\x08\x65ndpoint\x18\x02 \x01(\tR\x08\x65ndpoint\x12/\n\x06labels\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\x06labels\x1a\xda\x01\n\x07Process\x12\x1e\n\ndeployment\x18\x01 \x01(\tR\ndeployment\x12!\n\x0cmin_replicas\x18\x02 \x01(\x05R\x0bminReplicas\x12/\n\x06labels\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\x06labels\x12P\n\x06runner\x18\x04 \x01(\x0b\x32\x33.xyz.block.ftl.v1.ProcessListResponse.ProcessRunnerH\x00R\x06runner\x88\x01\x01\x42\t\n\x07_runner\"\\\n\x18ResetSubscriptionRequest\x12@\n\x0csubscription\x18\x01 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x0csubscription\"\x1b\n\x19ResetSubscriptionResponse*\\\n\x14\x44\x65ploymentChangeType\x12\x14\n\x10\x44\x45PLOYMENT_ADDED\x10\x00\x12\x16\n\x12\x44\x45PLOYMENT_REMOVED\x10\x01\x12\x16\n\x12\x44\x45PLOYMENT_CHANGED\x10\x02\x32\xcf\x0c\n\x11\x43ontrollerService\x12J\n\x04Ping\x12\x1d.xyz.block.ftl.v1.PingRequest\x1a\x1e.xyz.block.ftl.v1.PingResponse\"\x03\x90\x02\x01\x12Z\n\x0bProcessList\x12$.xyz.block.ftl.v1.ProcessListRequest\x1a%.xyz.block.ftl.v1.ProcessListResponse\x12K\n\x06Status\x12\x1f.xyz.block.ftl.v1.StatusRequest\x1a .xyz.block.ftl.v1.StatusResponse\x12i\n\x10GetCertification\x12).xyz.block.ftl.v1.GetCertificationRequest\x1a*.xyz.block.ftl.v1.GetCertificationResponse\x12i\n\x10GetArtefactDiffs\x12).xyz.block.ftl.v1.GetArtefactDiffsRequest\x1a*.xyz.block.ftl.v1.GetArtefactDiffsResponse\x12\x63\n\x0eUploadArtefact\x12\'.xyz.block.ftl.v1.UploadArtefactRequest\x1a(.xyz.block.ftl.v1.UploadArtefactResponse\x12i\n\x10\x43reateDeployment\x12).xyz.block.ftl.v1.CreateDeploymentRequest\x1a*.xyz.block.ftl.v1.CreateDeploymentResponse\x12`\n\rGetDeployment\x12&.xyz.block.ftl.v1.GetDeploymentRequest\x1a\'.xyz.block.ftl.v1.GetDeploymentResponse\x12}\n\x16GetDeploymentArtefacts\x12/.xyz.block.ftl.v1.GetDeploymentArtefactsRequest\x1a\x30.xyz.block.ftl.v1.GetDeploymentArtefactsResponse0\x01\x12\x65\n\x0eRegisterRunner\x12\'.xyz.block.ftl.v1.RegisterRunnerRequest\x1a(.xyz.block.ftl.v1.RegisterRunnerResponse(\x01\x12]\n\x0cUpdateDeploy\x12%.xyz.block.ftl.v1.UpdateDeployRequest\x1a&.xyz.block.ftl.v1.UpdateDeployResponse\x12`\n\rReplaceDeploy\x12&.xyz.block.ftl.v1.ReplaceDeployRequest\x1a\'.xyz.block.ftl.v1.ReplaceDeployResponse\x12w\n\x14StreamDeploymentLogs\x12-.xyz.block.ftl.v1.StreamDeploymentLogsRequest\x1a..xyz.block.ftl.v1.StreamDeploymentLogsResponse(\x01\x12T\n\tGetSchema\x12\".xyz.block.ftl.v1.GetSchemaRequest\x1a#.xyz.block.ftl.v1.GetSchemaResponse\x12Y\n\nPullSchema\x12#.xyz.block.ftl.v1.PullSchemaRequest\x1a$.xyz.block.ftl.v1.PullSchemaResponse0\x01\x12l\n\x11ResetSubscription\x12*.xyz.block.ftl.v1.ResetSubscriptionRequest\x1a+.xyz.block.ftl.v1.ResetSubscriptionResponseBDP\x01Z@github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1;ftlv1b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xyz.block.ftl.v1.controller_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'P\001Z@github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1;ftlv1' + _globals['_STREAMDEPLOYMENTLOGSREQUEST_ATTRIBUTESENTRY']._loaded_options = None + _globals['_STREAMDEPLOYMENTLOGSREQUEST_ATTRIBUTESENTRY']._serialized_options = b'8\001' + _globals['_CONTROLLERSERVICE'].methods_by_name['Ping']._loaded_options = None + _globals['_CONTROLLERSERVICE'].methods_by_name['Ping']._serialized_options = b'\220\002\001' + _globals['_DEPLOYMENTCHANGETYPE']._serialized_start=4907 + _globals['_DEPLOYMENTCHANGETYPE']._serialized_end=4999 + _globals['_GETCERTIFICATIONREQUEST']._serialized_start=184 + _globals['_GETCERTIFICATIONREQUEST']._serialized_end=303 + _globals['_GETCERTIFICATIONRESPONSE']._serialized_start=305 + _globals['_GETCERTIFICATIONRESPONSE']._serialized_end=396 + _globals['_CERTIFICATECONTENT']._serialized_start=398 + _globals['_CERTIFICATECONTENT']._serialized_end=477 + _globals['_CERTIFICATE']._serialized_start=480 + _globals['_CERTIFICATE']._serialized_end=608 + _globals['_GETSCHEMAREQUEST']._serialized_start=610 + _globals['_GETSCHEMAREQUEST']._serialized_end=628 + _globals['_GETSCHEMARESPONSE']._serialized_start=630 + _globals['_GETSCHEMARESPONSE']._serialized_end=706 + _globals['_PULLSCHEMAREQUEST']._serialized_start=708 + _globals['_PULLSCHEMAREQUEST']._serialized_end=727 + _globals['_PULLSCHEMARESPONSE']._serialized_start=730 + _globals['_PULLSCHEMARESPONSE']._serialized_end=988 + _globals['_GETARTEFACTDIFFSREQUEST']._serialized_start=990 + _globals['_GETARTEFACTDIFFSREQUEST']._serialized_end=1054 + _globals['_GETARTEFACTDIFFSRESPONSE']._serialized_start=1057 + _globals['_GETARTEFACTDIFFSRESPONSE']._serialized_end=1205 + _globals['_UPLOADARTEFACTREQUEST']._serialized_start=1207 + _globals['_UPLOADARTEFACTREQUEST']._serialized_end=1256 + _globals['_UPLOADARTEFACTRESPONSE']._serialized_start=1258 + _globals['_UPLOADARTEFACTRESPONSE']._serialized_end=1306 + _globals['_DEPLOYMENTARTEFACT']._serialized_start=1308 + _globals['_DEPLOYMENTARTEFACT']._serialized_end=1404 + _globals['_CREATEDEPLOYMENTREQUEST']._serialized_start=1407 + _globals['_CREATEDEPLOYMENTREQUEST']._serialized_end=1622 + _globals['_CREATEDEPLOYMENTRESPONSE']._serialized_start=1625 + _globals['_CREATEDEPLOYMENTRESPONSE']._serialized_end=1773 + _globals['_GETDEPLOYMENTARTEFACTSREQUEST']._serialized_start=1776 + _globals['_GETDEPLOYMENTARTEFACTSREQUEST']._serialized_end=1923 + _globals['_GETDEPLOYMENTARTEFACTSRESPONSE']._serialized_start=1925 + _globals['_GETDEPLOYMENTARTEFACTSRESPONSE']._serialized_end=2045 + _globals['_GETDEPLOYMENTREQUEST']._serialized_start=2047 + _globals['_GETDEPLOYMENTREQUEST']._serialized_end=2108 + _globals['_GETDEPLOYMENTRESPONSE']._serialized_start=2111 + _globals['_GETDEPLOYMENTRESPONSE']._serialized_end=2259 + _globals['_REGISTERRUNNERREQUEST']._serialized_start=2262 + _globals['_REGISTERRUNNERREQUEST']._serialized_end=2412 + _globals['_REGISTERRUNNERRESPONSE']._serialized_start=2414 + _globals['_REGISTERRUNNERRESPONSE']._serialized_end=2438 + _globals['_UPDATEDEPLOYREQUEST']._serialized_start=2440 + _globals['_UPDATEDEPLOYREQUEST']._serialized_end=2535 + _globals['_UPDATEDEPLOYRESPONSE']._serialized_start=2537 + _globals['_UPDATEDEPLOYRESPONSE']._serialized_end=2559 + _globals['_REPLACEDEPLOYREQUEST']._serialized_start=2561 + _globals['_REPLACEDEPLOYREQUEST']._serialized_end=2657 + _globals['_REPLACEDEPLOYRESPONSE']._serialized_start=2659 + _globals['_REPLACEDEPLOYRESPONSE']._serialized_end=2682 + _globals['_STREAMDEPLOYMENTLOGSREQUEST']._serialized_start=2685 + _globals['_STREAMDEPLOYMENTLOGSREQUEST']._serialized_end=3116 + _globals['_STREAMDEPLOYMENTLOGSREQUEST_ATTRIBUTESENTRY']._serialized_start=3029 + _globals['_STREAMDEPLOYMENTLOGSREQUEST_ATTRIBUTESENTRY']._serialized_end=3090 + _globals['_STREAMDEPLOYMENTLOGSRESPONSE']._serialized_start=3118 + _globals['_STREAMDEPLOYMENTLOGSRESPONSE']._serialized_end=3148 + _globals['_STATUSREQUEST']._serialized_start=3150 + _globals['_STATUSREQUEST']._serialized_end=3165 + _globals['_STATUSRESPONSE']._serialized_start=3168 + _globals['_STATUSRESPONSE']._serialized_end=4326 + _globals['_STATUSRESPONSE_CONTROLLER']._serialized_start=3561 + _globals['_STATUSRESPONSE_CONTROLLER']._serialized_end=3645 + _globals['_STATUSRESPONSE_RUNNER']._serialized_start=3648 + _globals['_STATUSRESPONSE_RUNNER']._serialized_end=3833 + _globals['_STATUSRESPONSE_DEPLOYMENT']._serialized_start=3836 + _globals['_STATUSRESPONSE_DEPLOYMENT']._serialized_end=4083 + _globals['_STATUSRESPONSE_INGRESSROUTE']._serialized_start=4086 + _globals['_STATUSRESPONSE_INGRESSROUTE']._serialized_end=4233 + _globals['_STATUSRESPONSE_ROUTE']._serialized_start=4235 + _globals['_STATUSRESPONSE_ROUTE']._serialized_end=4326 + _globals['_PROCESSLISTREQUEST']._serialized_start=4328 + _globals['_PROCESSLISTREQUEST']._serialized_end=4348 + _globals['_PROCESSLISTRESPONSE']._serialized_start=4351 + _globals['_PROCESSLISTRESPONSE']._serialized_end=4782 + _globals['_PROCESSLISTRESPONSE_PROCESSRUNNER']._serialized_start=4451 + _globals['_PROCESSLISTRESPONSE_PROCESSRUNNER']._serialized_end=4561 + _globals['_PROCESSLISTRESPONSE_PROCESS']._serialized_start=4564 + _globals['_PROCESSLISTRESPONSE_PROCESS']._serialized_end=4782 + _globals['_RESETSUBSCRIPTIONREQUEST']._serialized_start=4784 + _globals['_RESETSUBSCRIPTIONREQUEST']._serialized_end=4876 + _globals['_RESETSUBSCRIPTIONRESPONSE']._serialized_start=4878 + _globals['_RESETSUBSCRIPTIONRESPONSE']._serialized_end=4905 + _globals['_CONTROLLERSERVICE']._serialized_start=5002 + _globals['_CONTROLLERSERVICE']._serialized_end=6617 +# @@protoc_insertion_point(module_scope) diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/controller_pb2.pyi b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/controller_pb2.pyi new file mode 100644 index 0000000000..5680bc2fa8 --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/controller_pb2.pyi @@ -0,0 +1,348 @@ +from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from xyz.block.ftl.v1 import ftl_pb2 as _ftl_pb2 +from xyz.block.ftl.v1.schema import schema_pb2 as _schema_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class DeploymentChangeType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + DEPLOYMENT_ADDED: _ClassVar[DeploymentChangeType] + DEPLOYMENT_REMOVED: _ClassVar[DeploymentChangeType] + DEPLOYMENT_CHANGED: _ClassVar[DeploymentChangeType] +DEPLOYMENT_ADDED: DeploymentChangeType +DEPLOYMENT_REMOVED: DeploymentChangeType +DEPLOYMENT_CHANGED: DeploymentChangeType + +class GetCertificationRequest(_message.Message): + __slots__ = ("request", "signature") + REQUEST_FIELD_NUMBER: _ClassVar[int] + SIGNATURE_FIELD_NUMBER: _ClassVar[int] + request: CertificateContent + signature: bytes + def __init__(self, request: _Optional[_Union[CertificateContent, _Mapping]] = ..., signature: _Optional[bytes] = ...) -> None: ... + +class GetCertificationResponse(_message.Message): + __slots__ = ("certificate",) + CERTIFICATE_FIELD_NUMBER: _ClassVar[int] + certificate: Certificate + def __init__(self, certificate: _Optional[_Union[Certificate, _Mapping]] = ...) -> None: ... + +class CertificateContent(_message.Message): + __slots__ = ("identity", "public_key") + IDENTITY_FIELD_NUMBER: _ClassVar[int] + PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] + identity: str + public_key: bytes + def __init__(self, identity: _Optional[str] = ..., public_key: _Optional[bytes] = ...) -> None: ... + +class Certificate(_message.Message): + __slots__ = ("content", "controller_signature") + CONTENT_FIELD_NUMBER: _ClassVar[int] + CONTROLLER_SIGNATURE_FIELD_NUMBER: _ClassVar[int] + content: CertificateContent + controller_signature: bytes + def __init__(self, content: _Optional[_Union[CertificateContent, _Mapping]] = ..., controller_signature: _Optional[bytes] = ...) -> None: ... + +class GetSchemaRequest(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class GetSchemaResponse(_message.Message): + __slots__ = ("schema",) + SCHEMA_FIELD_NUMBER: _ClassVar[int] + schema: _schema_pb2.Schema + def __init__(self, schema: _Optional[_Union[_schema_pb2.Schema, _Mapping]] = ...) -> None: ... + +class PullSchemaRequest(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class PullSchemaResponse(_message.Message): + __slots__ = ("deployment_key", "module_name", "schema", "more", "change_type") + DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] + MODULE_NAME_FIELD_NUMBER: _ClassVar[int] + SCHEMA_FIELD_NUMBER: _ClassVar[int] + MORE_FIELD_NUMBER: _ClassVar[int] + CHANGE_TYPE_FIELD_NUMBER: _ClassVar[int] + deployment_key: str + module_name: str + schema: _schema_pb2.Module + more: bool + change_type: DeploymentChangeType + def __init__(self, deployment_key: _Optional[str] = ..., module_name: _Optional[str] = ..., schema: _Optional[_Union[_schema_pb2.Module, _Mapping]] = ..., more: bool = ..., change_type: _Optional[_Union[DeploymentChangeType, str]] = ...) -> None: ... + +class GetArtefactDiffsRequest(_message.Message): + __slots__ = ("client_digests",) + CLIENT_DIGESTS_FIELD_NUMBER: _ClassVar[int] + client_digests: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, client_digests: _Optional[_Iterable[str]] = ...) -> None: ... + +class GetArtefactDiffsResponse(_message.Message): + __slots__ = ("missing_digests", "client_artefacts") + MISSING_DIGESTS_FIELD_NUMBER: _ClassVar[int] + CLIENT_ARTEFACTS_FIELD_NUMBER: _ClassVar[int] + missing_digests: _containers.RepeatedScalarFieldContainer[str] + client_artefacts: _containers.RepeatedCompositeFieldContainer[DeploymentArtefact] + def __init__(self, missing_digests: _Optional[_Iterable[str]] = ..., client_artefacts: _Optional[_Iterable[_Union[DeploymentArtefact, _Mapping]]] = ...) -> None: ... + +class UploadArtefactRequest(_message.Message): + __slots__ = ("content",) + CONTENT_FIELD_NUMBER: _ClassVar[int] + content: bytes + def __init__(self, content: _Optional[bytes] = ...) -> None: ... + +class UploadArtefactResponse(_message.Message): + __slots__ = ("digest",) + DIGEST_FIELD_NUMBER: _ClassVar[int] + digest: bytes + def __init__(self, digest: _Optional[bytes] = ...) -> None: ... + +class DeploymentArtefact(_message.Message): + __slots__ = ("digest", "path", "executable") + DIGEST_FIELD_NUMBER: _ClassVar[int] + PATH_FIELD_NUMBER: _ClassVar[int] + EXECUTABLE_FIELD_NUMBER: _ClassVar[int] + digest: str + path: str + executable: bool + def __init__(self, digest: _Optional[str] = ..., path: _Optional[str] = ..., executable: bool = ...) -> None: ... + +class CreateDeploymentRequest(_message.Message): + __slots__ = ("schema", "artefacts", "labels") + SCHEMA_FIELD_NUMBER: _ClassVar[int] + ARTEFACTS_FIELD_NUMBER: _ClassVar[int] + LABELS_FIELD_NUMBER: _ClassVar[int] + schema: _schema_pb2.Module + artefacts: _containers.RepeatedCompositeFieldContainer[DeploymentArtefact] + labels: _struct_pb2.Struct + def __init__(self, schema: _Optional[_Union[_schema_pb2.Module, _Mapping]] = ..., artefacts: _Optional[_Iterable[_Union[DeploymentArtefact, _Mapping]]] = ..., labels: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... + +class CreateDeploymentResponse(_message.Message): + __slots__ = ("deployment_key", "active_deployment_key") + DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] + ACTIVE_DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] + deployment_key: str + active_deployment_key: str + def __init__(self, deployment_key: _Optional[str] = ..., active_deployment_key: _Optional[str] = ...) -> None: ... + +class GetDeploymentArtefactsRequest(_message.Message): + __slots__ = ("deployment_key", "have_artefacts") + DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] + HAVE_ARTEFACTS_FIELD_NUMBER: _ClassVar[int] + deployment_key: str + have_artefacts: _containers.RepeatedCompositeFieldContainer[DeploymentArtefact] + def __init__(self, deployment_key: _Optional[str] = ..., have_artefacts: _Optional[_Iterable[_Union[DeploymentArtefact, _Mapping]]] = ...) -> None: ... + +class GetDeploymentArtefactsResponse(_message.Message): + __slots__ = ("artefact", "chunk") + ARTEFACT_FIELD_NUMBER: _ClassVar[int] + CHUNK_FIELD_NUMBER: _ClassVar[int] + artefact: DeploymentArtefact + chunk: bytes + def __init__(self, artefact: _Optional[_Union[DeploymentArtefact, _Mapping]] = ..., chunk: _Optional[bytes] = ...) -> None: ... + +class GetDeploymentRequest(_message.Message): + __slots__ = ("deployment_key",) + DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] + deployment_key: str + def __init__(self, deployment_key: _Optional[str] = ...) -> None: ... + +class GetDeploymentResponse(_message.Message): + __slots__ = ("schema", "artefacts") + SCHEMA_FIELD_NUMBER: _ClassVar[int] + ARTEFACTS_FIELD_NUMBER: _ClassVar[int] + schema: _schema_pb2.Module + artefacts: _containers.RepeatedCompositeFieldContainer[DeploymentArtefact] + def __init__(self, schema: _Optional[_Union[_schema_pb2.Module, _Mapping]] = ..., artefacts: _Optional[_Iterable[_Union[DeploymentArtefact, _Mapping]]] = ...) -> None: ... + +class RegisterRunnerRequest(_message.Message): + __slots__ = ("key", "endpoint", "deployment", "labels") + KEY_FIELD_NUMBER: _ClassVar[int] + ENDPOINT_FIELD_NUMBER: _ClassVar[int] + DEPLOYMENT_FIELD_NUMBER: _ClassVar[int] + LABELS_FIELD_NUMBER: _ClassVar[int] + key: str + endpoint: str + deployment: str + labels: _struct_pb2.Struct + def __init__(self, key: _Optional[str] = ..., endpoint: _Optional[str] = ..., deployment: _Optional[str] = ..., labels: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... + +class RegisterRunnerResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class UpdateDeployRequest(_message.Message): + __slots__ = ("deployment_key", "min_replicas") + DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] + MIN_REPLICAS_FIELD_NUMBER: _ClassVar[int] + deployment_key: str + min_replicas: int + def __init__(self, deployment_key: _Optional[str] = ..., min_replicas: _Optional[int] = ...) -> None: ... + +class UpdateDeployResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class ReplaceDeployRequest(_message.Message): + __slots__ = ("deployment_key", "min_replicas") + DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] + MIN_REPLICAS_FIELD_NUMBER: _ClassVar[int] + deployment_key: str + min_replicas: int + def __init__(self, deployment_key: _Optional[str] = ..., min_replicas: _Optional[int] = ...) -> None: ... + +class ReplaceDeployResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class StreamDeploymentLogsRequest(_message.Message): + __slots__ = ("deployment_key", "request_key", "time_stamp", "log_level", "attributes", "message", "error") + class AttributesEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... + DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] + REQUEST_KEY_FIELD_NUMBER: _ClassVar[int] + TIME_STAMP_FIELD_NUMBER: _ClassVar[int] + LOG_LEVEL_FIELD_NUMBER: _ClassVar[int] + ATTRIBUTES_FIELD_NUMBER: _ClassVar[int] + MESSAGE_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + deployment_key: str + request_key: str + time_stamp: _timestamp_pb2.Timestamp + log_level: int + attributes: _containers.ScalarMap[str, str] + message: str + error: str + def __init__(self, deployment_key: _Optional[str] = ..., request_key: _Optional[str] = ..., time_stamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., log_level: _Optional[int] = ..., attributes: _Optional[_Mapping[str, str]] = ..., message: _Optional[str] = ..., error: _Optional[str] = ...) -> None: ... + +class StreamDeploymentLogsResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class StatusRequest(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class StatusResponse(_message.Message): + __slots__ = ("controllers", "runners", "deployments", "ingress_routes", "routes") + class Controller(_message.Message): + __slots__ = ("key", "endpoint", "version") + KEY_FIELD_NUMBER: _ClassVar[int] + ENDPOINT_FIELD_NUMBER: _ClassVar[int] + VERSION_FIELD_NUMBER: _ClassVar[int] + key: str + endpoint: str + version: str + def __init__(self, key: _Optional[str] = ..., endpoint: _Optional[str] = ..., version: _Optional[str] = ...) -> None: ... + class Runner(_message.Message): + __slots__ = ("key", "languages", "endpoint", "deployment", "labels") + KEY_FIELD_NUMBER: _ClassVar[int] + LANGUAGES_FIELD_NUMBER: _ClassVar[int] + ENDPOINT_FIELD_NUMBER: _ClassVar[int] + DEPLOYMENT_FIELD_NUMBER: _ClassVar[int] + LABELS_FIELD_NUMBER: _ClassVar[int] + key: str + languages: _containers.RepeatedScalarFieldContainer[str] + endpoint: str + deployment: str + labels: _struct_pb2.Struct + def __init__(self, key: _Optional[str] = ..., languages: _Optional[_Iterable[str]] = ..., endpoint: _Optional[str] = ..., deployment: _Optional[str] = ..., labels: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... + class Deployment(_message.Message): + __slots__ = ("key", "language", "name", "min_replicas", "replicas", "labels", "schema") + KEY_FIELD_NUMBER: _ClassVar[int] + LANGUAGE_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + MIN_REPLICAS_FIELD_NUMBER: _ClassVar[int] + REPLICAS_FIELD_NUMBER: _ClassVar[int] + LABELS_FIELD_NUMBER: _ClassVar[int] + SCHEMA_FIELD_NUMBER: _ClassVar[int] + key: str + language: str + name: str + min_replicas: int + replicas: int + labels: _struct_pb2.Struct + schema: _schema_pb2.Module + def __init__(self, key: _Optional[str] = ..., language: _Optional[str] = ..., name: _Optional[str] = ..., min_replicas: _Optional[int] = ..., replicas: _Optional[int] = ..., labels: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., schema: _Optional[_Union[_schema_pb2.Module, _Mapping]] = ...) -> None: ... + class IngressRoute(_message.Message): + __slots__ = ("deployment_key", "verb", "method", "path") + DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] + VERB_FIELD_NUMBER: _ClassVar[int] + METHOD_FIELD_NUMBER: _ClassVar[int] + PATH_FIELD_NUMBER: _ClassVar[int] + deployment_key: str + verb: _schema_pb2.Ref + method: str + path: str + def __init__(self, deployment_key: _Optional[str] = ..., verb: _Optional[_Union[_schema_pb2.Ref, _Mapping]] = ..., method: _Optional[str] = ..., path: _Optional[str] = ...) -> None: ... + class Route(_message.Message): + __slots__ = ("module", "deployment", "endpoint") + MODULE_FIELD_NUMBER: _ClassVar[int] + DEPLOYMENT_FIELD_NUMBER: _ClassVar[int] + ENDPOINT_FIELD_NUMBER: _ClassVar[int] + module: str + deployment: str + endpoint: str + def __init__(self, module: _Optional[str] = ..., deployment: _Optional[str] = ..., endpoint: _Optional[str] = ...) -> None: ... + CONTROLLERS_FIELD_NUMBER: _ClassVar[int] + RUNNERS_FIELD_NUMBER: _ClassVar[int] + DEPLOYMENTS_FIELD_NUMBER: _ClassVar[int] + INGRESS_ROUTES_FIELD_NUMBER: _ClassVar[int] + ROUTES_FIELD_NUMBER: _ClassVar[int] + controllers: _containers.RepeatedCompositeFieldContainer[StatusResponse.Controller] + runners: _containers.RepeatedCompositeFieldContainer[StatusResponse.Runner] + deployments: _containers.RepeatedCompositeFieldContainer[StatusResponse.Deployment] + ingress_routes: _containers.RepeatedCompositeFieldContainer[StatusResponse.IngressRoute] + routes: _containers.RepeatedCompositeFieldContainer[StatusResponse.Route] + def __init__(self, controllers: _Optional[_Iterable[_Union[StatusResponse.Controller, _Mapping]]] = ..., runners: _Optional[_Iterable[_Union[StatusResponse.Runner, _Mapping]]] = ..., deployments: _Optional[_Iterable[_Union[StatusResponse.Deployment, _Mapping]]] = ..., ingress_routes: _Optional[_Iterable[_Union[StatusResponse.IngressRoute, _Mapping]]] = ..., routes: _Optional[_Iterable[_Union[StatusResponse.Route, _Mapping]]] = ...) -> None: ... + +class ProcessListRequest(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class ProcessListResponse(_message.Message): + __slots__ = ("processes",) + class ProcessRunner(_message.Message): + __slots__ = ("key", "endpoint", "labels") + KEY_FIELD_NUMBER: _ClassVar[int] + ENDPOINT_FIELD_NUMBER: _ClassVar[int] + LABELS_FIELD_NUMBER: _ClassVar[int] + key: str + endpoint: str + labels: _struct_pb2.Struct + def __init__(self, key: _Optional[str] = ..., endpoint: _Optional[str] = ..., labels: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... + class Process(_message.Message): + __slots__ = ("deployment", "min_replicas", "labels", "runner") + DEPLOYMENT_FIELD_NUMBER: _ClassVar[int] + MIN_REPLICAS_FIELD_NUMBER: _ClassVar[int] + LABELS_FIELD_NUMBER: _ClassVar[int] + RUNNER_FIELD_NUMBER: _ClassVar[int] + deployment: str + min_replicas: int + labels: _struct_pb2.Struct + runner: ProcessListResponse.ProcessRunner + def __init__(self, deployment: _Optional[str] = ..., min_replicas: _Optional[int] = ..., labels: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., runner: _Optional[_Union[ProcessListResponse.ProcessRunner, _Mapping]] = ...) -> None: ... + PROCESSES_FIELD_NUMBER: _ClassVar[int] + processes: _containers.RepeatedCompositeFieldContainer[ProcessListResponse.Process] + def __init__(self, processes: _Optional[_Iterable[_Union[ProcessListResponse.Process, _Mapping]]] = ...) -> None: ... + +class ResetSubscriptionRequest(_message.Message): + __slots__ = ("subscription",) + SUBSCRIPTION_FIELD_NUMBER: _ClassVar[int] + subscription: _schema_pb2.Ref + def __init__(self, subscription: _Optional[_Union[_schema_pb2.Ref, _Mapping]] = ...) -> None: ... + +class ResetSubscriptionResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/ftl_pb2.py b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/ftl_pb2.py new file mode 100644 index 0000000000..8f65d6495b --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/ftl_pb2.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xyz/block/ftl/v1/ftl.proto +# Protobuf Python Version: 5.28.3 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 28, + 3, + '', + 'xyz/block/ftl/v1/ftl.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1axyz/block/ftl/v1/ftl.proto\x12\x10xyz.block.ftl.v1\"\r\n\x0bPingRequest\">\n\x0cPingResponse\x12 \n\tnot_ready\x18\x01 \x01(\tH\x00R\x08notReady\x88\x01\x01\x42\x0c\n\n_not_ready\"s\n\x08Metadata\x12\x37\n\x06values\x18\x01 \x03(\x0b\x32\x1f.xyz.block.ftl.v1.Metadata.PairR\x06values\x1a.\n\x04Pair\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05valueBDP\x01Z@github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1;ftlv1b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xyz.block.ftl.v1.ftl_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'P\001Z@github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1;ftlv1' + _globals['_PINGREQUEST']._serialized_start=48 + _globals['_PINGREQUEST']._serialized_end=61 + _globals['_PINGRESPONSE']._serialized_start=63 + _globals['_PINGRESPONSE']._serialized_end=125 + _globals['_METADATA']._serialized_start=127 + _globals['_METADATA']._serialized_end=242 + _globals['_METADATA_PAIR']._serialized_start=196 + _globals['_METADATA_PAIR']._serialized_end=242 +# @@protoc_insertion_point(module_scope) diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/ftl_pb2.pyi b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/ftl_pb2.pyi new file mode 100644 index 0000000000..aef4d247f2 --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/ftl_pb2.pyi @@ -0,0 +1,29 @@ +from google.protobuf.internal import containers as _containers +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class PingRequest(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class PingResponse(_message.Message): + __slots__ = ("not_ready",) + NOT_READY_FIELD_NUMBER: _ClassVar[int] + not_ready: str + def __init__(self, not_ready: _Optional[str] = ...) -> None: ... + +class Metadata(_message.Message): + __slots__ = ("values",) + class Pair(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... + VALUES_FIELD_NUMBER: _ClassVar[int] + values: _containers.RepeatedCompositeFieldContainer[Metadata.Pair] + def __init__(self, values: _Optional[_Iterable[_Union[Metadata.Pair, _Mapping]]] = ...) -> None: ... diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/language/language_pb2.py b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/language/language_pb2.py new file mode 100644 index 0000000000..fb8e54f2d0 --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/language/language_pb2.py @@ -0,0 +1,98 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xyz/block/ftl/v1/language/language.proto +# Protobuf Python Version: 5.28.3 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 28, + 3, + '', + 'xyz/block/ftl/v1/language/language.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 +from xyz.block.ftl.v1 import ftl_pb2 as xyz_dot_block_dot_ftl_dot_v1_dot_ftl__pb2 +from xyz.block.ftl.v1.schema import schema_pb2 as xyz_dot_block_dot_ftl_dot_v1_dot_schema_dot_schema__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(xyz/block/ftl/v1/language/language.proto\x12\x19xyz.block.ftl.v1.language\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1axyz/block/ftl/v1/ftl.proto\x1a$xyz/block/ftl/v1/schema/schema.proto\"\xdb\x02\n\x0cModuleConfig\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03\x64ir\x18\x02 \x01(\tR\x03\x64ir\x12\x1a\n\x08language\x18\x03 \x01(\tR\x08language\x12\x1d\n\ndeploy_dir\x18\x04 \x01(\tR\tdeployDir\x12\x19\n\x05\x62uild\x18\x05 \x01(\tH\x00R\x05\x62uild\x88\x01\x01\x12\x1d\n\nbuild_lock\x18\x06 \x01(\tR\tbuildLock\x12\x35\n\x14generated_schema_dir\x18\x07 \x01(\tH\x01R\x12generatedSchemaDir\x88\x01\x01\x12\x14\n\x05watch\x18\x08 \x03(\tR\x05watch\x12@\n\x0flanguage_config\x18\t \x01(\x0b\x32\x17.google.protobuf.StructR\x0elanguageConfigB\x08\n\x06_buildB\x17\n\x15_generated_schema_dir\"d\n\rProjectConfig\x12\x10\n\x03\x64ir\x18\x01 \x01(\tR\x03\x64ir\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x15\n\x06no_git\x18\x03 \x01(\x08R\x05noGit\x12\x16\n\x06hermit\x18\x04 \x01(\x08R\x06hermit\"9\n\x1bGetCreateModuleFlagsRequest\x12\x1a\n\x08language\x18\x01 \x01(\tR\x08language\"\xcf\x02\n\x1cGetCreateModuleFlagsResponse\x12R\n\x05\x66lags\x18\x01 \x03(\x0b\x32<.xyz.block.ftl.v1.language.GetCreateModuleFlagsResponse.FlagR\x05\x66lags\x1a\xda\x01\n\x04\x46lag\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04help\x18\x02 \x01(\tR\x04help\x12\x19\n\x05\x65nvar\x18\x03 \x01(\tH\x00R\x05\x65nvar\x88\x01\x01\x12\x19\n\x05short\x18\x04 \x01(\tH\x01R\x05short\x88\x01\x01\x12%\n\x0bplaceholder\x18\x05 \x01(\tH\x02R\x0bplaceholder\x88\x01\x01\x12\x1d\n\x07\x64\x65\x66\x61ult\x18\x06 \x01(\tH\x03R\x07\x64\x65\x66\x61ult\x88\x01\x01\x42\x08\n\x06_envarB\x08\n\x06_shortB\x0e\n\x0c_placeholderB\n\n\x08_default\"\xbb\x01\n\x13\x43reateModuleRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03\x64ir\x18\x02 \x01(\tR\x03\x64ir\x12O\n\x0eproject_config\x18\x03 \x01(\x0b\x32(.xyz.block.ftl.v1.language.ProjectConfigR\rprojectConfig\x12-\n\x05\x46lags\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructR\x05\x46lags\"\x16\n\x14\x43reateModuleResponse\"/\n\x1bModuleConfigDefaultsRequest\x12\x10\n\x03\x64ir\x18\x01 \x01(\tR\x03\x64ir\"\xbd\x02\n\x1cModuleConfigDefaultsResponse\x12\x1d\n\ndeploy_dir\x18\x01 \x01(\tR\tdeployDir\x12\x19\n\x05\x62uild\x18\x02 \x01(\tH\x00R\x05\x62uild\x88\x01\x01\x12\"\n\nbuild_lock\x18\x03 \x01(\tH\x01R\tbuildLock\x88\x01\x01\x12\x35\n\x14generated_schema_dir\x18\x04 \x01(\tH\x02R\x12generatedSchemaDir\x88\x01\x01\x12\x14\n\x05watch\x18\x05 \x03(\tR\x05watch\x12@\n\x0flanguage_config\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructR\x0elanguageConfigB\x08\n\x06_buildB\r\n\x0b_build_lockB\x17\n\x15_generated_schema_dir\"c\n\x13\x44\x65pendenciesRequest\x12L\n\rmodule_config\x18\x01 \x01(\x0b\x32\'.xyz.block.ftl.v1.language.ModuleConfigR\x0cmoduleConfig\"0\n\x14\x44\x65pendenciesResponse\x12\x18\n\x07modules\x18\x01 \x03(\tR\x07modules\"\xe6\x01\n\x0c\x42uildContext\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12L\n\rmodule_config\x18\x02 \x01(\x0b\x32\'.xyz.block.ftl.v1.language.ModuleConfigR\x0cmoduleConfig\x12\x37\n\x06schema\x18\x03 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.SchemaR\x06schema\x12\"\n\x0c\x64\x65pendencies\x18\x04 \x03(\tR\x0c\x64\x65pendencies\x12\x1b\n\tbuild_env\x18\x05 \x03(\tR\x08\x62uildEnv\"i\n\x1a\x42uildContextUpdatedRequest\x12K\n\x0c\x62uildContext\x18\x01 \x01(\x0b\x32\'.xyz.block.ftl.v1.language.BuildContextR\x0c\x62uildContext\"\x1d\n\x1b\x42uildContextUpdatedResponse\"\xb1\x02\n\x05\x45rror\x12\x10\n\x03msg\x18\x01 \x01(\tR\x03msg\x12\x41\n\x05level\x18\x04 \x01(\x0e\x32+.xyz.block.ftl.v1.language.Error.ErrorLevelR\x05level\x12:\n\x03pos\x18\x05 \x01(\x0b\x32#.xyz.block.ftl.v1.language.PositionH\x00R\x03pos\x88\x01\x01\x12>\n\x04type\x18\x06 \x01(\x0e\x32*.xyz.block.ftl.v1.language.Error.ErrorTypeR\x04type\"+\n\nErrorLevel\x12\x08\n\x04INFO\x10\x00\x12\x08\n\x04WARN\x10\x01\x12\t\n\x05\x45RROR\x10\x02\"\"\n\tErrorType\x12\x07\n\x03\x46TL\x10\x00\x12\x0c\n\x08\x43OMPILER\x10\x01\x42\x06\n\x04_pos\"z\n\x08Position\x12\x1a\n\x08\x66ilename\x18\x01 \x01(\tR\x08\x66ilename\x12\x12\n\x04line\x18\x02 \x01(\x03R\x04line\x12 \n\x0bstartColumn\x18\x03 \x01(\x03R\x0bstartColumn\x12\x1c\n\tendColumn\x18\x04 \x01(\x03R\tendColumn\"E\n\tErrorList\x12\x38\n\x06\x65rrors\x18\x01 \x03(\x0b\x32 .xyz.block.ftl.v1.language.ErrorR\x06\x65rrors\"\xd3\x01\n\x0c\x42uildRequest\x12!\n\x0cproject_root\x18\x01 \x01(\tR\x0bprojectRoot\x12\x1d\n\nstubs_root\x18\x02 \x01(\tR\tstubsRoot\x12\x33\n\x15rebuild_automatically\x18\x03 \x01(\x08R\x14rebuildAutomatically\x12L\n\rbuild_context\x18\x04 \x01(\x0b\x32\'.xyz.block.ftl.v1.language.BuildContextR\x0c\x62uildContext\"3\n\x12\x41utoRebuildStarted\x12\x1d\n\ncontext_id\x18\x01 \x01(\tR\tcontextId\"\x91\x02\n\x0c\x42uildSuccess\x12\x1d\n\ncontext_id\x18\x01 \x01(\tR\tcontextId\x12\x30\n\x14is_automatic_rebuild\x18\x02 \x01(\x08R\x12isAutomaticRebuild\x12\x37\n\x06module\x18\x03 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ModuleR\x06module\x12\x16\n\x06\x64\x65ploy\x18\x04 \x03(\tR\x06\x64\x65ploy\x12!\n\x0c\x64ocker_image\x18\x05 \x01(\tR\x0b\x64ockerImage\x12<\n\x06\x65rrors\x18\x06 \x01(\x0b\x32$.xyz.block.ftl.v1.language.ErrorListR\x06\x65rrors\"\xd6\x01\n\x0c\x42uildFailure\x12\x1d\n\ncontext_id\x18\x01 \x01(\tR\tcontextId\x12\x30\n\x14is_automatic_rebuild\x18\x02 \x01(\x08R\x12isAutomaticRebuild\x12<\n\x06\x65rrors\x18\x03 \x01(\x0b\x32$.xyz.block.ftl.v1.language.ErrorListR\x06\x65rrors\x12\x37\n\x17invalidate_dependencies\x18\x04 \x01(\x08R\x16invalidateDependencies\"\x98\x02\n\nBuildEvent\x12\x61\n\x14\x61uto_rebuild_started\x18\x02 \x01(\x0b\x32-.xyz.block.ftl.v1.language.AutoRebuildStartedH\x00R\x12\x61utoRebuildStarted\x12N\n\rbuild_success\x18\x03 \x01(\x0b\x32\'.xyz.block.ftl.v1.language.BuildSuccessH\x00R\x0c\x62uildSuccess\x12N\n\rbuild_failure\x18\x04 \x01(\x0b\x32\'.xyz.block.ftl.v1.language.BuildFailureH\x00R\x0c\x62uildFailureB\x07\n\x05\x65vent\"\xa8\x02\n\x14GenerateStubsRequest\x12\x10\n\x03\x64ir\x18\x01 \x01(\tR\x03\x64ir\x12\x37\n\x06module\x18\x02 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ModuleR\x06module\x12L\n\rmodule_config\x18\x03 \x01(\x0b\x32\'.xyz.block.ftl.v1.language.ModuleConfigR\x0cmoduleConfig\x12^\n\x14native_module_config\x18\x04 \x01(\x0b\x32\'.xyz.block.ftl.v1.language.ModuleConfigH\x00R\x12nativeModuleConfig\x88\x01\x01\x42\x17\n\x15_native_module_config\"\x17\n\x15GenerateStubsResponse\"\xa2\x01\n\x19SyncStubReferencesRequest\x12L\n\rmodule_config\x18\x01 \x01(\x0b\x32\'.xyz.block.ftl.v1.language.ModuleConfigR\x0cmoduleConfig\x12\x1d\n\nstubs_root\x18\x02 \x01(\tR\tstubsRoot\x12\x18\n\x07modules\x18\x03 \x03(\tR\x07modules\"\x1c\n\x1aSyncStubReferencesResponse2\xb0\x08\n\x0fLanguageService\x12J\n\x04Ping\x12\x1d.xyz.block.ftl.v1.PingRequest\x1a\x1e.xyz.block.ftl.v1.PingResponse\"\x03\x90\x02\x01\x12\x87\x01\n\x14GetCreateModuleFlags\x12\x36.xyz.block.ftl.v1.language.GetCreateModuleFlagsRequest\x1a\x37.xyz.block.ftl.v1.language.GetCreateModuleFlagsResponse\x12o\n\x0c\x43reateModule\x12..xyz.block.ftl.v1.language.CreateModuleRequest\x1a/.xyz.block.ftl.v1.language.CreateModuleResponse\x12\x87\x01\n\x14ModuleConfigDefaults\x12\x36.xyz.block.ftl.v1.language.ModuleConfigDefaultsRequest\x1a\x37.xyz.block.ftl.v1.language.ModuleConfigDefaultsResponse\x12r\n\x0fGetDependencies\x12..xyz.block.ftl.v1.language.DependenciesRequest\x1a/.xyz.block.ftl.v1.language.DependenciesResponse\x12Y\n\x05\x42uild\x12\'.xyz.block.ftl.v1.language.BuildRequest\x1a%.xyz.block.ftl.v1.language.BuildEvent0\x01\x12\x84\x01\n\x13\x42uildContextUpdated\x12\x35.xyz.block.ftl.v1.language.BuildContextUpdatedRequest\x1a\x36.xyz.block.ftl.v1.language.BuildContextUpdatedResponse\x12r\n\rGenerateStubs\x12/.xyz.block.ftl.v1.language.GenerateStubsRequest\x1a\x30.xyz.block.ftl.v1.language.GenerateStubsResponse\x12\x81\x01\n\x12SyncStubReferences\x12\x34.xyz.block.ftl.v1.language.SyncStubReferencesRequest\x1a\x35.xyz.block.ftl.v1.language.SyncStubReferencesResponseBRP\x01ZNgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/language;languagepbb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xyz.block.ftl.v1.language.language_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'P\001ZNgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/language;languagepb' + _globals['_LANGUAGESERVICE'].methods_by_name['Ping']._loaded_options = None + _globals['_LANGUAGESERVICE'].methods_by_name['Ping']._serialized_options = b'\220\002\001' + _globals['_MODULECONFIG']._serialized_start=168 + _globals['_MODULECONFIG']._serialized_end=515 + _globals['_PROJECTCONFIG']._serialized_start=517 + _globals['_PROJECTCONFIG']._serialized_end=617 + _globals['_GETCREATEMODULEFLAGSREQUEST']._serialized_start=619 + _globals['_GETCREATEMODULEFLAGSREQUEST']._serialized_end=676 + _globals['_GETCREATEMODULEFLAGSRESPONSE']._serialized_start=679 + _globals['_GETCREATEMODULEFLAGSRESPONSE']._serialized_end=1014 + _globals['_GETCREATEMODULEFLAGSRESPONSE_FLAG']._serialized_start=796 + _globals['_GETCREATEMODULEFLAGSRESPONSE_FLAG']._serialized_end=1014 + _globals['_CREATEMODULEREQUEST']._serialized_start=1017 + _globals['_CREATEMODULEREQUEST']._serialized_end=1204 + _globals['_CREATEMODULERESPONSE']._serialized_start=1206 + _globals['_CREATEMODULERESPONSE']._serialized_end=1228 + _globals['_MODULECONFIGDEFAULTSREQUEST']._serialized_start=1230 + _globals['_MODULECONFIGDEFAULTSREQUEST']._serialized_end=1277 + _globals['_MODULECONFIGDEFAULTSRESPONSE']._serialized_start=1280 + _globals['_MODULECONFIGDEFAULTSRESPONSE']._serialized_end=1597 + _globals['_DEPENDENCIESREQUEST']._serialized_start=1599 + _globals['_DEPENDENCIESREQUEST']._serialized_end=1698 + _globals['_DEPENDENCIESRESPONSE']._serialized_start=1700 + _globals['_DEPENDENCIESRESPONSE']._serialized_end=1748 + _globals['_BUILDCONTEXT']._serialized_start=1751 + _globals['_BUILDCONTEXT']._serialized_end=1981 + _globals['_BUILDCONTEXTUPDATEDREQUEST']._serialized_start=1983 + _globals['_BUILDCONTEXTUPDATEDREQUEST']._serialized_end=2088 + _globals['_BUILDCONTEXTUPDATEDRESPONSE']._serialized_start=2090 + _globals['_BUILDCONTEXTUPDATEDRESPONSE']._serialized_end=2119 + _globals['_ERROR']._serialized_start=2122 + _globals['_ERROR']._serialized_end=2427 + _globals['_ERROR_ERRORLEVEL']._serialized_start=2340 + _globals['_ERROR_ERRORLEVEL']._serialized_end=2383 + _globals['_ERROR_ERRORTYPE']._serialized_start=2385 + _globals['_ERROR_ERRORTYPE']._serialized_end=2419 + _globals['_POSITION']._serialized_start=2429 + _globals['_POSITION']._serialized_end=2551 + _globals['_ERRORLIST']._serialized_start=2553 + _globals['_ERRORLIST']._serialized_end=2622 + _globals['_BUILDREQUEST']._serialized_start=2625 + _globals['_BUILDREQUEST']._serialized_end=2836 + _globals['_AUTOREBUILDSTARTED']._serialized_start=2838 + _globals['_AUTOREBUILDSTARTED']._serialized_end=2889 + _globals['_BUILDSUCCESS']._serialized_start=2892 + _globals['_BUILDSUCCESS']._serialized_end=3165 + _globals['_BUILDFAILURE']._serialized_start=3168 + _globals['_BUILDFAILURE']._serialized_end=3382 + _globals['_BUILDEVENT']._serialized_start=3385 + _globals['_BUILDEVENT']._serialized_end=3665 + _globals['_GENERATESTUBSREQUEST']._serialized_start=3668 + _globals['_GENERATESTUBSREQUEST']._serialized_end=3964 + _globals['_GENERATESTUBSRESPONSE']._serialized_start=3966 + _globals['_GENERATESTUBSRESPONSE']._serialized_end=3989 + _globals['_SYNCSTUBREFERENCESREQUEST']._serialized_start=3992 + _globals['_SYNCSTUBREFERENCESREQUEST']._serialized_end=4154 + _globals['_SYNCSTUBREFERENCESRESPONSE']._serialized_start=4156 + _globals['_SYNCSTUBREFERENCESRESPONSE']._serialized_end=4184 + _globals['_LANGUAGESERVICE']._serialized_start=4187 + _globals['_LANGUAGESERVICE']._serialized_end=5259 +# @@protoc_insertion_point(module_scope) diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/language/language_pb2.pyi b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/language/language_pb2.pyi new file mode 100644 index 0000000000..5d82dea562 --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/language/language_pb2.pyi @@ -0,0 +1,275 @@ +from google.protobuf import struct_pb2 as _struct_pb2 +from xyz.block.ftl.v1 import ftl_pb2 as _ftl_pb2 +from xyz.block.ftl.v1.schema import schema_pb2 as _schema_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class ModuleConfig(_message.Message): + __slots__ = ("name", "dir", "language", "deploy_dir", "build", "build_lock", "generated_schema_dir", "watch", "language_config") + NAME_FIELD_NUMBER: _ClassVar[int] + DIR_FIELD_NUMBER: _ClassVar[int] + LANGUAGE_FIELD_NUMBER: _ClassVar[int] + DEPLOY_DIR_FIELD_NUMBER: _ClassVar[int] + BUILD_FIELD_NUMBER: _ClassVar[int] + BUILD_LOCK_FIELD_NUMBER: _ClassVar[int] + GENERATED_SCHEMA_DIR_FIELD_NUMBER: _ClassVar[int] + WATCH_FIELD_NUMBER: _ClassVar[int] + LANGUAGE_CONFIG_FIELD_NUMBER: _ClassVar[int] + name: str + dir: str + language: str + deploy_dir: str + build: str + build_lock: str + generated_schema_dir: str + watch: _containers.RepeatedScalarFieldContainer[str] + language_config: _struct_pb2.Struct + def __init__(self, name: _Optional[str] = ..., dir: _Optional[str] = ..., language: _Optional[str] = ..., deploy_dir: _Optional[str] = ..., build: _Optional[str] = ..., build_lock: _Optional[str] = ..., generated_schema_dir: _Optional[str] = ..., watch: _Optional[_Iterable[str]] = ..., language_config: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... + +class ProjectConfig(_message.Message): + __slots__ = ("dir", "name", "no_git", "hermit") + DIR_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + NO_GIT_FIELD_NUMBER: _ClassVar[int] + HERMIT_FIELD_NUMBER: _ClassVar[int] + dir: str + name: str + no_git: bool + hermit: bool + def __init__(self, dir: _Optional[str] = ..., name: _Optional[str] = ..., no_git: bool = ..., hermit: bool = ...) -> None: ... + +class GetCreateModuleFlagsRequest(_message.Message): + __slots__ = ("language",) + LANGUAGE_FIELD_NUMBER: _ClassVar[int] + language: str + def __init__(self, language: _Optional[str] = ...) -> None: ... + +class GetCreateModuleFlagsResponse(_message.Message): + __slots__ = ("flags",) + class Flag(_message.Message): + __slots__ = ("name", "help", "envar", "short", "placeholder", "default") + NAME_FIELD_NUMBER: _ClassVar[int] + HELP_FIELD_NUMBER: _ClassVar[int] + ENVAR_FIELD_NUMBER: _ClassVar[int] + SHORT_FIELD_NUMBER: _ClassVar[int] + PLACEHOLDER_FIELD_NUMBER: _ClassVar[int] + DEFAULT_FIELD_NUMBER: _ClassVar[int] + name: str + help: str + envar: str + short: str + placeholder: str + default: str + def __init__(self, name: _Optional[str] = ..., help: _Optional[str] = ..., envar: _Optional[str] = ..., short: _Optional[str] = ..., placeholder: _Optional[str] = ..., default: _Optional[str] = ...) -> None: ... + FLAGS_FIELD_NUMBER: _ClassVar[int] + flags: _containers.RepeatedCompositeFieldContainer[GetCreateModuleFlagsResponse.Flag] + def __init__(self, flags: _Optional[_Iterable[_Union[GetCreateModuleFlagsResponse.Flag, _Mapping]]] = ...) -> None: ... + +class CreateModuleRequest(_message.Message): + __slots__ = ("name", "dir", "project_config", "Flags") + NAME_FIELD_NUMBER: _ClassVar[int] + DIR_FIELD_NUMBER: _ClassVar[int] + PROJECT_CONFIG_FIELD_NUMBER: _ClassVar[int] + FLAGS_FIELD_NUMBER: _ClassVar[int] + name: str + dir: str + project_config: ProjectConfig + Flags: _struct_pb2.Struct + def __init__(self, name: _Optional[str] = ..., dir: _Optional[str] = ..., project_config: _Optional[_Union[ProjectConfig, _Mapping]] = ..., Flags: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... + +class CreateModuleResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class ModuleConfigDefaultsRequest(_message.Message): + __slots__ = ("dir",) + DIR_FIELD_NUMBER: _ClassVar[int] + dir: str + def __init__(self, dir: _Optional[str] = ...) -> None: ... + +class ModuleConfigDefaultsResponse(_message.Message): + __slots__ = ("deploy_dir", "build", "build_lock", "generated_schema_dir", "watch", "language_config") + DEPLOY_DIR_FIELD_NUMBER: _ClassVar[int] + BUILD_FIELD_NUMBER: _ClassVar[int] + BUILD_LOCK_FIELD_NUMBER: _ClassVar[int] + GENERATED_SCHEMA_DIR_FIELD_NUMBER: _ClassVar[int] + WATCH_FIELD_NUMBER: _ClassVar[int] + LANGUAGE_CONFIG_FIELD_NUMBER: _ClassVar[int] + deploy_dir: str + build: str + build_lock: str + generated_schema_dir: str + watch: _containers.RepeatedScalarFieldContainer[str] + language_config: _struct_pb2.Struct + def __init__(self, deploy_dir: _Optional[str] = ..., build: _Optional[str] = ..., build_lock: _Optional[str] = ..., generated_schema_dir: _Optional[str] = ..., watch: _Optional[_Iterable[str]] = ..., language_config: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... + +class DependenciesRequest(_message.Message): + __slots__ = ("module_config",) + MODULE_CONFIG_FIELD_NUMBER: _ClassVar[int] + module_config: ModuleConfig + def __init__(self, module_config: _Optional[_Union[ModuleConfig, _Mapping]] = ...) -> None: ... + +class DependenciesResponse(_message.Message): + __slots__ = ("modules",) + MODULES_FIELD_NUMBER: _ClassVar[int] + modules: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, modules: _Optional[_Iterable[str]] = ...) -> None: ... + +class BuildContext(_message.Message): + __slots__ = ("id", "module_config", "schema", "dependencies", "build_env") + ID_FIELD_NUMBER: _ClassVar[int] + MODULE_CONFIG_FIELD_NUMBER: _ClassVar[int] + SCHEMA_FIELD_NUMBER: _ClassVar[int] + DEPENDENCIES_FIELD_NUMBER: _ClassVar[int] + BUILD_ENV_FIELD_NUMBER: _ClassVar[int] + id: str + module_config: ModuleConfig + schema: _schema_pb2.Schema + dependencies: _containers.RepeatedScalarFieldContainer[str] + build_env: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, id: _Optional[str] = ..., module_config: _Optional[_Union[ModuleConfig, _Mapping]] = ..., schema: _Optional[_Union[_schema_pb2.Schema, _Mapping]] = ..., dependencies: _Optional[_Iterable[str]] = ..., build_env: _Optional[_Iterable[str]] = ...) -> None: ... + +class BuildContextUpdatedRequest(_message.Message): + __slots__ = ("buildContext",) + BUILDCONTEXT_FIELD_NUMBER: _ClassVar[int] + buildContext: BuildContext + def __init__(self, buildContext: _Optional[_Union[BuildContext, _Mapping]] = ...) -> None: ... + +class BuildContextUpdatedResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class Error(_message.Message): + __slots__ = ("msg", "level", "pos", "type") + class ErrorLevel(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + INFO: _ClassVar[Error.ErrorLevel] + WARN: _ClassVar[Error.ErrorLevel] + ERROR: _ClassVar[Error.ErrorLevel] + INFO: Error.ErrorLevel + WARN: Error.ErrorLevel + ERROR: Error.ErrorLevel + class ErrorType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + FTL: _ClassVar[Error.ErrorType] + COMPILER: _ClassVar[Error.ErrorType] + FTL: Error.ErrorType + COMPILER: Error.ErrorType + MSG_FIELD_NUMBER: _ClassVar[int] + LEVEL_FIELD_NUMBER: _ClassVar[int] + POS_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + msg: str + level: Error.ErrorLevel + pos: Position + type: Error.ErrorType + def __init__(self, msg: _Optional[str] = ..., level: _Optional[_Union[Error.ErrorLevel, str]] = ..., pos: _Optional[_Union[Position, _Mapping]] = ..., type: _Optional[_Union[Error.ErrorType, str]] = ...) -> None: ... + +class Position(_message.Message): + __slots__ = ("filename", "line", "startColumn", "endColumn") + FILENAME_FIELD_NUMBER: _ClassVar[int] + LINE_FIELD_NUMBER: _ClassVar[int] + STARTCOLUMN_FIELD_NUMBER: _ClassVar[int] + ENDCOLUMN_FIELD_NUMBER: _ClassVar[int] + filename: str + line: int + startColumn: int + endColumn: int + def __init__(self, filename: _Optional[str] = ..., line: _Optional[int] = ..., startColumn: _Optional[int] = ..., endColumn: _Optional[int] = ...) -> None: ... + +class ErrorList(_message.Message): + __slots__ = ("errors",) + ERRORS_FIELD_NUMBER: _ClassVar[int] + errors: _containers.RepeatedCompositeFieldContainer[Error] + def __init__(self, errors: _Optional[_Iterable[_Union[Error, _Mapping]]] = ...) -> None: ... + +class BuildRequest(_message.Message): + __slots__ = ("project_root", "stubs_root", "rebuild_automatically", "build_context") + PROJECT_ROOT_FIELD_NUMBER: _ClassVar[int] + STUBS_ROOT_FIELD_NUMBER: _ClassVar[int] + REBUILD_AUTOMATICALLY_FIELD_NUMBER: _ClassVar[int] + BUILD_CONTEXT_FIELD_NUMBER: _ClassVar[int] + project_root: str + stubs_root: str + rebuild_automatically: bool + build_context: BuildContext + def __init__(self, project_root: _Optional[str] = ..., stubs_root: _Optional[str] = ..., rebuild_automatically: bool = ..., build_context: _Optional[_Union[BuildContext, _Mapping]] = ...) -> None: ... + +class AutoRebuildStarted(_message.Message): + __slots__ = ("context_id",) + CONTEXT_ID_FIELD_NUMBER: _ClassVar[int] + context_id: str + def __init__(self, context_id: _Optional[str] = ...) -> None: ... + +class BuildSuccess(_message.Message): + __slots__ = ("context_id", "is_automatic_rebuild", "module", "deploy", "docker_image", "errors") + CONTEXT_ID_FIELD_NUMBER: _ClassVar[int] + IS_AUTOMATIC_REBUILD_FIELD_NUMBER: _ClassVar[int] + MODULE_FIELD_NUMBER: _ClassVar[int] + DEPLOY_FIELD_NUMBER: _ClassVar[int] + DOCKER_IMAGE_FIELD_NUMBER: _ClassVar[int] + ERRORS_FIELD_NUMBER: _ClassVar[int] + context_id: str + is_automatic_rebuild: bool + module: _schema_pb2.Module + deploy: _containers.RepeatedScalarFieldContainer[str] + docker_image: str + errors: ErrorList + def __init__(self, context_id: _Optional[str] = ..., is_automatic_rebuild: bool = ..., module: _Optional[_Union[_schema_pb2.Module, _Mapping]] = ..., deploy: _Optional[_Iterable[str]] = ..., docker_image: _Optional[str] = ..., errors: _Optional[_Union[ErrorList, _Mapping]] = ...) -> None: ... + +class BuildFailure(_message.Message): + __slots__ = ("context_id", "is_automatic_rebuild", "errors", "invalidate_dependencies") + CONTEXT_ID_FIELD_NUMBER: _ClassVar[int] + IS_AUTOMATIC_REBUILD_FIELD_NUMBER: _ClassVar[int] + ERRORS_FIELD_NUMBER: _ClassVar[int] + INVALIDATE_DEPENDENCIES_FIELD_NUMBER: _ClassVar[int] + context_id: str + is_automatic_rebuild: bool + errors: ErrorList + invalidate_dependencies: bool + def __init__(self, context_id: _Optional[str] = ..., is_automatic_rebuild: bool = ..., errors: _Optional[_Union[ErrorList, _Mapping]] = ..., invalidate_dependencies: bool = ...) -> None: ... + +class BuildEvent(_message.Message): + __slots__ = ("auto_rebuild_started", "build_success", "build_failure") + AUTO_REBUILD_STARTED_FIELD_NUMBER: _ClassVar[int] + BUILD_SUCCESS_FIELD_NUMBER: _ClassVar[int] + BUILD_FAILURE_FIELD_NUMBER: _ClassVar[int] + auto_rebuild_started: AutoRebuildStarted + build_success: BuildSuccess + build_failure: BuildFailure + def __init__(self, auto_rebuild_started: _Optional[_Union[AutoRebuildStarted, _Mapping]] = ..., build_success: _Optional[_Union[BuildSuccess, _Mapping]] = ..., build_failure: _Optional[_Union[BuildFailure, _Mapping]] = ...) -> None: ... + +class GenerateStubsRequest(_message.Message): + __slots__ = ("dir", "module", "module_config", "native_module_config") + DIR_FIELD_NUMBER: _ClassVar[int] + MODULE_FIELD_NUMBER: _ClassVar[int] + MODULE_CONFIG_FIELD_NUMBER: _ClassVar[int] + NATIVE_MODULE_CONFIG_FIELD_NUMBER: _ClassVar[int] + dir: str + module: _schema_pb2.Module + module_config: ModuleConfig + native_module_config: ModuleConfig + def __init__(self, dir: _Optional[str] = ..., module: _Optional[_Union[_schema_pb2.Module, _Mapping]] = ..., module_config: _Optional[_Union[ModuleConfig, _Mapping]] = ..., native_module_config: _Optional[_Union[ModuleConfig, _Mapping]] = ...) -> None: ... + +class GenerateStubsResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class SyncStubReferencesRequest(_message.Message): + __slots__ = ("module_config", "stubs_root", "modules") + MODULE_CONFIG_FIELD_NUMBER: _ClassVar[int] + STUBS_ROOT_FIELD_NUMBER: _ClassVar[int] + MODULES_FIELD_NUMBER: _ClassVar[int] + module_config: ModuleConfig + stubs_root: str + modules: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, module_config: _Optional[_Union[ModuleConfig, _Mapping]] = ..., stubs_root: _Optional[str] = ..., modules: _Optional[_Iterable[str]] = ...) -> None: ... + +class SyncStubReferencesResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/module_pb2.py b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/module_pb2.py new file mode 100644 index 0000000000..aaa71ffdbd --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/module_pb2.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xyz/block/ftl/v1/module.proto +# Protobuf Python Version: 5.28.3 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 28, + 3, + '', + 'xyz/block/ftl/v1/module.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +from xyz.block.ftl.v1 import ftl_pb2 as xyz_dot_block_dot_ftl_dot_v1_dot_ftl__pb2 +from xyz.block.ftl.v1.schema import schema_pb2 as xyz_dot_block_dot_ftl_dot_v1_dot_schema_dot_schema__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dxyz/block/ftl/v1/module.proto\x12\x10xyz.block.ftl.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1axyz/block/ftl/v1/ftl.proto\x1a$xyz/block/ftl/v1/schema/schema.proto\"l\n\x13\x41\x63quireLeaseRequest\x12\x16\n\x06module\x18\x01 \x01(\tR\x06module\x12\x10\n\x03key\x18\x02 \x03(\tR\x03key\x12+\n\x03ttl\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationR\x03ttl\"\x16\n\x14\x41\x63quireLeaseResponse\"u\n\x13PublishEventRequest\x12\x32\n\x05topic\x18\x01 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x05topic\x12\x12\n\x04\x62ody\x18\x02 \x01(\x0cR\x04\x62ody\x12\x16\n\x06\x63\x61ller\x18\x03 \x01(\tR\x06\x63\x61ller\"\x16\n\x14PublishEventResponse\".\n\x14ModuleContextRequest\x12\x16\n\x06module\x18\x01 \x01(\tR\x06module\"\xde\x04\n\x15ModuleContextResponse\x12\x16\n\x06module\x18\x01 \x01(\tR\x06module\x12N\n\x07\x63onfigs\x18\x02 \x03(\x0b\x32\x34.xyz.block.ftl.v1.ModuleContextResponse.ConfigsEntryR\x07\x63onfigs\x12N\n\x07secrets\x18\x03 \x03(\x0b\x32\x34.xyz.block.ftl.v1.ModuleContextResponse.SecretsEntryR\x07secrets\x12I\n\tdatabases\x18\x04 \x03(\x0b\x32+.xyz.block.ftl.v1.ModuleContextResponse.DSNR\tdatabases\x1a\x41\n\x03Ref\x12\x1b\n\x06module\x18\x01 \x01(\tH\x00R\x06module\x88\x01\x01\x12\x12\n\x04name\x18\x02 \x01(\tR\x04nameB\t\n\x07_module\x1ao\n\x03\x44SN\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x42\n\x04type\x18\x02 \x01(\x0e\x32..xyz.block.ftl.v1.ModuleContextResponse.DBTypeR\x04type\x12\x10\n\x03\x64sn\x18\x03 \x01(\tR\x03\x64sn\x1a:\n\x0c\x43onfigsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\x0cR\x05value:\x02\x38\x01\x1a:\n\x0cSecretsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\x0cR\x05value:\x02\x38\x01\"\x16\n\x06\x44\x42Type\x12\x0c\n\x08POSTGRES\x10\x00\x32\x84\x03\n\rModuleService\x12J\n\x04Ping\x12\x1d.xyz.block.ftl.v1.PingRequest\x1a\x1e.xyz.block.ftl.v1.PingResponse\"\x03\x90\x02\x01\x12\x65\n\x10GetModuleContext\x12&.xyz.block.ftl.v1.ModuleContextRequest\x1a\'.xyz.block.ftl.v1.ModuleContextResponse0\x01\x12\x61\n\x0c\x41\x63quireLease\x12%.xyz.block.ftl.v1.AcquireLeaseRequest\x1a&.xyz.block.ftl.v1.AcquireLeaseResponse(\x01\x30\x01\x12]\n\x0cPublishEvent\x12%.xyz.block.ftl.v1.PublishEventRequest\x1a&.xyz.block.ftl.v1.PublishEventResponseBDP\x01Z@github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1;ftlv1b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xyz.block.ftl.v1.module_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'P\001Z@github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1;ftlv1' + _globals['_MODULECONTEXTRESPONSE_CONFIGSENTRY']._loaded_options = None + _globals['_MODULECONTEXTRESPONSE_CONFIGSENTRY']._serialized_options = b'8\001' + _globals['_MODULECONTEXTRESPONSE_SECRETSENTRY']._loaded_options = None + _globals['_MODULECONTEXTRESPONSE_SECRETSENTRY']._serialized_options = b'8\001' + _globals['_MODULESERVICE'].methods_by_name['Ping']._loaded_options = None + _globals['_MODULESERVICE'].methods_by_name['Ping']._serialized_options = b'\220\002\001' + _globals['_ACQUIRELEASEREQUEST']._serialized_start=149 + _globals['_ACQUIRELEASEREQUEST']._serialized_end=257 + _globals['_ACQUIRELEASERESPONSE']._serialized_start=259 + _globals['_ACQUIRELEASERESPONSE']._serialized_end=281 + _globals['_PUBLISHEVENTREQUEST']._serialized_start=283 + _globals['_PUBLISHEVENTREQUEST']._serialized_end=400 + _globals['_PUBLISHEVENTRESPONSE']._serialized_start=402 + _globals['_PUBLISHEVENTRESPONSE']._serialized_end=424 + _globals['_MODULECONTEXTREQUEST']._serialized_start=426 + _globals['_MODULECONTEXTREQUEST']._serialized_end=472 + _globals['_MODULECONTEXTRESPONSE']._serialized_start=475 + _globals['_MODULECONTEXTRESPONSE']._serialized_end=1081 + _globals['_MODULECONTEXTRESPONSE_REF']._serialized_start=759 + _globals['_MODULECONTEXTRESPONSE_REF']._serialized_end=824 + _globals['_MODULECONTEXTRESPONSE_DSN']._serialized_start=826 + _globals['_MODULECONTEXTRESPONSE_DSN']._serialized_end=937 + _globals['_MODULECONTEXTRESPONSE_CONFIGSENTRY']._serialized_start=939 + _globals['_MODULECONTEXTRESPONSE_CONFIGSENTRY']._serialized_end=997 + _globals['_MODULECONTEXTRESPONSE_SECRETSENTRY']._serialized_start=999 + _globals['_MODULECONTEXTRESPONSE_SECRETSENTRY']._serialized_end=1057 + _globals['_MODULECONTEXTRESPONSE_DBTYPE']._serialized_start=1059 + _globals['_MODULECONTEXTRESPONSE_DBTYPE']._serialized_end=1081 + _globals['_MODULESERVICE']._serialized_start=1084 + _globals['_MODULESERVICE']._serialized_end=1472 +# @@protoc_insertion_point(module_scope) diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/module_pb2.pyi b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/module_pb2.pyi new file mode 100644 index 0000000000..c70db8cbfe --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/module_pb2.pyi @@ -0,0 +1,90 @@ +from google.protobuf import duration_pb2 as _duration_pb2 +from xyz.block.ftl.v1 import ftl_pb2 as _ftl_pb2 +from xyz.block.ftl.v1.schema import schema_pb2 as _schema_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class AcquireLeaseRequest(_message.Message): + __slots__ = ("module", "key", "ttl") + MODULE_FIELD_NUMBER: _ClassVar[int] + KEY_FIELD_NUMBER: _ClassVar[int] + TTL_FIELD_NUMBER: _ClassVar[int] + module: str + key: _containers.RepeatedScalarFieldContainer[str] + ttl: _duration_pb2.Duration + def __init__(self, module: _Optional[str] = ..., key: _Optional[_Iterable[str]] = ..., ttl: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ...) -> None: ... + +class AcquireLeaseResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class PublishEventRequest(_message.Message): + __slots__ = ("topic", "body", "caller") + TOPIC_FIELD_NUMBER: _ClassVar[int] + BODY_FIELD_NUMBER: _ClassVar[int] + CALLER_FIELD_NUMBER: _ClassVar[int] + topic: _schema_pb2.Ref + body: bytes + caller: str + def __init__(self, topic: _Optional[_Union[_schema_pb2.Ref, _Mapping]] = ..., body: _Optional[bytes] = ..., caller: _Optional[str] = ...) -> None: ... + +class PublishEventResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class ModuleContextRequest(_message.Message): + __slots__ = ("module",) + MODULE_FIELD_NUMBER: _ClassVar[int] + module: str + def __init__(self, module: _Optional[str] = ...) -> None: ... + +class ModuleContextResponse(_message.Message): + __slots__ = ("module", "configs", "secrets", "databases") + class DBType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + POSTGRES: _ClassVar[ModuleContextResponse.DBType] + POSTGRES: ModuleContextResponse.DBType + class Ref(_message.Message): + __slots__ = ("module", "name") + MODULE_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + module: str + name: str + def __init__(self, module: _Optional[str] = ..., name: _Optional[str] = ...) -> None: ... + class DSN(_message.Message): + __slots__ = ("name", "type", "dsn") + NAME_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + DSN_FIELD_NUMBER: _ClassVar[int] + name: str + type: ModuleContextResponse.DBType + dsn: str + def __init__(self, name: _Optional[str] = ..., type: _Optional[_Union[ModuleContextResponse.DBType, str]] = ..., dsn: _Optional[str] = ...) -> None: ... + class ConfigsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: bytes + def __init__(self, key: _Optional[str] = ..., value: _Optional[bytes] = ...) -> None: ... + class SecretsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: bytes + def __init__(self, key: _Optional[str] = ..., value: _Optional[bytes] = ...) -> None: ... + MODULE_FIELD_NUMBER: _ClassVar[int] + CONFIGS_FIELD_NUMBER: _ClassVar[int] + SECRETS_FIELD_NUMBER: _ClassVar[int] + DATABASES_FIELD_NUMBER: _ClassVar[int] + module: str + configs: _containers.ScalarMap[str, bytes] + secrets: _containers.ScalarMap[str, bytes] + databases: _containers.RepeatedCompositeFieldContainer[ModuleContextResponse.DSN] + def __init__(self, module: _Optional[str] = ..., configs: _Optional[_Mapping[str, bytes]] = ..., secrets: _Optional[_Mapping[str, bytes]] = ..., databases: _Optional[_Iterable[_Union[ModuleContextResponse.DSN, _Mapping]]] = ...) -> None: ... diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.py b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.py new file mode 100644 index 0000000000..1fae994cb0 --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.py @@ -0,0 +1,140 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xyz/block/ftl/v1/schema/schema.proto +# Protobuf Python Version: 5.28.3 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 28, + 3, + '', + 'xyz/block/ftl/v1/schema/schema.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$xyz/block/ftl/v1/schema/schema.proto\x12\x17xyz.block.ftl.v1.schema\x1a\x1fgoogle/protobuf/timestamp.proto\"G\n\x03\x41ny\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\x82\x01\n\x05\x41rray\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x37\n\x07\x65lement\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x07\x65lementB\x06\n\x04_pos\"H\n\x04\x42ool\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"I\n\x05\x42ytes\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\xad\x01\n\x06\x43onfig\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x31\n\x04type\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x04typeB\x06\n\x04_pos\"\xd8\x02\n\x04\x44\x61ta\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12O\n\x0ftype_parameters\x18\x05 \x03(\x0b\x32&.xyz.block.ftl.v1.schema.TypeParameterR\x0etypeParameters\x12\x36\n\x06\x66ields\x18\x06 \x03(\x0b\x32\x1e.xyz.block.ftl.v1.schema.FieldR\x06\x66ields\x12=\n\x08metadata\x18\x07 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataR\x08metadataB\x06\n\x04_pos\"\xe7\x01\n\x08\x44\x61tabase\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12I\n\x07runtime\x18\x92\xf7\x01 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.DatabaseRuntimeH\x01R\x07runtime\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04type\x18\x04 \x01(\tR\x04type\x12\x12\n\x04name\x18\x03 \x01(\tR\x04nameB\x06\n\x04_posB\n\n\x08_runtime\"#\n\x0f\x44\x61tabaseRuntime\x12\x10\n\x03\x64sn\x18\x01 \x01(\tR\x03\x64sn\"\xaf\x04\n\x04\x44\x65\x63l\x12\x39\n\x06\x63onfig\x18\x06 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ConfigH\x00R\x06\x63onfig\x12\x33\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.DataH\x00R\x04\x64\x61ta\x12?\n\x08\x64\x61tabase\x18\x03 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.DatabaseH\x00R\x08\x64\x61tabase\x12\x33\n\x04\x65num\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.EnumH\x00R\x04\x65num\x12\x39\n\x06secret\x18\x07 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.SecretH\x00R\x06secret\x12K\n\x0csubscription\x18\n \x01(\x0b\x32%.xyz.block.ftl.v1.schema.SubscriptionH\x00R\x0csubscription\x12\x36\n\x05topic\x18\t \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.TopicH\x00R\x05topic\x12\x43\n\ntype_alias\x18\x05 \x01(\x0b\x32\".xyz.block.ftl.v1.schema.TypeAliasH\x00R\ttypeAlias\x12\x33\n\x04verb\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.VerbH\x00R\x04verbB\x07\n\x05value\"\x93\x02\n\x04\x45num\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x36\n\x04type\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeH\x01R\x04type\x88\x01\x01\x12@\n\x08variants\x18\x06 \x03(\x0b\x32$.xyz.block.ftl.v1.schema.EnumVariantR\x08variantsB\x06\n\x04_posB\x07\n\x05_type\"\xb5\x01\n\x0b\x45numVariant\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x34\n\x05value\x18\x04 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.ValueR\x05valueB\x06\n\x04_pos\"\xeb\x01\n\x05\x46ield\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x03 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x31\n\x04type\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x04type\x12=\n\x08metadata\x18\x05 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataR\x08metadataB\x06\n\x04_pos\"I\n\x05\x46loat\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\xe7\x01\n\x14IngressPathComponent\x12_\n\x14ingress_path_literal\x18\x01 \x01(\x0b\x32+.xyz.block.ftl.v1.schema.IngressPathLiteralH\x00R\x12ingressPathLiteral\x12\x65\n\x16ingress_path_parameter\x18\x02 \x01(\x0b\x32-.xyz.block.ftl.v1.schema.IngressPathParameterH\x00R\x14ingressPathParameterB\x07\n\x05value\"j\n\x12IngressPathLiteral\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04text\x18\x02 \x01(\tR\x04textB\x06\n\x04_pos\"l\n\x14IngressPathParameter\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04name\x18\x02 \x01(\tR\x04nameB\x06\n\x04_pos\"G\n\x03Int\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"b\n\x08IntValue\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x14\n\x05value\x18\x02 \x01(\x03R\x05valueB\x06\n\x04_pos\"\xad\x01\n\x03Map\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12/\n\x03key\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x03key\x12\x33\n\x05value\x18\x03 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x05valueB\x06\n\x04_pos\"\x94\x06\n\x08Metadata\x12>\n\x05\x61lias\x18\x05 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.MetadataAliasH\x00R\x05\x61lias\x12>\n\x05\x63\x61lls\x18\x01 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.MetadataCallsH\x00R\x05\x63\x61lls\x12\x41\n\x06\x63onfig\x18\n \x01(\x0b\x32\'.xyz.block.ftl.v1.schema.MetadataConfigH\x00R\x06\x63onfig\x12\x45\n\x08\x63ron_job\x18\x03 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataCronJobH\x00R\x07\x63ronJob\x12J\n\tdatabases\x18\x04 \x01(\x0b\x32*.xyz.block.ftl.v1.schema.MetadataDatabasesH\x00R\tdatabases\x12G\n\x08\x65ncoding\x18\t \x01(\x0b\x32).xyz.block.ftl.v1.schema.MetadataEncodingH\x00R\x08\x65ncoding\x12\x44\n\x07ingress\x18\x02 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataIngressH\x00R\x07ingress\x12>\n\x05retry\x18\x06 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.MetadataRetryH\x00R\x05retry\x12\x44\n\x07secrets\x18\x0b \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataSecretsH\x00R\x07secrets\x12M\n\nsubscriber\x18\x07 \x01(\x0b\x32+.xyz.block.ftl.v1.schema.MetadataSubscriberH\x00R\nsubscriber\x12\x45\n\x08type_map\x18\x08 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataTypeMapH\x00R\x07typeMapB\x07\n\x05value\"\x9f\x01\n\rMetadataAlias\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x36\n\x04kind\x18\x02 \x01(\x0e\x32\".xyz.block.ftl.v1.schema.AliasKindR\x04kind\x12\x14\n\x05\x61lias\x18\x03 \x01(\tR\x05\x61liasB\x06\n\x04_pos\"\x85\x01\n\rMetadataCalls\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x32\n\x05\x63\x61lls\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x05\x63\x61llsB\x06\n\x04_pos\"\x88\x01\n\x0eMetadataConfig\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x34\n\x06\x63onfig\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x06\x63onfigB\x06\n\x04_pos\"g\n\x0fMetadataCronJob\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04\x63ron\x18\x02 \x01(\tR\x04\x63ronB\x06\n\x04_pos\"\x89\x01\n\x11MetadataDatabases\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x32\n\x05\x63\x61lls\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x05\x63\x61llsB\x06\n\x04_pos\"\x82\x01\n\x10MetadataEncoding\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04type\x18\x02 \x01(\tR\x04type\x12\x18\n\x07lenient\x18\x03 \x01(\x08R\x07lenientB\x06\n\x04_pos\"\xc2\x01\n\x0fMetadataIngress\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04type\x18\x02 \x01(\tR\x04type\x12\x16\n\x06method\x18\x03 \x01(\tR\x06method\x12\x41\n\x04path\x18\x04 \x03(\x0b\x32-.xyz.block.ftl.v1.schema.IngressPathComponentR\x04pathB\x06\n\x04_pos\"\xfb\x01\n\rMetadataRetry\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x19\n\x05\x63ount\x18\x02 \x01(\x03H\x01R\x05\x63ount\x88\x01\x01\x12\x1f\n\x0bmin_backoff\x18\x03 \x01(\tR\nminBackoff\x12\x1f\n\x0bmax_backoff\x18\x04 \x01(\tR\nmaxBackoff\x12\x37\n\x05\x63\x61tch\x18\x05 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefH\x02R\x05\x63\x61tch\x88\x01\x01\x42\x06\n\x04_posB\x08\n\x06_countB\x08\n\x06_catch\"\x8b\x01\n\x0fMetadataSecrets\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x36\n\x07secrets\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x07secretsB\x06\n\x04_pos\"j\n\x12MetadataSubscriber\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04name\x18\x02 \x01(\tR\x04nameB\x06\n\x04_pos\"\x8e\x01\n\x0fMetadataTypeMap\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x18\n\x07runtime\x18\x02 \x01(\tR\x07runtime\x12\x1f\n\x0bnative_name\x18\x03 \x01(\tR\nnativeNameB\x06\n\x04_pos\"\x9e\x02\n\x06Module\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x18\n\x07\x62uiltin\x18\x03 \x01(\x08R\x07\x62uiltin\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x33\n\x05\x64\x65\x63ls\x18\x05 \x03(\x0b\x32\x1d.xyz.block.ftl.v1.schema.DeclR\x05\x64\x65\x63ls\x12G\n\x07runtime\x18\x92\xf7\x01 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.ModuleRuntimeH\x01R\x07runtime\x88\x01\x01\x42\x06\n\x04_posB\n\n\x08_runtime\"\xc9\x01\n\rModuleRuntime\x12;\n\x0b\x63reate_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ncreateTime\x12\x1a\n\x08language\x18\x02 \x01(\tR\x08language\x12!\n\x0cmin_replicas\x18\x03 \x01(\x05R\x0bminReplicas\x12\x13\n\x02os\x18\x04 \x01(\tH\x00R\x02os\x88\x01\x01\x12\x17\n\x04\x61rch\x18\x05 \x01(\tH\x01R\x04\x61rch\x88\x01\x01\x42\x05\n\x03_osB\x07\n\x05_arch\"\x8d\x01\n\x08Optional\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x36\n\x04type\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeH\x01R\x04type\x88\x01\x01\x42\x06\n\x04_posB\x07\n\x05_type\"R\n\x08Position\x12\x1a\n\x08\x66ilename\x18\x01 \x01(\tR\x08\x66ilename\x12\x12\n\x04line\x18\x02 \x01(\x03R\x04line\x12\x16\n\x06\x63olumn\x18\x03 \x01(\x03R\x06\x63olumn\"\xbb\x01\n\x03Ref\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x16\n\x06module\x18\x03 \x01(\tR\x06module\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x46\n\x0ftype_parameters\x18\x04 \x03(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x0etypeParametersB\x06\n\x04_pos\"\x85\x01\n\x06Schema\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x39\n\x07modules\x18\x02 \x03(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ModuleR\x07modulesB\x06\n\x04_pos\"\xad\x01\n\x06Secret\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x31\n\x04type\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x04typeB\x06\n\x04_pos\"J\n\x06String\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"e\n\x0bStringValue\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x14\n\x05value\x18\x02 \x01(\tR\x05valueB\x06\n\x04_pos\"\xb4\x01\n\x0cSubscription\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x32\n\x05topic\x18\x04 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x05topicB\x06\n\x04_pos\"H\n\x04Time\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\xc6\x01\n\x05Topic\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x33\n\x05\x65vent\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x05\x65ventB\x06\n\x04_pos\"\x9a\x05\n\x04Type\x12\x30\n\x03\x61ny\x18\t \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.AnyH\x00R\x03\x61ny\x12\x36\n\x05\x61rray\x18\x07 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.ArrayH\x00R\x05\x61rray\x12\x33\n\x04\x62ool\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.BoolH\x00R\x04\x62ool\x12\x36\n\x05\x62ytes\x18\x04 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.BytesH\x00R\x05\x62ytes\x12\x36\n\x05\x66loat\x18\x02 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.FloatH\x00R\x05\x66loat\x12\x30\n\x03int\x18\x01 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.IntH\x00R\x03int\x12\x30\n\x03map\x18\x08 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.MapH\x00R\x03map\x12?\n\x08optional\x18\x0c \x01(\x0b\x32!.xyz.block.ftl.v1.schema.OptionalH\x00R\x08optional\x12\x30\n\x03ref\x18\x0b \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefH\x00R\x03ref\x12\x39\n\x06string\x18\x03 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.StringH\x00R\x06string\x12\x33\n\x04time\x18\x06 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TimeH\x00R\x04time\x12\x33\n\x04unit\x18\n \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.UnitH\x00R\x04unitB\x07\n\x05value\"\x87\x02\n\tTypeAlias\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x31\n\x04type\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x04type\x12=\n\x08metadata\x18\x06 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataR\x08metadataB\x06\n\x04_pos\"e\n\rTypeParameter\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04name\x18\x02 \x01(\tR\x04nameB\x06\n\x04_pos\"\x82\x01\n\tTypeValue\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x33\n\x05value\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x05valueB\x06\n\x04_pos\"H\n\x04Unit\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\xe2\x01\n\x05Value\x12@\n\tint_value\x18\x02 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.IntValueH\x00R\x08intValue\x12I\n\x0cstring_value\x18\x01 \x01(\x0b\x32$.xyz.block.ftl.v1.schema.StringValueH\x00R\x0bstringValue\x12\x43\n\ntype_value\x18\x03 \x01(\x0b\x32\".xyz.block.ftl.v1.schema.TypeValueH\x00R\ttypeValueB\x07\n\x05value\"\x96\x03\n\x04Verb\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x37\n\x07request\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x07request\x12\x39\n\x08response\x18\x06 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x08response\x12=\n\x08metadata\x18\x07 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataR\x08metadata\x12\x45\n\x07runtime\x18\x92\xf7\x01 \x01(\x0b\x32$.xyz.block.ftl.v1.schema.VerbRuntimeH\x01R\x07runtime\x88\x01\x01\x42\x06\n\x04_posB\n\n\x08_runtime\"\x85\x01\n\x0bVerbRuntime\x12;\n\x0b\x63reate_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ncreateTime\x12\x39\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime* \n\tAliasKind\x12\x13\n\x0f\x41LIAS_KIND_JSON\x10\x00\x42NP\x01ZJgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/schema;schemapbb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xyz.block.ftl.v1.schema.schema_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'P\001ZJgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/schema;schemapb' + _globals['_ALIASKIND']._serialized_start=9716 + _globals['_ALIASKIND']._serialized_end=9748 + _globals['_ANY']._serialized_start=98 + _globals['_ANY']._serialized_end=169 + _globals['_ARRAY']._serialized_start=172 + _globals['_ARRAY']._serialized_end=302 + _globals['_BOOL']._serialized_start=304 + _globals['_BOOL']._serialized_end=376 + _globals['_BYTES']._serialized_start=378 + _globals['_BYTES']._serialized_end=451 + _globals['_CONFIG']._serialized_start=454 + _globals['_CONFIG']._serialized_end=627 + _globals['_DATA']._serialized_start=630 + _globals['_DATA']._serialized_end=974 + _globals['_DATABASE']._serialized_start=977 + _globals['_DATABASE']._serialized_end=1208 + _globals['_DATABASERUNTIME']._serialized_start=1210 + _globals['_DATABASERUNTIME']._serialized_end=1245 + _globals['_DECL']._serialized_start=1248 + _globals['_DECL']._serialized_end=1807 + _globals['_ENUM']._serialized_start=1810 + _globals['_ENUM']._serialized_end=2085 + _globals['_ENUMVARIANT']._serialized_start=2088 + _globals['_ENUMVARIANT']._serialized_end=2269 + _globals['_FIELD']._serialized_start=2272 + _globals['_FIELD']._serialized_end=2507 + _globals['_FLOAT']._serialized_start=2509 + _globals['_FLOAT']._serialized_end=2582 + _globals['_INGRESSPATHCOMPONENT']._serialized_start=2585 + _globals['_INGRESSPATHCOMPONENT']._serialized_end=2816 + _globals['_INGRESSPATHLITERAL']._serialized_start=2818 + _globals['_INGRESSPATHLITERAL']._serialized_end=2924 + _globals['_INGRESSPATHPARAMETER']._serialized_start=2926 + _globals['_INGRESSPATHPARAMETER']._serialized_end=3034 + _globals['_INT']._serialized_start=3036 + _globals['_INT']._serialized_end=3107 + _globals['_INTVALUE']._serialized_start=3109 + _globals['_INTVALUE']._serialized_end=3207 + _globals['_MAP']._serialized_start=3210 + _globals['_MAP']._serialized_end=3383 + _globals['_METADATA']._serialized_start=3386 + _globals['_METADATA']._serialized_end=4174 + _globals['_METADATAALIAS']._serialized_start=4177 + _globals['_METADATAALIAS']._serialized_end=4336 + _globals['_METADATACALLS']._serialized_start=4339 + _globals['_METADATACALLS']._serialized_end=4472 + _globals['_METADATACONFIG']._serialized_start=4475 + _globals['_METADATACONFIG']._serialized_end=4611 + _globals['_METADATACRONJOB']._serialized_start=4613 + _globals['_METADATACRONJOB']._serialized_end=4716 + _globals['_METADATADATABASES']._serialized_start=4719 + _globals['_METADATADATABASES']._serialized_end=4856 + _globals['_METADATAENCODING']._serialized_start=4859 + _globals['_METADATAENCODING']._serialized_end=4989 + _globals['_METADATAINGRESS']._serialized_start=4992 + _globals['_METADATAINGRESS']._serialized_end=5186 + _globals['_METADATARETRY']._serialized_start=5189 + _globals['_METADATARETRY']._serialized_end=5440 + _globals['_METADATASECRETS']._serialized_start=5443 + _globals['_METADATASECRETS']._serialized_end=5582 + _globals['_METADATASUBSCRIBER']._serialized_start=5584 + _globals['_METADATASUBSCRIBER']._serialized_end=5690 + _globals['_METADATATYPEMAP']._serialized_start=5693 + _globals['_METADATATYPEMAP']._serialized_end=5835 + _globals['_MODULE']._serialized_start=5838 + _globals['_MODULE']._serialized_end=6124 + _globals['_MODULERUNTIME']._serialized_start=6127 + _globals['_MODULERUNTIME']._serialized_end=6328 + _globals['_OPTIONAL']._serialized_start=6331 + _globals['_OPTIONAL']._serialized_end=6472 + _globals['_POSITION']._serialized_start=6474 + _globals['_POSITION']._serialized_end=6556 + _globals['_REF']._serialized_start=6559 + _globals['_REF']._serialized_end=6746 + _globals['_SCHEMA']._serialized_start=6749 + _globals['_SCHEMA']._serialized_end=6882 + _globals['_SECRET']._serialized_start=6885 + _globals['_SECRET']._serialized_end=7058 + _globals['_STRING']._serialized_start=7060 + _globals['_STRING']._serialized_end=7134 + _globals['_STRINGVALUE']._serialized_start=7136 + _globals['_STRINGVALUE']._serialized_end=7237 + _globals['_SUBSCRIPTION']._serialized_start=7240 + _globals['_SUBSCRIPTION']._serialized_end=7420 + _globals['_TIME']._serialized_start=7422 + _globals['_TIME']._serialized_end=7494 + _globals['_TOPIC']._serialized_start=7497 + _globals['_TOPIC']._serialized_end=7695 + _globals['_TYPE']._serialized_start=7698 + _globals['_TYPE']._serialized_end=8364 + _globals['_TYPEALIAS']._serialized_start=8367 + _globals['_TYPEALIAS']._serialized_end=8630 + _globals['_TYPEPARAMETER']._serialized_start=8632 + _globals['_TYPEPARAMETER']._serialized_end=8733 + _globals['_TYPEVALUE']._serialized_start=8736 + _globals['_TYPEVALUE']._serialized_end=8866 + _globals['_UNIT']._serialized_start=8868 + _globals['_UNIT']._serialized_end=8940 + _globals['_VALUE']._serialized_start=8943 + _globals['_VALUE']._serialized_end=9169 + _globals['_VERB']._serialized_start=9172 + _globals['_VERB']._serialized_end=9578 + _globals['_VERBRUNTIME']._serialized_start=9581 + _globals['_VERBRUNTIME']._serialized_end=9714 +# @@protoc_insertion_point(module_scope) diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.pyi b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.pyi new file mode 100644 index 0000000000..d3b2bf48a6 --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.pyi @@ -0,0 +1,567 @@ +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class AliasKind(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + ALIAS_KIND_JSON: _ClassVar[AliasKind] +ALIAS_KIND_JSON: AliasKind + +class Any(_message.Message): + __slots__ = ("pos",) + POS_FIELD_NUMBER: _ClassVar[int] + pos: Position + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ...) -> None: ... + +class Array(_message.Message): + __slots__ = ("pos", "element") + POS_FIELD_NUMBER: _ClassVar[int] + ELEMENT_FIELD_NUMBER: _ClassVar[int] + pos: Position + element: Type + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., element: _Optional[_Union[Type, _Mapping]] = ...) -> None: ... + +class Bool(_message.Message): + __slots__ = ("pos",) + POS_FIELD_NUMBER: _ClassVar[int] + pos: Position + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ...) -> None: ... + +class Bytes(_message.Message): + __slots__ = ("pos",) + POS_FIELD_NUMBER: _ClassVar[int] + pos: Position + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ...) -> None: ... + +class Config(_message.Message): + __slots__ = ("pos", "comments", "name", "type") + POS_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + pos: Position + comments: _containers.RepeatedScalarFieldContainer[str] + name: str + type: Type + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., name: _Optional[str] = ..., type: _Optional[_Union[Type, _Mapping]] = ...) -> None: ... + +class Data(_message.Message): + __slots__ = ("pos", "comments", "export", "name", "type_parameters", "fields", "metadata") + POS_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + EXPORT_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + TYPE_PARAMETERS_FIELD_NUMBER: _ClassVar[int] + FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + pos: Position + comments: _containers.RepeatedScalarFieldContainer[str] + export: bool + name: str + type_parameters: _containers.RepeatedCompositeFieldContainer[TypeParameter] + fields: _containers.RepeatedCompositeFieldContainer[Field] + metadata: _containers.RepeatedCompositeFieldContainer[Metadata] + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., export: bool = ..., name: _Optional[str] = ..., type_parameters: _Optional[_Iterable[_Union[TypeParameter, _Mapping]]] = ..., fields: _Optional[_Iterable[_Union[Field, _Mapping]]] = ..., metadata: _Optional[_Iterable[_Union[Metadata, _Mapping]]] = ...) -> None: ... + +class Database(_message.Message): + __slots__ = ("pos", "runtime", "comments", "type", "name") + POS_FIELD_NUMBER: _ClassVar[int] + RUNTIME_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + pos: Position + runtime: DatabaseRuntime + comments: _containers.RepeatedScalarFieldContainer[str] + type: str + name: str + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., runtime: _Optional[_Union[DatabaseRuntime, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., type: _Optional[str] = ..., name: _Optional[str] = ...) -> None: ... + +class DatabaseRuntime(_message.Message): + __slots__ = ("dsn",) + DSN_FIELD_NUMBER: _ClassVar[int] + dsn: str + def __init__(self, dsn: _Optional[str] = ...) -> None: ... + +class Decl(_message.Message): + __slots__ = ("config", "data", "database", "enum", "secret", "subscription", "topic", "type_alias", "verb") + CONFIG_FIELD_NUMBER: _ClassVar[int] + DATA_FIELD_NUMBER: _ClassVar[int] + DATABASE_FIELD_NUMBER: _ClassVar[int] + ENUM_FIELD_NUMBER: _ClassVar[int] + SECRET_FIELD_NUMBER: _ClassVar[int] + SUBSCRIPTION_FIELD_NUMBER: _ClassVar[int] + TOPIC_FIELD_NUMBER: _ClassVar[int] + TYPE_ALIAS_FIELD_NUMBER: _ClassVar[int] + VERB_FIELD_NUMBER: _ClassVar[int] + config: Config + data: Data + database: Database + enum: Enum + secret: Secret + subscription: Subscription + topic: Topic + type_alias: TypeAlias + verb: Verb + def __init__(self, config: _Optional[_Union[Config, _Mapping]] = ..., data: _Optional[_Union[Data, _Mapping]] = ..., database: _Optional[_Union[Database, _Mapping]] = ..., enum: _Optional[_Union[Enum, _Mapping]] = ..., secret: _Optional[_Union[Secret, _Mapping]] = ..., subscription: _Optional[_Union[Subscription, _Mapping]] = ..., topic: _Optional[_Union[Topic, _Mapping]] = ..., type_alias: _Optional[_Union[TypeAlias, _Mapping]] = ..., verb: _Optional[_Union[Verb, _Mapping]] = ...) -> None: ... + +class Enum(_message.Message): + __slots__ = ("pos", "comments", "export", "name", "type", "variants") + POS_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + EXPORT_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + VARIANTS_FIELD_NUMBER: _ClassVar[int] + pos: Position + comments: _containers.RepeatedScalarFieldContainer[str] + export: bool + name: str + type: Type + variants: _containers.RepeatedCompositeFieldContainer[EnumVariant] + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., export: bool = ..., name: _Optional[str] = ..., type: _Optional[_Union[Type, _Mapping]] = ..., variants: _Optional[_Iterable[_Union[EnumVariant, _Mapping]]] = ...) -> None: ... + +class EnumVariant(_message.Message): + __slots__ = ("pos", "comments", "name", "value") + POS_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + pos: Position + comments: _containers.RepeatedScalarFieldContainer[str] + name: str + value: Value + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., name: _Optional[str] = ..., value: _Optional[_Union[Value, _Mapping]] = ...) -> None: ... + +class Field(_message.Message): + __slots__ = ("pos", "comments", "name", "type", "metadata") + POS_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + pos: Position + comments: _containers.RepeatedScalarFieldContainer[str] + name: str + type: Type + metadata: _containers.RepeatedCompositeFieldContainer[Metadata] + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., name: _Optional[str] = ..., type: _Optional[_Union[Type, _Mapping]] = ..., metadata: _Optional[_Iterable[_Union[Metadata, _Mapping]]] = ...) -> None: ... + +class Float(_message.Message): + __slots__ = ("pos",) + POS_FIELD_NUMBER: _ClassVar[int] + pos: Position + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ...) -> None: ... + +class IngressPathComponent(_message.Message): + __slots__ = ("ingress_path_literal", "ingress_path_parameter") + INGRESS_PATH_LITERAL_FIELD_NUMBER: _ClassVar[int] + INGRESS_PATH_PARAMETER_FIELD_NUMBER: _ClassVar[int] + ingress_path_literal: IngressPathLiteral + ingress_path_parameter: IngressPathParameter + def __init__(self, ingress_path_literal: _Optional[_Union[IngressPathLiteral, _Mapping]] = ..., ingress_path_parameter: _Optional[_Union[IngressPathParameter, _Mapping]] = ...) -> None: ... + +class IngressPathLiteral(_message.Message): + __slots__ = ("pos", "text") + POS_FIELD_NUMBER: _ClassVar[int] + TEXT_FIELD_NUMBER: _ClassVar[int] + pos: Position + text: str + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., text: _Optional[str] = ...) -> None: ... + +class IngressPathParameter(_message.Message): + __slots__ = ("pos", "name") + POS_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + pos: Position + name: str + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., name: _Optional[str] = ...) -> None: ... + +class Int(_message.Message): + __slots__ = ("pos",) + POS_FIELD_NUMBER: _ClassVar[int] + pos: Position + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ...) -> None: ... + +class IntValue(_message.Message): + __slots__ = ("pos", "value") + POS_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + pos: Position + value: int + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., value: _Optional[int] = ...) -> None: ... + +class Map(_message.Message): + __slots__ = ("pos", "key", "value") + POS_FIELD_NUMBER: _ClassVar[int] + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + pos: Position + key: Type + value: Type + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., key: _Optional[_Union[Type, _Mapping]] = ..., value: _Optional[_Union[Type, _Mapping]] = ...) -> None: ... + +class Metadata(_message.Message): + __slots__ = ("alias", "calls", "config", "cron_job", "databases", "encoding", "ingress", "retry", "secrets", "subscriber", "type_map") + ALIAS_FIELD_NUMBER: _ClassVar[int] + CALLS_FIELD_NUMBER: _ClassVar[int] + CONFIG_FIELD_NUMBER: _ClassVar[int] + CRON_JOB_FIELD_NUMBER: _ClassVar[int] + DATABASES_FIELD_NUMBER: _ClassVar[int] + ENCODING_FIELD_NUMBER: _ClassVar[int] + INGRESS_FIELD_NUMBER: _ClassVar[int] + RETRY_FIELD_NUMBER: _ClassVar[int] + SECRETS_FIELD_NUMBER: _ClassVar[int] + SUBSCRIBER_FIELD_NUMBER: _ClassVar[int] + TYPE_MAP_FIELD_NUMBER: _ClassVar[int] + alias: MetadataAlias + calls: MetadataCalls + config: MetadataConfig + cron_job: MetadataCronJob + databases: MetadataDatabases + encoding: MetadataEncoding + ingress: MetadataIngress + retry: MetadataRetry + secrets: MetadataSecrets + subscriber: MetadataSubscriber + type_map: MetadataTypeMap + def __init__(self, alias: _Optional[_Union[MetadataAlias, _Mapping]] = ..., calls: _Optional[_Union[MetadataCalls, _Mapping]] = ..., config: _Optional[_Union[MetadataConfig, _Mapping]] = ..., cron_job: _Optional[_Union[MetadataCronJob, _Mapping]] = ..., databases: _Optional[_Union[MetadataDatabases, _Mapping]] = ..., encoding: _Optional[_Union[MetadataEncoding, _Mapping]] = ..., ingress: _Optional[_Union[MetadataIngress, _Mapping]] = ..., retry: _Optional[_Union[MetadataRetry, _Mapping]] = ..., secrets: _Optional[_Union[MetadataSecrets, _Mapping]] = ..., subscriber: _Optional[_Union[MetadataSubscriber, _Mapping]] = ..., type_map: _Optional[_Union[MetadataTypeMap, _Mapping]] = ...) -> None: ... + +class MetadataAlias(_message.Message): + __slots__ = ("pos", "kind", "alias") + POS_FIELD_NUMBER: _ClassVar[int] + KIND_FIELD_NUMBER: _ClassVar[int] + ALIAS_FIELD_NUMBER: _ClassVar[int] + pos: Position + kind: AliasKind + alias: str + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., kind: _Optional[_Union[AliasKind, str]] = ..., alias: _Optional[str] = ...) -> None: ... + +class MetadataCalls(_message.Message): + __slots__ = ("pos", "calls") + POS_FIELD_NUMBER: _ClassVar[int] + CALLS_FIELD_NUMBER: _ClassVar[int] + pos: Position + calls: _containers.RepeatedCompositeFieldContainer[Ref] + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., calls: _Optional[_Iterable[_Union[Ref, _Mapping]]] = ...) -> None: ... + +class MetadataConfig(_message.Message): + __slots__ = ("pos", "config") + POS_FIELD_NUMBER: _ClassVar[int] + CONFIG_FIELD_NUMBER: _ClassVar[int] + pos: Position + config: _containers.RepeatedCompositeFieldContainer[Ref] + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., config: _Optional[_Iterable[_Union[Ref, _Mapping]]] = ...) -> None: ... + +class MetadataCronJob(_message.Message): + __slots__ = ("pos", "cron") + POS_FIELD_NUMBER: _ClassVar[int] + CRON_FIELD_NUMBER: _ClassVar[int] + pos: Position + cron: str + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., cron: _Optional[str] = ...) -> None: ... + +class MetadataDatabases(_message.Message): + __slots__ = ("pos", "calls") + POS_FIELD_NUMBER: _ClassVar[int] + CALLS_FIELD_NUMBER: _ClassVar[int] + pos: Position + calls: _containers.RepeatedCompositeFieldContainer[Ref] + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., calls: _Optional[_Iterable[_Union[Ref, _Mapping]]] = ...) -> None: ... + +class MetadataEncoding(_message.Message): + __slots__ = ("pos", "type", "lenient") + POS_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + LENIENT_FIELD_NUMBER: _ClassVar[int] + pos: Position + type: str + lenient: bool + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., type: _Optional[str] = ..., lenient: bool = ...) -> None: ... + +class MetadataIngress(_message.Message): + __slots__ = ("pos", "type", "method", "path") + POS_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + METHOD_FIELD_NUMBER: _ClassVar[int] + PATH_FIELD_NUMBER: _ClassVar[int] + pos: Position + type: str + method: str + path: _containers.RepeatedCompositeFieldContainer[IngressPathComponent] + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., type: _Optional[str] = ..., method: _Optional[str] = ..., path: _Optional[_Iterable[_Union[IngressPathComponent, _Mapping]]] = ...) -> None: ... + +class MetadataRetry(_message.Message): + __slots__ = ("pos", "count", "min_backoff", "max_backoff", "catch") + POS_FIELD_NUMBER: _ClassVar[int] + COUNT_FIELD_NUMBER: _ClassVar[int] + MIN_BACKOFF_FIELD_NUMBER: _ClassVar[int] + MAX_BACKOFF_FIELD_NUMBER: _ClassVar[int] + CATCH_FIELD_NUMBER: _ClassVar[int] + pos: Position + count: int + min_backoff: str + max_backoff: str + catch: Ref + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., count: _Optional[int] = ..., min_backoff: _Optional[str] = ..., max_backoff: _Optional[str] = ..., catch: _Optional[_Union[Ref, _Mapping]] = ...) -> None: ... + +class MetadataSecrets(_message.Message): + __slots__ = ("pos", "secrets") + POS_FIELD_NUMBER: _ClassVar[int] + SECRETS_FIELD_NUMBER: _ClassVar[int] + pos: Position + secrets: _containers.RepeatedCompositeFieldContainer[Ref] + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., secrets: _Optional[_Iterable[_Union[Ref, _Mapping]]] = ...) -> None: ... + +class MetadataSubscriber(_message.Message): + __slots__ = ("pos", "name") + POS_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + pos: Position + name: str + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., name: _Optional[str] = ...) -> None: ... + +class MetadataTypeMap(_message.Message): + __slots__ = ("pos", "runtime", "native_name") + POS_FIELD_NUMBER: _ClassVar[int] + RUNTIME_FIELD_NUMBER: _ClassVar[int] + NATIVE_NAME_FIELD_NUMBER: _ClassVar[int] + pos: Position + runtime: str + native_name: str + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., runtime: _Optional[str] = ..., native_name: _Optional[str] = ...) -> None: ... + +class Module(_message.Message): + __slots__ = ("pos", "comments", "builtin", "name", "decls", "runtime") + POS_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + BUILTIN_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + DECLS_FIELD_NUMBER: _ClassVar[int] + RUNTIME_FIELD_NUMBER: _ClassVar[int] + pos: Position + comments: _containers.RepeatedScalarFieldContainer[str] + builtin: bool + name: str + decls: _containers.RepeatedCompositeFieldContainer[Decl] + runtime: ModuleRuntime + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., builtin: bool = ..., name: _Optional[str] = ..., decls: _Optional[_Iterable[_Union[Decl, _Mapping]]] = ..., runtime: _Optional[_Union[ModuleRuntime, _Mapping]] = ...) -> None: ... + +class ModuleRuntime(_message.Message): + __slots__ = ("create_time", "language", "min_replicas", "os", "arch") + CREATE_TIME_FIELD_NUMBER: _ClassVar[int] + LANGUAGE_FIELD_NUMBER: _ClassVar[int] + MIN_REPLICAS_FIELD_NUMBER: _ClassVar[int] + OS_FIELD_NUMBER: _ClassVar[int] + ARCH_FIELD_NUMBER: _ClassVar[int] + create_time: _timestamp_pb2.Timestamp + language: str + min_replicas: int + os: str + arch: str + def __init__(self, create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., language: _Optional[str] = ..., min_replicas: _Optional[int] = ..., os: _Optional[str] = ..., arch: _Optional[str] = ...) -> None: ... + +class Optional(_message.Message): + __slots__ = ("pos", "type") + POS_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + pos: Position + type: Type + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., type: _Optional[_Union[Type, _Mapping]] = ...) -> None: ... + +class Position(_message.Message): + __slots__ = ("filename", "line", "column") + FILENAME_FIELD_NUMBER: _ClassVar[int] + LINE_FIELD_NUMBER: _ClassVar[int] + COLUMN_FIELD_NUMBER: _ClassVar[int] + filename: str + line: int + column: int + def __init__(self, filename: _Optional[str] = ..., line: _Optional[int] = ..., column: _Optional[int] = ...) -> None: ... + +class Ref(_message.Message): + __slots__ = ("pos", "module", "name", "type_parameters") + POS_FIELD_NUMBER: _ClassVar[int] + MODULE_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + TYPE_PARAMETERS_FIELD_NUMBER: _ClassVar[int] + pos: Position + module: str + name: str + type_parameters: _containers.RepeatedCompositeFieldContainer[Type] + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., module: _Optional[str] = ..., name: _Optional[str] = ..., type_parameters: _Optional[_Iterable[_Union[Type, _Mapping]]] = ...) -> None: ... + +class Schema(_message.Message): + __slots__ = ("pos", "modules") + POS_FIELD_NUMBER: _ClassVar[int] + MODULES_FIELD_NUMBER: _ClassVar[int] + pos: Position + modules: _containers.RepeatedCompositeFieldContainer[Module] + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., modules: _Optional[_Iterable[_Union[Module, _Mapping]]] = ...) -> None: ... + +class Secret(_message.Message): + __slots__ = ("pos", "comments", "name", "type") + POS_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + pos: Position + comments: _containers.RepeatedScalarFieldContainer[str] + name: str + type: Type + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., name: _Optional[str] = ..., type: _Optional[_Union[Type, _Mapping]] = ...) -> None: ... + +class String(_message.Message): + __slots__ = ("pos",) + POS_FIELD_NUMBER: _ClassVar[int] + pos: Position + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ...) -> None: ... + +class StringValue(_message.Message): + __slots__ = ("pos", "value") + POS_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + pos: Position + value: str + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., value: _Optional[str] = ...) -> None: ... + +class Subscription(_message.Message): + __slots__ = ("pos", "comments", "name", "topic") + POS_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + TOPIC_FIELD_NUMBER: _ClassVar[int] + pos: Position + comments: _containers.RepeatedScalarFieldContainer[str] + name: str + topic: Ref + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., name: _Optional[str] = ..., topic: _Optional[_Union[Ref, _Mapping]] = ...) -> None: ... + +class Time(_message.Message): + __slots__ = ("pos",) + POS_FIELD_NUMBER: _ClassVar[int] + pos: Position + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ...) -> None: ... + +class Topic(_message.Message): + __slots__ = ("pos", "comments", "export", "name", "event") + POS_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + EXPORT_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + EVENT_FIELD_NUMBER: _ClassVar[int] + pos: Position + comments: _containers.RepeatedScalarFieldContainer[str] + export: bool + name: str + event: Type + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., export: bool = ..., name: _Optional[str] = ..., event: _Optional[_Union[Type, _Mapping]] = ...) -> None: ... + +class Type(_message.Message): + __slots__ = ("any", "array", "bool", "bytes", "float", "int", "map", "optional", "ref", "string", "time", "unit") + ANY_FIELD_NUMBER: _ClassVar[int] + ARRAY_FIELD_NUMBER: _ClassVar[int] + BOOL_FIELD_NUMBER: _ClassVar[int] + BYTES_FIELD_NUMBER: _ClassVar[int] + FLOAT_FIELD_NUMBER: _ClassVar[int] + INT_FIELD_NUMBER: _ClassVar[int] + MAP_FIELD_NUMBER: _ClassVar[int] + OPTIONAL_FIELD_NUMBER: _ClassVar[int] + REF_FIELD_NUMBER: _ClassVar[int] + STRING_FIELD_NUMBER: _ClassVar[int] + TIME_FIELD_NUMBER: _ClassVar[int] + UNIT_FIELD_NUMBER: _ClassVar[int] + any: Any + array: Array + bool: Bool + bytes: Bytes + float: Float + int: Int + map: Map + optional: Optional + ref: Ref + string: String + time: Time + unit: Unit + def __init__(self, any: _Optional[_Union[Any, _Mapping]] = ..., array: _Optional[_Union[Array, _Mapping]] = ..., bool: _Optional[_Union[Bool, _Mapping]] = ..., bytes: _Optional[_Union[Bytes, _Mapping]] = ..., float: _Optional[_Union[Float, _Mapping]] = ..., int: _Optional[_Union[Int, _Mapping]] = ..., map: _Optional[_Union[Map, _Mapping]] = ..., optional: _Optional[_Union[Optional, _Mapping]] = ..., ref: _Optional[_Union[Ref, _Mapping]] = ..., string: _Optional[_Union[String, _Mapping]] = ..., time: _Optional[_Union[Time, _Mapping]] = ..., unit: _Optional[_Union[Unit, _Mapping]] = ...) -> None: ... + +class TypeAlias(_message.Message): + __slots__ = ("pos", "comments", "export", "name", "type", "metadata") + POS_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + EXPORT_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + pos: Position + comments: _containers.RepeatedScalarFieldContainer[str] + export: bool + name: str + type: Type + metadata: _containers.RepeatedCompositeFieldContainer[Metadata] + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., export: bool = ..., name: _Optional[str] = ..., type: _Optional[_Union[Type, _Mapping]] = ..., metadata: _Optional[_Iterable[_Union[Metadata, _Mapping]]] = ...) -> None: ... + +class TypeParameter(_message.Message): + __slots__ = ("pos", "name") + POS_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + pos: Position + name: str + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., name: _Optional[str] = ...) -> None: ... + +class TypeValue(_message.Message): + __slots__ = ("pos", "value") + POS_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + pos: Position + value: Type + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., value: _Optional[_Union[Type, _Mapping]] = ...) -> None: ... + +class Unit(_message.Message): + __slots__ = ("pos",) + POS_FIELD_NUMBER: _ClassVar[int] + pos: Position + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ...) -> None: ... + +class Value(_message.Message): + __slots__ = ("int_value", "string_value", "type_value") + INT_VALUE_FIELD_NUMBER: _ClassVar[int] + STRING_VALUE_FIELD_NUMBER: _ClassVar[int] + TYPE_VALUE_FIELD_NUMBER: _ClassVar[int] + int_value: IntValue + string_value: StringValue + type_value: TypeValue + def __init__(self, int_value: _Optional[_Union[IntValue, _Mapping]] = ..., string_value: _Optional[_Union[StringValue, _Mapping]] = ..., type_value: _Optional[_Union[TypeValue, _Mapping]] = ...) -> None: ... + +class Verb(_message.Message): + __slots__ = ("pos", "comments", "export", "name", "request", "response", "metadata", "runtime") + POS_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + EXPORT_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + REQUEST_FIELD_NUMBER: _ClassVar[int] + RESPONSE_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + RUNTIME_FIELD_NUMBER: _ClassVar[int] + pos: Position + comments: _containers.RepeatedScalarFieldContainer[str] + export: bool + name: str + request: Type + response: Type + metadata: _containers.RepeatedCompositeFieldContainer[Metadata] + runtime: VerbRuntime + def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., export: bool = ..., name: _Optional[str] = ..., request: _Optional[_Union[Type, _Mapping]] = ..., response: _Optional[_Union[Type, _Mapping]] = ..., metadata: _Optional[_Iterable[_Union[Metadata, _Mapping]]] = ..., runtime: _Optional[_Union[VerbRuntime, _Mapping]] = ...) -> None: ... + +class VerbRuntime(_message.Message): + __slots__ = ("create_time", "start_time") + CREATE_TIME_FIELD_NUMBER: _ClassVar[int] + START_TIME_FIELD_NUMBER: _ClassVar[int] + create_time: _timestamp_pb2.Timestamp + start_time: _timestamp_pb2.Timestamp + def __init__(self, create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., start_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/verb_pb2.py b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/verb_pb2.py new file mode 100644 index 0000000000..fbd0336557 --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/verb_pb2.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xyz/block/ftl/v1/verb.proto +# Protobuf Python Version: 5.28.3 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 28, + 3, + '', + 'xyz/block/ftl/v1/verb.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from xyz.block.ftl.v1 import ftl_pb2 as xyz_dot_block_dot_ftl_dot_v1_dot_ftl__pb2 +from xyz.block.ftl.v1.schema import schema_pb2 as xyz_dot_block_dot_ftl_dot_v1_dot_schema_dot_schema__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bxyz/block/ftl/v1/verb.proto\x12\x10xyz.block.ftl.v1\x1a\x1axyz/block/ftl/v1/ftl.proto\x1a$xyz/block/ftl/v1/schema/schema.proto\"\x8b\x01\n\x0b\x43\x61llRequest\x12\x36\n\x08metadata\x18\x01 \x01(\x0b\x32\x1a.xyz.block.ftl.v1.MetadataR\x08metadata\x12\x30\n\x04verb\x18\x02 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x04verb\x12\x12\n\x04\x62ody\x18\x03 \x01(\x0cR\x04\x62ody\"\xb6\x01\n\x0c\x43\x61llResponse\x12\x14\n\x04\x62ody\x18\x01 \x01(\x0cH\x00R\x04\x62ody\x12<\n\x05\x65rror\x18\x02 \x01(\x0b\x32$.xyz.block.ftl.v1.CallResponse.ErrorH\x00R\x05\x65rror\x1a\x46\n\x05\x45rror\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message\x12\x19\n\x05stack\x18\x02 \x01(\tH\x00R\x05stack\x88\x01\x01\x42\x08\n\x06_stackB\n\n\x08response2\xa0\x01\n\x0bVerbService\x12J\n\x04Ping\x12\x1d.xyz.block.ftl.v1.PingRequest\x1a\x1e.xyz.block.ftl.v1.PingResponse\"\x03\x90\x02\x01\x12\x45\n\x04\x43\x61ll\x12\x1d.xyz.block.ftl.v1.CallRequest\x1a\x1e.xyz.block.ftl.v1.CallResponseBDP\x01Z@github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1;ftlv1b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xyz.block.ftl.v1.verb_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'P\001Z@github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1;ftlv1' + _globals['_VERBSERVICE'].methods_by_name['Ping']._loaded_options = None + _globals['_VERBSERVICE'].methods_by_name['Ping']._serialized_options = b'\220\002\001' + _globals['_CALLREQUEST']._serialized_start=116 + _globals['_CALLREQUEST']._serialized_end=255 + _globals['_CALLRESPONSE']._serialized_start=258 + _globals['_CALLRESPONSE']._serialized_end=440 + _globals['_CALLRESPONSE_ERROR']._serialized_start=358 + _globals['_CALLRESPONSE_ERROR']._serialized_end=428 + _globals['_VERBSERVICE']._serialized_start=443 + _globals['_VERBSERVICE']._serialized_end=603 +# @@protoc_insertion_point(module_scope) diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/verb_pb2.pyi b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/verb_pb2.pyi new file mode 100644 index 0000000000..1ab0883f88 --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/verb_pb2.pyi @@ -0,0 +1,32 @@ +from xyz.block.ftl.v1 import ftl_pb2 as _ftl_pb2 +from xyz.block.ftl.v1.schema import schema_pb2 as _schema_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class CallRequest(_message.Message): + __slots__ = ("metadata", "verb", "body") + METADATA_FIELD_NUMBER: _ClassVar[int] + VERB_FIELD_NUMBER: _ClassVar[int] + BODY_FIELD_NUMBER: _ClassVar[int] + metadata: _ftl_pb2.Metadata + verb: _schema_pb2.Ref + body: bytes + def __init__(self, metadata: _Optional[_Union[_ftl_pb2.Metadata, _Mapping]] = ..., verb: _Optional[_Union[_schema_pb2.Ref, _Mapping]] = ..., body: _Optional[bytes] = ...) -> None: ... + +class CallResponse(_message.Message): + __slots__ = ("body", "error") + class Error(_message.Message): + __slots__ = ("message", "stack") + MESSAGE_FIELD_NUMBER: _ClassVar[int] + STACK_FIELD_NUMBER: _ClassVar[int] + message: str + stack: str + def __init__(self, message: _Optional[str] = ..., stack: _Optional[str] = ...) -> None: ... + BODY_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + body: bytes + error: CallResponse.Error + def __init__(self, body: _Optional[bytes] = ..., error: _Optional[_Union[CallResponse.Error, _Mapping]] = ...) -> None: ... diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/plugin_pb2.py b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/plugin_pb2.py new file mode 100644 index 0000000000..cbc65af1e4 --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/plugin_pb2.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xyz/block/ftl/v1beta1/provisioner/plugin.proto +# Protobuf Python Version: 5.28.3 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 28, + 3, + '', + 'xyz/block/ftl/v1beta1/provisioner/plugin.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from xyz.block.ftl.v1 import ftl_pb2 as xyz_dot_block_dot_ftl_dot_v1_dot_ftl__pb2 +from xyz.block.ftl.v1beta1.provisioner import resource_pb2 as xyz_dot_block_dot_ftl_dot_v1beta1_dot_provisioner_dot_resource__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n.xyz/block/ftl/v1beta1/provisioner/plugin.proto\x12!xyz.block.ftl.v1beta1.provisioner\x1a\x1axyz/block/ftl/v1/ftl.proto\x1a\x30xyz/block/ftl/v1beta1/provisioner/resource.proto\"\xab\x01\n\x0fResourceContext\x12G\n\x08resource\x18\x01 \x01(\x0b\x32+.xyz.block.ftl.v1beta1.provisioner.ResourceR\x08resource\x12O\n\x0c\x64\x65pendencies\x18\x02 \x03(\x0b\x32+.xyz.block.ftl.v1beta1.provisioner.ResourceR\x0c\x64\x65pendencies\"\x8d\x02\n\x10ProvisionRequest\x12$\n\x0e\x66tl_cluster_id\x18\x01 \x01(\tR\x0c\x66tlClusterId\x12\x16\n\x06module\x18\x02 \x01(\tR\x06module\x12Z\n\x12\x65xisting_resources\x18\x03 \x03(\x0b\x32+.xyz.block.ftl.v1beta1.provisioner.ResourceR\x11\x65xistingResources\x12_\n\x11\x64\x65sired_resources\x18\x04 \x03(\x0b\x32\x32.xyz.block.ftl.v1beta1.provisioner.ResourceContextR\x10\x64\x65siredResources\"\xdf\x01\n\x11ProvisionResponse\x12-\n\x12provisioning_token\x18\x01 \x01(\tR\x11provisioningToken\x12\x64\n\x06status\x18\x02 \x01(\x0e\x32L.xyz.block.ftl.v1beta1.provisioner.ProvisionResponse.ProvisionResponseStatusR\x06status\"5\n\x17ProvisionResponseStatus\x12\x0b\n\x07UNKNOWN\x10\x00\x12\r\n\tSUBMITTED\x10\x01\"\x98\x01\n\rStatusRequest\x12-\n\x12provisioning_token\x18\x01 \x01(\tR\x11provisioningToken\x12X\n\x11\x64\x65sired_resources\x18\x02 \x03(\x0b\x32+.xyz.block.ftl.v1beta1.provisioner.ResourceR\x10\x64\x65siredResources\"\xa3\x03\n\x0eStatusResponse\x12\x61\n\x07running\x18\x01 \x01(\x0b\x32\x45.xyz.block.ftl.v1beta1.provisioner.StatusResponse.ProvisioningRunningH\x00R\x07running\x12\x61\n\x07success\x18\x02 \x01(\x0b\x32\x45.xyz.block.ftl.v1beta1.provisioner.StatusResponse.ProvisioningSuccessH\x00R\x07success\x1a\x15\n\x13ProvisioningRunning\x1a\x39\n\x12ProvisioningFailed\x12#\n\rerror_message\x18\x01 \x01(\tR\x0c\x65rrorMessage\x1ao\n\x13ProvisioningSuccess\x12X\n\x11updated_resources\x18\x01 \x03(\x0b\x32+.xyz.block.ftl.v1beta1.provisioner.ResourceR\x10updatedResourcesB\x08\n\x06status\"f\n\x0bPlanRequest\x12W\n\x0cprovisioning\x18\x01 \x01(\x0b\x32\x33.xyz.block.ftl.v1beta1.provisioner.ProvisionRequestR\x0cprovisioning\"\"\n\x0cPlanResponse\x12\x12\n\x04plan\x18\x01 \x01(\tR\x04plan2\xb1\x03\n\x18ProvisionerPluginService\x12\x45\n\x04Ping\x12\x1d.xyz.block.ftl.v1.PingRequest\x1a\x1e.xyz.block.ftl.v1.PingResponse\x12v\n\tProvision\x12\x33.xyz.block.ftl.v1beta1.provisioner.ProvisionRequest\x1a\x34.xyz.block.ftl.v1beta1.provisioner.ProvisionResponse\x12g\n\x04Plan\x12..xyz.block.ftl.v1beta1.provisioner.PlanRequest\x1a/.xyz.block.ftl.v1beta1.provisioner.PlanResponse\x12m\n\x06Status\x12\x30.xyz.block.ftl.v1beta1.provisioner.StatusRequest\x1a\x31.xyz.block.ftl.v1beta1.provisioner.StatusResponseB[P\x01ZWgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1beta1/provisioner;provisionerb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xyz.block.ftl.v1beta1.provisioner.plugin_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'P\001ZWgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1beta1/provisioner;provisioner' + _globals['_RESOURCECONTEXT']._serialized_start=164 + _globals['_RESOURCECONTEXT']._serialized_end=335 + _globals['_PROVISIONREQUEST']._serialized_start=338 + _globals['_PROVISIONREQUEST']._serialized_end=607 + _globals['_PROVISIONRESPONSE']._serialized_start=610 + _globals['_PROVISIONRESPONSE']._serialized_end=833 + _globals['_PROVISIONRESPONSE_PROVISIONRESPONSESTATUS']._serialized_start=780 + _globals['_PROVISIONRESPONSE_PROVISIONRESPONSESTATUS']._serialized_end=833 + _globals['_STATUSREQUEST']._serialized_start=836 + _globals['_STATUSREQUEST']._serialized_end=988 + _globals['_STATUSRESPONSE']._serialized_start=991 + _globals['_STATUSRESPONSE']._serialized_end=1410 + _globals['_STATUSRESPONSE_PROVISIONINGRUNNING']._serialized_start=1207 + _globals['_STATUSRESPONSE_PROVISIONINGRUNNING']._serialized_end=1228 + _globals['_STATUSRESPONSE_PROVISIONINGFAILED']._serialized_start=1230 + _globals['_STATUSRESPONSE_PROVISIONINGFAILED']._serialized_end=1287 + _globals['_STATUSRESPONSE_PROVISIONINGSUCCESS']._serialized_start=1289 + _globals['_STATUSRESPONSE_PROVISIONINGSUCCESS']._serialized_end=1400 + _globals['_PLANREQUEST']._serialized_start=1412 + _globals['_PLANREQUEST']._serialized_end=1514 + _globals['_PLANRESPONSE']._serialized_start=1516 + _globals['_PLANRESPONSE']._serialized_end=1550 + _globals['_PROVISIONERPLUGINSERVICE']._serialized_start=1553 + _globals['_PROVISIONERPLUGINSERVICE']._serialized_end=1986 +# @@protoc_insertion_point(module_scope) diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/plugin_pb2.pyi b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/plugin_pb2.pyi new file mode 100644 index 0000000000..7c97c803ba --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/plugin_pb2.pyi @@ -0,0 +1,84 @@ +from xyz.block.ftl.v1 import ftl_pb2 as _ftl_pb2 +from xyz.block.ftl.v1beta1.provisioner import resource_pb2 as _resource_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class ResourceContext(_message.Message): + __slots__ = ("resource", "dependencies") + RESOURCE_FIELD_NUMBER: _ClassVar[int] + DEPENDENCIES_FIELD_NUMBER: _ClassVar[int] + resource: _resource_pb2.Resource + dependencies: _containers.RepeatedCompositeFieldContainer[_resource_pb2.Resource] + def __init__(self, resource: _Optional[_Union[_resource_pb2.Resource, _Mapping]] = ..., dependencies: _Optional[_Iterable[_Union[_resource_pb2.Resource, _Mapping]]] = ...) -> None: ... + +class ProvisionRequest(_message.Message): + __slots__ = ("ftl_cluster_id", "module", "existing_resources", "desired_resources") + FTL_CLUSTER_ID_FIELD_NUMBER: _ClassVar[int] + MODULE_FIELD_NUMBER: _ClassVar[int] + EXISTING_RESOURCES_FIELD_NUMBER: _ClassVar[int] + DESIRED_RESOURCES_FIELD_NUMBER: _ClassVar[int] + ftl_cluster_id: str + module: str + existing_resources: _containers.RepeatedCompositeFieldContainer[_resource_pb2.Resource] + desired_resources: _containers.RepeatedCompositeFieldContainer[ResourceContext] + def __init__(self, ftl_cluster_id: _Optional[str] = ..., module: _Optional[str] = ..., existing_resources: _Optional[_Iterable[_Union[_resource_pb2.Resource, _Mapping]]] = ..., desired_resources: _Optional[_Iterable[_Union[ResourceContext, _Mapping]]] = ...) -> None: ... + +class ProvisionResponse(_message.Message): + __slots__ = ("provisioning_token", "status") + class ProvisionResponseStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN: _ClassVar[ProvisionResponse.ProvisionResponseStatus] + SUBMITTED: _ClassVar[ProvisionResponse.ProvisionResponseStatus] + UNKNOWN: ProvisionResponse.ProvisionResponseStatus + SUBMITTED: ProvisionResponse.ProvisionResponseStatus + PROVISIONING_TOKEN_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + provisioning_token: str + status: ProvisionResponse.ProvisionResponseStatus + def __init__(self, provisioning_token: _Optional[str] = ..., status: _Optional[_Union[ProvisionResponse.ProvisionResponseStatus, str]] = ...) -> None: ... + +class StatusRequest(_message.Message): + __slots__ = ("provisioning_token", "desired_resources") + PROVISIONING_TOKEN_FIELD_NUMBER: _ClassVar[int] + DESIRED_RESOURCES_FIELD_NUMBER: _ClassVar[int] + provisioning_token: str + desired_resources: _containers.RepeatedCompositeFieldContainer[_resource_pb2.Resource] + def __init__(self, provisioning_token: _Optional[str] = ..., desired_resources: _Optional[_Iterable[_Union[_resource_pb2.Resource, _Mapping]]] = ...) -> None: ... + +class StatusResponse(_message.Message): + __slots__ = ("running", "success") + class ProvisioningRunning(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + class ProvisioningFailed(_message.Message): + __slots__ = ("error_message",) + ERROR_MESSAGE_FIELD_NUMBER: _ClassVar[int] + error_message: str + def __init__(self, error_message: _Optional[str] = ...) -> None: ... + class ProvisioningSuccess(_message.Message): + __slots__ = ("updated_resources",) + UPDATED_RESOURCES_FIELD_NUMBER: _ClassVar[int] + updated_resources: _containers.RepeatedCompositeFieldContainer[_resource_pb2.Resource] + def __init__(self, updated_resources: _Optional[_Iterable[_Union[_resource_pb2.Resource, _Mapping]]] = ...) -> None: ... + RUNNING_FIELD_NUMBER: _ClassVar[int] + SUCCESS_FIELD_NUMBER: _ClassVar[int] + running: StatusResponse.ProvisioningRunning + success: StatusResponse.ProvisioningSuccess + def __init__(self, running: _Optional[_Union[StatusResponse.ProvisioningRunning, _Mapping]] = ..., success: _Optional[_Union[StatusResponse.ProvisioningSuccess, _Mapping]] = ...) -> None: ... + +class PlanRequest(_message.Message): + __slots__ = ("provisioning",) + PROVISIONING_FIELD_NUMBER: _ClassVar[int] + provisioning: ProvisionRequest + def __init__(self, provisioning: _Optional[_Union[ProvisionRequest, _Mapping]] = ...) -> None: ... + +class PlanResponse(_message.Message): + __slots__ = ("plan",) + PLAN_FIELD_NUMBER: _ClassVar[int] + plan: str + def __init__(self, plan: _Optional[str] = ...) -> None: ... diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/resource_pb2.py b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/resource_pb2.py new file mode 100644 index 0000000000..bc505280f2 --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/resource_pb2.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xyz/block/ftl/v1beta1/provisioner/resource.proto +# Protobuf Python Version: 5.28.3 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 28, + 3, + '', + 'xyz/block/ftl/v1beta1/provisioner/resource.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 +from xyz.block.ftl.v1 import controller_pb2 as xyz_dot_block_dot_ftl_dot_v1_dot_controller__pb2 +from xyz.block.ftl.v1.schema import schema_pb2 as xyz_dot_block_dot_ftl_dot_v1_dot_schema_dot_schema__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n0xyz/block/ftl/v1beta1/provisioner/resource.proto\x12!xyz.block.ftl.v1beta1.provisioner\x1a\x1cgoogle/protobuf/struct.proto\x1a!xyz/block/ftl/v1/controller.proto\x1a$xyz/block/ftl/v1/schema/schema.proto\"\xa1\x02\n\x08Resource\x12\x1f\n\x0bresource_id\x18\x01 \x01(\tR\nresourceId\x12Q\n\x08postgres\x18\x66 \x01(\x0b\x32\x33.xyz.block.ftl.v1beta1.provisioner.PostgresResourceH\x00R\x08postgres\x12H\n\x05mysql\x18g \x01(\x0b\x32\x30.xyz.block.ftl.v1beta1.provisioner.MysqlResourceH\x00R\x05mysql\x12K\n\x06module\x18h \x01(\x0b\x32\x31.xyz.block.ftl.v1beta1.provisioner.ModuleResourceH\x00R\x06moduleB\n\n\x08resource\"\xc8\x01\n\x10PostgresResource\x12\x62\n\x06output\x18\x01 \x01(\x0b\x32J.xyz.block.ftl.v1beta1.provisioner.PostgresResource.PostgresResourceOutputR\x06output\x1aP\n\x16PostgresResourceOutput\x12\x19\n\x08read_dsn\x18\x01 \x01(\tR\x07readDsn\x12\x1b\n\twrite_dsn\x18\x02 \x01(\tR\x08writeDsn\"\xbc\x01\n\rMysqlResource\x12\\\n\x06output\x18\x01 \x01(\x0b\x32\x44.xyz.block.ftl.v1beta1.provisioner.MysqlResource.MysqlResourceOutputR\x06output\x1aM\n\x13MysqlResourceOutput\x12\x19\n\x08read_dsn\x18\x01 \x01(\tR\x07readDsn\x12\x1b\n\twrite_dsn\x18\x02 \x01(\tR\x08writeDsn\"\xed\x02\n\x0eModuleResource\x12^\n\x06output\x18\x01 \x01(\x0b\x32\x46.xyz.block.ftl.v1beta1.provisioner.ModuleResource.ModuleResourceOutputR\x06output\x12\x37\n\x06schema\x18\x02 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ModuleR\x06schema\x12\x42\n\tartefacts\x18\x03 \x03(\x0b\x32$.xyz.block.ftl.v1.DeploymentArtefactR\tartefacts\x12\x34\n\x06labels\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructH\x00R\x06labels\x88\x01\x01\x1a=\n\x14ModuleResourceOutput\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKeyB\t\n\x07_labelsB[P\x01ZWgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1beta1/provisioner;provisionerb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xyz.block.ftl.v1beta1.provisioner.resource_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'P\001ZWgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1beta1/provisioner;provisioner' + _globals['_RESOURCE']._serialized_start=191 + _globals['_RESOURCE']._serialized_end=480 + _globals['_POSTGRESRESOURCE']._serialized_start=483 + _globals['_POSTGRESRESOURCE']._serialized_end=683 + _globals['_POSTGRESRESOURCE_POSTGRESRESOURCEOUTPUT']._serialized_start=603 + _globals['_POSTGRESRESOURCE_POSTGRESRESOURCEOUTPUT']._serialized_end=683 + _globals['_MYSQLRESOURCE']._serialized_start=686 + _globals['_MYSQLRESOURCE']._serialized_end=874 + _globals['_MYSQLRESOURCE_MYSQLRESOURCEOUTPUT']._serialized_start=797 + _globals['_MYSQLRESOURCE_MYSQLRESOURCEOUTPUT']._serialized_end=874 + _globals['_MODULERESOURCE']._serialized_start=877 + _globals['_MODULERESOURCE']._serialized_end=1242 + _globals['_MODULERESOURCE_MODULERESOURCEOUTPUT']._serialized_start=1170 + _globals['_MODULERESOURCE_MODULERESOURCEOUTPUT']._serialized_end=1231 +# @@protoc_insertion_point(module_scope) diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/resource_pb2.pyi b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/resource_pb2.pyi new file mode 100644 index 0000000000..75c298e661 --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/resource_pb2.pyi @@ -0,0 +1,64 @@ +from google.protobuf import struct_pb2 as _struct_pb2 +from xyz.block.ftl.v1 import controller_pb2 as _controller_pb2 +from xyz.block.ftl.v1.schema import schema_pb2 as _schema_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class Resource(_message.Message): + __slots__ = ("resource_id", "postgres", "mysql", "module") + RESOURCE_ID_FIELD_NUMBER: _ClassVar[int] + POSTGRES_FIELD_NUMBER: _ClassVar[int] + MYSQL_FIELD_NUMBER: _ClassVar[int] + MODULE_FIELD_NUMBER: _ClassVar[int] + resource_id: str + postgres: PostgresResource + mysql: MysqlResource + module: ModuleResource + def __init__(self, resource_id: _Optional[str] = ..., postgres: _Optional[_Union[PostgresResource, _Mapping]] = ..., mysql: _Optional[_Union[MysqlResource, _Mapping]] = ..., module: _Optional[_Union[ModuleResource, _Mapping]] = ...) -> None: ... + +class PostgresResource(_message.Message): + __slots__ = ("output",) + class PostgresResourceOutput(_message.Message): + __slots__ = ("read_dsn", "write_dsn") + READ_DSN_FIELD_NUMBER: _ClassVar[int] + WRITE_DSN_FIELD_NUMBER: _ClassVar[int] + read_dsn: str + write_dsn: str + def __init__(self, read_dsn: _Optional[str] = ..., write_dsn: _Optional[str] = ...) -> None: ... + OUTPUT_FIELD_NUMBER: _ClassVar[int] + output: PostgresResource.PostgresResourceOutput + def __init__(self, output: _Optional[_Union[PostgresResource.PostgresResourceOutput, _Mapping]] = ...) -> None: ... + +class MysqlResource(_message.Message): + __slots__ = ("output",) + class MysqlResourceOutput(_message.Message): + __slots__ = ("read_dsn", "write_dsn") + READ_DSN_FIELD_NUMBER: _ClassVar[int] + WRITE_DSN_FIELD_NUMBER: _ClassVar[int] + read_dsn: str + write_dsn: str + def __init__(self, read_dsn: _Optional[str] = ..., write_dsn: _Optional[str] = ...) -> None: ... + OUTPUT_FIELD_NUMBER: _ClassVar[int] + output: MysqlResource.MysqlResourceOutput + def __init__(self, output: _Optional[_Union[MysqlResource.MysqlResourceOutput, _Mapping]] = ...) -> None: ... + +class ModuleResource(_message.Message): + __slots__ = ("output", "schema", "artefacts", "labels") + class ModuleResourceOutput(_message.Message): + __slots__ = ("deployment_key",) + DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] + deployment_key: str + def __init__(self, deployment_key: _Optional[str] = ...) -> None: ... + OUTPUT_FIELD_NUMBER: _ClassVar[int] + SCHEMA_FIELD_NUMBER: _ClassVar[int] + ARTEFACTS_FIELD_NUMBER: _ClassVar[int] + LABELS_FIELD_NUMBER: _ClassVar[int] + output: ModuleResource.ModuleResourceOutput + schema: _schema_pb2.Module + artefacts: _containers.RepeatedCompositeFieldContainer[_controller_pb2.DeploymentArtefact] + labels: _struct_pb2.Struct + def __init__(self, output: _Optional[_Union[ModuleResource.ModuleResourceOutput, _Mapping]] = ..., schema: _Optional[_Union[_schema_pb2.Module, _Mapping]] = ..., artefacts: _Optional[_Iterable[_Union[_controller_pb2.DeploymentArtefact, _Mapping]]] = ..., labels: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/service_pb2.py b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/service_pb2.py new file mode 100644 index 0000000000..e001607b67 --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/service_pb2.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xyz/block/ftl/v1beta1/provisioner/service.proto +# Protobuf Python Version: 5.28.3 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 28, + 3, + '', + 'xyz/block/ftl/v1beta1/provisioner/service.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from xyz.block.ftl.v1 import controller_pb2 as xyz_dot_block_dot_ftl_dot_v1_dot_controller__pb2 +from xyz.block.ftl.v1 import ftl_pb2 as xyz_dot_block_dot_ftl_dot_v1_dot_ftl__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n/xyz/block/ftl/v1beta1/provisioner/service.proto\x12!xyz.block.ftl.v1beta1.provisioner\x1a!xyz/block/ftl/v1/controller.proto\x1a\x1axyz/block/ftl/v1/ftl.proto2\xda\x06\n\x12ProvisionerService\x12J\n\x04Ping\x12\x1d.xyz.block.ftl.v1.PingRequest\x1a\x1e.xyz.block.ftl.v1.PingResponse\"\x03\x90\x02\x01\x12K\n\x06Status\x12\x1f.xyz.block.ftl.v1.StatusRequest\x1a .xyz.block.ftl.v1.StatusResponse\x12i\n\x10GetArtefactDiffs\x12).xyz.block.ftl.v1.GetArtefactDiffsRequest\x1a*.xyz.block.ftl.v1.GetArtefactDiffsResponse\x12\x63\n\x0eUploadArtefact\x12\'.xyz.block.ftl.v1.UploadArtefactRequest\x1a(.xyz.block.ftl.v1.UploadArtefactResponse\x12i\n\x10\x43reateDeployment\x12).xyz.block.ftl.v1.CreateDeploymentRequest\x1a*.xyz.block.ftl.v1.CreateDeploymentResponse\x12]\n\x0cUpdateDeploy\x12%.xyz.block.ftl.v1.UpdateDeployRequest\x1a&.xyz.block.ftl.v1.UpdateDeployResponse\x12`\n\rReplaceDeploy\x12&.xyz.block.ftl.v1.ReplaceDeployRequest\x1a\'.xyz.block.ftl.v1.ReplaceDeployResponse\x12T\n\tGetSchema\x12\".xyz.block.ftl.v1.GetSchemaRequest\x1a#.xyz.block.ftl.v1.GetSchemaResponse\x12Y\n\nPullSchema\x12#.xyz.block.ftl.v1.PullSchemaRequest\x1a$.xyz.block.ftl.v1.PullSchemaResponse0\x01\x42[P\x01ZWgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1beta1/provisioner;provisionerb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xyz.block.ftl.v1beta1.provisioner.service_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'P\001ZWgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1beta1/provisioner;provisioner' + _globals['_PROVISIONERSERVICE'].methods_by_name['Ping']._loaded_options = None + _globals['_PROVISIONERSERVICE'].methods_by_name['Ping']._serialized_options = b'\220\002\001' + _globals['_PROVISIONERSERVICE']._serialized_start=150 + _globals['_PROVISIONERSERVICE']._serialized_end=1008 +# @@protoc_insertion_point(module_scope) diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/service_pb2.pyi b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/service_pb2.pyi new file mode 100644 index 0000000000..1de47b38b9 --- /dev/null +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1beta1/provisioner/service_pb2.pyi @@ -0,0 +1,6 @@ +from xyz.block.ftl.v1 import controller_pb2 as _controller_pb2 +from xyz.block.ftl.v1 import ftl_pb2 as _ftl_pb2 +from google.protobuf import descriptor as _descriptor +from typing import ClassVar as _ClassVar + +DESCRIPTOR: _descriptor.FileDescriptor diff --git a/python-runtime/ftl/uv.lock b/python-runtime/ftl/uv.lock index 0dcec73e01..bb2822413e 100644 --- a/python-runtime/ftl/uv.lock +++ b/python-runtime/ftl/uv.lock @@ -5,3 +5,23 @@ requires-python = ">=3.12" name = "ftl" version = "0.1.0" source = { editable = "." } +dependencies = [ + { name = "protobuf" }, +] + +[package.metadata] +requires-dist = [{ name = "protobuf", specifier = ">=5.28.3" }] + +[[package]] +name = "protobuf" +version = "5.28.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/74/6e/e69eb906fddcb38f8530a12f4b410699972ab7ced4e21524ece9d546ac27/protobuf-5.28.3.tar.gz", hash = "sha256:64badbc49180a5e401f373f9ce7ab1d18b63f7dd4a9cdc43c92b9f0b481cef7b", size = 422479 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/c5/05163fad52d7c43e124a545f1372d18266db36036377ad29de4271134a6a/protobuf-5.28.3-cp310-abi3-win32.whl", hash = "sha256:0c4eec6f987338617072592b97943fdbe30d019c56126493111cf24344c1cc24", size = 419624 }, + { url = "https://files.pythonhosted.org/packages/9c/4c/4563ebe001ff30dca9d7ed12e471fa098d9759712980cde1fd03a3a44fb7/protobuf-5.28.3-cp310-abi3-win_amd64.whl", hash = "sha256:91fba8f445723fcf400fdbe9ca796b19d3b1242cd873907979b9ed71e4afe868", size = 431464 }, + { url = "https://files.pythonhosted.org/packages/1c/f2/baf397f3dd1d3e4af7e3f5a0382b868d25ac068eefe1ebde05132333436c/protobuf-5.28.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a3f6857551e53ce35e60b403b8a27b0295f7d6eb63d10484f12bc6879c715687", size = 414743 }, + { url = "https://files.pythonhosted.org/packages/85/50/cd61a358ba1601f40e7d38bcfba22e053f40ef2c50d55b55926aecc8fec7/protobuf-5.28.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:3fa2de6b8b29d12c61911505d893afe7320ce7ccba4df913e2971461fa36d584", size = 316511 }, + { url = "https://files.pythonhosted.org/packages/5d/ae/3257b09328c0b4e59535e497b0c7537d4954038bdd53a2f0d2f49d15a7c4/protobuf-5.28.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:712319fbdddb46f21abb66cd33cb9e491a5763b2febd8f228251add221981135", size = 316624 }, + { url = "https://files.pythonhosted.org/packages/ad/c3/2377c159e28ea89a91cf1ca223f827ae8deccb2c9c401e5ca233cd73002f/protobuf-5.28.3-py3-none-any.whl", hash = "sha256:cee1757663fa32a1ee673434fcf3bf24dd54763c79690201208bafec62f19eed", size = 169511 }, +]