{"version":3,"file":"index-C0Mn4wcn.js","sources":["../../api-typescript--lib/src/gitpod/v1/pagination_pb.ts","../../api-typescript--lib/src/gitpod/v1/identity_pb.ts","../../api-typescript--lib/src/gitpod/v1/user_pb.ts","../../api-typescript--lib/src/gitpod/v1/organization_pb.ts","../../api-typescript--lib/src/gitpod/v1/account_pb.ts","../../api-typescript--lib/src/gitpod/v1/account_connect.ts","../../api-typescript--lib/src/gitpod/v1/user_connect.ts","../../api-typescript--lib/src/gitpod/v1/runner_configuration_pb.ts","../../api-typescript--lib/src/gitpod/v1/runner_pb.ts","../../api-typescript--lib/src/gitpod/v1/environment_pb.ts","../../api-typescript--lib/src/gitpod/v1/environment_connect.ts","../../api-typescript--lib/src/gitpod/v1/project_pb.ts","../../api-typescript--lib/src/gitpod/v1/project_connect.ts","../../api-typescript--lib/src/gitpod/v1/secret_pb.ts","../../api-typescript--lib/src/gitpod/v1/secret_connect.ts","../../api-typescript--lib/src/gitpod/v1/organization_connect.ts","../../api-typescript--lib/src/gitpod/v1/runner_connect.ts","../../api-typescript--lib/src/gitpod/v1/runner_configuration_connect.ts","../../api-typescript--lib/src/gitpod/v1/runner_interaction_pb.ts","../../api-typescript--lib/src/gitpod/v1/runner_interaction_connect.ts","../../api-typescript--lib/src/gitpod/v1/environment_automation_pb.ts","../../api-typescript--lib/src/gitpod/v1/environment_automation_connect.ts","../../api-typescript--lib/src/gitpod/v1/group_pb.ts","../../api-typescript--lib/src/gitpod/v1/group_connect.ts","../../api-typescript--lib/src/gitpod/v1/event_pb.ts","../../api-typescript--lib/src/gitpod/v1/event_connect.ts","../../api-typescript--lib/src/gitpod/v1/editor_pb.ts","../../api-typescript--lib/src/gitpod/v1/editor_connect.ts","../../src/web-config.ts","../../src/principal.ts","../../src/utils/version.ts","../../src/api.ts","../../src/assets/icons/geist/IconSpinner.tsx","../../src/components/podkit/lib/cn.ts","../../src/components/flexkit/Button.tsx","../../src/components/podkit/toasts/use-toast.tsx","../../frontend-shared--lib/src/ipc.ts","../../frontend-shared--lib/src/local-runner.ts","../../src/components/podkit/loading/Delayed.tsx","../../src/components/podkit/loading/LoadingState.tsx","../../src/feature-flags.ts","../../src/contexts/GitpodAPIContext.tsx","../../src/hooks/use-gitpod-api.ts","../../src/hooks/use-intercom.ts","../../src/queries/errors.ts","../../src/queries/principal-key.ts","../../src/queries/user-queries.ts","../../src/contexts/SegmentContext.tsx","../../src/contexts/DesktopProvider.tsx","../../src/hooks/use-desktop.ts","../../src/hooks/use-segment.ts","../../src/queries/account-queries.ts","../../src/hooks/use-boot-pylon.ts","../../src/hooks/use-flag.ts","../../src/hooks/use-boot-in-app-chat.ts","../../src/hooks/use-local-runner.ts","../../src/components/AuthenticatedUserLayout.tsx","../../src/assets/icons/geist/IconCheckFill.tsx","../../src/components/podkit/typography/Text.tsx","../../src/components/podkit/typography/Headings.tsx","../../src/utils/arrays.ts","../../src/utils/errors.ts","../../src/components/ErrorMessage.tsx","../../src/hooks/use-document-title.ts","../../src/queries/runner-configuration-queries.ts","../../src/queries/runner-queries.ts","../../src/components/podkit/loading/Skeleton.tsx","../../src/assets/icons/geist/IconExternalLink.tsx","../../src/components/podkit/typography/Link.tsx","../../src/assets/icons/geist/IconCheckCircle.tsx","../../src/components/Tooltip.tsx","../../src/components/Toggle.tsx","../../src/assets/icons/geist/IconClose.tsx","../../src/components/podkit/modal/Modal.tsx","../../src/hooks/use-membership.ts","../../src/components/podkit/forms/InputFieldHint.tsx","../../src/components/podkit/forms/InputField.tsx","../../src/components/podkit/forms/Input.tsx","../../src/assets/icons/geist/IconChevronDownSmall.tsx","../../src/components/podkit/select/Select.tsx","../../src/queries/organization-queries.ts","../../src/queries/group-queries.ts","../../src/assets/icons/geist/IconAzureDevOps.tsx","../../src/assets/icons/geist/IconBitbucket.tsx","../../src/assets/icons/geist/IconGit.tsx","../../src/assets/icons/geist/IconGitHub.tsx","../../src/assets/icons/geist/IconGitLab.tsx","../../src/components/runners/details/SourceControlProviderIcon.tsx","../../src/hooks/use-temporary-value.ts","../../src/components/podkit/forms/CopyableInput.tsx","../../src/components/podkit/dropdown/DropDown.tsx","../../src/assets/icons/geist/IconEllipseHorizontal.tsx","../../src/components/podkit/dropdown/DropDownActions.tsx","../../src/queries/environment-queries.ts","../../src/components/podkit/forms/Label.tsx","../../src/assets/icons/geist/IconWarning.tsx","../../src/assets/icons/geist/IconRefresh.tsx","../../src/queries/user-preferences-queries.ts","../../src/contexts/OnboardingContext.tsx","../../src/hooks/use-onboarding.ts","../../src/assets/icons/geist/IconChevronDown.tsx","../../src/components/Collapsable.tsx","../../src/queries/automations-queries.ts","../../src/queries/project-queries.ts","../../src/queries/secret-queries.ts","../../src/hooks/use-stream-events.ts","../../src/hooks/use-scm-authentication.ts","../../src/components/podkit/Card.tsx","../../src/routes/environments/create/SCMAuthentication.tsx","../../src/assets/icons/geist/IconBox.tsx","../../src/assets/icons/geist/IconDot.tsx","../../src/assets/icons/geist/IconPlay.tsx","../../src/assets/icons/geist/IconStop.tsx","../../src/assets/icons/geist/IconVSCode.tsx","../../src/utils/environment.ts","../../src/hooks/use-branch.ts","../../src/hooks/use-grouped-environments.ts","../../src/hooks/use-open-editor.ts","../../src/routes/environments/phase.ts","../../src/utils/git-status.ts","../../src/hooks/use-loaded.ts","../../src/routes/environments/details/EnvironmentDetailsLayout.tsx","../../src/routes/environments/details/EnvironmentDetailsHeader.tsx","../../src/assets/icons/geist/IconCommit.tsx","../../src/assets/icons/geist/IconFile.tsx","../../src/components/podkit/popover/Popover.tsx","../../src/routes/environments/details/GitStatusPopOver.tsx","../../src/assets/icons/geist/IconPort.tsx","../../src/assets/icons/geist/IconSSH.tsx","../../src/components/environments/WithPopover.tsx","../../src/components/environments/OpenPortForm.tsx","../../src/routes/environments/DeleteEnvironmentModal.tsx","../../src/routes/environments/details/EnvironmentActionsDropdown.tsx","../../src/components/environments/ActionBar.tsx","../../src/components/flexkit/Banner.tsx","../../src/components/environments/EnvironmentBanner.tsx","../../src/components/environments/GitBranch.tsx","../../src/components/environments/EnvironmentDetailsHeader.tsx","../../src/components/environments/onboarding/dev-container-template.ts","../../src/components/podkit/forms/CopyableTextArea.tsx","../../src/components/environments/onboarding/DevContainerTemplateModal.tsx","../../src/assets/icons/onboarding/TemplateIllustrationPlaceholder.tsx","../../src/components/environments/onboarding/DevContainerStep.tsx","../../src/components/podkit/tabs/Tabs.tsx","../../src/components/environments/onboarding/automations-template.ts","../../src/components/environments/onboarding/AutomationsTemplateModal.tsx","../../src/components/environments/onboarding/AutomationsStep.tsx","../../src/hooks/use-environment-onboarding.ts","../../src/components/environments/onboarding/CommitFilesStep.tsx","../../src/components/podkit/alert/Alert.tsx","../../src/components/environments/onboarding/CreateProjectFromEnvironmentModal.tsx","../../src/components/environments/onboarding/ShareStep.tsx","../../src/components/environments/EnvironmentOnboarding.tsx","../../src/assets/icons/geist/IconCopy.tsx","../../src/assets/icons/geist/IconPlaceholder.tsx","../../src/components/environments/EnvironmentDetailsEmptySection.tsx","../../src/components/environments/EnvironmentPorts.tsx","../../src/components/podkit/tables/Table.tsx","../../src/format/time.ts","../../src/assets/icons/geist/IconTrash.tsx","../../src/components/projects/DeleteSecretModal.tsx","../../src/components/podkit/forms/Textarea.tsx","../../src/components/projects/EditSecretForm.tsx","../../src/components/projects/EditSecretModal.tsx","../../src/components/projects/SecretsTable.tsx","../../src/components/projects/ProjectSecrets.tsx","../../src/assets/icons/geist/IconCheck.tsx","../../src/components/environments/EnvironmentSecretsTable.tsx","../../src/components/environments/EnvironmentSecretsModal.tsx","../../src/assets/icons/geist/IconChevronRight.tsx","../../src/components/environments/environment-start-steps-state.ts","../../src/hooks/use-environment-compute-description.ts","../../src/assets/icons/geist/StartSequenceStepIcon.tsx","../../src/assets/icons/geist/IconMaximize.tsx","../../src/components/environments/EnvironmentStartSteps.tsx","../../src/components/environments/EnvironmentToggle.tsx","../../api-typescript--lib/src/gitpod/v1/environment_logs_pb.ts","../../src/routes/environments/log-streams/log-groups.ts","../../src/hooks/use-stream-logs.ts","../../src/components/environments/environment-start-steps-latest-log-line.ts","../../src/components/environments/EnvironmentStartSequence.tsx","../../src/components/environments/service-actions.ts","../../src/hooks/use-callback-prevent-default.ts","../../src/components/environments/EnvironmentServiceActions.tsx","../../src/components/environments/PhaseLabel.tsx","../../src/components/environments/EnvironmentServiceStatus.tsx","../../src/components/environments/ServiceCard.tsx","../../src/components/environments/EnvironmentServices.tsx","../../src/assets/icons/geist/IconWarningCircle.tsx","../../src/components/environments/TaskCard.tsx","../../src/components/environments/EnvironmentTasks.tsx","../../src/routes/environments/details/EnvironmentAutomations.tsx","../../src/routes/environments/details/EnvironmentDetails.tsx","../../src/routes/environments/details/EnvironmentDetailsPage.tsx","../../src/hooks/use-trigger-on-running.ts","../../src/assets/icons/geist/IconDotLarge.tsx","../../src/assets/icons/geist/IconWarningCircleFilled.tsx","../../src/components/EnvironmentLogs.tsx","../../src/assets/icons/geist/IconArrowLeft.tsx","../../src/components/environments/BackButton.tsx","../../src/routes/environments/details/EnvironmentLogsPage.tsx","../../src/components/environments/EnvironmentTaskRunStatus.tsx","../../src/components/environments/EnvironmentTaskRunActions.tsx","../../src/routes/environments/details/EnvironmentTaskRunLogsPage.tsx","../../src/components/environments/EnvironmentTaskRuns.tsx","../../src/routes/environments/details/EnvironmentTaskRunsPage.tsx","../../src/utils/service.ts","../../src/routes/environments/details/services/ServiceLogsPage.tsx","../../src/routes/environments/details/EnvironmentDetailsRoute.tsx","../../src/components/ExceptionHandler.tsx","../../src/components/podkit/toasts/Toast.tsx","../../src/components/podkit/toasts/Toaster.tsx","../../src/hooks/use-organization-onboarding-steps.ts","../../src/contexts/OnboardingProvider.tsx","../../src/contexts/SegmentProvider.tsx"],"sourcesContent":["// @generated by protoc-gen-es v1.8.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/pagination.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Message, proto3 } from \"@bufbuild/protobuf\";\n\n/**\n * @generated from enum gitpod.v1.SortOrder\n */\nexport enum SortOrder {\n /**\n * @generated from enum value: SORT_ORDER_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: SORT_ORDER_ASC = 1;\n */\n ASC = 1,\n\n /**\n * @generated from enum value: SORT_ORDER_DESC = 2;\n */\n DESC = 2,\n}\n// Retrieve enum metadata with: proto3.getEnumType(SortOrder)\nproto3.util.setEnumType(SortOrder, \"gitpod.v1.SortOrder\", [\n { no: 0, name: \"SORT_ORDER_UNSPECIFIED\" },\n { no: 1, name: \"SORT_ORDER_ASC\" },\n { no: 2, name: \"SORT_ORDER_DESC\" },\n]);\n\n/**\n * @generated from message gitpod.v1.PaginationRequest\n */\nexport class PaginationRequest extends Message {\n /**\n * Page size is the maximum number of results to retrieve per page.\n * Defaults to 25. Maximum 100.\n *\n * @generated from field: int32 page_size = 1;\n */\n pageSize = 0;\n\n /**\n * Token for the next set of results that was returned as next_token of a\n * PaginationResponse\n *\n * @generated from field: string token = 2;\n */\n token = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.PaginationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"page_size\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n { no: 2, name: \"token\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): PaginationRequest {\n return new PaginationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): PaginationRequest {\n return new PaginationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): PaginationRequest {\n return new PaginationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: PaginationRequest | PlainMessage | undefined, b: PaginationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(PaginationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.PaginationResponse\n */\nexport class PaginationResponse extends Message {\n /**\n * Token passed for retreiving the next set of results. Empty if there are no\n * more results\n *\n * @generated from field: string next_token = 1;\n */\n nextToken = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.PaginationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"next_token\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): PaginationResponse {\n return new PaginationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): PaginationResponse {\n return new PaginationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): PaginationResponse {\n return new PaginationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: PaginationResponse | PlainMessage | undefined, b: PaginationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(PaginationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.Sort\n */\nexport class Sort extends Message {\n /**\n * Field name to sort by, in camelCase.\n *\n * @generated from field: string field = 1;\n */\n field = \"\";\n\n /**\n * @generated from field: gitpod.v1.SortOrder order = 2;\n */\n order = SortOrder.UNSPECIFIED;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.Sort\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"field\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"order\", kind: \"enum\", T: proto3.getEnumType(SortOrder) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): Sort {\n return new Sort().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): Sort {\n return new Sort().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): Sort {\n return new Sort().fromJsonString(jsonString, options);\n }\n\n static equals(a: Sort | PlainMessage | undefined, b: Sort | PlainMessage | undefined): boolean {\n return proto3.util.equals(Sort, a, b);\n }\n}\n\n","// @generated by protoc-gen-es v1.8.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/identity.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Message, proto3 } from \"@bufbuild/protobuf\";\n\n/**\n * @generated from enum gitpod.v1.Principal\n */\nexport enum Principal {\n /**\n * @generated from enum value: PRINCIPAL_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: PRINCIPAL_ACCOUNT = 1;\n */\n ACCOUNT = 1,\n\n /**\n * @generated from enum value: PRINCIPAL_USER = 2;\n */\n USER = 2,\n\n /**\n * @generated from enum value: PRINCIPAL_RUNNER = 3;\n */\n RUNNER = 3,\n\n /**\n * @generated from enum value: PRINCIPAL_ENVIRONMENT = 4;\n */\n ENVIRONMENT = 4,\n\n /**\n * @generated from enum value: PRINCIPAL_SERVICE_ACCOUNT = 5;\n */\n SERVICE_ACCOUNT = 5,\n}\n// Retrieve enum metadata with: proto3.getEnumType(Principal)\nproto3.util.setEnumType(Principal, \"gitpod.v1.Principal\", [\n { no: 0, name: \"PRINCIPAL_UNSPECIFIED\" },\n { no: 1, name: \"PRINCIPAL_ACCOUNT\" },\n { no: 2, name: \"PRINCIPAL_USER\" },\n { no: 3, name: \"PRINCIPAL_RUNNER\" },\n { no: 4, name: \"PRINCIPAL_ENVIRONMENT\" },\n { no: 5, name: \"PRINCIPAL_SERVICE_ACCOUNT\" },\n]);\n\n/**\n * @generated from message gitpod.v1.GetIDTokenRequest\n */\nexport class GetIDTokenRequest extends Message {\n /**\n * @generated from field: repeated string audience = 1;\n */\n audience: string[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetIDTokenRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"audience\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetIDTokenRequest {\n return new GetIDTokenRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetIDTokenRequest {\n return new GetIDTokenRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetIDTokenRequest {\n return new GetIDTokenRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetIDTokenRequest | PlainMessage | undefined, b: GetIDTokenRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetIDTokenRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetIDTokenResponse\n */\nexport class GetIDTokenResponse extends Message {\n /**\n * @generated from field: string token = 1;\n */\n token = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetIDTokenResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"token\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetIDTokenResponse {\n return new GetIDTokenResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetIDTokenResponse {\n return new GetIDTokenResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetIDTokenResponse {\n return new GetIDTokenResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetIDTokenResponse | PlainMessage | undefined, b: GetIDTokenResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetIDTokenResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.Subject\n */\nexport class Subject extends Message {\n /**\n * id is the UUID of the subject\n *\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * Principal is the principal of the subject\n *\n * @generated from field: gitpod.v1.Principal principal = 2;\n */\n principal = Principal.UNSPECIFIED;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.Subject\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"principal\", kind: \"enum\", T: proto3.getEnumType(Principal) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): Subject {\n return new Subject().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): Subject {\n return new Subject().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): Subject {\n return new Subject().fromJsonString(jsonString, options);\n }\n\n static equals(a: Subject | PlainMessage | undefined, b: Subject | PlainMessage | undefined): boolean {\n return proto3.util.equals(Subject, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetAuthenticatedIdentityRequest\n */\nexport class GetAuthenticatedIdentityRequest extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetAuthenticatedIdentityRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetAuthenticatedIdentityRequest {\n return new GetAuthenticatedIdentityRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetAuthenticatedIdentityRequest {\n return new GetAuthenticatedIdentityRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetAuthenticatedIdentityRequest {\n return new GetAuthenticatedIdentityRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetAuthenticatedIdentityRequest | PlainMessage | undefined, b: GetAuthenticatedIdentityRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetAuthenticatedIdentityRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetAuthenticatedIdentityResponse\n */\nexport class GetAuthenticatedIdentityResponse extends Message {\n /**\n * subject is the identity of the current user\n *\n * @generated from field: gitpod.v1.Subject subject = 1;\n */\n subject?: Subject;\n\n /**\n * @generated from field: string organization_id = 2;\n */\n organizationId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetAuthenticatedIdentityResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"subject\", kind: \"message\", T: Subject },\n { no: 2, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetAuthenticatedIdentityResponse {\n return new GetAuthenticatedIdentityResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetAuthenticatedIdentityResponse {\n return new GetAuthenticatedIdentityResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetAuthenticatedIdentityResponse {\n return new GetAuthenticatedIdentityResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetAuthenticatedIdentityResponse | PlainMessage | undefined, b: GetAuthenticatedIdentityResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetAuthenticatedIdentityResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ExchangeTokenRequest\n */\nexport class ExchangeTokenRequest extends Message {\n /**\n * exchange_token is the token to exchange\n *\n * @generated from field: string exchange_token = 1;\n */\n exchangeToken = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ExchangeTokenRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"exchange_token\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ExchangeTokenRequest {\n return new ExchangeTokenRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ExchangeTokenRequest {\n return new ExchangeTokenRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ExchangeTokenRequest {\n return new ExchangeTokenRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ExchangeTokenRequest | PlainMessage | undefined, b: ExchangeTokenRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ExchangeTokenRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ExchangeTokenResponse\n */\nexport class ExchangeTokenResponse extends Message {\n /**\n * access_token is the new access token\n *\n * @generated from field: string access_token = 1;\n */\n accessToken = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ExchangeTokenResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"access_token\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ExchangeTokenResponse {\n return new ExchangeTokenResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ExchangeTokenResponse {\n return new ExchangeTokenResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ExchangeTokenResponse {\n return new ExchangeTokenResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ExchangeTokenResponse | PlainMessage | undefined, b: ExchangeTokenResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ExchangeTokenResponse, a, b);\n }\n}\n\n","// @generated by protoc-gen-es v1.8.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/user.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Duration, Message, proto3, Timestamp } from \"@bufbuild/protobuf\";\nimport { PaginationRequest, PaginationResponse } from \"./pagination_pb.js\";\nimport { Subject } from \"./identity_pb.js\";\n\n/**\n * @generated from enum gitpod.v1.UserStatus\n */\nexport enum UserStatus {\n /**\n * @generated from enum value: USER_STATUS_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: USER_STATUS_ACTIVE = 1;\n */\n ACTIVE = 1,\n\n /**\n * @generated from enum value: USER_STATUS_SUSPENDED = 2;\n */\n SUSPENDED = 2,\n\n /**\n * @generated from enum value: USER_STATUS_LEFT = 3;\n */\n LEFT = 3,\n}\n// Retrieve enum metadata with: proto3.getEnumType(UserStatus)\nproto3.util.setEnumType(UserStatus, \"gitpod.v1.UserStatus\", [\n { no: 0, name: \"USER_STATUS_UNSPECIFIED\" },\n { no: 1, name: \"USER_STATUS_ACTIVE\" },\n { no: 2, name: \"USER_STATUS_SUSPENDED\" },\n { no: 3, name: \"USER_STATUS_LEFT\" },\n]);\n\n/**\n * @generated from message gitpod.v1.GetAuthenticatedUserRequest\n */\nexport class GetAuthenticatedUserRequest extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetAuthenticatedUserRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetAuthenticatedUserRequest {\n return new GetAuthenticatedUserRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetAuthenticatedUserRequest {\n return new GetAuthenticatedUserRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetAuthenticatedUserRequest {\n return new GetAuthenticatedUserRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetAuthenticatedUserRequest | PlainMessage | undefined, b: GetAuthenticatedUserRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetAuthenticatedUserRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetAuthenticatedUserResponse\n */\nexport class GetAuthenticatedUserResponse extends Message {\n /**\n * @generated from field: gitpod.v1.User user = 1;\n */\n user?: User;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetAuthenticatedUserResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"user\", kind: \"message\", T: User },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetAuthenticatedUserResponse {\n return new GetAuthenticatedUserResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetAuthenticatedUserResponse {\n return new GetAuthenticatedUserResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetAuthenticatedUserResponse {\n return new GetAuthenticatedUserResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetAuthenticatedUserResponse | PlainMessage | undefined, b: GetAuthenticatedUserResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetAuthenticatedUserResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.SetSuspendedRequest\n */\nexport class SetSuspendedRequest extends Message {\n /**\n * @generated from field: string user_id = 1;\n */\n userId = \"\";\n\n /**\n * @generated from field: bool suspended = 2;\n */\n suspended = false;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.SetSuspendedRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"user_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"suspended\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SetSuspendedRequest {\n return new SetSuspendedRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SetSuspendedRequest {\n return new SetSuspendedRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SetSuspendedRequest {\n return new SetSuspendedRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: SetSuspendedRequest | PlainMessage | undefined, b: SetSuspendedRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(SetSuspendedRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.SetSuspendedResponse\n */\nexport class SetSuspendedResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.SetSuspendedResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SetSuspendedResponse {\n return new SetSuspendedResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SetSuspendedResponse {\n return new SetSuspendedResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SetSuspendedResponse {\n return new SetSuspendedResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: SetSuspendedResponse | PlainMessage | undefined, b: SetSuspendedResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(SetSuspendedResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.User\n */\nexport class User extends Message {\n /**\n * id is a UUID of the user\n *\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * organization_id is the id of the organization this account is owned by.\n *\n * +optional if not set, this account is owned by the installation.\n *\n * @generated from field: string organization_id = 2;\n */\n organizationId = \"\";\n\n /**\n * name is the full name of the user\n *\n * @generated from field: string name = 3;\n */\n name = \"\";\n\n /**\n * avatar_url is a link to the user avatar\n *\n * @generated from field: string avatar_url = 4;\n */\n avatarUrl = \"\";\n\n /**\n * created_at is the creation time\n *\n * @generated from field: google.protobuf.Timestamp created_at = 5;\n */\n createdAt?: Timestamp;\n\n /**\n * status is the status the user is in\n *\n * @generated from field: gitpod.v1.UserStatus status = 6;\n */\n status = UserStatus.UNSPECIFIED;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.User\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"avatar_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"created_at\", kind: \"message\", T: Timestamp },\n { no: 6, name: \"status\", kind: \"enum\", T: proto3.getEnumType(UserStatus) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): User {\n return new User().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): User {\n return new User().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): User {\n return new User().fromJsonString(jsonString, options);\n }\n\n static equals(a: User | PlainMessage | undefined, b: User | PlainMessage | undefined): boolean {\n return proto3.util.equals(User, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreatePersonalAccessTokenRequest\n */\nexport class CreatePersonalAccessTokenRequest extends Message {\n /**\n * @generated from field: string user_id = 1;\n */\n userId = \"\";\n\n /**\n * @generated from field: string description = 2;\n */\n description = \"\";\n\n /**\n * @generated from field: google.protobuf.Duration valid_for = 3;\n */\n validFor?: Duration;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreatePersonalAccessTokenRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"user_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"description\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"valid_for\", kind: \"message\", T: Duration },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreatePersonalAccessTokenRequest {\n return new CreatePersonalAccessTokenRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreatePersonalAccessTokenRequest {\n return new CreatePersonalAccessTokenRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreatePersonalAccessTokenRequest {\n return new CreatePersonalAccessTokenRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreatePersonalAccessTokenRequest | PlainMessage | undefined, b: CreatePersonalAccessTokenRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreatePersonalAccessTokenRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreatePersonalAccessTokenResponse\n */\nexport class CreatePersonalAccessTokenResponse extends Message {\n /**\n * @generated from field: string token = 1;\n */\n token = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreatePersonalAccessTokenResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"token\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreatePersonalAccessTokenResponse {\n return new CreatePersonalAccessTokenResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreatePersonalAccessTokenResponse {\n return new CreatePersonalAccessTokenResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreatePersonalAccessTokenResponse {\n return new CreatePersonalAccessTokenResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreatePersonalAccessTokenResponse | PlainMessage | undefined, b: CreatePersonalAccessTokenResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreatePersonalAccessTokenResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetPersonalAccessTokenRequest\n */\nexport class GetPersonalAccessTokenRequest extends Message {\n /**\n * @generated from field: string personal_access_token_id = 1;\n */\n personalAccessTokenId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetPersonalAccessTokenRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"personal_access_token_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetPersonalAccessTokenRequest {\n return new GetPersonalAccessTokenRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetPersonalAccessTokenRequest {\n return new GetPersonalAccessTokenRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetPersonalAccessTokenRequest {\n return new GetPersonalAccessTokenRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetPersonalAccessTokenRequest | PlainMessage | undefined, b: GetPersonalAccessTokenRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetPersonalAccessTokenRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetPersonalAccessTokenResponse\n */\nexport class GetPersonalAccessTokenResponse extends Message {\n /**\n * @generated from field: gitpod.v1.PersonalAccessToken pat = 1;\n */\n pat?: PersonalAccessToken;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetPersonalAccessTokenResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pat\", kind: \"message\", T: PersonalAccessToken },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetPersonalAccessTokenResponse {\n return new GetPersonalAccessTokenResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetPersonalAccessTokenResponse {\n return new GetPersonalAccessTokenResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetPersonalAccessTokenResponse {\n return new GetPersonalAccessTokenResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetPersonalAccessTokenResponse | PlainMessage | undefined, b: GetPersonalAccessTokenResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetPersonalAccessTokenResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListPersonalAccessTokensRequest\n */\nexport class ListPersonalAccessTokensRequest extends Message {\n /**\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * @generated from field: gitpod.v1.ListPersonalAccessTokensRequest.Filter filter = 2;\n */\n filter?: ListPersonalAccessTokensRequest_Filter;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListPersonalAccessTokensRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"filter\", kind: \"message\", T: ListPersonalAccessTokensRequest_Filter },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListPersonalAccessTokensRequest {\n return new ListPersonalAccessTokensRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListPersonalAccessTokensRequest {\n return new ListPersonalAccessTokensRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListPersonalAccessTokensRequest {\n return new ListPersonalAccessTokensRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListPersonalAccessTokensRequest | PlainMessage | undefined, b: ListPersonalAccessTokensRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListPersonalAccessTokensRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListPersonalAccessTokensRequest.Filter\n */\nexport class ListPersonalAccessTokensRequest_Filter extends Message {\n /**\n * creator_ids filters the response to only Environments created by specified members\n *\n * @generated from field: repeated string user_ids = 3;\n */\n userIds: string[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListPersonalAccessTokensRequest.Filter\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 3, name: \"user_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListPersonalAccessTokensRequest_Filter {\n return new ListPersonalAccessTokensRequest_Filter().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListPersonalAccessTokensRequest_Filter {\n return new ListPersonalAccessTokensRequest_Filter().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListPersonalAccessTokensRequest_Filter {\n return new ListPersonalAccessTokensRequest_Filter().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListPersonalAccessTokensRequest_Filter | PlainMessage | undefined, b: ListPersonalAccessTokensRequest_Filter | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListPersonalAccessTokensRequest_Filter, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListPersonalAccessTokensResponse\n */\nexport class ListPersonalAccessTokensResponse extends Message {\n /**\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * @generated from field: repeated gitpod.v1.PersonalAccessToken personal_access_tokens = 2;\n */\n personalAccessTokens: PersonalAccessToken[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListPersonalAccessTokensResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"personal_access_tokens\", kind: \"message\", T: PersonalAccessToken, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListPersonalAccessTokensResponse {\n return new ListPersonalAccessTokensResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListPersonalAccessTokensResponse {\n return new ListPersonalAccessTokensResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListPersonalAccessTokensResponse {\n return new ListPersonalAccessTokensResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListPersonalAccessTokensResponse | PlainMessage | undefined, b: ListPersonalAccessTokensResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListPersonalAccessTokensResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeletePersonalAccessTokenRequest\n */\nexport class DeletePersonalAccessTokenRequest extends Message {\n /**\n * @generated from field: string personal_access_token_id = 1;\n */\n personalAccessTokenId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeletePersonalAccessTokenRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"personal_access_token_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeletePersonalAccessTokenRequest {\n return new DeletePersonalAccessTokenRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeletePersonalAccessTokenRequest {\n return new DeletePersonalAccessTokenRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeletePersonalAccessTokenRequest {\n return new DeletePersonalAccessTokenRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeletePersonalAccessTokenRequest | PlainMessage | undefined, b: DeletePersonalAccessTokenRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeletePersonalAccessTokenRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeletePersonalAccessTokenResponse\n */\nexport class DeletePersonalAccessTokenResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeletePersonalAccessTokenResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeletePersonalAccessTokenResponse {\n return new DeletePersonalAccessTokenResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeletePersonalAccessTokenResponse {\n return new DeletePersonalAccessTokenResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeletePersonalAccessTokenResponse {\n return new DeletePersonalAccessTokenResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeletePersonalAccessTokenResponse | PlainMessage | undefined, b: DeletePersonalAccessTokenResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeletePersonalAccessTokenResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.PersonalAccessToken\n */\nexport class PersonalAccessToken extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId = \"\";\n\n /**\n * @generated from field: string description = 3;\n */\n description = \"\";\n\n /**\n * @generated from field: gitpod.v1.Subject creator = 4;\n */\n creator?: Subject;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 5;\n */\n createdAt?: Timestamp;\n\n /**\n * @generated from field: google.protobuf.Timestamp expires_at = 6;\n */\n expiresAt?: Timestamp;\n\n /**\n * @generated from field: google.protobuf.Timestamp last_used = 7;\n */\n lastUsed?: Timestamp;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.PersonalAccessToken\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"user_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"description\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"creator\", kind: \"message\", T: Subject },\n { no: 5, name: \"created_at\", kind: \"message\", T: Timestamp },\n { no: 6, name: \"expires_at\", kind: \"message\", T: Timestamp },\n { no: 7, name: \"last_used\", kind: \"message\", T: Timestamp },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): PersonalAccessToken {\n return new PersonalAccessToken().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): PersonalAccessToken {\n return new PersonalAccessToken().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): PersonalAccessToken {\n return new PersonalAccessToken().fromJsonString(jsonString, options);\n }\n\n static equals(a: PersonalAccessToken | PlainMessage | undefined, b: PersonalAccessToken | PlainMessage | undefined): boolean {\n return proto3.util.equals(PersonalAccessToken, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.SetPreferenceRequest\n */\nexport class SetPreferenceRequest extends Message {\n /**\n * @generated from field: string key = 1;\n */\n key = \"\";\n\n /**\n * omitting value field will cause an error due to min_len validation,\n * to unset a preference use DeletePreference instead\n *\n * @generated from field: string value = 2;\n */\n value = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.SetPreferenceRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"key\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"value\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SetPreferenceRequest {\n return new SetPreferenceRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SetPreferenceRequest {\n return new SetPreferenceRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SetPreferenceRequest {\n return new SetPreferenceRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: SetPreferenceRequest | PlainMessage | undefined, b: SetPreferenceRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(SetPreferenceRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.SetPreferenceResponse\n */\nexport class SetPreferenceResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.SetPreferenceResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SetPreferenceResponse {\n return new SetPreferenceResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SetPreferenceResponse {\n return new SetPreferenceResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SetPreferenceResponse {\n return new SetPreferenceResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: SetPreferenceResponse | PlainMessage | undefined, b: SetPreferenceResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(SetPreferenceResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetPreferenceRequest\n */\nexport class GetPreferenceRequest extends Message {\n /**\n * @generated from field: string user_preference_id = 1;\n */\n userPreferenceId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetPreferenceRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"user_preference_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetPreferenceRequest {\n return new GetPreferenceRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetPreferenceRequest {\n return new GetPreferenceRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetPreferenceRequest {\n return new GetPreferenceRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetPreferenceRequest | PlainMessage | undefined, b: GetPreferenceRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetPreferenceRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetPreferenceResponse\n */\nexport class GetPreferenceResponse extends Message {\n /**\n * @generated from field: gitpod.v1.UserPreference preference = 1;\n */\n preference?: UserPreference;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetPreferenceResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"preference\", kind: \"message\", T: UserPreference },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetPreferenceResponse {\n return new GetPreferenceResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetPreferenceResponse {\n return new GetPreferenceResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetPreferenceResponse {\n return new GetPreferenceResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetPreferenceResponse | PlainMessage | undefined, b: GetPreferenceResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetPreferenceResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListPreferencesRequest\n */\nexport class ListPreferencesRequest extends Message {\n /**\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListPreferencesRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListPreferencesRequest {\n return new ListPreferencesRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListPreferencesRequest {\n return new ListPreferencesRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListPreferencesRequest {\n return new ListPreferencesRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListPreferencesRequest | PlainMessage | undefined, b: ListPreferencesRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListPreferencesRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListPreferencesResponse\n */\nexport class ListPreferencesResponse extends Message {\n /**\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * @generated from field: repeated gitpod.v1.UserPreference preferences = 2;\n */\n preferences: UserPreference[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListPreferencesResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"preferences\", kind: \"message\", T: UserPreference, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListPreferencesResponse {\n return new ListPreferencesResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListPreferencesResponse {\n return new ListPreferencesResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListPreferencesResponse {\n return new ListPreferencesResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListPreferencesResponse | PlainMessage | undefined, b: ListPreferencesResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListPreferencesResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeletePreferenceRequest\n */\nexport class DeletePreferenceRequest extends Message {\n /**\n * @generated from field: string user_preference_id = 1;\n */\n userPreferenceId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeletePreferenceRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"user_preference_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeletePreferenceRequest {\n return new DeletePreferenceRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeletePreferenceRequest {\n return new DeletePreferenceRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeletePreferenceRequest {\n return new DeletePreferenceRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeletePreferenceRequest | PlainMessage | undefined, b: DeletePreferenceRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeletePreferenceRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeletePreferenceResponse\n */\nexport class DeletePreferenceResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeletePreferenceResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeletePreferenceResponse {\n return new DeletePreferenceResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeletePreferenceResponse {\n return new DeletePreferenceResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeletePreferenceResponse {\n return new DeletePreferenceResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeletePreferenceResponse | PlainMessage | undefined, b: DeletePreferenceResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeletePreferenceResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UserPreference\n */\nexport class UserPreference extends Message {\n /**\n * @generated from field: string key = 1;\n */\n key = \"\";\n\n /**\n * omitting value field will cause an error due to min_len validation,\n * to unset a preference use DeletePreference instead\n *\n * @generated from field: string value = 2;\n */\n value = \"\";\n\n /**\n * @generated from field: string id = 3;\n */\n id = \"\";\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 4;\n */\n createdAt?: Timestamp;\n\n /**\n * @generated from field: google.protobuf.Timestamp updated_at = 5;\n */\n updatedAt?: Timestamp;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UserPreference\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"key\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"value\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"created_at\", kind: \"message\", T: Timestamp },\n { no: 5, name: \"updated_at\", kind: \"message\", T: Timestamp },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UserPreference {\n return new UserPreference().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UserPreference {\n return new UserPreference().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UserPreference {\n return new UserPreference().fromJsonString(jsonString, options);\n }\n\n static equals(a: UserPreference | PlainMessage | undefined, b: UserPreference | PlainMessage | undefined): boolean {\n return proto3.util.equals(UserPreference, a, b);\n }\n}\n\n","// @generated by protoc-gen-es v1.8.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/organization.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Message, proto3, Timestamp } from \"@bufbuild/protobuf\";\nimport { PaginationRequest, PaginationResponse } from \"./pagination_pb.js\";\nimport { UserStatus } from \"./user_pb.js\";\n\n/**\n * @generated from enum gitpod.v1.OrganizationRole\n */\nexport enum OrganizationRole {\n /**\n * @generated from enum value: ORGANIZATION_ROLE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: ORGANIZATION_ROLE_ADMIN = 1;\n */\n ADMIN = 1,\n\n /**\n * @generated from enum value: ORGANIZATION_ROLE_MEMBER = 2;\n */\n MEMBER = 2,\n}\n// Retrieve enum metadata with: proto3.getEnumType(OrganizationRole)\nproto3.util.setEnumType(OrganizationRole, \"gitpod.v1.OrganizationRole\", [\n { no: 0, name: \"ORGANIZATION_ROLE_UNSPECIFIED\" },\n { no: 1, name: \"ORGANIZATION_ROLE_ADMIN\" },\n { no: 2, name: \"ORGANIZATION_ROLE_MEMBER\" },\n]);\n\n/**\n * @generated from enum gitpod.v1.SSOConfigurationState\n */\nexport enum SSOConfigurationState {\n /**\n * @generated from enum value: SSO_CONFIGURATION_STATE_UNSPECIFIED = 0;\n */\n SSO_CONFIGURATION_STATE_UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: SSO_CONFIGURATION_STATE_INACTIVE = 1;\n */\n SSO_CONFIGURATION_STATE_INACTIVE = 1,\n\n /**\n * @generated from enum value: SSO_CONFIGURATION_STATE_ACTIVE = 2;\n */\n SSO_CONFIGURATION_STATE_ACTIVE = 2,\n}\n// Retrieve enum metadata with: proto3.getEnumType(SSOConfigurationState)\nproto3.util.setEnumType(SSOConfigurationState, \"gitpod.v1.SSOConfigurationState\", [\n { no: 0, name: \"SSO_CONFIGURATION_STATE_UNSPECIFIED\" },\n { no: 1, name: \"SSO_CONFIGURATION_STATE_INACTIVE\" },\n { no: 2, name: \"SSO_CONFIGURATION_STATE_ACTIVE\" },\n]);\n\n/**\n * @generated from message gitpod.v1.UpdateOrganizationRequest\n */\nexport class UpdateOrganizationRequest extends Message {\n /**\n * organization_id is the ID of the organization to update the settings for.\n *\n * @generated from field: string organization_id = 1;\n */\n organizationId = \"\";\n\n /**\n * name is the new name of the organization\n *\n * @generated from field: optional string name = 2;\n */\n name?: string;\n\n /**\n * invite_domains is the domain allowlist of the organization\n *\n * @generated from field: optional gitpod.v1.InviteDomains invite_domains = 3;\n */\n inviteDomains?: InviteDomains;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateOrganizationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"invite_domains\", kind: \"message\", T: InviteDomains, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateOrganizationRequest {\n return new UpdateOrganizationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateOrganizationRequest {\n return new UpdateOrganizationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateOrganizationRequest {\n return new UpdateOrganizationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateOrganizationRequest | PlainMessage | undefined, b: UpdateOrganizationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateOrganizationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateOrganizationResponse\n */\nexport class UpdateOrganizationResponse extends Message {\n /**\n * organization is the updated organization\n *\n * @generated from field: gitpod.v1.Organization organization = 1;\n */\n organization?: Organization;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateOrganizationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"organization\", kind: \"message\", T: Organization },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateOrganizationResponse {\n return new UpdateOrganizationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateOrganizationResponse {\n return new UpdateOrganizationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateOrganizationResponse {\n return new UpdateOrganizationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateOrganizationResponse | PlainMessage | undefined, b: UpdateOrganizationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateOrganizationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateOrganizationRequest\n */\nexport class CreateOrganizationRequest extends Message {\n /**\n * name is the organization name\n *\n * @generated from field: string name = 1;\n */\n name = \"\";\n\n /**\n * join_organization decides whether the Identity issuing this request joins the org on creation\n *\n * @generated from field: bool join_organization = 2;\n */\n joinOrganization = false;\n\n /**\n * Should other Accounts with the same domain be automatically invited to the organization?\n *\n * @generated from field: bool invite_accounts_with_matching_domain = 3;\n */\n inviteAccountsWithMatchingDomain = false;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateOrganizationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"join_organization\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n { no: 3, name: \"invite_accounts_with_matching_domain\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateOrganizationRequest {\n return new CreateOrganizationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateOrganizationRequest {\n return new CreateOrganizationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateOrganizationRequest {\n return new CreateOrganizationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateOrganizationRequest | PlainMessage | undefined, b: CreateOrganizationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateOrganizationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateOrganizationResponse\n */\nexport class CreateOrganizationResponse extends Message {\n /**\n * organization is the created organization\n *\n * @generated from field: gitpod.v1.Organization organization = 1;\n */\n organization?: Organization;\n\n /**\n * member is the member that joined the org on creation. Only set if specified \"join_organization\" is \"true\" in the request.\n *\n * @generated from field: gitpod.v1.OrganizationMember member = 2;\n */\n member?: OrganizationMember;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateOrganizationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"organization\", kind: \"message\", T: Organization },\n { no: 2, name: \"member\", kind: \"message\", T: OrganizationMember },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateOrganizationResponse {\n return new CreateOrganizationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateOrganizationResponse {\n return new CreateOrganizationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateOrganizationResponse {\n return new CreateOrganizationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateOrganizationResponse | PlainMessage | undefined, b: CreateOrganizationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateOrganizationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.JoinOrganizationRequest\n */\nexport class JoinOrganizationRequest extends Message {\n /**\n * @generated from oneof gitpod.v1.JoinOrganizationRequest.join_id\n */\n joinId: {\n /**\n * organization_id is the unique identifier of the Organization to join.\n *\n * @generated from field: string organization_id = 1;\n */\n value: string;\n case: \"organizationId\";\n } | {\n /**\n * invite_id is the unique identifier of the invite to join the organization.\n *\n * @generated from field: string invite_id = 2;\n */\n value: string;\n case: \"inviteId\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.JoinOrganizationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"join_id\" },\n { no: 2, name: \"invite_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"join_id\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): JoinOrganizationRequest {\n return new JoinOrganizationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): JoinOrganizationRequest {\n return new JoinOrganizationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): JoinOrganizationRequest {\n return new JoinOrganizationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: JoinOrganizationRequest | PlainMessage | undefined, b: JoinOrganizationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(JoinOrganizationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.JoinOrganizationResponse\n */\nexport class JoinOrganizationResponse extends Message {\n /**\n * member is the member that was created by joining the organization.\n *\n * @generated from field: gitpod.v1.OrganizationMember member = 1;\n */\n member?: OrganizationMember;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.JoinOrganizationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"member\", kind: \"message\", T: OrganizationMember },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): JoinOrganizationResponse {\n return new JoinOrganizationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): JoinOrganizationResponse {\n return new JoinOrganizationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): JoinOrganizationResponse {\n return new JoinOrganizationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: JoinOrganizationResponse | PlainMessage | undefined, b: JoinOrganizationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(JoinOrganizationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.LeaveOrganizationRequest\n */\nexport class LeaveOrganizationRequest extends Message {\n /**\n * @generated from field: string user_id = 1;\n */\n userId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.LeaveOrganizationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"user_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): LeaveOrganizationRequest {\n return new LeaveOrganizationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): LeaveOrganizationRequest {\n return new LeaveOrganizationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): LeaveOrganizationRequest {\n return new LeaveOrganizationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: LeaveOrganizationRequest | PlainMessage | undefined, b: LeaveOrganizationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(LeaveOrganizationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.LeaveOrganizationResponse\n */\nexport class LeaveOrganizationResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.LeaveOrganizationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): LeaveOrganizationResponse {\n return new LeaveOrganizationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): LeaveOrganizationResponse {\n return new LeaveOrganizationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): LeaveOrganizationResponse {\n return new LeaveOrganizationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: LeaveOrganizationResponse | PlainMessage | undefined, b: LeaveOrganizationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(LeaveOrganizationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetOrganizationRequest\n */\nexport class GetOrganizationRequest extends Message {\n /**\n * organization_id is the unique identifier of the Organization to retreive.\n *\n * @generated from field: string organization_id = 1;\n */\n organizationId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetOrganizationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetOrganizationRequest {\n return new GetOrganizationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetOrganizationRequest {\n return new GetOrganizationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetOrganizationRequest {\n return new GetOrganizationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetOrganizationRequest | PlainMessage | undefined, b: GetOrganizationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetOrganizationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetOrganizationResponse\n */\nexport class GetOrganizationResponse extends Message {\n /**\n * organization is the requested organization\n *\n * @generated from field: gitpod.v1.Organization organization = 1;\n */\n organization?: Organization;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetOrganizationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"organization\", kind: \"message\", T: Organization },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetOrganizationResponse {\n return new GetOrganizationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetOrganizationResponse {\n return new GetOrganizationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetOrganizationResponse {\n return new GetOrganizationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetOrganizationResponse | PlainMessage | undefined, b: GetOrganizationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetOrganizationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListOrganizationsRequest\n */\nexport class ListOrganizationsRequest extends Message {\n /**\n * pagination contains the pagination options for listing organizations\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * scope is the scope of the organizations to list\n *\n * @generated from field: gitpod.v1.ListOrganizationsRequest.Scope scope = 2;\n */\n scope = ListOrganizationsRequest_Scope.UNSPECIFIED;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListOrganizationsRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"scope\", kind: \"enum\", T: proto3.getEnumType(ListOrganizationsRequest_Scope) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListOrganizationsRequest {\n return new ListOrganizationsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListOrganizationsRequest {\n return new ListOrganizationsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListOrganizationsRequest {\n return new ListOrganizationsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListOrganizationsRequest | PlainMessage | undefined, b: ListOrganizationsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListOrganizationsRequest, a, b);\n }\n}\n\n/**\n * @generated from enum gitpod.v1.ListOrganizationsRequest.Scope\n */\nexport enum ListOrganizationsRequest_Scope {\n /**\n * @generated from enum value: SCOPE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: SCOPE_MEMBER = 1;\n */\n MEMBER = 1,\n\n /**\n * @generated from enum value: SCOPE_ALL = 2;\n */\n ALL = 2,\n}\n// Retrieve enum metadata with: proto3.getEnumType(ListOrganizationsRequest_Scope)\nproto3.util.setEnumType(ListOrganizationsRequest_Scope, \"gitpod.v1.ListOrganizationsRequest.Scope\", [\n { no: 0, name: \"SCOPE_UNSPECIFIED\" },\n { no: 1, name: \"SCOPE_MEMBER\" },\n { no: 2, name: \"SCOPE_ALL\" },\n]);\n\n/**\n * @generated from message gitpod.v1.ListOrganizationsResponse\n */\nexport class ListOrganizationsResponse extends Message {\n /**\n * pagination contains the pagination options for listing organizations\n *\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * organizations are the organizations that matched the query\n *\n * @generated from field: repeated gitpod.v1.Organization organizations = 2;\n */\n organizations: Organization[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListOrganizationsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"organizations\", kind: \"message\", T: Organization, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListOrganizationsResponse {\n return new ListOrganizationsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListOrganizationsResponse {\n return new ListOrganizationsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListOrganizationsResponse {\n return new ListOrganizationsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListOrganizationsResponse | PlainMessage | undefined, b: ListOrganizationsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListOrganizationsResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteOrganizationRequest\n */\nexport class DeleteOrganizationRequest extends Message {\n /**\n * organization_id is the ID of the organization to delete\n *\n * @generated from field: string organization_id = 1;\n */\n organizationId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteOrganizationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteOrganizationRequest {\n return new DeleteOrganizationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteOrganizationRequest {\n return new DeleteOrganizationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteOrganizationRequest {\n return new DeleteOrganizationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteOrganizationRequest | PlainMessage | undefined, b: DeleteOrganizationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteOrganizationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteOrganizationResponse\n */\nexport class DeleteOrganizationResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteOrganizationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteOrganizationResponse {\n return new DeleteOrganizationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteOrganizationResponse {\n return new DeleteOrganizationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteOrganizationResponse {\n return new DeleteOrganizationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteOrganizationResponse | PlainMessage | undefined, b: DeleteOrganizationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteOrganizationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListMembersRequest\n */\nexport class ListMembersRequest extends Message {\n /**\n * pagination contains the pagination options for listing members\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * organization_id is the ID of the organization to list members for\n *\n * @generated from field: string organization_id = 2;\n */\n organizationId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListMembersRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListMembersRequest {\n return new ListMembersRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListMembersRequest {\n return new ListMembersRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListMembersRequest {\n return new ListMembersRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListMembersRequest | PlainMessage | undefined, b: ListMembersRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListMembersRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListMembersResponse\n */\nexport class ListMembersResponse extends Message {\n /**\n * pagination contains the pagination options for listing members\n *\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * members are the members of the organization\n *\n * @generated from field: repeated gitpod.v1.OrganizationMember members = 2;\n */\n members: OrganizationMember[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListMembersResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"members\", kind: \"message\", T: OrganizationMember, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListMembersResponse {\n return new ListMembersResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListMembersResponse {\n return new ListMembersResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListMembersResponse {\n return new ListMembersResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListMembersResponse | PlainMessage | undefined, b: ListMembersResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListMembersResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.SetRoleRequest\n */\nexport class SetRoleRequest extends Message {\n /**\n * @generated from field: string organization_id = 1;\n */\n organizationId = \"\";\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId = \"\";\n\n /**\n * @generated from field: gitpod.v1.OrganizationRole role = 3;\n */\n role = OrganizationRole.UNSPECIFIED;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.SetRoleRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"user_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"role\", kind: \"enum\", T: proto3.getEnumType(OrganizationRole) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SetRoleRequest {\n return new SetRoleRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SetRoleRequest {\n return new SetRoleRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SetRoleRequest {\n return new SetRoleRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: SetRoleRequest | PlainMessage | undefined, b: SetRoleRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(SetRoleRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.SetRoleResponse\n */\nexport class SetRoleResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.SetRoleResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SetRoleResponse {\n return new SetRoleResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SetRoleResponse {\n return new SetRoleResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SetRoleResponse {\n return new SetRoleResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: SetRoleResponse | PlainMessage | undefined, b: SetRoleResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(SetRoleResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetOrganizationInviteRequest\n */\nexport class GetOrganizationInviteRequest extends Message {\n /**\n * @generated from field: string organization_id = 1;\n */\n organizationId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetOrganizationInviteRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetOrganizationInviteRequest {\n return new GetOrganizationInviteRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetOrganizationInviteRequest {\n return new GetOrganizationInviteRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetOrganizationInviteRequest {\n return new GetOrganizationInviteRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetOrganizationInviteRequest | PlainMessage | undefined, b: GetOrganizationInviteRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetOrganizationInviteRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetOrganizationInviteResponse\n */\nexport class GetOrganizationInviteResponse extends Message {\n /**\n * @generated from field: gitpod.v1.OrganizationInvite invite = 1;\n */\n invite?: OrganizationInvite;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetOrganizationInviteResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"invite\", kind: \"message\", T: OrganizationInvite },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetOrganizationInviteResponse {\n return new GetOrganizationInviteResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetOrganizationInviteResponse {\n return new GetOrganizationInviteResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetOrganizationInviteResponse {\n return new GetOrganizationInviteResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetOrganizationInviteResponse | PlainMessage | undefined, b: GetOrganizationInviteResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetOrganizationInviteResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.OrganizationInvite\n */\nexport class OrganizationInvite extends Message {\n /**\n * invite_id is the unique identifier of the invite to join the organization.\n * Use JoinOrganization with this ID to join the organization.\n *\n * @generated from field: string invite_id = 1;\n */\n inviteId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.OrganizationInvite\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"invite_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): OrganizationInvite {\n return new OrganizationInvite().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): OrganizationInvite {\n return new OrganizationInvite().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): OrganizationInvite {\n return new OrganizationInvite().fromJsonString(jsonString, options);\n }\n\n static equals(a: OrganizationInvite | PlainMessage | undefined, b: OrganizationInvite | PlainMessage | undefined): boolean {\n return proto3.util.equals(OrganizationInvite, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateOrganizationInviteRequest\n */\nexport class CreateOrganizationInviteRequest extends Message {\n /**\n * @generated from field: string organization_id = 1;\n */\n organizationId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateOrganizationInviteRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateOrganizationInviteRequest {\n return new CreateOrganizationInviteRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateOrganizationInviteRequest {\n return new CreateOrganizationInviteRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateOrganizationInviteRequest {\n return new CreateOrganizationInviteRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateOrganizationInviteRequest | PlainMessage | undefined, b: CreateOrganizationInviteRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateOrganizationInviteRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateOrganizationInviteResponse\n */\nexport class CreateOrganizationInviteResponse extends Message {\n /**\n * @generated from field: gitpod.v1.OrganizationInvite invite = 1;\n */\n invite?: OrganizationInvite;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateOrganizationInviteResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"invite\", kind: \"message\", T: OrganizationInvite },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateOrganizationInviteResponse {\n return new CreateOrganizationInviteResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateOrganizationInviteResponse {\n return new CreateOrganizationInviteResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateOrganizationInviteResponse {\n return new CreateOrganizationInviteResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateOrganizationInviteResponse | PlainMessage | undefined, b: CreateOrganizationInviteResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateOrganizationInviteResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetOrganizationInviteSummaryRequest\n */\nexport class GetOrganizationInviteSummaryRequest extends Message {\n /**\n * @generated from field: string invite_id = 1;\n */\n inviteId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetOrganizationInviteSummaryRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"invite_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetOrganizationInviteSummaryRequest {\n return new GetOrganizationInviteSummaryRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetOrganizationInviteSummaryRequest {\n return new GetOrganizationInviteSummaryRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetOrganizationInviteSummaryRequest {\n return new GetOrganizationInviteSummaryRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetOrganizationInviteSummaryRequest | PlainMessage | undefined, b: GetOrganizationInviteSummaryRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetOrganizationInviteSummaryRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetOrganizationInviteSummaryResponse\n */\nexport class GetOrganizationInviteSummaryResponse extends Message {\n /**\n * @generated from field: string organization_id = 1;\n */\n organizationId = \"\";\n\n /**\n * @generated from field: string organization_name = 2;\n */\n organizationName = \"\";\n\n /**\n * @generated from field: int32 organization_member_count = 3;\n */\n organizationMemberCount = 0;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetOrganizationInviteSummaryResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"organization_name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"organization_member_count\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetOrganizationInviteSummaryResponse {\n return new GetOrganizationInviteSummaryResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetOrganizationInviteSummaryResponse {\n return new GetOrganizationInviteSummaryResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetOrganizationInviteSummaryResponse {\n return new GetOrganizationInviteSummaryResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetOrganizationInviteSummaryResponse | PlainMessage | undefined, b: GetOrganizationInviteSummaryResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetOrganizationInviteSummaryResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.Organization\n */\nexport class Organization extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: string name = 2;\n */\n name = \"\";\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 3;\n */\n createdAt?: Timestamp;\n\n /**\n * @generated from field: google.protobuf.Timestamp updated_at = 4;\n */\n updatedAt?: Timestamp;\n\n /**\n * @generated from field: gitpod.v1.InviteDomains invite_domains = 5;\n */\n inviteDomains?: InviteDomains;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.Organization\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"created_at\", kind: \"message\", T: Timestamp },\n { no: 4, name: \"updated_at\", kind: \"message\", T: Timestamp },\n { no: 5, name: \"invite_domains\", kind: \"message\", T: InviteDomains },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): Organization {\n return new Organization().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): Organization {\n return new Organization().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): Organization {\n return new Organization().fromJsonString(jsonString, options);\n }\n\n static equals(a: Organization | PlainMessage | undefined, b: Organization | PlainMessage | undefined): boolean {\n return proto3.util.equals(Organization, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.OrganizationMember\n */\nexport class OrganizationMember extends Message {\n /**\n * @generated from field: string user_id = 1;\n */\n userId = \"\";\n\n /**\n * @generated from field: gitpod.v1.OrganizationRole role = 2;\n */\n role = OrganizationRole.UNSPECIFIED;\n\n /**\n * @generated from field: google.protobuf.Timestamp member_since = 3;\n */\n memberSince?: Timestamp;\n\n /**\n * @generated from field: string avatar_url = 4;\n */\n avatarUrl = \"\";\n\n /**\n * @generated from field: string full_name = 5;\n */\n fullName = \"\";\n\n /**\n * @generated from field: string email = 6;\n */\n email = \"\";\n\n /**\n * @generated from field: gitpod.v1.UserStatus status = 7;\n */\n status = UserStatus.UNSPECIFIED;\n\n /**\n * login_provider is the login provider the user uses to sign in\n *\n * @generated from field: string login_provider = 8;\n */\n loginProvider = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.OrganizationMember\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"user_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"role\", kind: \"enum\", T: proto3.getEnumType(OrganizationRole) },\n { no: 3, name: \"member_since\", kind: \"message\", T: Timestamp },\n { no: 4, name: \"avatar_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"full_name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 6, name: \"email\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 7, name: \"status\", kind: \"enum\", T: proto3.getEnumType(UserStatus) },\n { no: 8, name: \"login_provider\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): OrganizationMember {\n return new OrganizationMember().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): OrganizationMember {\n return new OrganizationMember().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): OrganizationMember {\n return new OrganizationMember().fromJsonString(jsonString, options);\n }\n\n static equals(a: OrganizationMember | PlainMessage | undefined, b: OrganizationMember | PlainMessage | undefined): boolean {\n return proto3.util.equals(OrganizationMember, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.InviteDomains\n */\nexport class InviteDomains extends Message {\n /**\n * domains is the list of domains that are allowed to join the organization\n *\n * @generated from field: repeated string domains = 1;\n */\n domains: string[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.InviteDomains\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"domains\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): InviteDomains {\n return new InviteDomains().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): InviteDomains {\n return new InviteDomains().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): InviteDomains {\n return new InviteDomains().fromJsonString(jsonString, options);\n }\n\n static equals(a: InviteDomains | PlainMessage | undefined, b: InviteDomains | PlainMessage | undefined): boolean {\n return proto3.util.equals(InviteDomains, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateSSOConfigurationRequest\n */\nexport class CreateSSOConfigurationRequest extends Message {\n /**\n * @generated from field: string organization_id = 1;\n */\n organizationId = \"\";\n\n /**\n * client_id is the client ID of the OIDC application set on the IdP\n *\n * @generated from field: string client_id = 2;\n */\n clientId = \"\";\n\n /**\n * client_secret is the client secret of the OIDC application set on the IdP\n *\n * @generated from field: string client_secret = 3;\n */\n clientSecret = \"\";\n\n /**\n * issuer_url is the URL of the IdP issuer\n *\n * @generated from field: string issuer_url = 4;\n */\n issuerUrl = \"\";\n\n /**\n * email_domain is the domain that is allowed to sign in to the organization\n *\n * @generated from field: string email_domain = 5;\n */\n emailDomain = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateSSOConfigurationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"client_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"client_secret\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"issuer_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"email_domain\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateSSOConfigurationRequest {\n return new CreateSSOConfigurationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateSSOConfigurationRequest {\n return new CreateSSOConfigurationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateSSOConfigurationRequest {\n return new CreateSSOConfigurationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateSSOConfigurationRequest | PlainMessage | undefined, b: CreateSSOConfigurationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateSSOConfigurationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateSSOConfigurationResponse\n */\nexport class CreateSSOConfigurationResponse extends Message {\n /**\n * sso_configuration is the created SSO configuration\n *\n * @generated from field: gitpod.v1.SSOConfiguration sso_configuration = 1;\n */\n ssoConfiguration?: SSOConfiguration;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateSSOConfigurationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"sso_configuration\", kind: \"message\", T: SSOConfiguration },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateSSOConfigurationResponse {\n return new CreateSSOConfigurationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateSSOConfigurationResponse {\n return new CreateSSOConfigurationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateSSOConfigurationResponse {\n return new CreateSSOConfigurationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateSSOConfigurationResponse | PlainMessage | undefined, b: CreateSSOConfigurationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateSSOConfigurationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.SSOConfiguration\n */\nexport class SSOConfiguration extends Message {\n /**\n * id is the unique identifier of the SSO configuration\n *\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: string organization_id = 2;\n */\n organizationId = \"\";\n\n /**\n * client_id is the client ID of the OIDC application set on the IdP\n *\n * @generated from field: string client_id = 3;\n */\n clientId = \"\";\n\n /**\n * issuer_url is the URL of the IdP issuer\n *\n * @generated from field: string issuer_url = 4;\n */\n issuerUrl = \"\";\n\n /**\n * state is the state of the SSO configuration\n *\n * @generated from field: gitpod.v1.SSOConfigurationState state = 5;\n */\n state = SSOConfigurationState.SSO_CONFIGURATION_STATE_UNSPECIFIED;\n\n /**\n * claims are key/value pairs that defines a mapping of claims issued by the IdP.\n *\n * @generated from field: map claims = 6;\n */\n claims: { [key: string]: string } = {};\n\n /**\n * @generated from field: string email_domain = 7;\n */\n emailDomain = \"\";\n\n /**\n * provider_type defines the type of the SSO configuration\n *\n * @generated from field: gitpod.v1.SSOConfiguration.ProviderType provider_type = 8;\n */\n providerType = SSOConfiguration_ProviderType.UNSPECIFIED;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.SSOConfiguration\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"client_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"issuer_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"state\", kind: \"enum\", T: proto3.getEnumType(SSOConfigurationState) },\n { no: 6, name: \"claims\", kind: \"map\", K: 9 /* ScalarType.STRING */, V: {kind: \"scalar\", T: 9 /* ScalarType.STRING */} },\n { no: 7, name: \"email_domain\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 8, name: \"provider_type\", kind: \"enum\", T: proto3.getEnumType(SSOConfiguration_ProviderType) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SSOConfiguration {\n return new SSOConfiguration().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SSOConfiguration {\n return new SSOConfiguration().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SSOConfiguration {\n return new SSOConfiguration().fromJsonString(jsonString, options);\n }\n\n static equals(a: SSOConfiguration | PlainMessage | undefined, b: SSOConfiguration | PlainMessage | undefined): boolean {\n return proto3.util.equals(SSOConfiguration, a, b);\n }\n}\n\n/**\n * @generated from enum gitpod.v1.SSOConfiguration.ProviderType\n */\nexport enum SSOConfiguration_ProviderType {\n /**\n * @generated from enum value: PROVIDER_TYPE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: PROVIDER_TYPE_BUILTIN = 1;\n */\n BUILTIN = 1,\n\n /**\n * @generated from enum value: PROVIDER_TYPE_CUSTOM = 2;\n */\n CUSTOM = 2,\n}\n// Retrieve enum metadata with: proto3.getEnumType(SSOConfiguration_ProviderType)\nproto3.util.setEnumType(SSOConfiguration_ProviderType, \"gitpod.v1.SSOConfiguration.ProviderType\", [\n { no: 0, name: \"PROVIDER_TYPE_UNSPECIFIED\" },\n { no: 1, name: \"PROVIDER_TYPE_BUILTIN\" },\n { no: 2, name: \"PROVIDER_TYPE_CUSTOM\" },\n]);\n\n/**\n * @generated from message gitpod.v1.GetSSOConfigurationRequest\n */\nexport class GetSSOConfigurationRequest extends Message {\n /**\n * sso_configuration_id is the ID of the SSO configuration to get\n *\n * @generated from field: string sso_configuration_id = 1;\n */\n ssoConfigurationId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetSSOConfigurationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"sso_configuration_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetSSOConfigurationRequest {\n return new GetSSOConfigurationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetSSOConfigurationRequest {\n return new GetSSOConfigurationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetSSOConfigurationRequest {\n return new GetSSOConfigurationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetSSOConfigurationRequest | PlainMessage | undefined, b: GetSSOConfigurationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetSSOConfigurationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetSSOConfigurationResponse\n */\nexport class GetSSOConfigurationResponse extends Message {\n /**\n * sso_configuration is the SSO configuration identified by the ID\n *\n * @generated from field: gitpod.v1.SSOConfiguration sso_configuration = 1;\n */\n ssoConfiguration?: SSOConfiguration;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetSSOConfigurationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"sso_configuration\", kind: \"message\", T: SSOConfiguration },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetSSOConfigurationResponse {\n return new GetSSOConfigurationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetSSOConfigurationResponse {\n return new GetSSOConfigurationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetSSOConfigurationResponse {\n return new GetSSOConfigurationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetSSOConfigurationResponse | PlainMessage | undefined, b: GetSSOConfigurationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetSSOConfigurationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListSSOConfigurationsRequest\n */\nexport class ListSSOConfigurationsRequest extends Message {\n /**\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * organization_id is the ID of the organization to list SSO configurations for.\n *\n * @generated from field: string organization_id = 2;\n */\n organizationId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListSSOConfigurationsRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListSSOConfigurationsRequest {\n return new ListSSOConfigurationsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListSSOConfigurationsRequest {\n return new ListSSOConfigurationsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListSSOConfigurationsRequest {\n return new ListSSOConfigurationsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListSSOConfigurationsRequest | PlainMessage | undefined, b: ListSSOConfigurationsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListSSOConfigurationsRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListSSOConfigurationsResponse\n */\nexport class ListSSOConfigurationsResponse extends Message {\n /**\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * sso_configurations are the SSO configurations for the organization\n *\n * @generated from field: repeated gitpod.v1.SSOConfiguration sso_configurations = 2;\n */\n ssoConfigurations: SSOConfiguration[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListSSOConfigurationsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"sso_configurations\", kind: \"message\", T: SSOConfiguration, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListSSOConfigurationsResponse {\n return new ListSSOConfigurationsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListSSOConfigurationsResponse {\n return new ListSSOConfigurationsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListSSOConfigurationsResponse {\n return new ListSSOConfigurationsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListSSOConfigurationsResponse | PlainMessage | undefined, b: ListSSOConfigurationsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListSSOConfigurationsResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateSSOConfigurationRequest\n */\nexport class UpdateSSOConfigurationRequest extends Message {\n /**\n * sso_configuration_id is the ID of the SSO configuration to update\n *\n * @generated from field: string sso_configuration_id = 1;\n */\n ssoConfigurationId = \"\";\n\n /**\n * client_id is the client ID of the SSO provider\n *\n * @generated from field: optional string client_id = 2;\n */\n clientId?: string;\n\n /**\n * client_secret is the client secret of the SSO provider\n *\n * @generated from field: optional string client_secret = 3;\n */\n clientSecret?: string;\n\n /**\n * issuer_url is the URL of the IdP issuer\n *\n * @generated from field: optional string issuer_url = 4;\n */\n issuerUrl?: string;\n\n /**\n * state is the state of the SSO configuration\n *\n * @generated from field: optional gitpod.v1.SSOConfigurationState state = 5;\n */\n state?: SSOConfigurationState;\n\n /**\n * claims are key/value pairs that defines a mapping of claims issued by the IdP.\n *\n * @generated from field: map claims = 6;\n */\n claims: { [key: string]: string } = {};\n\n /**\n * @generated from field: optional string email_domain = 7;\n */\n emailDomain?: string;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateSSOConfigurationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"sso_configuration_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"client_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"client_secret\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 4, name: \"issuer_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 5, name: \"state\", kind: \"enum\", T: proto3.getEnumType(SSOConfigurationState), opt: true },\n { no: 6, name: \"claims\", kind: \"map\", K: 9 /* ScalarType.STRING */, V: {kind: \"scalar\", T: 9 /* ScalarType.STRING */} },\n { no: 7, name: \"email_domain\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateSSOConfigurationRequest {\n return new UpdateSSOConfigurationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateSSOConfigurationRequest {\n return new UpdateSSOConfigurationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateSSOConfigurationRequest {\n return new UpdateSSOConfigurationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateSSOConfigurationRequest | PlainMessage | undefined, b: UpdateSSOConfigurationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateSSOConfigurationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateSSOConfigurationResponse\n */\nexport class UpdateSSOConfigurationResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateSSOConfigurationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateSSOConfigurationResponse {\n return new UpdateSSOConfigurationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateSSOConfigurationResponse {\n return new UpdateSSOConfigurationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateSSOConfigurationResponse {\n return new UpdateSSOConfigurationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateSSOConfigurationResponse | PlainMessage | undefined, b: UpdateSSOConfigurationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateSSOConfigurationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteSSOConfigurationRequest\n */\nexport class DeleteSSOConfigurationRequest extends Message {\n /**\n * @generated from field: string sso_configuration_id = 1;\n */\n ssoConfigurationId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteSSOConfigurationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"sso_configuration_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteSSOConfigurationRequest {\n return new DeleteSSOConfigurationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteSSOConfigurationRequest {\n return new DeleteSSOConfigurationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteSSOConfigurationRequest {\n return new DeleteSSOConfigurationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteSSOConfigurationRequest | PlainMessage | undefined, b: DeleteSSOConfigurationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteSSOConfigurationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteSSOConfigurationResponse\n */\nexport class DeleteSSOConfigurationResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteSSOConfigurationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteSSOConfigurationResponse {\n return new DeleteSSOConfigurationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteSSOConfigurationResponse {\n return new DeleteSSOConfigurationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteSSOConfigurationResponse {\n return new DeleteSSOConfigurationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteSSOConfigurationResponse | PlainMessage | undefined, b: DeleteSSOConfigurationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteSSOConfigurationResponse, a, b);\n }\n}\n\n","// @generated by protoc-gen-es v1.8.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/account.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Message, proto3, Timestamp } from \"@bufbuild/protobuf\";\nimport { OrganizationRole } from \"./organization_pb.js\";\nimport { PaginationRequest, PaginationResponse } from \"./pagination_pb.js\";\n\n/**\n * @generated from message gitpod.v1.GetAccountRequest\n */\nexport class GetAccountRequest extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetAccountRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetAccountRequest {\n return new GetAccountRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetAccountRequest {\n return new GetAccountRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetAccountRequest {\n return new GetAccountRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetAccountRequest | PlainMessage | undefined, b: GetAccountRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetAccountRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetAccountResponse\n */\nexport class GetAccountResponse extends Message {\n /**\n * @generated from field: gitpod.v1.Account account = 1;\n */\n account?: Account;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetAccountResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"account\", kind: \"message\", T: Account },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetAccountResponse {\n return new GetAccountResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetAccountResponse {\n return new GetAccountResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetAccountResponse {\n return new GetAccountResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetAccountResponse | PlainMessage | undefined, b: GetAccountResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetAccountResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteAccountRequest\n */\nexport class DeleteAccountRequest extends Message {\n /**\n * @generated from field: string account_id = 1;\n */\n accountId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteAccountRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"account_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteAccountRequest {\n return new DeleteAccountRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteAccountRequest {\n return new DeleteAccountRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteAccountRequest {\n return new DeleteAccountRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteAccountRequest | PlainMessage | undefined, b: DeleteAccountRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteAccountRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteAccountResponse\n */\nexport class DeleteAccountResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteAccountResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteAccountResponse {\n return new DeleteAccountResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteAccountResponse {\n return new DeleteAccountResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteAccountResponse {\n return new DeleteAccountResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteAccountResponse | PlainMessage | undefined, b: DeleteAccountResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteAccountResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.Account\n */\nexport class Account extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: string name = 2;\n */\n name = \"\";\n\n /**\n * @generated from field: string avatar_url = 3;\n */\n avatarUrl = \"\";\n\n /**\n * @generated from field: string email = 4;\n */\n email = \"\";\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 5;\n */\n createdAt?: Timestamp;\n\n /**\n * @generated from field: google.protobuf.Timestamp updated_at = 6;\n */\n updatedAt?: Timestamp;\n\n /**\n * @generated from field: repeated gitpod.v1.AccountMembership memberships = 7;\n */\n memberships: AccountMembership[] = [];\n\n /**\n * @generated from field: repeated gitpod.v1.JoinableOrganization joinables = 8;\n */\n joinables: JoinableOrganization[] = [];\n\n /**\n * public_email_provider is true if the email for the Account matches a known public email provider\n *\n * @generated from field: bool public_email_provider = 9;\n */\n publicEmailProvider = false;\n\n /**\n * organization_id is the ID of the organization the account is owned by if it's created through custom SSO\n *\n * @generated from field: optional string organization_id = 10;\n */\n organizationId?: string;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.Account\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"avatar_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"email\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"created_at\", kind: \"message\", T: Timestamp },\n { no: 6, name: \"updated_at\", kind: \"message\", T: Timestamp },\n { no: 7, name: \"memberships\", kind: \"message\", T: AccountMembership, repeated: true },\n { no: 8, name: \"joinables\", kind: \"message\", T: JoinableOrganization, repeated: true },\n { no: 9, name: \"public_email_provider\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n { no: 10, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): Account {\n return new Account().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): Account {\n return new Account().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): Account {\n return new Account().fromJsonString(jsonString, options);\n }\n\n static equals(a: Account | PlainMessage | undefined, b: Account | PlainMessage | undefined): boolean {\n return proto3.util.equals(Account, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AccountMembership\n */\nexport class AccountMembership extends Message {\n /**\n * user_id is the ID the user has in the organization\n *\n * @generated from field: string user_id = 1;\n */\n userId = \"\";\n\n /**\n * user_role is the role the user has in the organization\n *\n * @generated from field: gitpod.v1.OrganizationRole user_role = 2;\n */\n userRole = OrganizationRole.UNSPECIFIED;\n\n /**\n * organization_id is the id of the organization the user is a member of\n *\n * @generated from field: string organization_id = 3;\n */\n organizationId = \"\";\n\n /**\n * organization_name is the name of the organization the user is a member of\n *\n * @generated from field: string organization_name = 4;\n */\n organizationName = \"\";\n\n /**\n * organization_name is the member count of the organization the user is a member of\n *\n * @generated from field: int32 organization_member_count = 5;\n */\n organizationMemberCount = 0;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.AccountMembership\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"user_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"user_role\", kind: \"enum\", T: proto3.getEnumType(OrganizationRole) },\n { no: 3, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"organization_name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"organization_member_count\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AccountMembership {\n return new AccountMembership().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AccountMembership {\n return new AccountMembership().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AccountMembership {\n return new AccountMembership().fromJsonString(jsonString, options);\n }\n\n static equals(a: AccountMembership | PlainMessage | undefined, b: AccountMembership | PlainMessage | undefined): boolean {\n return proto3.util.equals(AccountMembership, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.JoinableOrganization\n */\nexport class JoinableOrganization extends Message {\n /**\n * organization_id is the id of the organization the user can join\n *\n * @generated from field: string organization_id = 1;\n */\n organizationId = \"\";\n\n /**\n * organization_name is the name of the organization the user can join\n *\n * @generated from field: string organization_name = 2;\n */\n organizationName = \"\";\n\n /**\n * organization_member_count is the member count of the organization the user can join\n *\n * @generated from field: int32 organization_member_count = 3;\n */\n organizationMemberCount = 0;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.JoinableOrganization\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"organization_name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"organization_member_count\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): JoinableOrganization {\n return new JoinableOrganization().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): JoinableOrganization {\n return new JoinableOrganization().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): JoinableOrganization {\n return new JoinableOrganization().fromJsonString(jsonString, options);\n }\n\n static equals(a: JoinableOrganization | PlainMessage | undefined, b: JoinableOrganization | PlainMessage | undefined): boolean {\n return proto3.util.equals(JoinableOrganization, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetSSOLoginURLRequest\n */\nexport class GetSSOLoginURLRequest extends Message {\n /**\n * email is the email the user wants to login with\n *\n * @generated from field: string email = 1;\n */\n email = \"\";\n\n /**\n * return_to is the URL the user will be redirected to after login\n *\n * @generated from field: optional string return_to = 2;\n */\n returnTo?: string;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetSSOLoginURLRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"email\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"return_to\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetSSOLoginURLRequest {\n return new GetSSOLoginURLRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetSSOLoginURLRequest {\n return new GetSSOLoginURLRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetSSOLoginURLRequest {\n return new GetSSOLoginURLRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetSSOLoginURLRequest | PlainMessage | undefined, b: GetSSOLoginURLRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetSSOLoginURLRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetSSOLoginURLResponse\n */\nexport class GetSSOLoginURLResponse extends Message {\n /**\n * login_url is the URL to redirect the user to for SSO login\n *\n * @generated from field: string login_url = 1;\n */\n loginUrl = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetSSOLoginURLResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"login_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetSSOLoginURLResponse {\n return new GetSSOLoginURLResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetSSOLoginURLResponse {\n return new GetSSOLoginURLResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetSSOLoginURLResponse {\n return new GetSSOLoginURLResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetSSOLoginURLResponse | PlainMessage | undefined, b: GetSSOLoginURLResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetSSOLoginURLResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListLoginProvidersRequest\n */\nexport class ListLoginProvidersRequest extends Message {\n /**\n * pagination contains the pagination options for listing login methods\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * filter contains the filter options for listing login methods\n *\n * @generated from field: gitpod.v1.ListLoginProvidersRequest.Filter filter = 2;\n */\n filter?: ListLoginProvidersRequest_Filter;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListLoginProvidersRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"filter\", kind: \"message\", T: ListLoginProvidersRequest_Filter },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListLoginProvidersRequest {\n return new ListLoginProvidersRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListLoginProvidersRequest {\n return new ListLoginProvidersRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListLoginProvidersRequest {\n return new ListLoginProvidersRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListLoginProvidersRequest | PlainMessage | undefined, b: ListLoginProvidersRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListLoginProvidersRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListLoginProvidersRequest.Filter\n */\nexport class ListLoginProvidersRequest_Filter extends Message {\n /**\n * invite_id is the ID of the invite URL the user wants to login with\n *\n * @generated from field: string invite_id = 1;\n */\n inviteId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListLoginProvidersRequest.Filter\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"invite_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListLoginProvidersRequest_Filter {\n return new ListLoginProvidersRequest_Filter().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListLoginProvidersRequest_Filter {\n return new ListLoginProvidersRequest_Filter().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListLoginProvidersRequest_Filter {\n return new ListLoginProvidersRequest_Filter().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListLoginProvidersRequest_Filter | PlainMessage | undefined, b: ListLoginProvidersRequest_Filter | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListLoginProvidersRequest_Filter, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListLoginProvidersResponse\n */\nexport class ListLoginProvidersResponse extends Message {\n /**\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * @generated from field: repeated gitpod.v1.LoginProvider login_providers = 2;\n */\n loginProviders: LoginProvider[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListLoginProvidersResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"login_providers\", kind: \"message\", T: LoginProvider, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListLoginProvidersResponse {\n return new ListLoginProvidersResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListLoginProvidersResponse {\n return new ListLoginProvidersResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListLoginProvidersResponse {\n return new ListLoginProvidersResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListLoginProvidersResponse | PlainMessage | undefined, b: ListLoginProvidersResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListLoginProvidersResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.LoginProvider\n */\nexport class LoginProvider extends Message {\n /**\n * login_url is the URL to redirect the browser agent to for login\n *\n * @generated from field: string login_url = 1;\n */\n loginUrl = \"\";\n\n /**\n * provider is the provider used by this login method, e.g. \"github\", \"google\", \"custom\"\n *\n * @generated from field: string provider = 2;\n */\n provider = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.LoginProvider\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"login_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"provider\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): LoginProvider {\n return new LoginProvider().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): LoginProvider {\n return new LoginProvider().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): LoginProvider {\n return new LoginProvider().fromJsonString(jsonString, options);\n }\n\n static equals(a: LoginProvider | PlainMessage | undefined, b: LoginProvider | PlainMessage | undefined): boolean {\n return proto3.util.equals(LoginProvider, a, b);\n }\n}\n\n","// @generated by protoc-gen-connect-es v1.4.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/account.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { DeleteAccountRequest, DeleteAccountResponse, GetAccountRequest, GetAccountResponse, GetSSOLoginURLRequest, GetSSOLoginURLResponse, ListLoginProvidersRequest, ListLoginProvidersResponse } from \"./account_pb.js\";\nimport { MethodIdempotency, MethodKind } from \"@bufbuild/protobuf\";\n\n/**\n * @generated from service gitpod.v1.AccountService\n */\nexport const AccountService = {\n typeName: \"gitpod.v1.AccountService\",\n methods: {\n /**\n * GetAccount retrieves a single Account.\n *\n * @generated from rpc gitpod.v1.AccountService.GetAccount\n */\n getAccount: {\n name: \"GetAccount\",\n I: GetAccountRequest,\n O: GetAccountResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * DeleteAccount deletes an Account.\n * To Delete an Account, the Account must not be an active member of any Organization.\n *\n * @generated from rpc gitpod.v1.AccountService.DeleteAccount\n */\n deleteAccount: {\n name: \"DeleteAccount\",\n I: DeleteAccountRequest,\n O: DeleteAccountResponse,\n kind: MethodKind.Unary,\n },\n /**\n * GetSSOLoginURL returns the URL to redirect the user to for SSO login.\n *\n * @generated from rpc gitpod.v1.AccountService.GetSSOLoginURL\n */\n getSSOLoginURL: {\n name: \"GetSSOLoginURL\",\n I: GetSSOLoginURLRequest,\n O: GetSSOLoginURLResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * ListLoginProviders returns the list of login providers matching the provided filters.\n *\n * @generated from rpc gitpod.v1.AccountService.ListLoginProviders\n */\n listLoginProviders: {\n name: \"ListLoginProviders\",\n I: ListLoginProvidersRequest,\n O: ListLoginProvidersResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n }\n} as const;\n\n","// @generated by protoc-gen-connect-es v1.4.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/user.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { CreatePersonalAccessTokenRequest, CreatePersonalAccessTokenResponse, DeletePersonalAccessTokenRequest, DeletePersonalAccessTokenResponse, DeletePreferenceRequest, DeletePreferenceResponse, GetAuthenticatedUserRequest, GetAuthenticatedUserResponse, GetPersonalAccessTokenRequest, GetPersonalAccessTokenResponse, GetPreferenceRequest, GetPreferenceResponse, ListPersonalAccessTokensRequest, ListPersonalAccessTokensResponse, ListPreferencesRequest, ListPreferencesResponse, SetPreferenceRequest, SetPreferenceResponse, SetSuspendedRequest, SetSuspendedResponse } from \"./user_pb.js\";\nimport { MethodIdempotency, MethodKind } from \"@bufbuild/protobuf\";\n\n/**\n * @generated from service gitpod.v1.UserService\n */\nexport const UserService = {\n typeName: \"gitpod.v1.UserService\",\n methods: {\n /**\n * GetAuthenticatedUser allows to retrieve the current user.\n *\n * @generated from rpc gitpod.v1.UserService.GetAuthenticatedUser\n */\n getAuthenticatedUser: {\n name: \"GetAuthenticatedUser\",\n I: GetAuthenticatedUserRequest,\n O: GetAuthenticatedUserResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * SetSuspended sets the suspended state of the user.\n *\n * @generated from rpc gitpod.v1.UserService.SetSuspended\n */\n setSuspended: {\n name: \"SetSuspended\",\n I: SetSuspendedRequest,\n O: SetSuspendedResponse,\n kind: MethodKind.Unary,\n },\n /**\n * @generated from rpc gitpod.v1.UserService.CreatePersonalAccessToken\n */\n createPersonalAccessToken: {\n name: \"CreatePersonalAccessToken\",\n I: CreatePersonalAccessTokenRequest,\n O: CreatePersonalAccessTokenResponse,\n kind: MethodKind.Unary,\n },\n /**\n * @generated from rpc gitpod.v1.UserService.GetPersonalAccessToken\n */\n getPersonalAccessToken: {\n name: \"GetPersonalAccessToken\",\n I: GetPersonalAccessTokenRequest,\n O: GetPersonalAccessTokenResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * @generated from rpc gitpod.v1.UserService.ListPersonalAccessTokens\n */\n listPersonalAccessTokens: {\n name: \"ListPersonalAccessTokens\",\n I: ListPersonalAccessTokensRequest,\n O: ListPersonalAccessTokensResponse,\n kind: MethodKind.Unary,\n },\n /**\n * @generated from rpc gitpod.v1.UserService.DeletePersonalAccessToken\n */\n deletePersonalAccessToken: {\n name: \"DeletePersonalAccessToken\",\n I: DeletePersonalAccessTokenRequest,\n O: DeletePersonalAccessTokenResponse,\n kind: MethodKind.Unary,\n },\n /**\n * SetPreference upserts user preference settings for the user\n *\n * @generated from rpc gitpod.v1.UserService.SetPreference\n */\n setPreference: {\n name: \"SetPreference\",\n I: SetPreferenceRequest,\n O: SetPreferenceResponse,\n kind: MethodKind.Unary,\n },\n /**\n * @generated from rpc gitpod.v1.UserService.GetPreference\n */\n getPreference: {\n name: \"GetPreference\",\n I: GetPreferenceRequest,\n O: GetPreferenceResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * ListPreferences returns the list of user preferences without any prefix scans\n *\n * @generated from rpc gitpod.v1.UserService.ListPreferences\n */\n listPreferences: {\n name: \"ListPreferences\",\n I: ListPreferencesRequest,\n O: ListPreferencesResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * @generated from rpc gitpod.v1.UserService.DeletePreference\n */\n deletePreference: {\n name: \"DeletePreference\",\n I: DeletePreferenceRequest,\n O: DeletePreferenceResponse,\n kind: MethodKind.Unary,\n },\n }\n} as const;\n\n","// @generated by protoc-gen-es v1.8.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/runner_configuration.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Message, proto3, Timestamp } from \"@bufbuild/protobuf\";\nimport { PaginationRequest, PaginationResponse } from \"./pagination_pb.js\";\n\n/**\n * @generated from enum gitpod.v1.HostAuthenticationTokenSource\n */\nexport enum HostAuthenticationTokenSource {\n /**\n * @generated from enum value: HOST_AUTHENTICATION_TOKEN_SOURCE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: HOST_AUTHENTICATION_TOKEN_SOURCE_OAUTH = 1;\n */\n OAUTH = 1,\n\n /**\n * @generated from enum value: HOST_AUTHENTICATION_TOKEN_SOURCE_PAT = 2;\n */\n PAT = 2,\n}\n// Retrieve enum metadata with: proto3.getEnumType(HostAuthenticationTokenSource)\nproto3.util.setEnumType(HostAuthenticationTokenSource, \"gitpod.v1.HostAuthenticationTokenSource\", [\n { no: 0, name: \"HOST_AUTHENTICATION_TOKEN_SOURCE_UNSPECIFIED\" },\n { no: 1, name: \"HOST_AUTHENTICATION_TOKEN_SOURCE_OAUTH\" },\n { no: 2, name: \"HOST_AUTHENTICATION_TOKEN_SOURCE_PAT\" },\n]);\n\n/**\n * @generated from message gitpod.v1.CreateHostAuthenticationTokenRequest\n */\nexport class CreateHostAuthenticationTokenRequest extends Message {\n /**\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId = \"\";\n\n /**\n * @generated from field: string host = 3;\n */\n host = \"\";\n\n /**\n * @generated from field: string token = 4;\n */\n token = \"\";\n\n /**\n * @generated from field: gitpod.v1.HostAuthenticationTokenSource source = 5;\n */\n source = HostAuthenticationTokenSource.UNSPECIFIED;\n\n /**\n * @generated from field: google.protobuf.Timestamp expires_at = 6;\n */\n expiresAt?: Timestamp;\n\n /**\n * @generated from field: string refresh_token = 7;\n */\n refreshToken = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateHostAuthenticationTokenRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"user_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"host\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"token\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"source\", kind: \"enum\", T: proto3.getEnumType(HostAuthenticationTokenSource) },\n { no: 6, name: \"expires_at\", kind: \"message\", T: Timestamp },\n { no: 7, name: \"refresh_token\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateHostAuthenticationTokenRequest {\n return new CreateHostAuthenticationTokenRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateHostAuthenticationTokenRequest {\n return new CreateHostAuthenticationTokenRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateHostAuthenticationTokenRequest {\n return new CreateHostAuthenticationTokenRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateHostAuthenticationTokenRequest | PlainMessage | undefined, b: CreateHostAuthenticationTokenRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateHostAuthenticationTokenRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateHostAuthenticationTokenResponse\n */\nexport class CreateHostAuthenticationTokenResponse extends Message {\n /**\n * @generated from field: gitpod.v1.HostAuthenticationToken token = 1;\n */\n token?: HostAuthenticationToken;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateHostAuthenticationTokenResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"token\", kind: \"message\", T: HostAuthenticationToken },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateHostAuthenticationTokenResponse {\n return new CreateHostAuthenticationTokenResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateHostAuthenticationTokenResponse {\n return new CreateHostAuthenticationTokenResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateHostAuthenticationTokenResponse {\n return new CreateHostAuthenticationTokenResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateHostAuthenticationTokenResponse | PlainMessage | undefined, b: CreateHostAuthenticationTokenResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateHostAuthenticationTokenResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.HostAuthenticationToken\n */\nexport class HostAuthenticationToken extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: string runner_id = 2;\n */\n runnerId = \"\";\n\n /**\n * @generated from field: string user_id = 3;\n */\n userId = \"\";\n\n /**\n * @generated from field: string host = 4;\n */\n host = \"\";\n\n /**\n * @generated from field: gitpod.v1.HostAuthenticationTokenSource source = 5;\n */\n source = HostAuthenticationTokenSource.UNSPECIFIED;\n\n /**\n * @generated from field: google.protobuf.Timestamp expires_at = 6;\n */\n expiresAt?: Timestamp;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.HostAuthenticationToken\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"user_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"host\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"source\", kind: \"enum\", T: proto3.getEnumType(HostAuthenticationTokenSource) },\n { no: 6, name: \"expires_at\", kind: \"message\", T: Timestamp },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): HostAuthenticationToken {\n return new HostAuthenticationToken().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): HostAuthenticationToken {\n return new HostAuthenticationToken().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): HostAuthenticationToken {\n return new HostAuthenticationToken().fromJsonString(jsonString, options);\n }\n\n static equals(a: HostAuthenticationToken | PlainMessage | undefined, b: HostAuthenticationToken | PlainMessage | undefined): boolean {\n return proto3.util.equals(HostAuthenticationToken, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetHostAuthenticationTokenRequest\n */\nexport class GetHostAuthenticationTokenRequest extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetHostAuthenticationTokenRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetHostAuthenticationTokenRequest {\n return new GetHostAuthenticationTokenRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetHostAuthenticationTokenRequest {\n return new GetHostAuthenticationTokenRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetHostAuthenticationTokenRequest {\n return new GetHostAuthenticationTokenRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetHostAuthenticationTokenRequest | PlainMessage | undefined, b: GetHostAuthenticationTokenRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetHostAuthenticationTokenRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetHostAuthenticationTokenResponse\n */\nexport class GetHostAuthenticationTokenResponse extends Message {\n /**\n * @generated from field: gitpod.v1.HostAuthenticationToken token = 1;\n */\n token?: HostAuthenticationToken;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetHostAuthenticationTokenResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"token\", kind: \"message\", T: HostAuthenticationToken },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetHostAuthenticationTokenResponse {\n return new GetHostAuthenticationTokenResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetHostAuthenticationTokenResponse {\n return new GetHostAuthenticationTokenResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetHostAuthenticationTokenResponse {\n return new GetHostAuthenticationTokenResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetHostAuthenticationTokenResponse | PlainMessage | undefined, b: GetHostAuthenticationTokenResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetHostAuthenticationTokenResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListHostAuthenticationTokensRequest\n */\nexport class ListHostAuthenticationTokensRequest extends Message {\n /**\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * @generated from field: gitpod.v1.ListHostAuthenticationTokensRequest.Filter filter = 2;\n */\n filter?: ListHostAuthenticationTokensRequest_Filter;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListHostAuthenticationTokensRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"filter\", kind: \"message\", T: ListHostAuthenticationTokensRequest_Filter },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListHostAuthenticationTokensRequest {\n return new ListHostAuthenticationTokensRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListHostAuthenticationTokensRequest {\n return new ListHostAuthenticationTokensRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListHostAuthenticationTokensRequest {\n return new ListHostAuthenticationTokensRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListHostAuthenticationTokensRequest | PlainMessage | undefined, b: ListHostAuthenticationTokensRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListHostAuthenticationTokensRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListHostAuthenticationTokensRequest.Filter\n */\nexport class ListHostAuthenticationTokensRequest_Filter extends Message {\n /**\n * @generated from field: optional string runner_id = 1;\n */\n runnerId?: string;\n\n /**\n * @generated from field: optional string user_id = 2;\n */\n userId?: string;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListHostAuthenticationTokensRequest.Filter\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 2, name: \"user_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListHostAuthenticationTokensRequest_Filter {\n return new ListHostAuthenticationTokensRequest_Filter().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListHostAuthenticationTokensRequest_Filter {\n return new ListHostAuthenticationTokensRequest_Filter().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListHostAuthenticationTokensRequest_Filter {\n return new ListHostAuthenticationTokensRequest_Filter().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListHostAuthenticationTokensRequest_Filter | PlainMessage | undefined, b: ListHostAuthenticationTokensRequest_Filter | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListHostAuthenticationTokensRequest_Filter, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListHostAuthenticationTokensResponse\n */\nexport class ListHostAuthenticationTokensResponse extends Message {\n /**\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * @generated from field: repeated gitpod.v1.HostAuthenticationToken tokens = 2;\n */\n tokens: HostAuthenticationToken[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListHostAuthenticationTokensResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"tokens\", kind: \"message\", T: HostAuthenticationToken, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListHostAuthenticationTokensResponse {\n return new ListHostAuthenticationTokensResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListHostAuthenticationTokensResponse {\n return new ListHostAuthenticationTokensResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListHostAuthenticationTokensResponse {\n return new ListHostAuthenticationTokensResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListHostAuthenticationTokensResponse | PlainMessage | undefined, b: ListHostAuthenticationTokensResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListHostAuthenticationTokensResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateHostAuthenticationTokenRequest\n */\nexport class UpdateHostAuthenticationTokenRequest extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: optional string token = 5;\n */\n token?: string;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp expires_at = 6;\n */\n expiresAt?: Timestamp;\n\n /**\n * @generated from field: optional string refresh_token = 7;\n */\n refreshToken?: string;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateHostAuthenticationTokenRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"token\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 6, name: \"expires_at\", kind: \"message\", T: Timestamp, opt: true },\n { no: 7, name: \"refresh_token\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateHostAuthenticationTokenRequest {\n return new UpdateHostAuthenticationTokenRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateHostAuthenticationTokenRequest {\n return new UpdateHostAuthenticationTokenRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateHostAuthenticationTokenRequest {\n return new UpdateHostAuthenticationTokenRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateHostAuthenticationTokenRequest | PlainMessage | undefined, b: UpdateHostAuthenticationTokenRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateHostAuthenticationTokenRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateHostAuthenticationTokenResponse\n */\nexport class UpdateHostAuthenticationTokenResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateHostAuthenticationTokenResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateHostAuthenticationTokenResponse {\n return new UpdateHostAuthenticationTokenResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateHostAuthenticationTokenResponse {\n return new UpdateHostAuthenticationTokenResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateHostAuthenticationTokenResponse {\n return new UpdateHostAuthenticationTokenResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateHostAuthenticationTokenResponse | PlainMessage | undefined, b: UpdateHostAuthenticationTokenResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateHostAuthenticationTokenResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteHostAuthenticationTokenRequest\n */\nexport class DeleteHostAuthenticationTokenRequest extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteHostAuthenticationTokenRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteHostAuthenticationTokenRequest {\n return new DeleteHostAuthenticationTokenRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteHostAuthenticationTokenRequest {\n return new DeleteHostAuthenticationTokenRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteHostAuthenticationTokenRequest {\n return new DeleteHostAuthenticationTokenRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteHostAuthenticationTokenRequest | PlainMessage | undefined, b: DeleteHostAuthenticationTokenRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteHostAuthenticationTokenRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteHostAuthenticationTokenResponse\n */\nexport class DeleteHostAuthenticationTokenResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteHostAuthenticationTokenResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteHostAuthenticationTokenResponse {\n return new DeleteHostAuthenticationTokenResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteHostAuthenticationTokenResponse {\n return new DeleteHostAuthenticationTokenResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteHostAuthenticationTokenResponse {\n return new DeleteHostAuthenticationTokenResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteHostAuthenticationTokenResponse | PlainMessage | undefined, b: DeleteHostAuthenticationTokenResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteHostAuthenticationTokenResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.FieldValue\n */\nexport class FieldValue extends Message {\n /**\n * @generated from field: string key = 1;\n */\n key = \"\";\n\n /**\n * @generated from field: string value = 2;\n */\n value = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.FieldValue\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"key\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"value\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): FieldValue {\n return new FieldValue().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): FieldValue {\n return new FieldValue().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): FieldValue {\n return new FieldValue().fromJsonString(jsonString, options);\n }\n\n static equals(a: FieldValue | PlainMessage | undefined, b: FieldValue | PlainMessage | undefined): boolean {\n return proto3.util.equals(FieldValue, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.FieldValueUpdate\n */\nexport class FieldValueUpdate extends Message {\n /**\n * key is the field key to update. If the field does not exist, it will be created.\n *\n * @generated from field: string key = 1;\n */\n key = \"\";\n\n /**\n * value is the new value for the field. If value is empty, the field will be removed.\n *\n * @generated from field: optional string value = 2;\n */\n value?: string;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.FieldValueUpdate\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"key\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"value\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): FieldValueUpdate {\n return new FieldValueUpdate().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): FieldValueUpdate {\n return new FieldValueUpdate().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): FieldValueUpdate {\n return new FieldValueUpdate().fromJsonString(jsonString, options);\n }\n\n static equals(a: FieldValueUpdate | PlainMessage | undefined, b: FieldValueUpdate | PlainMessage | undefined): boolean {\n return proto3.util.equals(FieldValueUpdate, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetRunnerConfigurationSchemaRequest\n */\nexport class GetRunnerConfigurationSchemaRequest extends Message {\n /**\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetRunnerConfigurationSchemaRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetRunnerConfigurationSchemaRequest {\n return new GetRunnerConfigurationSchemaRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetRunnerConfigurationSchemaRequest {\n return new GetRunnerConfigurationSchemaRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetRunnerConfigurationSchemaRequest {\n return new GetRunnerConfigurationSchemaRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetRunnerConfigurationSchemaRequest | PlainMessage | undefined, b: GetRunnerConfigurationSchemaRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetRunnerConfigurationSchemaRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetRunnerConfigurationSchemaResponse\n */\nexport class GetRunnerConfigurationSchemaResponse extends Message {\n /**\n * @generated from field: gitpod.v1.RunnerConfigurationSchema schema = 1;\n */\n schema?: RunnerConfigurationSchema;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetRunnerConfigurationSchemaResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"schema\", kind: \"message\", T: RunnerConfigurationSchema },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetRunnerConfigurationSchemaResponse {\n return new GetRunnerConfigurationSchemaResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetRunnerConfigurationSchemaResponse {\n return new GetRunnerConfigurationSchemaResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetRunnerConfigurationSchemaResponse {\n return new GetRunnerConfigurationSchemaResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetRunnerConfigurationSchemaResponse | PlainMessage | undefined, b: GetRunnerConfigurationSchemaResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetRunnerConfigurationSchemaResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateSCMIntegrationRequest\n */\nexport class CreateSCMIntegrationRequest extends Message {\n /**\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * scm_id references the scm_id in the runner's configuration schema that this integration is for\n *\n * @generated from field: string scm_id = 2;\n */\n scmId = \"\";\n\n /**\n * @generated from field: string host = 3;\n */\n host = \"\";\n\n /**\n * oauth_client_id is the OAuth app's client ID, if OAuth is configured.\n * If configured, oauth_plaintext_client_secret must also be set.\n *\n * @generated from field: optional string oauth_client_id = 4;\n */\n oauthClientId?: string;\n\n /**\n * oauth_plaintext_client_secret is the OAuth app's client secret in clear text.\n * This will first be encrypted with the runner's public key before being stored.\n *\n * @generated from field: optional string oauth_plaintext_client_secret = 5;\n */\n oauthPlaintextClientSecret?: string;\n\n /**\n * @generated from field: bool pat = 6;\n */\n pat = false;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateSCMIntegrationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"scm_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"host\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"oauth_client_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 5, name: \"oauth_plaintext_client_secret\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 6, name: \"pat\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateSCMIntegrationRequest {\n return new CreateSCMIntegrationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateSCMIntegrationRequest {\n return new CreateSCMIntegrationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateSCMIntegrationRequest {\n return new CreateSCMIntegrationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateSCMIntegrationRequest | PlainMessage | undefined, b: CreateSCMIntegrationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateSCMIntegrationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateSCMIntegrationResponse\n */\nexport class CreateSCMIntegrationResponse extends Message {\n /**\n * id is a uniquely generated identifier for the SCM integration\n *\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateSCMIntegrationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateSCMIntegrationResponse {\n return new CreateSCMIntegrationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateSCMIntegrationResponse {\n return new CreateSCMIntegrationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateSCMIntegrationResponse {\n return new CreateSCMIntegrationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateSCMIntegrationResponse | PlainMessage | undefined, b: CreateSCMIntegrationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateSCMIntegrationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.SCMIntegrationOAuthConfig\n */\nexport class SCMIntegrationOAuthConfig extends Message {\n /**\n * client_id is the OAuth app's client ID in clear text.\n *\n * @generated from field: string client_id = 1;\n */\n clientId = \"\";\n\n /**\n * encrypted_client_secret is the OAuth app's secret encrypted with the runner's public key.\n *\n * @generated from field: bytes encrypted_client_secret = 2;\n */\n encryptedClientSecret = new Uint8Array(0);\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.SCMIntegrationOAuthConfig\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"client_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"encrypted_client_secret\", kind: \"scalar\", T: 12 /* ScalarType.BYTES */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SCMIntegrationOAuthConfig {\n return new SCMIntegrationOAuthConfig().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SCMIntegrationOAuthConfig {\n return new SCMIntegrationOAuthConfig().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SCMIntegrationOAuthConfig {\n return new SCMIntegrationOAuthConfig().fromJsonString(jsonString, options);\n }\n\n static equals(a: SCMIntegrationOAuthConfig | PlainMessage | undefined, b: SCMIntegrationOAuthConfig | PlainMessage | undefined): boolean {\n return proto3.util.equals(SCMIntegrationOAuthConfig, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.SCMIntegration\n */\nexport class SCMIntegration extends Message {\n /**\n * id is the unique identifier of the SCM integration\n *\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * scm_id references the scm_id in the runner's configuration schema that this integration is for\n *\n * @generated from field: string scm_id = 2;\n */\n scmId = \"\";\n\n /**\n * @generated from field: string host = 3;\n */\n host = \"\";\n\n /**\n * @generated from field: optional gitpod.v1.SCMIntegrationOAuthConfig oauth = 4;\n */\n oauth?: SCMIntegrationOAuthConfig;\n\n /**\n * @generated from field: bool pat = 5;\n */\n pat = false;\n\n /**\n * @generated from field: string runner_id = 6;\n */\n runnerId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.SCMIntegration\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"scm_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"host\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"oauth\", kind: \"message\", T: SCMIntegrationOAuthConfig, opt: true },\n { no: 5, name: \"pat\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n { no: 6, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SCMIntegration {\n return new SCMIntegration().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SCMIntegration {\n return new SCMIntegration().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SCMIntegration {\n return new SCMIntegration().fromJsonString(jsonString, options);\n }\n\n static equals(a: SCMIntegration | PlainMessage | undefined, b: SCMIntegration | PlainMessage | undefined): boolean {\n return proto3.util.equals(SCMIntegration, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetSCMIntegrationRequest\n */\nexport class GetSCMIntegrationRequest extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetSCMIntegrationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetSCMIntegrationRequest {\n return new GetSCMIntegrationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetSCMIntegrationRequest {\n return new GetSCMIntegrationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetSCMIntegrationRequest {\n return new GetSCMIntegrationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetSCMIntegrationRequest | PlainMessage | undefined, b: GetSCMIntegrationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetSCMIntegrationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetSCMIntegrationResponse\n */\nexport class GetSCMIntegrationResponse extends Message {\n /**\n * @generated from field: gitpod.v1.SCMIntegration integration = 1;\n */\n integration?: SCMIntegration;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetSCMIntegrationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"integration\", kind: \"message\", T: SCMIntegration },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetSCMIntegrationResponse {\n return new GetSCMIntegrationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetSCMIntegrationResponse {\n return new GetSCMIntegrationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetSCMIntegrationResponse {\n return new GetSCMIntegrationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetSCMIntegrationResponse | PlainMessage | undefined, b: GetSCMIntegrationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetSCMIntegrationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListSCMIntegrationsRequest\n */\nexport class ListSCMIntegrationsRequest extends Message {\n /**\n * pagination contains the pagination options for listing scm integrations\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * @generated from field: gitpod.v1.ListSCMIntegrationsRequest.Filter filter = 2;\n */\n filter?: ListSCMIntegrationsRequest_Filter;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListSCMIntegrationsRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"filter\", kind: \"message\", T: ListSCMIntegrationsRequest_Filter },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListSCMIntegrationsRequest {\n return new ListSCMIntegrationsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListSCMIntegrationsRequest {\n return new ListSCMIntegrationsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListSCMIntegrationsRequest {\n return new ListSCMIntegrationsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListSCMIntegrationsRequest | PlainMessage | undefined, b: ListSCMIntegrationsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListSCMIntegrationsRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListSCMIntegrationsRequest.Filter\n */\nexport class ListSCMIntegrationsRequest_Filter extends Message {\n /**\n * runner_ids filters the response to only SCM integrations of these Runner IDs\n *\n * @generated from field: repeated string runner_ids = 1;\n */\n runnerIds: string[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListSCMIntegrationsRequest.Filter\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListSCMIntegrationsRequest_Filter {\n return new ListSCMIntegrationsRequest_Filter().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListSCMIntegrationsRequest_Filter {\n return new ListSCMIntegrationsRequest_Filter().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListSCMIntegrationsRequest_Filter {\n return new ListSCMIntegrationsRequest_Filter().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListSCMIntegrationsRequest_Filter | PlainMessage | undefined, b: ListSCMIntegrationsRequest_Filter | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListSCMIntegrationsRequest_Filter, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListSCMIntegrationsResponse\n */\nexport class ListSCMIntegrationsResponse extends Message {\n /**\n * pagination contains the pagination options for listing scm integrations\n *\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * @generated from field: repeated gitpod.v1.SCMIntegration integrations = 2;\n */\n integrations: SCMIntegration[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListSCMIntegrationsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"integrations\", kind: \"message\", T: SCMIntegration, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListSCMIntegrationsResponse {\n return new ListSCMIntegrationsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListSCMIntegrationsResponse {\n return new ListSCMIntegrationsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListSCMIntegrationsResponse {\n return new ListSCMIntegrationsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListSCMIntegrationsResponse | PlainMessage | undefined, b: ListSCMIntegrationsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListSCMIntegrationsResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateSCMIntegrationRequest\n */\nexport class UpdateSCMIntegrationRequest extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * oauth_client_id can be set to update the OAuth app's client ID.\n * If an empty string is set, the OAuth configuration will be removed (regardless\n * of whether a client secret is set), and any existing Host Authentication Tokens for the\n * SCM integration's runner and host that were created using the OAuth app will be deleted.\n * This might lead to users being unable to access their repositories until they re-authenticate.\n *\n * @generated from field: optional string oauth_client_id = 2;\n */\n oauthClientId?: string;\n\n /**\n * oauth_plaintext_client_secret can be set to update the OAuth app's client secret.\n * The cleartext secret will be encrypted with the runner's public key before being stored.\n *\n * @generated from field: optional string oauth_plaintext_client_secret = 3;\n */\n oauthPlaintextClientSecret?: string;\n\n /**\n * pat can be set to enable or disable Personal Access Tokens support.\n * When disabling PATs, any existing Host Authentication Tokens for the SCM integration's\n * runner and host that were created using a PAT will be deleted. This might lead to users\n * being unable to access their repositories until they re-authenticate.\n *\n * @generated from field: optional bool pat = 4;\n */\n pat?: boolean;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateSCMIntegrationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"oauth_client_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"oauth_plaintext_client_secret\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 4, name: \"pat\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateSCMIntegrationRequest {\n return new UpdateSCMIntegrationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateSCMIntegrationRequest {\n return new UpdateSCMIntegrationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateSCMIntegrationRequest {\n return new UpdateSCMIntegrationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateSCMIntegrationRequest | PlainMessage | undefined, b: UpdateSCMIntegrationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateSCMIntegrationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateSCMIntegrationResponse\n */\nexport class UpdateSCMIntegrationResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateSCMIntegrationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateSCMIntegrationResponse {\n return new UpdateSCMIntegrationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateSCMIntegrationResponse {\n return new UpdateSCMIntegrationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateSCMIntegrationResponse {\n return new UpdateSCMIntegrationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateSCMIntegrationResponse | PlainMessage | undefined, b: UpdateSCMIntegrationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateSCMIntegrationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteSCMIntegrationRequest\n */\nexport class DeleteSCMIntegrationRequest extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteSCMIntegrationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteSCMIntegrationRequest {\n return new DeleteSCMIntegrationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteSCMIntegrationRequest {\n return new DeleteSCMIntegrationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteSCMIntegrationRequest {\n return new DeleteSCMIntegrationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteSCMIntegrationRequest | PlainMessage | undefined, b: DeleteSCMIntegrationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteSCMIntegrationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteSCMIntegrationResponse\n */\nexport class DeleteSCMIntegrationResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteSCMIntegrationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteSCMIntegrationResponse {\n return new DeleteSCMIntegrationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteSCMIntegrationResponse {\n return new DeleteSCMIntegrationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteSCMIntegrationResponse {\n return new DeleteSCMIntegrationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteSCMIntegrationResponse | PlainMessage | undefined, b: DeleteSCMIntegrationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteSCMIntegrationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EnvironmentClass\n */\nexport class EnvironmentClass extends Message {\n /**\n * id is the unique identifier of the environment class\n *\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * display_name is the human readable name of the environment class\n *\n * @generated from field: string display_name = 2;\n */\n displayName = \"\";\n\n /**\n * description is a human readable description of the environment class\n *\n * @generated from field: string description = 3;\n */\n description = \"\";\n\n /**\n * configuration describes the configuration of the environment class\n *\n * @generated from field: repeated gitpod.v1.FieldValue configuration = 4;\n */\n configuration: FieldValue[] = [];\n\n /**\n * runner_id is the unique identifier of the runner the environment class belongs to\n *\n * @generated from field: string runner_id = 5;\n */\n runnerId = \"\";\n\n /**\n * enabled indicates whether the environment class can be used to create\n * new environments.\n *\n * @generated from field: bool enabled = 6;\n */\n enabled = false;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentClass\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"display_name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"description\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"configuration\", kind: \"message\", T: FieldValue, repeated: true },\n { no: 5, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 6, name: \"enabled\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentClass {\n return new EnvironmentClass().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentClass {\n return new EnvironmentClass().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentClass {\n return new EnvironmentClass().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentClass | PlainMessage | undefined, b: EnvironmentClass | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentClass, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateEnvironmentClassRequest\n */\nexport class CreateEnvironmentClassRequest extends Message {\n /**\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * @generated from field: string display_name = 2;\n */\n displayName = \"\";\n\n /**\n * @generated from field: string description = 3;\n */\n description = \"\";\n\n /**\n * @generated from field: repeated gitpod.v1.FieldValue configuration = 4;\n */\n configuration: FieldValue[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateEnvironmentClassRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"display_name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"description\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"configuration\", kind: \"message\", T: FieldValue, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateEnvironmentClassRequest {\n return new CreateEnvironmentClassRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateEnvironmentClassRequest {\n return new CreateEnvironmentClassRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateEnvironmentClassRequest {\n return new CreateEnvironmentClassRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateEnvironmentClassRequest | PlainMessage | undefined, b: CreateEnvironmentClassRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateEnvironmentClassRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateEnvironmentClassResponse\n */\nexport class CreateEnvironmentClassResponse extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateEnvironmentClassResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateEnvironmentClassResponse {\n return new CreateEnvironmentClassResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateEnvironmentClassResponse {\n return new CreateEnvironmentClassResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateEnvironmentClassResponse {\n return new CreateEnvironmentClassResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateEnvironmentClassResponse | PlainMessage | undefined, b: CreateEnvironmentClassResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateEnvironmentClassResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetEnvironmentClassRequest\n */\nexport class GetEnvironmentClassRequest extends Message {\n /**\n * @generated from field: string environment_class_id = 2;\n */\n environmentClassId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetEnvironmentClassRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 2, name: \"environment_class_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetEnvironmentClassRequest {\n return new GetEnvironmentClassRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetEnvironmentClassRequest {\n return new GetEnvironmentClassRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetEnvironmentClassRequest {\n return new GetEnvironmentClassRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetEnvironmentClassRequest | PlainMessage | undefined, b: GetEnvironmentClassRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetEnvironmentClassRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetEnvironmentClassResponse\n */\nexport class GetEnvironmentClassResponse extends Message {\n /**\n * @generated from field: gitpod.v1.EnvironmentClass environment_class = 1;\n */\n environmentClass?: EnvironmentClass;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetEnvironmentClassResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_class\", kind: \"message\", T: EnvironmentClass },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetEnvironmentClassResponse {\n return new GetEnvironmentClassResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetEnvironmentClassResponse {\n return new GetEnvironmentClassResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetEnvironmentClassResponse {\n return new GetEnvironmentClassResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetEnvironmentClassResponse | PlainMessage | undefined, b: GetEnvironmentClassResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetEnvironmentClassResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListEnvironmentClassesRequest\n */\nexport class ListEnvironmentClassesRequest extends Message {\n /**\n * pagination contains the pagination options for listing environment classes\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * @generated from field: gitpod.v1.ListEnvironmentClassesRequest.Filter filter = 2;\n */\n filter?: ListEnvironmentClassesRequest_Filter;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListEnvironmentClassesRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"filter\", kind: \"message\", T: ListEnvironmentClassesRequest_Filter },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListEnvironmentClassesRequest {\n return new ListEnvironmentClassesRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListEnvironmentClassesRequest {\n return new ListEnvironmentClassesRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListEnvironmentClassesRequest {\n return new ListEnvironmentClassesRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListEnvironmentClassesRequest | PlainMessage | undefined, b: ListEnvironmentClassesRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListEnvironmentClassesRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListEnvironmentClassesRequest.Filter\n */\nexport class ListEnvironmentClassesRequest_Filter extends Message {\n /**\n * runner_ids filters the response to only EnvironmentClasses of these Runner IDs\n *\n * @generated from field: repeated string runner_ids = 1;\n */\n runnerIds: string[] = [];\n\n /**\n * enabled filters the response to only enabled or disabled environment classes.\n * If not set, all environment classes are returned.\n *\n * @generated from field: optional bool enabled = 2;\n */\n enabled?: boolean;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListEnvironmentClassesRequest.Filter\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 2, name: \"enabled\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListEnvironmentClassesRequest_Filter {\n return new ListEnvironmentClassesRequest_Filter().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListEnvironmentClassesRequest_Filter {\n return new ListEnvironmentClassesRequest_Filter().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListEnvironmentClassesRequest_Filter {\n return new ListEnvironmentClassesRequest_Filter().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListEnvironmentClassesRequest_Filter | PlainMessage | undefined, b: ListEnvironmentClassesRequest_Filter | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListEnvironmentClassesRequest_Filter, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListEnvironmentClassesResponse\n */\nexport class ListEnvironmentClassesResponse extends Message {\n /**\n * pagination contains the pagination options for listing environment classes\n *\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * @generated from field: repeated gitpod.v1.EnvironmentClass environment_classes = 2;\n */\n environmentClasses: EnvironmentClass[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListEnvironmentClassesResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"environment_classes\", kind: \"message\", T: EnvironmentClass, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListEnvironmentClassesResponse {\n return new ListEnvironmentClassesResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListEnvironmentClassesResponse {\n return new ListEnvironmentClassesResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListEnvironmentClassesResponse {\n return new ListEnvironmentClassesResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListEnvironmentClassesResponse | PlainMessage | undefined, b: ListEnvironmentClassesResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListEnvironmentClassesResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateEnvironmentClassRequest\n */\nexport class UpdateEnvironmentClassRequest extends Message {\n /**\n * @generated from field: string environment_class_id = 1;\n */\n environmentClassId = \"\";\n\n /**\n * @generated from field: optional string display_name = 2;\n */\n displayName?: string;\n\n /**\n * @generated from field: optional string description = 3;\n */\n description?: string;\n\n /**\n * @generated from field: optional bool enabled = 4;\n */\n enabled?: boolean;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateEnvironmentClassRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_class_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"display_name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"description\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 4, name: \"enabled\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateEnvironmentClassRequest {\n return new UpdateEnvironmentClassRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateEnvironmentClassRequest {\n return new UpdateEnvironmentClassRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateEnvironmentClassRequest {\n return new UpdateEnvironmentClassRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateEnvironmentClassRequest | PlainMessage | undefined, b: UpdateEnvironmentClassRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateEnvironmentClassRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateEnvironmentClassResponse\n */\nexport class UpdateEnvironmentClassResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateEnvironmentClassResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateEnvironmentClassResponse {\n return new UpdateEnvironmentClassResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateEnvironmentClassResponse {\n return new UpdateEnvironmentClassResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateEnvironmentClassResponse {\n return new UpdateEnvironmentClassResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateEnvironmentClassResponse | PlainMessage | undefined, b: UpdateEnvironmentClassResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateEnvironmentClassResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ValidateRunnerConfigurationRequest\n */\nexport class ValidateRunnerConfigurationRequest extends Message {\n /**\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * @generated from oneof gitpod.v1.ValidateRunnerConfigurationRequest.config\n */\n config: {\n /**\n * @generated from field: gitpod.v1.EnvironmentClass environment_class = 2;\n */\n value: EnvironmentClass;\n case: \"environmentClass\";\n } | {\n /**\n * @generated from field: gitpod.v1.ValidateRunnerConfigurationRequest.ValidateSCMIntegration scm_integration = 3;\n */\n value: ValidateRunnerConfigurationRequest_ValidateSCMIntegration;\n case: \"scmIntegration\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ValidateRunnerConfigurationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"environment_class\", kind: \"message\", T: EnvironmentClass, oneof: \"config\" },\n { no: 3, name: \"scm_integration\", kind: \"message\", T: ValidateRunnerConfigurationRequest_ValidateSCMIntegration, oneof: \"config\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ValidateRunnerConfigurationRequest {\n return new ValidateRunnerConfigurationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ValidateRunnerConfigurationRequest {\n return new ValidateRunnerConfigurationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ValidateRunnerConfigurationRequest {\n return new ValidateRunnerConfigurationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ValidateRunnerConfigurationRequest | PlainMessage | undefined, b: ValidateRunnerConfigurationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ValidateRunnerConfigurationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ValidateRunnerConfigurationRequest.ValidateSCMIntegration\n */\nexport class ValidateRunnerConfigurationRequest_ValidateSCMIntegration extends Message {\n /**\n * id is the unique identifier of the SCM integration\n *\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * scm_id references the scm_id in the runner's configuration schema that this integration is for\n *\n * @generated from field: string scm_id = 2;\n */\n scmId = \"\";\n\n /**\n * @generated from field: string host = 3;\n */\n host = \"\";\n\n /**\n * oauth_client_id is the OAuth app's client ID, if OAuth is configured.\n * If configured, oauth_client_secret must also be set.\n *\n * @generated from field: optional string oauth_client_id = 4;\n */\n oauthClientId?: string;\n\n /**\n * @generated from oneof gitpod.v1.ValidateRunnerConfigurationRequest.ValidateSCMIntegration.oauth_client_secret\n */\n oauthClientSecret: {\n /**\n * oauth_plaintext_client_secret is the OAuth app's client secret in clear text, if OAuth is configured.\n * This can be set to validate any new client secret before it is encrypted and stored. This value will\n * not be stored and get encrypted with the runner's public key before passing it to the runner.\n *\n * @generated from field: string oauth_plaintext_client_secret = 5;\n */\n value: string;\n case: \"oauthPlaintextClientSecret\";\n } | {\n /**\n * oauth_encrypted_client_secret is the OAuth app's client secret encrypted with the runner's public key,\n * if OAuth is configured.\n * This can be used to e.g. validate an already encrypted client secret of an existing SCM integration.\n *\n * @generated from field: bytes oauth_encrypted_client_secret = 6;\n */\n value: Uint8Array;\n case: \"oauthEncryptedClientSecret\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n /**\n * @generated from field: bool pat = 7;\n */\n pat = false;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ValidateRunnerConfigurationRequest.ValidateSCMIntegration\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"scm_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"host\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"oauth_client_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 5, name: \"oauth_plaintext_client_secret\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"oauth_client_secret\" },\n { no: 6, name: \"oauth_encrypted_client_secret\", kind: \"scalar\", T: 12 /* ScalarType.BYTES */, oneof: \"oauth_client_secret\" },\n { no: 7, name: \"pat\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ValidateRunnerConfigurationRequest_ValidateSCMIntegration {\n return new ValidateRunnerConfigurationRequest_ValidateSCMIntegration().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ValidateRunnerConfigurationRequest_ValidateSCMIntegration {\n return new ValidateRunnerConfigurationRequest_ValidateSCMIntegration().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ValidateRunnerConfigurationRequest_ValidateSCMIntegration {\n return new ValidateRunnerConfigurationRequest_ValidateSCMIntegration().fromJsonString(jsonString, options);\n }\n\n static equals(a: ValidateRunnerConfigurationRequest_ValidateSCMIntegration | PlainMessage | undefined, b: ValidateRunnerConfigurationRequest_ValidateSCMIntegration | PlainMessage | undefined): boolean {\n return proto3.util.equals(ValidateRunnerConfigurationRequest_ValidateSCMIntegration, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.FieldValidationError\n */\nexport class FieldValidationError extends Message {\n /**\n * @generated from field: string key = 1;\n */\n key = \"\";\n\n /**\n * @generated from field: string error = 2;\n */\n error = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.FieldValidationError\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"key\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"error\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): FieldValidationError {\n return new FieldValidationError().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): FieldValidationError {\n return new FieldValidationError().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): FieldValidationError {\n return new FieldValidationError().fromJsonString(jsonString, options);\n }\n\n static equals(a: FieldValidationError | PlainMessage | undefined, b: FieldValidationError | PlainMessage | undefined): boolean {\n return proto3.util.equals(FieldValidationError, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EnvironmentClassValidationResult\n */\nexport class EnvironmentClassValidationResult extends Message {\n /**\n * @generated from field: bool valid = 1;\n */\n valid = false;\n\n /**\n * @generated from field: optional string display_name_error = 2;\n */\n displayNameError?: string;\n\n /**\n * @generated from field: optional string description_error = 3;\n */\n descriptionError?: string;\n\n /**\n * @generated from field: repeated gitpod.v1.FieldValidationError configuration_errors = 4;\n */\n configurationErrors: FieldValidationError[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentClassValidationResult\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"valid\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n { no: 2, name: \"display_name_error\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"description_error\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 4, name: \"configuration_errors\", kind: \"message\", T: FieldValidationError, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentClassValidationResult {\n return new EnvironmentClassValidationResult().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentClassValidationResult {\n return new EnvironmentClassValidationResult().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentClassValidationResult {\n return new EnvironmentClassValidationResult().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentClassValidationResult | PlainMessage | undefined, b: EnvironmentClassValidationResult | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentClassValidationResult, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.SCMIntegrationValidationResult\n */\nexport class SCMIntegrationValidationResult extends Message {\n /**\n * @generated from field: bool valid = 1;\n */\n valid = false;\n\n /**\n * @generated from field: optional string scm_id_error = 2;\n */\n scmIdError?: string;\n\n /**\n * @generated from field: optional string host_error = 3;\n */\n hostError?: string;\n\n /**\n * @generated from field: optional string oauth_error = 4;\n */\n oauthError?: string;\n\n /**\n * @generated from field: optional string pat_error = 5;\n */\n patError?: string;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.SCMIntegrationValidationResult\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"valid\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n { no: 2, name: \"scm_id_error\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"host_error\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 4, name: \"oauth_error\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 5, name: \"pat_error\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SCMIntegrationValidationResult {\n return new SCMIntegrationValidationResult().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SCMIntegrationValidationResult {\n return new SCMIntegrationValidationResult().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SCMIntegrationValidationResult {\n return new SCMIntegrationValidationResult().fromJsonString(jsonString, options);\n }\n\n static equals(a: SCMIntegrationValidationResult | PlainMessage | undefined, b: SCMIntegrationValidationResult | PlainMessage | undefined): boolean {\n return proto3.util.equals(SCMIntegrationValidationResult, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ValidateRunnerConfigurationResponse\n */\nexport class ValidateRunnerConfigurationResponse extends Message {\n /**\n * @generated from oneof gitpod.v1.ValidateRunnerConfigurationResponse.result\n */\n result: {\n /**\n * @generated from field: gitpod.v1.EnvironmentClassValidationResult environment_class = 1;\n */\n value: EnvironmentClassValidationResult;\n case: \"environmentClass\";\n } | {\n /**\n * @generated from field: gitpod.v1.SCMIntegrationValidationResult scm_integration = 2;\n */\n value: SCMIntegrationValidationResult;\n case: \"scmIntegration\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ValidateRunnerConfigurationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_class\", kind: \"message\", T: EnvironmentClassValidationResult, oneof: \"result\" },\n { no: 2, name: \"scm_integration\", kind: \"message\", T: SCMIntegrationValidationResult, oneof: \"result\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ValidateRunnerConfigurationResponse {\n return new ValidateRunnerConfigurationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ValidateRunnerConfigurationResponse {\n return new ValidateRunnerConfigurationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ValidateRunnerConfigurationResponse {\n return new ValidateRunnerConfigurationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ValidateRunnerConfigurationResponse | PlainMessage | undefined, b: ValidateRunnerConfigurationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ValidateRunnerConfigurationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.RunnerConfigurationSchema\n */\nexport class RunnerConfigurationSchema extends Message {\n /**\n * The schema version\n *\n * @generated from field: string version = 1;\n */\n version = \"\";\n\n /**\n * @generated from field: repeated gitpod.v1.RunnerConfigurationSchema.Field runner_config = 2;\n */\n runnerConfig: RunnerConfigurationSchema_Field[] = [];\n\n /**\n * @generated from field: repeated gitpod.v1.RunnerConfigurationSchema.Field environment_classes = 3;\n */\n environmentClasses: RunnerConfigurationSchema_Field[] = [];\n\n /**\n * @generated from field: repeated gitpod.v1.RunnerConfigurationSchema.SCMConfigSchema scm = 4;\n */\n scm: RunnerConfigurationSchema_SCMConfigSchema[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.RunnerConfigurationSchema\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"version\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"runner_config\", kind: \"message\", T: RunnerConfigurationSchema_Field, repeated: true },\n { no: 3, name: \"environment_classes\", kind: \"message\", T: RunnerConfigurationSchema_Field, repeated: true },\n { no: 4, name: \"scm\", kind: \"message\", T: RunnerConfigurationSchema_SCMConfigSchema, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunnerConfigurationSchema {\n return new RunnerConfigurationSchema().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunnerConfigurationSchema {\n return new RunnerConfigurationSchema().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunnerConfigurationSchema {\n return new RunnerConfigurationSchema().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunnerConfigurationSchema | PlainMessage | undefined, b: RunnerConfigurationSchema | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunnerConfigurationSchema, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.RunnerConfigurationSchema.StringField\n */\nexport class RunnerConfigurationSchema_StringField extends Message {\n /**\n * @generated from field: string default = 1;\n */\n default = \"\";\n\n /**\n * @generated from field: string pattern = 2;\n */\n pattern = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.RunnerConfigurationSchema.StringField\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"default\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"pattern\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunnerConfigurationSchema_StringField {\n return new RunnerConfigurationSchema_StringField().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunnerConfigurationSchema_StringField {\n return new RunnerConfigurationSchema_StringField().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunnerConfigurationSchema_StringField {\n return new RunnerConfigurationSchema_StringField().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunnerConfigurationSchema_StringField | PlainMessage | undefined, b: RunnerConfigurationSchema_StringField | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunnerConfigurationSchema_StringField, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.RunnerConfigurationSchema.BoolField\n */\nexport class RunnerConfigurationSchema_BoolField extends Message {\n /**\n * @generated from field: bool default = 1;\n */\n default = false;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.RunnerConfigurationSchema.BoolField\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"default\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunnerConfigurationSchema_BoolField {\n return new RunnerConfigurationSchema_BoolField().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunnerConfigurationSchema_BoolField {\n return new RunnerConfigurationSchema_BoolField().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunnerConfigurationSchema_BoolField {\n return new RunnerConfigurationSchema_BoolField().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunnerConfigurationSchema_BoolField | PlainMessage | undefined, b: RunnerConfigurationSchema_BoolField | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunnerConfigurationSchema_BoolField, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.RunnerConfigurationSchema.IntField\n */\nexport class RunnerConfigurationSchema_IntField extends Message {\n /**\n * @generated from field: int32 default = 1;\n */\n default = 0;\n\n /**\n * @generated from field: int32 min = 2;\n */\n min = 0;\n\n /**\n * @generated from field: int32 max = 3;\n */\n max = 0;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.RunnerConfigurationSchema.IntField\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"default\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n { no: 2, name: \"min\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n { no: 3, name: \"max\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunnerConfigurationSchema_IntField {\n return new RunnerConfigurationSchema_IntField().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunnerConfigurationSchema_IntField {\n return new RunnerConfigurationSchema_IntField().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunnerConfigurationSchema_IntField {\n return new RunnerConfigurationSchema_IntField().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunnerConfigurationSchema_IntField | PlainMessage | undefined, b: RunnerConfigurationSchema_IntField | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunnerConfigurationSchema_IntField, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.RunnerConfigurationSchema.EnumField\n */\nexport class RunnerConfigurationSchema_EnumField extends Message {\n /**\n * @generated from field: string default = 1;\n */\n default = \"\";\n\n /**\n * @generated from field: repeated string values = 2;\n */\n values: string[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.RunnerConfigurationSchema.EnumField\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"default\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"values\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunnerConfigurationSchema_EnumField {\n return new RunnerConfigurationSchema_EnumField().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunnerConfigurationSchema_EnumField {\n return new RunnerConfigurationSchema_EnumField().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunnerConfigurationSchema_EnumField {\n return new RunnerConfigurationSchema_EnumField().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunnerConfigurationSchema_EnumField | PlainMessage | undefined, b: RunnerConfigurationSchema_EnumField | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunnerConfigurationSchema_EnumField, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.RunnerConfigurationSchema.DisplayField\n */\nexport class RunnerConfigurationSchema_DisplayField extends Message {\n /**\n * @generated from field: string default = 1;\n */\n default = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.RunnerConfigurationSchema.DisplayField\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"default\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunnerConfigurationSchema_DisplayField {\n return new RunnerConfigurationSchema_DisplayField().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunnerConfigurationSchema_DisplayField {\n return new RunnerConfigurationSchema_DisplayField().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunnerConfigurationSchema_DisplayField {\n return new RunnerConfigurationSchema_DisplayField().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunnerConfigurationSchema_DisplayField | PlainMessage | undefined, b: RunnerConfigurationSchema_DisplayField | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunnerConfigurationSchema_DisplayField, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.RunnerConfigurationSchema.Field\n */\nexport class RunnerConfigurationSchema_Field extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: string name = 2;\n */\n name = \"\";\n\n /**\n * @generated from field: string description = 3;\n */\n description = \"\";\n\n /**\n * @generated from field: bool required = 4;\n */\n required = false;\n\n /**\n * @generated from field: bool secret = 5;\n */\n secret = false;\n\n /**\n * @generated from oneof gitpod.v1.RunnerConfigurationSchema.Field.type\n */\n type: {\n /**\n * @generated from field: gitpod.v1.RunnerConfigurationSchema.StringField string = 6;\n */\n value: RunnerConfigurationSchema_StringField;\n case: \"string\";\n } | {\n /**\n * @generated from field: gitpod.v1.RunnerConfigurationSchema.BoolField bool = 7;\n */\n value: RunnerConfigurationSchema_BoolField;\n case: \"bool\";\n } | {\n /**\n * @generated from field: gitpod.v1.RunnerConfigurationSchema.IntField int = 8;\n */\n value: RunnerConfigurationSchema_IntField;\n case: \"int\";\n } | {\n /**\n * @generated from field: gitpod.v1.RunnerConfigurationSchema.EnumField enum = 9;\n */\n value: RunnerConfigurationSchema_EnumField;\n case: \"enum\";\n } | {\n /**\n * @generated from field: gitpod.v1.RunnerConfigurationSchema.DisplayField display = 10;\n */\n value: RunnerConfigurationSchema_DisplayField;\n case: \"display\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.RunnerConfigurationSchema.Field\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"description\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"required\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n { no: 5, name: \"secret\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n { no: 6, name: \"string\", kind: \"message\", T: RunnerConfigurationSchema_StringField, oneof: \"type\" },\n { no: 7, name: \"bool\", kind: \"message\", T: RunnerConfigurationSchema_BoolField, oneof: \"type\" },\n { no: 8, name: \"int\", kind: \"message\", T: RunnerConfigurationSchema_IntField, oneof: \"type\" },\n { no: 9, name: \"enum\", kind: \"message\", T: RunnerConfigurationSchema_EnumField, oneof: \"type\" },\n { no: 10, name: \"display\", kind: \"message\", T: RunnerConfigurationSchema_DisplayField, oneof: \"type\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunnerConfigurationSchema_Field {\n return new RunnerConfigurationSchema_Field().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunnerConfigurationSchema_Field {\n return new RunnerConfigurationSchema_Field().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunnerConfigurationSchema_Field {\n return new RunnerConfigurationSchema_Field().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunnerConfigurationSchema_Field | PlainMessage | undefined, b: RunnerConfigurationSchema_Field | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunnerConfigurationSchema_Field, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.RunnerConfigurationSchema.OAuth\n */\nexport class RunnerConfigurationSchema_OAuth extends Message {\n /**\n * callback_url is the URL the OAuth app will redirect to after the user has authenticated.\n *\n * @generated from field: string callback_url = 1;\n */\n callbackUrl = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.RunnerConfigurationSchema.OAuth\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"callback_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunnerConfigurationSchema_OAuth {\n return new RunnerConfigurationSchema_OAuth().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunnerConfigurationSchema_OAuth {\n return new RunnerConfigurationSchema_OAuth().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunnerConfigurationSchema_OAuth {\n return new RunnerConfigurationSchema_OAuth().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunnerConfigurationSchema_OAuth | PlainMessage | undefined, b: RunnerConfigurationSchema_OAuth | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunnerConfigurationSchema_OAuth, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.RunnerConfigurationSchema.PersonalAccessToken\n */\nexport class RunnerConfigurationSchema_PersonalAccessToken extends Message {\n /**\n * description is a human-readable description of the PAT.\n *\n * @generated from field: string description = 1;\n */\n description = \"\";\n\n /**\n * docs_link is a link to the documentation on how to create a PAT for this SCM system.\n *\n * @generated from field: string docs_link = 2;\n */\n docsLink = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.RunnerConfigurationSchema.PersonalAccessToken\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"description\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"docs_link\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunnerConfigurationSchema_PersonalAccessToken {\n return new RunnerConfigurationSchema_PersonalAccessToken().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunnerConfigurationSchema_PersonalAccessToken {\n return new RunnerConfigurationSchema_PersonalAccessToken().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunnerConfigurationSchema_PersonalAccessToken {\n return new RunnerConfigurationSchema_PersonalAccessToken().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunnerConfigurationSchema_PersonalAccessToken | PlainMessage | undefined, b: RunnerConfigurationSchema_PersonalAccessToken | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunnerConfigurationSchema_PersonalAccessToken, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.RunnerConfigurationSchema.SCMConfigSchema\n */\nexport class RunnerConfigurationSchema_SCMConfigSchema extends Message {\n /**\n * @generated from field: string scm_id = 1;\n */\n scmId = \"\";\n\n /**\n * @generated from field: string name = 2;\n */\n name = \"\";\n\n /**\n * @generated from field: repeated string default_hosts = 3;\n */\n defaultHosts: string[] = [];\n\n /**\n * @generated from field: gitpod.v1.RunnerConfigurationSchema.OAuth oauth = 4;\n */\n oauth?: RunnerConfigurationSchema_OAuth;\n\n /**\n * @generated from field: gitpod.v1.RunnerConfigurationSchema.PersonalAccessToken pat = 5;\n */\n pat?: RunnerConfigurationSchema_PersonalAccessToken;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.RunnerConfigurationSchema.SCMConfigSchema\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"scm_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"default_hosts\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 4, name: \"oauth\", kind: \"message\", T: RunnerConfigurationSchema_OAuth },\n { no: 5, name: \"pat\", kind: \"message\", T: RunnerConfigurationSchema_PersonalAccessToken },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunnerConfigurationSchema_SCMConfigSchema {\n return new RunnerConfigurationSchema_SCMConfigSchema().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunnerConfigurationSchema_SCMConfigSchema {\n return new RunnerConfigurationSchema_SCMConfigSchema().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunnerConfigurationSchema_SCMConfigSchema {\n return new RunnerConfigurationSchema_SCMConfigSchema().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunnerConfigurationSchema_SCMConfigSchema | PlainMessage | undefined, b: RunnerConfigurationSchema_SCMConfigSchema | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunnerConfigurationSchema_SCMConfigSchema, a, b);\n }\n}\n\n","// @generated by protoc-gen-es v1.8.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/runner.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Message, proto3, Timestamp } from \"@bufbuild/protobuf\";\nimport { PaginationRequest, PaginationResponse } from \"./pagination_pb.js\";\nimport { Subject } from \"./identity_pb.js\";\nimport { FieldValue } from \"./runner_configuration_pb.js\";\n\n/**\n * RunnerKind represents the kind of a runner\n *\n * @generated from enum gitpod.v1.RunnerKind\n */\nexport enum RunnerKind {\n /**\n * Invalid kind\n *\n * @generated from enum value: RUNNER_KIND_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * The runner is a local runner\n *\n * @generated from enum value: RUNNER_KIND_LOCAL = 1;\n */\n LOCAL = 1,\n\n /**\n * The runner is a remote runner\n *\n * @generated from enum value: RUNNER_KIND_REMOTE = 2;\n */\n REMOTE = 2,\n\n /**\n * The runner is a system-managed runner that holds shared configuration for local runners.\n * Every organization automatically has one of these runners, and it cannot be deleted nor\n * can new runners of this kind be created.\n * Organization admins can update this runner to change the shared configuration, including:\n * - SCM Integrations. All local runners will use these integrations.\n * - DesiredPhase. Can be set to STOPPED to disable all local runners.\n * This runner cannot be used to run environments.\n *\n * @generated from enum value: RUNNER_KIND_LOCAL_CONFIGURATION = 3;\n */\n LOCAL_CONFIGURATION = 3,\n}\n// Retrieve enum metadata with: proto3.getEnumType(RunnerKind)\nproto3.util.setEnumType(RunnerKind, \"gitpod.v1.RunnerKind\", [\n { no: 0, name: \"RUNNER_KIND_UNSPECIFIED\" },\n { no: 1, name: \"RUNNER_KIND_LOCAL\" },\n { no: 2, name: \"RUNNER_KIND_REMOTE\" },\n { no: 3, name: \"RUNNER_KIND_LOCAL_CONFIGURATION\" },\n]);\n\n/**\n * @generated from enum gitpod.v1.RunnerReleaseChannel\n */\nexport enum RunnerReleaseChannel {\n /**\n * Invalid release channel\n *\n * @generated from enum value: RUNNER_RELEASE_CHANNEL_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * The runner is on the stable release channel\n *\n * @generated from enum value: RUNNER_RELEASE_CHANNEL_STABLE = 1;\n */\n STABLE = 1,\n\n /**\n * The runner is on the latest release channel\n *\n * @generated from enum value: RUNNER_RELEASE_CHANNEL_LATEST = 2;\n */\n LATEST = 2,\n}\n// Retrieve enum metadata with: proto3.getEnumType(RunnerReleaseChannel)\nproto3.util.setEnumType(RunnerReleaseChannel, \"gitpod.v1.RunnerReleaseChannel\", [\n { no: 0, name: \"RUNNER_RELEASE_CHANNEL_UNSPECIFIED\" },\n { no: 1, name: \"RUNNER_RELEASE_CHANNEL_STABLE\" },\n { no: 2, name: \"RUNNER_RELEASE_CHANNEL_LATEST\" },\n]);\n\n/**\n * RunnerPhase represents the phase a runner is in\n *\n * @generated from enum gitpod.v1.RunnerPhase\n */\nexport enum RunnerPhase {\n /**\n * Invalid phase\n *\n * @generated from enum value: RUNNER_PHASE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * The runner was created but not yet signed up\n *\n * @generated from enum value: RUNNER_PHASE_CREATED = 1;\n */\n CREATED = 1,\n\n /**\n * The runner was signed up and is ready to be used, but has not communicated with us yet\n *\n * @generated from enum value: RUNNER_PHASE_INACTIVE = 2;\n */\n INACTIVE = 2,\n\n /**\n * The runner was signed up and is ready to be used\n *\n * @generated from enum value: RUNNER_PHASE_ACTIVE = 3;\n */\n ACTIVE = 3,\n\n /**\n * The runner is in the process of being deleted.\n *\n * @generated from enum value: RUNNER_PHASE_DELETING = 4;\n */\n DELETING = 4,\n\n /**\n * The runner has been deleted.\n *\n * @generated from enum value: RUNNER_PHASE_DELETED = 5;\n */\n DELETED = 5,\n\n /**\n * The runner is in a degraded state.\n *\n * @generated from enum value: RUNNER_PHASE_DEGRADED = 6;\n */\n DEGRADED = 6,\n}\n// Retrieve enum metadata with: proto3.getEnumType(RunnerPhase)\nproto3.util.setEnumType(RunnerPhase, \"gitpod.v1.RunnerPhase\", [\n { no: 0, name: \"RUNNER_PHASE_UNSPECIFIED\" },\n { no: 1, name: \"RUNNER_PHASE_CREATED\" },\n { no: 2, name: \"RUNNER_PHASE_INACTIVE\" },\n { no: 3, name: \"RUNNER_PHASE_ACTIVE\" },\n { no: 4, name: \"RUNNER_PHASE_DELETING\" },\n { no: 5, name: \"RUNNER_PHASE_DELETED\" },\n { no: 6, name: \"RUNNER_PHASE_DEGRADED\" },\n]);\n\n/**\n * @generated from enum gitpod.v1.RunnerCapability\n */\nexport enum RunnerCapability {\n /**\n * @generated from enum value: RUNNER_CAPABILITY_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * RUNNER_CAPABILITY_FETCH_LOCAL_SCM_INTEGRATIONS is used by local runners to indicate they support fetching SCM Integrations.\n *\n * @generated from enum value: RUNNER_CAPABILITY_FETCH_LOCAL_SCM_INTEGRATIONS = 1;\n */\n FETCH_LOCAL_SCM_INTEGRATIONS = 1,\n}\n// Retrieve enum metadata with: proto3.getEnumType(RunnerCapability)\nproto3.util.setEnumType(RunnerCapability, \"gitpod.v1.RunnerCapability\", [\n { no: 0, name: \"RUNNER_CAPABILITY_UNSPECIFIED\" },\n { no: 1, name: \"RUNNER_CAPABILITY_FETCH_LOCAL_SCM_INTEGRATIONS\" },\n]);\n\n/**\n * @generated from enum gitpod.v1.RunnerRole\n */\nexport enum RunnerRole {\n /**\n * @generated from enum value: RUNNER_ROLE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: RUNNER_ROLE_ADMIN = 1;\n */\n ADMIN = 1,\n\n /**\n * @generated from enum value: RUNNER_ROLE_USER = 2;\n */\n USER = 2,\n}\n// Retrieve enum metadata with: proto3.getEnumType(RunnerRole)\nproto3.util.setEnumType(RunnerRole, \"gitpod.v1.RunnerRole\", [\n { no: 0, name: \"RUNNER_ROLE_UNSPECIFIED\" },\n { no: 1, name: \"RUNNER_ROLE_ADMIN\" },\n { no: 2, name: \"RUNNER_ROLE_USER\" },\n]);\n\n/**\n * @generated from message gitpod.v1.CreateRunnerRequest\n */\nexport class CreateRunnerRequest extends Message {\n /**\n * The runner name for humans\n *\n * @generated from field: string name = 1;\n */\n name = \"\";\n\n /**\n * The runner's kind\n *\n * We deliberately do not validate the input just yet to maintain backwards compatibility\n * with existing local apps.\n *\n * @generated from field: gitpod.v1.RunnerKind kind = 2;\n */\n kind = RunnerKind.UNSPECIFIED;\n\n /**\n * @generated from field: gitpod.v1.RunnerSpec spec = 3;\n */\n spec?: RunnerSpec;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateRunnerRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"kind\", kind: \"enum\", T: proto3.getEnumType(RunnerKind) },\n { no: 3, name: \"spec\", kind: \"message\", T: RunnerSpec },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateRunnerRequest {\n return new CreateRunnerRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateRunnerRequest {\n return new CreateRunnerRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateRunnerRequest {\n return new CreateRunnerRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateRunnerRequest | PlainMessage | undefined, b: CreateRunnerRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateRunnerRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateRunnerResponse\n */\nexport class CreateRunnerResponse extends Message {\n /**\n * @generated from field: gitpod.v1.Runner runner = 1;\n */\n runner?: Runner;\n\n /**\n * @generated from field: string access_token = 2;\n */\n accessToken = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateRunnerResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner\", kind: \"message\", T: Runner },\n { no: 2, name: \"access_token\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateRunnerResponse {\n return new CreateRunnerResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateRunnerResponse {\n return new CreateRunnerResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateRunnerResponse {\n return new CreateRunnerResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateRunnerResponse | PlainMessage | undefined, b: CreateRunnerResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateRunnerResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetRunnerRequest\n */\nexport class GetRunnerRequest extends Message {\n /**\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetRunnerRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetRunnerRequest {\n return new GetRunnerRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetRunnerRequest {\n return new GetRunnerRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetRunnerRequest {\n return new GetRunnerRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetRunnerRequest | PlainMessage | undefined, b: GetRunnerRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetRunnerRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetRunnerResponse\n */\nexport class GetRunnerResponse extends Message {\n /**\n * @generated from field: gitpod.v1.Runner runner = 1;\n */\n runner?: Runner;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetRunnerResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner\", kind: \"message\", T: Runner },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetRunnerResponse {\n return new GetRunnerResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetRunnerResponse {\n return new GetRunnerResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetRunnerResponse {\n return new GetRunnerResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetRunnerResponse | PlainMessage | undefined, b: GetRunnerResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetRunnerResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListRunnersRequest\n */\nexport class ListRunnersRequest extends Message {\n /**\n * pagination contains the pagination options for listing runners\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * @generated from field: gitpod.v1.ListRunnersRequest.Filter filter = 2;\n */\n filter?: ListRunnersRequest_Filter;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListRunnersRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"filter\", kind: \"message\", T: ListRunnersRequest_Filter },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListRunnersRequest {\n return new ListRunnersRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListRunnersRequest {\n return new ListRunnersRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListRunnersRequest {\n return new ListRunnersRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListRunnersRequest | PlainMessage | undefined, b: ListRunnersRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListRunnersRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListRunnersRequest.Filter\n */\nexport class ListRunnersRequest_Filter extends Message {\n /**\n * creator_ids filters the response to only runner created by specified users\n *\n * @generated from field: repeated string creator_ids = 1;\n */\n creatorIds: string[] = [];\n\n /**\n * kinds filters the response to only runners of the specified kinds\n *\n * @generated from field: repeated gitpod.v1.RunnerKind kinds = 2;\n */\n kinds: RunnerKind[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListRunnersRequest.Filter\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"creator_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 2, name: \"kinds\", kind: \"enum\", T: proto3.getEnumType(RunnerKind), repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListRunnersRequest_Filter {\n return new ListRunnersRequest_Filter().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListRunnersRequest_Filter {\n return new ListRunnersRequest_Filter().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListRunnersRequest_Filter {\n return new ListRunnersRequest_Filter().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListRunnersRequest_Filter | PlainMessage | undefined, b: ListRunnersRequest_Filter | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListRunnersRequest_Filter, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListRunnersResponse\n */\nexport class ListRunnersResponse extends Message {\n /**\n * pagination contains the pagination options for listing runners\n *\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * The runners registered in the scope\n *\n * @generated from field: repeated gitpod.v1.Runner runners = 2;\n */\n runners: Runner[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListRunnersResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"runners\", kind: \"message\", T: Runner, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListRunnersResponse {\n return new ListRunnersResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListRunnersResponse {\n return new ListRunnersResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListRunnersResponse {\n return new ListRunnersResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListRunnersResponse | PlainMessage | undefined, b: ListRunnersResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListRunnersResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateRunnerRequest\n */\nexport class UpdateRunnerRequest extends Message {\n /**\n * runner_id specifies which runner to be updated.\n *\n * +required\n *\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * The runner's name which is shown to users\n *\n * @generated from field: optional string name = 2;\n */\n name?: string;\n\n /**\n * @generated from field: optional gitpod.v1.UpdateRunnerRequest.Spec spec = 3;\n */\n spec?: UpdateRunnerRequest_Spec;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateRunnerRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"spec\", kind: \"message\", T: UpdateRunnerRequest_Spec, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateRunnerRequest {\n return new UpdateRunnerRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateRunnerRequest {\n return new UpdateRunnerRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateRunnerRequest {\n return new UpdateRunnerRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateRunnerRequest | PlainMessage | undefined, b: UpdateRunnerRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateRunnerRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateRunnerRequest.RunnerConfiguration\n */\nexport class UpdateRunnerRequest_RunnerConfiguration extends Message {\n /**\n * The release channel the runner is on\n *\n * @generated from field: optional gitpod.v1.RunnerReleaseChannel release_channel = 1;\n */\n releaseChannel?: RunnerReleaseChannel;\n\n /**\n * auto_update indicates whether the runner should automatically update itself.\n *\n * @generated from field: optional bool auto_update = 2;\n */\n autoUpdate?: boolean;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateRunnerRequest.RunnerConfiguration\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"release_channel\", kind: \"enum\", T: proto3.getEnumType(RunnerReleaseChannel), opt: true },\n { no: 2, name: \"auto_update\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateRunnerRequest_RunnerConfiguration {\n return new UpdateRunnerRequest_RunnerConfiguration().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateRunnerRequest_RunnerConfiguration {\n return new UpdateRunnerRequest_RunnerConfiguration().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateRunnerRequest_RunnerConfiguration {\n return new UpdateRunnerRequest_RunnerConfiguration().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateRunnerRequest_RunnerConfiguration | PlainMessage | undefined, b: UpdateRunnerRequest_RunnerConfiguration | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateRunnerRequest_RunnerConfiguration, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateRunnerRequest.Spec\n */\nexport class UpdateRunnerRequest_Spec extends Message {\n /**\n * @generated from field: optional gitpod.v1.UpdateRunnerRequest.RunnerConfiguration configuration = 1;\n */\n configuration?: UpdateRunnerRequest_RunnerConfiguration;\n\n /**\n * desired_phase can currently only be updated on local-configuration runners,\n * to toggle whether local runners are allowed for running environments in the\n * organization.\n * Set to:\n * - ACTIVE to enable local runners.\n * - INACTIVE to disable all local runners. Existing local runners and their\n * environments will stop, and cannot be started again until the desired_phase\n * is set to ACTIVE. Use this carefully, as it will affect all users in the\n * organization who use local runners.\n *\n * @generated from field: optional gitpod.v1.RunnerPhase desired_phase = 2;\n */\n desiredPhase?: RunnerPhase;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateRunnerRequest.Spec\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"configuration\", kind: \"message\", T: UpdateRunnerRequest_RunnerConfiguration, opt: true },\n { no: 2, name: \"desired_phase\", kind: \"enum\", T: proto3.getEnumType(RunnerPhase), opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateRunnerRequest_Spec {\n return new UpdateRunnerRequest_Spec().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateRunnerRequest_Spec {\n return new UpdateRunnerRequest_Spec().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateRunnerRequest_Spec {\n return new UpdateRunnerRequest_Spec().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateRunnerRequest_Spec | PlainMessage | undefined, b: UpdateRunnerRequest_Spec | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateRunnerRequest_Spec, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateRunnerResponse\n */\nexport class UpdateRunnerResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateRunnerResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateRunnerResponse {\n return new UpdateRunnerResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateRunnerResponse {\n return new UpdateRunnerResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateRunnerResponse {\n return new UpdateRunnerResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateRunnerResponse | PlainMessage | undefined, b: UpdateRunnerResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateRunnerResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteRunnerRequest\n */\nexport class DeleteRunnerRequest extends Message {\n /**\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * force indicates whether the runner should be deleted forcefully.\n * When force deleting a Runner, all Environments on the runner are also force deleted and\n * regular Runner lifecycle is not respected.\n * Force deleting can result in data loss.\n *\n * @generated from field: bool force = 2;\n */\n force = false;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteRunnerRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"force\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteRunnerRequest {\n return new DeleteRunnerRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteRunnerRequest {\n return new DeleteRunnerRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteRunnerRequest {\n return new DeleteRunnerRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteRunnerRequest | PlainMessage | undefined, b: DeleteRunnerRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteRunnerRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteRunnerResponse\n */\nexport class DeleteRunnerResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteRunnerResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteRunnerResponse {\n return new DeleteRunnerResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteRunnerResponse {\n return new DeleteRunnerResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteRunnerResponse {\n return new DeleteRunnerResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteRunnerResponse | PlainMessage | undefined, b: DeleteRunnerResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteRunnerResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateRunnerTokenRequest\n */\nexport class CreateRunnerTokenRequest extends Message {\n /**\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateRunnerTokenRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateRunnerTokenRequest {\n return new CreateRunnerTokenRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateRunnerTokenRequest {\n return new CreateRunnerTokenRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateRunnerTokenRequest {\n return new CreateRunnerTokenRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateRunnerTokenRequest | PlainMessage | undefined, b: CreateRunnerTokenRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateRunnerTokenRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateRunnerTokenResponse\n */\nexport class CreateRunnerTokenResponse extends Message {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateRunnerTokenResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"access_token\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateRunnerTokenResponse {\n return new CreateRunnerTokenResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateRunnerTokenResponse {\n return new CreateRunnerTokenResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateRunnerTokenResponse {\n return new CreateRunnerTokenResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateRunnerTokenResponse | PlainMessage | undefined, b: CreateRunnerTokenResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateRunnerTokenResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ParseContextURLRequest\n */\nexport class ParseContextURLRequest extends Message {\n /**\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * @generated from field: string context_url = 2;\n */\n contextUrl = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ParseContextURLRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"context_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ParseContextURLRequest {\n return new ParseContextURLRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ParseContextURLRequest {\n return new ParseContextURLRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ParseContextURLRequest {\n return new ParseContextURLRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ParseContextURLRequest | PlainMessage | undefined, b: ParseContextURLRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ParseContextURLRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ParseContextURLResponse\n */\nexport class ParseContextURLResponse extends Message {\n /**\n * @generated from field: string original_context_url = 1;\n */\n originalContextUrl = \"\";\n\n /**\n * @generated from field: gitpod.v1.ParseContextURLResponse.GitContext git = 2;\n */\n git?: ParseContextURLResponse_GitContext;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ParseContextURLResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"original_context_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"git\", kind: \"message\", T: ParseContextURLResponse_GitContext },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ParseContextURLResponse {\n return new ParseContextURLResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ParseContextURLResponse {\n return new ParseContextURLResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ParseContextURLResponse {\n return new ParseContextURLResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ParseContextURLResponse | PlainMessage | undefined, b: ParseContextURLResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ParseContextURLResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ParseContextURLResponse.GitContext\n */\nexport class ParseContextURLResponse_GitContext extends Message {\n /**\n * @generated from field: string clone_url = 1;\n */\n cloneUrl = \"\";\n\n /**\n * @generated from field: string branch = 2;\n */\n branch = \"\";\n\n /**\n * @generated from field: string commit = 3;\n */\n commit = \"\";\n\n /**\n * @generated from field: string host = 4;\n */\n host = \"\";\n\n /**\n * @generated from field: string owner = 5;\n */\n owner = \"\";\n\n /**\n * @generated from field: string repo = 6;\n */\n repo = \"\";\n\n /**\n * @generated from field: string upstream_remote_url = 7;\n */\n upstreamRemoteUrl = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ParseContextURLResponse.GitContext\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"clone_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"branch\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"commit\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"host\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"owner\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 6, name: \"repo\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 7, name: \"upstream_remote_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ParseContextURLResponse_GitContext {\n return new ParseContextURLResponse_GitContext().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ParseContextURLResponse_GitContext {\n return new ParseContextURLResponse_GitContext().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ParseContextURLResponse_GitContext {\n return new ParseContextURLResponse_GitContext().fromJsonString(jsonString, options);\n }\n\n static equals(a: ParseContextURLResponse_GitContext | PlainMessage | undefined, b: ParseContextURLResponse_GitContext | PlainMessage | undefined): boolean {\n return proto3.util.equals(ParseContextURLResponse_GitContext, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ParseContextURLPreconditionFailureDetails\n */\nexport class ParseContextURLPreconditionFailureDetails extends Message {\n /**\n * @generated from field: string authentication_required_url = 1;\n */\n authenticationRequiredUrl = \"\";\n\n /**\n * @generated from field: string scm_id = 2;\n */\n scmId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ParseContextURLPreconditionFailureDetails\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"authentication_required_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"scm_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ParseContextURLPreconditionFailureDetails {\n return new ParseContextURLPreconditionFailureDetails().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ParseContextURLPreconditionFailureDetails {\n return new ParseContextURLPreconditionFailureDetails().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ParseContextURLPreconditionFailureDetails {\n return new ParseContextURLPreconditionFailureDetails().fromJsonString(jsonString, options);\n }\n\n static equals(a: ParseContextURLPreconditionFailureDetails | PlainMessage | undefined, b: ParseContextURLPreconditionFailureDetails | PlainMessage | undefined): boolean {\n return proto3.util.equals(ParseContextURLPreconditionFailureDetails, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CheckAuthenticationForHostRequest\n */\nexport class CheckAuthenticationForHostRequest extends Message {\n /**\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * @generated from field: string host = 2;\n */\n host = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CheckAuthenticationForHostRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"host\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CheckAuthenticationForHostRequest {\n return new CheckAuthenticationForHostRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CheckAuthenticationForHostRequest {\n return new CheckAuthenticationForHostRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CheckAuthenticationForHostRequest {\n return new CheckAuthenticationForHostRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CheckAuthenticationForHostRequest | PlainMessage | undefined, b: CheckAuthenticationForHostRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CheckAuthenticationForHostRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CheckAuthenticationForHostResponse\n */\nexport class CheckAuthenticationForHostResponse extends Message {\n /**\n * @generated from field: bool authenticated = 1;\n */\n authenticated = false;\n\n /**\n * @generated from field: string authentication_url = 2;\n */\n authenticationUrl = \"\";\n\n /**\n * @generated from field: bool pat_supported = 3;\n */\n patSupported = false;\n\n /**\n * @generated from field: string scm_id = 4;\n */\n scmId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CheckAuthenticationForHostResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"authenticated\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n { no: 2, name: \"authentication_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"pat_supported\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n { no: 4, name: \"scm_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CheckAuthenticationForHostResponse {\n return new CheckAuthenticationForHostResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CheckAuthenticationForHostResponse {\n return new CheckAuthenticationForHostResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CheckAuthenticationForHostResponse {\n return new CheckAuthenticationForHostResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CheckAuthenticationForHostResponse | PlainMessage | undefined, b: CheckAuthenticationForHostResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CheckAuthenticationForHostResponse, a, b);\n }\n}\n\n/**\n * ListRunnerPoliciesRequest lists policies for a project.\n *\n * @generated from message gitpod.v1.ListRunnerPoliciesRequest\n */\nexport class ListRunnerPoliciesRequest extends Message {\n /**\n * pagination contains the pagination options for listing project policies\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * runner_id specifies the project identifier\n *\n * @generated from field: string runner_id = 2;\n */\n runnerId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListRunnerPoliciesRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListRunnerPoliciesRequest {\n return new ListRunnerPoliciesRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListRunnerPoliciesRequest {\n return new ListRunnerPoliciesRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListRunnerPoliciesRequest {\n return new ListRunnerPoliciesRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListRunnerPoliciesRequest | PlainMessage | undefined, b: ListRunnerPoliciesRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListRunnerPoliciesRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListRunnerPoliciesResponse\n */\nexport class ListRunnerPoliciesResponse extends Message {\n /**\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * @generated from field: repeated gitpod.v1.RunnerPolicy policies = 2;\n */\n policies: RunnerPolicy[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListRunnerPoliciesResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"policies\", kind: \"message\", T: RunnerPolicy, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListRunnerPoliciesResponse {\n return new ListRunnerPoliciesResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListRunnerPoliciesResponse {\n return new ListRunnerPoliciesResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListRunnerPoliciesResponse {\n return new ListRunnerPoliciesResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListRunnerPoliciesResponse | PlainMessage | undefined, b: ListRunnerPoliciesResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListRunnerPoliciesResponse, a, b);\n }\n}\n\n/**\n * CreateRunnerPolicyRequest creates a Runner Policy.\n *\n * @generated from message gitpod.v1.CreateRunnerPolicyRequest\n */\nexport class CreateRunnerPolicyRequest extends Message {\n /**\n * runner_id specifies the project identifier\n *\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * group_id specifies the group_id identifier\n *\n * @generated from field: string group_id = 2;\n */\n groupId = \"\";\n\n /**\n * @generated from field: gitpod.v1.RunnerRole role = 3;\n */\n role = RunnerRole.UNSPECIFIED;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateRunnerPolicyRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"group_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"role\", kind: \"enum\", T: proto3.getEnumType(RunnerRole) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateRunnerPolicyRequest {\n return new CreateRunnerPolicyRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateRunnerPolicyRequest {\n return new CreateRunnerPolicyRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateRunnerPolicyRequest {\n return new CreateRunnerPolicyRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateRunnerPolicyRequest | PlainMessage | undefined, b: CreateRunnerPolicyRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateRunnerPolicyRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateRunnerPolicyResponse\n */\nexport class CreateRunnerPolicyResponse extends Message {\n /**\n * @generated from field: gitpod.v1.RunnerPolicy policy = 1;\n */\n policy?: RunnerPolicy;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateRunnerPolicyResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"policy\", kind: \"message\", T: RunnerPolicy },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateRunnerPolicyResponse {\n return new CreateRunnerPolicyResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateRunnerPolicyResponse {\n return new CreateRunnerPolicyResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateRunnerPolicyResponse {\n return new CreateRunnerPolicyResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateRunnerPolicyResponse | PlainMessage | undefined, b: CreateRunnerPolicyResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateRunnerPolicyResponse, a, b);\n }\n}\n\n/**\n * UpdateRunnerPolicyRequest updates a Project Policy.\n *\n * @generated from message gitpod.v1.UpdateRunnerPolicyRequest\n */\nexport class UpdateRunnerPolicyRequest extends Message {\n /**\n * runner_id specifies the project identifier\n *\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * group_id specifies the group_id identifier\n *\n * @generated from field: string group_id = 2;\n */\n groupId = \"\";\n\n /**\n * @generated from field: gitpod.v1.RunnerRole role = 3;\n */\n role = RunnerRole.UNSPECIFIED;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateRunnerPolicyRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"group_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"role\", kind: \"enum\", T: proto3.getEnumType(RunnerRole) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateRunnerPolicyRequest {\n return new UpdateRunnerPolicyRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateRunnerPolicyRequest {\n return new UpdateRunnerPolicyRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateRunnerPolicyRequest {\n return new UpdateRunnerPolicyRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateRunnerPolicyRequest | PlainMessage | undefined, b: UpdateRunnerPolicyRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateRunnerPolicyRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateRunnerPolicyResponse\n */\nexport class UpdateRunnerPolicyResponse extends Message {\n /**\n * @generated from field: gitpod.v1.RunnerPolicy policy = 1;\n */\n policy?: RunnerPolicy;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateRunnerPolicyResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"policy\", kind: \"message\", T: RunnerPolicy },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateRunnerPolicyResponse {\n return new UpdateRunnerPolicyResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateRunnerPolicyResponse {\n return new UpdateRunnerPolicyResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateRunnerPolicyResponse {\n return new UpdateRunnerPolicyResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateRunnerPolicyResponse | PlainMessage | undefined, b: UpdateRunnerPolicyResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateRunnerPolicyResponse, a, b);\n }\n}\n\n/**\n * DeleteRunnerPolicyRequest deletes a Project Policy.\n *\n * @generated from message gitpod.v1.DeleteRunnerPolicyRequest\n */\nexport class DeleteRunnerPolicyRequest extends Message {\n /**\n * runner_id specifies the project identifier\n *\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * group_id specifies the group_id identifier\n *\n * @generated from field: string group_id = 2;\n */\n groupId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteRunnerPolicyRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"group_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteRunnerPolicyRequest {\n return new DeleteRunnerPolicyRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteRunnerPolicyRequest {\n return new DeleteRunnerPolicyRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteRunnerPolicyRequest {\n return new DeleteRunnerPolicyRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteRunnerPolicyRequest | PlainMessage | undefined, b: DeleteRunnerPolicyRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteRunnerPolicyRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteRunnerPolicyResponse\n */\nexport class DeleteRunnerPolicyResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteRunnerPolicyResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteRunnerPolicyResponse {\n return new DeleteRunnerPolicyResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteRunnerPolicyResponse {\n return new DeleteRunnerPolicyResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteRunnerPolicyResponse {\n return new DeleteRunnerPolicyResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteRunnerPolicyResponse | PlainMessage | undefined, b: DeleteRunnerPolicyResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteRunnerPolicyResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.Runner\n */\nexport class Runner extends Message {\n /**\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * Time when the Runner was created.\n *\n * @generated from field: google.protobuf.Timestamp created_at = 2;\n */\n createdAt?: Timestamp;\n\n /**\n * Time when the Runner was last udpated.\n *\n * @generated from field: google.protobuf.Timestamp updated_at = 3;\n */\n updatedAt?: Timestamp;\n\n /**\n * The runner's name which is shown to users\n *\n * @generated from field: string name = 4;\n */\n name = \"\";\n\n /**\n * The runner's specification\n *\n * @generated from field: gitpod.v1.RunnerSpec spec = 5;\n */\n spec?: RunnerSpec;\n\n /**\n * The runner's status\n *\n * @generated from field: gitpod.v1.RunnerStatus status = 6;\n */\n status?: RunnerStatus;\n\n /**\n * creator is the identity of the creator of the environment\n *\n * @generated from field: gitpod.v1.Subject creator = 7;\n */\n creator?: Subject;\n\n /**\n * The runner's kind\n *\n * @generated from field: gitpod.v1.RunnerKind kind = 8;\n */\n kind = RunnerKind.UNSPECIFIED;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.Runner\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"created_at\", kind: \"message\", T: Timestamp },\n { no: 3, name: \"updated_at\", kind: \"message\", T: Timestamp },\n { no: 4, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"spec\", kind: \"message\", T: RunnerSpec },\n { no: 6, name: \"status\", kind: \"message\", T: RunnerStatus },\n { no: 7, name: \"creator\", kind: \"message\", T: Subject },\n { no: 8, name: \"kind\", kind: \"enum\", T: proto3.getEnumType(RunnerKind) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): Runner {\n return new Runner().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): Runner {\n return new Runner().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): Runner {\n return new Runner().fromJsonString(jsonString, options);\n }\n\n static equals(a: Runner | PlainMessage | undefined, b: Runner | PlainMessage | undefined): boolean {\n return proto3.util.equals(Runner, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.RunnerSpec\n */\nexport class RunnerSpec extends Message {\n /**\n * @generated from field: gitpod.v1.RunnerPhase desired_phase = 1;\n */\n desiredPhase = RunnerPhase.UNSPECIFIED;\n\n /**\n * The runner's configuration\n *\n * @generated from field: gitpod.v1.RunnerConfiguration configuration = 2;\n */\n configuration?: RunnerConfiguration;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.RunnerSpec\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"desired_phase\", kind: \"enum\", T: proto3.getEnumType(RunnerPhase) },\n { no: 2, name: \"configuration\", kind: \"message\", T: RunnerConfiguration },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunnerSpec {\n return new RunnerSpec().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunnerSpec {\n return new RunnerSpec().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunnerSpec {\n return new RunnerSpec().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunnerSpec | PlainMessage | undefined, b: RunnerSpec | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunnerSpec, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.RunnerConfiguration\n */\nexport class RunnerConfiguration extends Message {\n /**\n * Region to deploy the runner in, if applicable.\n * This is mainly used for remote runners, and is only a hint. The runner may be\n * deployed in a different region. See the runner's status for the actual region.\n *\n * @generated from field: string region = 1;\n */\n region = \"\";\n\n /**\n * The release channel the runner is on\n *\n * @generated from field: gitpod.v1.RunnerReleaseChannel release_channel = 2;\n */\n releaseChannel = RunnerReleaseChannel.UNSPECIFIED;\n\n /**\n * auto_update indicates whether the runner should automatically update itself.\n *\n * @generated from field: bool auto_update = 3;\n */\n autoUpdate = false;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.RunnerConfiguration\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"region\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"release_channel\", kind: \"enum\", T: proto3.getEnumType(RunnerReleaseChannel) },\n { no: 3, name: \"auto_update\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunnerConfiguration {\n return new RunnerConfiguration().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunnerConfiguration {\n return new RunnerConfiguration().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunnerConfiguration {\n return new RunnerConfiguration().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunnerConfiguration | PlainMessage | undefined, b: RunnerConfiguration | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunnerConfiguration, a, b);\n }\n}\n\n/**\n * RunnerStatus represents the status of a runner\n *\n * @generated from message gitpod.v1.RunnerStatus\n */\nexport class RunnerStatus extends Message {\n /**\n * Time when the status was last udpated.\n *\n * @generated from field: google.protobuf.Timestamp updated_at = 1;\n */\n updatedAt?: Timestamp;\n\n /**\n * @generated from field: string version = 2;\n */\n version = \"\";\n\n /**\n * @generated from field: string system_details = 3;\n */\n systemDetails = \"\";\n\n /**\n * The runner's reported phase\n *\n * @generated from field: gitpod.v1.RunnerPhase phase = 4;\n */\n phase = RunnerPhase.UNSPECIFIED;\n\n /**\n * @generated from field: string log_url = 5;\n */\n logUrl = \"\";\n\n /**\n * The runner's reported message which is shown to users.\n * This message adds more context to the runner's phase.\n *\n * @generated from field: string message = 6;\n */\n message = \"\";\n\n /**\n * region is the region the runner is running in, if applicable.\n *\n * @generated from field: string region = 7;\n */\n region = \"\";\n\n /**\n * additional_info contains additional information about the runner,\n * e.g. a CloudFormation stack URL.\n *\n * @generated from field: repeated gitpod.v1.FieldValue additional_info = 8;\n */\n additionalInfo: FieldValue[] = [];\n\n /**\n * capabilities is a list of capabilities the runner supports.\n *\n * @generated from field: repeated gitpod.v1.RunnerCapability capabilities = 9;\n */\n capabilities: RunnerCapability[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.RunnerStatus\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"updated_at\", kind: \"message\", T: Timestamp },\n { no: 2, name: \"version\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"system_details\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"phase\", kind: \"enum\", T: proto3.getEnumType(RunnerPhase) },\n { no: 5, name: \"log_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 6, name: \"message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 7, name: \"region\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 8, name: \"additional_info\", kind: \"message\", T: FieldValue, repeated: true },\n { no: 9, name: \"capabilities\", kind: \"enum\", T: proto3.getEnumType(RunnerCapability), repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunnerStatus {\n return new RunnerStatus().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunnerStatus {\n return new RunnerStatus().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunnerStatus {\n return new RunnerStatus().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunnerStatus | PlainMessage | undefined, b: RunnerStatus | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunnerStatus, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.RunnerPolicy\n */\nexport class RunnerPolicy extends Message {\n /**\n * @generated from field: string group_id = 1;\n */\n groupId = \"\";\n\n /**\n * role is the role assigned to the group\n *\n * @generated from field: gitpod.v1.RunnerRole role = 2;\n */\n role = RunnerRole.UNSPECIFIED;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.RunnerPolicy\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"group_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"role\", kind: \"enum\", T: proto3.getEnumType(RunnerRole) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunnerPolicy {\n return new RunnerPolicy().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunnerPolicy {\n return new RunnerPolicy().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunnerPolicy {\n return new RunnerPolicy().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunnerPolicy | PlainMessage | undefined, b: RunnerPolicy | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunnerPolicy, a, b);\n }\n}\n\n","// @generated by protoc-gen-es v1.8.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/environment.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Duration, Message, proto3, protoInt64, Timestamp } from \"@bufbuild/protobuf\";\nimport { PaginationRequest, PaginationResponse } from \"./pagination_pb.js\";\nimport { RunnerKind } from \"./runner_pb.js\";\nimport { Subject } from \"./identity_pb.js\";\n\n/**\n * Admission level describes who can access an environment instance and its ports.\n *\n * @generated from enum gitpod.v1.AdmissionLevel\n */\nexport enum AdmissionLevel {\n /**\n * @generated from enum value: ADMISSION_LEVEL_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * ADMISSION_LEVEL_OWNER_ONLY means the environment can only be accessed using\n * the owner token\n *\n * @generated from enum value: ADMISSION_LEVEL_OWNER_ONLY = 1;\n */\n OWNER_ONLY = 1,\n\n /**\n * ADMISSION_LEVEL_EVERYONE means the environment (including ports) can be\n * accessed by everyone.\n *\n * @generated from enum value: ADMISSION_LEVEL_EVERYONE = 2;\n */\n EVERYONE = 2,\n}\n// Retrieve enum metadata with: proto3.getEnumType(AdmissionLevel)\nproto3.util.setEnumType(AdmissionLevel, \"gitpod.v1.AdmissionLevel\", [\n { no: 0, name: \"ADMISSION_LEVEL_UNSPECIFIED\" },\n { no: 1, name: \"ADMISSION_LEVEL_OWNER_ONLY\" },\n { no: 2, name: \"ADMISSION_LEVEL_EVERYONE\" },\n]);\n\n/**\n * @generated from enum gitpod.v1.EnvironmentPhase\n */\nexport enum EnvironmentPhase {\n /**\n * Unknown indicates an issue within the environment manager in that it cannot\n * determine the actual phase of an environment. This phase is usually\n * accompanied by an error.\n *\n * @generated from enum value: ENVIRONMENT_PHASE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * Creating means that the environment is first created. We organise the SCM credentials,\n * parse context URL if need be, and allocate the unit of compute.\n *\n * @generated from enum value: ENVIRONMENT_PHASE_CREATING = 10;\n */\n CREATING = 10,\n\n /**\n * Starting means that the environment is currently being started. This includes\n * starting the unit of compute (machine), resolving secrets, setting up the Git config,\n * initiaing the content, and starting the devcontainer.\n *\n * @generated from enum value: ENVIRONMENT_PHASE_STARTING = 20;\n */\n STARTING = 20,\n\n /**\n * Running means the environment is able to actively perform work, either by\n * serving a user through Theia, or as a headless environment.\n *\n * @generated from enum value: ENVIRONMENT_PHASE_RUNNING = 40;\n */\n RUNNING = 40,\n\n /**\n * Updating means the environment is currently being updated. This includes\n * content updates, devcontainer updates, secret updates and SSH public key updates.\n * This phase implies that the environment is running.\n *\n * @generated from enum value: ENVIRONMENT_PHASE_UPDATING = 45;\n */\n UPDATING = 45,\n\n /**\n * Stopping means that the environment is currently shutting down. It could go\n * to stopped every moment.\n *\n * @generated from enum value: ENVIRONMENT_PHASE_STOPPING = 50;\n */\n STOPPING = 50,\n\n /**\n * Stopped means the environment ended regularly because it was shut down.\n *\n * @generated from enum value: ENVIRONMENT_PHASE_STOPPED = 60;\n */\n STOPPED = 60,\n\n /**\n * Deleting means the environment is currently being deleted. It could go to\n * deleted any moment. This phase implies that the environment is stopped.\n *\n * @generated from enum value: ENVIRONMENT_PHASE_DELETING = 70;\n */\n DELETING = 70,\n\n /**\n * Deleted means the environment was deleted and cannot be started again.\n * This phase implies that the environment is stopped.\n *\n * @generated from enum value: ENVIRONMENT_PHASE_DELETED = 80;\n */\n DELETED = 80,\n}\n// Retrieve enum metadata with: proto3.getEnumType(EnvironmentPhase)\nproto3.util.setEnumType(EnvironmentPhase, \"gitpod.v1.EnvironmentPhase\", [\n { no: 0, name: \"ENVIRONMENT_PHASE_UNSPECIFIED\" },\n { no: 10, name: \"ENVIRONMENT_PHASE_CREATING\" },\n { no: 20, name: \"ENVIRONMENT_PHASE_STARTING\" },\n { no: 40, name: \"ENVIRONMENT_PHASE_RUNNING\" },\n { no: 45, name: \"ENVIRONMENT_PHASE_UPDATING\" },\n { no: 50, name: \"ENVIRONMENT_PHASE_STOPPING\" },\n { no: 60, name: \"ENVIRONMENT_PHASE_STOPPED\" },\n { no: 70, name: \"ENVIRONMENT_PHASE_DELETING\" },\n { no: 80, name: \"ENVIRONMENT_PHASE_DELETED\" },\n]);\n\n/**\n * @generated from message gitpod.v1.MarkEnvironmentActiveRequest\n */\nexport class MarkEnvironmentActiveRequest extends Message {\n /**\n * The ID of the environment to update activity for.\n *\n * @generated from field: string environment_id = 1;\n */\n environmentId = \"\";\n\n /**\n * activity_signal specifies the activity.\n *\n * @generated from field: gitpod.v1.EnvironmentActivitySignal activity_signal = 2;\n */\n activitySignal?: EnvironmentActivitySignal;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.MarkEnvironmentActiveRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"activity_signal\", kind: \"message\", T: EnvironmentActivitySignal },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): MarkEnvironmentActiveRequest {\n return new MarkEnvironmentActiveRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): MarkEnvironmentActiveRequest {\n return new MarkEnvironmentActiveRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): MarkEnvironmentActiveRequest {\n return new MarkEnvironmentActiveRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: MarkEnvironmentActiveRequest | PlainMessage | undefined, b: MarkEnvironmentActiveRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(MarkEnvironmentActiveRequest, a, b);\n }\n}\n\n/**\n * EnvironmentActivitySignal used to signal activity for an environment.\n *\n * @generated from message gitpod.v1.EnvironmentActivitySignal\n */\nexport class EnvironmentActivitySignal extends Message {\n /**\n * source of the activity signal, such as \"VS Code\", \"SSH\", or \"Automations\".\n * It should be a human-readable string that describes the source of the activity signal.\n *\n * @generated from field: string source = 1;\n */\n source = \"\";\n\n /**\n * timestamp of when the activity was observed by the source.\n * Only reported every 5 minutes.\n * Zero value means no activity was observed.\n *\n * @generated from field: google.protobuf.Timestamp timestamp = 2;\n */\n timestamp?: Timestamp;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentActivitySignal\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"source\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"timestamp\", kind: \"message\", T: Timestamp },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentActivitySignal {\n return new EnvironmentActivitySignal().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentActivitySignal {\n return new EnvironmentActivitySignal().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentActivitySignal {\n return new EnvironmentActivitySignal().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentActivitySignal | PlainMessage | undefined, b: EnvironmentActivitySignal | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentActivitySignal, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.MarkEnvironmentActiveResponse\n */\nexport class MarkEnvironmentActiveResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.MarkEnvironmentActiveResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): MarkEnvironmentActiveResponse {\n return new MarkEnvironmentActiveResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): MarkEnvironmentActiveResponse {\n return new MarkEnvironmentActiveResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): MarkEnvironmentActiveResponse {\n return new MarkEnvironmentActiveResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: MarkEnvironmentActiveResponse | PlainMessage | undefined, b: MarkEnvironmentActiveResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(MarkEnvironmentActiveResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetEnvironmentRequest\n */\nexport class GetEnvironmentRequest extends Message {\n /**\n * environment_id specifies the environment to get\n *\n * @generated from field: string environment_id = 1;\n */\n environmentId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetEnvironmentRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetEnvironmentRequest {\n return new GetEnvironmentRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetEnvironmentRequest {\n return new GetEnvironmentRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetEnvironmentRequest {\n return new GetEnvironmentRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetEnvironmentRequest | PlainMessage | undefined, b: GetEnvironmentRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetEnvironmentRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetEnvironmentResponse\n */\nexport class GetEnvironmentResponse extends Message {\n /**\n * @generated from field: gitpod.v1.Environment environment = 1;\n */\n environment?: Environment;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetEnvironmentResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment\", kind: \"message\", T: Environment },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetEnvironmentResponse {\n return new GetEnvironmentResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetEnvironmentResponse {\n return new GetEnvironmentResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetEnvironmentResponse {\n return new GetEnvironmentResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetEnvironmentResponse | PlainMessage | undefined, b: GetEnvironmentResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetEnvironmentResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListEnvironmentsRequest\n */\nexport class ListEnvironmentsRequest extends Message {\n /**\n * pagination contains the pagination options for listing environments\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * organization_id is the ID of the organization that contains the environments\n *\n * @generated from field: string organization_id = 2;\n */\n organizationId = \"\";\n\n /**\n * @generated from field: gitpod.v1.ListEnvironmentsRequest.Filter filter = 3;\n */\n filter?: ListEnvironmentsRequest_Filter;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListEnvironmentsRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"filter\", kind: \"message\", T: ListEnvironmentsRequest_Filter },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListEnvironmentsRequest {\n return new ListEnvironmentsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListEnvironmentsRequest {\n return new ListEnvironmentsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListEnvironmentsRequest {\n return new ListEnvironmentsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListEnvironmentsRequest | PlainMessage | undefined, b: ListEnvironmentsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListEnvironmentsRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListEnvironmentsRequest.Filter\n */\nexport class ListEnvironmentsRequest_Filter extends Message {\n /**\n * runner_ids filters the response to only Environments running on these Runner IDs\n *\n * @generated from field: repeated string runner_ids = 1;\n */\n runnerIds: string[] = [];\n\n /**\n * actual_phases is a list of phases the environment must be in for it to be returned in the API call\n *\n * @generated from field: repeated gitpod.v1.EnvironmentPhase status_phases = 2;\n */\n statusPhases: EnvironmentPhase[] = [];\n\n /**\n * creator_ids filters the response to only Environments created by specified members\n *\n * @generated from field: repeated string creator_ids = 3;\n */\n creatorIds: string[] = [];\n\n /**\n * project_ids filters the response to only Environments associated with the specified projects\n *\n * @generated from field: repeated string project_ids = 4;\n */\n projectIds: string[] = [];\n\n /**\n * runner_kinds filters the response to only Environments running on these Runner Kinds\n *\n * @generated from field: repeated gitpod.v1.RunnerKind runner_kinds = 5;\n */\n runnerKinds: RunnerKind[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListEnvironmentsRequest.Filter\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 2, name: \"status_phases\", kind: \"enum\", T: proto3.getEnumType(EnvironmentPhase), repeated: true },\n { no: 3, name: \"creator_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 4, name: \"project_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 5, name: \"runner_kinds\", kind: \"enum\", T: proto3.getEnumType(RunnerKind), repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListEnvironmentsRequest_Filter {\n return new ListEnvironmentsRequest_Filter().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListEnvironmentsRequest_Filter {\n return new ListEnvironmentsRequest_Filter().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListEnvironmentsRequest_Filter {\n return new ListEnvironmentsRequest_Filter().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListEnvironmentsRequest_Filter | PlainMessage | undefined, b: ListEnvironmentsRequest_Filter | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListEnvironmentsRequest_Filter, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListEnvironmentsResponse\n */\nexport class ListEnvironmentsResponse extends Message {\n /**\n * pagination contains the pagination options for listing environments\n *\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * environments are the environments that matched the query\n *\n * @generated from field: repeated gitpod.v1.Environment environments = 2;\n */\n environments: Environment[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListEnvironmentsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"environments\", kind: \"message\", T: Environment, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListEnvironmentsResponse {\n return new ListEnvironmentsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListEnvironmentsResponse {\n return new ListEnvironmentsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListEnvironmentsResponse {\n return new ListEnvironmentsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListEnvironmentsResponse | PlainMessage | undefined, b: ListEnvironmentsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListEnvironmentsResponse, a, b);\n }\n}\n\n/**\n * Required fields:\n * - metadata.organization_id\n * - metadata.configuration_id\n *\n * @generated from message gitpod.v1.CreateEnvironmentRequest\n */\nexport class CreateEnvironmentRequest extends Message {\n /**\n * spec is the configuration of the environment that's required for the to\n * start the environment\n *\n * @generated from field: gitpod.v1.EnvironmentSpec spec = 1;\n */\n spec?: EnvironmentSpec;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateEnvironmentRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"spec\", kind: \"message\", T: EnvironmentSpec },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateEnvironmentRequest {\n return new CreateEnvironmentRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateEnvironmentRequest {\n return new CreateEnvironmentRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateEnvironmentRequest {\n return new CreateEnvironmentRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateEnvironmentRequest | PlainMessage | undefined, b: CreateEnvironmentRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateEnvironmentRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateEnvironmentResponse\n */\nexport class CreateEnvironmentResponse extends Message {\n /**\n * @generated from field: gitpod.v1.Environment environment = 1;\n */\n environment?: Environment;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateEnvironmentResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment\", kind: \"message\", T: Environment },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateEnvironmentResponse {\n return new CreateEnvironmentResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateEnvironmentResponse {\n return new CreateEnvironmentResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateEnvironmentResponse {\n return new CreateEnvironmentResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateEnvironmentResponse | PlainMessage | undefined, b: CreateEnvironmentResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateEnvironmentResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateEnvironmentFromProjectRequest\n */\nexport class CreateEnvironmentFromProjectRequest extends Message {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId = \"\";\n\n /**\n * Spec is the configuration of the environment that's required for the\n * runner to start the environment\n * Configuration already defined in the Project will override parts of the spec, if set\n *\n * @generated from field: gitpod.v1.EnvironmentSpec spec = 3;\n */\n spec?: EnvironmentSpec;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateEnvironmentFromProjectRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"project_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"spec\", kind: \"message\", T: EnvironmentSpec },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateEnvironmentFromProjectRequest {\n return new CreateEnvironmentFromProjectRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateEnvironmentFromProjectRequest {\n return new CreateEnvironmentFromProjectRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateEnvironmentFromProjectRequest {\n return new CreateEnvironmentFromProjectRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateEnvironmentFromProjectRequest | PlainMessage | undefined, b: CreateEnvironmentFromProjectRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateEnvironmentFromProjectRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateEnvironmentFromProjectResponse\n */\nexport class CreateEnvironmentFromProjectResponse extends Message {\n /**\n * @generated from field: gitpod.v1.Environment environment = 1;\n */\n environment?: Environment;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateEnvironmentFromProjectResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment\", kind: \"message\", T: Environment },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateEnvironmentFromProjectResponse {\n return new CreateEnvironmentFromProjectResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateEnvironmentFromProjectResponse {\n return new CreateEnvironmentFromProjectResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateEnvironmentFromProjectResponse {\n return new CreateEnvironmentFromProjectResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateEnvironmentFromProjectResponse | PlainMessage | undefined, b: CreateEnvironmentFromProjectResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateEnvironmentFromProjectResponse, a, b);\n }\n}\n\n/**\n * `CreateEnvironmentPreconditionFailureDetails` contains details about why a\n * `CreateEnvironment` or `CreateEnvironmentFromProject` request failed with failed_precondition.\n * The `missing_authentication_tokens_for_hosts` field lists the hosts for which the required authentication tokens were missing.\n *\n * @generated from message gitpod.v1.CreateEnvironmentPreconditionFailureDetails\n */\nexport class CreateEnvironmentPreconditionFailureDetails extends Message {\n /**\n * @generated from field: repeated string missing_authentication_tokens_for_hosts = 1;\n */\n missingAuthenticationTokensForHosts: string[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateEnvironmentPreconditionFailureDetails\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"missing_authentication_tokens_for_hosts\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateEnvironmentPreconditionFailureDetails {\n return new CreateEnvironmentPreconditionFailureDetails().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateEnvironmentPreconditionFailureDetails {\n return new CreateEnvironmentPreconditionFailureDetails().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateEnvironmentPreconditionFailureDetails {\n return new CreateEnvironmentPreconditionFailureDetails().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateEnvironmentPreconditionFailureDetails | PlainMessage | undefined, b: CreateEnvironmentPreconditionFailureDetails | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateEnvironmentPreconditionFailureDetails, a, b);\n }\n}\n\n/**\n * +resource get environment\n *\n * @generated from message gitpod.v1.Environment\n */\nexport class Environment extends Message {\n /**\n * ID is a unique identifier of this environment. No other environment with the\n * same name must be managed by this environment manager\n *\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * Metadata is data associated with this environment that's required for other\n * parts of Gitpod to function\n *\n * @generated from field: gitpod.v1.EnvironmentMetadata metadata = 2;\n */\n metadata?: EnvironmentMetadata;\n\n /**\n * Spec is the configuration of the environment that's required for the\n * runner to start the environment\n *\n * @generated from field: gitpod.v1.EnvironmentSpec spec = 3;\n */\n spec?: EnvironmentSpec;\n\n /**\n * Status is the current status of the environment\n *\n * @generated from field: gitpod.v1.EnvironmentStatus status = 4;\n */\n status?: EnvironmentStatus;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.Environment\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"metadata\", kind: \"message\", T: EnvironmentMetadata },\n { no: 3, name: \"spec\", kind: \"message\", T: EnvironmentSpec },\n { no: 4, name: \"status\", kind: \"message\", T: EnvironmentStatus },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): Environment {\n return new Environment().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): Environment {\n return new Environment().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): Environment {\n return new Environment().fromJsonString(jsonString, options);\n }\n\n static equals(a: Environment | PlainMessage | undefined, b: Environment | PlainMessage | undefined): boolean {\n return proto3.util.equals(Environment, a, b);\n }\n}\n\n/**\n * EnvironmentMetadata is data associated with an environment that's required for\n * other parts of the system to function\n *\n * @generated from message gitpod.v1.EnvironmentMetadata\n */\nexport class EnvironmentMetadata extends Message {\n /**\n * organization_id is the ID of the organization that contains the environment\n *\n * @generated from field: string organization_id = 1;\n */\n organizationId = \"\";\n\n /**\n * annotations are key/value pairs that gets attached to the environment.\n * +internal - not yet implemented\n *\n * @generated from field: map annotations = 2;\n */\n annotations: { [key: string]: string } = {};\n\n /**\n * name is the name of the environment as specified by the user\n *\n * @generated from field: string name = 3;\n */\n name = \"\";\n\n /**\n * creator is the identity of the creator of the environment\n *\n * @generated from field: gitpod.v1.Subject creator = 4;\n */\n creator?: Subject;\n\n /**\n * original_context_url is the normalized URL from which the environment was\n * created\n *\n * @generated from field: string original_context_url = 5;\n */\n originalContextUrl = \"\";\n\n /**\n * Time when the Environment was created.\n *\n * @generated from field: google.protobuf.Timestamp created_at = 6;\n */\n createdAt?: Timestamp;\n\n /**\n * If the Environment was started from a project, the project_id will reference the project.\n *\n * @generated from field: string project_id = 7;\n */\n projectId = \"\";\n\n /**\n * Runner is the ID of the runner that runs this environment.\n *\n * @generated from field: string runner_id = 9;\n */\n runnerId = \"\";\n\n /**\n * Time when the Environment was last started (i.e. CreateEnvironment or StartEnvironment were called).\n *\n * @generated from field: google.protobuf.Timestamp last_started_at = 10;\n */\n lastStartedAt?: Timestamp;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentMetadata\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"annotations\", kind: \"map\", K: 9 /* ScalarType.STRING */, V: {kind: \"scalar\", T: 9 /* ScalarType.STRING */} },\n { no: 3, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"creator\", kind: \"message\", T: Subject },\n { no: 5, name: \"original_context_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 6, name: \"created_at\", kind: \"message\", T: Timestamp },\n { no: 7, name: \"project_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 9, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 10, name: \"last_started_at\", kind: \"message\", T: Timestamp },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentMetadata {\n return new EnvironmentMetadata().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentMetadata {\n return new EnvironmentMetadata().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentMetadata {\n return new EnvironmentMetadata().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentMetadata | PlainMessage | undefined, b: EnvironmentMetadata | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentMetadata, a, b);\n }\n}\n\n/**\n * EnvironmentSpec specifies the configuration of an environment for an environment\n * start\n *\n * @generated from message gitpod.v1.EnvironmentSpec\n */\nexport class EnvironmentSpec extends Message {\n /**\n * version of the spec. The value of this field has no semantic\n * meaning (e.g. don't interpret it as as a timestamp),\n * but it can be used to impose a partial order. If a.spec_version <\n * b.spec_version then a was the spec before b.\n *\n * @generated from field: uint64 spec_version = 1;\n */\n specVersion = protoInt64.zero;\n\n /**\n * Phase is the desired phase of the environment\n *\n * @generated from field: gitpod.v1.EnvironmentPhase desired_phase = 2;\n */\n desiredPhase = EnvironmentPhase.UNSPECIFIED;\n\n /**\n * machine is the machine spec of the environment\n *\n * @generated from field: gitpod.v1.EnvironmentSpec.Machine machine = 3;\n */\n machine?: EnvironmentSpec_Machine;\n\n /**\n * content is the content spec of the environment\n *\n * @generated from field: gitpod.v1.EnvironmentSpec.Content content = 4;\n */\n content?: EnvironmentSpec_Content;\n\n /**\n * secrets are confidential data that is mounted into the environment\n *\n * @generated from field: repeated gitpod.v1.EnvironmentSpec.Secret secrets = 5;\n */\n secrets: EnvironmentSpec_Secret[] = [];\n\n /**\n * ports is the set of ports which ought to be exposed to the internet\n *\n * @generated from field: repeated gitpod.v1.EnvironmentSpec.EnvironmentPort ports = 6;\n */\n ports: EnvironmentSpec_EnvironmentPort[] = [];\n\n /**\n * Timeout configures the environment timeout\n *\n * @generated from field: gitpod.v1.EnvironmentSpec.Timeout timeout = 7;\n */\n timeout?: EnvironmentSpec_Timeout;\n\n /**\n * admission controlls who can access the environment and its ports.\n *\n * @generated from field: gitpod.v1.AdmissionLevel admission = 8;\n */\n admission = AdmissionLevel.UNSPECIFIED;\n\n /**\n * devcontainer is the devcontainer spec of the environment\n *\n * @generated from field: gitpod.v1.EnvironmentSpec.DevContainer devcontainer = 9;\n */\n devcontainer?: EnvironmentSpec_DevContainer;\n\n /**\n * ssh_public_keys are the public keys used to ssh into the environment\n *\n * @generated from field: repeated gitpod.v1.EnvironmentSpec.SSHPublicKey ssh_public_keys = 10;\n */\n sshPublicKeys: EnvironmentSpec_SSHPublicKey[] = [];\n\n /**\n * automations_file is the automations file spec of the environment\n *\n * @generated from field: gitpod.v1.EnvironmentSpec.AutomationsFile automations_file = 11;\n */\n automationsFile?: EnvironmentSpec_AutomationsFile;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentSpec\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"spec_version\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */ },\n { no: 2, name: \"desired_phase\", kind: \"enum\", T: proto3.getEnumType(EnvironmentPhase) },\n { no: 3, name: \"machine\", kind: \"message\", T: EnvironmentSpec_Machine },\n { no: 4, name: \"content\", kind: \"message\", T: EnvironmentSpec_Content },\n { no: 5, name: \"secrets\", kind: \"message\", T: EnvironmentSpec_Secret, repeated: true },\n { no: 6, name: \"ports\", kind: \"message\", T: EnvironmentSpec_EnvironmentPort, repeated: true },\n { no: 7, name: \"timeout\", kind: \"message\", T: EnvironmentSpec_Timeout },\n { no: 8, name: \"admission\", kind: \"enum\", T: proto3.getEnumType(AdmissionLevel) },\n { no: 9, name: \"devcontainer\", kind: \"message\", T: EnvironmentSpec_DevContainer },\n { no: 10, name: \"ssh_public_keys\", kind: \"message\", T: EnvironmentSpec_SSHPublicKey, repeated: true },\n { no: 11, name: \"automations_file\", kind: \"message\", T: EnvironmentSpec_AutomationsFile },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentSpec {\n return new EnvironmentSpec().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentSpec {\n return new EnvironmentSpec().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentSpec {\n return new EnvironmentSpec().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentSpec | PlainMessage | undefined, b: EnvironmentSpec | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentSpec, a, b);\n }\n}\n\n/**\n * Timeout configures the environment timeout\n *\n * @generated from message gitpod.v1.EnvironmentSpec.Timeout\n */\nexport class EnvironmentSpec_Timeout extends Message {\n /**\n * inacitivity is the maximum time of disconnection before the environment is\n * stopped or paused. Minimum duration is 30 minutes. Set to 0 to disable.\n *\n * @generated from field: google.protobuf.Duration disconnected = 2;\n */\n disconnected?: Duration;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentSpec.Timeout\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 2, name: \"disconnected\", kind: \"message\", T: Duration },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentSpec_Timeout {\n return new EnvironmentSpec_Timeout().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentSpec_Timeout {\n return new EnvironmentSpec_Timeout().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentSpec_Timeout {\n return new EnvironmentSpec_Timeout().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentSpec_Timeout | PlainMessage | undefined, b: EnvironmentSpec_Timeout | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentSpec_Timeout, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EnvironmentSpec.Machine\n */\nexport class EnvironmentSpec_Machine extends Message {\n /**\n * @generated from field: string session = 1;\n */\n session = \"\";\n\n /**\n * Class denotes the class of the environment we ought to start\n *\n * @generated from field: string class = 2;\n */\n class = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentSpec.Machine\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"session\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"class\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentSpec_Machine {\n return new EnvironmentSpec_Machine().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentSpec_Machine {\n return new EnvironmentSpec_Machine().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentSpec_Machine {\n return new EnvironmentSpec_Machine().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentSpec_Machine | PlainMessage | undefined, b: EnvironmentSpec_Machine | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentSpec_Machine, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EnvironmentSpec.Content\n */\nexport class EnvironmentSpec_Content extends Message {\n /**\n * @generated from field: string session = 1;\n */\n session = \"\";\n\n /**\n * initializer configures how the environment is to be initialized\n *\n * @generated from field: gitpod.v1.EnvironmentInitializer initializer = 2;\n */\n initializer?: EnvironmentInitializer;\n\n /**\n * The Git username\n *\n * @generated from field: string git_username = 3;\n */\n gitUsername = \"\";\n\n /**\n * The Git email address\n *\n * @generated from field: string git_email = 4;\n */\n gitEmail = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentSpec.Content\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"session\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"initializer\", kind: \"message\", T: EnvironmentInitializer },\n { no: 3, name: \"git_username\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"git_email\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentSpec_Content {\n return new EnvironmentSpec_Content().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentSpec_Content {\n return new EnvironmentSpec_Content().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentSpec_Content {\n return new EnvironmentSpec_Content().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentSpec_Content | PlainMessage | undefined, b: EnvironmentSpec_Content | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentSpec_Content, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EnvironmentSpec.DevContainer\n */\nexport class EnvironmentSpec_DevContainer extends Message {\n /**\n * @generated from field: string session = 1;\n */\n session = \"\";\n\n /**\n * devcontainer_file_path is the path to the devcontainer file relative to the repo root\n *\n * @generated from field: string devcontainer_file_path = 2;\n */\n devcontainerFilePath = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentSpec.DevContainer\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"session\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"devcontainer_file_path\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentSpec_DevContainer {\n return new EnvironmentSpec_DevContainer().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentSpec_DevContainer {\n return new EnvironmentSpec_DevContainer().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentSpec_DevContainer {\n return new EnvironmentSpec_DevContainer().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentSpec_DevContainer | PlainMessage | undefined, b: EnvironmentSpec_DevContainer | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentSpec_DevContainer, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EnvironmentSpec.Secret\n */\nexport class EnvironmentSpec_Secret extends Message {\n /**\n * name is the human readable description of the secret\n *\n * @generated from field: string name = 1;\n */\n name = \"\";\n\n /**\n * source is the source of the secret, for now control-plane or runner\n *\n * @generated from field: string source = 2;\n */\n source = \"\";\n\n /**\n * source_ref into the source, in case of control-plane this is uuid of the secret\n *\n * @generated from field: string source_ref = 3;\n */\n sourceRef = \"\";\n\n /**\n * mount specifies how the secret is materiaized in the environment\n *\n * @generated from oneof gitpod.v1.EnvironmentSpec.Secret.mount\n */\n mount: {\n /**\n * file_path is the path inside the devcontainer where the secret is mounted\n *\n * @generated from field: string file_path = 10;\n */\n value: string;\n case: \"filePath\";\n } | {\n /**\n * @generated from field: string environment_variable = 11;\n */\n value: string;\n case: \"environmentVariable\";\n } | {\n /**\n * @generated from field: string git_credential_host = 12;\n */\n value: string;\n case: \"gitCredentialHost\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n /**\n * session indicated the current session of the secret.\n * When the session does not change, secrets are not reloaded in the environment.\n *\n * @generated from field: string session = 4;\n */\n session = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentSpec.Secret\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"source\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"source_ref\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 10, name: \"file_path\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"mount\" },\n { no: 11, name: \"environment_variable\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"mount\" },\n { no: 12, name: \"git_credential_host\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"mount\" },\n { no: 4, name: \"session\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentSpec_Secret {\n return new EnvironmentSpec_Secret().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentSpec_Secret {\n return new EnvironmentSpec_Secret().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentSpec_Secret {\n return new EnvironmentSpec_Secret().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentSpec_Secret | PlainMessage | undefined, b: EnvironmentSpec_Secret | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentSpec_Secret, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EnvironmentSpec.EnvironmentPort\n */\nexport class EnvironmentSpec_EnvironmentPort extends Message {\n /**\n * port number\n *\n * @generated from field: int32 port = 1;\n */\n port = 0;\n\n /**\n * policy of this port\n *\n * @generated from field: gitpod.v1.AdmissionLevel admission = 2;\n */\n admission = AdmissionLevel.UNSPECIFIED;\n\n /**\n * name of this port\n *\n * @generated from field: string name = 3;\n */\n name = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentSpec.EnvironmentPort\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"port\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n { no: 2, name: \"admission\", kind: \"enum\", T: proto3.getEnumType(AdmissionLevel) },\n { no: 3, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentSpec_EnvironmentPort {\n return new EnvironmentSpec_EnvironmentPort().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentSpec_EnvironmentPort {\n return new EnvironmentSpec_EnvironmentPort().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentSpec_EnvironmentPort {\n return new EnvironmentSpec_EnvironmentPort().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentSpec_EnvironmentPort | PlainMessage | undefined, b: EnvironmentSpec_EnvironmentPort | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentSpec_EnvironmentPort, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EnvironmentSpec.SSHPublicKey\n */\nexport class EnvironmentSpec_SSHPublicKey extends Message {\n /**\n * id is the unique identifier of the public key\n *\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * value is the actual public key in the public key file format\n *\n * @generated from field: string value = 2;\n */\n value = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentSpec.SSHPublicKey\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"value\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentSpec_SSHPublicKey {\n return new EnvironmentSpec_SSHPublicKey().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentSpec_SSHPublicKey {\n return new EnvironmentSpec_SSHPublicKey().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentSpec_SSHPublicKey {\n return new EnvironmentSpec_SSHPublicKey().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentSpec_SSHPublicKey | PlainMessage | undefined, b: EnvironmentSpec_SSHPublicKey | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentSpec_SSHPublicKey, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EnvironmentSpec.AutomationsFile\n */\nexport class EnvironmentSpec_AutomationsFile extends Message {\n /**\n * @generated from field: string session = 1;\n */\n session = \"\";\n\n /**\n * automations_file_path is the path to the automations file that is applied in the environment,\n * relative to the repo root.\n *\n * @generated from field: string automations_file_path = 2;\n */\n automationsFilePath = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentSpec.AutomationsFile\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"session\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"automations_file_path\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentSpec_AutomationsFile {\n return new EnvironmentSpec_AutomationsFile().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentSpec_AutomationsFile {\n return new EnvironmentSpec_AutomationsFile().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentSpec_AutomationsFile {\n return new EnvironmentSpec_AutomationsFile().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentSpec_AutomationsFile | PlainMessage | undefined, b: EnvironmentSpec_AutomationsFile | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentSpec_AutomationsFile, a, b);\n }\n}\n\n/**\n * EnvironmentStatus describes an environment status\n *\n * @generated from message gitpod.v1.EnvironmentStatus\n */\nexport class EnvironmentStatus extends Message {\n /**\n * version of the status update. Environment instances themselves are\n * unversioned, but their status has different versions. The value of this\n * field has no semantic meaning (e.g. don't interpret it as as a timestamp),\n * but it can be used to impose a partial order. If a.status_version <\n * b.status_version then a was the status before b.\n *\n * @generated from field: uint64 status_version = 1;\n */\n statusVersion = protoInt64.zero;\n\n /**\n * runner_ack contains the acknowledgement from the runner that is has\n * received the environment spec.\n *\n * @generated from field: gitpod.v1.EnvironmentStatus.RunnerACK runner_ack = 2;\n */\n runnerAck?: EnvironmentStatus_RunnerACK;\n\n /**\n * the phase of an environment is a simple, high-level summary of where the\n * environment is in its lifecycle\n *\n * @generated from field: gitpod.v1.EnvironmentPhase phase = 3;\n */\n phase = EnvironmentPhase.UNSPECIFIED;\n\n /**\n * failure_message summarises why the environment failed to operate. If this is non-empty\n * the environment has failed to operate and will likely transition to a stopped state.\n *\n * @generated from field: repeated string failure_message = 4;\n */\n failureMessage: string[] = [];\n\n /**\n * environment_url contains the URL at which the environment can be accessed.\n * This field is only set if the environment is running.\n *\n * @generated from field: gitpod.v1.EnvironmentStatus.EnvironmentURLs environment_urls = 5;\n */\n environmentUrls?: EnvironmentStatus_EnvironmentURLs;\n\n /**\n * machine contains the status of the environment machine\n *\n * @generated from field: gitpod.v1.EnvironmentStatus.Machine machine = 6;\n */\n machine?: EnvironmentStatus_Machine;\n\n /**\n * secrets contains the status of the environment secrets\n *\n * @generated from field: repeated gitpod.v1.EnvironmentStatus.Secret secrets = 7;\n */\n secrets: EnvironmentStatus_Secret[] = [];\n\n /**\n * content contains the status of the environment content.\n *\n * @generated from field: gitpod.v1.EnvironmentStatus.Content content = 8;\n */\n content?: EnvironmentStatus_Content;\n\n /**\n * devcontainer contains the status of the devcontainer.\n *\n * @generated from field: gitpod.v1.EnvironmentStatus.DevContainer devcontainer = 9;\n */\n devcontainer?: EnvironmentStatus_DevContainer;\n\n /**\n * ssh_public_keys contains the status of the environment ssh public keys\n *\n * @generated from field: repeated gitpod.v1.EnvironmentStatus.SSHPublicKey ssh_public_keys = 10;\n */\n sshPublicKeys: EnvironmentStatus_SSHPublicKey[] = [];\n\n /**\n * warning_message contains warnings, e.g. when the environment is present but not in the expected state.\n *\n * @generated from field: repeated string warning_message = 11;\n */\n warningMessage: string[] = [];\n\n /**\n * automations_file contains the status of the automations file.\n *\n * @generated from field: gitpod.v1.EnvironmentStatus.AutomationsFile automations_file = 12;\n */\n automationsFile?: EnvironmentStatus_AutomationsFile;\n\n /**\n * activity_signal is the last activity signal for the environment.\n *\n * @generated from field: gitpod.v1.EnvironmentActivitySignal activity_signal = 13;\n */\n activitySignal?: EnvironmentActivitySignal;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentStatus\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"status_version\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */ },\n { no: 2, name: \"runner_ack\", kind: \"message\", T: EnvironmentStatus_RunnerACK },\n { no: 3, name: \"phase\", kind: \"enum\", T: proto3.getEnumType(EnvironmentPhase) },\n { no: 4, name: \"failure_message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 5, name: \"environment_urls\", kind: \"message\", T: EnvironmentStatus_EnvironmentURLs },\n { no: 6, name: \"machine\", kind: \"message\", T: EnvironmentStatus_Machine },\n { no: 7, name: \"secrets\", kind: \"message\", T: EnvironmentStatus_Secret, repeated: true },\n { no: 8, name: \"content\", kind: \"message\", T: EnvironmentStatus_Content },\n { no: 9, name: \"devcontainer\", kind: \"message\", T: EnvironmentStatus_DevContainer },\n { no: 10, name: \"ssh_public_keys\", kind: \"message\", T: EnvironmentStatus_SSHPublicKey, repeated: true },\n { no: 11, name: \"warning_message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 12, name: \"automations_file\", kind: \"message\", T: EnvironmentStatus_AutomationsFile },\n { no: 13, name: \"activity_signal\", kind: \"message\", T: EnvironmentActivitySignal },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentStatus {\n return new EnvironmentStatus().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentStatus {\n return new EnvironmentStatus().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentStatus {\n return new EnvironmentStatus().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentStatus | PlainMessage | undefined, b: EnvironmentStatus | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentStatus, a, b);\n }\n}\n\n/**\n * @generated from enum gitpod.v1.EnvironmentStatus.ContentPhase\n */\nexport enum EnvironmentStatus_ContentPhase {\n /**\n * @generated from enum value: CONTENT_PHASE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: CONTENT_PHASE_CREATING = 10;\n */\n CREATING = 10,\n\n /**\n * @generated from enum value: CONTENT_PHASE_INITIALIZING = 20;\n */\n INITIALIZING = 20,\n\n /**\n * @generated from enum value: CONTENT_PHASE_READY = 30;\n */\n READY = 30,\n\n /**\n * @generated from enum value: CONTENT_PHASE_UPDATING = 35;\n */\n UPDATING = 35,\n\n /**\n * @generated from enum value: CONTENT_PHASE_FAILED = 40;\n */\n FAILED = 40,\n}\n// Retrieve enum metadata with: proto3.getEnumType(EnvironmentStatus_ContentPhase)\nproto3.util.setEnumType(EnvironmentStatus_ContentPhase, \"gitpod.v1.EnvironmentStatus.ContentPhase\", [\n { no: 0, name: \"CONTENT_PHASE_UNSPECIFIED\" },\n { no: 10, name: \"CONTENT_PHASE_CREATING\" },\n { no: 20, name: \"CONTENT_PHASE_INITIALIZING\" },\n { no: 30, name: \"CONTENT_PHASE_READY\" },\n { no: 35, name: \"CONTENT_PHASE_UPDATING\" },\n { no: 40, name: \"CONTENT_PHASE_FAILED\" },\n]);\n\n/**\n * @generated from message gitpod.v1.EnvironmentStatus.EnvironmentPortURL\n */\nexport class EnvironmentStatus_EnvironmentPortURL extends Message {\n /**\n * port is the port number of the environment port\n *\n * @generated from field: int32 port = 1;\n */\n port = 0;\n\n /**\n * url is the URL at which the environment port can be accessed\n *\n * @generated from field: string url = 2;\n */\n url = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentStatus.EnvironmentPortURL\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"port\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n { no: 2, name: \"url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentStatus_EnvironmentPortURL {\n return new EnvironmentStatus_EnvironmentPortURL().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentStatus_EnvironmentPortURL {\n return new EnvironmentStatus_EnvironmentPortURL().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentStatus_EnvironmentPortURL {\n return new EnvironmentStatus_EnvironmentPortURL().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentStatus_EnvironmentPortURL | PlainMessage | undefined, b: EnvironmentStatus_EnvironmentPortURL | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentStatus_EnvironmentPortURL, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EnvironmentStatus.EnvironmentSSHURL\n */\nexport class EnvironmentStatus_EnvironmentSSHURL extends Message {\n /**\n * @generated from field: string url = 1;\n */\n url = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentStatus.EnvironmentSSHURL\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentStatus_EnvironmentSSHURL {\n return new EnvironmentStatus_EnvironmentSSHURL().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentStatus_EnvironmentSSHURL {\n return new EnvironmentStatus_EnvironmentSSHURL().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentStatus_EnvironmentSSHURL {\n return new EnvironmentStatus_EnvironmentSSHURL().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentStatus_EnvironmentSSHURL | PlainMessage | undefined, b: EnvironmentStatus_EnvironmentSSHURL | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentStatus_EnvironmentSSHURL, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EnvironmentStatus.EnvironmentURLs\n */\nexport class EnvironmentStatus_EnvironmentURLs extends Message {\n /**\n * SSH is the URL at which the environment can be accessed via SSH.\n *\n * @generated from field: gitpod.v1.EnvironmentStatus.EnvironmentSSHURL ssh = 1;\n */\n ssh?: EnvironmentStatus_EnvironmentSSHURL;\n\n /**\n * @generated from field: repeated gitpod.v1.EnvironmentStatus.EnvironmentPortURL ports = 2;\n */\n ports: EnvironmentStatus_EnvironmentPortURL[] = [];\n\n /**\n * logs is the URL at which the environment logs can be accessed.\n *\n * @generated from field: string logs = 3;\n */\n logs = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentStatus.EnvironmentURLs\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"ssh\", kind: \"message\", T: EnvironmentStatus_EnvironmentSSHURL },\n { no: 2, name: \"ports\", kind: \"message\", T: EnvironmentStatus_EnvironmentPortURL, repeated: true },\n { no: 3, name: \"logs\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentStatus_EnvironmentURLs {\n return new EnvironmentStatus_EnvironmentURLs().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentStatus_EnvironmentURLs {\n return new EnvironmentStatus_EnvironmentURLs().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentStatus_EnvironmentURLs {\n return new EnvironmentStatus_EnvironmentURLs().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentStatus_EnvironmentURLs | PlainMessage | undefined, b: EnvironmentStatus_EnvironmentURLs | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentStatus_EnvironmentURLs, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EnvironmentStatus.Machine\n */\nexport class EnvironmentStatus_Machine extends Message {\n /**\n * session is the session that is currently active in the machine.\n *\n * @generated from field: string session = 1;\n */\n session = \"\";\n\n /**\n * phase is the current phase of the environment machine\n *\n * @generated from field: gitpod.v1.EnvironmentStatus.Machine.Phase phase = 2;\n */\n phase = EnvironmentStatus_Machine_Phase.UNSPECIFIED;\n\n /**\n * failure_message contains the reason the machine failed to operate.\n *\n * @generated from field: string failure_message = 3;\n */\n failureMessage = \"\";\n\n /**\n * timeout contains the reason the environment has timed out. If this field is\n * empty, the environment has not timed out.\n *\n * @generated from field: string timeout = 4;\n */\n timeout = \"\";\n\n /**\n * versions contains the versions of components in the machine.\n *\n * @generated from field: gitpod.v1.EnvironmentStatus.Machine.Versions versions = 5;\n */\n versions?: EnvironmentStatus_Machine_Versions;\n\n /**\n * warning_message contains warnings, e.g. when the machine is present but not in the expected state.\n *\n * @generated from field: string warning_message = 6;\n */\n warningMessage = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentStatus.Machine\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"session\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"phase\", kind: \"enum\", T: proto3.getEnumType(EnvironmentStatus_Machine_Phase) },\n { no: 3, name: \"failure_message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"timeout\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"versions\", kind: \"message\", T: EnvironmentStatus_Machine_Versions },\n { no: 6, name: \"warning_message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentStatus_Machine {\n return new EnvironmentStatus_Machine().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentStatus_Machine {\n return new EnvironmentStatus_Machine().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentStatus_Machine {\n return new EnvironmentStatus_Machine().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentStatus_Machine | PlainMessage | undefined, b: EnvironmentStatus_Machine | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentStatus_Machine, a, b);\n }\n}\n\n/**\n * @generated from enum gitpod.v1.EnvironmentStatus.Machine.Phase\n */\nexport enum EnvironmentStatus_Machine_Phase {\n /**\n * @generated from enum value: PHASE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: PHASE_CREATING = 10;\n */\n CREATING = 10,\n\n /**\n * @generated from enum value: PHASE_STARTING = 20;\n */\n STARTING = 20,\n\n /**\n * @generated from enum value: PHASE_RUNNING = 30;\n */\n RUNNING = 30,\n\n /**\n * @generated from enum value: PHASE_STOPPING = 40;\n */\n STOPPING = 40,\n\n /**\n * @generated from enum value: PHASE_STOPPED = 50;\n */\n STOPPED = 50,\n\n /**\n * @generated from enum value: PHASE_DELETING = 60;\n */\n DELETING = 60,\n\n /**\n * @generated from enum value: PHASE_DELETED = 70;\n */\n DELETED = 70,\n}\n// Retrieve enum metadata with: proto3.getEnumType(EnvironmentStatus_Machine_Phase)\nproto3.util.setEnumType(EnvironmentStatus_Machine_Phase, \"gitpod.v1.EnvironmentStatus.Machine.Phase\", [\n { no: 0, name: \"PHASE_UNSPECIFIED\" },\n { no: 10, name: \"PHASE_CREATING\" },\n { no: 20, name: \"PHASE_STARTING\" },\n { no: 30, name: \"PHASE_RUNNING\" },\n { no: 40, name: \"PHASE_STOPPING\" },\n { no: 50, name: \"PHASE_STOPPED\" },\n { no: 60, name: \"PHASE_DELETING\" },\n { no: 70, name: \"PHASE_DELETED\" },\n]);\n\n/**\n * @generated from message gitpod.v1.EnvironmentStatus.Machine.Versions\n */\nexport class EnvironmentStatus_Machine_Versions extends Message {\n /**\n * @generated from field: string supervisor_version = 1;\n */\n supervisorVersion = \"\";\n\n /**\n * @generated from field: string supervisor_commit = 2;\n */\n supervisorCommit = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentStatus.Machine.Versions\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"supervisor_version\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"supervisor_commit\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentStatus_Machine_Versions {\n return new EnvironmentStatus_Machine_Versions().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentStatus_Machine_Versions {\n return new EnvironmentStatus_Machine_Versions().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentStatus_Machine_Versions {\n return new EnvironmentStatus_Machine_Versions().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentStatus_Machine_Versions | PlainMessage | undefined, b: EnvironmentStatus_Machine_Versions | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentStatus_Machine_Versions, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EnvironmentStatus.Content\n */\nexport class EnvironmentStatus_Content extends Message {\n /**\n * session is the session that is currently active in the environment.\n *\n * @generated from field: string session = 1;\n */\n session = \"\";\n\n /**\n * phase is the current phase of the environment content\n *\n * @generated from field: gitpod.v1.EnvironmentStatus.ContentPhase phase = 2;\n */\n phase = EnvironmentStatus_ContentPhase.UNSPECIFIED;\n\n /**\n * git is the Git working copy status of the environment.\n * Note: this is a best-effort field and more often than not will not be\n * present. Its absence does not indicate the absence of a working copy.\n *\n * @generated from field: gitpod.v1.EnvironmentGitStatus git = 3;\n */\n git?: EnvironmentGitStatus;\n\n /**\n * content_location_in_machine is the location of the content in the machine\n *\n * @generated from field: string content_location_in_machine = 4;\n */\n contentLocationInMachine = \"\";\n\n /**\n * failure_message contains the reason the content initialization failed.\n *\n * @generated from field: string failure_message = 5;\n */\n failureMessage = \"\";\n\n /**\n * warning_message contains warnings, e.g. when the content is present but not in the expected state.\n *\n * @generated from field: string warning_message = 6;\n */\n warningMessage = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentStatus.Content\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"session\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"phase\", kind: \"enum\", T: proto3.getEnumType(EnvironmentStatus_ContentPhase) },\n { no: 3, name: \"git\", kind: \"message\", T: EnvironmentGitStatus },\n { no: 4, name: \"content_location_in_machine\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"failure_message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 6, name: \"warning_message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentStatus_Content {\n return new EnvironmentStatus_Content().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentStatus_Content {\n return new EnvironmentStatus_Content().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentStatus_Content {\n return new EnvironmentStatus_Content().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentStatus_Content | PlainMessage | undefined, b: EnvironmentStatus_Content | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentStatus_Content, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EnvironmentStatus.Secret\n */\nexport class EnvironmentStatus_Secret extends Message {\n /**\n * @generated from field: gitpod.v1.EnvironmentStatus.ContentPhase phase = 2;\n */\n phase = EnvironmentStatus_ContentPhase.UNSPECIFIED;\n\n /**\n * @generated from field: string secret_name = 3;\n */\n secretName = \"\";\n\n /**\n * failure_message contains the reason the secret failed to be materialize.\n *\n * @generated from field: string failure_message = 4;\n */\n failureMessage = \"\";\n\n /**\n * warning_message contains warnings, e.g. when the secret is present but not in the expected state.\n *\n * @generated from field: string warning_message = 5;\n */\n warningMessage = \"\";\n\n /**\n * session is the session that is currently active in the environment.\n *\n * @generated from field: string session = 6;\n */\n session = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentStatus.Secret\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 2, name: \"phase\", kind: \"enum\", T: proto3.getEnumType(EnvironmentStatus_ContentPhase) },\n { no: 3, name: \"secret_name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"failure_message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"warning_message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 6, name: \"session\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentStatus_Secret {\n return new EnvironmentStatus_Secret().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentStatus_Secret {\n return new EnvironmentStatus_Secret().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentStatus_Secret {\n return new EnvironmentStatus_Secret().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentStatus_Secret | PlainMessage | undefined, b: EnvironmentStatus_Secret | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentStatus_Secret, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EnvironmentStatus.DevContainer\n */\nexport class EnvironmentStatus_DevContainer extends Message {\n /**\n * session is the session that is currently active in the devcontainer.\n *\n * @generated from field: string session = 1;\n */\n session = \"\";\n\n /**\n * phase is the current phase of the devcontainer\n *\n * @generated from field: gitpod.v1.EnvironmentStatus.DevContainer.Phase phase = 2;\n */\n phase = EnvironmentStatus_DevContainer_Phase.UNSPECIFIED;\n\n /**\n * devcontainer_file_path is the path to the devcontainer file relative to the repo root\n *\n * @generated from field: string devcontainer_file_path = 3;\n */\n devcontainerFilePath = \"\";\n\n /**\n * devcontainerconfig_in_sync indicates if the devcontainer is up to date w.r.t. the devcontainer config file.\n *\n * @generated from field: bool devcontainerconfig_in_sync = 4;\n */\n devcontainerconfigInSync = false;\n\n /**\n * secrets_in_sync indicates if the secrets are up to date w.r.t. the running devcontainer.\n *\n * @generated from field: bool secrets_in_sync = 5;\n */\n secretsInSync = false;\n\n /**\n * failure_message contains the reason the devcontainer failed to operate.\n *\n * @generated from field: string failure_message = 6;\n */\n failureMessage = \"\";\n\n /**\n * remote_user is the user that is used to connect to the devcontainer\n *\n * @generated from field: string remote_user = 7;\n */\n remoteUser = \"\";\n\n /**\n * remote_workspace_folder is the folder that is used to connect to the devcontainer\n *\n * @generated from field: string remote_workspace_folder = 8;\n */\n remoteWorkspaceFolder = \"\";\n\n /**\n * container_name is the name of the container that is used to connect to the devcontainer\n *\n * @generated from field: string container_name = 9;\n */\n containerName = \"\";\n\n /**\n * container_id is the ID of the container.\n *\n * @generated from field: string container_id = 10;\n */\n containerId = \"\";\n\n /**\n * warning_message contains warnings, e.g. when the devcontainer is present but not in the expected state.\n *\n * @generated from field: string warning_message = 12;\n */\n warningMessage = \"\";\n\n /**\n * devcontainer_file_presence indicates how the devcontainer file is present in the repo.\n *\n * @generated from field: gitpod.v1.EnvironmentStatus.DevContainer.Presence devcontainer_file_presence = 13;\n */\n devcontainerFilePresence = EnvironmentStatus_DevContainer_Presence.UNSPECIFIED;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentStatus.DevContainer\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"session\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"phase\", kind: \"enum\", T: proto3.getEnumType(EnvironmentStatus_DevContainer_Phase) },\n { no: 3, name: \"devcontainer_file_path\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"devcontainerconfig_in_sync\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n { no: 5, name: \"secrets_in_sync\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n { no: 6, name: \"failure_message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 7, name: \"remote_user\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 8, name: \"remote_workspace_folder\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 9, name: \"container_name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 10, name: \"container_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 12, name: \"warning_message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 13, name: \"devcontainer_file_presence\", kind: \"enum\", T: proto3.getEnumType(EnvironmentStatus_DevContainer_Presence) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentStatus_DevContainer {\n return new EnvironmentStatus_DevContainer().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentStatus_DevContainer {\n return new EnvironmentStatus_DevContainer().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentStatus_DevContainer {\n return new EnvironmentStatus_DevContainer().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentStatus_DevContainer | PlainMessage | undefined, b: EnvironmentStatus_DevContainer | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentStatus_DevContainer, a, b);\n }\n}\n\n/**\n * @generated from enum gitpod.v1.EnvironmentStatus.DevContainer.Phase\n */\nexport enum EnvironmentStatus_DevContainer_Phase {\n /**\n * @generated from enum value: PHASE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: PHASE_CREATING = 10;\n */\n CREATING = 10,\n\n /**\n * @generated from enum value: PHASE_RUNNING = 20;\n */\n RUNNING = 20,\n\n /**\n * @generated from enum value: PHASE_STOPPED = 30;\n */\n STOPPED = 30,\n\n /**\n * @generated from enum value: PHASE_FAILED = 40;\n */\n FAILED = 40,\n}\n// Retrieve enum metadata with: proto3.getEnumType(EnvironmentStatus_DevContainer_Phase)\nproto3.util.setEnumType(EnvironmentStatus_DevContainer_Phase, \"gitpod.v1.EnvironmentStatus.DevContainer.Phase\", [\n { no: 0, name: \"PHASE_UNSPECIFIED\" },\n { no: 10, name: \"PHASE_CREATING\" },\n { no: 20, name: \"PHASE_RUNNING\" },\n { no: 30, name: \"PHASE_STOPPED\" },\n { no: 40, name: \"PHASE_FAILED\" },\n]);\n\n/**\n * @generated from enum gitpod.v1.EnvironmentStatus.DevContainer.Presence\n */\nexport enum EnvironmentStatus_DevContainer_Presence {\n /**\n * @generated from enum value: PRESENCE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: PRESENCE_GENERATED = 1;\n */\n GENERATED = 1,\n\n /**\n * @generated from enum value: PRESENCE_DISCOVERED = 2;\n */\n DISCOVERED = 2,\n\n /**\n * @generated from enum value: PRESENCE_SPECIFIED = 3;\n */\n SPECIFIED = 3,\n}\n// Retrieve enum metadata with: proto3.getEnumType(EnvironmentStatus_DevContainer_Presence)\nproto3.util.setEnumType(EnvironmentStatus_DevContainer_Presence, \"gitpod.v1.EnvironmentStatus.DevContainer.Presence\", [\n { no: 0, name: \"PRESENCE_UNSPECIFIED\" },\n { no: 1, name: \"PRESENCE_GENERATED\" },\n { no: 2, name: \"PRESENCE_DISCOVERED\" },\n { no: 3, name: \"PRESENCE_SPECIFIED\" },\n]);\n\n/**\n * RunnerACK is the acknowledgement from the runner that is has received the\n * environment spec.\n *\n * @generated from message gitpod.v1.EnvironmentStatus.RunnerACK\n */\nexport class EnvironmentStatus_RunnerACK extends Message {\n /**\n * @generated from field: uint64 spec_version = 1;\n */\n specVersion = protoInt64.zero;\n\n /**\n * @generated from field: gitpod.v1.EnvironmentStatus.RunnerACK.StatusCode status_code = 2;\n */\n statusCode = EnvironmentStatus_RunnerACK_StatusCode.UNSPECIFIED;\n\n /**\n * @generated from field: string message = 3;\n */\n message = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentStatus.RunnerACK\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"spec_version\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */ },\n { no: 2, name: \"status_code\", kind: \"enum\", T: proto3.getEnumType(EnvironmentStatus_RunnerACK_StatusCode) },\n { no: 3, name: \"message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentStatus_RunnerACK {\n return new EnvironmentStatus_RunnerACK().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentStatus_RunnerACK {\n return new EnvironmentStatus_RunnerACK().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentStatus_RunnerACK {\n return new EnvironmentStatus_RunnerACK().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentStatus_RunnerACK | PlainMessage | undefined, b: EnvironmentStatus_RunnerACK | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentStatus_RunnerACK, a, b);\n }\n}\n\n/**\n * @generated from enum gitpod.v1.EnvironmentStatus.RunnerACK.StatusCode\n */\nexport enum EnvironmentStatus_RunnerACK_StatusCode {\n /**\n * @generated from enum value: STATUS_CODE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: STATUS_CODE_OK = 1;\n */\n OK = 1,\n\n /**\n * @generated from enum value: STATUS_CODE_INVALID_RESOURCE = 2;\n */\n INVALID_RESOURCE = 2,\n\n /**\n * @generated from enum value: STATUS_CODE_FAILED_PRECONDITION = 3;\n */\n FAILED_PRECONDITION = 3,\n}\n// Retrieve enum metadata with: proto3.getEnumType(EnvironmentStatus_RunnerACK_StatusCode)\nproto3.util.setEnumType(EnvironmentStatus_RunnerACK_StatusCode, \"gitpod.v1.EnvironmentStatus.RunnerACK.StatusCode\", [\n { no: 0, name: \"STATUS_CODE_UNSPECIFIED\" },\n { no: 1, name: \"STATUS_CODE_OK\" },\n { no: 2, name: \"STATUS_CODE_INVALID_RESOURCE\" },\n { no: 3, name: \"STATUS_CODE_FAILED_PRECONDITION\" },\n]);\n\n/**\n * @generated from message gitpod.v1.EnvironmentStatus.SSHPublicKey\n */\nexport class EnvironmentStatus_SSHPublicKey extends Message {\n /**\n * id is the unique identifier of the public key\n *\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * phase is the current phase of the public key\n *\n * @generated from field: gitpod.v1.EnvironmentStatus.ContentPhase phase = 2;\n */\n phase = EnvironmentStatus_ContentPhase.UNSPECIFIED;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentStatus.SSHPublicKey\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"phase\", kind: \"enum\", T: proto3.getEnumType(EnvironmentStatus_ContentPhase) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentStatus_SSHPublicKey {\n return new EnvironmentStatus_SSHPublicKey().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentStatus_SSHPublicKey {\n return new EnvironmentStatus_SSHPublicKey().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentStatus_SSHPublicKey {\n return new EnvironmentStatus_SSHPublicKey().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentStatus_SSHPublicKey | PlainMessage | undefined, b: EnvironmentStatus_SSHPublicKey | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentStatus_SSHPublicKey, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EnvironmentStatus.AutomationsFile\n */\nexport class EnvironmentStatus_AutomationsFile extends Message {\n /**\n * session is the automations file session that is currently applied in the environment.\n *\n * @generated from field: string session = 1;\n */\n session = \"\";\n\n /**\n * automations_file_path is the path to the automations file relative to the repo root.\n *\n * @generated from field: string automations_file_path = 2;\n */\n automationsFilePath = \"\";\n\n /**\n * phase is the current phase of the automations file.\n *\n * @generated from field: gitpod.v1.EnvironmentStatus.ContentPhase phase = 3;\n */\n phase = EnvironmentStatus_ContentPhase.UNSPECIFIED;\n\n /**\n * failure_message contains the reason the automations file failed to be applied.\n * This is only set if the phase is FAILED.\n *\n * @generated from field: string failure_message = 4;\n */\n failureMessage = \"\";\n\n /**\n * automations_file_presence indicates how an automations file is present in the environment.\n *\n * @generated from field: gitpod.v1.EnvironmentStatus.AutomationsFile.Presence automations_file_presence = 5;\n */\n automationsFilePresence = EnvironmentStatus_AutomationsFile_Presence.UNSPECIFIED;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentStatus.AutomationsFile\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"session\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"automations_file_path\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"phase\", kind: \"enum\", T: proto3.getEnumType(EnvironmentStatus_ContentPhase) },\n { no: 4, name: \"failure_message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"automations_file_presence\", kind: \"enum\", T: proto3.getEnumType(EnvironmentStatus_AutomationsFile_Presence) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentStatus_AutomationsFile {\n return new EnvironmentStatus_AutomationsFile().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentStatus_AutomationsFile {\n return new EnvironmentStatus_AutomationsFile().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentStatus_AutomationsFile {\n return new EnvironmentStatus_AutomationsFile().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentStatus_AutomationsFile | PlainMessage | undefined, b: EnvironmentStatus_AutomationsFile | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentStatus_AutomationsFile, a, b);\n }\n}\n\n/**\n * @generated from enum gitpod.v1.EnvironmentStatus.AutomationsFile.Presence\n */\nexport enum EnvironmentStatus_AutomationsFile_Presence {\n /**\n * @generated from enum value: PRESENCE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: PRESENCE_ABSENT = 1;\n */\n ABSENT = 1,\n\n /**\n * @generated from enum value: PRESENCE_DISCOVERED = 2;\n */\n DISCOVERED = 2,\n\n /**\n * @generated from enum value: PRESENCE_SPECIFIED = 3;\n */\n SPECIFIED = 3,\n}\n// Retrieve enum metadata with: proto3.getEnumType(EnvironmentStatus_AutomationsFile_Presence)\nproto3.util.setEnumType(EnvironmentStatus_AutomationsFile_Presence, \"gitpod.v1.EnvironmentStatus.AutomationsFile.Presence\", [\n { no: 0, name: \"PRESENCE_UNSPECIFIED\" },\n { no: 1, name: \"PRESENCE_ABSENT\" },\n { no: 2, name: \"PRESENCE_DISCOVERED\" },\n { no: 3, name: \"PRESENCE_SPECIFIED\" },\n]);\n\n/**\n * @generated from message gitpod.v1.EnvironmentGitStatus\n */\nexport class EnvironmentGitStatus extends Message {\n /**\n * clone_url is the repository url as you would pass it to \"git clone\".\n * Only HTTPS clone URLs are supported.\n *\n * @generated from field: string clone_url = 1;\n */\n cloneUrl = \"\";\n\n /**\n * branch is branch we're currently on\n *\n * @generated from field: string branch = 2;\n */\n branch = \"\";\n\n /**\n * latest_commit is the most recent commit on the current branch\n *\n * @generated from field: string latest_commit = 3;\n */\n latestCommit = \"\";\n\n /**\n * unpushed_commits is an array of unpushed changes in the environment, possibly\n * truncated\n *\n * @generated from field: repeated string unpushed_commits = 4;\n */\n unpushedCommits: string[] = [];\n\n /**\n * the total number of unpushed changes\n *\n * @generated from field: int32 total_unpushed_commits = 5;\n */\n totalUnpushedCommits = 0;\n\n /**\n * changed_files is an array of changed files in the environment, possibly\n * truncated\n *\n * @generated from field: repeated gitpod.v1.FileChange changed_files = 6;\n */\n changedFiles: FileChange[] = [];\n\n /**\n * @generated from field: int32 total_changed_files = 7;\n */\n totalChangedFiles = 0;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentGitStatus\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"clone_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"branch\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"latest_commit\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"unpushed_commits\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 5, name: \"total_unpushed_commits\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n { no: 6, name: \"changed_files\", kind: \"message\", T: FileChange, repeated: true },\n { no: 7, name: \"total_changed_files\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentGitStatus {\n return new EnvironmentGitStatus().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentGitStatus {\n return new EnvironmentGitStatus().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentGitStatus {\n return new EnvironmentGitStatus().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentGitStatus | PlainMessage | undefined, b: EnvironmentGitStatus | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentGitStatus, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.FileChange\n */\nexport class FileChange extends Message {\n /**\n * path is the path of the file\n *\n * @generated from field: string path = 1;\n */\n path = \"\";\n\n /**\n * @generated from field: gitpod.v1.FileChange.ChangeType change_type = 2;\n */\n changeType = FileChange_ChangeType.UNSPECIFIED;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.FileChange\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"path\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"change_type\", kind: \"enum\", T: proto3.getEnumType(FileChange_ChangeType) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): FileChange {\n return new FileChange().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): FileChange {\n return new FileChange().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): FileChange {\n return new FileChange().fromJsonString(jsonString, options);\n }\n\n static equals(a: FileChange | PlainMessage | undefined, b: FileChange | PlainMessage | undefined): boolean {\n return proto3.util.equals(FileChange, a, b);\n }\n}\n\n/**\n * ChangeType is the type of change that happened to the file\n *\n * @generated from enum gitpod.v1.FileChange.ChangeType\n */\nexport enum FileChange_ChangeType {\n /**\n * @generated from enum value: CHANGE_TYPE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: CHANGE_TYPE_ADDED = 1;\n */\n ADDED = 1,\n\n /**\n * @generated from enum value: CHANGE_TYPE_MODIFIED = 2;\n */\n MODIFIED = 2,\n\n /**\n * @generated from enum value: CHANGE_TYPE_DELETED = 3;\n */\n DELETED = 3,\n\n /**\n * @generated from enum value: CHANGE_TYPE_RENAMED = 4;\n */\n RENAMED = 4,\n\n /**\n * @generated from enum value: CHANGE_TYPE_COPIED = 5;\n */\n COPIED = 5,\n\n /**\n * @generated from enum value: CHANGE_TYPE_UPDATED_BUT_UNMERGED = 6;\n */\n UPDATED_BUT_UNMERGED = 6,\n\n /**\n * @generated from enum value: CHANGE_TYPE_UNTRACKED = 7;\n */\n UNTRACKED = 7,\n}\n// Retrieve enum metadata with: proto3.getEnumType(FileChange_ChangeType)\nproto3.util.setEnumType(FileChange_ChangeType, \"gitpod.v1.FileChange.ChangeType\", [\n { no: 0, name: \"CHANGE_TYPE_UNSPECIFIED\" },\n { no: 1, name: \"CHANGE_TYPE_ADDED\" },\n { no: 2, name: \"CHANGE_TYPE_MODIFIED\" },\n { no: 3, name: \"CHANGE_TYPE_DELETED\" },\n { no: 4, name: \"CHANGE_TYPE_RENAMED\" },\n { no: 5, name: \"CHANGE_TYPE_COPIED\" },\n { no: 6, name: \"CHANGE_TYPE_UPDATED_BUT_UNMERGED\" },\n { no: 7, name: \"CHANGE_TYPE_UNTRACKED\" },\n]);\n\n/**\n * EnvironmentInitializer specifies how an environment is to be initialized\n *\n * @generated from message gitpod.v1.EnvironmentInitializer\n */\nexport class EnvironmentInitializer extends Message {\n /**\n * @generated from field: repeated gitpod.v1.EnvironmentInitializer.Spec specs = 1;\n */\n specs: EnvironmentInitializer_Spec[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentInitializer\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"specs\", kind: \"message\", T: EnvironmentInitializer_Spec, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentInitializer {\n return new EnvironmentInitializer().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentInitializer {\n return new EnvironmentInitializer().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentInitializer {\n return new EnvironmentInitializer().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentInitializer | PlainMessage | undefined, b: EnvironmentInitializer | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentInitializer, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EnvironmentInitializer.Spec\n */\nexport class EnvironmentInitializer_Spec extends Message {\n /**\n * @generated from oneof gitpod.v1.EnvironmentInitializer.Spec.spec\n */\n spec: {\n /**\n * @generated from field: gitpod.v1.GitInitializer git = 1;\n */\n value: GitInitializer;\n case: \"git\";\n } | {\n /**\n * @generated from field: gitpod.v1.ContextURLInitializer context_url = 2;\n */\n value: ContextURLInitializer;\n case: \"contextUrl\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EnvironmentInitializer.Spec\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"git\", kind: \"message\", T: GitInitializer, oneof: \"spec\" },\n { no: 2, name: \"context_url\", kind: \"message\", T: ContextURLInitializer, oneof: \"spec\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentInitializer_Spec {\n return new EnvironmentInitializer_Spec().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentInitializer_Spec {\n return new EnvironmentInitializer_Spec().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentInitializer_Spec {\n return new EnvironmentInitializer_Spec().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentInitializer_Spec | PlainMessage | undefined, b: EnvironmentInitializer_Spec | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentInitializer_Spec, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ContextURLInitializer\n */\nexport class ContextURLInitializer extends Message {\n /**\n * url is the URL from which the environment is created\n *\n * @generated from field: string url = 1;\n */\n url = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ContextURLInitializer\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ContextURLInitializer {\n return new ContextURLInitializer().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ContextURLInitializer {\n return new ContextURLInitializer().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ContextURLInitializer {\n return new ContextURLInitializer().fromJsonString(jsonString, options);\n }\n\n static equals(a: ContextURLInitializer | PlainMessage | undefined, b: ContextURLInitializer | PlainMessage | undefined): boolean {\n return proto3.util.equals(ContextURLInitializer, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GitInitializer\n */\nexport class GitInitializer extends Message {\n /**\n * remote_uri is the Git remote origin\n *\n * @generated from field: string remote_uri = 1;\n */\n remoteUri = \"\";\n\n /**\n * upstream_Remote_uri is the fork upstream of a repository\n *\n * @generated from field: string upstream_remote_uri = 2;\n */\n upstreamRemoteUri = \"\";\n\n /**\n * the target mode determines what gets checked out\n *\n * @generated from field: gitpod.v1.GitInitializer.CloneTargetMode target_mode = 3;\n */\n targetMode = GitInitializer_CloneTargetMode.UNSPECIFIED;\n\n /**\n * the value for the clone target mode - use depends on the target mode\n *\n * @generated from field: string clone_target = 4;\n */\n cloneTarget = \"\";\n\n /**\n * a path relative to the environment root in which the code will be checked out\n * to\n *\n * @generated from field: string checkout_location = 5;\n */\n checkoutLocation = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GitInitializer\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"remote_uri\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"upstream_remote_uri\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"target_mode\", kind: \"enum\", T: proto3.getEnumType(GitInitializer_CloneTargetMode) },\n { no: 4, name: \"clone_target\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"checkout_location\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GitInitializer {\n return new GitInitializer().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GitInitializer {\n return new GitInitializer().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GitInitializer {\n return new GitInitializer().fromJsonString(jsonString, options);\n }\n\n static equals(a: GitInitializer | PlainMessage | undefined, b: GitInitializer | PlainMessage | undefined): boolean {\n return proto3.util.equals(GitInitializer, a, b);\n }\n}\n\n/**\n * CloneTargetMode is the target state in which we want to leave a\n * GitEnvironment\n *\n * @generated from enum gitpod.v1.GitInitializer.CloneTargetMode\n */\nexport enum GitInitializer_CloneTargetMode {\n /**\n * @generated from enum value: CLONE_TARGET_MODE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * REMOTE_HEAD has the local WS point at the remote branch head\n *\n * @generated from enum value: CLONE_TARGET_MODE_REMOTE_HEAD = 1;\n */\n REMOTE_HEAD = 1,\n\n /**\n * REMOTE_COMMIT has the local WS point at a specific commit\n *\n * @generated from enum value: CLONE_TARGET_MODE_REMOTE_COMMIT = 2;\n */\n REMOTE_COMMIT = 2,\n\n /**\n * REMOTE_BRANCH has the local WS point at a remote branch\n *\n * @generated from enum value: CLONE_TARGET_MODE_REMOTE_BRANCH = 3;\n */\n REMOTE_BRANCH = 3,\n\n /**\n * LOCAL_BRANCH creates a local branch in the environment\n *\n * @generated from enum value: CLONE_TARGET_MODE_LOCAL_BRANCH = 4;\n */\n LOCAL_BRANCH = 4,\n}\n// Retrieve enum metadata with: proto3.getEnumType(GitInitializer_CloneTargetMode)\nproto3.util.setEnumType(GitInitializer_CloneTargetMode, \"gitpod.v1.GitInitializer.CloneTargetMode\", [\n { no: 0, name: \"CLONE_TARGET_MODE_UNSPECIFIED\" },\n { no: 1, name: \"CLONE_TARGET_MODE_REMOTE_HEAD\" },\n { no: 2, name: \"CLONE_TARGET_MODE_REMOTE_COMMIT\" },\n { no: 3, name: \"CLONE_TARGET_MODE_REMOTE_BRANCH\" },\n { no: 4, name: \"CLONE_TARGET_MODE_LOCAL_BRANCH\" },\n]);\n\n/**\n * @generated from message gitpod.v1.StartEnvironmentRequest\n */\nexport class StartEnvironmentRequest extends Message {\n /**\n * environment_id specifies which environment should be started.\n *\n * @generated from field: string environment_id = 1;\n */\n environmentId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.StartEnvironmentRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): StartEnvironmentRequest {\n return new StartEnvironmentRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): StartEnvironmentRequest {\n return new StartEnvironmentRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): StartEnvironmentRequest {\n return new StartEnvironmentRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: StartEnvironmentRequest | PlainMessage | undefined, b: StartEnvironmentRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(StartEnvironmentRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.StartEnvironmentResponse\n */\nexport class StartEnvironmentResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.StartEnvironmentResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): StartEnvironmentResponse {\n return new StartEnvironmentResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): StartEnvironmentResponse {\n return new StartEnvironmentResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): StartEnvironmentResponse {\n return new StartEnvironmentResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: StartEnvironmentResponse | PlainMessage | undefined, b: StartEnvironmentResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(StartEnvironmentResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.StopEnvironmentRequest\n */\nexport class StopEnvironmentRequest extends Message {\n /**\n * environment_id specifies which environment should be stopped.\n *\n * +required\n *\n * @generated from field: string environment_id = 1;\n */\n environmentId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.StopEnvironmentRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): StopEnvironmentRequest {\n return new StopEnvironmentRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): StopEnvironmentRequest {\n return new StopEnvironmentRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): StopEnvironmentRequest {\n return new StopEnvironmentRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: StopEnvironmentRequest | PlainMessage | undefined, b: StopEnvironmentRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(StopEnvironmentRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.StopEnvironmentResponse\n */\nexport class StopEnvironmentResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.StopEnvironmentResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): StopEnvironmentResponse {\n return new StopEnvironmentResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): StopEnvironmentResponse {\n return new StopEnvironmentResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): StopEnvironmentResponse {\n return new StopEnvironmentResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: StopEnvironmentResponse | PlainMessage | undefined, b: StopEnvironmentResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(StopEnvironmentResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateEnvironmentRequest\n */\nexport class UpdateEnvironmentRequest extends Message {\n /**\n * environment_id specifies which environment should be updated.\n *\n * +required\n *\n * @generated from field: string environment_id = 1;\n */\n environmentId = \"\";\n\n /**\n * @generated from field: optional gitpod.v1.UpdateEnvironmentRequest.Metadata metadata = 2;\n */\n metadata?: UpdateEnvironmentRequest_Metadata;\n\n /**\n * @generated from field: optional gitpod.v1.UpdateEnvironmentRequest.Spec spec = 3;\n */\n spec?: UpdateEnvironmentRequest_Spec;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateEnvironmentRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"metadata\", kind: \"message\", T: UpdateEnvironmentRequest_Metadata, opt: true },\n { no: 3, name: \"spec\", kind: \"message\", T: UpdateEnvironmentRequest_Spec, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateEnvironmentRequest {\n return new UpdateEnvironmentRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateEnvironmentRequest {\n return new UpdateEnvironmentRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateEnvironmentRequest {\n return new UpdateEnvironmentRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateEnvironmentRequest | PlainMessage | undefined, b: UpdateEnvironmentRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateEnvironmentRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateEnvironmentRequest.Content\n */\nexport class UpdateEnvironmentRequest_Content extends Message {\n /**\n * session should be changed to trigger a content reinitialization\n *\n * @generated from field: optional string session = 1;\n */\n session?: string;\n\n /**\n * initializer configures how the environment is to be initialized\n *\n * @generated from field: optional gitpod.v1.EnvironmentInitializer initializer = 2;\n */\n initializer?: EnvironmentInitializer;\n\n /**\n * The Git username\n *\n * @generated from field: optional string git_username = 3;\n */\n gitUsername?: string;\n\n /**\n * The Git email address\n *\n * @generated from field: optional string git_email = 4;\n */\n gitEmail?: string;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateEnvironmentRequest.Content\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"session\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 2, name: \"initializer\", kind: \"message\", T: EnvironmentInitializer, opt: true },\n { no: 3, name: \"git_username\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 4, name: \"git_email\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateEnvironmentRequest_Content {\n return new UpdateEnvironmentRequest_Content().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateEnvironmentRequest_Content {\n return new UpdateEnvironmentRequest_Content().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateEnvironmentRequest_Content {\n return new UpdateEnvironmentRequest_Content().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateEnvironmentRequest_Content | PlainMessage | undefined, b: UpdateEnvironmentRequest_Content | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateEnvironmentRequest_Content, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateEnvironmentRequest.SSHPublicKey\n */\nexport class UpdateEnvironmentRequest_SSHPublicKey extends Message {\n /**\n * id is the unique identifier of the public key\n *\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * value is the actual public key in the public key file format\n * if not provided, the public key will be removed\n *\n * @generated from field: optional string value = 2;\n */\n value?: string;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateEnvironmentRequest.SSHPublicKey\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"value\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateEnvironmentRequest_SSHPublicKey {\n return new UpdateEnvironmentRequest_SSHPublicKey().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateEnvironmentRequest_SSHPublicKey {\n return new UpdateEnvironmentRequest_SSHPublicKey().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateEnvironmentRequest_SSHPublicKey {\n return new UpdateEnvironmentRequest_SSHPublicKey().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateEnvironmentRequest_SSHPublicKey | PlainMessage | undefined, b: UpdateEnvironmentRequest_SSHPublicKey | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateEnvironmentRequest_SSHPublicKey, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateEnvironmentRequest.DevContainer\n */\nexport class UpdateEnvironmentRequest_DevContainer extends Message {\n /**\n * session should be changed to trigger a devcontainer rebuild\n *\n * @generated from field: optional string session = 1;\n */\n session?: string;\n\n /**\n * devcontainer_file_path is the path to the devcontainer file relative to the repo root\n *\n * @generated from field: optional string devcontainer_file_path = 2;\n */\n devcontainerFilePath?: string;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateEnvironmentRequest.DevContainer\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"session\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 2, name: \"devcontainer_file_path\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateEnvironmentRequest_DevContainer {\n return new UpdateEnvironmentRequest_DevContainer().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateEnvironmentRequest_DevContainer {\n return new UpdateEnvironmentRequest_DevContainer().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateEnvironmentRequest_DevContainer {\n return new UpdateEnvironmentRequest_DevContainer().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateEnvironmentRequest_DevContainer | PlainMessage | undefined, b: UpdateEnvironmentRequest_DevContainer | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateEnvironmentRequest_DevContainer, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateEnvironmentRequest.Timeout\n */\nexport class UpdateEnvironmentRequest_Timeout extends Message {\n /**\n * inacitivity is the maximum time of disconnection before the environment is\n * stopped or paused. Minimum duration is 30 minutes. Set to 0 to disable.\n *\n * @generated from field: optional google.protobuf.Duration disconnected = 1;\n */\n disconnected?: Duration;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateEnvironmentRequest.Timeout\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"disconnected\", kind: \"message\", T: Duration, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateEnvironmentRequest_Timeout {\n return new UpdateEnvironmentRequest_Timeout().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateEnvironmentRequest_Timeout {\n return new UpdateEnvironmentRequest_Timeout().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateEnvironmentRequest_Timeout {\n return new UpdateEnvironmentRequest_Timeout().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateEnvironmentRequest_Timeout | PlainMessage | undefined, b: UpdateEnvironmentRequest_Timeout | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateEnvironmentRequest_Timeout, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateEnvironmentRequest.AutomationsFile\n */\nexport class UpdateEnvironmentRequest_AutomationsFile extends Message {\n /**\n * @generated from field: optional string session = 1;\n */\n session?: string;\n\n /**\n * automations_file_path is the path to the automations file that is applied in the environment,\n * relative to the repo root.\n *\n * @generated from field: optional string automations_file_path = 2;\n */\n automationsFilePath?: string;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateEnvironmentRequest.AutomationsFile\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"session\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 2, name: \"automations_file_path\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateEnvironmentRequest_AutomationsFile {\n return new UpdateEnvironmentRequest_AutomationsFile().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateEnvironmentRequest_AutomationsFile {\n return new UpdateEnvironmentRequest_AutomationsFile().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateEnvironmentRequest_AutomationsFile {\n return new UpdateEnvironmentRequest_AutomationsFile().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateEnvironmentRequest_AutomationsFile | PlainMessage | undefined, b: UpdateEnvironmentRequest_AutomationsFile | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateEnvironmentRequest_AutomationsFile, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateEnvironmentRequest.Metadata\n */\nexport class UpdateEnvironmentRequest_Metadata extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateEnvironmentRequest.Metadata\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateEnvironmentRequest_Metadata {\n return new UpdateEnvironmentRequest_Metadata().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateEnvironmentRequest_Metadata {\n return new UpdateEnvironmentRequest_Metadata().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateEnvironmentRequest_Metadata {\n return new UpdateEnvironmentRequest_Metadata().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateEnvironmentRequest_Metadata | PlainMessage | undefined, b: UpdateEnvironmentRequest_Metadata | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateEnvironmentRequest_Metadata, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateEnvironmentRequest.Spec\n */\nexport class UpdateEnvironmentRequest_Spec extends Message {\n /**\n * @generated from field: optional gitpod.v1.UpdateEnvironmentRequest.Content content = 2;\n */\n content?: UpdateEnvironmentRequest_Content;\n\n /**\n * ssh_public_keys are the public keys to update\n * empty array means nothing to update\n *\n * @generated from field: repeated gitpod.v1.UpdateEnvironmentRequest.SSHPublicKey ssh_public_keys = 3;\n */\n sshPublicKeys: UpdateEnvironmentRequest_SSHPublicKey[] = [];\n\n /**\n * @generated from field: optional gitpod.v1.UpdateEnvironmentRequest.DevContainer devcontainer = 4;\n */\n devcontainer?: UpdateEnvironmentRequest_DevContainer;\n\n /**\n * ports controls port sharing\n *\n * @generated from field: repeated gitpod.v1.EnvironmentSpec.EnvironmentPort ports = 5;\n */\n ports: EnvironmentSpec_EnvironmentPort[] = [];\n\n /**\n * Timeout configures the environment timeout\n *\n * @generated from field: optional gitpod.v1.UpdateEnvironmentRequest.Timeout timeout = 6;\n */\n timeout?: UpdateEnvironmentRequest_Timeout;\n\n /**\n * automations_file is the automations file spec of the environment\n *\n * @generated from field: optional gitpod.v1.UpdateEnvironmentRequest.AutomationsFile automations_file = 7;\n */\n automationsFile?: UpdateEnvironmentRequest_AutomationsFile;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateEnvironmentRequest.Spec\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 2, name: \"content\", kind: \"message\", T: UpdateEnvironmentRequest_Content, opt: true },\n { no: 3, name: \"ssh_public_keys\", kind: \"message\", T: UpdateEnvironmentRequest_SSHPublicKey, repeated: true },\n { no: 4, name: \"devcontainer\", kind: \"message\", T: UpdateEnvironmentRequest_DevContainer, opt: true },\n { no: 5, name: \"ports\", kind: \"message\", T: EnvironmentSpec_EnvironmentPort, repeated: true },\n { no: 6, name: \"timeout\", kind: \"message\", T: UpdateEnvironmentRequest_Timeout, opt: true },\n { no: 7, name: \"automations_file\", kind: \"message\", T: UpdateEnvironmentRequest_AutomationsFile, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateEnvironmentRequest_Spec {\n return new UpdateEnvironmentRequest_Spec().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateEnvironmentRequest_Spec {\n return new UpdateEnvironmentRequest_Spec().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateEnvironmentRequest_Spec {\n return new UpdateEnvironmentRequest_Spec().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateEnvironmentRequest_Spec | PlainMessage | undefined, b: UpdateEnvironmentRequest_Spec | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateEnvironmentRequest_Spec, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateEnvironmentResponse\n */\nexport class UpdateEnvironmentResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateEnvironmentResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateEnvironmentResponse {\n return new UpdateEnvironmentResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateEnvironmentResponse {\n return new UpdateEnvironmentResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateEnvironmentResponse {\n return new UpdateEnvironmentResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateEnvironmentResponse | PlainMessage | undefined, b: UpdateEnvironmentResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateEnvironmentResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteEnvironmentRequest\n */\nexport class DeleteEnvironmentRequest extends Message {\n /**\n * environment_id specifies the environment that is going to delete.\n *\n * +required\n *\n * @generated from field: string environment_id = 1;\n */\n environmentId = \"\";\n\n /**\n * force indicates whether the environment should be deleted forcefully\n * When force deleting an Environment, the Environment is removed immediately and\n * environment lifecycle is not respected.\n * Force deleting can result in data loss on the environment.\n *\n * @generated from field: bool force = 2;\n */\n force = false;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteEnvironmentRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"force\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteEnvironmentRequest {\n return new DeleteEnvironmentRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteEnvironmentRequest {\n return new DeleteEnvironmentRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteEnvironmentRequest {\n return new DeleteEnvironmentRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteEnvironmentRequest | PlainMessage | undefined, b: DeleteEnvironmentRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteEnvironmentRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteEnvironmentResponse\n */\nexport class DeleteEnvironmentResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteEnvironmentResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteEnvironmentResponse {\n return new DeleteEnvironmentResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteEnvironmentResponse {\n return new DeleteEnvironmentResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteEnvironmentResponse {\n return new DeleteEnvironmentResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteEnvironmentResponse | PlainMessage | undefined, b: DeleteEnvironmentResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteEnvironmentResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateEnvironmentLogsTokenRequest\n */\nexport class CreateEnvironmentLogsTokenRequest extends Message {\n /**\n * environment_id specifies the environment for which the logs token should be created.\n *\n * +required\n *\n * @generated from field: string environment_id = 1;\n */\n environmentId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateEnvironmentLogsTokenRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateEnvironmentLogsTokenRequest {\n return new CreateEnvironmentLogsTokenRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateEnvironmentLogsTokenRequest {\n return new CreateEnvironmentLogsTokenRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateEnvironmentLogsTokenRequest {\n return new CreateEnvironmentLogsTokenRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateEnvironmentLogsTokenRequest | PlainMessage | undefined, b: CreateEnvironmentLogsTokenRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateEnvironmentLogsTokenRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateEnvironmentLogsTokenResponse\n */\nexport class CreateEnvironmentLogsTokenResponse extends Message {\n /**\n * access_token is the token that can be used to access the logs of the environment\n *\n * @generated from field: string access_token = 1;\n */\n accessToken = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateEnvironmentLogsTokenResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"access_token\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateEnvironmentLogsTokenResponse {\n return new CreateEnvironmentLogsTokenResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateEnvironmentLogsTokenResponse {\n return new CreateEnvironmentLogsTokenResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateEnvironmentLogsTokenResponse {\n return new CreateEnvironmentLogsTokenResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateEnvironmentLogsTokenResponse | PlainMessage | undefined, b: CreateEnvironmentLogsTokenResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateEnvironmentLogsTokenResponse, a, b);\n }\n}\n\n","// @generated by protoc-gen-connect-es v1.4.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/environment.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { CreateEnvironmentFromProjectRequest, CreateEnvironmentFromProjectResponse, CreateEnvironmentLogsTokenRequest, CreateEnvironmentLogsTokenResponse, CreateEnvironmentRequest, CreateEnvironmentResponse, DeleteEnvironmentRequest, DeleteEnvironmentResponse, GetEnvironmentRequest, GetEnvironmentResponse, ListEnvironmentsRequest, ListEnvironmentsResponse, MarkEnvironmentActiveRequest, MarkEnvironmentActiveResponse, StartEnvironmentRequest, StartEnvironmentResponse, StopEnvironmentRequest, StopEnvironmentResponse, UpdateEnvironmentRequest, UpdateEnvironmentResponse } from \"./environment_pb.js\";\nimport { MethodIdempotency, MethodKind } from \"@bufbuild/protobuf\";\nimport { ListEnvironmentClassesRequest, ListEnvironmentClassesResponse } from \"./runner_configuration_pb.js\";\n\n/**\n * @generated from service gitpod.v1.EnvironmentService\n */\nexport const EnvironmentService = {\n typeName: \"gitpod.v1.EnvironmentService\",\n methods: {\n /**\n * GetEnvironment returns a single environment.\n *\n * +return NOT_FOUND User does not have access to an environment with the given\n * ID +return NOT_FOUND Environment does not exist\n *\n * @generated from rpc gitpod.v1.EnvironmentService.GetEnvironment\n */\n getEnvironment: {\n name: \"GetEnvironment\",\n I: GetEnvironmentRequest,\n O: GetEnvironmentResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * ListEnvironments returns a list of environments that match the query.\n *\n * @generated from rpc gitpod.v1.EnvironmentService.ListEnvironments\n */\n listEnvironments: {\n name: \"ListEnvironments\",\n I: ListEnvironmentsRequest,\n O: ListEnvironmentsResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * ListEnvironmentClasses returns the list of environment classes with runner details a user is able to use based on the\n * query\n * buf:lint:ignore RPC_REQUEST_RESPONSE_UNIQUE\n *\n * @generated from rpc gitpod.v1.EnvironmentService.ListEnvironmentClasses\n */\n listEnvironmentClasses: {\n name: \"ListEnvironmentClasses\",\n I: ListEnvironmentClassesRequest,\n O: ListEnvironmentClassesResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * CreateEnvironment creates a new environment and starts it.\n *\n * @generated from rpc gitpod.v1.EnvironmentService.CreateEnvironment\n */\n createEnvironment: {\n name: \"CreateEnvironment\",\n I: CreateEnvironmentRequest,\n O: CreateEnvironmentResponse,\n kind: MethodKind.Unary,\n },\n /**\n * CreateAbdStartEnvironmentFromProject creates a new environment from a project and starts it.\n *\n * @generated from rpc gitpod.v1.EnvironmentService.CreateEnvironmentFromProject\n */\n createEnvironmentFromProject: {\n name: \"CreateEnvironmentFromProject\",\n I: CreateEnvironmentFromProjectRequest,\n O: CreateEnvironmentFromProjectResponse,\n kind: MethodKind.Unary,\n },\n /**\n * StartEnvironment starts an environment. This function is idempotent, i.e. if\n * the environment is already running no error is returned.\n *\n * @generated from rpc gitpod.v1.EnvironmentService.StartEnvironment\n */\n startEnvironment: {\n name: \"StartEnvironment\",\n I: StartEnvironmentRequest,\n O: StartEnvironmentResponse,\n kind: MethodKind.Unary,\n },\n /**\n * StopEnvironment stops a running environment.\n *\n * @generated from rpc gitpod.v1.EnvironmentService.StopEnvironment\n */\n stopEnvironment: {\n name: \"StopEnvironment\",\n I: StopEnvironmentRequest,\n O: StopEnvironmentResponse,\n kind: MethodKind.Unary,\n },\n /**\n * UpdateEnvironment updates the environment partially.\n *\n * @generated from rpc gitpod.v1.EnvironmentService.UpdateEnvironment\n */\n updateEnvironment: {\n name: \"UpdateEnvironment\",\n I: UpdateEnvironmentRequest,\n O: UpdateEnvironmentResponse,\n kind: MethodKind.Unary,\n },\n /**\n * DeleteEnvironment deletes an environment.\n * When the environment is running, it will be stopped as well.\n * Deleted environments cannot be started again.\n *\n * @generated from rpc gitpod.v1.EnvironmentService.DeleteEnvironment\n */\n deleteEnvironment: {\n name: \"DeleteEnvironment\",\n I: DeleteEnvironmentRequest,\n O: DeleteEnvironmentResponse,\n kind: MethodKind.Unary,\n },\n /**\n * CreateEnvironmentLogsToken creates a token that can be used to access the logs of an environment.\n *\n * @generated from rpc gitpod.v1.EnvironmentService.CreateEnvironmentLogsToken\n */\n createEnvironmentLogsToken: {\n name: \"CreateEnvironmentLogsToken\",\n I: CreateEnvironmentLogsTokenRequest,\n O: CreateEnvironmentLogsTokenResponse,\n kind: MethodKind.Unary,\n },\n /**\n * MarkEnvironmentActive allows tools to signal activity for an environment.\n *\n * @generated from rpc gitpod.v1.EnvironmentService.MarkEnvironmentActive\n */\n markEnvironmentActive: {\n name: \"MarkEnvironmentActive\",\n I: MarkEnvironmentActiveRequest,\n O: MarkEnvironmentActiveResponse,\n kind: MethodKind.Unary,\n },\n }\n} as const;\n\n","// @generated by protoc-gen-es v1.8.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/project.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Message, proto3, Timestamp } from \"@bufbuild/protobuf\";\nimport { EnvironmentInitializer } from \"./environment_pb.js\";\nimport { PaginationRequest, PaginationResponse } from \"./pagination_pb.js\";\nimport { Subject } from \"./identity_pb.js\";\n\n/**\n * @generated from enum gitpod.v1.ProjectRole\n */\nexport enum ProjectRole {\n /**\n * @generated from enum value: PROJECT_ROLE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: PROJECT_ROLE_ADMIN = 1;\n */\n ADMIN = 1,\n\n /**\n * @generated from enum value: PROJECT_ROLE_USER = 2;\n */\n USER = 2,\n}\n// Retrieve enum metadata with: proto3.getEnumType(ProjectRole)\nproto3.util.setEnumType(ProjectRole, \"gitpod.v1.ProjectRole\", [\n { no: 0, name: \"PROJECT_ROLE_UNSPECIFIED\" },\n { no: 1, name: \"PROJECT_ROLE_ADMIN\" },\n { no: 2, name: \"PROJECT_ROLE_USER\" },\n]);\n\n/**\n * @generated from message gitpod.v1.CreateProjectRequest\n */\nexport class CreateProjectRequest extends Message {\n /**\n * @generated from field: string name = 1;\n */\n name = \"\";\n\n /**\n * initializer is the content initializer\n *\n * @generated from field: gitpod.v1.EnvironmentInitializer initializer = 2;\n */\n initializer?: EnvironmentInitializer;\n\n /**\n * @generated from field: gitpod.v1.ProjectEnvironmentClass environment_class = 3;\n */\n environmentClass?: ProjectEnvironmentClass;\n\n /**\n * devcontainer_file_path is the path to the devcontainer file relative to the repo root\n *\n * @generated from field: string devcontainer_file_path = 4;\n */\n devcontainerFilePath = \"\";\n\n /**\n * automations_file_path is the path to the automations file relative to the repo root\n *\n * @generated from field: string automations_file_path = 5;\n */\n automationsFilePath = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateProjectRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"initializer\", kind: \"message\", T: EnvironmentInitializer },\n { no: 3, name: \"environment_class\", kind: \"message\", T: ProjectEnvironmentClass },\n { no: 4, name: \"devcontainer_file_path\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"automations_file_path\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateProjectRequest {\n return new CreateProjectRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateProjectRequest {\n return new CreateProjectRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateProjectRequest {\n return new CreateProjectRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateProjectRequest | PlainMessage | undefined, b: CreateProjectRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateProjectRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateProjectResponse\n */\nexport class CreateProjectResponse extends Message {\n /**\n * @generated from field: gitpod.v1.Project project = 1;\n */\n project?: Project;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateProjectResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"project\", kind: \"message\", T: Project },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateProjectResponse {\n return new CreateProjectResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateProjectResponse {\n return new CreateProjectResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateProjectResponse {\n return new CreateProjectResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateProjectResponse | PlainMessage | undefined, b: CreateProjectResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateProjectResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateProjectFromEnvironmentRequest\n */\nexport class CreateProjectFromEnvironmentRequest extends Message {\n /**\n * @generated from field: string name = 1;\n */\n name = \"\";\n\n /**\n * environment_id specifies the environment identifier\n *\n * @generated from field: string environment_id = 2;\n */\n environmentId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateProjectFromEnvironmentRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateProjectFromEnvironmentRequest {\n return new CreateProjectFromEnvironmentRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateProjectFromEnvironmentRequest {\n return new CreateProjectFromEnvironmentRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateProjectFromEnvironmentRequest {\n return new CreateProjectFromEnvironmentRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateProjectFromEnvironmentRequest | PlainMessage | undefined, b: CreateProjectFromEnvironmentRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateProjectFromEnvironmentRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateProjectFromEnvironmentResponse\n */\nexport class CreateProjectFromEnvironmentResponse extends Message {\n /**\n * @generated from field: gitpod.v1.Project project = 1;\n */\n project?: Project;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateProjectFromEnvironmentResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"project\", kind: \"message\", T: Project },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateProjectFromEnvironmentResponse {\n return new CreateProjectFromEnvironmentResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateProjectFromEnvironmentResponse {\n return new CreateProjectFromEnvironmentResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateProjectFromEnvironmentResponse {\n return new CreateProjectFromEnvironmentResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateProjectFromEnvironmentResponse | PlainMessage | undefined, b: CreateProjectFromEnvironmentResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateProjectFromEnvironmentResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetProjectRequest\n */\nexport class GetProjectRequest extends Message {\n /**\n * project_id specifies the project identifier\n *\n * @generated from field: string project_id = 1;\n */\n projectId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetProjectRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"project_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetProjectRequest {\n return new GetProjectRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetProjectRequest {\n return new GetProjectRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetProjectRequest {\n return new GetProjectRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetProjectRequest | PlainMessage | undefined, b: GetProjectRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetProjectRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetProjectResponse\n */\nexport class GetProjectResponse extends Message {\n /**\n * @generated from field: gitpod.v1.Project project = 1;\n */\n project?: Project;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetProjectResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"project\", kind: \"message\", T: Project },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetProjectResponse {\n return new GetProjectResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetProjectResponse {\n return new GetProjectResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetProjectResponse {\n return new GetProjectResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetProjectResponse | PlainMessage | undefined, b: GetProjectResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetProjectResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateProjectRequest\n */\nexport class UpdateProjectRequest extends Message {\n /**\n * project_id specifies the project identifier\n *\n * @generated from field: string project_id = 1;\n */\n projectId = \"\";\n\n /**\n * @generated from field: optional string name = 2;\n */\n name?: string;\n\n /**\n * @generated from field: optional gitpod.v1.ProjectEnvironmentClass environment_class = 3;\n */\n environmentClass?: ProjectEnvironmentClass;\n\n /**\n * initializer is the content initializer\n *\n * @generated from field: optional gitpod.v1.EnvironmentInitializer initializer = 4;\n */\n initializer?: EnvironmentInitializer;\n\n /**\n * devcontainer_file_path is the path to the devcontainer file relative to the repo root\n *\n * @generated from field: optional string devcontainer_file_path = 5;\n */\n devcontainerFilePath?: string;\n\n /**\n * automations_file_path is the path to the automations file relative to the repo root\n *\n * @generated from field: optional string automations_file_path = 6;\n */\n automationsFilePath?: string;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateProjectRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"project_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"environment_class\", kind: \"message\", T: ProjectEnvironmentClass, opt: true },\n { no: 4, name: \"initializer\", kind: \"message\", T: EnvironmentInitializer, opt: true },\n { no: 5, name: \"devcontainer_file_path\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 6, name: \"automations_file_path\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateProjectRequest {\n return new UpdateProjectRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateProjectRequest {\n return new UpdateProjectRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateProjectRequest {\n return new UpdateProjectRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateProjectRequest | PlainMessage | undefined, b: UpdateProjectRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateProjectRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateProjectResponse\n */\nexport class UpdateProjectResponse extends Message {\n /**\n * @generated from field: gitpod.v1.Project project = 1;\n */\n project?: Project;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateProjectResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"project\", kind: \"message\", T: Project },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateProjectResponse {\n return new UpdateProjectResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateProjectResponse {\n return new UpdateProjectResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateProjectResponse {\n return new UpdateProjectResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateProjectResponse | PlainMessage | undefined, b: UpdateProjectResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateProjectResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListProjectsRequest\n */\nexport class ListProjectsRequest extends Message {\n /**\n * pagination contains the pagination options for listing organizations\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListProjectsRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListProjectsRequest {\n return new ListProjectsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListProjectsRequest {\n return new ListProjectsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListProjectsRequest {\n return new ListProjectsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListProjectsRequest | PlainMessage | undefined, b: ListProjectsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListProjectsRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListProjectsResponse\n */\nexport class ListProjectsResponse extends Message {\n /**\n * pagination contains the pagination options for listing organizations\n *\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * @generated from field: repeated gitpod.v1.Project projects = 2;\n */\n projects: Project[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListProjectsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"projects\", kind: \"message\", T: Project, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListProjectsResponse {\n return new ListProjectsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListProjectsResponse {\n return new ListProjectsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListProjectsResponse {\n return new ListProjectsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListProjectsResponse | PlainMessage | undefined, b: ListProjectsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListProjectsResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteProjectRequest\n */\nexport class DeleteProjectRequest extends Message {\n /**\n * project_id specifies the project identifier\n *\n * @generated from field: string project_id = 1;\n */\n projectId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteProjectRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"project_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteProjectRequest {\n return new DeleteProjectRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteProjectRequest {\n return new DeleteProjectRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteProjectRequest {\n return new DeleteProjectRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteProjectRequest | PlainMessage | undefined, b: DeleteProjectRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteProjectRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteProjectResponse\n */\nexport class DeleteProjectResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteProjectResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteProjectResponse {\n return new DeleteProjectResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteProjectResponse {\n return new DeleteProjectResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteProjectResponse {\n return new DeleteProjectResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteProjectResponse | PlainMessage | undefined, b: DeleteProjectResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteProjectResponse, a, b);\n }\n}\n\n/**\n * ListProjectPoliciesRequest lists policies for a project.\n *\n * @generated from message gitpod.v1.ListProjectPoliciesRequest\n */\nexport class ListProjectPoliciesRequest extends Message {\n /**\n * pagination contains the pagination options for listing project policies\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * project_id specifies the project identifier\n *\n * @generated from field: string project_id = 2;\n */\n projectId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListProjectPoliciesRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"project_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListProjectPoliciesRequest {\n return new ListProjectPoliciesRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListProjectPoliciesRequest {\n return new ListProjectPoliciesRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListProjectPoliciesRequest {\n return new ListProjectPoliciesRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListProjectPoliciesRequest | PlainMessage | undefined, b: ListProjectPoliciesRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListProjectPoliciesRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListProjectPoliciesResponse\n */\nexport class ListProjectPoliciesResponse extends Message {\n /**\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * @generated from field: repeated gitpod.v1.ProjectPolicy policies = 2;\n */\n policies: ProjectPolicy[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListProjectPoliciesResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"policies\", kind: \"message\", T: ProjectPolicy, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListProjectPoliciesResponse {\n return new ListProjectPoliciesResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListProjectPoliciesResponse {\n return new ListProjectPoliciesResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListProjectPoliciesResponse {\n return new ListProjectPoliciesResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListProjectPoliciesResponse | PlainMessage | undefined, b: ListProjectPoliciesResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListProjectPoliciesResponse, a, b);\n }\n}\n\n/**\n * CreateProjectPolicyRequest creates a Project Policy.\n *\n * @generated from message gitpod.v1.CreateProjectPolicyRequest\n */\nexport class CreateProjectPolicyRequest extends Message {\n /**\n * project_id specifies the project identifier\n *\n * @generated from field: string project_id = 1;\n */\n projectId = \"\";\n\n /**\n * group_id specifies the group_id identifier\n *\n * @generated from field: string group_id = 2;\n */\n groupId = \"\";\n\n /**\n * @generated from field: gitpod.v1.ProjectRole role = 3;\n */\n role = ProjectRole.UNSPECIFIED;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateProjectPolicyRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"project_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"group_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"role\", kind: \"enum\", T: proto3.getEnumType(ProjectRole) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateProjectPolicyRequest {\n return new CreateProjectPolicyRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateProjectPolicyRequest {\n return new CreateProjectPolicyRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateProjectPolicyRequest {\n return new CreateProjectPolicyRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateProjectPolicyRequest | PlainMessage | undefined, b: CreateProjectPolicyRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateProjectPolicyRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateProjectPolicyResponse\n */\nexport class CreateProjectPolicyResponse extends Message {\n /**\n * @generated from field: gitpod.v1.ProjectPolicy policy = 1;\n */\n policy?: ProjectPolicy;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateProjectPolicyResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"policy\", kind: \"message\", T: ProjectPolicy },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateProjectPolicyResponse {\n return new CreateProjectPolicyResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateProjectPolicyResponse {\n return new CreateProjectPolicyResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateProjectPolicyResponse {\n return new CreateProjectPolicyResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateProjectPolicyResponse | PlainMessage | undefined, b: CreateProjectPolicyResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateProjectPolicyResponse, a, b);\n }\n}\n\n/**\n * UpdateProjectPolicyRequest updates a Project Policy.\n *\n * @generated from message gitpod.v1.UpdateProjectPolicyRequest\n */\nexport class UpdateProjectPolicyRequest extends Message {\n /**\n * project_id specifies the project identifier\n *\n * @generated from field: string project_id = 1;\n */\n projectId = \"\";\n\n /**\n * group_id specifies the group_id identifier\n *\n * @generated from field: string group_id = 2;\n */\n groupId = \"\";\n\n /**\n * @generated from field: gitpod.v1.ProjectRole role = 3;\n */\n role = ProjectRole.UNSPECIFIED;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateProjectPolicyRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"project_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"group_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"role\", kind: \"enum\", T: proto3.getEnumType(ProjectRole) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateProjectPolicyRequest {\n return new UpdateProjectPolicyRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateProjectPolicyRequest {\n return new UpdateProjectPolicyRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateProjectPolicyRequest {\n return new UpdateProjectPolicyRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateProjectPolicyRequest | PlainMessage | undefined, b: UpdateProjectPolicyRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateProjectPolicyRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateProjectPolicyResponse\n */\nexport class UpdateProjectPolicyResponse extends Message {\n /**\n * @generated from field: gitpod.v1.ProjectPolicy policy = 1;\n */\n policy?: ProjectPolicy;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateProjectPolicyResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"policy\", kind: \"message\", T: ProjectPolicy },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateProjectPolicyResponse {\n return new UpdateProjectPolicyResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateProjectPolicyResponse {\n return new UpdateProjectPolicyResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateProjectPolicyResponse {\n return new UpdateProjectPolicyResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateProjectPolicyResponse | PlainMessage | undefined, b: UpdateProjectPolicyResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateProjectPolicyResponse, a, b);\n }\n}\n\n/**\n * DeleteProjectPolicyRequest deletes a Project Policy.\n *\n * @generated from message gitpod.v1.DeleteProjectPolicyRequest\n */\nexport class DeleteProjectPolicyRequest extends Message {\n /**\n * project_id specifies the project identifier\n *\n * @generated from field: string project_id = 1;\n */\n projectId = \"\";\n\n /**\n * group_id specifies the group_id identifier\n *\n * @generated from field: string group_id = 2;\n */\n groupId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteProjectPolicyRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"project_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"group_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteProjectPolicyRequest {\n return new DeleteProjectPolicyRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteProjectPolicyRequest {\n return new DeleteProjectPolicyRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteProjectPolicyRequest {\n return new DeleteProjectPolicyRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteProjectPolicyRequest | PlainMessage | undefined, b: DeleteProjectPolicyRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteProjectPolicyRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteProjectPolicyResponse\n */\nexport class DeleteProjectPolicyResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteProjectPolicyResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteProjectPolicyResponse {\n return new DeleteProjectPolicyResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteProjectPolicyResponse {\n return new DeleteProjectPolicyResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteProjectPolicyResponse {\n return new DeleteProjectPolicyResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteProjectPolicyResponse | PlainMessage | undefined, b: DeleteProjectPolicyResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteProjectPolicyResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.Project\n */\nexport class Project extends Message {\n /**\n * id is the unique identifier for the project\n *\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: gitpod.v1.ProjectMetadata metadata = 2;\n */\n metadata?: ProjectMetadata;\n\n /**\n * initializer is the content initializer\n *\n * @generated from field: gitpod.v1.EnvironmentInitializer initializer = 3;\n */\n initializer?: EnvironmentInitializer;\n\n /**\n * @generated from field: gitpod.v1.ProjectEnvironmentClass environment_class = 4;\n */\n environmentClass?: ProjectEnvironmentClass;\n\n /**\n * devcontainer_file_path is the path to the devcontainer file relative to the repo root\n *\n * @generated from field: string devcontainer_file_path = 5;\n */\n devcontainerFilePath = \"\";\n\n /**\n * @generated from field: gitpod.v1.Project.UsedBy used_by = 6;\n */\n usedBy?: Project_UsedBy;\n\n /**\n * automations_file_path is the path to the automations file relative to the repo root\n *\n * @generated from field: string automations_file_path = 7;\n */\n automationsFilePath = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.Project\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"metadata\", kind: \"message\", T: ProjectMetadata },\n { no: 3, name: \"initializer\", kind: \"message\", T: EnvironmentInitializer },\n { no: 4, name: \"environment_class\", kind: \"message\", T: ProjectEnvironmentClass },\n { no: 5, name: \"devcontainer_file_path\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 6, name: \"used_by\", kind: \"message\", T: Project_UsedBy },\n { no: 7, name: \"automations_file_path\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): Project {\n return new Project().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): Project {\n return new Project().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): Project {\n return new Project().fromJsonString(jsonString, options);\n }\n\n static equals(a: Project | PlainMessage | undefined, b: Project | PlainMessage | undefined): boolean {\n return proto3.util.equals(Project, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.Project.UsedBy\n */\nexport class Project_UsedBy extends Message {\n /**\n * Subjects are the 10 most recent subjects who have used the project to create an environment\n *\n * @generated from field: repeated gitpod.v1.Subject subjects = 4;\n */\n subjects: Subject[] = [];\n\n /**\n * Total number of unique subjects who have used the project\n *\n * @generated from field: int32 total_subjects = 3;\n */\n totalSubjects = 0;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.Project.UsedBy\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 4, name: \"subjects\", kind: \"message\", T: Subject, repeated: true },\n { no: 3, name: \"total_subjects\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): Project_UsedBy {\n return new Project_UsedBy().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): Project_UsedBy {\n return new Project_UsedBy().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): Project_UsedBy {\n return new Project_UsedBy().fromJsonString(jsonString, options);\n }\n\n static equals(a: Project_UsedBy | PlainMessage | undefined, b: Project_UsedBy | PlainMessage | undefined): boolean {\n return proto3.util.equals(Project_UsedBy, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ProjectEnvironmentClass\n */\nexport class ProjectEnvironmentClass extends Message {\n /**\n * @generated from oneof gitpod.v1.ProjectEnvironmentClass.environment_class\n */\n environmentClass: {\n /**\n * Use a local runner for the user\n *\n * @generated from field: bool local_runner = 1;\n */\n value: boolean;\n case: \"localRunner\";\n } | {\n /**\n * Use a fixed environment class on a given Runner. This cannot be a local runner's environment class.\n *\n * @generated from field: string environment_class_id = 2;\n */\n value: string;\n case: \"environmentClassId\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ProjectEnvironmentClass\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"local_runner\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, oneof: \"environment_class\" },\n { no: 2, name: \"environment_class_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"environment_class\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ProjectEnvironmentClass {\n return new ProjectEnvironmentClass().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ProjectEnvironmentClass {\n return new ProjectEnvironmentClass().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ProjectEnvironmentClass {\n return new ProjectEnvironmentClass().fromJsonString(jsonString, options);\n }\n\n static equals(a: ProjectEnvironmentClass | PlainMessage | undefined, b: ProjectEnvironmentClass | PlainMessage | undefined): boolean {\n return proto3.util.equals(ProjectEnvironmentClass, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ProjectMetadata\n */\nexport class ProjectMetadata extends Message {\n /**\n * organization_id is the ID of the organization that contains the environment\n *\n * @generated from field: string organization_id = 1;\n */\n organizationId = \"\";\n\n /**\n * name is the human readable name of the project\n *\n * @generated from field: string name = 2;\n */\n name = \"\";\n\n /**\n * creator is the identity of the project creator\n *\n * @generated from field: gitpod.v1.Subject creator = 3;\n */\n creator?: Subject;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 4;\n */\n createdAt?: Timestamp;\n\n /**\n * @generated from field: google.protobuf.Timestamp updated_at = 5;\n */\n updatedAt?: Timestamp;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ProjectMetadata\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"creator\", kind: \"message\", T: Subject },\n { no: 4, name: \"created_at\", kind: \"message\", T: Timestamp },\n { no: 5, name: \"updated_at\", kind: \"message\", T: Timestamp },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ProjectMetadata {\n return new ProjectMetadata().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ProjectMetadata {\n return new ProjectMetadata().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ProjectMetadata {\n return new ProjectMetadata().fromJsonString(jsonString, options);\n }\n\n static equals(a: ProjectMetadata | PlainMessage | undefined, b: ProjectMetadata | PlainMessage | undefined): boolean {\n return proto3.util.equals(ProjectMetadata, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ProjectPolicy\n */\nexport class ProjectPolicy extends Message {\n /**\n * @generated from field: string group_id = 1;\n */\n groupId = \"\";\n\n /**\n * role is the role assigned to the group\n *\n * @generated from field: gitpod.v1.ProjectRole role = 2;\n */\n role = ProjectRole.UNSPECIFIED;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ProjectPolicy\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"group_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"role\", kind: \"enum\", T: proto3.getEnumType(ProjectRole) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ProjectPolicy {\n return new ProjectPolicy().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ProjectPolicy {\n return new ProjectPolicy().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ProjectPolicy {\n return new ProjectPolicy().fromJsonString(jsonString, options);\n }\n\n static equals(a: ProjectPolicy | PlainMessage | undefined, b: ProjectPolicy | PlainMessage | undefined): boolean {\n return proto3.util.equals(ProjectPolicy, a, b);\n }\n}\n\n","// @generated by protoc-gen-connect-es v1.4.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/project.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { CreateProjectFromEnvironmentRequest, CreateProjectFromEnvironmentResponse, CreateProjectPolicyRequest, CreateProjectPolicyResponse, CreateProjectRequest, CreateProjectResponse, DeleteProjectPolicyRequest, DeleteProjectPolicyResponse, DeleteProjectRequest, DeleteProjectResponse, GetProjectRequest, GetProjectResponse, ListProjectPoliciesRequest, ListProjectPoliciesResponse, ListProjectsRequest, ListProjectsResponse, UpdateProjectPolicyRequest, UpdateProjectPolicyResponse, UpdateProjectRequest, UpdateProjectResponse } from \"./project_pb.js\";\nimport { MethodIdempotency, MethodKind } from \"@bufbuild/protobuf\";\n\n/**\n * @generated from service gitpod.v1.ProjectService\n */\nexport const ProjectService = {\n typeName: \"gitpod.v1.ProjectService\",\n methods: {\n /**\n * CreateProject creates a new Project.\n *\n * @generated from rpc gitpod.v1.ProjectService.CreateProject\n */\n createProject: {\n name: \"CreateProject\",\n I: CreateProjectRequest,\n O: CreateProjectResponse,\n kind: MethodKind.Unary,\n },\n /**\n * CreateProject creates a new Project using an environment as template.\n *\n * @generated from rpc gitpod.v1.ProjectService.CreateProjectFromEnvironment\n */\n createProjectFromEnvironment: {\n name: \"CreateProjectFromEnvironment\",\n I: CreateProjectFromEnvironmentRequest,\n O: CreateProjectFromEnvironmentResponse,\n kind: MethodKind.Unary,\n },\n /**\n * GetProject retrieves a single Project.\n *\n * @generated from rpc gitpod.v1.ProjectService.GetProject\n */\n getProject: {\n name: \"GetProject\",\n I: GetProjectRequest,\n O: GetProjectResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * UpdateProject updates the properties of a Project.\n *\n * @generated from rpc gitpod.v1.ProjectService.UpdateProject\n */\n updateProject: {\n name: \"UpdateProject\",\n I: UpdateProjectRequest,\n O: UpdateProjectResponse,\n kind: MethodKind.Unary,\n },\n /**\n * ListProjects lists all projects the caller has access to.\n *\n * @generated from rpc gitpod.v1.ProjectService.ListProjects\n */\n listProjects: {\n name: \"ListProjects\",\n I: ListProjectsRequest,\n O: ListProjectsResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * DeleteProject deletes the specified project.\n *\n * @generated from rpc gitpod.v1.ProjectService.DeleteProject\n */\n deleteProject: {\n name: \"DeleteProject\",\n I: DeleteProjectRequest,\n O: DeleteProjectResponse,\n kind: MethodKind.Unary,\n },\n /**\n * ListProjectPolicies lists policies for a project.\n *\n * @generated from rpc gitpod.v1.ProjectService.ListProjectPolicies\n */\n listProjectPolicies: {\n name: \"ListProjectPolicies\",\n I: ListProjectPoliciesRequest,\n O: ListProjectPoliciesResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * CreateProjectPolicy creates a Project Policy.\n *\n * @generated from rpc gitpod.v1.ProjectService.CreateProjectPolicy\n */\n createProjectPolicy: {\n name: \"CreateProjectPolicy\",\n I: CreateProjectPolicyRequest,\n O: CreateProjectPolicyResponse,\n kind: MethodKind.Unary,\n },\n /**\n * DeleteProjectPolicy deletes a Project Policy.\n *\n * @generated from rpc gitpod.v1.ProjectService.DeleteProjectPolicy\n */\n deleteProjectPolicy: {\n name: \"DeleteProjectPolicy\",\n I: DeleteProjectPolicyRequest,\n O: DeleteProjectPolicyResponse,\n kind: MethodKind.Unary,\n },\n /**\n * UpdateProjectPolicy updates a Project Policy.\n *\n * @generated from rpc gitpod.v1.ProjectService.UpdateProjectPolicy\n */\n updateProjectPolicy: {\n name: \"UpdateProjectPolicy\",\n I: UpdateProjectPolicyRequest,\n O: UpdateProjectPolicyResponse,\n kind: MethodKind.Unary,\n },\n }\n} as const;\n\n","// @generated by protoc-gen-es v1.8.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/secret.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Message, proto3, Timestamp } from \"@bufbuild/protobuf\";\nimport { PaginationRequest, PaginationResponse } from \"./pagination_pb.js\";\nimport { Subject } from \"./identity_pb.js\";\n\n/**\n * @generated from message gitpod.v1.CreateSecretRequest\n */\nexport class CreateSecretRequest extends Message {\n /**\n * @generated from field: string name = 1;\n */\n name = \"\";\n\n /**\n * project_id is the ProjectID this Secret belongs to\n *\n * @generated from field: string project_id = 2;\n */\n projectId = \"\";\n\n /**\n * value is the plaintext value of the secret\n *\n * @generated from field: string value = 3;\n */\n value = \"\";\n\n /**\n * mount specifies how the secret should be mounted in Environments\n *\n * @generated from oneof gitpod.v1.CreateSecretRequest.mount\n */\n mount: {\n /**\n * absolute path to the file where the secret is mounted\n *\n * @generated from field: string file_path = 7;\n */\n value: string;\n case: \"filePath\";\n } | {\n /**\n * secret will be created as an Environment Variable with the same name as the secret\n *\n * @generated from field: bool environment_variable = 8;\n */\n value: boolean;\n case: \"environmentVariable\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateSecretRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"project_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"value\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 7, name: \"file_path\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"mount\" },\n { no: 8, name: \"environment_variable\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, oneof: \"mount\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateSecretRequest {\n return new CreateSecretRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateSecretRequest {\n return new CreateSecretRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateSecretRequest {\n return new CreateSecretRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateSecretRequest | PlainMessage | undefined, b: CreateSecretRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateSecretRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateSecretResponse\n */\nexport class CreateSecretResponse extends Message {\n /**\n * @generated from field: gitpod.v1.Secret secret = 1;\n */\n secret?: Secret;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateSecretResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"secret\", kind: \"message\", T: Secret },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateSecretResponse {\n return new CreateSecretResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateSecretResponse {\n return new CreateSecretResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateSecretResponse {\n return new CreateSecretResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateSecretResponse | PlainMessage | undefined, b: CreateSecretResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateSecretResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateSecretValueRequest\n */\nexport class UpdateSecretValueRequest extends Message {\n /**\n * @generated from field: string secret_id = 1;\n */\n secretId = \"\";\n\n /**\n * value is the plaintext value of the secret\n *\n * @generated from field: string value = 2;\n */\n value = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateSecretValueRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"secret_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"value\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateSecretValueRequest {\n return new UpdateSecretValueRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateSecretValueRequest {\n return new UpdateSecretValueRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateSecretValueRequest {\n return new UpdateSecretValueRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateSecretValueRequest | PlainMessage | undefined, b: UpdateSecretValueRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateSecretValueRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateSecretValueResponse\n */\nexport class UpdateSecretValueResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateSecretValueResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateSecretValueResponse {\n return new UpdateSecretValueResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateSecretValueResponse {\n return new UpdateSecretValueResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateSecretValueResponse {\n return new UpdateSecretValueResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateSecretValueResponse | PlainMessage | undefined, b: UpdateSecretValueResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateSecretValueResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListSecretsRequest\n */\nexport class ListSecretsRequest extends Message {\n /**\n * pagination contains the pagination options for listing environments\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * @generated from field: gitpod.v1.ListSecretsRequest.Filter filter = 2;\n */\n filter?: ListSecretsRequest_Filter;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListSecretsRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"filter\", kind: \"message\", T: ListSecretsRequest_Filter },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListSecretsRequest {\n return new ListSecretsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListSecretsRequest {\n return new ListSecretsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListSecretsRequest {\n return new ListSecretsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListSecretsRequest | PlainMessage | undefined, b: ListSecretsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListSecretsRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListSecretsRequest.Filter\n */\nexport class ListSecretsRequest_Filter extends Message {\n /**\n * project_ids filters the response to only Secrets used by these Project IDs\n *\n * @generated from field: repeated string project_ids = 1;\n */\n projectIds: string[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListSecretsRequest.Filter\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"project_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListSecretsRequest_Filter {\n return new ListSecretsRequest_Filter().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListSecretsRequest_Filter {\n return new ListSecretsRequest_Filter().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListSecretsRequest_Filter {\n return new ListSecretsRequest_Filter().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListSecretsRequest_Filter | PlainMessage | undefined, b: ListSecretsRequest_Filter | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListSecretsRequest_Filter, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListSecretsResponse\n */\nexport class ListSecretsResponse extends Message {\n /**\n * pagination contains the pagination options for listing secrets\n *\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * @generated from field: repeated gitpod.v1.Secret secrets = 2;\n */\n secrets: Secret[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListSecretsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"secrets\", kind: \"message\", T: Secret, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListSecretsResponse {\n return new ListSecretsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListSecretsResponse {\n return new ListSecretsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListSecretsResponse {\n return new ListSecretsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListSecretsResponse | PlainMessage | undefined, b: ListSecretsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListSecretsResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteSecretRequest\n */\nexport class DeleteSecretRequest extends Message {\n /**\n * @generated from field: string secret_id = 1;\n */\n secretId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteSecretRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"secret_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteSecretRequest {\n return new DeleteSecretRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteSecretRequest {\n return new DeleteSecretRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteSecretRequest {\n return new DeleteSecretRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteSecretRequest | PlainMessage | undefined, b: DeleteSecretRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteSecretRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteSecretResponse\n */\nexport class DeleteSecretResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteSecretResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteSecretResponse {\n return new DeleteSecretResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteSecretResponse {\n return new DeleteSecretResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteSecretResponse {\n return new DeleteSecretResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteSecretResponse | PlainMessage | undefined, b: DeleteSecretResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteSecretResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetSecretValueRequest\n */\nexport class GetSecretValueRequest extends Message {\n /**\n * @generated from field: string secret_id = 1;\n */\n secretId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetSecretValueRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"secret_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetSecretValueRequest {\n return new GetSecretValueRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetSecretValueRequest {\n return new GetSecretValueRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetSecretValueRequest {\n return new GetSecretValueRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetSecretValueRequest | PlainMessage | undefined, b: GetSecretValueRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetSecretValueRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetSecretValueResponse\n */\nexport class GetSecretValueResponse extends Message {\n /**\n * @generated from field: string value = 1;\n */\n value = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetSecretValueResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"value\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetSecretValueResponse {\n return new GetSecretValueResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetSecretValueResponse {\n return new GetSecretValueResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetSecretValueResponse {\n return new GetSecretValueResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetSecretValueResponse | PlainMessage | undefined, b: GetSecretValueResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetSecretValueResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.Secret\n */\nexport class Secret extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * Name of the secret for humans.\n *\n * @generated from field: string name = 2;\n */\n name = \"\";\n\n /**\n * The Project ID this Secret belongs to\n *\n * @generated from field: string project_id = 3;\n */\n projectId = \"\";\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 4;\n */\n createdAt?: Timestamp;\n\n /**\n * @generated from field: google.protobuf.Timestamp updated_at = 5;\n */\n updatedAt?: Timestamp;\n\n /**\n * creator is the identity of the creator of the secret\n *\n * @generated from field: gitpod.v1.Subject creator = 6;\n */\n creator?: Subject;\n\n /**\n * @generated from oneof gitpod.v1.Secret.mount\n */\n mount: {\n /**\n * absolute path to the file where the secret is mounted\n *\n * @generated from field: string file_path = 7;\n */\n value: string;\n case: \"filePath\";\n } | {\n /**\n * secret will be created as an Environment Variable with the same name as the secret\n *\n * @generated from field: bool environment_variable = 8;\n */\n value: boolean;\n case: \"environmentVariable\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.Secret\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"project_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"created_at\", kind: \"message\", T: Timestamp },\n { no: 5, name: \"updated_at\", kind: \"message\", T: Timestamp },\n { no: 6, name: \"creator\", kind: \"message\", T: Subject },\n { no: 7, name: \"file_path\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"mount\" },\n { no: 8, name: \"environment_variable\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, oneof: \"mount\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): Secret {\n return new Secret().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): Secret {\n return new Secret().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): Secret {\n return new Secret().fromJsonString(jsonString, options);\n }\n\n static equals(a: Secret | PlainMessage | undefined, b: Secret | PlainMessage | undefined): boolean {\n return proto3.util.equals(Secret, a, b);\n }\n}\n\n","// @generated by protoc-gen-connect-es v1.4.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/secret.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { CreateSecretRequest, CreateSecretResponse, DeleteSecretRequest, DeleteSecretResponse, GetSecretValueRequest, GetSecretValueResponse, ListSecretsRequest, ListSecretsResponse, UpdateSecretValueRequest, UpdateSecretValueResponse } from \"./secret_pb.js\";\nimport { MethodIdempotency, MethodKind } from \"@bufbuild/protobuf\";\n\n/**\n * @generated from service gitpod.v1.SecretService\n */\nexport const SecretService = {\n typeName: \"gitpod.v1.SecretService\",\n methods: {\n /**\n * CreateSecret creates a new secret.\n *\n * @generated from rpc gitpod.v1.SecretService.CreateSecret\n */\n createSecret: {\n name: \"CreateSecret\",\n I: CreateSecretRequest,\n O: CreateSecretResponse,\n kind: MethodKind.Unary,\n },\n /**\n * UpdateSecretValue updates the value of a secret.\n *\n * @generated from rpc gitpod.v1.SecretService.UpdateSecretValue\n */\n updateSecretValue: {\n name: \"UpdateSecretValue\",\n I: UpdateSecretValueRequest,\n O: UpdateSecretValueResponse,\n kind: MethodKind.Unary,\n },\n /**\n * ListSecrets lists secrets.\n *\n * @generated from rpc gitpod.v1.SecretService.ListSecrets\n */\n listSecrets: {\n name: \"ListSecrets\",\n I: ListSecretsRequest,\n O: ListSecretsResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * DeleteSecret deletes a secret.\n *\n * @generated from rpc gitpod.v1.SecretService.DeleteSecret\n */\n deleteSecret: {\n name: \"DeleteSecret\",\n I: DeleteSecretRequest,\n O: DeleteSecretResponse,\n kind: MethodKind.Unary,\n },\n /**\n * GetSecretValue retrieves the value of a secret\n * Only Environments can perform this operation, and only for secrets specified on the EnvironmentSpec.\n *\n * @generated from rpc gitpod.v1.SecretService.GetSecretValue\n */\n getSecretValue: {\n name: \"GetSecretValue\",\n I: GetSecretValueRequest,\n O: GetSecretValueResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n }\n} as const;\n\n","// @generated by protoc-gen-connect-es v1.4.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/organization.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { CreateOrganizationInviteRequest, CreateOrganizationInviteResponse, CreateOrganizationRequest, CreateOrganizationResponse, CreateSSOConfigurationRequest, CreateSSOConfigurationResponse, DeleteOrganizationRequest, DeleteOrganizationResponse, DeleteSSOConfigurationRequest, DeleteSSOConfigurationResponse, GetOrganizationInviteRequest, GetOrganizationInviteResponse, GetOrganizationInviteSummaryRequest, GetOrganizationInviteSummaryResponse, GetOrganizationRequest, GetOrganizationResponse, GetSSOConfigurationRequest, GetSSOConfigurationResponse, JoinOrganizationRequest, JoinOrganizationResponse, LeaveOrganizationRequest, LeaveOrganizationResponse, ListMembersRequest, ListMembersResponse, ListOrganizationsRequest, ListOrganizationsResponse, ListSSOConfigurationsRequest, ListSSOConfigurationsResponse, SetRoleRequest, SetRoleResponse, UpdateOrganizationRequest, UpdateOrganizationResponse, UpdateSSOConfigurationRequest, UpdateSSOConfigurationResponse } from \"./organization_pb.js\";\nimport { MethodIdempotency, MethodKind } from \"@bufbuild/protobuf\";\n\n/**\n * @generated from service gitpod.v1.OrganizationService\n */\nexport const OrganizationService = {\n typeName: \"gitpod.v1.OrganizationService\",\n methods: {\n /**\n * CreateOrganization creates a new Organization.\n *\n * @generated from rpc gitpod.v1.OrganizationService.CreateOrganization\n */\n createOrganization: {\n name: \"CreateOrganization\",\n I: CreateOrganizationRequest,\n O: CreateOrganizationResponse,\n kind: MethodKind.Unary,\n },\n /**\n * JoinOrganization lets accounts join an Organization.\n *\n * @generated from rpc gitpod.v1.OrganizationService.JoinOrganization\n */\n joinOrganization: {\n name: \"JoinOrganization\",\n I: JoinOrganizationRequest,\n O: JoinOrganizationResponse,\n kind: MethodKind.Unary,\n },\n /**\n * GetOrganization retrieves a single Organization.\n *\n * @generated from rpc gitpod.v1.OrganizationService.GetOrganization\n */\n getOrganization: {\n name: \"GetOrganization\",\n I: GetOrganizationRequest,\n O: GetOrganizationResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * UpdateOrganization updates the properties of an Organization.\n *\n * @generated from rpc gitpod.v1.OrganizationService.UpdateOrganization\n */\n updateOrganization: {\n name: \"UpdateOrganization\",\n I: UpdateOrganizationRequest,\n O: UpdateOrganizationResponse,\n kind: MethodKind.Unary,\n },\n /**\n * ListOrganizations lists all organization the caller has access to.\n *\n * @generated from rpc gitpod.v1.OrganizationService.ListOrganizations\n */\n listOrganizations: {\n name: \"ListOrganizations\",\n I: ListOrganizationsRequest,\n O: ListOrganizationsResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * DeleteOrganization deletes the specified organization.\n *\n * @generated from rpc gitpod.v1.OrganizationService.DeleteOrganization\n */\n deleteOrganization: {\n name: \"DeleteOrganization\",\n I: DeleteOrganizationRequest,\n O: DeleteOrganizationResponse,\n kind: MethodKind.Unary,\n },\n /**\n * ListMembers lists all members of the specified organization.\n *\n * @generated from rpc gitpod.v1.OrganizationService.ListMembers\n */\n listMembers: {\n name: \"ListMembers\",\n I: ListMembersRequest,\n O: ListMembersResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * @generated from rpc gitpod.v1.OrganizationService.SetRole\n */\n setRole: {\n name: \"SetRole\",\n I: SetRoleRequest,\n O: SetRoleResponse,\n kind: MethodKind.Unary,\n },\n /**\n * CreateOrganizationInvite creates an invite for the organization.\n * Any existing OrganizationInvites are invalidated and can no longer be used.\n *\n * @generated from rpc gitpod.v1.OrganizationService.CreateOrganizationInvite\n */\n createOrganizationInvite: {\n name: \"CreateOrganizationInvite\",\n I: CreateOrganizationInviteRequest,\n O: CreateOrganizationInviteResponse,\n kind: MethodKind.Unary,\n },\n /**\n * GetOrganizationInvite retrieves invite for the organization.\n * If no invite exists, a new one is created.\n *\n * @generated from rpc gitpod.v1.OrganizationService.GetOrganizationInvite\n */\n getOrganizationInvite: {\n name: \"GetOrganizationInvite\",\n I: GetOrganizationInviteRequest,\n O: GetOrganizationInviteResponse,\n kind: MethodKind.Unary,\n },\n /**\n * GetOrganizationInviteSummary retrieves a summary of the organization based on an Invite ID.\n * Used to discover which organization an invite is for.\n *\n * @generated from rpc gitpod.v1.OrganizationService.GetOrganizationInviteSummary\n */\n getOrganizationInviteSummary: {\n name: \"GetOrganizationInviteSummary\",\n I: GetOrganizationInviteSummaryRequest,\n O: GetOrganizationInviteSummaryResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * LeaveOrganization lets the passed user leave an Organization.\n *\n * @generated from rpc gitpod.v1.OrganizationService.LeaveOrganization\n */\n leaveOrganization: {\n name: \"LeaveOrganization\",\n I: LeaveOrganizationRequest,\n O: LeaveOrganizationResponse,\n kind: MethodKind.Unary,\n },\n /**\n * CreateSSOConfiguration creates a new SSO configuration for the organization.\n *\n * @generated from rpc gitpod.v1.OrganizationService.CreateSSOConfiguration\n */\n createSSOConfiguration: {\n name: \"CreateSSOConfiguration\",\n I: CreateSSOConfigurationRequest,\n O: CreateSSOConfigurationResponse,\n kind: MethodKind.Unary,\n },\n /**\n * GetSSOConfiguration returns an SSO configuration.\n *\n * @generated from rpc gitpod.v1.OrganizationService.GetSSOConfiguration\n */\n getSSOConfiguration: {\n name: \"GetSSOConfiguration\",\n I: GetSSOConfigurationRequest,\n O: GetSSOConfigurationResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * ListSSOConfigurations lists all SSO configurations matching provided filters.\n *\n * @generated from rpc gitpod.v1.OrganizationService.ListSSOConfigurations\n */\n listSSOConfigurations: {\n name: \"ListSSOConfigurations\",\n I: ListSSOConfigurationsRequest,\n O: ListSSOConfigurationsResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * DeleteSSOConfiguration deletes an SSO configuration.\n *\n * @generated from rpc gitpod.v1.OrganizationService.DeleteSSOConfiguration\n */\n deleteSSOConfiguration: {\n name: \"DeleteSSOConfiguration\",\n I: DeleteSSOConfigurationRequest,\n O: DeleteSSOConfigurationResponse,\n kind: MethodKind.Unary,\n },\n /**\n * UpdateSSOConfiguration updates the SSO configuration for the organization.\n *\n * @generated from rpc gitpod.v1.OrganizationService.UpdateSSOConfiguration\n */\n updateSSOConfiguration: {\n name: \"UpdateSSOConfiguration\",\n I: UpdateSSOConfigurationRequest,\n O: UpdateSSOConfigurationResponse,\n kind: MethodKind.Unary,\n },\n }\n} as const;\n\n","// @generated by protoc-gen-connect-es v1.4.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/runner.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { CheckAuthenticationForHostRequest, CheckAuthenticationForHostResponse, CreateRunnerPolicyRequest, CreateRunnerPolicyResponse, CreateRunnerRequest, CreateRunnerResponse, CreateRunnerTokenRequest, CreateRunnerTokenResponse, DeleteRunnerPolicyRequest, DeleteRunnerPolicyResponse, DeleteRunnerRequest, DeleteRunnerResponse, GetRunnerRequest, GetRunnerResponse, ListRunnerPoliciesRequest, ListRunnerPoliciesResponse, ListRunnersRequest, ListRunnersResponse, ParseContextURLRequest, ParseContextURLResponse, UpdateRunnerPolicyRequest, UpdateRunnerPolicyResponse, UpdateRunnerRequest, UpdateRunnerResponse } from \"./runner_pb.js\";\nimport { MethodIdempotency, MethodKind } from \"@bufbuild/protobuf\";\n\n/**\n * @generated from service gitpod.v1.RunnerService\n */\nexport const RunnerService = {\n typeName: \"gitpod.v1.RunnerService\",\n methods: {\n /**\n * CreateRunner creates a new runner with the server. Registrations are very\n * short-lived and must be renewed every 30 seconds. Runners can be registered\n * for an entire organisation or a single user.\n *\n * @generated from rpc gitpod.v1.RunnerService.CreateRunner\n */\n createRunner: {\n name: \"CreateRunner\",\n I: CreateRunnerRequest,\n O: CreateRunnerResponse,\n kind: MethodKind.Unary,\n },\n /**\n * GetRunner returns a single runner.\n *\n * @generated from rpc gitpod.v1.RunnerService.GetRunner\n */\n getRunner: {\n name: \"GetRunner\",\n I: GetRunnerRequest,\n O: GetRunnerResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * ListRunners returns all runners registered in the scope.\n *\n * @generated from rpc gitpod.v1.RunnerService.ListRunners\n */\n listRunners: {\n name: \"ListRunners\",\n I: ListRunnersRequest,\n O: ListRunnersResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * UpdateRunner updates an environment runner.\n *\n * @generated from rpc gitpod.v1.RunnerService.UpdateRunner\n */\n updateRunner: {\n name: \"UpdateRunner\",\n I: UpdateRunnerRequest,\n O: UpdateRunnerResponse,\n kind: MethodKind.Unary,\n },\n /**\n * DeleteRunner deletes an environment runner.\n *\n * @generated from rpc gitpod.v1.RunnerService.DeleteRunner\n */\n deleteRunner: {\n name: \"DeleteRunner\",\n I: DeleteRunnerRequest,\n O: DeleteRunnerResponse,\n kind: MethodKind.Unary,\n },\n /**\n * CreateRunnerToken returns a token that can be used to authenticate as the\n * runner. Use this call to renew an outdated token - this does not expire any\n * previouly issued tokens.\n *\n * @generated from rpc gitpod.v1.RunnerService.CreateRunnerToken\n */\n createRunnerToken: {\n name: \"CreateRunnerToken\",\n I: CreateRunnerTokenRequest,\n O: CreateRunnerTokenResponse,\n kind: MethodKind.Unary,\n },\n /**\n * ParseContextURL asks a runner to parse a context URL, and return the parsed result.\n *\n * This call returns\n * - FAILED_PRECONDITION if the user requires authentication on the runner to access the context URL\n * - PERMISSION_DENIED if the user is not allowed to access the context URL using the credentials they have\n * - INVALID_ARGUMENT if the context URL is invalid\n * - NOT_FOUND if the repository or branch indicated by the context URL does not exist\n *\n * @generated from rpc gitpod.v1.RunnerService.ParseContextURL\n */\n parseContextURL: {\n name: \"ParseContextURL\",\n I: ParseContextURLRequest,\n O: ParseContextURLResponse,\n kind: MethodKind.Unary,\n },\n /**\n * CheckAuthenticationForHost asks a runner if the user is authenticated against a particular host, e.g. an SCM system.\n * If not, this function will return a URL that the user should visit to authenticate, or indicate that Personal Access Tokens are supported.\n *\n * @generated from rpc gitpod.v1.RunnerService.CheckAuthenticationForHost\n */\n checkAuthenticationForHost: {\n name: \"CheckAuthenticationForHost\",\n I: CheckAuthenticationForHostRequest,\n O: CheckAuthenticationForHostResponse,\n kind: MethodKind.Unary,\n },\n /**\n * ListRunnerPolicies lists runner policies.\n *\n * @generated from rpc gitpod.v1.RunnerService.ListRunnerPolicies\n */\n listRunnerPolicies: {\n name: \"ListRunnerPolicies\",\n I: ListRunnerPoliciesRequest,\n O: ListRunnerPoliciesResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * CreateRunnerPolicy creates a new runner policy.\n *\n * @generated from rpc gitpod.v1.RunnerService.CreateRunnerPolicy\n */\n createRunnerPolicy: {\n name: \"CreateRunnerPolicy\",\n I: CreateRunnerPolicyRequest,\n O: CreateRunnerPolicyResponse,\n kind: MethodKind.Unary,\n },\n /**\n * UpdateRunnerPolicy an existing runner policy.\n *\n * @generated from rpc gitpod.v1.RunnerService.UpdateRunnerPolicy\n */\n updateRunnerPolicy: {\n name: \"UpdateRunnerPolicy\",\n I: UpdateRunnerPolicyRequest,\n O: UpdateRunnerPolicyResponse,\n kind: MethodKind.Unary,\n },\n /**\n * DeleteRunnerPolicy deletes a runner policy.\n *\n * @generated from rpc gitpod.v1.RunnerService.DeleteRunnerPolicy\n */\n deleteRunnerPolicy: {\n name: \"DeleteRunnerPolicy\",\n I: DeleteRunnerPolicyRequest,\n O: DeleteRunnerPolicyResponse,\n kind: MethodKind.Unary,\n },\n }\n} as const;\n\n","// @generated by protoc-gen-connect-es v1.4.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/runner_configuration.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { CreateEnvironmentClassRequest, CreateEnvironmentClassResponse, CreateHostAuthenticationTokenRequest, CreateHostAuthenticationTokenResponse, CreateSCMIntegrationRequest, CreateSCMIntegrationResponse, DeleteHostAuthenticationTokenRequest, DeleteHostAuthenticationTokenResponse, DeleteSCMIntegrationRequest, DeleteSCMIntegrationResponse, GetEnvironmentClassRequest, GetEnvironmentClassResponse, GetHostAuthenticationTokenRequest, GetHostAuthenticationTokenResponse, GetRunnerConfigurationSchemaRequest, GetRunnerConfigurationSchemaResponse, GetSCMIntegrationRequest, GetSCMIntegrationResponse, ListEnvironmentClassesRequest, ListEnvironmentClassesResponse, ListHostAuthenticationTokensRequest, ListHostAuthenticationTokensResponse, ListSCMIntegrationsRequest, ListSCMIntegrationsResponse, UpdateEnvironmentClassRequest, UpdateEnvironmentClassResponse, UpdateHostAuthenticationTokenRequest, UpdateHostAuthenticationTokenResponse, UpdateSCMIntegrationRequest, UpdateSCMIntegrationResponse, ValidateRunnerConfigurationRequest, ValidateRunnerConfigurationResponse } from \"./runner_configuration_pb.js\";\nimport { MethodIdempotency, MethodKind } from \"@bufbuild/protobuf\";\n\n/**\n * @generated from service gitpod.v1.RunnerConfigurationService\n */\nexport const RunnerConfigurationService = {\n typeName: \"gitpod.v1.RunnerConfigurationService\",\n methods: {\n /**\n * @generated from rpc gitpod.v1.RunnerConfigurationService.CreateHostAuthenticationToken\n */\n createHostAuthenticationToken: {\n name: \"CreateHostAuthenticationToken\",\n I: CreateHostAuthenticationTokenRequest,\n O: CreateHostAuthenticationTokenResponse,\n kind: MethodKind.Unary,\n },\n /**\n * @generated from rpc gitpod.v1.RunnerConfigurationService.GetHostAuthenticationToken\n */\n getHostAuthenticationToken: {\n name: \"GetHostAuthenticationToken\",\n I: GetHostAuthenticationTokenRequest,\n O: GetHostAuthenticationTokenResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * @generated from rpc gitpod.v1.RunnerConfigurationService.ListHostAuthenticationTokens\n */\n listHostAuthenticationTokens: {\n name: \"ListHostAuthenticationTokens\",\n I: ListHostAuthenticationTokensRequest,\n O: ListHostAuthenticationTokensResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * @generated from rpc gitpod.v1.RunnerConfigurationService.UpdateHostAuthenticationToken\n */\n updateHostAuthenticationToken: {\n name: \"UpdateHostAuthenticationToken\",\n I: UpdateHostAuthenticationTokenRequest,\n O: UpdateHostAuthenticationTokenResponse,\n kind: MethodKind.Unary,\n },\n /**\n * @generated from rpc gitpod.v1.RunnerConfigurationService.DeleteHostAuthenticationToken\n */\n deleteHostAuthenticationToken: {\n name: \"DeleteHostAuthenticationToken\",\n I: DeleteHostAuthenticationTokenRequest,\n O: DeleteHostAuthenticationTokenResponse,\n kind: MethodKind.Unary,\n },\n /**\n * GetRunnerConfigurationSchema retrieves the latest Runner configuration schema\n *\n * @generated from rpc gitpod.v1.RunnerConfigurationService.GetRunnerConfigurationSchema\n */\n getRunnerConfigurationSchema: {\n name: \"GetRunnerConfigurationSchema\",\n I: GetRunnerConfigurationSchemaRequest,\n O: GetRunnerConfigurationSchemaResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * CreateSCMIntegration creates a new SCM integration on a runner.\n *\n * @generated from rpc gitpod.v1.RunnerConfigurationService.CreateSCMIntegration\n */\n createSCMIntegration: {\n name: \"CreateSCMIntegration\",\n I: CreateSCMIntegrationRequest,\n O: CreateSCMIntegrationResponse,\n kind: MethodKind.Unary,\n },\n /**\n * GetSCMIntegration returns a single SCM integration configured for a runner.\n *\n * @generated from rpc gitpod.v1.RunnerConfigurationService.GetSCMIntegration\n */\n getSCMIntegration: {\n name: \"GetSCMIntegration\",\n I: GetSCMIntegrationRequest,\n O: GetSCMIntegrationResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * ListSCMIntegrations returns all SCM integrations configured for a runner.\n *\n * @generated from rpc gitpod.v1.RunnerConfigurationService.ListSCMIntegrations\n */\n listSCMIntegrations: {\n name: \"ListSCMIntegrations\",\n I: ListSCMIntegrationsRequest,\n O: ListSCMIntegrationsResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * UpdateSCMIntegration updates an existing SCM integration on a runner.\n *\n * @generated from rpc gitpod.v1.RunnerConfigurationService.UpdateSCMIntegration\n */\n updateSCMIntegration: {\n name: \"UpdateSCMIntegration\",\n I: UpdateSCMIntegrationRequest,\n O: UpdateSCMIntegrationResponse,\n kind: MethodKind.Unary,\n },\n /**\n * DeleteSCMIntegration deletes an existing SCM integration on a runner.\n *\n * @generated from rpc gitpod.v1.RunnerConfigurationService.DeleteSCMIntegration\n */\n deleteSCMIntegration: {\n name: \"DeleteSCMIntegration\",\n I: DeleteSCMIntegrationRequest,\n O: DeleteSCMIntegrationResponse,\n kind: MethodKind.Unary,\n },\n /**\n * CreateEnvironmentClass creates a new environment class on a runner.\n *\n * @generated from rpc gitpod.v1.RunnerConfigurationService.CreateEnvironmentClass\n */\n createEnvironmentClass: {\n name: \"CreateEnvironmentClass\",\n I: CreateEnvironmentClassRequest,\n O: CreateEnvironmentClassResponse,\n kind: MethodKind.Unary,\n },\n /**\n * GetEnvironmentClass returns a single environment class configured for a runner.\n *\n * @generated from rpc gitpod.v1.RunnerConfigurationService.GetEnvironmentClass\n */\n getEnvironmentClass: {\n name: \"GetEnvironmentClass\",\n I: GetEnvironmentClassRequest,\n O: GetEnvironmentClassResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * ListEnvironmentClasses returns all environment classes configured for a runner.\n * buf:lint:ignore RPC_REQUEST_RESPONSE_UNIQUE\n *\n * @generated from rpc gitpod.v1.RunnerConfigurationService.ListEnvironmentClasses\n */\n listEnvironmentClasses: {\n name: \"ListEnvironmentClasses\",\n I: ListEnvironmentClassesRequest,\n O: ListEnvironmentClassesResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * UpdateEnvironmentClass updates an existing environment class on a runner.\n *\n * @generated from rpc gitpod.v1.RunnerConfigurationService.UpdateEnvironmentClass\n */\n updateEnvironmentClass: {\n name: \"UpdateEnvironmentClass\",\n I: UpdateEnvironmentClassRequest,\n O: UpdateEnvironmentClassResponse,\n kind: MethodKind.Unary,\n },\n /**\n * ValidateRunnerConfiguration validates a runner configuration (e.g. environment class, SCM integration)\n * with the runner.\n *\n * @generated from rpc gitpod.v1.RunnerConfigurationService.ValidateRunnerConfiguration\n */\n validateRunnerConfiguration: {\n name: \"ValidateRunnerConfiguration\",\n I: ValidateRunnerConfigurationRequest,\n O: ValidateRunnerConfigurationResponse,\n kind: MethodKind.Unary,\n },\n }\n} as const;\n\n","// @generated by protoc-gen-es v1.8.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/runner_interaction.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Any, Message, proto3, Timestamp } from \"@bufbuild/protobuf\";\nimport { EnvironmentClass, EnvironmentClassValidationResult, FieldValueUpdate, RunnerConfigurationSchema, SCMIntegration, SCMIntegrationValidationResult } from \"./runner_configuration_pb.js\";\nimport { PaginationRequest, PaginationResponse } from \"./pagination_pb.js\";\nimport { EnvironmentActivitySignal, EnvironmentMetadata, EnvironmentSpec, EnvironmentStatus } from \"./environment_pb.js\";\nimport { CheckAuthenticationForHostResponse, ParseContextURLResponse, RunnerCapability } from \"./runner_pb.js\";\n\n/**\n * @generated from message gitpod.v1.SignupRequest\n */\nexport class SignupRequest extends Message {\n /**\n * The runner's public key. Must be an ECDH public key encoded in PKIX, ASN.1 DER format.\n *\n * @generated from field: bytes public_key = 1;\n */\n publicKey = new Uint8Array(0);\n\n /**\n * The environment classes this runner has to offer\n *\n * @generated from field: repeated gitpod.v1.EnvironmentClass environment_classes = 2;\n */\n environmentClasses: EnvironmentClass[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.SignupRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"public_key\", kind: \"scalar\", T: 12 /* ScalarType.BYTES */ },\n { no: 2, name: \"environment_classes\", kind: \"message\", T: EnvironmentClass, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SignupRequest {\n return new SignupRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SignupRequest {\n return new SignupRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SignupRequest {\n return new SignupRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: SignupRequest | PlainMessage | undefined, b: SignupRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(SignupRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.SignupResponse\n */\nexport class SignupResponse extends Message {\n /**\n * The runner's identity\n *\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.SignupResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SignupResponse {\n return new SignupResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SignupResponse {\n return new SignupResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SignupResponse {\n return new SignupResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: SignupResponse | PlainMessage | undefined, b: SignupResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(SignupResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.MarkRunnerActiveRequest\n */\nexport class MarkRunnerActiveRequest extends Message {\n /**\n * The runner's identity\n *\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.MarkRunnerActiveRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): MarkRunnerActiveRequest {\n return new MarkRunnerActiveRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): MarkRunnerActiveRequest {\n return new MarkRunnerActiveRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): MarkRunnerActiveRequest {\n return new MarkRunnerActiveRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: MarkRunnerActiveRequest | PlainMessage | undefined, b: MarkRunnerActiveRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(MarkRunnerActiveRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.MarkRunnerActiveResponse\n */\nexport class MarkRunnerActiveResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.MarkRunnerActiveResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): MarkRunnerActiveResponse {\n return new MarkRunnerActiveResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): MarkRunnerActiveResponse {\n return new MarkRunnerActiveResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): MarkRunnerActiveResponse {\n return new MarkRunnerActiveResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: MarkRunnerActiveResponse | PlainMessage | undefined, b: MarkRunnerActiveResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(MarkRunnerActiveResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListRunnerEnvironmentsRequest\n */\nexport class ListRunnerEnvironmentsRequest extends Message {\n /**\n * pagination contains the pagination options for listing environments\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * The runner's identifier\n *\n * @generated from field: string runner_id = 2;\n */\n runnerId = \"\";\n\n /**\n * An optional list of environment IDs to fetch. If this list is empty/not provided\n * all environments that ought to run on the runner are returned.\n *\n * @generated from field: repeated string environment_ids = 3;\n */\n environmentIds: string[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListRunnerEnvironmentsRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"environment_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListRunnerEnvironmentsRequest {\n return new ListRunnerEnvironmentsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListRunnerEnvironmentsRequest {\n return new ListRunnerEnvironmentsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListRunnerEnvironmentsRequest {\n return new ListRunnerEnvironmentsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListRunnerEnvironmentsRequest | PlainMessage | undefined, b: ListRunnerEnvironmentsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListRunnerEnvironmentsRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.RunnerEnvironment\n */\nexport class RunnerEnvironment extends Message {\n /**\n * ID is a unique identifier of this environment. No other environment with the same name must be managed by this\n * environment manager\n *\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * Metadata is data associated with this environment that's required for other parts of Gitpod to function\n *\n * @generated from field: gitpod.v1.EnvironmentMetadata metadata = 2;\n */\n metadata?: EnvironmentMetadata;\n\n /**\n * Spec is the configuration of the environment that's required for the runner to start the environment\n *\n * @generated from field: gitpod.v1.EnvironmentSpec spec = 3;\n */\n spec?: EnvironmentSpec;\n\n /**\n * The environment's access token\n *\n * @generated from field: string environment_access_token = 4;\n */\n environmentAccessToken = \"\";\n\n /**\n * The last activity signal received by the management plane\n *\n * @generated from field: gitpod.v1.EnvironmentActivitySignal activity_signal = 5;\n */\n activitySignal?: EnvironmentActivitySignal;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.RunnerEnvironment\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"metadata\", kind: \"message\", T: EnvironmentMetadata },\n { no: 3, name: \"spec\", kind: \"message\", T: EnvironmentSpec },\n { no: 4, name: \"environment_access_token\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"activity_signal\", kind: \"message\", T: EnvironmentActivitySignal },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunnerEnvironment {\n return new RunnerEnvironment().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunnerEnvironment {\n return new RunnerEnvironment().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunnerEnvironment {\n return new RunnerEnvironment().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunnerEnvironment | PlainMessage | undefined, b: RunnerEnvironment | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunnerEnvironment, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListRunnerEnvironmentsResponse\n */\nexport class ListRunnerEnvironmentsResponse extends Message {\n /**\n * pagination contains the pagination options for listing environments\n *\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * The environments running on the runner\n *\n * @generated from field: repeated gitpod.v1.RunnerEnvironment environments = 2;\n */\n environments: RunnerEnvironment[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListRunnerEnvironmentsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"environments\", kind: \"message\", T: RunnerEnvironment, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListRunnerEnvironmentsResponse {\n return new ListRunnerEnvironmentsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListRunnerEnvironmentsResponse {\n return new ListRunnerEnvironmentsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListRunnerEnvironmentsResponse {\n return new ListRunnerEnvironmentsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListRunnerEnvironmentsResponse | PlainMessage | undefined, b: ListRunnerEnvironmentsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListRunnerEnvironmentsResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetRunnerEnvironmentRequest\n */\nexport class GetRunnerEnvironmentRequest extends Message {\n /**\n * The runner's identity\n *\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * The environment's ID\n *\n * @generated from field: string environment_id = 2;\n */\n environmentId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetRunnerEnvironmentRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetRunnerEnvironmentRequest {\n return new GetRunnerEnvironmentRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetRunnerEnvironmentRequest {\n return new GetRunnerEnvironmentRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetRunnerEnvironmentRequest {\n return new GetRunnerEnvironmentRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetRunnerEnvironmentRequest | PlainMessage | undefined, b: GetRunnerEnvironmentRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetRunnerEnvironmentRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetRunnerEnvironmentResponse\n */\nexport class GetRunnerEnvironmentResponse extends Message {\n /**\n * @generated from field: gitpod.v1.RunnerEnvironment environment = 1;\n */\n environment?: RunnerEnvironment;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetRunnerEnvironmentResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment\", kind: \"message\", T: RunnerEnvironment },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetRunnerEnvironmentResponse {\n return new GetRunnerEnvironmentResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetRunnerEnvironmentResponse {\n return new GetRunnerEnvironmentResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetRunnerEnvironmentResponse {\n return new GetRunnerEnvironmentResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetRunnerEnvironmentResponse | PlainMessage | undefined, b: GetRunnerEnvironmentResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetRunnerEnvironmentResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateRunnerEnvironmentStatusRequest\n */\nexport class UpdateRunnerEnvironmentStatusRequest extends Message {\n /**\n * The runner's identity\n *\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * The environment's ID\n *\n * @generated from field: string environment_id = 2;\n */\n environmentId = \"\";\n\n /**\n * The environment's status\n *\n * @generated from field: gitpod.v1.EnvironmentStatus status = 3;\n */\n status?: EnvironmentStatus;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateRunnerEnvironmentStatusRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"status\", kind: \"message\", T: EnvironmentStatus },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateRunnerEnvironmentStatusRequest {\n return new UpdateRunnerEnvironmentStatusRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateRunnerEnvironmentStatusRequest {\n return new UpdateRunnerEnvironmentStatusRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateRunnerEnvironmentStatusRequest {\n return new UpdateRunnerEnvironmentStatusRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateRunnerEnvironmentStatusRequest | PlainMessage | undefined, b: UpdateRunnerEnvironmentStatusRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateRunnerEnvironmentStatusRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateRunnerEnvironmentStatusResponse\n */\nexport class UpdateRunnerEnvironmentStatusResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateRunnerEnvironmentStatusResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateRunnerEnvironmentStatusResponse {\n return new UpdateRunnerEnvironmentStatusResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateRunnerEnvironmentStatusResponse {\n return new UpdateRunnerEnvironmentStatusResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateRunnerEnvironmentStatusResponse {\n return new UpdateRunnerEnvironmentStatusResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateRunnerEnvironmentStatusResponse | PlainMessage | undefined, b: UpdateRunnerEnvironmentStatusResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateRunnerEnvironmentStatusResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateRunnerStatusRequest\n */\nexport class UpdateRunnerStatusRequest extends Message {\n /**\n * The runner's identity\n *\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * version is the version of the runner. This is used to detect if the runner is outdated.\n *\n * @generated from field: optional string version = 2;\n */\n version?: string;\n\n /**\n * system_details is a runner specific system detail string. Think of this like a user agent string.\n * It's intended to be used for debugging and support purposes and might be shown to the user.\n *\n * @generated from field: optional string system_details = 4;\n */\n systemDetails?: string;\n\n /**\n * log_url is the URL to the runner's logs\n *\n * @generated from field: optional string log_url = 5;\n */\n logUrl?: string;\n\n /**\n * Degredation message is an optional message that is shown to users when the runner is in a degraded state.\n * Setting this to \"\" changes the runner's phase back from \"degraded\" to \"active\".\n *\n * @generated from field: optional string degredation_message = 6;\n */\n degredationMessage?: string;\n\n /**\n * region is the region the runner is running in, if applicable.\n *\n * @generated from field: optional string region = 7;\n */\n region?: string;\n\n /**\n * additional_info updates fields in the runner's additional_info.\n *\n * @generated from field: repeated gitpod.v1.FieldValueUpdate additional_info = 8;\n */\n additionalInfo: FieldValueUpdate[] = [];\n\n /**\n * capabilities contains the runner's supported capabilities.\n * Optional field, only overwrites previous capabilities if set to a non-empty list.\n * To clear capabilities, set this to a list with a single UNSPECIFIED capability.\n *\n * @generated from field: repeated gitpod.v1.RunnerCapability capabilities = 9;\n */\n capabilities: RunnerCapability[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateRunnerStatusRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"version\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 4, name: \"system_details\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 5, name: \"log_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 6, name: \"degredation_message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 7, name: \"region\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 8, name: \"additional_info\", kind: \"message\", T: FieldValueUpdate, repeated: true },\n { no: 9, name: \"capabilities\", kind: \"enum\", T: proto3.getEnumType(RunnerCapability), repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateRunnerStatusRequest {\n return new UpdateRunnerStatusRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateRunnerStatusRequest {\n return new UpdateRunnerStatusRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateRunnerStatusRequest {\n return new UpdateRunnerStatusRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateRunnerStatusRequest | PlainMessage | undefined, b: UpdateRunnerStatusRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateRunnerStatusRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateRunnerStatusResponse\n */\nexport class UpdateRunnerStatusResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateRunnerStatusResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateRunnerStatusResponse {\n return new UpdateRunnerStatusResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateRunnerStatusResponse {\n return new UpdateRunnerStatusResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateRunnerStatusResponse {\n return new UpdateRunnerStatusResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateRunnerStatusResponse | PlainMessage | undefined, b: UpdateRunnerStatusResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateRunnerStatusResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateRunnerConfigurationSchemaRequest\n */\nexport class UpdateRunnerConfigurationSchemaRequest extends Message {\n /**\n * The runner's identity\n *\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * config_schema is the schema for the runner's configuration\n *\n * @generated from field: gitpod.v1.RunnerConfigurationSchema config_schema = 2;\n */\n configSchema?: RunnerConfigurationSchema;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateRunnerConfigurationSchemaRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"config_schema\", kind: \"message\", T: RunnerConfigurationSchema },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateRunnerConfigurationSchemaRequest {\n return new UpdateRunnerConfigurationSchemaRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateRunnerConfigurationSchemaRequest {\n return new UpdateRunnerConfigurationSchemaRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateRunnerConfigurationSchemaRequest {\n return new UpdateRunnerConfigurationSchemaRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateRunnerConfigurationSchemaRequest | PlainMessage | undefined, b: UpdateRunnerConfigurationSchemaRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateRunnerConfigurationSchemaRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateRunnerConfigurationSchemaResponse\n */\nexport class UpdateRunnerConfigurationSchemaResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateRunnerConfigurationSchemaResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateRunnerConfigurationSchemaResponse {\n return new UpdateRunnerConfigurationSchemaResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateRunnerConfigurationSchemaResponse {\n return new UpdateRunnerConfigurationSchemaResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateRunnerConfigurationSchemaResponse {\n return new UpdateRunnerConfigurationSchemaResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateRunnerConfigurationSchemaResponse | PlainMessage | undefined, b: UpdateRunnerConfigurationSchemaResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateRunnerConfigurationSchemaResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetHostAuthenticationTokenValueRequest\n */\nexport class GetHostAuthenticationTokenValueRequest extends Message {\n /**\n * The runner's identity\n *\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * The principal's ID to get the authentication token for\n *\n * @generated from field: string principal_id = 2;\n */\n principalId = \"\";\n\n /**\n * The host to get the authentication token for\n *\n * @generated from field: string host = 3;\n */\n host = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetHostAuthenticationTokenValueRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"principal_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"host\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetHostAuthenticationTokenValueRequest {\n return new GetHostAuthenticationTokenValueRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetHostAuthenticationTokenValueRequest {\n return new GetHostAuthenticationTokenValueRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetHostAuthenticationTokenValueRequest {\n return new GetHostAuthenticationTokenValueRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetHostAuthenticationTokenValueRequest | PlainMessage | undefined, b: GetHostAuthenticationTokenValueRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetHostAuthenticationTokenValueRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetHostAuthenticationTokenValueResponse\n */\nexport class GetHostAuthenticationTokenValueResponse extends Message {\n /**\n * The authentication token encrypted as NaCL anonymous sealed box using the runner's public key\n *\n * @generated from field: bytes value = 1;\n */\n value = new Uint8Array(0);\n\n /**\n * The host authentication token's ID\n *\n * @generated from field: string token_id = 2;\n */\n tokenId = \"\";\n\n /**\n * The host authentication token's expiry\n *\n * @generated from field: google.protobuf.Timestamp expires_at = 3;\n */\n expiresAt?: Timestamp;\n\n /**\n * The host authentication token's refresh token encrypted as NaCL anonymous sealed box using the runner's public key\n *\n * @generated from field: bytes refresh_token = 4;\n */\n refreshToken = new Uint8Array(0);\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetHostAuthenticationTokenValueResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"value\", kind: \"scalar\", T: 12 /* ScalarType.BYTES */ },\n { no: 2, name: \"token_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"expires_at\", kind: \"message\", T: Timestamp },\n { no: 4, name: \"refresh_token\", kind: \"scalar\", T: 12 /* ScalarType.BYTES */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetHostAuthenticationTokenValueResponse {\n return new GetHostAuthenticationTokenValueResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetHostAuthenticationTokenValueResponse {\n return new GetHostAuthenticationTokenValueResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetHostAuthenticationTokenValueResponse {\n return new GetHostAuthenticationTokenValueResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetHostAuthenticationTokenValueResponse | PlainMessage | undefined, b: GetHostAuthenticationTokenValueResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetHostAuthenticationTokenValueResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListRunnerEnvironmentClassesRequest\n */\nexport class ListRunnerEnvironmentClassesRequest extends Message {\n /**\n * pagination contains the pagination options for listing environment classes\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * The runner's identity\n *\n * @generated from field: string runner_id = 2;\n */\n runnerId = \"\";\n\n /**\n * @generated from field: gitpod.v1.ListRunnerEnvironmentClassesRequest.Filter filter = 3;\n */\n filter?: ListRunnerEnvironmentClassesRequest_Filter;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListRunnerEnvironmentClassesRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"filter\", kind: \"message\", T: ListRunnerEnvironmentClassesRequest_Filter },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListRunnerEnvironmentClassesRequest {\n return new ListRunnerEnvironmentClassesRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListRunnerEnvironmentClassesRequest {\n return new ListRunnerEnvironmentClassesRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListRunnerEnvironmentClassesRequest {\n return new ListRunnerEnvironmentClassesRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListRunnerEnvironmentClassesRequest | PlainMessage | undefined, b: ListRunnerEnvironmentClassesRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListRunnerEnvironmentClassesRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListRunnerEnvironmentClassesRequest.Filter\n */\nexport class ListRunnerEnvironmentClassesRequest_Filter extends Message {\n /**\n * environment_class_ids filters the response to only environment classes with these IDs\n *\n * @generated from field: repeated string environment_class_ids = 1;\n */\n environmentClassIds: string[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListRunnerEnvironmentClassesRequest.Filter\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_class_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListRunnerEnvironmentClassesRequest_Filter {\n return new ListRunnerEnvironmentClassesRequest_Filter().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListRunnerEnvironmentClassesRequest_Filter {\n return new ListRunnerEnvironmentClassesRequest_Filter().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListRunnerEnvironmentClassesRequest_Filter {\n return new ListRunnerEnvironmentClassesRequest_Filter().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListRunnerEnvironmentClassesRequest_Filter | PlainMessage | undefined, b: ListRunnerEnvironmentClassesRequest_Filter | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListRunnerEnvironmentClassesRequest_Filter, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListRunnerEnvironmentClassesResponse\n */\nexport class ListRunnerEnvironmentClassesResponse extends Message {\n /**\n * pagination contains the pagination options for listing environment classes\n *\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * The environment classes configured for the runner\n *\n * @generated from field: repeated gitpod.v1.EnvironmentClass environment_classes = 2;\n */\n environmentClasses: EnvironmentClass[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListRunnerEnvironmentClassesResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"environment_classes\", kind: \"message\", T: EnvironmentClass, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListRunnerEnvironmentClassesResponse {\n return new ListRunnerEnvironmentClassesResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListRunnerEnvironmentClassesResponse {\n return new ListRunnerEnvironmentClassesResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListRunnerEnvironmentClassesResponse {\n return new ListRunnerEnvironmentClassesResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListRunnerEnvironmentClassesResponse | PlainMessage | undefined, b: ListRunnerEnvironmentClassesResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListRunnerEnvironmentClassesResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListRunnerSCMIntegrationsRequest\n */\nexport class ListRunnerSCMIntegrationsRequest extends Message {\n /**\n * pagination contains the pagination options for listing SCM integrations\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * The runner's identity\n *\n * @generated from field: string runner_id = 2;\n */\n runnerId = \"\";\n\n /**\n * @generated from field: gitpod.v1.ListRunnerSCMIntegrationsRequest.Filter filter = 3;\n */\n filter?: ListRunnerSCMIntegrationsRequest_Filter;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListRunnerSCMIntegrationsRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"filter\", kind: \"message\", T: ListRunnerSCMIntegrationsRequest_Filter },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListRunnerSCMIntegrationsRequest {\n return new ListRunnerSCMIntegrationsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListRunnerSCMIntegrationsRequest {\n return new ListRunnerSCMIntegrationsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListRunnerSCMIntegrationsRequest {\n return new ListRunnerSCMIntegrationsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListRunnerSCMIntegrationsRequest | PlainMessage | undefined, b: ListRunnerSCMIntegrationsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListRunnerSCMIntegrationsRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListRunnerSCMIntegrationsRequest.Filter\n */\nexport class ListRunnerSCMIntegrationsRequest_Filter extends Message {\n /**\n * environment_class_ids filters the response to only SCM integrations with these IDs\n *\n * @generated from field: repeated string scm_integration_ids = 1;\n */\n scmIntegrationIds: string[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListRunnerSCMIntegrationsRequest.Filter\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"scm_integration_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListRunnerSCMIntegrationsRequest_Filter {\n return new ListRunnerSCMIntegrationsRequest_Filter().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListRunnerSCMIntegrationsRequest_Filter {\n return new ListRunnerSCMIntegrationsRequest_Filter().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListRunnerSCMIntegrationsRequest_Filter {\n return new ListRunnerSCMIntegrationsRequest_Filter().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListRunnerSCMIntegrationsRequest_Filter | PlainMessage | undefined, b: ListRunnerSCMIntegrationsRequest_Filter | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListRunnerSCMIntegrationsRequest_Filter, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListRunnerSCMIntegrationsResponse\n */\nexport class ListRunnerSCMIntegrationsResponse extends Message {\n /**\n * pagination contains the pagination options for listing SCM integrations\n *\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * The SCM integrations configured for the runner\n *\n * @generated from field: repeated gitpod.v1.SCMIntegration scm_integrations = 2;\n */\n scmIntegrations: SCMIntegration[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListRunnerSCMIntegrationsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"scm_integrations\", kind: \"message\", T: SCMIntegration, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListRunnerSCMIntegrationsResponse {\n return new ListRunnerSCMIntegrationsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListRunnerSCMIntegrationsResponse {\n return new ListRunnerSCMIntegrationsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListRunnerSCMIntegrationsResponse {\n return new ListRunnerSCMIntegrationsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListRunnerSCMIntegrationsResponse | PlainMessage | undefined, b: ListRunnerSCMIntegrationsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListRunnerSCMIntegrationsResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.WatchRequestsRequest\n */\nexport class WatchRequestsRequest extends Message {\n /**\n * The runner's identity\n *\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.WatchRequestsRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): WatchRequestsRequest {\n return new WatchRequestsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): WatchRequestsRequest {\n return new WatchRequestsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): WatchRequestsRequest {\n return new WatchRequestsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: WatchRequestsRequest | PlainMessage | undefined, b: WatchRequestsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(WatchRequestsRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.WatchRequestsResponse\n */\nexport class WatchRequestsResponse extends Message {\n /**\n * The request's ID\n *\n * @generated from field: string request_id = 1;\n */\n requestId = \"\";\n\n /**\n * The request to handle\n *\n * @generated from oneof gitpod.v1.WatchRequestsResponse.request\n */\n request: {\n /**\n * @generated from field: gitpod.v1.EventEnvironmentSpecChange event_environment_spec_change = 10;\n */\n value: EventEnvironmentSpecChange;\n case: \"eventEnvironmentSpecChange\";\n } | {\n /**\n * @generated from field: gitpod.v1.EventEnvironmentMarkedActive event_environment_marked_active = 11;\n */\n value: EventEnvironmentMarkedActive;\n case: \"eventEnvironmentMarkedActive\";\n } | {\n /**\n * @generated from field: gitpod.v1.EventSCMIntegrationChange event_scm_integration_change = 12;\n */\n value: EventSCMIntegrationChange;\n case: \"eventScmIntegrationChange\";\n } | {\n /**\n * @generated from field: gitpod.v1.EventHostAuthenticationTokenDeleted event_host_authentication_token_deleted = 13;\n */\n value: EventHostAuthenticationTokenDeleted;\n case: \"eventHostAuthenticationTokenDeleted\";\n } | {\n /**\n * @generated from field: gitpod.v1.CallParseContext.Request call_parse_context = 50;\n */\n value: CallParseContext_Request;\n case: \"callParseContext\";\n } | {\n /**\n * @generated from field: gitpod.v1.CallPing.Request call_ping = 51;\n */\n value: CallPing_Request;\n case: \"callPing\";\n } | {\n /**\n * @generated from field: gitpod.v1.CallCheckAuthenticationForHost.Request call_check_authentication_for_host = 52;\n */\n value: CallCheckAuthenticationForHost_Request;\n case: \"callCheckAuthenticationForHost\";\n } | {\n /**\n * @generated from field: gitpod.v1.CallValidateConfig.Request call_validate_config = 53;\n */\n value: CallValidateConfig_Request;\n case: \"callValidateConfig\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.WatchRequestsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"request_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 10, name: \"event_environment_spec_change\", kind: \"message\", T: EventEnvironmentSpecChange, oneof: \"request\" },\n { no: 11, name: \"event_environment_marked_active\", kind: \"message\", T: EventEnvironmentMarkedActive, oneof: \"request\" },\n { no: 12, name: \"event_scm_integration_change\", kind: \"message\", T: EventSCMIntegrationChange, oneof: \"request\" },\n { no: 13, name: \"event_host_authentication_token_deleted\", kind: \"message\", T: EventHostAuthenticationTokenDeleted, oneof: \"request\" },\n { no: 50, name: \"call_parse_context\", kind: \"message\", T: CallParseContext_Request, oneof: \"request\" },\n { no: 51, name: \"call_ping\", kind: \"message\", T: CallPing_Request, oneof: \"request\" },\n { no: 52, name: \"call_check_authentication_for_host\", kind: \"message\", T: CallCheckAuthenticationForHost_Request, oneof: \"request\" },\n { no: 53, name: \"call_validate_config\", kind: \"message\", T: CallValidateConfig_Request, oneof: \"request\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): WatchRequestsResponse {\n return new WatchRequestsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): WatchRequestsResponse {\n return new WatchRequestsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): WatchRequestsResponse {\n return new WatchRequestsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: WatchRequestsResponse | PlainMessage | undefined, b: WatchRequestsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(WatchRequestsResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.SendResponseRequest\n */\nexport class SendResponseRequest extends Message {\n /**\n * The runner's identity\n *\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * The request's ID we're responding to\n *\n * @generated from field: string request_id = 2;\n */\n requestId = \"\";\n\n /**\n * The response to send\n *\n * @generated from oneof gitpod.v1.SendResponseRequest.response\n */\n response: {\n /**\n * @generated from field: gitpod.v1.SendResponseRequest.CallError error = 5;\n */\n value: SendResponseRequest_CallError;\n case: \"error\";\n } | {\n /**\n * @generated from field: gitpod.v1.CallParseContext.Response call_parse_context = 50;\n */\n value: CallParseContext_Response;\n case: \"callParseContext\";\n } | {\n /**\n * @generated from field: gitpod.v1.CallPing.Response call_ping = 51;\n */\n value: CallPing_Response;\n case: \"callPing\";\n } | {\n /**\n * @generated from field: gitpod.v1.CallCheckAuthenticationForHost.Response call_check_authentication_for_host = 52;\n */\n value: CallCheckAuthenticationForHost_Response;\n case: \"callCheckAuthenticationForHost\";\n } | {\n /**\n * @generated from field: gitpod.v1.CallValidateConfig.Response call_validate_config = 53;\n */\n value: CallValidateConfig_Response;\n case: \"callValidateConfig\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.SendResponseRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"request_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"error\", kind: \"message\", T: SendResponseRequest_CallError, oneof: \"response\" },\n { no: 50, name: \"call_parse_context\", kind: \"message\", T: CallParseContext_Response, oneof: \"response\" },\n { no: 51, name: \"call_ping\", kind: \"message\", T: CallPing_Response, oneof: \"response\" },\n { no: 52, name: \"call_check_authentication_for_host\", kind: \"message\", T: CallCheckAuthenticationForHost_Response, oneof: \"response\" },\n { no: 53, name: \"call_validate_config\", kind: \"message\", T: CallValidateConfig_Response, oneof: \"response\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SendResponseRequest {\n return new SendResponseRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SendResponseRequest {\n return new SendResponseRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SendResponseRequest {\n return new SendResponseRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: SendResponseRequest | PlainMessage | undefined, b: SendResponseRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(SendResponseRequest, a, b);\n }\n}\n\n/**\n * @generated from enum gitpod.v1.SendResponseRequest.ErrorCode\n */\nexport enum SendResponseRequest_ErrorCode {\n /**\n * @generated from enum value: ERROR_CODE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: ERROR_CODE_CANCELED = 1;\n */\n CANCELED = 1,\n\n /**\n * @generated from enum value: ERROR_CODE_INVALID_ARGUMENT = 3;\n */\n INVALID_ARGUMENT = 3,\n\n /**\n * @generated from enum value: ERROR_CODE_DEADLINE_EXCEEDED = 4;\n */\n DEADLINE_EXCEEDED = 4,\n\n /**\n * @generated from enum value: ERROR_CODE_NOT_FOUND = 5;\n */\n NOT_FOUND = 5,\n\n /**\n * @generated from enum value: ERROR_CODE_ALREADY_EXISTS = 6;\n */\n ALREADY_EXISTS = 6,\n\n /**\n * @generated from enum value: ERROR_CODE_PERMISSION_DENIED = 7;\n */\n PERMISSION_DENIED = 7,\n\n /**\n * @generated from enum value: ERROR_CODE_RESOURCE_EXHAUSTED = 8;\n */\n RESOURCE_EXHAUSTED = 8,\n\n /**\n * @generated from enum value: ERROR_CODE_FAILED_PRECONDITION = 9;\n */\n FAILED_PRECONDITION = 9,\n\n /**\n * @generated from enum value: ERROR_CODE_UNIMPLEMENTED = 12;\n */\n UNIMPLEMENTED = 12,\n\n /**\n * @generated from enum value: ERROR_CODE_UNAVAILABLE = 14;\n */\n UNAVAILABLE = 14,\n\n /**\n * @generated from enum value: ERROR_CODE_UNAUTHENTICATED = 16;\n */\n UNAUTHENTICATED = 16,\n}\n// Retrieve enum metadata with: proto3.getEnumType(SendResponseRequest_ErrorCode)\nproto3.util.setEnumType(SendResponseRequest_ErrorCode, \"gitpod.v1.SendResponseRequest.ErrorCode\", [\n { no: 0, name: \"ERROR_CODE_UNSPECIFIED\" },\n { no: 1, name: \"ERROR_CODE_CANCELED\" },\n { no: 3, name: \"ERROR_CODE_INVALID_ARGUMENT\" },\n { no: 4, name: \"ERROR_CODE_DEADLINE_EXCEEDED\" },\n { no: 5, name: \"ERROR_CODE_NOT_FOUND\" },\n { no: 6, name: \"ERROR_CODE_ALREADY_EXISTS\" },\n { no: 7, name: \"ERROR_CODE_PERMISSION_DENIED\" },\n { no: 8, name: \"ERROR_CODE_RESOURCE_EXHAUSTED\" },\n { no: 9, name: \"ERROR_CODE_FAILED_PRECONDITION\" },\n { no: 12, name: \"ERROR_CODE_UNIMPLEMENTED\" },\n { no: 14, name: \"ERROR_CODE_UNAVAILABLE\" },\n { no: 16, name: \"ERROR_CODE_UNAUTHENTICATED\" },\n]);\n\n/**\n * @generated from message gitpod.v1.SendResponseRequest.CallError\n */\nexport class SendResponseRequest_CallError extends Message {\n /**\n * The error's code\n *\n * @generated from field: gitpod.v1.SendResponseRequest.ErrorCode code = 1;\n */\n code = SendResponseRequest_ErrorCode.UNSPECIFIED;\n\n /**\n * The error's message\n *\n * @generated from field: string message = 2;\n */\n message = \"\";\n\n /**\n * Error details\n *\n * @generated from field: repeated google.protobuf.Any details = 3;\n */\n details: Any[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.SendResponseRequest.CallError\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"code\", kind: \"enum\", T: proto3.getEnumType(SendResponseRequest_ErrorCode) },\n { no: 2, name: \"message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"details\", kind: \"message\", T: Any, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SendResponseRequest_CallError {\n return new SendResponseRequest_CallError().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SendResponseRequest_CallError {\n return new SendResponseRequest_CallError().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SendResponseRequest_CallError {\n return new SendResponseRequest_CallError().fromJsonString(jsonString, options);\n }\n\n static equals(a: SendResponseRequest_CallError | PlainMessage | undefined, b: SendResponseRequest_CallError | PlainMessage | undefined): boolean {\n return proto3.util.equals(SendResponseRequest_CallError, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.SendResponseResponse\n */\nexport class SendResponseResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.SendResponseResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SendResponseResponse {\n return new SendResponseResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SendResponseResponse {\n return new SendResponseResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SendResponseResponse {\n return new SendResponseResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: SendResponseResponse | PlainMessage | undefined, b: SendResponseResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(SendResponseResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EventEnvironmentSpecChange\n */\nexport class EventEnvironmentSpecChange extends Message {\n /**\n * The environment's ID\n *\n * @generated from field: string environment_id = 1;\n */\n environmentId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EventEnvironmentSpecChange\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EventEnvironmentSpecChange {\n return new EventEnvironmentSpecChange().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EventEnvironmentSpecChange {\n return new EventEnvironmentSpecChange().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EventEnvironmentSpecChange {\n return new EventEnvironmentSpecChange().fromJsonString(jsonString, options);\n }\n\n static equals(a: EventEnvironmentSpecChange | PlainMessage | undefined, b: EventEnvironmentSpecChange | PlainMessage | undefined): boolean {\n return proto3.util.equals(EventEnvironmentSpecChange, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EventEnvironmentMarkedActive\n */\nexport class EventEnvironmentMarkedActive extends Message {\n /**\n * The environment's ID\n *\n * @generated from field: string environment_id = 1;\n */\n environmentId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EventEnvironmentMarkedActive\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EventEnvironmentMarkedActive {\n return new EventEnvironmentMarkedActive().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EventEnvironmentMarkedActive {\n return new EventEnvironmentMarkedActive().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EventEnvironmentMarkedActive {\n return new EventEnvironmentMarkedActive().fromJsonString(jsonString, options);\n }\n\n static equals(a: EventEnvironmentMarkedActive | PlainMessage | undefined, b: EventEnvironmentMarkedActive | PlainMessage | undefined): boolean {\n return proto3.util.equals(EventEnvironmentMarkedActive, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EventSCMIntegrationChange\n */\nexport class EventSCMIntegrationChange extends Message {\n /**\n * The SCM integration's ID\n *\n * @generated from field: string scm_integration_id = 1;\n */\n scmIntegrationId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EventSCMIntegrationChange\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"scm_integration_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EventSCMIntegrationChange {\n return new EventSCMIntegrationChange().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EventSCMIntegrationChange {\n return new EventSCMIntegrationChange().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EventSCMIntegrationChange {\n return new EventSCMIntegrationChange().fromJsonString(jsonString, options);\n }\n\n static equals(a: EventSCMIntegrationChange | PlainMessage | undefined, b: EventSCMIntegrationChange | PlainMessage | undefined): boolean {\n return proto3.util.equals(EventSCMIntegrationChange, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EventHostAuthenticationTokenDeleted\n */\nexport class EventHostAuthenticationTokenDeleted extends Message {\n /**\n * The host authentication token's host.\n *\n * @generated from field: string host = 1;\n */\n host = \"\";\n\n /**\n * The principal ID of the deleted token.\n *\n * @generated from field: string principal_id = 2;\n */\n principalId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EventHostAuthenticationTokenDeleted\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"host\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"principal_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EventHostAuthenticationTokenDeleted {\n return new EventHostAuthenticationTokenDeleted().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EventHostAuthenticationTokenDeleted {\n return new EventHostAuthenticationTokenDeleted().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EventHostAuthenticationTokenDeleted {\n return new EventHostAuthenticationTokenDeleted().fromJsonString(jsonString, options);\n }\n\n static equals(a: EventHostAuthenticationTokenDeleted | PlainMessage | undefined, b: EventHostAuthenticationTokenDeleted | PlainMessage | undefined): boolean {\n return proto3.util.equals(EventHostAuthenticationTokenDeleted, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CallParseContext\n */\nexport class CallParseContext extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CallParseContext\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CallParseContext {\n return new CallParseContext().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CallParseContext {\n return new CallParseContext().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CallParseContext {\n return new CallParseContext().fromJsonString(jsonString, options);\n }\n\n static equals(a: CallParseContext | PlainMessage | undefined, b: CallParseContext | PlainMessage | undefined): boolean {\n return proto3.util.equals(CallParseContext, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CallParseContext.Request\n */\nexport class CallParseContext_Request extends Message {\n /**\n * @generated from field: string context_url = 1;\n */\n contextUrl = \"\";\n\n /**\n * @generated from field: string principal_id = 2;\n */\n principalId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CallParseContext.Request\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"context_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"principal_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CallParseContext_Request {\n return new CallParseContext_Request().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CallParseContext_Request {\n return new CallParseContext_Request().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CallParseContext_Request {\n return new CallParseContext_Request().fromJsonString(jsonString, options);\n }\n\n static equals(a: CallParseContext_Request | PlainMessage | undefined, b: CallParseContext_Request | PlainMessage | undefined): boolean {\n return proto3.util.equals(CallParseContext_Request, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CallParseContext.Response\n */\nexport class CallParseContext_Response extends Message {\n /**\n * @generated from field: gitpod.v1.ParseContextURLResponse resp = 1;\n */\n resp?: ParseContextURLResponse;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CallParseContext.Response\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"resp\", kind: \"message\", T: ParseContextURLResponse },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CallParseContext_Response {\n return new CallParseContext_Response().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CallParseContext_Response {\n return new CallParseContext_Response().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CallParseContext_Response {\n return new CallParseContext_Response().fromJsonString(jsonString, options);\n }\n\n static equals(a: CallParseContext_Response | PlainMessage | undefined, b: CallParseContext_Response | PlainMessage | undefined): boolean {\n return proto3.util.equals(CallParseContext_Response, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CallPing\n */\nexport class CallPing extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CallPing\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CallPing {\n return new CallPing().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CallPing {\n return new CallPing().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CallPing {\n return new CallPing().fromJsonString(jsonString, options);\n }\n\n static equals(a: CallPing | PlainMessage | undefined, b: CallPing | PlainMessage | undefined): boolean {\n return proto3.util.equals(CallPing, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CallPing.Request\n */\nexport class CallPing_Request extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CallPing.Request\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CallPing_Request {\n return new CallPing_Request().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CallPing_Request {\n return new CallPing_Request().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CallPing_Request {\n return new CallPing_Request().fromJsonString(jsonString, options);\n }\n\n static equals(a: CallPing_Request | PlainMessage | undefined, b: CallPing_Request | PlainMessage | undefined): boolean {\n return proto3.util.equals(CallPing_Request, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CallPing.Response\n */\nexport class CallPing_Response extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CallPing.Response\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CallPing_Response {\n return new CallPing_Response().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CallPing_Response {\n return new CallPing_Response().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CallPing_Response {\n return new CallPing_Response().fromJsonString(jsonString, options);\n }\n\n static equals(a: CallPing_Response | PlainMessage | undefined, b: CallPing_Response | PlainMessage | undefined): boolean {\n return proto3.util.equals(CallPing_Response, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CallCheckAuthenticationForHost\n */\nexport class CallCheckAuthenticationForHost extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CallCheckAuthenticationForHost\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CallCheckAuthenticationForHost {\n return new CallCheckAuthenticationForHost().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CallCheckAuthenticationForHost {\n return new CallCheckAuthenticationForHost().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CallCheckAuthenticationForHost {\n return new CallCheckAuthenticationForHost().fromJsonString(jsonString, options);\n }\n\n static equals(a: CallCheckAuthenticationForHost | PlainMessage | undefined, b: CallCheckAuthenticationForHost | PlainMessage | undefined): boolean {\n return proto3.util.equals(CallCheckAuthenticationForHost, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CallCheckAuthenticationForHost.Request\n */\nexport class CallCheckAuthenticationForHost_Request extends Message {\n /**\n * @generated from field: string host = 1;\n */\n host = \"\";\n\n /**\n * @generated from field: string principal_id = 2;\n */\n principalId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CallCheckAuthenticationForHost.Request\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"host\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"principal_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CallCheckAuthenticationForHost_Request {\n return new CallCheckAuthenticationForHost_Request().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CallCheckAuthenticationForHost_Request {\n return new CallCheckAuthenticationForHost_Request().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CallCheckAuthenticationForHost_Request {\n return new CallCheckAuthenticationForHost_Request().fromJsonString(jsonString, options);\n }\n\n static equals(a: CallCheckAuthenticationForHost_Request | PlainMessage | undefined, b: CallCheckAuthenticationForHost_Request | PlainMessage | undefined): boolean {\n return proto3.util.equals(CallCheckAuthenticationForHost_Request, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CallCheckAuthenticationForHost.Response\n */\nexport class CallCheckAuthenticationForHost_Response extends Message {\n /**\n * @generated from field: gitpod.v1.CheckAuthenticationForHostResponse resp = 1;\n */\n resp?: CheckAuthenticationForHostResponse;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CallCheckAuthenticationForHost.Response\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"resp\", kind: \"message\", T: CheckAuthenticationForHostResponse },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CallCheckAuthenticationForHost_Response {\n return new CallCheckAuthenticationForHost_Response().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CallCheckAuthenticationForHost_Response {\n return new CallCheckAuthenticationForHost_Response().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CallCheckAuthenticationForHost_Response {\n return new CallCheckAuthenticationForHost_Response().fromJsonString(jsonString, options);\n }\n\n static equals(a: CallCheckAuthenticationForHost_Response | PlainMessage | undefined, b: CallCheckAuthenticationForHost_Response | PlainMessage | undefined): boolean {\n return proto3.util.equals(CallCheckAuthenticationForHost_Response, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CallValidateConfig\n */\nexport class CallValidateConfig extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CallValidateConfig\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CallValidateConfig {\n return new CallValidateConfig().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CallValidateConfig {\n return new CallValidateConfig().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CallValidateConfig {\n return new CallValidateConfig().fromJsonString(jsonString, options);\n }\n\n static equals(a: CallValidateConfig | PlainMessage | undefined, b: CallValidateConfig | PlainMessage | undefined): boolean {\n return proto3.util.equals(CallValidateConfig, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CallValidateConfig.Request\n */\nexport class CallValidateConfig_Request extends Message {\n /**\n * @generated from oneof gitpod.v1.CallValidateConfig.Request.config\n */\n config: {\n /**\n * @generated from field: gitpod.v1.EnvironmentClass environment_class = 1;\n */\n value: EnvironmentClass;\n case: \"environmentClass\";\n } | {\n /**\n * @generated from field: gitpod.v1.SCMIntegration scm = 2;\n */\n value: SCMIntegration;\n case: \"scm\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CallValidateConfig.Request\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_class\", kind: \"message\", T: EnvironmentClass, oneof: \"config\" },\n { no: 2, name: \"scm\", kind: \"message\", T: SCMIntegration, oneof: \"config\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CallValidateConfig_Request {\n return new CallValidateConfig_Request().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CallValidateConfig_Request {\n return new CallValidateConfig_Request().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CallValidateConfig_Request {\n return new CallValidateConfig_Request().fromJsonString(jsonString, options);\n }\n\n static equals(a: CallValidateConfig_Request | PlainMessage | undefined, b: CallValidateConfig_Request | PlainMessage | undefined): boolean {\n return proto3.util.equals(CallValidateConfig_Request, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CallValidateConfig.Response\n */\nexport class CallValidateConfig_Response extends Message {\n /**\n * @generated from oneof gitpod.v1.CallValidateConfig.Response.result\n */\n result: {\n /**\n * @generated from field: gitpod.v1.EnvironmentClassValidationResult environment_class = 1;\n */\n value: EnvironmentClassValidationResult;\n case: \"environmentClass\";\n } | {\n /**\n * @generated from field: gitpod.v1.SCMIntegrationValidationResult scm = 2;\n */\n value: SCMIntegrationValidationResult;\n case: \"scm\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CallValidateConfig.Response\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_class\", kind: \"message\", T: EnvironmentClassValidationResult, oneof: \"result\" },\n { no: 2, name: \"scm\", kind: \"message\", T: SCMIntegrationValidationResult, oneof: \"result\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CallValidateConfig_Response {\n return new CallValidateConfig_Response().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CallValidateConfig_Response {\n return new CallValidateConfig_Response().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CallValidateConfig_Response {\n return new CallValidateConfig_Response().fromJsonString(jsonString, options);\n }\n\n static equals(a: CallValidateConfig_Response | PlainMessage | undefined, b: CallValidateConfig_Response | PlainMessage | undefined): boolean {\n return proto3.util.equals(CallValidateConfig_Response, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetLatestVersionRequest\n */\nexport class GetLatestVersionRequest extends Message {\n /**\n * The runner's identity\n *\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * The current version of the runner\n *\n * @generated from field: string current_version = 2;\n */\n currentVersion = \"\";\n\n /**\n * The version of the infrastructure\n *\n * @generated from field: string infrastructure_version = 3;\n */\n infrastructureVersion = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetLatestVersionRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"current_version\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"infrastructure_version\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetLatestVersionRequest {\n return new GetLatestVersionRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetLatestVersionRequest {\n return new GetLatestVersionRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetLatestVersionRequest {\n return new GetLatestVersionRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetLatestVersionRequest | PlainMessage | undefined, b: GetLatestVersionRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetLatestVersionRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetLatestVersionResponse\n */\nexport class GetLatestVersionResponse extends Message {\n /**\n * The latest version of the runner\n *\n * @generated from field: string version = 1;\n */\n version = \"\";\n\n /**\n * The container image of the runner\n *\n * @generated from field: string runner_image = 2;\n */\n runnerImage = \"\";\n\n /**\n * auto-update indicates if the runner should be updated automatically\n *\n * @generated from field: bool auto_update = 3;\n */\n autoUpdate = false;\n\n /**\n * supervisor_download_url is the URL to download the supervisor\n *\n * @generated from field: string supervisor_download_url = 4;\n */\n supervisorDownloadUrl = \"\";\n\n /**\n * gitpod_cli_download_url is the URL to download the gitpod CLI\n *\n * @generated from field: string gitpod_cli_download_url = 5;\n */\n gitpodCliDownloadUrl = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetLatestVersionResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"version\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"runner_image\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"auto_update\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n { no: 4, name: \"supervisor_download_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"gitpod_cli_download_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetLatestVersionResponse {\n return new GetLatestVersionResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetLatestVersionResponse {\n return new GetLatestVersionResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetLatestVersionResponse {\n return new GetLatestVersionResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetLatestVersionResponse | PlainMessage | undefined, b: GetLatestVersionResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetLatestVersionResponse, a, b);\n }\n}\n\n","// @generated by protoc-gen-connect-es v1.4.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/runner_interaction.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { GetHostAuthenticationTokenValueRequest, GetHostAuthenticationTokenValueResponse, GetLatestVersionRequest, GetLatestVersionResponse, GetRunnerEnvironmentRequest, GetRunnerEnvironmentResponse, ListRunnerEnvironmentClassesRequest, ListRunnerEnvironmentClassesResponse, ListRunnerEnvironmentsRequest, ListRunnerEnvironmentsResponse, ListRunnerSCMIntegrationsRequest, ListRunnerSCMIntegrationsResponse, MarkRunnerActiveRequest, MarkRunnerActiveResponse, SendResponseRequest, SendResponseResponse, SignupRequest, SignupResponse, UpdateRunnerConfigurationSchemaRequest, UpdateRunnerConfigurationSchemaResponse, UpdateRunnerEnvironmentStatusRequest, UpdateRunnerEnvironmentStatusResponse, UpdateRunnerStatusRequest, UpdateRunnerStatusResponse, WatchRequestsRequest, WatchRequestsResponse } from \"./runner_interaction_pb.js\";\nimport { MethodIdempotency, MethodKind } from \"@bufbuild/protobuf\";\n\n/**\n * RunnerInteractionService provides a way for the backend to interact with environment runners.\n *\n * @generated from service gitpod.v1.RunnerInteractionService\n */\nexport const RunnerInteractionService = {\n typeName: \"gitpod.v1.RunnerInteractionService\",\n methods: {\n /**\n * Signup is called by a runner to sign up with the backend. This is the first call a runner makes.\n *\n * @generated from rpc gitpod.v1.RunnerInteractionService.Signup\n */\n signup: {\n name: \"Signup\",\n I: SignupRequest,\n O: SignupResponse,\n kind: MethodKind.Unary,\n },\n /**\n * MarkRunnerActive marks a runner as available. This must be called every 30 seconds\n * to keep the runner active.\n *\n * @generated from rpc gitpod.v1.RunnerInteractionService.MarkRunnerActive\n */\n markRunnerActive: {\n name: \"MarkRunnerActive\",\n I: MarkRunnerActiveRequest,\n O: MarkRunnerActiveResponse,\n kind: MethodKind.Unary,\n },\n /**\n * GetRunnerEnvironment returns the environment given it is owned by the runner.\n *\n * @generated from rpc gitpod.v1.RunnerInteractionService.GetRunnerEnvironment\n */\n getRunnerEnvironment: {\n name: \"GetRunnerEnvironment\",\n I: GetRunnerEnvironmentRequest,\n O: GetRunnerEnvironmentResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * ListRunnerEnvironments returns the environments this runner is responsible for.\n *\n * @generated from rpc gitpod.v1.RunnerInteractionService.ListRunnerEnvironments\n */\n listRunnerEnvironments: {\n name: \"ListRunnerEnvironments\",\n I: ListRunnerEnvironmentsRequest,\n O: ListRunnerEnvironmentsResponse,\n kind: MethodKind.Unary,\n },\n /**\n * UpdateRunnerEnvironmentStatus updates the status of an environment this runner is responsible for.\n *\n * @generated from rpc gitpod.v1.RunnerInteractionService.UpdateRunnerEnvironmentStatus\n */\n updateRunnerEnvironmentStatus: {\n name: \"UpdateRunnerEnvironmentStatus\",\n I: UpdateRunnerEnvironmentStatusRequest,\n O: UpdateRunnerEnvironmentStatusResponse,\n kind: MethodKind.Unary,\n },\n /**\n * UpdateRunnerStatus updates the status of the runner.\n *\n * @generated from rpc gitpod.v1.RunnerInteractionService.UpdateRunnerStatus\n */\n updateRunnerStatus: {\n name: \"UpdateRunnerStatus\",\n I: UpdateRunnerStatusRequest,\n O: UpdateRunnerStatusResponse,\n kind: MethodKind.Unary,\n },\n /**\n * UpdateRunnerConfigurationSchema updates the runner's configuration schema.\n *\n * @generated from rpc gitpod.v1.RunnerInteractionService.UpdateRunnerConfigurationSchema\n */\n updateRunnerConfigurationSchema: {\n name: \"UpdateRunnerConfigurationSchema\",\n I: UpdateRunnerConfigurationSchemaRequest,\n O: UpdateRunnerConfigurationSchemaResponse,\n kind: MethodKind.Unary,\n },\n /**\n * GetRunnerHostAuthenticationToken returns an authentication token for the given host.\n *\n * @generated from rpc gitpod.v1.RunnerInteractionService.GetHostAuthenticationTokenValue\n */\n getHostAuthenticationTokenValue: {\n name: \"GetHostAuthenticationTokenValue\",\n I: GetHostAuthenticationTokenValueRequest,\n O: GetHostAuthenticationTokenValueResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * ListRunnerEnvironmentClasses returns the environment classes configured for the runner.\n *\n * @generated from rpc gitpod.v1.RunnerInteractionService.ListRunnerEnvironmentClasses\n */\n listRunnerEnvironmentClasses: {\n name: \"ListRunnerEnvironmentClasses\",\n I: ListRunnerEnvironmentClassesRequest,\n O: ListRunnerEnvironmentClassesResponse,\n kind: MethodKind.Unary,\n },\n /**\n * ListRunnerSCMIntegrations returns the SCM integrations configured for the runner.\n * For local runners, this returns the SCM integrations configured on the organization's\n * local-configuration runner.\n *\n * @generated from rpc gitpod.v1.RunnerInteractionService.ListRunnerSCMIntegrations\n */\n listRunnerSCMIntegrations: {\n name: \"ListRunnerSCMIntegrations\",\n I: ListRunnerSCMIntegrationsRequest,\n O: ListRunnerSCMIntegrationsResponse,\n kind: MethodKind.Unary,\n },\n /**\n * WatchRequests returns a stream of requests for this runner to handle.\n *\n * @generated from rpc gitpod.v1.RunnerInteractionService.WatchRequests\n */\n watchRequests: {\n name: \"WatchRequests\",\n I: WatchRequestsRequest,\n O: WatchRequestsResponse,\n kind: MethodKind.ServerStreaming,\n },\n /**\n * SendResponse sends a response to a request.\n *\n * @generated from rpc gitpod.v1.RunnerInteractionService.SendResponse\n */\n sendResponse: {\n name: \"SendResponse\",\n I: SendResponseRequest,\n O: SendResponseResponse,\n kind: MethodKind.Unary,\n },\n /**\n * GetLatestVersion returns the latest version of the runner.\n *\n * @generated from rpc gitpod.v1.RunnerInteractionService.GetLatestVersion\n */\n getLatestVersion: {\n name: \"GetLatestVersion\",\n I: GetLatestVersionRequest,\n O: GetLatestVersionResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n }\n} as const;\n\n","// @generated by protoc-gen-es v1.8.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/environment_automation.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Message, proto3, protoInt64, Timestamp } from \"@bufbuild/protobuf\";\nimport { Subject } from \"./identity_pb.js\";\nimport { PaginationRequest, PaginationResponse } from \"./pagination_pb.js\";\n\n/**\n * @generated from enum gitpod.v1.ServicePhase\n */\nexport enum ServicePhase {\n /**\n * @generated from enum value: SERVICE_PHASE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: SERVICE_PHASE_STARTING = 1;\n */\n STARTING = 1,\n\n /**\n * @generated from enum value: SERVICE_PHASE_RUNNING = 2;\n */\n RUNNING = 2,\n\n /**\n * @generated from enum value: SERVICE_PHASE_STOPPING = 3;\n */\n STOPPING = 3,\n\n /**\n * @generated from enum value: SERVICE_PHASE_STOPPED = 4;\n */\n STOPPED = 4,\n\n /**\n * @generated from enum value: SERVICE_PHASE_FAILED = 5;\n */\n FAILED = 5,\n\n /**\n * @generated from enum value: SERVICE_PHASE_DELETED = 6;\n */\n DELETED = 6,\n}\n// Retrieve enum metadata with: proto3.getEnumType(ServicePhase)\nproto3.util.setEnumType(ServicePhase, \"gitpod.v1.ServicePhase\", [\n { no: 0, name: \"SERVICE_PHASE_UNSPECIFIED\" },\n { no: 1, name: \"SERVICE_PHASE_STARTING\" },\n { no: 2, name: \"SERVICE_PHASE_RUNNING\" },\n { no: 3, name: \"SERVICE_PHASE_STOPPING\" },\n { no: 4, name: \"SERVICE_PHASE_STOPPED\" },\n { no: 5, name: \"SERVICE_PHASE_FAILED\" },\n { no: 6, name: \"SERVICE_PHASE_DELETED\" },\n]);\n\n/**\n * @generated from enum gitpod.v1.TaskExecutionPhase\n */\nexport enum TaskExecutionPhase {\n /**\n * @generated from enum value: TASK_EXECUTION_PHASE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: TASK_EXECUTION_PHASE_PENDING = 1;\n */\n PENDING = 1,\n\n /**\n * @generated from enum value: TASK_EXECUTION_PHASE_RUNNING = 2;\n */\n RUNNING = 2,\n\n /**\n * @generated from enum value: TASK_EXECUTION_PHASE_SUCCEEDED = 3;\n */\n SUCCEEDED = 3,\n\n /**\n * @generated from enum value: TASK_EXECUTION_PHASE_FAILED = 4;\n */\n FAILED = 4,\n\n /**\n * @generated from enum value: TASK_EXECUTION_PHASE_STOPPED = 5;\n */\n STOPPED = 5,\n}\n// Retrieve enum metadata with: proto3.getEnumType(TaskExecutionPhase)\nproto3.util.setEnumType(TaskExecutionPhase, \"gitpod.v1.TaskExecutionPhase\", [\n { no: 0, name: \"TASK_EXECUTION_PHASE_UNSPECIFIED\" },\n { no: 1, name: \"TASK_EXECUTION_PHASE_PENDING\" },\n { no: 2, name: \"TASK_EXECUTION_PHASE_RUNNING\" },\n { no: 3, name: \"TASK_EXECUTION_PHASE_SUCCEEDED\" },\n { no: 4, name: \"TASK_EXECUTION_PHASE_FAILED\" },\n { no: 5, name: \"TASK_EXECUTION_PHASE_STOPPED\" },\n]);\n\n/**\n * @generated from message gitpod.v1.ServiceMetadata\n */\nexport class ServiceMetadata extends Message {\n /**\n * reference is a user-facing identifier for the service which must be unique on the environment.\n * It is used to express dependencies between services, and to identify the service in user interactions (e.g. the CLI).\n *\n * @generated from field: string reference = 1;\n */\n reference = \"\";\n\n /**\n * name is a user-facing name for the service. Unlike the reference, this field is not unique, and not referenced by the system.\n * This is a short descriptive name for the service.\n *\n * @generated from field: string name = 2;\n */\n name = \"\";\n\n /**\n * description is a user-facing description for the service. It can be used to provide context and documentation for the service.\n *\n * @generated from field: string description = 3;\n */\n description = \"\";\n\n /**\n * created_at is the time the service was created.\n *\n * @generated from field: google.protobuf.Timestamp created_at = 4;\n */\n createdAt?: Timestamp;\n\n /**\n * creator describes the principal who created the service.\n *\n * @generated from field: gitpod.v1.Subject creator = 5;\n */\n creator?: Subject;\n\n /**\n * triggered_by is a list of trigger that start the service.\n *\n * @generated from field: repeated gitpod.v1.AutomationTrigger triggered_by = 6;\n */\n triggeredBy: AutomationTrigger[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ServiceMetadata\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"reference\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"description\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"created_at\", kind: \"message\", T: Timestamp },\n { no: 5, name: \"creator\", kind: \"message\", T: Subject },\n { no: 6, name: \"triggered_by\", kind: \"message\", T: AutomationTrigger, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ServiceMetadata {\n return new ServiceMetadata().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ServiceMetadata {\n return new ServiceMetadata().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ServiceMetadata {\n return new ServiceMetadata().fromJsonString(jsonString, options);\n }\n\n static equals(a: ServiceMetadata | PlainMessage | undefined, b: ServiceMetadata | PlainMessage | undefined): boolean {\n return proto3.util.equals(ServiceMetadata, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ServiceSpec\n */\nexport class ServiceSpec extends Message {\n /**\n * version of the spec. The value of this field has no semantic\n * meaning (e.g. don't interpret it as as a timestamp),\n * but it can be used to impose a partial order. If a.spec_version <\n * b.spec_version then a was the spec before b.\n *\n * @generated from field: uint64 spec_version = 1;\n */\n specVersion = protoInt64.zero;\n\n /**\n * desired_phase is the phase the service should be in. Used to start or stop the service.\n *\n * @generated from field: gitpod.v1.ServicePhase desired_phase = 2;\n */\n desiredPhase = ServicePhase.UNSPECIFIED;\n\n /**\n * commands contains the commands to start, stop and check the readiness of the service\n *\n * @generated from field: gitpod.v1.ServiceSpec.Commands commands = 3;\n */\n commands?: ServiceSpec_Commands;\n\n /**\n * session should be changed to trigger a restart of the service. If a service exits it will\n * not be restarted until the session is changed.\n *\n * @generated from field: string session = 4;\n */\n session = \"\";\n\n /**\n * runs_on specifies the environment the service should run on.\n *\n * @generated from field: gitpod.v1.RunsOn runs_on = 5;\n */\n runsOn?: RunsOn;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ServiceSpec\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"spec_version\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */ },\n { no: 2, name: \"desired_phase\", kind: \"enum\", T: proto3.getEnumType(ServicePhase) },\n { no: 3, name: \"commands\", kind: \"message\", T: ServiceSpec_Commands },\n { no: 4, name: \"session\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"runs_on\", kind: \"message\", T: RunsOn },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ServiceSpec {\n return new ServiceSpec().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ServiceSpec {\n return new ServiceSpec().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ServiceSpec {\n return new ServiceSpec().fromJsonString(jsonString, options);\n }\n\n static equals(a: ServiceSpec | PlainMessage | undefined, b: ServiceSpec | PlainMessage | undefined): boolean {\n return proto3.util.equals(ServiceSpec, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ServiceSpec.Commands\n */\nexport class ServiceSpec_Commands extends Message {\n /**\n * start is the command to start and run the service.\n * If start exits, the service will transition to the following phase:\n * - Stopped: if the exit code is 0\n * - Failed: if the exit code is not 0\n * If the stop command is not set, the start command will receive a SIGTERM signal when the service is\n * requested to stop. If it does not exit within 2 minutes, it will receive a SIGKILL signal.\n *\n * @generated from field: string start = 1;\n */\n start = \"\";\n\n /**\n * ready is an optional command that is run repeatedly until it exits with a zero exit code.\n * If set, the service will first go into a Starting phase, and then into a Running phase once the ready\n * command exits with a zero exit code.\n *\n * @generated from field: string ready = 2;\n */\n ready = \"\";\n\n /**\n * stop is an optional command that runs when the service is requested to stop.\n * If set, instead of sending a SIGTERM signal to the start command, the stop command will be run.\n * Once the stop command exits, the start command will receive a SIGKILL signal.\n * If the stop command exits with a non-zero exit code, the service will transition to the Failed phase.\n * If the stop command does not exit within 2 minutes, a SIGKILL signal will be sent to both the start and\n * stop commands.\n *\n * @generated from field: string stop = 3;\n */\n stop = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ServiceSpec.Commands\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"start\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"ready\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"stop\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ServiceSpec_Commands {\n return new ServiceSpec_Commands().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ServiceSpec_Commands {\n return new ServiceSpec_Commands().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ServiceSpec_Commands {\n return new ServiceSpec_Commands().fromJsonString(jsonString, options);\n }\n\n static equals(a: ServiceSpec_Commands | PlainMessage | undefined, b: ServiceSpec_Commands | PlainMessage | undefined): boolean {\n return proto3.util.equals(ServiceSpec_Commands, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ServiceStatus\n */\nexport class ServiceStatus extends Message {\n /**\n * version of the status update. Service instances themselves are\n * unversioned, but their status has different versions. The value of this\n * field has no semantic meaning (e.g. don't interpret it as as a timestamp),\n * but it can be used to impose a partial order. If a.status_version <\n * b.status_version then a was the status before b.\n *\n * @generated from field: uint64 status_version = 1;\n */\n statusVersion = protoInt64.zero;\n\n /**\n * phase is the current phase of the service.\n *\n * @generated from field: gitpod.v1.ServicePhase phase = 2;\n */\n phase = ServicePhase.UNSPECIFIED;\n\n /**\n * failure_message summarises why the service failed to operate. If this is non-empty\n * the service has failed to operate and will likely transition to a failed state.\n *\n * @generated from field: string failure_message = 3;\n */\n failureMessage = \"\";\n\n /**\n * log_url contains the URL at which the service logs can be accessed.\n *\n * @generated from field: string log_url = 4;\n */\n logUrl = \"\";\n\n /**\n * session is the current session of the service.\n *\n * @generated from field: string session = 5;\n */\n session = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ServiceStatus\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"status_version\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */ },\n { no: 2, name: \"phase\", kind: \"enum\", T: proto3.getEnumType(ServicePhase) },\n { no: 3, name: \"failure_message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"log_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"session\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ServiceStatus {\n return new ServiceStatus().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ServiceStatus {\n return new ServiceStatus().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ServiceStatus {\n return new ServiceStatus().fromJsonString(jsonString, options);\n }\n\n static equals(a: ServiceStatus | PlainMessage | undefined, b: ServiceStatus | PlainMessage | undefined): boolean {\n return proto3.util.equals(ServiceStatus, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.Service\n */\nexport class Service extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: string environment_id = 2;\n */\n environmentId = \"\";\n\n /**\n * @generated from field: gitpod.v1.ServiceMetadata metadata = 3;\n */\n metadata?: ServiceMetadata;\n\n /**\n * @generated from field: gitpod.v1.ServiceSpec spec = 4;\n */\n spec?: ServiceSpec;\n\n /**\n * @generated from field: gitpod.v1.ServiceStatus status = 5;\n */\n status?: ServiceStatus;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.Service\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"metadata\", kind: \"message\", T: ServiceMetadata },\n { no: 4, name: \"spec\", kind: \"message\", T: ServiceSpec },\n { no: 5, name: \"status\", kind: \"message\", T: ServiceStatus },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): Service {\n return new Service().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): Service {\n return new Service().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): Service {\n return new Service().fromJsonString(jsonString, options);\n }\n\n static equals(a: Service | PlainMessage | undefined, b: Service | PlainMessage | undefined): boolean {\n return proto3.util.equals(Service, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateServiceRequest\n */\nexport class CreateServiceRequest extends Message {\n /**\n * @generated from field: string environment_id = 1;\n */\n environmentId = \"\";\n\n /**\n * @generated from field: gitpod.v1.ServiceMetadata metadata = 2;\n */\n metadata?: ServiceMetadata;\n\n /**\n * @generated from field: gitpod.v1.ServiceSpec spec = 3;\n */\n spec?: ServiceSpec;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateServiceRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"metadata\", kind: \"message\", T: ServiceMetadata },\n { no: 3, name: \"spec\", kind: \"message\", T: ServiceSpec },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateServiceRequest {\n return new CreateServiceRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateServiceRequest {\n return new CreateServiceRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateServiceRequest {\n return new CreateServiceRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateServiceRequest | PlainMessage | undefined, b: CreateServiceRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateServiceRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateServiceResponse\n */\nexport class CreateServiceResponse extends Message {\n /**\n * @generated from field: gitpod.v1.Service service = 1;\n */\n service?: Service;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateServiceResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"service\", kind: \"message\", T: Service },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateServiceResponse {\n return new CreateServiceResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateServiceResponse {\n return new CreateServiceResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateServiceResponse {\n return new CreateServiceResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateServiceResponse | PlainMessage | undefined, b: CreateServiceResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateServiceResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetServiceRequest\n */\nexport class GetServiceRequest extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetServiceRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetServiceRequest {\n return new GetServiceRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetServiceRequest {\n return new GetServiceRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetServiceRequest {\n return new GetServiceRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetServiceRequest | PlainMessage | undefined, b: GetServiceRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetServiceRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetServiceResponse\n */\nexport class GetServiceResponse extends Message {\n /**\n * @generated from field: gitpod.v1.Service service = 1;\n */\n service?: Service;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetServiceResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"service\", kind: \"message\", T: Service },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetServiceResponse {\n return new GetServiceResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetServiceResponse {\n return new GetServiceResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetServiceResponse {\n return new GetServiceResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetServiceResponse | PlainMessage | undefined, b: GetServiceResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetServiceResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListServicesRequest\n */\nexport class ListServicesRequest extends Message {\n /**\n * pagination contains the pagination options for listing services\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * filter contains the filter options for listing services\n *\n * @generated from field: gitpod.v1.ListServicesRequest.Filter filter = 2;\n */\n filter?: ListServicesRequest_Filter;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListServicesRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"filter\", kind: \"message\", T: ListServicesRequest_Filter },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListServicesRequest {\n return new ListServicesRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListServicesRequest {\n return new ListServicesRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListServicesRequest {\n return new ListServicesRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListServicesRequest | PlainMessage | undefined, b: ListServicesRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListServicesRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListServicesRequest.Filter\n */\nexport class ListServicesRequest_Filter extends Message {\n /**\n * environment_ids filters the response to only services of these environments\n *\n * @generated from field: repeated string environment_ids = 1;\n */\n environmentIds: string[] = [];\n\n /**\n * references filters the response to only services with these references\n *\n * @generated from field: repeated string references = 2;\n */\n references: string[] = [];\n\n /**\n * service_ids filters the response to only services with these IDs\n *\n * @generated from field: repeated string service_ids = 3;\n */\n serviceIds: string[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListServicesRequest.Filter\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 2, name: \"references\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 3, name: \"service_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListServicesRequest_Filter {\n return new ListServicesRequest_Filter().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListServicesRequest_Filter {\n return new ListServicesRequest_Filter().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListServicesRequest_Filter {\n return new ListServicesRequest_Filter().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListServicesRequest_Filter | PlainMessage | undefined, b: ListServicesRequest_Filter | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListServicesRequest_Filter, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListServicesResponse\n */\nexport class ListServicesResponse extends Message {\n /**\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * @generated from field: repeated gitpod.v1.Service services = 2;\n */\n services: Service[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListServicesResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"services\", kind: \"message\", T: Service, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListServicesResponse {\n return new ListServicesResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListServicesResponse {\n return new ListServicesResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListServicesResponse {\n return new ListServicesResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListServicesResponse | PlainMessage | undefined, b: ListServicesResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListServicesResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateServiceRequest\n */\nexport class UpdateServiceRequest extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: gitpod.v1.UpdateServiceRequest.ServiceMetadata metadata = 2;\n */\n metadata?: UpdateServiceRequest_ServiceMetadata;\n\n /**\n * Changing the spec of a service is a complex operation. The spec of a service\n * can only be updated if the service is in a stopped state. If the service is\n * running, it must be stopped first.\n *\n * @generated from field: gitpod.v1.UpdateServiceRequest.ServiceSpec spec = 3;\n */\n spec?: UpdateServiceRequest_ServiceSpec;\n\n /**\n * Service status updates are only expected from the executing environment. As a client\n * of this API you are not expected to provide this field. Updating this field requires\n * the `environmentservice:update_status` permission.\n *\n * @generated from field: gitpod.v1.UpdateServiceRequest.ServiceStatus status = 4;\n */\n status?: UpdateServiceRequest_ServiceStatus;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateServiceRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"metadata\", kind: \"message\", T: UpdateServiceRequest_ServiceMetadata },\n { no: 3, name: \"spec\", kind: \"message\", T: UpdateServiceRequest_ServiceSpec },\n { no: 4, name: \"status\", kind: \"message\", T: UpdateServiceRequest_ServiceStatus },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateServiceRequest {\n return new UpdateServiceRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateServiceRequest {\n return new UpdateServiceRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateServiceRequest {\n return new UpdateServiceRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateServiceRequest | PlainMessage | undefined, b: UpdateServiceRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateServiceRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateServiceRequest.AutomationTriggerUpdate\n */\nexport class UpdateServiceRequest_AutomationTriggerUpdate extends Message {\n /**\n * @generated from field: repeated gitpod.v1.AutomationTrigger trigger = 1;\n */\n trigger: AutomationTrigger[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateServiceRequest.AutomationTriggerUpdate\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"trigger\", kind: \"message\", T: AutomationTrigger, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateServiceRequest_AutomationTriggerUpdate {\n return new UpdateServiceRequest_AutomationTriggerUpdate().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateServiceRequest_AutomationTriggerUpdate {\n return new UpdateServiceRequest_AutomationTriggerUpdate().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateServiceRequest_AutomationTriggerUpdate {\n return new UpdateServiceRequest_AutomationTriggerUpdate().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateServiceRequest_AutomationTriggerUpdate | PlainMessage | undefined, b: UpdateServiceRequest_AutomationTriggerUpdate | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateServiceRequest_AutomationTriggerUpdate, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateServiceRequest.ServiceMetadata\n */\nexport class UpdateServiceRequest_ServiceMetadata extends Message {\n /**\n * @generated from field: optional string name = 1;\n */\n name?: string;\n\n /**\n * @generated from field: optional string description = 2;\n */\n description?: string;\n\n /**\n * @generated from field: optional gitpod.v1.UpdateServiceRequest.AutomationTriggerUpdate triggered_by = 3;\n */\n triggeredBy?: UpdateServiceRequest_AutomationTriggerUpdate;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateServiceRequest.ServiceMetadata\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 2, name: \"description\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"triggered_by\", kind: \"message\", T: UpdateServiceRequest_AutomationTriggerUpdate, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateServiceRequest_ServiceMetadata {\n return new UpdateServiceRequest_ServiceMetadata().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateServiceRequest_ServiceMetadata {\n return new UpdateServiceRequest_ServiceMetadata().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateServiceRequest_ServiceMetadata {\n return new UpdateServiceRequest_ServiceMetadata().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateServiceRequest_ServiceMetadata | PlainMessage | undefined, b: UpdateServiceRequest_ServiceMetadata | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateServiceRequest_ServiceMetadata, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateServiceRequest.ServiceSpec\n */\nexport class UpdateServiceRequest_ServiceSpec extends Message {\n /**\n * @generated from field: optional gitpod.v1.UpdateServiceRequest.ServiceSpec.Commands commands = 1;\n */\n commands?: UpdateServiceRequest_ServiceSpec_Commands;\n\n /**\n * @generated from field: optional gitpod.v1.RunsOn runs_on = 2;\n */\n runsOn?: RunsOn;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateServiceRequest.ServiceSpec\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"commands\", kind: \"message\", T: UpdateServiceRequest_ServiceSpec_Commands, opt: true },\n { no: 2, name: \"runs_on\", kind: \"message\", T: RunsOn, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateServiceRequest_ServiceSpec {\n return new UpdateServiceRequest_ServiceSpec().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateServiceRequest_ServiceSpec {\n return new UpdateServiceRequest_ServiceSpec().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateServiceRequest_ServiceSpec {\n return new UpdateServiceRequest_ServiceSpec().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateServiceRequest_ServiceSpec | PlainMessage | undefined, b: UpdateServiceRequest_ServiceSpec | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateServiceRequest_ServiceSpec, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateServiceRequest.ServiceSpec.Commands\n */\nexport class UpdateServiceRequest_ServiceSpec_Commands extends Message {\n /**\n * @generated from field: optional string start = 1;\n */\n start?: string;\n\n /**\n * @generated from field: optional string ready = 2;\n */\n ready?: string;\n\n /**\n * @generated from field: optional string stop = 3;\n */\n stop?: string;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateServiceRequest.ServiceSpec.Commands\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"start\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 2, name: \"ready\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"stop\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateServiceRequest_ServiceSpec_Commands {\n return new UpdateServiceRequest_ServiceSpec_Commands().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateServiceRequest_ServiceSpec_Commands {\n return new UpdateServiceRequest_ServiceSpec_Commands().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateServiceRequest_ServiceSpec_Commands {\n return new UpdateServiceRequest_ServiceSpec_Commands().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateServiceRequest_ServiceSpec_Commands | PlainMessage | undefined, b: UpdateServiceRequest_ServiceSpec_Commands | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateServiceRequest_ServiceSpec_Commands, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateServiceRequest.ServiceStatus\n */\nexport class UpdateServiceRequest_ServiceStatus extends Message {\n /**\n * @generated from field: optional gitpod.v1.ServicePhase phase = 1;\n */\n phase?: ServicePhase;\n\n /**\n * @generated from field: optional string failure_message = 2;\n */\n failureMessage?: string;\n\n /**\n * @generated from field: optional string log_url = 3;\n */\n logUrl?: string;\n\n /**\n * @generated from field: optional string session = 4;\n */\n session?: string;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateServiceRequest.ServiceStatus\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"phase\", kind: \"enum\", T: proto3.getEnumType(ServicePhase), opt: true },\n { no: 2, name: \"failure_message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"log_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 4, name: \"session\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateServiceRequest_ServiceStatus {\n return new UpdateServiceRequest_ServiceStatus().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateServiceRequest_ServiceStatus {\n return new UpdateServiceRequest_ServiceStatus().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateServiceRequest_ServiceStatus {\n return new UpdateServiceRequest_ServiceStatus().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateServiceRequest_ServiceStatus | PlainMessage | undefined, b: UpdateServiceRequest_ServiceStatus | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateServiceRequest_ServiceStatus, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateServiceResponse\n */\nexport class UpdateServiceResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateServiceResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateServiceResponse {\n return new UpdateServiceResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateServiceResponse {\n return new UpdateServiceResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateServiceResponse {\n return new UpdateServiceResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateServiceResponse | PlainMessage | undefined, b: UpdateServiceResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateServiceResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteServiceRequest\n */\nexport class DeleteServiceRequest extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: bool force = 2;\n */\n force = false;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteServiceRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"force\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteServiceRequest {\n return new DeleteServiceRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteServiceRequest {\n return new DeleteServiceRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteServiceRequest {\n return new DeleteServiceRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteServiceRequest | PlainMessage | undefined, b: DeleteServiceRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteServiceRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteServiceResponse\n */\nexport class DeleteServiceResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteServiceResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteServiceResponse {\n return new DeleteServiceResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteServiceResponse {\n return new DeleteServiceResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteServiceResponse {\n return new DeleteServiceResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteServiceResponse | PlainMessage | undefined, b: DeleteServiceResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteServiceResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.StartServiceRequest\n */\nexport class StartServiceRequest extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.StartServiceRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): StartServiceRequest {\n return new StartServiceRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): StartServiceRequest {\n return new StartServiceRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): StartServiceRequest {\n return new StartServiceRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: StartServiceRequest | PlainMessage | undefined, b: StartServiceRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(StartServiceRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.StartServiceResponse\n */\nexport class StartServiceResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.StartServiceResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): StartServiceResponse {\n return new StartServiceResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): StartServiceResponse {\n return new StartServiceResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): StartServiceResponse {\n return new StartServiceResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: StartServiceResponse | PlainMessage | undefined, b: StartServiceResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(StartServiceResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.StopServiceRequest\n */\nexport class StopServiceRequest extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.StopServiceRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): StopServiceRequest {\n return new StopServiceRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): StopServiceRequest {\n return new StopServiceRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): StopServiceRequest {\n return new StopServiceRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: StopServiceRequest | PlainMessage | undefined, b: StopServiceRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(StopServiceRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.StopServiceResponse\n */\nexport class StopServiceResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.StopServiceResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): StopServiceResponse {\n return new StopServiceResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): StopServiceResponse {\n return new StopServiceResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): StopServiceResponse {\n return new StopServiceResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: StopServiceResponse | PlainMessage | undefined, b: StopServiceResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(StopServiceResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpsertAutomationsFileRequest\n */\nexport class UpsertAutomationsFileRequest extends Message {\n /**\n * @generated from field: string environment_id = 1;\n */\n environmentId = \"\";\n\n /**\n * @generated from field: gitpod.v1.AutomationsFile automations_file = 2;\n */\n automationsFile?: AutomationsFile;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpsertAutomationsFileRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"automations_file\", kind: \"message\", T: AutomationsFile },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpsertAutomationsFileRequest {\n return new UpsertAutomationsFileRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpsertAutomationsFileRequest {\n return new UpsertAutomationsFileRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpsertAutomationsFileRequest {\n return new UpsertAutomationsFileRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpsertAutomationsFileRequest | PlainMessage | undefined, b: UpsertAutomationsFileRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpsertAutomationsFileRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpsertAutomationsFileResponse\n */\nexport class UpsertAutomationsFileResponse extends Message {\n /**\n * @generated from field: repeated string updated_service_ids = 1;\n */\n updatedServiceIds: string[] = [];\n\n /**\n * @generated from field: repeated string updated_task_ids = 2;\n */\n updatedTaskIds: string[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpsertAutomationsFileResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"updated_service_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 2, name: \"updated_task_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpsertAutomationsFileResponse {\n return new UpsertAutomationsFileResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpsertAutomationsFileResponse {\n return new UpsertAutomationsFileResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpsertAutomationsFileResponse {\n return new UpsertAutomationsFileResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpsertAutomationsFileResponse | PlainMessage | undefined, b: UpsertAutomationsFileResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpsertAutomationsFileResponse, a, b);\n }\n}\n\n/**\n * WARN: Do not remove any field here, as it will break reading automation yaml files. We error if there are any\n * unknown fields in the yaml (to ensure the yaml is correct), but would break if we removed any fields.\n * This includes marking a field as \"reserved\" in the proto file, this will also break reading the yaml.\n *\n * @generated from message gitpod.v1.AutomationsFile\n */\nexport class AutomationsFile extends Message {\n /**\n * @generated from field: map services = 1;\n */\n services: { [key: string]: AutomationsFile_Service } = {};\n\n /**\n * @generated from field: map tasks = 2;\n */\n tasks: { [key: string]: AutomationsFile_Task } = {};\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.AutomationsFile\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"services\", kind: \"map\", K: 9 /* ScalarType.STRING */, V: {kind: \"message\", T: AutomationsFile_Service} },\n { no: 2, name: \"tasks\", kind: \"map\", K: 9 /* ScalarType.STRING */, V: {kind: \"message\", T: AutomationsFile_Task} },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AutomationsFile {\n return new AutomationsFile().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AutomationsFile {\n return new AutomationsFile().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AutomationsFile {\n return new AutomationsFile().fromJsonString(jsonString, options);\n }\n\n static equals(a: AutomationsFile | PlainMessage | undefined, b: AutomationsFile | PlainMessage | undefined): boolean {\n return proto3.util.equals(AutomationsFile, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AutomationsFile.Service\n */\nexport class AutomationsFile_Service extends Message {\n /**\n * @generated from field: string name = 1;\n */\n name = \"\";\n\n /**\n * @generated from field: string description = 2;\n */\n description = \"\";\n\n /**\n * @generated from field: gitpod.v1.ServiceSpec.Commands commands = 3;\n */\n commands?: ServiceSpec_Commands;\n\n /**\n * @generated from field: repeated string triggered_by = 4;\n */\n triggeredBy: string[] = [];\n\n /**\n * @generated from field: gitpod.v1.RunsOn runs_on = 10;\n */\n runsOn?: RunsOn;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.AutomationsFile.Service\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"description\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"commands\", kind: \"message\", T: ServiceSpec_Commands },\n { no: 4, name: \"triggered_by\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 10, name: \"runs_on\", kind: \"message\", T: RunsOn },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AutomationsFile_Service {\n return new AutomationsFile_Service().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AutomationsFile_Service {\n return new AutomationsFile_Service().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AutomationsFile_Service {\n return new AutomationsFile_Service().fromJsonString(jsonString, options);\n }\n\n static equals(a: AutomationsFile_Service | PlainMessage | undefined, b: AutomationsFile_Service | PlainMessage | undefined): boolean {\n return proto3.util.equals(AutomationsFile_Service, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AutomationsFile.Task\n */\nexport class AutomationsFile_Task extends Message {\n /**\n * @generated from field: string name = 1;\n */\n name = \"\";\n\n /**\n * @generated from field: string description = 2;\n */\n description = \"\";\n\n /**\n * @generated from field: string command = 3;\n */\n command = \"\";\n\n /**\n * @generated from field: repeated string depends_on = 4;\n */\n dependsOn: string[] = [];\n\n /**\n * @generated from field: repeated string triggered_by = 5;\n */\n triggeredBy: string[] = [];\n\n /**\n * @generated from field: gitpod.v1.RunsOn runs_on = 10;\n */\n runsOn?: RunsOn;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.AutomationsFile.Task\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"description\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"command\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"depends_on\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 5, name: \"triggered_by\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 10, name: \"runs_on\", kind: \"message\", T: RunsOn },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AutomationsFile_Task {\n return new AutomationsFile_Task().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AutomationsFile_Task {\n return new AutomationsFile_Task().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AutomationsFile_Task {\n return new AutomationsFile_Task().fromJsonString(jsonString, options);\n }\n\n static equals(a: AutomationsFile_Task | PlainMessage | undefined, b: AutomationsFile_Task | PlainMessage | undefined): boolean {\n return proto3.util.equals(AutomationsFile_Task, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateTaskRequest\n */\nexport class CreateTaskRequest extends Message {\n /**\n * @generated from field: string environment_id = 1;\n */\n environmentId = \"\";\n\n /**\n * @generated from field: gitpod.v1.TaskMetadata metadata = 2;\n */\n metadata?: TaskMetadata;\n\n /**\n * @generated from field: gitpod.v1.TaskSpec spec = 3;\n */\n spec?: TaskSpec;\n\n /**\n * @generated from field: repeated string depends_on = 4;\n */\n dependsOn: string[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateTaskRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"metadata\", kind: \"message\", T: TaskMetadata },\n { no: 3, name: \"spec\", kind: \"message\", T: TaskSpec },\n { no: 4, name: \"depends_on\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateTaskRequest {\n return new CreateTaskRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateTaskRequest {\n return new CreateTaskRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateTaskRequest {\n return new CreateTaskRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateTaskRequest | PlainMessage | undefined, b: CreateTaskRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateTaskRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateTaskResponse\n */\nexport class CreateTaskResponse extends Message {\n /**\n * @generated from field: gitpod.v1.Task task = 1;\n */\n task?: Task;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateTaskResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"task\", kind: \"message\", T: Task },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateTaskResponse {\n return new CreateTaskResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateTaskResponse {\n return new CreateTaskResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateTaskResponse {\n return new CreateTaskResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateTaskResponse | PlainMessage | undefined, b: CreateTaskResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateTaskResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetTaskRequest\n */\nexport class GetTaskRequest extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetTaskRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetTaskRequest {\n return new GetTaskRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetTaskRequest {\n return new GetTaskRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetTaskRequest {\n return new GetTaskRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetTaskRequest | PlainMessage | undefined, b: GetTaskRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetTaskRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetTaskResponse\n */\nexport class GetTaskResponse extends Message {\n /**\n * @generated from field: gitpod.v1.Task task = 1;\n */\n task?: Task;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetTaskResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"task\", kind: \"message\", T: Task },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetTaskResponse {\n return new GetTaskResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetTaskResponse {\n return new GetTaskResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetTaskResponse {\n return new GetTaskResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetTaskResponse | PlainMessage | undefined, b: GetTaskResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetTaskResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListTasksRequest\n */\nexport class ListTasksRequest extends Message {\n /**\n * pagination contains the pagination options for listing tasks\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * filter contains the filter options for listing tasks\n *\n * @generated from field: gitpod.v1.ListTasksRequest.Filter filter = 2;\n */\n filter?: ListTasksRequest_Filter;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListTasksRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"filter\", kind: \"message\", T: ListTasksRequest_Filter },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListTasksRequest {\n return new ListTasksRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListTasksRequest {\n return new ListTasksRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListTasksRequest {\n return new ListTasksRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListTasksRequest | PlainMessage | undefined, b: ListTasksRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListTasksRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListTasksRequest.Filter\n */\nexport class ListTasksRequest_Filter extends Message {\n /**\n * environment_ids filters the response to only tasks of these environments\n *\n * @generated from field: repeated string environment_ids = 1;\n */\n environmentIds: string[] = [];\n\n /**\n * references filters the response to only services with these references\n *\n * @generated from field: repeated string references = 2;\n */\n references: string[] = [];\n\n /**\n * task_ids filters the response to only tasks with these IDs\n *\n * @generated from field: repeated string task_ids = 3;\n */\n taskIds: string[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListTasksRequest.Filter\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 2, name: \"references\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 3, name: \"task_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListTasksRequest_Filter {\n return new ListTasksRequest_Filter().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListTasksRequest_Filter {\n return new ListTasksRequest_Filter().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListTasksRequest_Filter {\n return new ListTasksRequest_Filter().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListTasksRequest_Filter | PlainMessage | undefined, b: ListTasksRequest_Filter | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListTasksRequest_Filter, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListTasksResponse\n */\nexport class ListTasksResponse extends Message {\n /**\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * @generated from field: repeated gitpod.v1.Task tasks = 2;\n */\n tasks: Task[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListTasksResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"tasks\", kind: \"message\", T: Task, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListTasksResponse {\n return new ListTasksResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListTasksResponse {\n return new ListTasksResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListTasksResponse {\n return new ListTasksResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListTasksResponse | PlainMessage | undefined, b: ListTasksResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListTasksResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateTaskRequest\n */\nexport class UpdateTaskRequest extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: gitpod.v1.UpdateTaskRequest.TaskMetadata metadata = 2;\n */\n metadata?: UpdateTaskRequest_TaskMetadata;\n\n /**\n * @generated from field: gitpod.v1.UpdateTaskRequest.TaskSpec spec = 3;\n */\n spec?: UpdateTaskRequest_TaskSpec;\n\n /**\n * dependencies specifies the IDs of the automations this task depends on.\n *\n * @generated from field: repeated string depends_on = 4;\n */\n dependsOn: string[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateTaskRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"metadata\", kind: \"message\", T: UpdateTaskRequest_TaskMetadata },\n { no: 3, name: \"spec\", kind: \"message\", T: UpdateTaskRequest_TaskSpec },\n { no: 4, name: \"depends_on\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateTaskRequest {\n return new UpdateTaskRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateTaskRequest {\n return new UpdateTaskRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateTaskRequest {\n return new UpdateTaskRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateTaskRequest | PlainMessage | undefined, b: UpdateTaskRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateTaskRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateTaskRequest.AutomationTriggerUpdate\n */\nexport class UpdateTaskRequest_AutomationTriggerUpdate extends Message {\n /**\n * @generated from field: repeated gitpod.v1.AutomationTrigger trigger = 1;\n */\n trigger: AutomationTrigger[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateTaskRequest.AutomationTriggerUpdate\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"trigger\", kind: \"message\", T: AutomationTrigger, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateTaskRequest_AutomationTriggerUpdate {\n return new UpdateTaskRequest_AutomationTriggerUpdate().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateTaskRequest_AutomationTriggerUpdate {\n return new UpdateTaskRequest_AutomationTriggerUpdate().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateTaskRequest_AutomationTriggerUpdate {\n return new UpdateTaskRequest_AutomationTriggerUpdate().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateTaskRequest_AutomationTriggerUpdate | PlainMessage | undefined, b: UpdateTaskRequest_AutomationTriggerUpdate | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateTaskRequest_AutomationTriggerUpdate, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateTaskRequest.TaskMetadata\n */\nexport class UpdateTaskRequest_TaskMetadata extends Message {\n /**\n * @generated from field: optional string name = 1;\n */\n name?: string;\n\n /**\n * @generated from field: optional string description = 2;\n */\n description?: string;\n\n /**\n * @generated from field: optional gitpod.v1.UpdateTaskRequest.AutomationTriggerUpdate triggered_by = 3;\n */\n triggeredBy?: UpdateTaskRequest_AutomationTriggerUpdate;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateTaskRequest.TaskMetadata\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 2, name: \"description\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"triggered_by\", kind: \"message\", T: UpdateTaskRequest_AutomationTriggerUpdate, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateTaskRequest_TaskMetadata {\n return new UpdateTaskRequest_TaskMetadata().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateTaskRequest_TaskMetadata {\n return new UpdateTaskRequest_TaskMetadata().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateTaskRequest_TaskMetadata {\n return new UpdateTaskRequest_TaskMetadata().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateTaskRequest_TaskMetadata | PlainMessage | undefined, b: UpdateTaskRequest_TaskMetadata | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateTaskRequest_TaskMetadata, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateTaskRequest.TaskSpec\n */\nexport class UpdateTaskRequest_TaskSpec extends Message {\n /**\n * @generated from field: optional string command = 1;\n */\n command?: string;\n\n /**\n * @generated from field: optional gitpod.v1.RunsOn runs_on = 2;\n */\n runsOn?: RunsOn;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateTaskRequest.TaskSpec\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"command\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 2, name: \"runs_on\", kind: \"message\", T: RunsOn, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateTaskRequest_TaskSpec {\n return new UpdateTaskRequest_TaskSpec().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateTaskRequest_TaskSpec {\n return new UpdateTaskRequest_TaskSpec().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateTaskRequest_TaskSpec {\n return new UpdateTaskRequest_TaskSpec().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateTaskRequest_TaskSpec | PlainMessage | undefined, b: UpdateTaskRequest_TaskSpec | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateTaskRequest_TaskSpec, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateTaskResponse\n */\nexport class UpdateTaskResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateTaskResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateTaskResponse {\n return new UpdateTaskResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateTaskResponse {\n return new UpdateTaskResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateTaskResponse {\n return new UpdateTaskResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateTaskResponse | PlainMessage | undefined, b: UpdateTaskResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateTaskResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteTaskRequest\n */\nexport class DeleteTaskRequest extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteTaskRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteTaskRequest {\n return new DeleteTaskRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteTaskRequest {\n return new DeleteTaskRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteTaskRequest {\n return new DeleteTaskRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteTaskRequest | PlainMessage | undefined, b: DeleteTaskRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteTaskRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteTaskResponse\n */\nexport class DeleteTaskResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteTaskResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteTaskResponse {\n return new DeleteTaskResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteTaskResponse {\n return new DeleteTaskResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteTaskResponse {\n return new DeleteTaskResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteTaskResponse | PlainMessage | undefined, b: DeleteTaskResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteTaskResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.StartTaskRequest\n */\nexport class StartTaskRequest extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.StartTaskRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): StartTaskRequest {\n return new StartTaskRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): StartTaskRequest {\n return new StartTaskRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): StartTaskRequest {\n return new StartTaskRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: StartTaskRequest | PlainMessage | undefined, b: StartTaskRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(StartTaskRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.StartTaskResponse\n */\nexport class StartTaskResponse extends Message {\n /**\n * @generated from field: gitpod.v1.TaskExecution task_execution = 1;\n */\n taskExecution?: TaskExecution;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.StartTaskResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"task_execution\", kind: \"message\", T: TaskExecution },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): StartTaskResponse {\n return new StartTaskResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): StartTaskResponse {\n return new StartTaskResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): StartTaskResponse {\n return new StartTaskResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: StartTaskResponse | PlainMessage | undefined, b: StartTaskResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(StartTaskResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListTaskExecutionsRequest\n */\nexport class ListTaskExecutionsRequest extends Message {\n /**\n * pagination contains the pagination options for listing task runs\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * filter contains the filter options for listing task runs\n *\n * @generated from field: gitpod.v1.ListTaskExecutionsRequest.Filter filter = 2;\n */\n filter?: ListTaskExecutionsRequest_Filter;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListTaskExecutionsRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"filter\", kind: \"message\", T: ListTaskExecutionsRequest_Filter },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListTaskExecutionsRequest {\n return new ListTaskExecutionsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListTaskExecutionsRequest {\n return new ListTaskExecutionsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListTaskExecutionsRequest {\n return new ListTaskExecutionsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListTaskExecutionsRequest | PlainMessage | undefined, b: ListTaskExecutionsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListTaskExecutionsRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListTaskExecutionsRequest.Filter\n */\nexport class ListTaskExecutionsRequest_Filter extends Message {\n /**\n * task_ids filters the response to only task runs of these tasks\n *\n * @generated from field: repeated string task_ids = 1;\n */\n taskIds: string[] = [];\n\n /**\n * task_references filters the response to only task runs with this reference\n *\n * @generated from field: repeated string task_references = 2;\n */\n taskReferences: string[] = [];\n\n /**\n * environment_ids filters the response to only task runs of these environments\n *\n * @generated from field: repeated string environment_ids = 3;\n */\n environmentIds: string[] = [];\n\n /**\n * phases filters the response to only task runs in these phases\n *\n * @generated from field: repeated gitpod.v1.TaskExecutionPhase phases = 4;\n */\n phases: TaskExecutionPhase[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListTaskExecutionsRequest.Filter\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"task_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 2, name: \"task_references\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 3, name: \"environment_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 4, name: \"phases\", kind: \"enum\", T: proto3.getEnumType(TaskExecutionPhase), repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListTaskExecutionsRequest_Filter {\n return new ListTaskExecutionsRequest_Filter().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListTaskExecutionsRequest_Filter {\n return new ListTaskExecutionsRequest_Filter().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListTaskExecutionsRequest_Filter {\n return new ListTaskExecutionsRequest_Filter().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListTaskExecutionsRequest_Filter | PlainMessage | undefined, b: ListTaskExecutionsRequest_Filter | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListTaskExecutionsRequest_Filter, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListTaskExecutionsResponse\n */\nexport class ListTaskExecutionsResponse extends Message {\n /**\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * @generated from field: repeated gitpod.v1.TaskExecution task_executions = 2;\n */\n taskExecutions: TaskExecution[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListTaskExecutionsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"task_executions\", kind: \"message\", T: TaskExecution, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListTaskExecutionsResponse {\n return new ListTaskExecutionsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListTaskExecutionsResponse {\n return new ListTaskExecutionsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListTaskExecutionsResponse {\n return new ListTaskExecutionsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListTaskExecutionsResponse | PlainMessage | undefined, b: ListTaskExecutionsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListTaskExecutionsResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetTaskExecutionRequest\n */\nexport class GetTaskExecutionRequest extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetTaskExecutionRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetTaskExecutionRequest {\n return new GetTaskExecutionRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetTaskExecutionRequest {\n return new GetTaskExecutionRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetTaskExecutionRequest {\n return new GetTaskExecutionRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetTaskExecutionRequest | PlainMessage | undefined, b: GetTaskExecutionRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetTaskExecutionRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetTaskExecutionResponse\n */\nexport class GetTaskExecutionResponse extends Message {\n /**\n * @generated from field: gitpod.v1.TaskExecution task_execution = 1;\n */\n taskExecution?: TaskExecution;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetTaskExecutionResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"task_execution\", kind: \"message\", T: TaskExecution },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetTaskExecutionResponse {\n return new GetTaskExecutionResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetTaskExecutionResponse {\n return new GetTaskExecutionResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetTaskExecutionResponse {\n return new GetTaskExecutionResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetTaskExecutionResponse | PlainMessage | undefined, b: GetTaskExecutionResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetTaskExecutionResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.StopTaskExecutionRequest\n */\nexport class StopTaskExecutionRequest extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.StopTaskExecutionRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): StopTaskExecutionRequest {\n return new StopTaskExecutionRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): StopTaskExecutionRequest {\n return new StopTaskExecutionRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): StopTaskExecutionRequest {\n return new StopTaskExecutionRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: StopTaskExecutionRequest | PlainMessage | undefined, b: StopTaskExecutionRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(StopTaskExecutionRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.StopTaskExecutionResponse\n */\nexport class StopTaskExecutionResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.StopTaskExecutionResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): StopTaskExecutionResponse {\n return new StopTaskExecutionResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): StopTaskExecutionResponse {\n return new StopTaskExecutionResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): StopTaskExecutionResponse {\n return new StopTaskExecutionResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: StopTaskExecutionResponse | PlainMessage | undefined, b: StopTaskExecutionResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(StopTaskExecutionResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateTaskExecutionStatusRequest\n */\nexport class UpdateTaskExecutionStatusRequest extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: repeated gitpod.v1.TaskExecutionStatus.Step steps = 2;\n */\n steps: TaskExecutionStatus_Step[] = [];\n\n /**\n * failure_message marks the task execution as failed and provides a message explaining the failure.\n * If an individual step has failed, callers are NOT expected to set this message; only if the task execution as a whole has failed/cannot be started.\n *\n * @generated from field: optional string failure_message = 3;\n */\n failureMessage?: string;\n\n /**\n * log_url is the URL to the logs of the task's steps. If this is empty, the task either has no logs or has not yet started.\n *\n * @generated from field: optional string log_url = 4;\n */\n logUrl?: string;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateTaskExecutionStatusRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"steps\", kind: \"message\", T: TaskExecutionStatus_Step, repeated: true },\n { no: 3, name: \"failure_message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 4, name: \"log_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateTaskExecutionStatusRequest {\n return new UpdateTaskExecutionStatusRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateTaskExecutionStatusRequest {\n return new UpdateTaskExecutionStatusRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateTaskExecutionStatusRequest {\n return new UpdateTaskExecutionStatusRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateTaskExecutionStatusRequest | PlainMessage | undefined, b: UpdateTaskExecutionStatusRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateTaskExecutionStatusRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateTaskExecutionStatusResponse\n */\nexport class UpdateTaskExecutionStatusResponse extends Message {\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateTaskExecutionStatusResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateTaskExecutionStatusResponse {\n return new UpdateTaskExecutionStatusResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateTaskExecutionStatusResponse {\n return new UpdateTaskExecutionStatusResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateTaskExecutionStatusResponse {\n return new UpdateTaskExecutionStatusResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateTaskExecutionStatusResponse | PlainMessage | undefined, b: UpdateTaskExecutionStatusResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateTaskExecutionStatusResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.TaskMetadata\n */\nexport class TaskMetadata extends Message {\n /**\n * reference is a user-facing identifier for the task which must be unique on the environment.\n * It is used to express dependencies between tasks, and to identify the task in user interactions (e.g. the CLI).\n *\n * @generated from field: string reference = 1;\n */\n reference = \"\";\n\n /**\n * name is a user-facing name for the task. Unlike the reference, this field is not unique, and not referenced by the system.\n * This is a short descriptive name for the task.\n *\n * @generated from field: string name = 2;\n */\n name = \"\";\n\n /**\n * description is a user-facing description for the task. It can be used to provide context and documentation for the task.\n *\n * @generated from field: string description = 3;\n */\n description = \"\";\n\n /**\n * created_at is the time the task was created.\n *\n * @generated from field: google.protobuf.Timestamp created_at = 4;\n */\n createdAt?: Timestamp;\n\n /**\n * creator describes the principal who created the task.\n *\n * @generated from field: gitpod.v1.Subject creator = 5;\n */\n creator?: Subject;\n\n /**\n * triggered_by is a list of trigger that start the task.\n *\n * @generated from field: repeated gitpod.v1.AutomationTrigger triggered_by = 6;\n */\n triggeredBy: AutomationTrigger[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.TaskMetadata\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"reference\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"description\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"created_at\", kind: \"message\", T: Timestamp },\n { no: 5, name: \"creator\", kind: \"message\", T: Subject },\n { no: 6, name: \"triggered_by\", kind: \"message\", T: AutomationTrigger, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): TaskMetadata {\n return new TaskMetadata().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): TaskMetadata {\n return new TaskMetadata().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): TaskMetadata {\n return new TaskMetadata().fromJsonString(jsonString, options);\n }\n\n static equals(a: TaskMetadata | PlainMessage | undefined, b: TaskMetadata | PlainMessage | undefined): boolean {\n return proto3.util.equals(TaskMetadata, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.TaskSpec\n */\nexport class TaskSpec extends Message {\n /**\n * command contains the command the task should execute\n *\n * @generated from field: string command = 1;\n */\n command = \"\";\n\n /**\n * runs_on specifies the environment the task should run on.\n *\n * @generated from field: gitpod.v1.RunsOn runs_on = 2;\n */\n runsOn?: RunsOn;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.TaskSpec\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"command\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"runs_on\", kind: \"message\", T: RunsOn },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): TaskSpec {\n return new TaskSpec().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): TaskSpec {\n return new TaskSpec().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): TaskSpec {\n return new TaskSpec().fromJsonString(jsonString, options);\n }\n\n static equals(a: TaskSpec | PlainMessage | undefined, b: TaskSpec | PlainMessage | undefined): boolean {\n return proto3.util.equals(TaskSpec, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.Task\n */\nexport class Task extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: string environment_id = 2;\n */\n environmentId = \"\";\n\n /**\n * @generated from field: gitpod.v1.TaskMetadata metadata = 3;\n */\n metadata?: TaskMetadata;\n\n /**\n * @generated from field: gitpod.v1.TaskSpec spec = 4;\n */\n spec?: TaskSpec;\n\n /**\n * dependencies specifies the IDs of the automations this task depends on.\n *\n * @generated from field: repeated string depends_on = 5;\n */\n dependsOn: string[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.Task\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"metadata\", kind: \"message\", T: TaskMetadata },\n { no: 4, name: \"spec\", kind: \"message\", T: TaskSpec },\n { no: 5, name: \"depends_on\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): Task {\n return new Task().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): Task {\n return new Task().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): Task {\n return new Task().fromJsonString(jsonString, options);\n }\n\n static equals(a: Task | PlainMessage | undefined, b: Task | PlainMessage | undefined): boolean {\n return proto3.util.equals(Task, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.RunsOn\n */\nexport class RunsOn extends Message {\n /**\n * @generated from oneof gitpod.v1.RunsOn.target\n */\n target: {\n /**\n * @generated from field: gitpod.v1.RunsOn.Docker docker = 10;\n */\n value: RunsOn_Docker;\n case: \"docker\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.RunsOn\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 10, name: \"docker\", kind: \"message\", T: RunsOn_Docker, oneof: \"target\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunsOn {\n return new RunsOn().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunsOn {\n return new RunsOn().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunsOn {\n return new RunsOn().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunsOn | PlainMessage | undefined, b: RunsOn | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunsOn, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.RunsOn.Docker\n */\nexport class RunsOn_Docker extends Message {\n /**\n * @generated from field: string image = 1;\n */\n image = \"\";\n\n /**\n * @generated from field: repeated string environment = 2;\n */\n environment: string[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.RunsOn.Docker\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"image\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"environment\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunsOn_Docker {\n return new RunsOn_Docker().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunsOn_Docker {\n return new RunsOn_Docker().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunsOn_Docker {\n return new RunsOn_Docker().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunsOn_Docker | PlainMessage | undefined, b: RunsOn_Docker | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunsOn_Docker, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.TaskExecution\n */\nexport class TaskExecution extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: gitpod.v1.TaskExecutionMetadata metadata = 2;\n */\n metadata?: TaskExecutionMetadata;\n\n /**\n * @generated from field: gitpod.v1.TaskExecutionSpec spec = 3;\n */\n spec?: TaskExecutionSpec;\n\n /**\n * @generated from field: gitpod.v1.TaskExecutionStatus status = 4;\n */\n status?: TaskExecutionStatus;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.TaskExecution\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"metadata\", kind: \"message\", T: TaskExecutionMetadata },\n { no: 3, name: \"spec\", kind: \"message\", T: TaskExecutionSpec },\n { no: 4, name: \"status\", kind: \"message\", T: TaskExecutionStatus },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): TaskExecution {\n return new TaskExecution().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): TaskExecution {\n return new TaskExecution().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): TaskExecution {\n return new TaskExecution().fromJsonString(jsonString, options);\n }\n\n static equals(a: TaskExecution | PlainMessage | undefined, b: TaskExecution | PlainMessage | undefined): boolean {\n return proto3.util.equals(TaskExecution, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.TaskExecutionMetadata\n */\nexport class TaskExecutionMetadata extends Message {\n /**\n * task_id is the ID of the main task being executed.\n *\n * @generated from field: string task_id = 1;\n */\n taskId = \"\";\n\n /**\n * environment_id is the ID of the environment in which the task run is executed.\n *\n * @generated from field: string environment_id = 2;\n */\n environmentId = \"\";\n\n /**\n * created_at is the time the task was created.\n *\n * @generated from field: google.protobuf.Timestamp created_at = 3;\n */\n createdAt?: Timestamp;\n\n /**\n * creator describes the principal who created/started the task run.\n *\n * @generated from field: gitpod.v1.Subject creator = 4;\n */\n creator?: Subject;\n\n /**\n * started_by describes the trigger that started the task execution.\n *\n * @generated from field: string started_by = 6;\n */\n startedBy = \"\";\n\n /**\n * started_at is the time the task execution actually started to run.\n *\n * @generated from field: google.protobuf.Timestamp started_at = 7;\n */\n startedAt?: Timestamp;\n\n /**\n * completed_at is the time the task execution was done.\n *\n * @generated from field: google.protobuf.Timestamp completed_at = 8;\n */\n completedAt?: Timestamp;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.TaskExecutionMetadata\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"task_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"created_at\", kind: \"message\", T: Timestamp },\n { no: 4, name: \"creator\", kind: \"message\", T: Subject },\n { no: 6, name: \"started_by\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 7, name: \"started_at\", kind: \"message\", T: Timestamp },\n { no: 8, name: \"completed_at\", kind: \"message\", T: Timestamp },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): TaskExecutionMetadata {\n return new TaskExecutionMetadata().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): TaskExecutionMetadata {\n return new TaskExecutionMetadata().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): TaskExecutionMetadata {\n return new TaskExecutionMetadata().fromJsonString(jsonString, options);\n }\n\n static equals(a: TaskExecutionMetadata | PlainMessage | undefined, b: TaskExecutionMetadata | PlainMessage | undefined): boolean {\n return proto3.util.equals(TaskExecutionMetadata, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.TaskExecutionSpec\n */\nexport class TaskExecutionSpec extends Message {\n /**\n * plan is a list of groups of steps. The steps in a group are executed concurrently, while the groups are executed sequentially.\n * The order of the groups is the order in which they are executed.\n *\n * @generated from field: repeated gitpod.v1.TaskExecutionSpec.Group plan = 1;\n */\n plan: TaskExecutionSpec_Group[] = [];\n\n /**\n * desired_phase is the phase the task execution should be in. Used to stop a running task execution early.\n *\n * @generated from field: gitpod.v1.TaskExecutionPhase desired_phase = 2;\n */\n desiredPhase = TaskExecutionPhase.UNSPECIFIED;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.TaskExecutionSpec\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"plan\", kind: \"message\", T: TaskExecutionSpec_Group, repeated: true },\n { no: 2, name: \"desired_phase\", kind: \"enum\", T: proto3.getEnumType(TaskExecutionPhase) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): TaskExecutionSpec {\n return new TaskExecutionSpec().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): TaskExecutionSpec {\n return new TaskExecutionSpec().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): TaskExecutionSpec {\n return new TaskExecutionSpec().fromJsonString(jsonString, options);\n }\n\n static equals(a: TaskExecutionSpec | PlainMessage | undefined, b: TaskExecutionSpec | PlainMessage | undefined): boolean {\n return proto3.util.equals(TaskExecutionSpec, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.TaskExecutionSpec.Task\n */\nexport class TaskExecutionSpec_Task extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: gitpod.v1.TaskSpec spec = 2;\n */\n spec?: TaskSpec;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.TaskExecutionSpec.Task\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"spec\", kind: \"message\", T: TaskSpec },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): TaskExecutionSpec_Task {\n return new TaskExecutionSpec_Task().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): TaskExecutionSpec_Task {\n return new TaskExecutionSpec_Task().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): TaskExecutionSpec_Task {\n return new TaskExecutionSpec_Task().fromJsonString(jsonString, options);\n }\n\n static equals(a: TaskExecutionSpec_Task | PlainMessage | undefined, b: TaskExecutionSpec_Task | PlainMessage | undefined): boolean {\n return proto3.util.equals(TaskExecutionSpec_Task, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.TaskExecutionSpec.Step\n */\nexport class TaskExecutionSpec_Step extends Message {\n /**\n * ID is the ID of the execution step\n *\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: repeated string depends_on = 2;\n */\n dependsOn: string[] = [];\n\n /**\n * @generated from field: string label = 3;\n */\n label = \"\";\n\n /**\n * @generated from oneof gitpod.v1.TaskExecutionSpec.Step.step\n */\n step: {\n /**\n * @generated from field: gitpod.v1.TaskExecutionSpec.Task task = 10;\n */\n value: TaskExecutionSpec_Task;\n case: \"task\";\n } | {\n /**\n * @generated from field: string service_id = 11;\n */\n value: string;\n case: \"serviceId\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.TaskExecutionSpec.Step\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"depends_on\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 3, name: \"label\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 10, name: \"task\", kind: \"message\", T: TaskExecutionSpec_Task, oneof: \"step\" },\n { no: 11, name: \"service_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"step\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): TaskExecutionSpec_Step {\n return new TaskExecutionSpec_Step().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): TaskExecutionSpec_Step {\n return new TaskExecutionSpec_Step().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): TaskExecutionSpec_Step {\n return new TaskExecutionSpec_Step().fromJsonString(jsonString, options);\n }\n\n static equals(a: TaskExecutionSpec_Step | PlainMessage | undefined, b: TaskExecutionSpec_Step | PlainMessage | undefined): boolean {\n return proto3.util.equals(TaskExecutionSpec_Step, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.TaskExecutionSpec.Group\n */\nexport class TaskExecutionSpec_Group extends Message {\n /**\n * @generated from field: repeated gitpod.v1.TaskExecutionSpec.Step steps = 1;\n */\n steps: TaskExecutionSpec_Step[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.TaskExecutionSpec.Group\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"steps\", kind: \"message\", T: TaskExecutionSpec_Step, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): TaskExecutionSpec_Group {\n return new TaskExecutionSpec_Group().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): TaskExecutionSpec_Group {\n return new TaskExecutionSpec_Group().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): TaskExecutionSpec_Group {\n return new TaskExecutionSpec_Group().fromJsonString(jsonString, options);\n }\n\n static equals(a: TaskExecutionSpec_Group | PlainMessage | undefined, b: TaskExecutionSpec_Group | PlainMessage | undefined): boolean {\n return proto3.util.equals(TaskExecutionSpec_Group, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.TaskExecutionStatus\n */\nexport class TaskExecutionStatus extends Message {\n /**\n * version of the status update. Task executions themselves are\n * unversioned, but their status has different versions. The value of this\n * field has no semantic meaning (e.g. don't interpret it as as a timestamp),\n * but it can be used to impose a partial order. If a.status_version <\n * b.status_version then a was the status before b.\n *\n * @generated from field: uint64 status_version = 1;\n */\n statusVersion = protoInt64.zero;\n\n /**\n * the phase of a task execution represents the aggregated phase of all steps.\n *\n * @generated from field: gitpod.v1.TaskExecutionPhase phase = 2;\n */\n phase = TaskExecutionPhase.UNSPECIFIED;\n\n /**\n * failure_message summarises why the task execution failed to operate. If this is non-empty\n * the task execution has failed to operate and will likely transition to a failed state.\n *\n * @generated from field: string failure_message = 3;\n */\n failureMessage = \"\";\n\n /**\n * steps provides the status for each individual step of the task execution. If a step is missing it\n * has not yet started.\n *\n * @generated from field: repeated gitpod.v1.TaskExecutionStatus.Step steps = 4;\n */\n steps: TaskExecutionStatus_Step[] = [];\n\n /**\n * log_url is the URL to the logs of the task's steps. If this is empty, the task either has no logs\n * or has not yet started.\n *\n * @generated from field: string log_url = 5;\n */\n logUrl = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.TaskExecutionStatus\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"status_version\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */ },\n { no: 2, name: \"phase\", kind: \"enum\", T: proto3.getEnumType(TaskExecutionPhase) },\n { no: 3, name: \"failure_message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"steps\", kind: \"message\", T: TaskExecutionStatus_Step, repeated: true },\n { no: 5, name: \"log_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): TaskExecutionStatus {\n return new TaskExecutionStatus().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): TaskExecutionStatus {\n return new TaskExecutionStatus().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): TaskExecutionStatus {\n return new TaskExecutionStatus().fromJsonString(jsonString, options);\n }\n\n static equals(a: TaskExecutionStatus | PlainMessage | undefined, b: TaskExecutionStatus | PlainMessage | undefined): boolean {\n return proto3.util.equals(TaskExecutionStatus, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.TaskExecutionStatus.Step\n */\nexport class TaskExecutionStatus_Step extends Message {\n /**\n * ID is the ID of the execution step\n *\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * phase is the current phase of the execution step\n *\n * @generated from field: gitpod.v1.TaskExecutionPhase phase = 2;\n */\n phase = TaskExecutionPhase.UNSPECIFIED;\n\n /**\n * failure_message summarises why the step failed to operate. If this is non-empty\n * the step has failed to operate and will likely transition to a failed state.\n *\n * @generated from field: string failure_message = 3;\n */\n failureMessage = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.TaskExecutionStatus.Step\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"phase\", kind: \"enum\", T: proto3.getEnumType(TaskExecutionPhase) },\n { no: 3, name: \"failure_message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): TaskExecutionStatus_Step {\n return new TaskExecutionStatus_Step().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): TaskExecutionStatus_Step {\n return new TaskExecutionStatus_Step().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): TaskExecutionStatus_Step {\n return new TaskExecutionStatus_Step().fromJsonString(jsonString, options);\n }\n\n static equals(a: TaskExecutionStatus_Step | PlainMessage | undefined, b: TaskExecutionStatus_Step | PlainMessage | undefined): boolean {\n return proto3.util.equals(TaskExecutionStatus_Step, a, b);\n }\n}\n\n/**\n * An AutomationTrigger represents a trigger for an automation action.\n * The `post_environment_start` field indicates that the automation should be triggered after the environment has started.\n * The `post_devcontainer_start` field indicates that the automation should be triggered after the dev container has started.\n *\n * @generated from message gitpod.v1.AutomationTrigger\n */\nexport class AutomationTrigger extends Message {\n /**\n * @generated from oneof gitpod.v1.AutomationTrigger.trigger\n */\n trigger: {\n /**\n * @generated from field: bool manual = 1;\n */\n value: boolean;\n case: \"manual\";\n } | {\n /**\n * @generated from field: bool post_environment_start = 10;\n */\n value: boolean;\n case: \"postEnvironmentStart\";\n } | {\n /**\n * @generated from field: bool post_devcontainer_start = 20;\n */\n value: boolean;\n case: \"postDevcontainerStart\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.AutomationTrigger\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"manual\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, oneof: \"trigger\" },\n { no: 10, name: \"post_environment_start\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, oneof: \"trigger\" },\n { no: 20, name: \"post_devcontainer_start\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, oneof: \"trigger\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AutomationTrigger {\n return new AutomationTrigger().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AutomationTrigger {\n return new AutomationTrigger().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AutomationTrigger {\n return new AutomationTrigger().fromJsonString(jsonString, options);\n }\n\n static equals(a: AutomationTrigger | PlainMessage | undefined, b: AutomationTrigger | PlainMessage | undefined): boolean {\n return proto3.util.equals(AutomationTrigger, a, b);\n }\n}\n\n","// @generated by protoc-gen-connect-es v1.4.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/environment_automation.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { CreateServiceRequest, CreateServiceResponse, CreateTaskRequest, CreateTaskResponse, DeleteServiceRequest, DeleteServiceResponse, DeleteTaskRequest, DeleteTaskResponse, GetServiceRequest, GetServiceResponse, GetTaskExecutionRequest, GetTaskExecutionResponse, GetTaskRequest, GetTaskResponse, ListServicesRequest, ListServicesResponse, ListTaskExecutionsRequest, ListTaskExecutionsResponse, ListTasksRequest, ListTasksResponse, StartServiceRequest, StartServiceResponse, StartTaskRequest, StartTaskResponse, StopServiceRequest, StopServiceResponse, StopTaskExecutionRequest, StopTaskExecutionResponse, UpdateServiceRequest, UpdateServiceResponse, UpdateTaskExecutionStatusRequest, UpdateTaskExecutionStatusResponse, UpdateTaskRequest, UpdateTaskResponse, UpsertAutomationsFileRequest, UpsertAutomationsFileResponse } from \"./environment_automation_pb.js\";\nimport { MethodIdempotency, MethodKind } from \"@bufbuild/protobuf\";\n\n/**\n * @generated from service gitpod.v1.EnvironmentAutomationService\n */\nexport const EnvironmentAutomationService = {\n typeName: \"gitpod.v1.EnvironmentAutomationService\",\n methods: {\n /**\n * @generated from rpc gitpod.v1.EnvironmentAutomationService.CreateService\n */\n createService: {\n name: \"CreateService\",\n I: CreateServiceRequest,\n O: CreateServiceResponse,\n kind: MethodKind.Unary,\n },\n /**\n * @generated from rpc gitpod.v1.EnvironmentAutomationService.GetService\n */\n getService: {\n name: \"GetService\",\n I: GetServiceRequest,\n O: GetServiceResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * @generated from rpc gitpod.v1.EnvironmentAutomationService.ListServices\n */\n listServices: {\n name: \"ListServices\",\n I: ListServicesRequest,\n O: ListServicesResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * @generated from rpc gitpod.v1.EnvironmentAutomationService.UpdateService\n */\n updateService: {\n name: \"UpdateService\",\n I: UpdateServiceRequest,\n O: UpdateServiceResponse,\n kind: MethodKind.Unary,\n },\n /**\n * DeleteService deletes a service. This call does not block until the service is deleted.\n * If the service is not stopped it will be stopped before deletion.\n *\n * @generated from rpc gitpod.v1.EnvironmentAutomationService.DeleteService\n */\n deleteService: {\n name: \"DeleteService\",\n I: DeleteServiceRequest,\n O: DeleteServiceResponse,\n kind: MethodKind.Unary,\n },\n /**\n * StartService starts a service. This call does not block until the service is started.\n * This call will not error if the service is already running or has been started.\n *\n * @generated from rpc gitpod.v1.EnvironmentAutomationService.StartService\n */\n startService: {\n name: \"StartService\",\n I: StartServiceRequest,\n O: StartServiceResponse,\n kind: MethodKind.Unary,\n },\n /**\n * StopService stops a service. This call does not block until the service is stopped.\n * This call will not error if the service is already stopped or has been stopped.\n *\n * @generated from rpc gitpod.v1.EnvironmentAutomationService.StopService\n */\n stopService: {\n name: \"StopService\",\n I: StopServiceRequest,\n O: StopServiceResponse,\n kind: MethodKind.Unary,\n },\n /**\n * UpsertAutomationsFile upserts the automations file for the given environment.\n *\n * @generated from rpc gitpod.v1.EnvironmentAutomationService.UpsertAutomationsFile\n */\n upsertAutomationsFile: {\n name: \"UpsertAutomationsFile\",\n I: UpsertAutomationsFileRequest,\n O: UpsertAutomationsFileResponse,\n kind: MethodKind.Unary,\n },\n /**\n * @generated from rpc gitpod.v1.EnvironmentAutomationService.CreateTask\n */\n createTask: {\n name: \"CreateTask\",\n I: CreateTaskRequest,\n O: CreateTaskResponse,\n kind: MethodKind.Unary,\n },\n /**\n * @generated from rpc gitpod.v1.EnvironmentAutomationService.GetTask\n */\n getTask: {\n name: \"GetTask\",\n I: GetTaskRequest,\n O: GetTaskResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * @generated from rpc gitpod.v1.EnvironmentAutomationService.ListTasks\n */\n listTasks: {\n name: \"ListTasks\",\n I: ListTasksRequest,\n O: ListTasksResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * @generated from rpc gitpod.v1.EnvironmentAutomationService.UpdateTask\n */\n updateTask: {\n name: \"UpdateTask\",\n I: UpdateTaskRequest,\n O: UpdateTaskResponse,\n kind: MethodKind.Unary,\n },\n /**\n * @generated from rpc gitpod.v1.EnvironmentAutomationService.DeleteTask\n */\n deleteTask: {\n name: \"DeleteTask\",\n I: DeleteTaskRequest,\n O: DeleteTaskResponse,\n kind: MethodKind.Unary,\n },\n /**\n * StartTask starts a task, i.e. creates a task execution.\n * This call does not block until the task is started; the task will be started asynchronously.\n *\n * @generated from rpc gitpod.v1.EnvironmentAutomationService.StartTask\n */\n startTask: {\n name: \"StartTask\",\n I: StartTaskRequest,\n O: StartTaskResponse,\n kind: MethodKind.Unary,\n },\n /**\n * @generated from rpc gitpod.v1.EnvironmentAutomationService.ListTaskExecutions\n */\n listTaskExecutions: {\n name: \"ListTaskExecutions\",\n I: ListTaskExecutionsRequest,\n O: ListTaskExecutionsResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * @generated from rpc gitpod.v1.EnvironmentAutomationService.GetTaskExecution\n */\n getTaskExecution: {\n name: \"GetTaskExecution\",\n I: GetTaskExecutionRequest,\n O: GetTaskExecutionResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * @generated from rpc gitpod.v1.EnvironmentAutomationService.StopTaskExecution\n */\n stopTaskExecution: {\n name: \"StopTaskExecution\",\n I: StopTaskExecutionRequest,\n O: StopTaskExecutionResponse,\n kind: MethodKind.Unary,\n },\n /**\n * UpdateTaskExecutionStatus updates the status of a task execution. Only the environment executing a task execution is expected to call this function.\n *\n * @generated from rpc gitpod.v1.EnvironmentAutomationService.UpdateTaskExecutionStatus\n */\n updateTaskExecutionStatus: {\n name: \"UpdateTaskExecutionStatus\",\n I: UpdateTaskExecutionStatusRequest,\n O: UpdateTaskExecutionStatusResponse,\n kind: MethodKind.Unary,\n },\n }\n} as const;\n\n","// @generated by protoc-gen-es v1.8.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/group.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Message, proto3, Timestamp } from \"@bufbuild/protobuf\";\nimport { PaginationRequest, PaginationResponse } from \"./pagination_pb.js\";\n\n/**\n * @generated from message gitpod.v1.ListGroupsRequest\n */\nexport class ListGroupsRequest extends Message {\n /**\n * pagination contains the pagination options for listing groups\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListGroupsRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListGroupsRequest {\n return new ListGroupsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListGroupsRequest {\n return new ListGroupsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListGroupsRequest {\n return new ListGroupsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListGroupsRequest | PlainMessage | undefined, b: ListGroupsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListGroupsRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListGroupsResponse\n */\nexport class ListGroupsResponse extends Message {\n /**\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * @generated from field: repeated gitpod.v1.Group groups = 2;\n */\n groups: Group[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListGroupsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"groups\", kind: \"message\", T: Group, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListGroupsResponse {\n return new ListGroupsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListGroupsResponse {\n return new ListGroupsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListGroupsResponse {\n return new ListGroupsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListGroupsResponse | PlainMessage | undefined, b: ListGroupsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListGroupsResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.Group\n */\nexport class Group extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: string organization_id = 2;\n */\n organizationId = \"\";\n\n /**\n * @generated from field: string name = 3;\n */\n name = \"\";\n\n /**\n * system_managed indicates that this group is created by the system automatically\n *\n * @generated from field: bool system_managed = 4;\n */\n systemManaged = false;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 5;\n */\n createdAt?: Timestamp;\n\n /**\n * @generated from field: google.protobuf.Timestamp updated_at = 6;\n */\n updatedAt?: Timestamp;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.Group\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"system_managed\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n { no: 5, name: \"created_at\", kind: \"message\", T: Timestamp },\n { no: 6, name: \"updated_at\", kind: \"message\", T: Timestamp },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): Group {\n return new Group().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): Group {\n return new Group().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): Group {\n return new Group().fromJsonString(jsonString, options);\n }\n\n static equals(a: Group | PlainMessage | undefined, b: Group | PlainMessage | undefined): boolean {\n return proto3.util.equals(Group, a, b);\n }\n}\n\n","// @generated by protoc-gen-connect-es v1.4.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/group.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ListGroupsRequest, ListGroupsResponse } from \"./group_pb.js\";\nimport { MethodIdempotency, MethodKind } from \"@bufbuild/protobuf\";\n\n/**\n * @generated from service gitpod.v1.GroupService\n */\nexport const GroupService = {\n typeName: \"gitpod.v1.GroupService\",\n methods: {\n /**\n * ListGroups lists groups\n *\n * @generated from rpc gitpod.v1.GroupService.ListGroups\n */\n listGroups: {\n name: \"ListGroups\",\n I: ListGroupsRequest,\n O: ListGroupsResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n }\n} as const;\n\n","// @generated by protoc-gen-es v1.8.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/event.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Message, proto3, Timestamp } from \"@bufbuild/protobuf\";\nimport { PaginationRequest, PaginationResponse } from \"./pagination_pb.js\";\nimport { Principal } from \"./identity_pb.js\";\n\n/**\n * @generated from enum gitpod.v1.ResourceOperation\n */\nexport enum ResourceOperation {\n /**\n * @generated from enum value: RESOURCE_OPERATION_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: RESOURCE_OPERATION_CREATE = 1;\n */\n CREATE = 1,\n\n /**\n * @generated from enum value: RESOURCE_OPERATION_UPDATE = 2;\n */\n UPDATE = 2,\n\n /**\n * @generated from enum value: RESOURCE_OPERATION_DELETE = 3;\n */\n DELETE = 3,\n\n /**\n * UPDATE_STATUS is emitted only iff the resource's status has been updated. If the status and something else\n * are updated, a single UPDATE event is emitted.\n *\n * @generated from enum value: RESOURCE_OPERATION_UPDATE_STATUS = 4;\n */\n UPDATE_STATUS = 4,\n}\n// Retrieve enum metadata with: proto3.getEnumType(ResourceOperation)\nproto3.util.setEnumType(ResourceOperation, \"gitpod.v1.ResourceOperation\", [\n { no: 0, name: \"RESOURCE_OPERATION_UNSPECIFIED\" },\n { no: 1, name: \"RESOURCE_OPERATION_CREATE\" },\n { no: 2, name: \"RESOURCE_OPERATION_UPDATE\" },\n { no: 3, name: \"RESOURCE_OPERATION_DELETE\" },\n { no: 4, name: \"RESOURCE_OPERATION_UPDATE_STATUS\" },\n]);\n\n/**\n * @generated from enum gitpod.v1.ResourceType\n */\nexport enum ResourceType {\n /**\n * @generated from enum value: RESOURCE_TYPE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_ENVIRONMENT = 1;\n */\n ENVIRONMENT = 1,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_RUNNER = 2;\n */\n RUNNER = 2,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_PROJECT = 3;\n */\n PROJECT = 3,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_TASK = 4;\n */\n TASK = 4,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_TASK_EXECUTION = 5;\n */\n TASK_EXECUTION = 5,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_SERVICE = 6;\n */\n SERVICE = 6,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_ORGANIZATION = 7;\n */\n ORGANIZATION = 7,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_USER = 8;\n */\n USER = 8,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_ENVIRONMENT_CLASS = 9;\n */\n ENVIRONMENT_CLASS = 9,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_RUNNER_SCM_INTEGRATION = 10;\n */\n RUNNER_SCM_INTEGRATION = 10,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_HOST_AUTHENTICATION_TOKEN = 11;\n */\n HOST_AUTHENTICATION_TOKEN = 11,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_GROUP = 12;\n */\n GROUP = 12,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_PERSONAL_ACCESS_TOKEN = 13;\n */\n PERSONAL_ACCESS_TOKEN = 13,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_USER_PREFERENCE = 14;\n */\n USER_PREFERENCE = 14,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_SERVICE_ACCOUNT = 15;\n */\n SERVICE_ACCOUNT = 15,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_SECRET = 16;\n */\n SECRET = 16,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_SSO_CONFIG = 17;\n */\n SSO_CONFIG = 17,\n}\n// Retrieve enum metadata with: proto3.getEnumType(ResourceType)\nproto3.util.setEnumType(ResourceType, \"gitpod.v1.ResourceType\", [\n { no: 0, name: \"RESOURCE_TYPE_UNSPECIFIED\" },\n { no: 1, name: \"RESOURCE_TYPE_ENVIRONMENT\" },\n { no: 2, name: \"RESOURCE_TYPE_RUNNER\" },\n { no: 3, name: \"RESOURCE_TYPE_PROJECT\" },\n { no: 4, name: \"RESOURCE_TYPE_TASK\" },\n { no: 5, name: \"RESOURCE_TYPE_TASK_EXECUTION\" },\n { no: 6, name: \"RESOURCE_TYPE_SERVICE\" },\n { no: 7, name: \"RESOURCE_TYPE_ORGANIZATION\" },\n { no: 8, name: \"RESOURCE_TYPE_USER\" },\n { no: 9, name: \"RESOURCE_TYPE_ENVIRONMENT_CLASS\" },\n { no: 10, name: \"RESOURCE_TYPE_RUNNER_SCM_INTEGRATION\" },\n { no: 11, name: \"RESOURCE_TYPE_HOST_AUTHENTICATION_TOKEN\" },\n { no: 12, name: \"RESOURCE_TYPE_GROUP\" },\n { no: 13, name: \"RESOURCE_TYPE_PERSONAL_ACCESS_TOKEN\" },\n { no: 14, name: \"RESOURCE_TYPE_USER_PREFERENCE\" },\n { no: 15, name: \"RESOURCE_TYPE_SERVICE_ACCOUNT\" },\n { no: 16, name: \"RESOURCE_TYPE_SECRET\" },\n { no: 17, name: \"RESOURCE_TYPE_SSO_CONFIG\" },\n]);\n\n/**\n * @generated from message gitpod.v1.WatchEventsRequest\n */\nexport class WatchEventsRequest extends Message {\n /**\n * Scope defines the kind of events one watches. If no value is provided we default to organization scope.\n *\n * @generated from oneof gitpod.v1.WatchEventsRequest.scope\n */\n scope: {\n /**\n * Organization scope produces events for all projects, runners and environments\n * the caller can see within their organization. No task, task execution or service events\n * are produed.\n *\n * @generated from field: bool organization = 1;\n */\n value: boolean;\n case: \"organization\";\n } | {\n /**\n * Environment scope produces events for the environment itself, all tasks, task executions,\n * and services associated with that environment.\n *\n * @generated from field: string environment_id = 2;\n */\n value: string;\n case: \"environmentId\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.WatchEventsRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"organization\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, oneof: \"scope\" },\n { no: 2, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"scope\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): WatchEventsRequest {\n return new WatchEventsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): WatchEventsRequest {\n return new WatchEventsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): WatchEventsRequest {\n return new WatchEventsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: WatchEventsRequest | PlainMessage | undefined, b: WatchEventsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(WatchEventsRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.WatchEventsResponse\n */\nexport class WatchEventsResponse extends Message {\n /**\n * @generated from field: gitpod.v1.ResourceOperation operation = 1;\n */\n operation = ResourceOperation.UNSPECIFIED;\n\n /**\n * @generated from field: gitpod.v1.ResourceType resource_type = 2;\n */\n resourceType = ResourceType.UNSPECIFIED;\n\n /**\n * @generated from field: string resource_id = 3;\n */\n resourceId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.WatchEventsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"operation\", kind: \"enum\", T: proto3.getEnumType(ResourceOperation) },\n { no: 2, name: \"resource_type\", kind: \"enum\", T: proto3.getEnumType(ResourceType) },\n { no: 3, name: \"resource_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): WatchEventsResponse {\n return new WatchEventsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): WatchEventsResponse {\n return new WatchEventsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): WatchEventsResponse {\n return new WatchEventsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: WatchEventsResponse | PlainMessage | undefined, b: WatchEventsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(WatchEventsResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListAuditLogsRequest\n */\nexport class ListAuditLogsRequest extends Message {\n /**\n * pagination contains the pagination options for listing environments\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * @generated from field: gitpod.v1.ListAuditLogsRequest.Filter filter = 2;\n */\n filter?: ListAuditLogsRequest_Filter;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListAuditLogsRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n { no: 2, name: \"filter\", kind: \"message\", T: ListAuditLogsRequest_Filter },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListAuditLogsRequest {\n return new ListAuditLogsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListAuditLogsRequest {\n return new ListAuditLogsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListAuditLogsRequest {\n return new ListAuditLogsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListAuditLogsRequest | PlainMessage | undefined, b: ListAuditLogsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListAuditLogsRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListAuditLogsRequest.Filter\n */\nexport class ListAuditLogsRequest_Filter extends Message {\n /**\n * @generated from field: repeated string actor_ids = 1;\n */\n actorIds: string[] = [];\n\n /**\n * @generated from field: repeated gitpod.v1.Principal actor_principals = 2;\n */\n actorPrincipals: Principal[] = [];\n\n /**\n * @generated from field: repeated string subject_ids = 3;\n */\n subjectIds: string[] = [];\n\n /**\n * @generated from field: repeated gitpod.v1.ResourceType subject_types = 4;\n */\n subjectTypes: ResourceType[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListAuditLogsRequest.Filter\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"actor_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 2, name: \"actor_principals\", kind: \"enum\", T: proto3.getEnumType(Principal), repeated: true },\n { no: 3, name: \"subject_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 4, name: \"subject_types\", kind: \"enum\", T: proto3.getEnumType(ResourceType), repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListAuditLogsRequest_Filter {\n return new ListAuditLogsRequest_Filter().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListAuditLogsRequest_Filter {\n return new ListAuditLogsRequest_Filter().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListAuditLogsRequest_Filter {\n return new ListAuditLogsRequest_Filter().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListAuditLogsRequest_Filter | PlainMessage | undefined, b: ListAuditLogsRequest_Filter | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListAuditLogsRequest_Filter, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListAuditLogsResponse\n */\nexport class ListAuditLogsResponse extends Message {\n /**\n * @generated from field: repeated gitpod.v1.ListAuditLogsResponse.AuditLogEntry entries = 1;\n */\n entries: ListAuditLogsResponse_AuditLogEntry[] = [];\n\n /**\n * pagination contains the pagination options for listing environments\n *\n * @generated from field: gitpod.v1.PaginationResponse pagination = 2;\n */\n pagination?: PaginationResponse;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListAuditLogsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"entries\", kind: \"message\", T: ListAuditLogsResponse_AuditLogEntry, repeated: true },\n { no: 2, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListAuditLogsResponse {\n return new ListAuditLogsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListAuditLogsResponse {\n return new ListAuditLogsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListAuditLogsResponse {\n return new ListAuditLogsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListAuditLogsResponse | PlainMessage | undefined, b: ListAuditLogsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListAuditLogsResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListAuditLogsResponse.AuditLogEntry\n */\nexport class ListAuditLogsResponse_AuditLogEntry extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: string actor_id = 2;\n */\n actorId = \"\";\n\n /**\n * @generated from field: gitpod.v1.Principal actor_principal = 3;\n */\n actorPrincipal = Principal.UNSPECIFIED;\n\n /**\n * @generated from field: string subject_id = 4;\n */\n subjectId = \"\";\n\n /**\n * @generated from field: gitpod.v1.ResourceType subject_type = 5;\n */\n subjectType = ResourceType.UNSPECIFIED;\n\n /**\n * @generated from field: string action = 6;\n */\n action = \"\";\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 7;\n */\n createdAt?: Timestamp;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListAuditLogsResponse.AuditLogEntry\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"actor_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"actor_principal\", kind: \"enum\", T: proto3.getEnumType(Principal) },\n { no: 4, name: \"subject_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"subject_type\", kind: \"enum\", T: proto3.getEnumType(ResourceType) },\n { no: 6, name: \"action\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 7, name: \"created_at\", kind: \"message\", T: Timestamp },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListAuditLogsResponse_AuditLogEntry {\n return new ListAuditLogsResponse_AuditLogEntry().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListAuditLogsResponse_AuditLogEntry {\n return new ListAuditLogsResponse_AuditLogEntry().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListAuditLogsResponse_AuditLogEntry {\n return new ListAuditLogsResponse_AuditLogEntry().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListAuditLogsResponse_AuditLogEntry | PlainMessage | undefined, b: ListAuditLogsResponse_AuditLogEntry | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListAuditLogsResponse_AuditLogEntry, a, b);\n }\n}\n\n","// @generated by protoc-gen-connect-es v1.4.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/event.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ListAuditLogsRequest, ListAuditLogsResponse, WatchEventsRequest, WatchEventsResponse } from \"./event_pb.js\";\nimport { MethodIdempotency, MethodKind } from \"@bufbuild/protobuf\";\n\n/**\n * @generated from service gitpod.v1.EventService\n */\nexport const EventService = {\n typeName: \"gitpod.v1.EventService\",\n methods: {\n /**\n * WatchEvents streams all requests events to the client\n *\n * @generated from rpc gitpod.v1.EventService.WatchEvents\n */\n watchEvents: {\n name: \"WatchEvents\",\n I: WatchEventsRequest,\n O: WatchEventsResponse,\n kind: MethodKind.ServerStreaming,\n },\n /**\n * ListAuditLogs retrieves a paginated list of audit logs for the specified organization\n *\n * @generated from rpc gitpod.v1.EventService.ListAuditLogs\n */\n listAuditLogs: {\n name: \"ListAuditLogs\",\n I: ListAuditLogsRequest,\n O: ListAuditLogsResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n }\n} as const;\n\n","// @generated by protoc-gen-es v1.8.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/editor.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Message, proto3 } from \"@bufbuild/protobuf\";\nimport { PaginationRequest } from \"./pagination_pb.js\";\n\n/**\n * @generated from message gitpod.v1.ListEditorsRequest\n */\nexport class ListEditorsRequest extends Message {\n /**\n * pagination contains the pagination options for listing environments\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListEditorsRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListEditorsRequest {\n return new ListEditorsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListEditorsRequest {\n return new ListEditorsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListEditorsRequest {\n return new ListEditorsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListEditorsRequest | PlainMessage | undefined, b: ListEditorsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListEditorsRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListEditorsResponse\n */\nexport class ListEditorsResponse extends Message {\n /**\n * editors contains the list of editors\n *\n * @generated from field: repeated gitpod.v1.Editor editors = 1;\n */\n editors: Editor[] = [];\n\n /**\n * pagination contains the pagination options for listing environments\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 2;\n */\n pagination?: PaginationRequest;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListEditorsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"editors\", kind: \"message\", T: Editor, repeated: true },\n { no: 2, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListEditorsResponse {\n return new ListEditorsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListEditorsResponse {\n return new ListEditorsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListEditorsResponse {\n return new ListEditorsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListEditorsResponse | PlainMessage | undefined, b: ListEditorsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListEditorsResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetEditorRequest\n */\nexport class GetEditorRequest extends Message {\n /**\n * id is the ID of the editor to get\n *\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetEditorRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetEditorRequest {\n return new GetEditorRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetEditorRequest {\n return new GetEditorRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetEditorRequest {\n return new GetEditorRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetEditorRequest | PlainMessage | undefined, b: GetEditorRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetEditorRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetEditorResponse\n */\nexport class GetEditorResponse extends Message {\n /**\n * editor contains the editor\n *\n * @generated from field: gitpod.v1.Editor editor = 1;\n */\n editor?: Editor;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetEditorResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"editor\", kind: \"message\", T: Editor },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetEditorResponse {\n return new GetEditorResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetEditorResponse {\n return new GetEditorResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetEditorResponse {\n return new GetEditorResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetEditorResponse | PlainMessage | undefined, b: GetEditorResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetEditorResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ResolveEditorURLRequest\n */\nexport class ResolveEditorURLRequest extends Message {\n /**\n * editorId is the ID of the editor to resolve the URL for\n *\n * @generated from field: string editor_id = 1;\n */\n editorId = \"\";\n\n /**\n * environmentId is the ID of the environment to resolve the URL for\n *\n * @generated from field: string environment_id = 2;\n */\n environmentId = \"\";\n\n /**\n * organizationId is the ID of the organization to resolve the URL for\n *\n * @generated from field: string organization_id = 3;\n */\n organizationId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ResolveEditorURLRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"editor_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ResolveEditorURLRequest {\n return new ResolveEditorURLRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ResolveEditorURLRequest {\n return new ResolveEditorURLRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ResolveEditorURLRequest {\n return new ResolveEditorURLRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ResolveEditorURLRequest | PlainMessage | undefined, b: ResolveEditorURLRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ResolveEditorURLRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ResolveEditorURLResponse\n */\nexport class ResolveEditorURLResponse extends Message {\n /**\n * url is the resolved editor URL\n *\n * @generated from field: string url = 1;\n */\n url = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ResolveEditorURLResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ResolveEditorURLResponse {\n return new ResolveEditorURLResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ResolveEditorURLResponse {\n return new ResolveEditorURLResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ResolveEditorURLResponse {\n return new ResolveEditorURLResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ResolveEditorURLResponse | PlainMessage | undefined, b: ResolveEditorURLResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ResolveEditorURLResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.Editor\n */\nexport class Editor extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: string name = 2;\n */\n name = \"\";\n\n /**\n * @generated from field: string short_description = 3;\n */\n shortDescription = \"\";\n\n /**\n * @generated from field: string installation_instructions = 4;\n */\n installationInstructions = \"\";\n\n /**\n * @generated from field: string icon_url = 5;\n */\n iconUrl = \"\";\n\n /**\n * @generated from field: string url_template = 6;\n */\n urlTemplate = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.Editor\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"short_description\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"installation_instructions\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"icon_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 6, name: \"url_template\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): Editor {\n return new Editor().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): Editor {\n return new Editor().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): Editor {\n return new Editor().fromJsonString(jsonString, options);\n }\n\n static equals(a: Editor | PlainMessage | undefined, b: Editor | PlainMessage | undefined): boolean {\n return proto3.util.equals(Editor, a, b);\n }\n}\n\n","// @generated by protoc-gen-connect-es v1.4.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/editor.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { GetEditorRequest, GetEditorResponse, ListEditorsRequest, ListEditorsResponse, ResolveEditorURLRequest, ResolveEditorURLResponse } from \"./editor_pb.js\";\nimport { MethodIdempotency, MethodKind } from \"@bufbuild/protobuf\";\n\n/**\n * @generated from service gitpod.v1.EditorService\n */\nexport const EditorService = {\n typeName: \"gitpod.v1.EditorService\",\n methods: {\n /**\n * ListEditors lists all editors available to the caller\n *\n * @generated from rpc gitpod.v1.EditorService.ListEditors\n */\n listEditors: {\n name: \"ListEditors\",\n I: ListEditorsRequest,\n O: ListEditorsResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * GetEditor returns the editor with the given ID\n *\n * @generated from rpc gitpod.v1.EditorService.GetEditor\n */\n getEditor: {\n name: \"GetEditor\",\n I: GetEditorRequest,\n O: GetEditorResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * ResolveEditorURL resolves the editor's URL for an environment\n *\n * @generated from rpc gitpod.v1.EditorService.ResolveEditorURL\n */\n resolveEditorURL: {\n name: \"ResolveEditorURL\",\n I: ResolveEditorURLRequest,\n O: ResolveEditorURLResponse,\n kind: MethodKind.Unary,\n },\n }\n} as const;\n\n","const configElement = document.getElementById(\"gitpod-web-configuration\");\nconst configElementAttribute = configElement ? configElement.getAttribute(\"data-settings\") : undefined;\n\n// should be evolved in the backward compatible way\nexport type WebConfig = {\n origin: string;\n accessToken?: string;\n principal?: string;\n environmentId?: string;\n};\n\nconst webConfig = configElementAttribute\n ? (JSON.parse(atob(configElementAttribute)) as WebConfig)\n : {\n origin: window.location.origin,\n };\n\nexport default webConfig;\n","import webConfig from \"@/web-config\";\nlet _principal: string | undefined;\nif (webConfig.principal) {\n _principal = webConfig.principal;\n}\n\nconst principalKey = \"principal\";\n\nconst principalChangedEventType = \"principal-changed\";\nclass PrincipalChangedEvent extends CustomEvent {\n constructor() {\n super(principalChangedEventType);\n }\n}\n\nexport function getPrincipal(): string {\n return _principal || \"\";\n}\n\nexport function onDidChangePrincipal(callback: () => void) {\n const listener = (event: Event) => {\n if (event instanceof PrincipalChangedEvent) {\n callback();\n }\n };\n window.addEventListener(principalChangedEventType, listener);\n return () => window.removeEventListener(principalChangedEventType, listener);\n}\n\nexport function setPrincipal(principal: string) {\n const currentPrincipal = _principal;\n _principal = principal;\n if (currentPrincipal === principal) {\n return;\n }\n storePrincipal();\n window.dispatchEvent(new PrincipalChangedEvent());\n}\n\nexport function restorePrincipal(): void {\n let principal = \"\";\n try {\n principal = window.localStorage.getItem(principalKey) || \"\";\n // TODO validate for UUID\n } catch (error) {\n console.log(error);\n }\n setPrincipal(principal);\n}\n\nfunction storePrincipal(): void {\n try {\n window.localStorage.setItem(principalKey, _principal || \"\");\n } catch (error) {\n console.log(error);\n }\n}\n\nexport function clearPrincipal(): void {\n _principal = undefined;\n try {\n window.localStorage.removeItem(principalKey);\n } catch (error) {\n console.log(error);\n }\n}\n// TODO this is helper to clear the principal from the console\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n(window as any).clearPrincipal = clearPrincipal;\n","// Will be replaced during production builds - see prepare.sh\nexport const BuildVersion = \"main-gha.12963\";\n","import { createPromiseClient, type CallOptions, type Interceptor } from \"@connectrpc/connect\";\nimport { createConnectTransport } from \"@connectrpc/connect-web\";\nimport { AccountService } from \"gitpod-next-api/gitpod/v1/account_connect\";\nimport { UserService } from \"gitpod-next-api/gitpod/v1/user_connect\";\nimport { EnvironmentService } from \"gitpod-next-api/gitpod/v1/environment_connect\";\nimport { ProjectService } from \"gitpod-next-api/gitpod/v1/project_connect\";\nimport { SecretService } from \"gitpod-next-api/gitpod/v1/secret_connect\";\nimport { OrganizationService } from \"gitpod-next-api/gitpod/v1/organization_connect\";\nimport { RunnerService } from \"gitpod-next-api/gitpod/v1/runner_connect\";\nimport { RunnerConfigurationService } from \"gitpod-next-api/gitpod/v1/runner_configuration_connect\";\nimport { RunnerInteractionService } from \"gitpod-next-api/gitpod/v1/runner_interaction_connect\";\nimport { EnvironmentAutomationService } from \"gitpod-next-api/gitpod/v1/environment_automation_connect\";\nimport { GroupService } from \"gitpod-next-api/gitpod/v1/group_connect\";\nimport { EventService } from \"gitpod-next-api/gitpod/v1/event_connect\";\nimport { EditorService } from \"gitpod-next-api/gitpod/v1/editor_connect\";\nimport { getPrincipal } from \"@/principal\";\nimport webConfig from \"@/web-config\";\nimport { BuildVersion } from \"@/utils/version\";\n\n// TODO(at) can only explor the FE's behavior with a different header, as the backend starts validating the header\n// but fails as the user cookie is not sent.\nconst XGitpodPrincipalHeader = \"X-Gitpod-Principal\";\nconst principal: Interceptor = (next) => async (req) => {\n const principal = getPrincipal();\n if (principal && !req.header.get(XGitpodPrincipalHeader)) {\n req.header.set(XGitpodPrincipalHeader, \"user/\" + principal);\n }\n return await next(req);\n};\n\nconst XGitpodDashboardVersionHeader = \"X-Gitpod-Dashboard-Version\";\nconst dashboardVersion: Interceptor = (next) => async (req) => {\n const principal = getPrincipal();\n if (principal && !req.header.get(XGitpodDashboardVersionHeader)) {\n req.header.set(XGitpodDashboardVersionHeader, BuildVersion);\n }\n return await next(req);\n};\n\nconst interceptors = [principal, dashboardVersion];\nif (webConfig.accessToken) {\n const token: Interceptor = (next) => async (req) => {\n req.header.set(\"Authorization\", `Bearer ${webConfig.accessToken}`);\n return await next(req);\n };\n interceptors.push(token);\n}\n\nconst transport = createConnectTransport({\n baseUrl: webConfig.origin + \"/api\",\n // TODO: add interceptor for csrf token once implemented\n // TODO: should we enable for non-dev environments?\n useBinaryFormat: false,\n interceptors,\n defaultTimeoutMs: 30 * 1000,\n});\n\nconst accountService = createPromiseClient(AccountService, transport);\nconst userService = createPromiseClient(UserService, transport);\nconst organizationService = createPromiseClient(OrganizationService, transport);\nconst environmentService = createPromiseClient(EnvironmentService, transport);\nconst environmentAutomationService = createPromiseClient(EnvironmentAutomationService, transport);\nconst projectService = createPromiseClient(ProjectService, transport);\nconst secretService = createPromiseClient(SecretService, transport);\nconst runnerInteractionService = createPromiseClient(RunnerInteractionService, transport);\nconst eventService = createPromiseClient(EventService, transport);\nconst editorService = createPromiseClient(EditorService, transport);\nconst runnerService = createPromiseClient(RunnerService, transport);\nconst runnerConfigurationService = createPromiseClient(RunnerConfigurationService, transport);\nconst groupService = createPromiseClient(GroupService, transport);\n\nconst GitpodAPI = {\n accountService,\n userService,\n organizationService,\n environmentService,\n environmentAutomationService,\n secretService,\n projectService,\n eventService,\n editorService,\n runnerService,\n runnerInteractionService,\n runnerConfigurationService,\n groupService,\n};\n\ntype GitpodAPI = typeof GitpodAPI;\n\nexport { GitpodAPI };\n\nexport function withUser(options: CallOptions, userId: string): CallOptions {\n options.headers = Object.assign(options.headers || {}, {\n [XGitpodPrincipalHeader]: \"user/\" + userId,\n });\n return options;\n}\n","import type { Size } from \"@/assets/icons/geist/Size\";\nimport { type PropsWithClassName } from \"@/components/podkit/lib/cn\";\nimport type { FC } from \"react\";\n\nexport const IconSpinner: FC<{ size: Size } & PropsWithClassName> = ({ size, className }) => {\n switch (size) {\n case \"sm\":\n return (\n \n \n \n \n \n );\n case \"base\":\n return (\n \n \n \n \n \n );\n case \"lg\":\n return (\n \n \n \n \n \n );\n }\n};\n","/**\n * Copyright (c) 2023 Gitpod GmbH. All rights reserved.\n * Licensed under the GNU Affero General Public License (AGPL).\n * See License.AGPL.txt in the project root for license information.\n */\n\nimport { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n// Helper type to add a className prop to a component\nexport type PropsWithClassName = {\n className?: string;\n} & Props;\n\n// Helper fn to merge tailwind classes with a className prop\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { IconSpinner } from \"@/assets/icons/geist/IconSpinner\";\nimport type { Size } from \"@/assets/icons/geist/Size\";\nimport { cn } from \"@/components/podkit/lib/cn\";\nimport { Slot, Slottable } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport {\n cloneElement,\n forwardRef,\n Fragment,\n isValidElement,\n type ButtonHTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from \"react\";\n\nconst ButtonVariants = cva(\n cn(\n \"select-none\",\n \"inline-flex items-center gap-1 font-medium justify-center whitespace-nowrap transition-colors\",\n \"border-0.5 border-border-base\",\n \"disabled:bg-surface-03 disabled:border-opacity-0 disabled:text-content-tertiary disabled:pointer-events-none disabled:shadow-none\",\n \"focus:outline focus:outline-offset-0 focus:outline-1 active:outline-0\",\n \"focus:ring-0\", // only needed because we set it globally in index.css\n ),\n {\n variants: {\n variant: {\n primary: cn(\n \"shadow-sm bg-content-primary text-content-invert hover:bg-content-secondary\",\n \"focus:outline-offset-2 focus:outline-content-primary\",\n ),\n secondary: cn(\n \"shadow-sm bg-surface-glass hover:bg-surface-03 text-content-primary\",\n \"focus:outline-blue-500\",\n ),\n brand: cn(\n \"shadow-sm text-content-invert bg-content-orange hover:bg-content-orange/80\",\n \"focus:outline-offset-2 focus:outline-content-orange\",\n ),\n destructive: cn(\n \"shadow-sm text-content-invert bg-content-red hover:bg-content-red/80\",\n \"focus:outline-offset-2 focus:outline-content-red\",\n ),\n ghost: cn(\n \"disabled:bg-transparent disabled:text-content-secondary bg-transparent hover:bg-surface-03\",\n \"focus:outline-blue-500\",\n ),\n link: cn(\n \"disabled:bg-transparent disabled:text-content-secondary border-0 text-content-secondary hover:text-content-primary\",\n \"focus:outline-content-orange\",\n ),\n },\n size: {\n lg: \"px-4 py-[10px] rounded-xl text-base font-medium\",\n md: \"px-4 pt-[5.5px] pb-[6.5px] rounded-xl text-base h-[32px]\",\n sm: \"py-1 px-2 rounded-lg text-sm\",\n tiny: \"size-5 p-0 rounded-[4px] text-sm\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n },\n },\n);\n\nexport type ButtonVariant = VariantProps[\"variant\"];\n\nexport type ButtonProps = {\n asChild?: boolean;\n loading?: boolean;\n LeadingIcon?: React.ComponentType<{ size: Size }>;\n _disableTranslateWrapping?: boolean;\n} & ButtonHTMLAttributes &\n VariantProps;\n\n/**\n * Notes for converting from Figma component properties\n * - iconOnly is achieved by not passing in children and providing a LeadingIcon\n */\nexport const Button = forwardRef(\n ({ className, variant, size, asChild = false, LeadingIcon, loading, disabled, children, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n let iconOnlyOverrides = \"\";\n if (!children) {\n switch (size) {\n case \"md\":\n iconOnlyOverrides = \"pt-[6.5px] pb-[5.5px] px-[7.5px]\";\n break;\n case \"sm\":\n iconOnlyOverrides = \"p-1\";\n break;\n }\n }\n let iconSize: Size = \"base\";\n switch (size) {\n case \"tiny\":\n case \"sm\":\n iconSize = \"sm\";\n break;\n case \"md\":\n iconSize = \"base\";\n break;\n case \"lg\":\n iconSize = \"lg\";\n break;\n }\n\n let leftElement;\n if (loading) {\n leftElement = ;\n } else if (LeadingIcon) {\n leftElement = ;\n }\n\n let content: ReactNode = children;\n if (!props._disableTranslateWrapping) {\n // Wrap text content in a span to prevent G translate issues\n content = Array.isArray(children)\n ? children.map((child: ReactNode, i: number) => wrapInSpan(child, `wrapped-child-${i}`))\n : wrapInSpan(content, \"wrapped-child\");\n\n if (asChild && isValidElement(children)) {\n return (\n \n {cloneElement(\n children,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n children.props,\n <>\n {leftElement}\n {children.props.children}\n ,\n )}\n \n );\n }\n }\n\n return (\n \n {leftElement}\n {content}\n \n );\n },\n);\nButton.displayName = \"Button\";\n\nfunction wrapInSpan(node: ReactNode, key: string): ReactNode {\n if (typeof node === \"string\") {\n return {node};\n }\n if (isValidElement(node) && node.type === Fragment) {\n return {node};\n }\n return node;\n}\n","import * as React from \"react\";\nimport type { ToastActionElement, ToastProps } from \"@/components/podkit/toasts/Toast\";\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 1000 * 5;\n\ntype ToasterToast = {\n id: string;\n title: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n} & Omit;\n\ntype ActionType = {\n ADD_TOAST: \"ADD_TOAST\";\n UPDATE_TOAST: \"UPDATE_TOAST\";\n DISMISS_TOAST: \"DISMISS_TOAST\";\n REMOVE_TOAST: \"REMOVE_TOAST\";\n};\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"];\n toast: ToasterToast;\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"];\n toast: Partial;\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n };\n\ntype State = {\n toasts: ToasterToast[];\n};\n\nconst toastTimeouts = new Map>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) => (t.id === action.toast.id ? { ...t, ...action.toast } : t)),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: ((state: State) => void)[] = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit;\n\nfunction toast({\n ...props\n}: Toast & {\n indefinite?: boolean;\n onClose?: () => void;\n}) {\n const id = genId();\n const duration = props.indefinite ? 24 * 60 * 60 * 1000 : props.duration ?? 3000;\n const onClose = props.onClose;\n props = { ...props };\n delete props.indefinite;\n delete props.onClose;\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => {\n dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n if (onClose) {\n onClose();\n }\n };\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n duration,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nexport { useToast, toast };\n","/* eslint-disable */\n\nimport { ConnectError, type Code } from \"@connectrpc/connect\";\nexport type IPCTransport = {\n onDidConnect(callback: () => void): () => void;\n send(channel: string, param?: any, responseChannel?: string, abortChannel?: string): void;\n event(\n channel: string,\n callback: (param?: any, responseChannel?: string, abortChannel?: string) => void,\n ): () => void;\n};\n\nexport type IPCRequest

= {\n kind: \"request\";\n param?: P;\n result?: R;\n};\nexport type IPCEvent

= {\n kind: \"event\";\n param?: P;\n};\nexport type IPCNotification

= {\n kind: \"notification\";\n param?: P;\n};\nexport type IPCMethod

= IPCRequest | IPCEvent

| IPCNotification

;\nexport function ipcRequest

(): IPCRequest {\n return { kind: \"request\" };\n}\nexport function ipcEvent

(): IPCEvent

{\n return { kind: \"event\" };\n}\nexport function ipcNotification

(): IPCNotification

{\n return { kind: \"notification\" };\n}\n\nexport type ICPServiceType = {\n type: string;\n methods: Record>;\n};\n\nexport type IPCService = {\n [K in keyof T[\"methods\"]]: T[\"methods\"][K] extends IPCRequest\n ? (param: P, signal?: AbortSignal) => Promise\n : T[\"methods\"][K] extends IPCEvent\n ? (callback: (param: P) => void) => () => void\n : T[\"methods\"][K] extends IPCNotification\n ? (param: P) => void\n : never;\n};\nexport type IPCServiceProxy = IPCService & { dispose: () => void };\n\ntype IPCMessage = {\n id: number;\n channel: string;\n param?: any;\n responseChannel?: string;\n abortChannel?: string;\n};\n\ntype IPCRequestResult = {\n result?: any;\n error?:\n | {\n kind: \"ConnectError\";\n message: string;\n code: Code;\n }\n | any;\n};\n\nexport function createIPCProxy(type: T, transport: IPCTransport): IPCServiceProxy {\n let msgSequenceNumber = 0;\n let eventSequenceNumber = 0;\n const pending = new Map();\n function submitPending() {\n for (const msg of pending.values()) {\n transport.send(msg.channel, msg.param, msg.responseChannel, msg.abortChannel);\n }\n }\n let disposed = false;\n const disposeAbortController = new AbortController();\n const disposeSignal = disposeAbortController.signal;\n const disposables: (() => void)[] = [() => disposeAbortController.abort()];\n disposables.push(\n transport.onDidConnect(() => {\n transport.send(connectChannel(type));\n submitPending();\n }),\n );\n const register = (dispose: () => void) => {\n disposables.push(dispose);\n return () => {\n dispose();\n disposables.splice(disposables.indexOf(dispose), 1);\n };\n };\n return new Proxy(\n {},\n {\n get: (_, prop) => {\n if (disposed) {\n throw new Error(`'${type.type}' service proxy is disposed`);\n }\n const methodName = prop as string;\n if (methodName === \"dispose\") {\n return () => {\n disposed = true;\n for (const dispose of disposables) {\n dispose();\n }\n };\n }\n const method = type.methods[methodName];\n if (!method) {\n throw new Error(`Method '${methodName}' not found on '${type.type}' service type`);\n }\n const channel = methodChannel(type, methodName);\n if (method.kind === \"request\") {\n return (param: any, signal?: AbortSignal) => {\n const id = msgSequenceNumber++;\n const responseChannel = `${channel}/${id}/response`;\n const abortChannel = `${channel}/${id}/abort`;\n const msg = { id, channel, param, responseChannel, abortChannel };\n transport.send(channel, param, responseChannel, abortChannel);\n pending.set(id, msg);\n const listeners: (() => void)[] = [];\n const dispose = register(() => {\n for (const removeListener of listeners) {\n removeListener();\n }\n pending.delete(id);\n });\n return new Promise((resolve, reject) => {\n const abortListener = () => {\n transport.send(abortChannel);\n reject(Object.assign(new Error(\"Aborted\"), { name: \"AbortError\" }));\n };\n signal?.addEventListener(\"abort\", abortListener);\n disposeSignal.addEventListener(\"abort\", abortListener);\n listeners.push(() => {\n signal?.removeEventListener(\"abort\", abortListener);\n disposeSignal.removeEventListener(\"abort\", abortListener);\n });\n listeners.push(\n transport.event(responseChannel, ({ result, error }: IPCRequestResult) => {\n if (error) {\n if (error.kind === \"ConnectError\") {\n reject(new ConnectError(error.message, error.code));\n } else {\n reject(error);\n }\n } else {\n resolve(result);\n }\n }),\n );\n }).finally(dispose);\n };\n }\n if (method.kind === \"notification\") {\n return (param: any) => transport.send(channel, param);\n }\n if (method.kind === \"event\") {\n const callbackChannel = `${channel}/${eventSequenceNumber++}/callback`;\n return (callback: (param: any) => void) => {\n const id = msgSequenceNumber++;\n const removeListener = transport.event(callbackChannel, callback);\n transport.send(channel, { callbackChannel, kind: \"subscribe\" });\n pending.set(id, { id, channel, param: { callbackChannel, kind: \"subscribe\" } });\n return register(() => {\n removeListener();\n pending.delete(id);\n transport.send(channel, { callbackChannel, kind: \"unsubscribe\" });\n });\n };\n }\n },\n },\n ) as IPCServiceProxy;\n}\n\nexport function bindIPCService(\n type: T,\n transport: IPCTransport,\n service: IPCService,\n): () => void {\n const disposables: (() => void)[] = [];\n const eventListeners = new Map void>();\n disposables.push(\n transport.event(connectChannel(type), () => {\n eventListeners.forEach((removeListener) => removeListener());\n eventListeners.clear();\n }),\n );\n for (const methodName in type.methods) {\n const method = type.methods[methodName];\n const channel = methodChannel(type, methodName);\n if (method.kind === \"request\") {\n disposables.push(\n transport.event(channel, async (param?: any, responseChannel?: string, abortChannel?: string) => {\n let signal: AbortSignal | undefined;\n let removeAbortListener: () => void | undefined;\n if (abortChannel) {\n const abortController = new AbortController();\n signal = abortController.signal;\n removeAbortListener = transport.event(abortChannel, () => abortController.abort());\n eventListeners.set(abortChannel, removeAbortListener);\n }\n try {\n const result = await (service[methodName] as any)(param, signal);\n if (responseChannel) {\n transport.send(responseChannel, { result });\n }\n } catch (error) {\n if (responseChannel) {\n if (error instanceof ConnectError) {\n // TODO(ak) for now we only translate message and code\n transport.send(responseChannel, {\n error: {\n kind: \"ConnectError\",\n message: error.message,\n code: error.code,\n },\n });\n } else {\n transport.send(responseChannel, { error });\n }\n }\n } finally {\n if (abortChannel) {\n removeAbortListener!();\n eventListeners.delete(abortChannel);\n }\n }\n }),\n );\n }\n if (method.kind === \"notification\") {\n disposables.push(transport.event(channel, (param: any) => service[methodName](param)));\n }\n if (method.kind === \"event\") {\n disposables.push(\n transport.event(\n channel,\n ({ callbackChannel, kind }: { callbackChannel: string; kind: \"subscribe\" | \"unsubscribe\" }) => {\n if (kind === \"subscribe\") {\n const removeListener = (service[methodName] as any)((param: any) =>\n transport.send(callbackChannel!, param),\n );\n eventListeners.set(callbackChannel!, removeListener);\n } else if (kind === \"unsubscribe\") {\n const removeListener = eventListeners.get(callbackChannel!);\n if (removeListener) {\n removeListener();\n eventListeners.delete(callbackChannel!);\n }\n }\n },\n ),\n );\n }\n }\n return () => {\n disposables.forEach((dispose) => dispose());\n disposables.length = 0;\n eventListeners.forEach((removeListener) => removeListener());\n eventListeners.clear();\n };\n}\n\nfunction methodChannel(type: T, methodName: string) {\n return `gitpod.${type.type}/${methodName}`;\n}\nfunction connectChannel(type: T) {\n return `gitpod.${type.type}.connect`;\n}\n","import { ipcEvent, ipcNotification, ipcRequest, type IPCService } from \"./ipc\";\n\nexport function getScmProviderName(scmId?: string) {\n switch (scmId) {\n case \"github\":\n return \"GitHub\";\n case \"gitlab\":\n return \"GitLab\";\n case \"bitbucket\":\n return \"Bitbucket\";\n case \"azuredevops\":\n return \"Azure DevOps\";\n default:\n return \"Source Control\";\n }\n}\n\nexport type LocalRunnerInstallationStep = {\n name: string;\n start: boolean;\n done: boolean;\n messages: string[];\n error?: string;\n};\nexport type LocalRunnerInstallationState = {\n steps: Record;\n exitCode?: number;\n needsElevatedPermissions?: boolean;\n userDidNotGrantPermissions?: boolean;\n};\n\nexport type LocalRunnerPhase =\n | \"installing\"\n | \"signing\"\n | \"starting\"\n | \"running\"\n | \"disconnected\"\n | \"shutdown\"\n | \"failed\";\n\nexport type LocalRunnerFailure = {\n message: string;\n details?: string;\n};\n\nexport type LocalRunnerStatus = {\n phase: LocalRunnerPhase;\n failure?: LocalRunnerFailure;\n installation?: LocalRunnerInstallationState;\n currentRunnerId?: string;\n};\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace LocalRunnerStatus {\n export function needsRunnerScreen(status: LocalRunnerStatus | undefined): boolean {\n return !!status && (status.phase === \"installing\" || status.phase === \"failed\");\n }\n}\n\nexport type CreateRunnerParam = {\n runnerName: string;\n userId: string;\n};\n\nexport type CreateRunnerResult = {\n runnerId: string;\n token: string;\n endpoint: string;\n};\n\nexport type CreateRunnerTokenParam = {\n runnerId: string;\n userId: string;\n};\n\nexport type CreateRunnerTokenResult = {\n token: string;\n};\n\nexport type DidChangeUserEvent = {\n userId: string | undefined;\n};\n\nexport type DeleteRunnerParam = {\n runnerId: string;\n userId: string;\n force?: boolean;\n}\n\nexport const localRunnerRendererType = {\n type: \"LocalRunnerRendererService\",\n methods: {\n createRunner: ipcRequest(),\n createRunnerToken: ipcRequest(),\n onDidChangeUser: ipcEvent(),\n deleteRunner: ipcRequest(),\n },\n};\nexport type LocalRunnerRendererService = IPCService;\n\nexport const localRunnerMainType = {\n type: \"LocalRunnerMainService\",\n methods: {\n onRunnerStatus: ipcEvent(),\n run: ipcNotification<{ elevatePermissions?: boolean }>(),\n },\n};\nexport type LocalRunnerMainService = IPCService;\n\nexport type AppMainInfo = {\n quality: string;\n version: string;\n};\n\nexport const appMainType = {\n type: \"AppMainService\",\n methods: {\n quit: ipcNotification(),\n signin: ipcRequest<{ host: string }, string>(),\n collectLogsAndDiagnostics: ipcNotification(),\n about: ipcRequest(),\n },\n};\nexport type AppMainService = IPCService;\n","/**\n * Copyright (c) 2023 Gitpod GmbH. All rights reserved.\n * Licensed under the GNU Affero General Public License (AGPL).\n * See License.AGPL.txt in the project root for license information.\n */\n\nimport { type FC, useEffect, useState, type PropsWithChildren } from \"react\";\n\ntype Props = PropsWithChildren<{\n wait?: number;\n}>;\nexport const Delayed: FC = ({ wait = 1000, children }) => {\n const [show, setShow] = useState(false);\n\n useEffect(() => {\n const timeout = setTimeout(() => setShow(true), wait);\n return () => clearTimeout(timeout);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (!show) {\n return null;\n }\n\n return <>{children};\n};\n","/**\n * Copyright (c) 2023 Gitpod GmbH. All rights reserved.\n * Licensed under the GNU Affero General Public License (AGPL).\n * See License.AGPL.txt in the project root for license information.\n */\n\nimport { Delayed } from \"@/components/podkit/loading/Delayed\";\nimport { type FC } from \"react\";\n\ntype Props = {\n size?: number;\n delay?: boolean;\n};\nexport const LoadingState: FC = ({ delay = true }) => {\n // TODO(mads): This is a temporary workaround. We should get of this component entirely and instead ensure\n // that each component handles it's loading state appropriately.\n // Returning null here ensures that there isn't a flicker between the index.html loading screen and this loading screen\n let loader = null;\n\n if (delay) {\n loader = {loader};\n }\n\n // as the loading state might be empty, we need to add a data-testid to make it testable\n return

{loader}
;\n};\n","export const Flags = {\n OrgLocalRunnerSettingsVisible: \"orgLocalRunnerSettingsVisible\",\n EnablePylonInAppChat: \"enablePylonInAppChat\",\n};\n","import { type GitpodAPI } from \"@/api\";\nimport { createContext } from \"react\";\n\n// @ts-expect-error Can't initialize context with empty object\nexport const GitpodAPIContext = createContext();\n","import { useContext } from \"react\";\nimport { GitpodAPIContext } from \"@/contexts/GitpodAPIContext\";\n\nexport const useGitpodAPI = () => {\n const api = useContext(GitpodAPIContext);\n\n if (api === undefined) {\n throw new Error(\"useGitpodAPI must be used within a GitpodAPIProvider\");\n }\n\n return api;\n};\n","import { useGetAccount } from \"@/queries/account-queries\";\nimport { Timestamp } from \"@bufbuild/protobuf\";\nimport { useEffect } from \"react\";\nimport { useIntercom } from \"react-use-intercom\";\n\nconst disableIntercom = process.env.NODE_ENV === \"development\";\n\nexport const useBootIntercom = (options: { enabled: boolean }) => {\n const intercom = useIntercom();\n const { data: account } = useGetAccount();\n\n useEffect(() => {\n if (!options.enabled) {\n intercom.shutdown();\n return;\n }\n\n if (disableIntercom) {\n return;\n }\n if (!account) {\n intercom.boot();\n return;\n }\n\n const memberships = account.memberships || [];\n try {\n intercom.boot({\n userId: account.id,\n name: account.name, // Full name\n email: account.email,\n createdAt: new Timestamp(account.createdAt).toDate().getTime() / 1000, // Signup date as a Unix timestamp\n companies: memberships.map((m) => {\n return {\n companyId: m.organizationId,\n name: m.organizationName,\n customAttributes: {\n userId: m.userId,\n role: m.userRole,\n },\n };\n }),\n avatar: {\n type: \"avatar\",\n imageUrl: account.avatarUrl,\n },\n });\n } catch (err) {\n console.error(\"Failed to boot intercom\", err);\n }\n }, [account, intercom, options.enabled]);\n};\n\nexport const useShutdownIntercom = () => {\n const intercom = useIntercom();\n\n return () => {\n if (disableIntercom) {\n return;\n }\n try {\n intercom.shutdown();\n } catch (err) {\n console.error(\"Failed to shutdown intercom\", err);\n }\n };\n};\n\nexport const useIntercomTrack = () => {\n const intercom = useIntercom();\n\n return (eventName: string, metadata?: Record) => {\n if (disableIntercom) {\n return;\n }\n try {\n intercom.trackEvent(eventName, metadata);\n } catch (err) {\n console.error(\"Failed to track event\", err);\n }\n };\n};\n\nexport const useNewIntercomMessage = () => {\n const intercom = useIntercom();\n\n return (content?: string) => {\n if (disableIntercom) {\n return;\n }\n try {\n intercom.showNewMessage(content);\n } catch (err) {\n console.error(\"Failed to show New Intercom Message\", err);\n }\n };\n};\n","import { Code, ConnectError } from \"@connectrpc/connect\";\nimport type { Query, QueryKey } from \"@tanstack/react-query\";\n\nexport const isUnauthorizedError = (error: unknown) => {\n return error instanceof ConnectError && error.code === Code.Unauthenticated;\n};\n\nexport const isNotFoundError = (error: unknown) => {\n return error instanceof ConnectError && error.code === Code.NotFound;\n};\n\nexport const isInvalidArgumentError = (error: unknown) => {\n return error instanceof ConnectError && error.code === Code.InvalidArgument;\n};\n\nexport const defaultRetry = (failureCount: number, error: Error) => {\n if (error instanceof ConnectError) {\n switch (error.code) {\n case Code.DeadlineExceeded:\n return true;\n case Code.Unauthenticated:\n case Code.PermissionDenied:\n case Code.NotFound:\n case Code.InvalidArgument:\n case Code.FailedPrecondition:\n case Code.Internal:\n return false;\n }\n }\n return failureCount < 3;\n};\n\n/**\n * Default refetch interval for lists.\n * Refetch every 5 minutes, but if the data is older than 5 minutes, refetch every 10 seconds.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const defaultRefetchLists = (query: Query) => {\n const now = Date.now();\n const deltaTime = now - (query.state.dataUpdatedAt || now);\n if (deltaTime > 1_000 * 60 * 5) {\n return 1_000 * 10; // 10 seconds\n }\n return 1_000 * 60 * 5; // 5 minutes\n};\n\n/**\n From docs:\n\n > If set to `true` [...], all errors will be thrown to the error boundary.\n\n\n So, we carefully select exceptional errors to throw by default,\n and let the global error boundary handle them.\n\n In any other case, it should be up to the subscribing component\n to handle error states locally.\n */\nexport const defaultThrowOnError = (error: Error) => {\n if (error instanceof ConnectError) {\n switch (error.code) {\n case Code.DeadlineExceeded:\n case Code.Unauthenticated:\n case Code.PermissionDenied:\n case Code.NotFound:\n case Code.InvalidArgument:\n case Code.FailedPrecondition:\n return false;\n case Code.Internal:\n return true;\n }\n }\n return false;\n};\n","import { getPrincipal } from \"@/principal\";\nimport { type QueryKey } from \"@tanstack/react-query\";\n\nexport function keyWithPrincipal(key: QueryKey): QueryKey {\n const principal = getPrincipal();\n return [\"principal\", principal, ...key];\n}\n","import { useGitpodAPI } from \"@/hooks/use-gitpod-api\";\nimport { useShutdownIntercom } from \"@/hooks/use-intercom\";\nimport { useResetSegment } from \"@/hooks/use-segment\";\nimport { getPrincipal } from \"@/principal\";\nimport { getAccountQueryKey, useGetAccount } from \"@/queries/account-queries\";\nimport { isNotFoundError, isUnauthorizedError } from \"@/queries/errors\";\nimport { keyWithPrincipal } from \"@/queries/principal-key\";\nimport { toPlainMessage, type PlainMessage } from \"@bufbuild/protobuf\";\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { type User } from \"gitpod-next-api/gitpod/v1/user_pb\";\n\nexport type PlainUser = PlainMessage;\n\nexport const getAuthenticatedUserQueryKey = () => keyWithPrincipal([\"user\", \"authenticated\"]);\n\nexport const useAuthenticatedUser = () => {\n const api = useGitpodAPI();\n const { data: account } = useGetAccount();\n\n const query = useQuery({\n queryKey: getAuthenticatedUserQueryKey(),\n enabled: !!account && !!getPrincipal(),\n queryFn: async () => {\n try {\n const { user } = await api.userService.getAuthenticatedUser(\n {},\n {\n timeoutMs: 1000 * 30,\n },\n );\n\n if (!user) {\n throw new Error(\"User not found\");\n }\n return toPlainMessage(user);\n } catch (error) {\n if (isUnauthorizedError(error)) {\n // TODO(at) implicit rerender into create/join org selector\n return undefined;\n }\n if (isNotFoundError(error)) {\n // TODO(at) implicit rerender into create/join org selector\n return undefined;\n }\n\n // Otherwise throw like normal\n throw error;\n }\n },\n retry(_failureCount, error) {\n // Don't bother retrying if it's an unauthenticated error\n if (isUnauthorizedError(error)) {\n return false;\n }\n if (_failureCount > 2) {\n return false;\n }\n\n return true;\n },\n refetchInterval(query) {\n // Don't refetch if unauthenticated\n if (isUnauthorizedError(query.state.error) || query.state.data === null) {\n return false;\n }\n\n // TODO(at) decide if this is still necessary\n\n // otherwise refetch every minute\n return 1000 * 60;\n },\n refetchOnWindowFocus: true,\n staleTime: 500, // using 500ms as to debounce on the initial load\n gcTime: 1_000 * 60 * 5, // 5 minutes\n });\n return query;\n};\n\nexport const useLogout = () => {\n const { data: account } = useGetAccount();\n const client = useQueryClient();\n const shutdownIntercom = useShutdownIntercom();\n const resetMixpanel = useResetSegment();\n\n return useMutation({\n mutationFn: async () => {\n if (!account) {\n throw new Error(\"Not authenticated\");\n }\n\n const resp = await fetch(\"/auth/oidc/logout\", {\n method: \"POST\",\n credentials: \"same-origin\",\n });\n\n return resp;\n },\n onSuccess: () => {\n client.clear();\n shutdownIntercom();\n resetMixpanel();\n },\n });\n};\n\nexport const useSuspendUser = () => {\n const api = useGitpodAPI();\n const { data: user } = useAuthenticatedUser();\n const client = useQueryClient();\n\n return useMutation({\n mutationFn: async ({ userId, suspended }: { userId: string; suspended: boolean }) => {\n return await api.userService.setSuspended({\n userId,\n suspended,\n });\n },\n onSuccess: async (_, { userId }) => {\n if (!user) {\n return;\n }\n\n if (user.id === userId) {\n // We've just removed ourselves from the org\n await client.invalidateQueries({\n queryKey: getAccountQueryKey(),\n });\n }\n },\n });\n};\n","import webConfig from \"@/web-config\";\nimport { AnalyticsBrowser, type InitOptions, type AnalyticsBrowserSettings } from \"@segment/analytics-next\";\nimport { createContext } from \"react\";\n\nexport type SegmentContextValue = {\n analytics?: AnalyticsBrowser;\n platformDetails?: {\n platform?: string;\n architecture?: string;\n };\n};\n\nexport const SegmentContext = createContext(undefined);\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport function createSegment(): SegmentContextValue {\n const originURL = new URL(webConfig.origin);\n const segmentSettings: AnalyticsBrowserSettings = {\n cdnURL: webConfig.origin + \"/segment\",\n writeKey:\n originURL.host === \"app.gitpod.io\"\n ? \"g5Dgcf8kFxV7EPvOp7gGcJhH0FAwE1GW\"\n : \"Gb48f7bya7dVEGSj4zlhB4Ssc3hYTpBS\",\n };\n const segmentConfig: InitOptions = {\n integrations: {\n \"Segment.io\": {\n apiHost: originURL.host + \"/segment/v1\",\n protocol: originURL.protocol.replace(\":\", \"\"),\n },\n },\n highEntropyValuesClientHints: [\n \"architecture\",\n \"bitness\",\n \"model\",\n \"platformVersion\",\n \"uaFullVersion\",\n \"fullVersionList\",\n \"wow64\",\n ],\n };\n const analytics = AnalyticsBrowser.load(segmentSettings, segmentConfig);\n return { analytics };\n}\n","import { createContext, useEffect, useState, type FC, type PropsWithChildren } from \"react\";\nimport { type RunnerMainService } from \"@/ipc\";\nimport type { AppMainInfo, AppMainService } from \"frontend-shared/local-runner\";\n\nexport type DesktopContextValue = {\n isDesktop: boolean;\n runnerService?: RunnerMainService;\n appMainService?: AppMainService;\n appMainInfo?: AppMainInfo;\n};\n\n/**\n * This context can be used to check whether the dashboard is running in a desktop environment, and if so,\n * provides access to the {@link runnerMainService} IPC service.\n */\nexport const DesktopContext = createContext(null);\n\nexport const DesktopProvider: FC<\n {\n isDesktop: boolean;\n runnerService?: RunnerMainService;\n appMainService?: AppMainService;\n } & PropsWithChildren\n> = ({ isDesktop, runnerService, appMainService, children }) => {\n const [appMainInfo, setAppMainInfo] = useState(undefined);\n\n useEffect(() => {\n if (!appMainService) {\n return;\n }\n appMainService.about().then(\n (appMainInfo: AppMainInfo) => {\n setAppMainInfo(appMainInfo);\n },\n (error: unknown) => {\n console.error(\"Failed to fetch app main info\", error);\n },\n );\n }, [appMainService]);\n\n const value: DesktopContextValue = { isDesktop, runnerService, appMainService, appMainInfo };\n return {children};\n};\n","import { DesktopContext } from \"@/contexts/DesktopProvider\";\nimport { useContext } from \"react\";\n\nexport const useDesktop = () => {\n const ctx = useContext(DesktopContext);\n\n if (!ctx) {\n throw new Error(\"useDesktop must be used within a DesktopProvider\");\n }\n\n return ctx;\n};\n","import { useGetAccount } from \"@/queries/account-queries\";\nimport { useContext, useEffect } from \"react\";\nimport { useAuthenticatedUser } from \"@/queries/user-queries\";\nimport { SegmentContext } from \"@/contexts/SegmentContext\";\nimport { BuildVersion } from \"@/utils/version\";\nimport type { MuxPlayerRefAttributes } from \"@mux/mux-player-react\";\nimport { useDesktop } from \"@/hooks/use-desktop\";\n\nconst useSegment = () => useContext(SegmentContext);\n\nexport const useSegmentIdentify = () => {\n const segment = useSegment();\n const { data: account } = useGetAccount();\n\n useEffect(() => {\n if (!segment?.analytics) {\n console.debug(\"segment not available\");\n return;\n }\n\n if (!account) {\n console.debug(\"Account not available\");\n return;\n }\n segment.analytics\n .identify(account.id, {\n name: account.name,\n email: account.email,\n avatar: account.avatarUrl,\n })\n .catch(console.error);\n }, [account, segment]);\n};\n\nexport const useResetSegment = () => {\n const segment = useSegment();\n\n return () => {\n if (!segment?.analytics) {\n console.debug(\"segment not available\");\n return;\n }\n\n segment.analytics.reset().catch(console.error);\n };\n};\n\nfunction isMuxPlayerElement(element: Element): element is MuxPlayerRefAttributes {\n return element.tagName.toLowerCase() === \"mux-player\";\n}\n\nexport const useSegmentTrack = () => {\n const segment = useSegment();\n const desktop = useDesktop();\n const { data: user } = useAuthenticatedUser();\n const { data: account } = useGetAccount();\n\n return (eventName: string, properties?: Readonly>) => {\n if (!segment?.analytics) {\n console.debug(\"segment not available\");\n return;\n }\n\n const props = { ...properties };\n if (user) {\n // see https://www.notion.so/gitpod/Gitpod-Next-Data-Tracking-1446425f2d528006a67de82b31b5baaf?pvs=4#1446425f2d52808dabdfd1e0e30e0630\n props.organization_user_id = user.id;\n props.auth_principal = \"user\";\n props.auth_id = user.id;\n props.account_id = account?.id;\n props.organization_id = user.organizationId;\n }\n if (window.isWebview) {\n props.client = \"vscode\";\n } else if (desktop.isDesktop) {\n props.client = \"desktop\";\n props.desktopQuality = desktop.appMainInfo?.quality;\n props.desktopVersion = desktop.appMainInfo?.version;\n } else {\n props.client = \"web\";\n }\n props.dashboardVersion = BuildVersion;\n Object.assign(props, segment.platformDetails);\n\n segment.analytics.track(eventName, props).catch(console.error);\n };\n};\n\nconst findLocation = (target: HTMLElement) => {\n const element = target.closest(`[data-track-location]`);\n return element?.getAttribute(\"data-track-location\") || undefined;\n};\n\nexport const useButtonOrAnchorTracking = () => {\n const track = useSegmentTrack();\n\n useEffect(() => {\n const trackButtonOrAnchor = (\n target: HTMLAnchorElement | HTMLButtonElement | HTMLDivElement | MuxPlayerRefAttributes,\n ) => {\n const trackingMsg: ButtonOrAnchorTrackingProps = {\n path: window.location.pathname,\n location: findLocation(target),\n label: anonymizeUrls(target.ariaLabel || target.textContent || undefined),\n };\n\n if (target instanceof HTMLButtonElement || target instanceof HTMLDivElement) {\n //retrieve href if parent is an anchor element\n if (target.parentElement instanceof HTMLAnchorElement) {\n const anchor = target.parentElement;\n trackingMsg.destination = anchor.href;\n }\n }\n\n if (target instanceof HTMLAnchorElement) {\n const anchor = target;\n trackingMsg.destination = anchor.href;\n }\n\n track(\"dashboard_clicked\", trackingMsg);\n };\n\n const handleButtonOrAnchorTracking = (props: MouseEvent) => {\n const root = document.getElementById(\"root\");\n let curr = props.target as HTMLElement;\n\n while (!(curr instanceof Document) && curr !== root) {\n if (\n curr instanceof HTMLButtonElement ||\n curr instanceof HTMLAnchorElement ||\n (curr instanceof HTMLDivElement && curr.onclick) ||\n isMuxPlayerElement(curr)\n ) {\n trackButtonOrAnchor(curr);\n break; //finding first ancestor is sufficient\n }\n curr = curr.parentNode as HTMLElement;\n }\n };\n\n window.addEventListener(\"click\", handleButtonOrAnchorTracking, true);\n return () => window.removeEventListener(\"click\", handleButtonOrAnchorTracking, true);\n });\n};\n\ntype ButtonOrAnchorTrackingProps = {\n path: string;\n location?: string;\n label: string | undefined;\n destination?: string;\n};\n\nexport const TrackLocations = {\n Sidebar: \"sidebar\",\n SidebarOrgSwitcher: \"sidebar_org_switcher\",\n SidebarEnvironmentList: \"sidebar_environment_list\",\n SidebarCreateEnvironmentModal: \"sidebar_create_environment_modal\",\n NewPersonalAccessTokenModal: \"new_personal_access_token_modal\",\n DeletePersonalAccessTokenModal: \"delete_personal_access_token_modal\",\n DeleteOrganizationModal: \"delete_organization_modal\",\n InventoryStopEnvironmentModal: \"inventory_stop_environment_modal\",\n InventoryDeleteEnvironmentModal: \"inventory_delete_environment_modal\",\n ProjectsPageCreateEnvironmentModal: \"projects_page_create_environment_modal\",\n ProjectDeleteModal: \"project_delete_modal\",\n EditProjectModal: \"edit_project_modal\",\n CreateProjectModal: \"create_project_modal\",\n CreateEnvironmentSCMAuthenticationModal: \"create_environment_scm_authentication_modal\",\n EnvironmentSCMAuthenticationModal: \"environment_scm_authentication_modal\",\n EnvironmentSSHFormPopover: \"environment_ssh_form_popover\",\n EnvironmentOpenPortPoppover: \"environment_open_port_poppover\",\n EnvironmentSecretsModal: \"environment_secrets_modal\",\n EnvironmentOnboarding: \"environment_onboarding\",\n EnvironmentOnboardingDevcontainer: \"environment_onboarding_devcontainer\",\n EnvironmentOnboardingAutomations: \"environment_onboarding_automations\",\n EnvironmentOnboardingCommitFiles: \"environment_onboarding_commit_files\",\n EnvironmentOnboardingShare: \"environment_onboarding_share\",\n EnvironmentOnboardingDevContainerTemplateModal: \"environment_onboarding_dev_container_template_modal\",\n EnvironmentOnboardingAutomationsTemplateModal: \"environment_onboarding_automations_template_modal\",\n EnvironmentOnboardingCreateProjectFromEnvironmentModal:\n \"environment_onboarding_create_project_from_environment_modal\",\n DeleteSecretModal: \"delete_secret_modal\",\n NewSecretModal: \"new_secret_modal\",\n EditSecretModal: \"edit_secret_modal\",\n DeleteRunnerModal: \"delete_runner_modal\",\n ForceDeleteRunnerModal: \"force_delete_runner_modal\",\n NewRunnerModal: \"new_runner_modal\",\n RenameRunnerModal: \"rename_runner_modal\",\n OrganizationMemberSuspendModal: \"organization_member_suspend_modal\",\n OrganizationMemberChangeRoleModal: \"organization_member_change_role_modal\",\n OrganizationMemberLeaveModal: \"organization_member_leave_modal\",\n OnboardingHowGitpodWorksTab: \"onboarding_how_gitpod_works_tab\",\n OnboardingRunnerSelectTab: \"onboarding_runner_select_tab\",\n OnboardingRunnerDesktopTab: \"onboarding_runner_desktop_tab\",\n OnboardingRunnerSelectProviderTab: \"onboarding_runner_select_provider_tab\",\n OnboardingRunnerConfigureTab: \"onboarding_runner_configure_tab\",\n OnboardingRunnerCreateRunnerTabStep: \"onboarding_runner_create_runner_tab_step\",\n OnboardingRunnerConfigureCloudFormationStackTabStep: \"onboarding_runner_configure_cloud_formation_stack_tab_step\",\n OnboardingRunnerConfigureSCMTabStep: \"onboarding_runner_configure_scm_tab_step\",\n OnboardingRunnerAddSCMProviderModal: \"onboarding_runner_add_scm_provider_modal\",\n OnboardingRunnerEditSCMProviderModal: \"onboarding_runner_edit_scm_provider_modal\",\n OnboardingRunnerDeleteSCMProviderModal: \"onboarding_runner_delete_scm_provider_modal\",\n OnboardingRunnerConfigureEnvironmentClassesTabStep: \"onboarding_runner_configure_environment_classes_tab_step\",\n OnboardingRunnerAddEnvironmentClassModal: \"onboarding_runner_add_environment_class_modal\",\n OnboardingRunnerEditEnvironmentClassModal: \"onboarding_runner_edit_environment_class_modal\",\n OnboardingAutomateTab: \"onboarding_automate_tab\",\n OnboardingAutomateSCMAuthenticationModal: \"onboarding_automate_scm_authentication_modal\",\n OnboardingShareTab: \"onboarding_share_tab\",\n DeleteEnvironmentModal: \"delete_environment_modal\",\n ForceDeleteEnvironmentModal: \"force_delete_environment_modal\",\n AddSCMProviderModal: \"add_scm_provider_modal\",\n EditSCMProviderModal: \"edit_scm_provider_modal\",\n DeleteSCMProviderModal: \"delete_scm_provider_modal\",\n AddLocalSCMProviderModal: \"add_local_scm_provider_modal\",\n EditLocalSCMProviderModal: \"edit_local_scm_provider_modal\",\n DeleteLocalSCMProviderModal: \"delete_local_scm_provider_modal\",\n DisableLocalRunnersModal: \"disable_local_runners_modal\",\n AddEnvironmentClassModal: \"add_environment_class_modal\",\n EditEnvironmentClassModal: \"edit_environment_class_modal\",\n PrivacyPolicyNudge: \"privacy_policy_nudge\",\n AnnouncementBannerPopover: \"announcement_banner_popover\",\n NudgeDownloadAppPopover: \"nudge_download_app_popover\",\n GitAuthenticationTokenDeleteModal: \"git_authentication_token_delete_modal\",\n SetupSSOModal: \"setup_sso_modal\",\n DeactivateSSOModal: \"deactivate_sso_modal\",\n TestingSSOModal: \"testing_sso_modal\",\n ContextUrlInput: \"context_url_input\",\n DeleteAccountModal: \"delete_account_modal\",\n} as const;\nexport type TrackLocation = (typeof TrackLocations)[keyof typeof TrackLocations];\n\n// Helper type to add a data-track-location prop to a component\nexport type PropsWithTrackLocation = {\n \"data-track-location\"?: TrackLocation;\n} & Props;\n\n// borrowed from https://github.com/microsoft/vscode/blob/46f00e42d894e87f2b92868da12d4771c606d3c4/src/vs/platform/telemetry/common/telemetryUtils.ts#L274\nexport function anonymizeFilePaths(stack: string): string {\n // Fast check to see if it is a file path to avoid doing unnecessary heavy regex work\n if (!stack || (!stack.includes(\"/\") && !stack.includes(\"\\\\\"))) {\n return stack;\n }\n\n let updatedStack = stack;\n\n // eslint-disable-next-line no-useless-escape\n const nodeModulesRegex = /^[\\\\\\/]?(node_modules|node_modules\\.asar)[\\\\\\/]/;\n // eslint-disable-next-line no-useless-escape\n const fileRegex = /(file:\\/\\/)?([a-zA-Z]:(\\\\\\\\|\\\\|\\/)|(\\\\\\\\|\\\\|\\/))?([\\w-\\._]+(\\\\\\\\|\\\\|\\/))+[\\w-\\._]*/g;\n let lastIndex = 0;\n updatedStack = \"\";\n\n for (let result = fileRegex.exec(stack); result !== null; result = fileRegex.exec(stack)) {\n // anoynimize user file paths that do not need to be retained or cleaned up.\n if (!nodeModulesRegex.test(result[0])) {\n updatedStack += stack.substring(lastIndex, result.index) + \"\";\n lastIndex = fileRegex.lastIndex;\n }\n }\n if (lastIndex < stack.length) {\n updatedStack += stack.substring(lastIndex);\n }\n\n return updatedStack;\n}\n\nexport function anonymizeUrls(label: string | undefined): string | undefined {\n if (!label?.includes(\"http://\") && !label?.includes(\"https://\")) {\n // quick check for early return\n return label;\n }\n\n let anonymizedLabel = \"\";\n let lastIndex = 0;\n\n const urlRegex = /(https?:\\/\\/[^\\s]+)/g;\n for (let result = urlRegex.exec(label); result !== null; result = urlRegex.exec(label)) {\n anonymizedLabel += label.substring(lastIndex, result.index) + \"\";\n lastIndex = urlRegex.lastIndex;\n }\n\n if (lastIndex < label.length) {\n anonymizedLabel += label.substring(lastIndex);\n }\n\n return anonymizedLabel;\n}\n","import { useGitpodAPI } from \"@/hooks/use-gitpod-api\";\nimport { useShutdownIntercom } from \"@/hooks/use-intercom\";\nimport { useResetSegment, useSegmentTrack } from \"@/hooks/use-segment\";\nimport { getPrincipal, setPrincipal } from \"@/principal\";\nimport { defaultRetry, defaultThrowOnError, isNotFoundError, isUnauthorizedError } from \"@/queries/errors\";\nimport { toPlainMessage, type PlainMessage } from \"@bufbuild/protobuf\";\nimport { hashKey, useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { ListLoginProvidersRequest, type Account, type LoginProvider } from \"gitpod-next-api/gitpod/v1/account_pb\";\n\nexport type PlainAccount = PlainMessage;\nconst toPlainAccount = (account: Account): PlainAccount => {\n return toPlainMessage(account);\n};\n\nexport type PlainLoginProvider = PlainMessage;\nconst toPlainLoginProvider = (p: LoginProvider): PlainLoginProvider => {\n return toPlainMessage(p);\n};\n\nconst key = [\"account\"];\nexport const getAccountQueryKey = () => key;\n\nexport const useGetAccount = () => {\n const client = useQueryClient();\n const api = useGitpodAPI();\n\n return useQuery({\n queryKey: getAccountQueryKey(),\n queryFn: async () => {\n let account: PlainAccount;\n try {\n const { account: rawAccount } = await api.accountService.getAccount({});\n if (!rawAccount) {\n throw new Error(\"Account not found\");\n }\n account = toPlainAccount(rawAccount);\n } catch (error) {\n // Clear the account for unauthenticated errors\n if (isUnauthorizedError(error)) {\n // Remove queries to purge any data since account is not authenticated\n client.removeQueries({\n type: \"all\",\n // all keys except the getAccountQueryKey query - otherwise we'll be stuck in a loading state forever\n predicate: (query) => {\n const removeQuery = hashKey(query.queryKey) !== hashKey(getAccountQueryKey());\n return removeQuery;\n },\n });\n return null;\n }\n\n // Clear the session for not found errors\n // This happens when an account is deleted (or the db has been wiped) while they are logged in\n if (isNotFoundError(error)) {\n await fetch(\"/auth/oidc/logout\", {\n method: \"POST\",\n credentials: \"same-origin\",\n });\n\n return null;\n }\n\n throw error;\n }\n\n if (account) {\n const memberships = account.memberships || [];\n\n // if we have a principal, check if it's still valid\n const currentPrincipal = getPrincipal();\n if (currentPrincipal) {\n if (memberships.some((m) => m.userId === currentPrincipal)) {\n // previous principal is still valid\n return account;\n } else {\n // previous principal is not valid anymore\n setPrincipal(\"\");\n }\n }\n\n // set principal to first membership\n const membership = memberships[0];\n const userId = membership?.userId;\n if (userId) {\n setPrincipal(userId);\n }\n\n return account;\n }\n },\n throwOnError: defaultThrowOnError,\n retry(failureCount, error) {\n // Don't retry if it's an unauthenticated error\n if (isUnauthorizedError(error)) {\n return false;\n }\n\n return defaultRetry(failureCount, error);\n },\n // Refetch the account to regularly check if session is still active/valid\n refetchInterval(query) {\n // Don't refetch if we're unauthenticated\n if (isUnauthorizedError(query.state.error) || query.state.data === null) {\n return false;\n }\n\n // otherwise refetch every minute\n return 1000 * 60;\n },\n staleTime: 1000 * 50,\n refetchOnMount: false, // disable additional instances of a query to trigger background refetches\n });\n};\n\nexport const useListLoginProviders = (inviteId?: string) => {\n const api = useGitpodAPI();\n\n return useQuery({\n queryKey: [\"loginProviders\", { inviteId }],\n queryFn: async () => {\n const { loginProviders } = await api.accountService.listLoginProviders(\n new ListLoginProvidersRequest({\n filter: {\n inviteId,\n },\n }),\n );\n if (!loginProviders) {\n throw new Error(\"Login providers not found\");\n }\n return loginProviders.map(toPlainLoginProvider);\n },\n enabled: !!inviteId,\n throwOnError: defaultThrowOnError,\n retry: defaultRetry,\n });\n};\n\nexport const useDeleteAccount = () => {\n const api = useGitpodAPI();\n const segmentTrack = useSegmentTrack();\n const client = useQueryClient();\n const shutdownIntercom = useShutdownIntercom();\n const resetMixpanel = useResetSegment();\n\n return useMutation({\n mutationFn: async ({ accountId }: { accountId: string }) => {\n const response = await api.accountService.deleteAccount({ accountId });\n return response;\n },\n onSettled: (_response, error, variables) => {\n if (!variables.accountId) {\n return;\n }\n if (error) {\n segmentTrack(\"Account delete failed\", {\n accountId: variables.accountId,\n error: error.message || \"Unknown error\",\n });\n } else {\n segmentTrack(\"Account delete succeeded\", {\n accountId: variables.accountId,\n });\n client.clear();\n shutdownIntercom();\n resetMixpanel();\n }\n },\n });\n};\n","import { useGetAccount } from \"@/queries/account-queries\";\nimport { useEffect, useState } from \"react\";\n\nexport const useBootPylon = (options: { enabled: boolean }) => {\n const APP_ID = \"efa0bf58-5742-41dd-81e3-ffcb7cccda75\";\n\n const { data: account } = useGetAccount();\n const [pylonLoaded, setPylonLoaded] = useState(false);\n\n useEffect(() => {\n if (!options.enabled) {\n console.log(\"Not booting Pylon: disabled\");\n return;\n }\n\n if (pylonLoaded) {\n console.log(\"Not booting Pylon: already loaded\");\n return;\n }\n\n const script = document.createElement(\"script\");\n script.setAttribute(\"type\", \"text/javascript\");\n script.setAttribute(\"async\", \"true\");\n script.setAttribute(\"src\", `https://widget.usepylon.com/widget/${APP_ID}`);\n script.onload = () => {\n setPylonLoaded(true);\n };\n script.onerror = (error) => {\n console.log(\"Not booting Pylon: failed to inject script\", error);\n };\n\n const firstScript = document.getElementsByTagName(\"script\")[0];\n firstScript?.parentNode?.insertBefore(script, firstScript);\n\n return () => {\n document.head.removeChild(script);\n };\n }, [options.enabled, pylonLoaded]);\n\n useEffect(() => {\n // Setting window.pylon to undefined causes pylon the hide the chat bubble\n window.pylon = options.enabled\n ? {\n chat_settings: {\n app_id: APP_ID,\n email: account?.email ?? \"unauthenticated@example.com\",\n name: account?.name ?? \"Unauthenticated\",\n avatar_url: account?.avatarUrl,\n },\n }\n : undefined;\n }, [account, options.enabled]);\n};\n","import { useGetAccount } from \"@/queries/account-queries\";\nimport { useFeatureFlag, type SettingTypeOf, type SettingValue } from \"configcat-react\";\n\nexport function useFlag(\n flagKey: string,\n defaultValue: T,\n): { value: SettingTypeOf; loading: boolean } {\n const { data: account } = useGetAccount();\n\n const { value, loading } = useFeatureFlag(\n flagKey,\n defaultValue,\n account\n ? {\n custom: {},\n identifier: account.id,\n email: account.email,\n }\n : undefined,\n );\n\n return { value, loading };\n}\n","import { Flags } from \"@/feature-flags\";\nimport { useBootPylon } from \"@/hooks/use-boot-pylon\";\nimport { useFlag } from \"@/hooks/use-flag\";\nimport { useBootIntercom } from \"@/hooks/use-intercom\";\nimport { useEffect, useState } from \"react\";\n\ntype Provider = null | \"pylon\" | \"intercom\";\n\nexport const useBootInAppChat = () => {\n const { value, loading } = useFlag(Flags.EnablePylonInAppChat, false);\n const [provider, setProvider] = useState(null);\n\n // To avoid first loading intercom, and then loading pylon once the feature flag is loaded\n // we disable both providers until the feature flag is loaded\n useEffect(() => {\n if (!loading) {\n setProvider(value ? \"pylon\" : \"intercom\");\n }\n }, [value, loading]);\n\n useBootPylon({ enabled: provider === \"pylon\" });\n useBootIntercom({ enabled: provider === \"intercom\" });\n};\n","import { useDesktop } from \"@/hooks/use-desktop\";\nimport { anonymizeFilePaths, useSegmentTrack } from \"@/hooks/use-segment\";\nimport { type LocalRunnerStatus } from \"frontend-shared/local-runner\";\nimport { useEffect, useState } from \"react\";\n\nexport const useLocalRunner = () => {\n const desktop = useDesktop();\n\n const [status, setStatus] = useState(undefined);\n\n useEffect(() => desktop.runnerService?.onRunnerStatus(setStatus), [desktop.runnerService]);\n\n const track = useSegmentTrack();\n useEffect(() => {\n if (!status) {\n return;\n }\n const currentEvent = mapLocalRunnerStatusToEvent(status);\n const currentTrackedEvent = JSON.stringify(currentEvent);\n if (currentTrackedEvent !== window.localRunnerLastTrackedEvent) {\n track(\"desktop_local_runner\", currentEvent);\n window.localRunnerLastTrackedEvent = currentTrackedEvent;\n }\n }, [status, track]);\n\n if (!desktop.isDesktop) {\n return {\n loading: false,\n };\n }\n\n return {\n loading: !status,\n status,\n };\n};\n\ntype DesktopLocalRunnerEvent = {\n phase: string;\n runner_id?: string;\n failure?: LocalRunnerStatus[\"failure\"];\n installation?: Omit & {\n errorStepName?: string;\n errorStepMessage?: string;\n };\n};\n\nexport function mapLocalRunnerStatusToEvent(status: LocalRunnerStatus) {\n const currentEvent: DesktopLocalRunnerEvent = {\n phase: status.phase,\n runner_id: status.currentRunnerId,\n failure: status.phase === \"failed\" ? status.failure : undefined,\n };\n if (status.phase === \"failed\" && status.failure) {\n currentEvent.failure = {\n message: status.failure.message,\n details: status.failure.details && anonymizeFilePaths(status.failure.details),\n };\n }\n if (status.phase === \"installing\" && status.installation) {\n const installation: Partial = {\n ...status.installation,\n };\n delete installation.steps;\n currentEvent.installation = installation;\n if (typeof status.installation.exitCode === \"number\" && status.installation.exitCode !== 0) {\n const steps = Object.entries(status.installation.steps);\n const lastErrorStep = steps.reverse().find(([_, s]) => !!s.error);\n if (lastErrorStep) {\n currentEvent.installation.errorStepName = lastErrorStep[1].name;\n const errorMessage = lastErrorStep[1].error;\n if (errorMessage) {\n currentEvent.installation.errorStepMessage = anonymizeFilePaths(errorMessage);\n }\n }\n }\n }\n return currentEvent;\n}\n","import { LoadingState } from \"@/components/podkit/loading/LoadingState\";\nimport { useBootInAppChat } from \"@/hooks/use-boot-in-app-chat\";\nimport { useLocalRunner } from \"@/hooks/use-local-runner\";\nimport { useSegmentIdentify } from \"@/hooks/use-segment\";\nimport { setPrincipal } from \"@/principal\";\nimport { useGetAccount } from \"@/queries/account-queries\";\nimport { useAuthenticatedUser } from \"@/queries/user-queries\";\nimport { LocalRunnerStatus } from \"frontend-shared/local-runner\";\nimport { type FC } from \"react\";\nimport { Navigate, Outlet, useLocation, useParams } from \"react-router-dom\";\n\nexport const AuthenticatedUserLayout: FC = () => {\n const localRunner = useLocalRunner();\n useBootInAppChat();\n useSegmentIdentify();\n\n // This hook loads the account, which is a dependency to most of the other queries\n const { data: account, isPending: isLoadingAccount, error: errorAccount } = useGetAccount();\n\n const { data: user, isPending: isLoadingUser } = useAuthenticatedUser();\n const location = useLocation();\n const { inviteId } = useParams();\n\n // Wait for the account to be loaded\n if (!account && isLoadingAccount && localRunner.loading) {\n return ;\n }\n\n if (LocalRunnerStatus.needsRunnerScreen(localRunner.status)) {\n return ;\n }\n\n // Redirect to create organization if the account has no memberships\n const needsRedirectToJoinOrCreateOrg = !isAlreadyJoinOrCreatePath(location.pathname);\n const isAccoundWithoutMemberships = account && (account.memberships || []).length === 0;\n if (isAccoundWithoutMemberships && needsRedirectToJoinOrCreateOrg) {\n setPrincipal(\"\");\n // Redirect to join organization, if there are joinable orgs and no memberships\n if (account?.joinables && account.joinables.length > 0) {\n return ;\n }\n\n return ;\n }\n\n if (isLoadingAccount) {\n return ;\n }\n\n // Redirect to login if the user is not authenticated - maintain the current location to redirect to after login\n if (!account && !errorAccount) {\n let to = \"/login?\";\n if (inviteId) {\n to += \"inviteId=\" + inviteId + \"&\";\n }\n to += \"navigateTo=\" + encodeURIComponent(location.pathname + location.search + location.hash);\n return ;\n }\n\n // Wait for the user to be loaded\n // but only if the account actually has memberships\n if (!isAccoundWithoutMemberships && !user && isLoadingUser) {\n return ;\n }\n\n // If we got here, there's a user and we can render the layout\n return (\n <>\n \n \n );\n};\n\nfunction isAlreadyJoinOrCreatePath(locationPath: string) {\n if (locationPath?.startsWith(\"/join-organization\")) {\n return true;\n }\n if (locationPath?.startsWith(\"/create-organization\")) {\n return true;\n }\n return false;\n}\n","import type { Size } from \"@/assets/icons/geist/Size\";\nimport { type PropsWithClassName } from \"@/components/podkit/lib/cn\";\nimport type { FC } from \"react\";\n\nexport const IconCheckFill: FC<{ size: Size } & PropsWithClassName> = ({ size, className }) => {\n switch (size) {\n case \"sm\":\n return (\n \n \n \n );\n case \"base\":\n return (\n \n \n \n );\n case \"lg\":\n return (\n \n \n \n );\n }\n};\n","/**\n * Copyright (c) 2023 Gitpod GmbH. All rights reserved.\n * Licensed under the GNU Affero General Public License (AGPL).\n * See License.AGPL.txt in the project root for license information.\n */\n\nimport { forwardRef, type PropsWithChildren } from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cn } from \"@/components/podkit/lib/cn\";\n\ntype TextProps = PropsWithChildren<{\n id?: string;\n className?: string;\n muted?: boolean;\n asChild?: boolean;\n title?: string;\n}>;\n\nexport const Text = forwardRef(\n ({ id, className, muted, children, asChild, ...props }, ref) => {\n const Comp = asChild ? Slot : \"p\";\n\n return (\n \n {children}\n \n );\n },\n);\nText.displayName = \"Text\";\n","/**\n * Copyright (c) 2023 Gitpod GmbH. All rights reserved.\n * Licensed under the GNU Affero General Public License (AGPL).\n * See License.AGPL.txt in the project root for license information.\n */\n\nimport { cn } from \"@/components/podkit/lib/cn\";\nimport { type FC, type PropsWithChildren } from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\n\ntype HeadingProps = PropsWithChildren<{\n id?: string;\n className?: string;\n asChild?: boolean;\n}>;\n\nexport const Heading1: FC = ({ id, className, children, asChild }) => {\n const Comp = asChild ? Slot : \"h1\";\n\n return (\n \n {children}\n \n );\n};\n\nexport const Heading2: FC = ({ id, className, children, asChild }) => {\n const Comp = asChild ? Slot : \"h2\";\n\n return (\n \n {children}\n \n );\n};\n\nexport const Heading3: FC = ({ id, className, children, asChild }) => {\n const Comp = asChild ? Slot : \"h3\";\n\n return (\n \n {children}\n \n );\n};\n\nexport const Heading4: FC = ({ id, className, children, asChild }) => {\n const Comp = asChild ? Slot : \"h4\";\n\n return (\n \n {children}\n \n );\n};\n\n/**\n * Intended to be placed beneath a heading to provide more context\n */\nexport const Subheading: FC = ({ id, className, children, asChild }) => {\n const Comp = asChild ? Slot : \"p\";\n\n return (\n \n {children}\n \n );\n};\n","export function equals(\n one: readonly T[] | undefined,\n other: readonly T[] | undefined,\n itemEquals: (a: T, b: T) => boolean = (a, b) => a === b,\n): boolean {\n if (one === other) {\n return true;\n }\n\n if (!one || !other) {\n return false;\n }\n\n if (one.length !== other.length) {\n return false;\n }\n\n for (let i = 0, len = one.length; i < len; i++) {\n if (!itemEquals(one[i], other[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function coalesce(array: readonly (T | undefined | null)[]): T[] {\n return array.filter((e): e is T => !!e);\n}\n\nexport function distinct(array: readonly T[], keyFn: (value: T) => unknown = (value) => value): T[] {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const seen = new Set();\n\n return array.filter((element) => {\n const key = keyFn(element);\n if (seen.has(key)) {\n return false;\n }\n seen.add(key);\n return true;\n });\n}\n","import { Code, ConnectError } from \"@connectrpc/connect\";\n\n/**\n * Formats the `error` in a human-readable way\n */\nexport function formatError(error: unknown, messages?: Partial>): string {\n if (error instanceof ConnectError) {\n const customMessage = messages?.[error.code];\n if (customMessage) {\n return customMessage;\n }\n return `${codeToText(error.code)}: ${error.rawMessage}`;\n }\n if (error instanceof Error) {\n return error.message;\n }\n if (typeof error === \"string\") {\n return error;\n }\n return \"Unknown error\";\n}\n\nfunction codeToText(code: Code): string {\n switch (code) {\n case Code.Canceled:\n return \"Canceled\";\n case Code.InvalidArgument:\n return \"Invalid argument\";\n case Code.DeadlineExceeded:\n return \"Deadline exceeded\";\n case Code.NotFound:\n return \"Not found\";\n case Code.AlreadyExists:\n return \"Already exists\";\n case Code.PermissionDenied:\n return \"Permission denied\";\n case Code.ResourceExhausted:\n return \"Resource exhausted\";\n case Code.FailedPrecondition:\n return \"Failed precondition\";\n case Code.Aborted:\n return \"Aborted\";\n case Code.OutOfRange:\n return \"Out of range\";\n case Code.Unknown:\n case Code.Unimplemented:\n case Code.Internal:\n return \"Internal\";\n case Code.Unavailable:\n return \"Unavailable\";\n case Code.DataLoss:\n return \"Data loss\";\n case Code.Unauthenticated:\n return \"Unauthenticated\";\n }\n}\n\n/**\n * List of all Connect error codes\n * Intended to be used in Storybook and tests.\n */\nexport const connectErrors = {\n [Code.Canceled]: new ConnectError(\"message\", Code.Canceled),\n [Code.Unknown]: new ConnectError(\"message\", Code.Unknown),\n [Code.InvalidArgument]: new ConnectError(\"message\", Code.InvalidArgument),\n [Code.DeadlineExceeded]: new ConnectError(\"message\", Code.DeadlineExceeded),\n [Code.NotFound]: new ConnectError(\"message\", Code.NotFound),\n [Code.AlreadyExists]: new ConnectError(\"message\", Code.AlreadyExists),\n [Code.PermissionDenied]: new ConnectError(\"message\", Code.PermissionDenied),\n [Code.ResourceExhausted]: new ConnectError(\"message\", Code.ResourceExhausted),\n [Code.FailedPrecondition]: new ConnectError(\"message\", Code.FailedPrecondition),\n [Code.Aborted]: new ConnectError(\"message\", Code.Aborted),\n [Code.OutOfRange]: new ConnectError(\"message\", Code.OutOfRange),\n [Code.Unimplemented]: new ConnectError(\"message\", Code.Unimplemented),\n [Code.Internal]: new ConnectError(\"message\", Code.Internal),\n [Code.Unavailable]: new ConnectError(\"message\", Code.Unavailable),\n [Code.DataLoss]: new ConnectError(\"message\", Code.DataLoss),\n [Code.Unauthenticated]: new ConnectError(\"message\", Code.Unauthenticated),\n};\n\nexport class FetchError extends Error {\n public readonly status: number;\n public readonly statusText: string;\n\n constructor(message: string, status: number, statusText: string) {\n super(message);\n this.name = \"FetchError\";\n this.status = status;\n this.statusText = statusText;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, FetchError);\n }\n }\n}\n\nexport function isFetchError(error: unknown): error is FetchError {\n return error instanceof FetchError;\n}\n","import { cn, type PropsWithClassName } from \"@/components/podkit/lib/cn\";\nimport { Text } from \"@/components/podkit/typography/Text\";\nimport { formatError } from \"@/utils/errors\";\nimport { type Code, ConnectError } from \"@connectrpc/connect\";\nimport type { FC } from \"react\";\n\ntype ErrorMessageProps = PropsWithClassName & {\n error: Error | string | undefined | null;\n messages?: Partial>;\n \"data-testid\"?: string;\n};\n\n/**\n * Renders Error (especially ConnectError) in a human-readable way\n *\n * If no error is supplied it doesn't render anything; so no need to conditionally render\n * this component\n */\nexport const ErrorMessage: FC = ({ error, className, messages, \"data-testid\": testId }) => {\n if (!error) {\n return null;\n }\n\n const fallBackTestId = error instanceof ConnectError ? `error-message-connect-${error.code}` : \"error-message\";\n return (\n \n {formatError(error, messages)}\n \n );\n};\n","import { useEffect } from \"react\";\n\nexport function useDocumentTitle(title?: string, removeSuffix?: boolean) {\n useEffect(() => {\n if (title && title.length > 0) {\n document.title = `${title} ${!removeSuffix && `| Gitpod`}`;\n }\n }, [removeSuffix, title]);\n}\n","import { useGitpodAPI } from \"@/hooks/use-gitpod-api\";\nimport { keyWithPrincipal } from \"@/queries/principal-key\";\nimport { useAuthenticatedUser } from \"@/queries/user-queries\";\nimport { toPlainMessage } from \"@bufbuild/protobuf\";\nimport { type QueryClient, useMutation, useQueries, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport {\n CreateEnvironmentClassRequest,\n CreateHostAuthenticationTokenRequest,\n CreateSCMIntegrationRequest,\n DeleteSCMIntegrationRequest,\n EnvironmentClass,\n EnvironmentClassValidationResult,\n type FieldValue,\n GetEnvironmentClassRequest,\n GetRunnerConfigurationSchemaRequest,\n type HostAuthenticationToken,\n HostAuthenticationTokenSource,\n ListEnvironmentClassesRequest,\n ListHostAuthenticationTokensRequest,\n ListSCMIntegrationsRequest,\n SCMIntegration,\n SCMIntegrationValidationResult,\n UpdateEnvironmentClassRequest,\n UpdateSCMIntegrationRequest,\n ValidateRunnerConfigurationRequest,\n ValidateRunnerConfigurationRequest_ValidateSCMIntegration,\n} from \"gitpod-next-api/gitpod/v1/runner_configuration_pb\";\n\nexport const runnerConfigurationQueryKey = {\n list: () => keyWithPrincipal([\"hostAuthenticationTokens\", \"list\"]),\n listRunnerSCMIntegrations: (runnerId?: string) => keyWithPrincipal([\"listRunnerSCMIntegrations\", runnerId]),\n listRunnerEnvironmentClasses: (runnerId?: string) => keyWithPrincipal([\"listRunnerEnvironmentClasses\", runnerId]),\n getEnvironmentClass: (environmentClassId?: string) => keyWithPrincipal([\"getEnvironmentClass\", environmentClassId]),\n getRunnerConfigurationSchema: (runnerId: string) => keyWithPrincipal([\"getRunnerConfigurationSchema\", runnerId]),\n};\n\n// Creates a host authentication token for a runner from a personal access token,\n// verifies if the token can be used to access a repository, and returns the token.\n// If the token does not have the required permissions, it is deleted and an error is thrown.\n// If a token already exists for the host, it is deleted and replaced with the new token.\nexport const useCreateAndVerifyHostAuthenticationTokenPAT = () => {\n const api = useGitpodAPI();\n const { data: user } = useAuthenticatedUser();\n\n return useMutation({\n mutationFn: async (options: { pat: string; runnerId: string; scmHost: string; repoUrl: string }) => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n\n // First, check if a token already exists for the host, and delete it if it does.\n // We only show the SCM modal if you either don't have a token, or if it's invalid,\n // so removing the old token should be fine.\n const { tokens } = await api.runnerConfigurationService.listHostAuthenticationTokens(\n new ListHostAuthenticationTokensRequest({\n filter: {\n userId: user.id,\n runnerId: options.runnerId,\n },\n }),\n );\n const existingToken = tokens.find((token) => token.host === options.scmHost);\n if (existingToken) {\n await api.runnerConfigurationService.deleteHostAuthenticationToken({\n id: existingToken.id,\n });\n }\n\n const { token } = await api.runnerConfigurationService.createHostAuthenticationToken(\n new CreateHostAuthenticationTokenRequest({\n userId: user.id,\n runnerId: options.runnerId,\n host: options.scmHost,\n token: options.pat,\n source: HostAuthenticationTokenSource.PAT,\n }),\n );\n\n // Parse context URL to check if the token is valid and has access to the repo.\n try {\n await api.runnerService.parseContextURL({\n contextUrl: options.repoUrl,\n runnerId: options.runnerId,\n });\n } catch (error) {\n // Delete the token if it's invalid.\n if (token) {\n await api.runnerConfigurationService.deleteHostAuthenticationToken({\n id: token.id,\n });\n }\n\n throw error;\n }\n\n return token;\n },\n });\n};\n\nexport const useDeleteHostAuthenticationTokenForHost = () => {\n const api = useGitpodAPI();\n const { data: user } = useAuthenticatedUser();\n\n return useMutation({\n mutationFn: async (options: { runnerId: string; scmHost: string }) => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n\n const { tokens } = await api.runnerConfigurationService.listHostAuthenticationTokens(\n new ListHostAuthenticationTokensRequest({\n filter: {\n userId: user.id,\n runnerId: options.runnerId,\n },\n }),\n );\n\n const token = tokens.find((token) => token.host === options.scmHost);\n if (!token) {\n // Already deleted\n return;\n }\n\n await api.runnerConfigurationService.deleteHostAuthenticationToken({\n id: token.id,\n });\n\n return;\n },\n });\n};\n\nexport const useDeleteHostAuthenticationToken = () => {\n const api = useGitpodAPI();\n const client = useQueryClient();\n const { data: user } = useAuthenticatedUser();\n return useMutation({\n mutationFn: async (options: { tokenId: string }) => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n await api.runnerConfigurationService.deleteHostAuthenticationToken({\n id: options.tokenId,\n });\n optimisticDeleteHostAuthenticationToken(client, options.tokenId);\n },\n });\n};\n\nexport const useListHostAuthenticationTokens = () => {\n const api = useGitpodAPI();\n const { data: user } = useAuthenticatedUser();\n return useQuery({\n queryKey: runnerConfigurationQueryKey.list(),\n queryFn: async () => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n const { tokens, pagination } = await api.runnerConfigurationService.listHostAuthenticationTokens(\n new ListHostAuthenticationTokensRequest({\n filter: {\n userId: user.id,\n },\n }),\n );\n\n return {\n tokens: tokens.map((token) => toPlainMessage(token)),\n pagination,\n };\n },\n enabled: !!user,\n staleTime: 500,\n });\n};\n\nexport const useRunnerConfigurationSchema = (runnerId: string | undefined) => {\n const api = useGitpodAPI();\n const { data: user } = useAuthenticatedUser();\n return useQuery({\n queryKey: runnerConfigurationQueryKey.getRunnerConfigurationSchema(runnerId || \"no-runner\"),\n queryFn: async () => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n const { schema } = await api.runnerConfigurationService.getRunnerConfigurationSchema(\n new GetRunnerConfigurationSchemaRequest({\n runnerId: runnerId,\n }),\n );\n\n return schema;\n },\n enabled: !!user && !!runnerId,\n staleTime: 500,\n });\n};\n\nexport type IntegrationConfiguration = {\n scmId: string;\n host?: string;\n pat?: boolean;\n oauth?: { clientId: string; clientSecret?: string; encryptedClientSecret?: Uint8Array };\n};\n\nexport const useCreateOrUpdateSCMIntegration = (runnerId: string, integrationId: string | undefined) => {\n const api = useGitpodAPI();\n const client = useQueryClient();\n const { data: user } = useAuthenticatedUser();\n\n return useMutation({\n mutationFn: async (configuration: IntegrationConfiguration) => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n\n const { result } = await api.runnerConfigurationService.validateRunnerConfiguration(\n new ValidateRunnerConfigurationRequest({\n runnerId,\n config: {\n case: \"scmIntegration\",\n value: new ValidateRunnerConfigurationRequest_ValidateSCMIntegration({\n host: configuration.host,\n pat: configuration.pat,\n scmId: configuration.scmId,\n oauthClientId: configuration.oauth?.clientId,\n oauthClientSecret: configuration.oauth?.clientSecret\n ? {\n case: \"oauthPlaintextClientSecret\",\n value: configuration.oauth?.clientSecret,\n }\n : undefined,\n }),\n },\n }),\n );\n\n if (result.case === \"scmIntegration\" && !result.value.valid) {\n return result.value;\n }\n\n if (!integrationId) {\n const { id: newId } = await api.runnerConfigurationService.createSCMIntegration(\n new CreateSCMIntegrationRequest({\n runnerId,\n host: configuration.host,\n pat: configuration.pat,\n scmId: configuration.scmId,\n oauthClientId: configuration.oauth?.clientId,\n oauthPlaintextClientSecret: configuration.oauth?.clientSecret,\n }),\n );\n addSCMIntegrationToCache(\n client,\n runnerId,\n new SCMIntegration({\n id: newId,\n ...configuration,\n }),\n );\n return new SCMIntegrationValidationResult({ valid: true });\n }\n\n await api.runnerConfigurationService.updateSCMIntegration(\n new UpdateSCMIntegrationRequest({\n id: integrationId,\n pat: configuration.pat,\n oauthClientId: configuration.oauth?.clientId,\n oauthPlaintextClientSecret: configuration.oauth?.clientSecret\n ? configuration.oauth?.clientSecret\n : undefined,\n }),\n );\n setSCMIntegrationInCache(\n client,\n runnerId,\n new SCMIntegration({\n id: integrationId,\n ...configuration,\n }),\n );\n return new SCMIntegrationValidationResult({ valid: true });\n },\n });\n};\n\nexport const useValidateEnvironmentClass = () => {\n const api = useGitpodAPI();\n const { data: user } = useAuthenticatedUser();\n\n return useMutation({\n mutationFn: async (environmentClass: EnvironmentClass) => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n\n const { result } = await api.runnerConfigurationService.validateRunnerConfiguration(\n new ValidateRunnerConfigurationRequest({\n runnerId: environmentClass.runnerId,\n config: {\n case: \"environmentClass\",\n value: environmentClass,\n },\n }),\n );\n\n if (result.case === \"environmentClass\" && !result.value.valid) {\n return result.value;\n }\n\n return new EnvironmentClassValidationResult({ valid: true });\n },\n });\n};\n\nexport const useCreateEnvironmentClass = (runnerId: string) => {\n const api = useGitpodAPI();\n const client = useQueryClient();\n const { data: user } = useAuthenticatedUser();\n\n return useMutation({\n mutationFn: async (values: { displayName: string; description: string; configuration: FieldValue[] }) => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n\n const { id } = await api.runnerConfigurationService.createEnvironmentClass(\n new CreateEnvironmentClassRequest({\n runnerId: runnerId,\n ...values,\n }),\n );\n\n addEnvironmentClassToCache(\n client,\n new EnvironmentClass({\n id,\n runnerId,\n enabled: true,\n ...values,\n }),\n );\n },\n });\n};\n\nexport const useUpdateEnvironmentClass = (environmentClass: EnvironmentClass) => {\n const api = useGitpodAPI();\n const client = useQueryClient();\n const { data: user } = useAuthenticatedUser();\n\n return useMutation({\n mutationFn: async (values: { displayName: string; description: string }) => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n\n const updated = new EnvironmentClass({\n ...environmentClass,\n displayName: values.displayName,\n description: values.description,\n });\n\n const { result } = await api.runnerConfigurationService.validateRunnerConfiguration(\n new ValidateRunnerConfigurationRequest({\n runnerId: environmentClass.runnerId,\n config: {\n case: \"environmentClass\",\n value: updated,\n },\n }),\n );\n\n if (result.case === \"environmentClass\" && !result.value.valid) {\n return result.value;\n }\n\n await api.runnerConfigurationService.updateEnvironmentClass(\n new UpdateEnvironmentClassRequest({\n environmentClassId: environmentClass.id,\n displayName: updated.displayName,\n description: updated.description,\n }),\n );\n\n setEnvironmentClassInCache(client, updated);\n return new EnvironmentClassValidationResult({ valid: true });\n },\n });\n};\n\nexport const useSetEnvironmentClassEnabled = (environmentClass: EnvironmentClass) => {\n const api = useGitpodAPI();\n const client = useQueryClient();\n const { data: user } = useAuthenticatedUser();\n\n return useMutation({\n mutationFn: async (options: { enabled: boolean }) => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n\n const updated = new EnvironmentClass({\n ...environmentClass,\n enabled: options.enabled,\n });\n\n await api.runnerConfigurationService.updateEnvironmentClass(\n new UpdateEnvironmentClassRequest({\n environmentClassId: environmentClass.id,\n displayName: updated.displayName,\n description: updated.description,\n enabled: updated.enabled,\n }),\n );\n\n setEnvironmentClassInCache(client, updated);\n },\n });\n};\n\nexport const useDeleteSCMIntegration = (runnerId: string) => {\n const api = useGitpodAPI();\n const client = useQueryClient();\n const { data: user } = useAuthenticatedUser();\n\n return useMutation({\n mutationFn: async (integrationId: string) => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n await api.runnerConfigurationService.deleteSCMIntegration(\n new DeleteSCMIntegrationRequest({ id: integrationId }),\n );\n removeSCMIntegrationFromCache(client, runnerId, integrationId);\n },\n });\n};\n\nexport const useListRunnerSCMIntegrations = (runnerId?: string) => {\n const api = useGitpodAPI();\n const { data: user } = useAuthenticatedUser();\n return useQuery({\n queryKey: runnerConfigurationQueryKey.listRunnerSCMIntegrations(runnerId),\n queryFn: async () => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n if (!runnerId) {\n return [];\n }\n const { integrations } = await api.runnerConfigurationService.listSCMIntegrations(\n new ListSCMIntegrationsRequest({\n filter: {\n runnerIds: [runnerId],\n },\n }),\n );\n\n return integrations;\n },\n enabled: !!user && !!runnerId,\n staleTime: 500,\n });\n};\n\nexport const useListAllRunnerSCMIntegrations = (runnerIds: string[]) => {\n const api = useGitpodAPI();\n const queries = useQueries({\n queries: runnerIds.map((runnerId) => ({\n queryKey: [\"runnerSCMIntegrations\", runnerId],\n queryFn: async () => {\n const response = await api.runnerConfigurationService.listSCMIntegrations(\n new ListSCMIntegrationsRequest({\n filter: { runnerIds: [runnerId] },\n }),\n );\n return response.integrations;\n },\n enabled: !!runnerId,\n staleTime: 500,\n })),\n });\n\n const isLoading = queries.some((query) => query.isLoading || query.isFetching);\n const data = queries.reduce((acc, query) => {\n if (query.data) {\n acc.push(...query.data);\n }\n return acc;\n }, []);\n\n return {\n data,\n isLoading,\n };\n};\n\nexport const useListRunnerEnvironmentClasses = (runnerId?: string) => {\n const api = useGitpodAPI();\n const { data: user } = useAuthenticatedUser();\n return useQuery({\n queryKey: runnerConfigurationQueryKey.listRunnerEnvironmentClasses(runnerId),\n queryFn: async () => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n if (!runnerId) {\n return [];\n }\n const { environmentClasses } = await api.runnerConfigurationService.listEnvironmentClasses(\n new ListEnvironmentClassesRequest({ filter: { runnerIds: [runnerId] } }),\n );\n\n return environmentClasses;\n },\n enabled: !!user && !!runnerId,\n staleTime: 500,\n });\n};\n\nexport const useGetEnvironmentClass = (environmentClassId?: string) => {\n const api = useGitpodAPI();\n const { data: user } = useAuthenticatedUser();\n return useQuery({\n queryKey: runnerConfigurationQueryKey.getEnvironmentClass(environmentClassId),\n queryFn: async () => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n if (!environmentClassId) {\n return;\n }\n\n const { environmentClass } = await api.runnerConfigurationService.getEnvironmentClass(\n new GetEnvironmentClassRequest({\n environmentClassId: environmentClassId,\n }),\n );\n\n return environmentClass;\n },\n enabled: !!user && !!environmentClassId,\n staleTime: 500,\n });\n};\n\nfunction setSCMIntegrationInCache(client: QueryClient, runnerId: string, integration: SCMIntegration) {\n client.setQueryData(runnerConfigurationQueryKey.listRunnerSCMIntegrations(runnerId), (old?: SCMIntegration[]) => {\n let found = false;\n const updated = old?.map((i) => {\n if (i.id === integration.id) {\n found = true;\n return integration;\n }\n return i;\n }) || [];\n if (!found) {\n updated.push(integration);\n }\n return updated;\n });\n}\n\nfunction removeSCMIntegrationFromCache(client: QueryClient, runnerId: string, integrationId: string) {\n client.setQueryData(runnerConfigurationQueryKey.listRunnerSCMIntegrations(runnerId), (old?: SCMIntegration[]) =>\n old?.filter((i) => i.id !== integrationId) || [],\n );\n}\n\nfunction addSCMIntegrationToCache(client: QueryClient, runnerId: string, integration: SCMIntegration) {\n client.setQueryData(runnerConfigurationQueryKey.listRunnerSCMIntegrations(runnerId), (old?: SCMIntegration[]) => {\n if (!old) {\n return [integration];\n }\n return [integration, ...old];\n });\n}\n\nfunction setEnvironmentClassInCache(client: QueryClient, environmentClass: EnvironmentClass) {\n client.setQueryData(\n runnerConfigurationQueryKey.listRunnerEnvironmentClasses(environmentClass.runnerId),\n (old: EnvironmentClass[]) => {\n return old.map((ec) => {\n if (ec.id === environmentClass.id) {\n return environmentClass;\n }\n return ec;\n });\n },\n );\n}\n\nfunction addEnvironmentClassToCache(client: QueryClient, environmentClass: EnvironmentClass) {\n client.setQueryData(\n runnerConfigurationQueryKey.listRunnerEnvironmentClasses(environmentClass.runnerId),\n (old: EnvironmentClass[]) => {\n return [environmentClass, ...old];\n },\n );\n}\n\nfunction optimisticDeleteHostAuthenticationToken(client: QueryClient, tokenId: string) {\n client.setQueryData(runnerConfigurationQueryKey.list(), (old: { tokens: HostAuthenticationToken[] }) => {\n return {\n tokens: old.tokens.filter((t) => t.id !== tokenId),\n };\n });\n}\n","import type { GitpodAPI } from \"@/api\";\nimport { useGitpodAPI } from \"@/hooks/use-gitpod-api\";\nimport { defaultRefetchLists, defaultRetry, defaultThrowOnError } from \"@/queries/errors\";\nimport { keyWithPrincipal } from \"@/queries/principal-key\";\nimport { runnerConfigurationQueryKey } from \"@/queries/runner-configuration-queries\";\nimport { useAuthenticatedUser } from \"@/queries/user-queries\";\nimport { type PlainMessage, toPlainMessage } from \"@bufbuild/protobuf\";\nimport { Code, ConnectError } from \"@connectrpc/connect\";\nimport { type QueryClient, useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { ResourceOperation, type WatchEventsResponse } from \"gitpod-next-api/gitpod/v1/event_pb\";\nimport { PaginationRequest } from \"gitpod-next-api/gitpod/v1/pagination_pb\";\nimport {\n CreateRunnerPolicyRequest,\n DeleteRunnerPolicyRequest,\n ListRunnerPoliciesRequest,\n ListRunnersRequest,\n ListRunnersRequest_Filter,\n ParseContextURLPreconditionFailureDetails,\n type Runner,\n RunnerKind,\n RunnerPhase,\n type RunnerPolicy,\n RunnerReleaseChannel,\n RunnerRole,\n RunnerSpec,\n} from \"gitpod-next-api/gitpod/v1/runner_pb\";\n\nexport type PlainRunner = PlainMessage;\n\nexport function toPlainRunner(runner: Runner): PlainRunner {\n return toPlainMessage(runner);\n}\n\nexport function toPlainRunnerPolicy(policy: RunnerPolicy): PlainMessage {\n return toPlainMessage(policy);\n}\n\nexport const runnerQueryKey = {\n list: (filter: Record) => keyWithPrincipal([\"runners\", \"list\", filter]),\n isUserAuthenticatedWithRunner: (runnerId?: string, repoURL?: string, sessionId?: string) =>\n keyWithPrincipal([\"runners\", \"isUserAuthenticated\", { runnerId, repoURL, sessionId }]),\n parseContext: (runnerId?: string, contextUrl?: string, tokenId?: string, keepOriginalError?: boolean) =>\n keyWithPrincipal([\"runners\", \"parseContext\", { runnerId, contextUrl, tokenId, keepOriginalError }]),\n get: (runnerId?: string) => keyWithPrincipal([\"runners\", { runnerId }]),\n listRunnerPolicies: (runnerId: string) => keyWithPrincipal([\"runners\", \"policies\", { runnerId }]),\n getLocalConfigurationRunner: () => keyWithPrincipal([\"runners\", \"localConfiguration\"]),\n};\n\nexport const handleRunnerEvent = async (api: GitpodAPI, client: QueryClient, evt: WatchEventsResponse) => {\n if (evt.operation === ResourceOperation.UPDATE) {\n const runner = await refetchRunner(api, evt.resourceId);\n setRunnerInCache(client, evt.resourceId, runner);\n } else if (evt.operation === ResourceOperation.CREATE) {\n const prefixOfAllListRunnerKeys = runnerQueryKey.list({}).slice(0, -1);\n await client.invalidateQueries({ queryKey: prefixOfAllListRunnerKeys });\n } else if (evt.operation === ResourceOperation.DELETE) {\n setRunnerInCache(client, evt.resourceId, undefined);\n }\n};\n\nconst refetchRunner = async (api: GitpodAPI, runnerId: string) => {\n try {\n const { runner } = await api.runnerService.getRunner({ runnerId });\n return runner;\n } catch (error) {\n const isNotFound = error instanceof ConnectError && error.code === Code.NotFound;\n // this might happen if the runner was deleted in the meantime\n if (!isNotFound) {\n console.error(\"Failed to refetch runner\", runnerId);\n }\n }\n};\n\ntype UseParseContextURLProps = {\n enabled?: boolean;\n tokenId?: string;\n};\n\nexport function useParseContextURL(runnerId?: string, contextUrl?: string, options?: UseParseContextURLProps) {\n const api = useGitpodAPI();\n const query = useQuery({\n queryKey: runnerQueryKey.parseContext(runnerId, contextUrl, options?.tokenId),\n queryFn: async () => {\n if (!contextUrl) {\n throw new Error(\"Context URL expected\");\n }\n\n try {\n const { git } = await api.runnerService.parseContextURL({ contextUrl, runnerId });\n if (!git) {\n throw new Error(\"Error parsing context URL\");\n }\n return git;\n } catch (error) {\n if (\n error instanceof ConnectError &&\n (error.code === Code.FailedPrecondition || error.code === Code.PermissionDenied)\n ) {\n const details = error.findDetails(ParseContextURLPreconditionFailureDetails);\n throw new ConnectError(\"Authentication required\", Code.Unauthenticated, new Headers(), details);\n }\n throw error;\n }\n },\n throwOnError: defaultThrowOnError,\n retry: defaultRetry,\n enabled: !!runnerId && !!contextUrl && (typeof options?.enabled !== \"boolean\" || options.enabled),\n });\n\n return { ...query, isLoading: query.isLoading || query.isFetching || query.isPending };\n}\n\nexport const useParseContext = () => {\n const api = useGitpodAPI();\n const { data: user } = useAuthenticatedUser();\n\n return useMutation({\n mutationFn: async ({ contextUrl, runnerId }: { contextUrl: string; runnerId: string }) => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n\n try {\n const { git } = await api.runnerService.parseContextURL({ contextUrl, runnerId });\n if (!git) {\n throw new Error(\"Error parsing context URL\");\n }\n return git;\n } catch (error) {\n if (!(error instanceof Error)) {\n throw new Error(\"Unknown error parsing context URL\");\n }\n }\n },\n });\n};\n\nexport type AuthenticatedWithRunnerResponse =\n | { type: \"Authenticated\" }\n | { type: \"AuthenticationRequired\"; url: string; patSupported: boolean; scmId: string };\n\ntype UseIsUserAuthenticatedWithRunnerProps = {\n refetchUntilAuthenticated?: boolean;\n sessionId?: string;\n enabled?: boolean;\n};\n\nexport function useIsUserAuthenticatedWithRunner(\n runnerId?: string,\n repoURL?: string,\n options?: UseIsUserAuthenticatedWithRunnerProps,\n) {\n const api = useGitpodAPI();\n\n const query = useQuery({\n queryKey: runnerQueryKey.isUserAuthenticatedWithRunner(runnerId, repoURL, options?.sessionId),\n queryFn: async () => {\n if (!repoURL) {\n throw new Error(\"Context URL expected\");\n }\n\n try {\n const scmHost = new URL(repoURL).host;\n const response = await api.runnerService.checkAuthenticationForHost({\n host: scmHost,\n runnerId,\n });\n if (response.authenticated) {\n return { type: \"Authenticated\" };\n }\n return {\n type: \"AuthenticationRequired\",\n url: response.authenticationUrl,\n patSupported: response.patSupported,\n scmId: response.scmId,\n };\n } catch (error) {\n const isConnectError = error instanceof ConnectError;\n if (!isConnectError) {\n throw error;\n }\n\n // throw error;\n // TODO(at) reinstate rethrow after checking if Unimplemented is still an expected case\n\n if (error.code != Code.Unimplemented) {\n throw error;\n }\n }\n\n return { type: \"Authenticated\" };\n },\n refetchInterval: (query) => {\n if (options?.refetchUntilAuthenticated) {\n if (query?.state?.data?.type == \"AuthenticationRequired\") {\n return 2000;\n }\n }\n return false;\n },\n retry(failureCount, error) {\n if (error instanceof ConnectError) {\n switch (error.code) {\n case Code.DeadlineExceeded:\n return true;\n case Code.Unauthenticated:\n case Code.PermissionDenied:\n case Code.NotFound:\n case Code.InvalidArgument:\n case Code.FailedPrecondition:\n case Code.Internal:\n return false;\n }\n }\n return failureCount < 3;\n },\n enabled: !!runnerId && !!repoURL && (typeof options?.enabled !== \"boolean\" || options.enabled),\n });\n return { ...query, isLoading: query.isLoading || query.isFetching || query.isPending };\n}\n\ntype CachedRunnerList = PlainRunner[] | undefined;\n\nfunction setRunnerInCache(client: QueryClient, runnerId: string, runner?: PlainRunner) {\n client.setQueryData(runnerQueryKey.get(runnerId), runner);\n const prefixOfAllListRunnerKeys = runnerQueryKey.list({}).slice(0, -1);\n client.setQueriesData({ queryKey: prefixOfAllListRunnerKeys }, (currentData?: CachedRunnerList) => {\n if (!currentData) {\n return currentData;\n }\n if (runner) {\n return currentData?.map((r) => (r.runnerId !== runnerId ? r : runner));\n }\n return currentData?.filter((r) => r.runnerId !== runnerId);\n });\n\n // And need to make sure the runner config is reloaded\n client\n .invalidateQueries({ queryKey: runnerConfigurationQueryKey.listRunnerEnvironmentClasses(runnerId) })\n .catch(console.error);\n client\n .invalidateQueries({ queryKey: runnerConfigurationQueryKey.listRunnerSCMIntegrations(runnerId) })\n .catch(console.error);\n client\n .invalidateQueries({ queryKey: runnerConfigurationQueryKey.getRunnerConfigurationSchema(runnerId) })\n .catch(console.error);\n}\n\nexport type UseListRunnersParams = {\n kind?: RunnerKind;\n creatorId?: string;\n};\n\nexport const useListRunners = ({ kind, creatorId }: UseListRunnersParams) => {\n const api = useGitpodAPI();\n const { data: user } = useAuthenticatedUser();\n\n const query = useQuery({\n queryKey: runnerQueryKey.list({ kind, creatorId }),\n queryFn: async (): Promise => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n const request = new ListRunnersRequest({\n filter: new ListRunnersRequest_Filter({\n // By default, filter out the local configuration runner.\n kinds: kind ? [kind] : [RunnerKind.LOCAL, RunnerKind.REMOTE],\n creatorIds: creatorId ? [creatorId] : undefined,\n }),\n });\n\n const result: PlainRunner[] = [];\n for (let i = 0; i < 100; i++) {\n const { runners, pagination } = await api.runnerService.listRunners(request);\n result.push(...runners.map(toPlainRunner));\n\n if (!pagination?.nextToken) {\n return result;\n }\n\n request.pagination = new PaginationRequest({\n token: pagination.nextToken,\n });\n }\n return result; // maxed out the attempts\n },\n throwOnError: defaultThrowOnError,\n retry: defaultRetry,\n enabled: !!user,\n gcTime: 1_000 * 60 * 60 * 24, // 24 hours\n staleTime: 1_000 * 60 * 1, // 1 minute\n\n // refetch on reconnect, window focus, and every 5 minutes\n refetchOnReconnect: \"always\",\n refetchOnWindowFocus: \"always\",\n refetchIntervalInBackground: true,\n refetchInterval: defaultRefetchLists,\n });\n return { ...query, runners: query.data || [] };\n};\n\nexport const useRunner = (runnerId?: string) => {\n const api = useGitpodAPI();\n\n return useQuery({\n queryKey: runnerQueryKey.get(runnerId),\n queryFn: async () => {\n if (!runnerId) {\n throw new Error(\"No runnerId provided\");\n }\n\n const { runner } = await api.runnerService.getRunner({\n runnerId,\n });\n\n if (!runner) {\n throw new Error(\"Error fetching runner\");\n }\n\n return toPlainRunner(runner);\n },\n enabled: !!runnerId,\n });\n};\n\nexport const useLocalConfigurationRunner = () => {\n const api = useGitpodAPI();\n\n return useQuery({\n queryKey: runnerQueryKey.getLocalConfigurationRunner(),\n queryFn: async () => {\n const { runners } = await api.runnerService.listRunners({\n filter: new ListRunnersRequest_Filter({\n kinds: [RunnerKind.LOCAL_CONFIGURATION],\n }),\n });\n\n // runners can be empty (e.g. when not an org admin, or does not exist).\n if (runners.length === 0) {\n return undefined;\n }\n\n return toPlainRunner(runners[0]);\n },\n });\n};\n\nexport const useSetLocalRunnersEnabled = (localConfigRunner: PlainRunner) => {\n const client = useQueryClient();\n const api = useGitpodAPI();\n const { data: user } = useAuthenticatedUser();\n\n return useMutation({\n mutationFn: async ({ enabled }: { enabled: boolean }) => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n\n const { runnerId } = localConfigRunner;\n await api.runnerService.updateRunner({\n runnerId,\n spec: {\n desiredPhase: enabled ? RunnerPhase.ACTIVE : RunnerPhase.INACTIVE,\n },\n });\n\n if (!localConfigRunner.spec) {\n localConfigRunner.spec = toPlainMessage(new RunnerSpec());\n }\n localConfigRunner.spec.desiredPhase = enabled ? RunnerPhase.ACTIVE : RunnerPhase.INACTIVE;\n setRunnerInCache(client, runnerId, localConfigRunner);\n },\n });\n};\n\nexport const useCreateRemoteRunner = () => {\n const client = useQueryClient();\n const api = useGitpodAPI();\n const { data: user } = useAuthenticatedUser();\n\n return useMutation({\n mutationFn: async ({ name, region }: { name: string; region: string }) => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n\n const { runner, accessToken } = await api.runnerService.createRunner({\n name,\n spec: {\n configuration: {\n region,\n autoUpdate: true,\n releaseChannel: RunnerReleaseChannel.STABLE,\n },\n },\n kind: RunnerKind.REMOTE,\n });\n\n if (!runner) {\n throw new Error(\"Error creating runner\");\n }\n\n return {\n runner: toPlainRunner(runner),\n accessToken,\n };\n },\n onSuccess: async () => {\n const prefixOfAllListRunnerKeys = runnerQueryKey.list({}).slice(0, -1);\n await client.invalidateQueries({ queryKey: prefixOfAllListRunnerKeys });\n },\n });\n};\n\nexport const useCreateRunnerAccessToken = () => {\n const api = useGitpodAPI();\n const { data: user } = useAuthenticatedUser();\n\n return useMutation({\n mutationFn: async (runnerId: string) => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n\n const { accessToken } = await api.runnerService.createRunnerToken({\n runnerId: runnerId,\n });\n\n return {\n accessToken,\n };\n },\n });\n};\n\nexport const useUpdateRunner = () => {\n const client = useQueryClient();\n const api = useGitpodAPI();\n const { data: user } = useAuthenticatedUser();\n\n return useMutation({\n mutationFn: async ({ runnerId, name }: { runnerId: string; name: string }) => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n\n await api.runnerService.updateRunner({\n runnerId,\n name,\n });\n\n const { runner } = await api.runnerService.getRunner({\n runnerId,\n });\n\n if (!runner) {\n throw new Error(\"Error fetching runner after update\");\n }\n setRunnerInCache(client, runnerId, toPlainRunner(runner));\n },\n });\n};\n\nexport const useDeleteRunner = () => {\n const client = useQueryClient();\n const api = useGitpodAPI();\n const { data: user } = useAuthenticatedUser();\n\n return useMutation({\n mutationFn: async ({ runnerId, force = false }: { runnerId: string; force: boolean }) => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n\n return await api.runnerService.deleteRunner({\n runnerId,\n force,\n });\n },\n onSuccess: async () => {\n const prefixOfAllListRunnerKeys = runnerQueryKey.list({}).slice(0, -1);\n await client.invalidateQueries({ queryKey: prefixOfAllListRunnerKeys });\n },\n });\n};\n\nexport const useListRunnerPolicies = (runnerId: string) => {\n const api = useGitpodAPI();\n const { data: user } = useAuthenticatedUser();\n\n return useQuery({\n queryKey: runnerQueryKey.listRunnerPolicies(runnerId),\n queryFn: async () => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n\n const { policies, pagination } = await api.runnerService.listRunnerPolicies(\n new ListRunnerPoliciesRequest({\n runnerId: runnerId,\n }),\n );\n\n return {\n policies: policies.map(toPlainRunnerPolicy),\n pagination,\n };\n },\n throwOnError: defaultThrowOnError,\n retry: defaultRetry,\n enabled: !!user,\n staleTime: 500,\n });\n};\n\nexport const useUpdateSharingSetting = (runnerId: string) => {\n const api = useGitpodAPI();\n const { data: user } = useAuthenticatedUser();\n\n return useMutation({\n mutationFn: async ({ setting, groupId }: { setting: \"only-me\" | \"anyone-in-org\"; groupId: string }) => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n\n if (setting === \"only-me\") {\n await api.runnerService.deleteRunnerPolicy(\n new DeleteRunnerPolicyRequest({\n runnerId,\n groupId,\n }),\n );\n } else if (setting === \"anyone-in-org\") {\n await api.runnerService.createRunnerPolicy(\n new CreateRunnerPolicyRequest({\n runnerId,\n groupId,\n role: RunnerRole.USER,\n }),\n );\n }\n },\n });\n};\n","import type { Size } from \"@/assets/icons/geist/Size\";\nimport { cn, type PropsWithClassName } from \"@/components/podkit/lib/cn\";\nimport type { FC, PropsWithChildren } from \"react\";\n\ntype SkeletonProps = {\n ready: boolean;\n failed?: boolean;\n failedFallback?: string;\n hideOnFailed?: boolean;\n animate?: boolean;\n};\n\nexport const SkeletonText: FC<{ size: Size } & SkeletonProps & PropsWithClassName & PropsWithChildren> = ({\n className,\n size,\n ready,\n failed,\n failedFallback,\n animate,\n hideOnFailed,\n children,\n}) => {\n // We're matching the line-height of the text but splitting it between height and margin\n // so it feels less clunky\n let height: string;\n switch (size) {\n case \"sm\":\n height = \"h-3\";\n break;\n case \"base\":\n height = \"h-4\";\n break;\n case \"lg\":\n height = \"h-5\";\n break;\n }\n return (\n \n {children}\n \n );\n};\n\nexport const SkeletonBlock: FC = ({\n failed,\n failedFallback,\n ready,\n animate,\n children,\n className,\n hideOnFailed,\n}) => {\n if (failed && failedFallback) {\n return failedFallback;\n }\n if (ready) {\n return children;\n }\n return (\n