{"version":3,"file":"index-3lpHQ6Ki.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/agent_pb.ts","../../api-typescript--lib/src/gitpod/v1/runner_configuration_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_pb.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","../../api-typescript--lib/src/gitpod/v1/agent_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/contexts/GitpodAPIContext.tsx","../../src/hooks/use-gitpod-api.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/pagination.ts","../../src/queries/account-queries.ts","../../src/hooks/use-boot-in-app-chat.ts","../../src/hooks/use-local-storage.ts","../../src/hooks/use-local-runner.ts","../../src/utils/platform.ts","../../src/hooks/use-open-settings-shortcut.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/components/Toggle.tsx","../../src/assets/icons/geist/IconClose.tsx","../../src/components/ExceptionHandler.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/assets/icons/geist/IconCheckCircle.tsx","../../src/queries/organization-queries.ts","../../src/queries/group-queries.ts","../../src/assets/icons/geist/IconExternalLink.tsx","../../src/components/podkit/typography/Link.tsx","../../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/assets/icons/geist/IconInfo.tsx","../../src/hooks/use-temporary-value.ts","../../src/components/podkit/forms/CopyableInput.tsx","../../src/queries/environment-queries.ts","../../src/components/Tooltip.tsx","../../src/components/podkit/dropdown/DropDown.tsx","../../src/assets/icons/geist/IconEllipseHorizontal.tsx","../../src/components/podkit/dropdown/DropDownActions.tsx","../../src/components/podkit/forms/CopyableTextArea.tsx","../../src/components/podkit/forms/Label.tsx","../../src/assets/icons/geist/IconWarning.tsx","../../src/assets/icons/geist/IconRefresh.tsx","../../src/components/InlineableSVG.tsx","../../src/assets/icons/geist/IconError.tsx","../../src/version-tracker.ts","../../src/hooks/use-frontend-version.ts","../../src/components/flexkit/Link.tsx","../../src/utils/stream-cache.ts","../../src/queries/agent-queries.ts","../../src/queries/user-preferences-queries.ts","../../src/contexts/OnboardingContext.tsx","../../src/hooks/use-onboarding.ts","../../src/assets/icons/geist/IconChevronDown.tsx","../../src/components/KeyboardKey.tsx","../../src/queries/automations-queries.ts","../../src/queries/project-queries.ts","../../src/queries/secret-queries.ts","../../src/hooks/use-stream-events.ts","../../src/components/podkit/Card.tsx","../../src/hooks/use-scm-authentication.ts","../../src/routes/environments/create/SCMAuthentication.tsx","../../src/assets/icons/geist/IconBox.tsx","../../src/assets/icons/geist/IconPlay.tsx","../../src/assets/icons/geist/IconStop.tsx","../../src/assets/icons/geist/IconDot.tsx","../../src/routes/environments/phase.ts","../../src/utils/environment.ts","../../src/components/flexkit/Collapsible.tsx","../../src/hooks/use-branch.ts","../../src/hooks/use-default-editor.ts","../../src/hooks/use-editor-for-env.ts","../../src/repo-url.ts","../../src/queries/editor-queries.ts","../../src/hooks/use-open-editor.ts","../../src/routes/environments/DeleteEnvironmentModal.tsx","../../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/assets/logos/IntelliJLogo.tsx","../../src/assets/logos/GoLandLogo.tsx","../../src/assets/logos/PyCharmLogo.tsx","../../src/assets/logos/PhpStormLogo.tsx","../../src/assets/logos/RubyMineLogo.tsx","../../src/assets/logos/WebStormLogo.tsx","../../src/assets/logos/CLionLogo.tsx","../../src/assets/logos/RustRoverLogo.tsx","../../src/assets/logos/RiderLogo.tsx","../../src/assets/logos/VSCodeLogo.tsx","../../src/assets/logos/VSCodeInsidersLogo.tsx","../../src/assets/logos/CursorLogo.tsx","../../src/components/environments/EditorIcon.tsx","../../src/components/environments/WithPopover.tsx","../../src/components/environments/OpenPortForm.tsx","../../src/hooks/use-open-editor-shortcut.ts","../../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/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/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.IDTokenVersion\n */\nexport enum IDTokenVersion {\n /**\n * When unspecified, the ID token version is 1.\n *\n * @generated from enum value: ID_TOKEN_VERSION_UNSPECIFIED = 0;\n */\n ID_TOKEN_VERSION_UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: ID_TOKEN_VERSION_V1 = 1;\n */\n ID_TOKEN_VERSION_V1 = 1,\n\n /**\n * @generated from enum value: ID_TOKEN_VERSION_V2 = 2;\n */\n ID_TOKEN_VERSION_V2 = 2,\n}\n// Retrieve enum metadata with: proto3.getEnumType(IDTokenVersion)\nproto3.util.setEnumType(IDTokenVersion, \"gitpod.v1.IDTokenVersion\", [\n { no: 0, name: \"ID_TOKEN_VERSION_UNSPECIFIED\" },\n { no: 1, name: \"ID_TOKEN_VERSION_V1\" },\n { no: 2, name: \"ID_TOKEN_VERSION_V2\" },\n]);\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 /**\n * version is the version of the ID token.\n *\n * @generated from field: gitpod.v1.IDTokenVersion version = 2;\n */\n version = IDTokenVersion.ID_TOKEN_VERSION_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.GetIDTokenRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"audience\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 2, name: \"version\", kind: \"enum\", T: proto3.getEnumType(IDTokenVersion) },\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/**\n * @generated from message gitpod.v1.GetDotfilesConfigurationRequest\n */\nexport class GetDotfilesConfigurationRequest 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.GetDotfilesConfigurationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetDotfilesConfigurationRequest {\n return new GetDotfilesConfigurationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetDotfilesConfigurationRequest {\n return new GetDotfilesConfigurationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetDotfilesConfigurationRequest {\n return new GetDotfilesConfigurationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetDotfilesConfigurationRequest | PlainMessage | undefined, b: GetDotfilesConfigurationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetDotfilesConfigurationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetDotfilesConfigurationResponse\n */\nexport class GetDotfilesConfigurationResponse extends Message {\n /**\n * @generated from field: gitpod.v1.DotfilesConfiguration dotfiles_configuration = 1;\n */\n dotfilesConfiguration?: DotfilesConfiguration;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetDotfilesConfigurationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"dotfiles_configuration\", kind: \"message\", T: DotfilesConfiguration },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetDotfilesConfigurationResponse {\n return new GetDotfilesConfigurationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetDotfilesConfigurationResponse {\n return new GetDotfilesConfigurationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetDotfilesConfigurationResponse {\n return new GetDotfilesConfigurationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetDotfilesConfigurationResponse | PlainMessage | undefined, b: GetDotfilesConfigurationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetDotfilesConfigurationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.SetDotfilesConfigurationRequest\n */\nexport class SetDotfilesConfigurationRequest extends Message {\n /**\n * @generated from field: string repository = 1;\n */\n repository = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.SetDotfilesConfigurationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"repository\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SetDotfilesConfigurationRequest {\n return new SetDotfilesConfigurationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SetDotfilesConfigurationRequest {\n return new SetDotfilesConfigurationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SetDotfilesConfigurationRequest {\n return new SetDotfilesConfigurationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: SetDotfilesConfigurationRequest | PlainMessage | undefined, b: SetDotfilesConfigurationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(SetDotfilesConfigurationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.SetDotfilesConfigurationResponse\n */\nexport class SetDotfilesConfigurationResponse 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.SetDotfilesConfigurationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SetDotfilesConfigurationResponse {\n return new SetDotfilesConfigurationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SetDotfilesConfigurationResponse {\n return new SetDotfilesConfigurationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SetDotfilesConfigurationResponse {\n return new SetDotfilesConfigurationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: SetDotfilesConfigurationResponse | PlainMessage | undefined, b: SetDotfilesConfigurationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(SetDotfilesConfigurationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DotfilesConfiguration\n */\nexport class DotfilesConfiguration extends Message {\n /**\n * The URL of a dotfiles repository.\n *\n * @generated from field: string repository = 1;\n */\n repository = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DotfilesConfiguration\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"repository\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DotfilesConfiguration {\n return new DotfilesConfiguration().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DotfilesConfiguration {\n return new DotfilesConfiguration().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DotfilesConfiguration {\n return new DotfilesConfiguration().fromJsonString(jsonString, options);\n }\n\n static equals(a: DotfilesConfiguration | PlainMessage | undefined, b: DotfilesConfiguration | PlainMessage | undefined): boolean {\n return proto3.util.equals(DotfilesConfiguration, 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 enum gitpod.v1.DomainVerificationState\n */\nexport enum DomainVerificationState {\n /**\n * @generated from enum value: DOMAIN_VERIFICATION_STATE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: DOMAIN_VERIFICATION_STATE_PENDING = 1;\n */\n PENDING = 1,\n\n /**\n * @generated from enum value: DOMAIN_VERIFICATION_STATE_VERIFIED = 2;\n */\n VERIFIED = 2,\n}\n// Retrieve enum metadata with: proto3.getEnumType(DomainVerificationState)\nproto3.util.setEnumType(DomainVerificationState, \"gitpod.v1.DomainVerificationState\", [\n { no: 0, name: \"DOMAIN_VERIFICATION_STATE_UNSPECIFIED\" },\n { no: 1, name: \"DOMAIN_VERIFICATION_STATE_PENDING\" },\n { no: 2, name: \"DOMAIN_VERIFICATION_STATE_VERIFIED\" },\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/**\n * @generated from message gitpod.v1.DomainVerification\n */\nexport class DomainVerification 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 domain = 3;\n */\n domain = \"\";\n\n /**\n * @generated from field: gitpod.v1.DomainVerificationState state = 4;\n */\n state = DomainVerificationState.UNSPECIFIED;\n\n /**\n * @generated from field: google.protobuf.Timestamp verified_at = 5;\n */\n verifiedAt?: Timestamp;\n\n /**\n * @generated from field: string verification_token = 6;\n */\n verificationToken = \"\";\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.DomainVerification\";\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: \"domain\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"state\", kind: \"enum\", T: proto3.getEnumType(DomainVerificationState) },\n { no: 5, name: \"verified_at\", kind: \"message\", T: Timestamp },\n { no: 6, name: \"verification_token\", 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): DomainVerification {\n return new DomainVerification().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DomainVerification {\n return new DomainVerification().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DomainVerification {\n return new DomainVerification().fromJsonString(jsonString, options);\n }\n\n static equals(a: DomainVerification | PlainMessage | undefined, b: DomainVerification | PlainMessage | undefined): boolean {\n return proto3.util.equals(DomainVerification, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateDomainVerificationRequest\n */\nexport class CreateDomainVerificationRequest extends Message {\n /**\n * @generated from field: string organization_id = 1;\n */\n organizationId = \"\";\n\n /**\n * @generated from field: string domain = 2;\n */\n domain = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateDomainVerificationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"domain\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateDomainVerificationRequest {\n return new CreateDomainVerificationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateDomainVerificationRequest {\n return new CreateDomainVerificationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateDomainVerificationRequest {\n return new CreateDomainVerificationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateDomainVerificationRequest | PlainMessage | undefined, b: CreateDomainVerificationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateDomainVerificationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateDomainVerificationResponse\n */\nexport class CreateDomainVerificationResponse extends Message {\n /**\n * @generated from field: gitpod.v1.DomainVerification domain_verification = 1;\n */\n domainVerification?: DomainVerification;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateDomainVerificationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"domain_verification\", kind: \"message\", T: DomainVerification },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateDomainVerificationResponse {\n return new CreateDomainVerificationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateDomainVerificationResponse {\n return new CreateDomainVerificationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateDomainVerificationResponse {\n return new CreateDomainVerificationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateDomainVerificationResponse | PlainMessage | undefined, b: CreateDomainVerificationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateDomainVerificationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetDomainVerificationRequest\n */\nexport class GetDomainVerificationRequest extends Message {\n /**\n * @generated from field: string domain_verification_id = 1;\n */\n domainVerificationId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetDomainVerificationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"domain_verification_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetDomainVerificationRequest {\n return new GetDomainVerificationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetDomainVerificationRequest {\n return new GetDomainVerificationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetDomainVerificationRequest {\n return new GetDomainVerificationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetDomainVerificationRequest | PlainMessage | undefined, b: GetDomainVerificationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetDomainVerificationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetDomainVerificationResponse\n */\nexport class GetDomainVerificationResponse extends Message {\n /**\n * @generated from field: gitpod.v1.DomainVerification domain_verification = 1;\n */\n domainVerification?: DomainVerification;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetDomainVerificationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"domain_verification\", kind: \"message\", T: DomainVerification },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetDomainVerificationResponse {\n return new GetDomainVerificationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetDomainVerificationResponse {\n return new GetDomainVerificationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetDomainVerificationResponse {\n return new GetDomainVerificationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetDomainVerificationResponse | PlainMessage | undefined, b: GetDomainVerificationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetDomainVerificationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListDomainVerificationsRequest\n */\nexport class ListDomainVerificationsRequest extends Message {\n /**\n * @generated from field: string organization_id = 1;\n */\n organizationId = \"\";\n\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.ListDomainVerificationsRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"organization_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"pagination\", kind: \"message\", T: PaginationRequest },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListDomainVerificationsRequest {\n return new ListDomainVerificationsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListDomainVerificationsRequest {\n return new ListDomainVerificationsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListDomainVerificationsRequest {\n return new ListDomainVerificationsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListDomainVerificationsRequest | PlainMessage | undefined, b: ListDomainVerificationsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListDomainVerificationsRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListDomainVerificationsResponse\n */\nexport class ListDomainVerificationsResponse extends Message {\n /**\n * @generated from field: repeated gitpod.v1.DomainVerification domain_verifications = 1;\n */\n domainVerifications: DomainVerification[] = [];\n\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.ListDomainVerificationsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"domain_verifications\", kind: \"message\", T: DomainVerification, repeated: true },\n { no: 2, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListDomainVerificationsResponse {\n return new ListDomainVerificationsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListDomainVerificationsResponse {\n return new ListDomainVerificationsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListDomainVerificationsResponse {\n return new ListDomainVerificationsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListDomainVerificationsResponse | PlainMessage | undefined, b: ListDomainVerificationsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListDomainVerificationsResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.VerifyDomainRequest\n */\nexport class VerifyDomainRequest extends Message {\n /**\n * @generated from field: string domain_verification_id = 1;\n */\n domainVerificationId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.VerifyDomainRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"domain_verification_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): VerifyDomainRequest {\n return new VerifyDomainRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): VerifyDomainRequest {\n return new VerifyDomainRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): VerifyDomainRequest {\n return new VerifyDomainRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: VerifyDomainRequest | PlainMessage | undefined, b: VerifyDomainRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(VerifyDomainRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.VerifyDomainResponse\n */\nexport class VerifyDomainResponse extends Message {\n /**\n * @generated from field: gitpod.v1.DomainVerification domain_verification = 1;\n */\n domainVerification?: DomainVerification;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.VerifyDomainResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"domain_verification\", kind: \"message\", T: DomainVerification },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): VerifyDomainResponse {\n return new VerifyDomainResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): VerifyDomainResponse {\n return new VerifyDomainResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): VerifyDomainResponse {\n return new VerifyDomainResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: VerifyDomainResponse | PlainMessage | undefined, b: VerifyDomainResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(VerifyDomainResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteDomainVerificationRequest\n */\nexport class DeleteDomainVerificationRequest extends Message {\n /**\n * @generated from field: string domain_verification_id = 1;\n */\n domainVerificationId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteDomainVerificationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"domain_verification_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteDomainVerificationRequest {\n return new DeleteDomainVerificationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteDomainVerificationRequest {\n return new DeleteDomainVerificationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteDomainVerificationRequest {\n return new DeleteDomainVerificationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteDomainVerificationRequest | PlainMessage | undefined, b: DeleteDomainVerificationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteDomainVerificationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteDomainVerificationResponse\n */\nexport class DeleteDomainVerificationResponse 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.DeleteDomainVerificationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteDomainVerificationResponse {\n return new DeleteDomainVerificationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteDomainVerificationResponse {\n return new DeleteDomainVerificationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteDomainVerificationResponse {\n return new DeleteDomainVerificationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteDomainVerificationResponse | PlainMessage | undefined, b: DeleteDomainVerificationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteDomainVerificationResponse, 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, when provider is \"custom\"\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/**\n * @generated from message gitpod.v1.CreateMagicLinkRequest\n */\nexport class CreateMagicLinkRequest extends Message {\n /**\n * @generated from field: string email = 1;\n */\n email = \"\";\n\n /**\n * Name of the Account\n *\n * @generated from field: string name = 2;\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.CreateMagicLinkRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"email\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateMagicLinkRequest {\n return new CreateMagicLinkRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateMagicLinkRequest {\n return new CreateMagicLinkRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateMagicLinkRequest {\n return new CreateMagicLinkRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateMagicLinkRequest | PlainMessage | undefined, b: CreateMagicLinkRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateMagicLinkRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateMagicLinkResponse\n */\nexport class CreateMagicLinkResponse extends Message {\n /**\n * The magic link to send to the user\n *\n * @generated from field: string magic_link = 1;\n */\n magicLink = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateMagicLinkResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"magic_link\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateMagicLinkResponse {\n return new CreateMagicLinkResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateMagicLinkResponse {\n return new CreateMagicLinkResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateMagicLinkResponse {\n return new CreateMagicLinkResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateMagicLinkResponse | PlainMessage | undefined, b: CreateMagicLinkResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateMagicLinkResponse, 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 { CreateMagicLinkRequest, CreateMagicLinkResponse, 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 * Gets information about the currently authenticated account.\n *\n * Use this method to:\n * - Retrieve account profile information\n * - Check organization memberships\n * - View account settings\n * - Get joinable organizations\n *\n * ### Examples\n *\n * - Get account details:\n *\n * Retrieves information about the authenticated account.\n *\n * ```yaml\n * {}\n * ```\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 * Deletes an account permanently.\n *\n * Use this method to:\n * - Remove unused accounts\n * - Clean up test accounts\n * - Complete account deletion requests\n *\n * The account must not be an active member of any organization.\n *\n * ### Examples\n *\n * - Delete account:\n *\n * Permanently removes an account.\n *\n * ```yaml\n * accountId: \"f53d2330-3795-4c5d-a1f3-453121af9c60\"\n * ```\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 * Gets the SSO login URL for a specific email domain.\n *\n * Use this method to:\n * - Initiate SSO authentication\n * - Get organization-specific login URLs\n * - Handle SSO redirects\n *\n * ### Examples\n *\n * - Get login URL:\n *\n * Retrieves SSO URL for email domain.\n *\n * ```yaml\n * email: \"user@company.com\"\n * ```\n *\n * - Get URL with return path:\n *\n * Gets SSO URL with specific return location.\n *\n * ```yaml\n * email: \"user@company.com\"\n * returnTo: \"https://gitpod.io/workspaces\"\n * ```\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 * Lists available login providers with optional filtering.\n *\n * Use this method to:\n * - View supported authentication methods\n * - Get provider-specific login URLs\n * - Filter providers by invite\n *\n * ### Examples\n *\n * - List all providers:\n *\n * Shows all available login providers.\n *\n * ```yaml\n * pagination:\n * pageSize: 20\n * ```\n *\n * - List for specific invite:\n *\n * Shows providers available for an invite.\n *\n * ```yaml\n * filter:\n * inviteId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * pagination:\n * pageSize: 20\n * ```\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 * @generated from rpc gitpod.v1.AccountService.CreateMagicLink\n */\n createMagicLink: {\n name: \"CreateMagicLink\",\n I: CreateMagicLinkRequest,\n O: CreateMagicLinkResponse,\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/user.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { CreatePersonalAccessTokenRequest, CreatePersonalAccessTokenResponse, DeletePersonalAccessTokenRequest, DeletePersonalAccessTokenResponse, DeletePreferenceRequest, DeletePreferenceResponse, GetAuthenticatedUserRequest, GetAuthenticatedUserResponse, GetDotfilesConfigurationRequest, GetDotfilesConfigurationResponse, GetPersonalAccessTokenRequest, GetPersonalAccessTokenResponse, GetPreferenceRequest, GetPreferenceResponse, ListPersonalAccessTokensRequest, ListPersonalAccessTokensResponse, ListPreferencesRequest, ListPreferencesResponse, SetDotfilesConfigurationRequest, SetDotfilesConfigurationResponse, 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 * Gets information about the currently authenticated user.\n *\n * Use this method to:\n * - Get user profile information\n * - Check authentication status\n * - Retrieve user settings\n * - Verify account details\n *\n * ### Examples\n *\n * - Get current user:\n *\n * Retrieves details about the authenticated user.\n *\n * ```yaml\n * {}\n * ```\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 * Sets whether a user account is suspended.\n *\n * Use this method to:\n * - Suspend problematic users\n * - Reactivate suspended accounts\n * - Manage user access\n *\n * ### Examples\n *\n * - Suspend user:\n *\n * Suspends a user account.\n *\n * ```yaml\n * userId: \"f53d2330-3795-4c5d-a1f3-453121af9c60\"\n * suspended: true\n * ```\n *\n * - Reactivate user:\n *\n * Removes suspension from a user account.\n *\n * ```yaml\n * userId: \"f53d2330-3795-4c5d-a1f3-453121af9c60\"\n * suspended: false\n * ```\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 * Creates a new personal access token for API authentication.\n *\n * Use this method to:\n * - Generate API access tokens\n * - Create service account credentials\n * - Set up automated access\n *\n * ### Examples\n *\n * - Create token:\n *\n * Creates a new access token valid for 30 days.\n *\n * ```yaml\n * userId: \"f53d2330-3795-4c5d-a1f3-453121af9c60\"\n * description: \"CI/CD Pipeline Token\"\n * validFor: \"2592000s\" # 30 days\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 * Gets details about a specific personal access token.\n *\n * Use this method to:\n * - View token metadata\n * - Check token expiration\n * - Monitor token usage\n *\n * ### Examples\n *\n * - Get token details:\n *\n * Retrieves information about a specific token.\n *\n * ```yaml\n * personalAccessTokenId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\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 * Lists personal access tokens with optional filtering.\n *\n * Use this method to:\n * - View all active tokens\n * - Audit token usage\n * - Manage token lifecycle\n *\n * ### Examples\n *\n * - List user tokens:\n *\n * Shows all tokens for specific users.\n *\n * ```yaml\n * filter:\n * userIds: [\"f53d2330-3795-4c5d-a1f3-453121af9c60\"]\n * pagination:\n * pageSize: 20\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 idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * Deletes a personal access token.\n *\n * Use this method to:\n * - Revoke token access\n * - Remove unused tokens\n * - Rotate credentials\n *\n * ### Examples\n *\n * - Delete token:\n *\n * Permanently revokes a token.\n *\n * ```yaml\n * personalAccessTokenId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\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 * Sets a user preference value.\n *\n * Use this method to:\n * - Store user settings\n * - Update preferences\n * - Configure user experience\n *\n * ### Examples\n *\n * - Set preference:\n *\n * Updates a user preference setting.\n *\n * ```yaml\n * key: \"theme\"\n * value: \"dark\"\n * ```\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 * Gets a specific user preference value.\n *\n * Use this method to:\n * - Retrieve user settings\n * - Read preference values\n * - Check configurations\n *\n * ### Examples\n *\n * - Get preference:\n *\n * Retrieves a specific preference value.\n *\n * ```yaml\n * userPreferenceId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\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 * Lists all user preferences.\n *\n * Use this method to:\n * - View all user settings\n * - Export preferences\n * - Audit configurations\n *\n * ### Examples\n *\n * - List preferences:\n *\n * Shows all preferences with pagination.\n *\n * ```yaml\n * pagination:\n * pageSize: 20\n * ```\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 * Deletes a user preference.\n *\n * Use this method to:\n * - Remove settings\n * - Reset preferences\n * - Clean up configurations\n *\n * ### Examples\n *\n * - Delete preference:\n *\n * Removes a specific preference.\n *\n * ```yaml\n * userPreferenceId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\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 * Gets the dotfiles for a user.\n *\n * Use this method to:\n * - Retrieve user dotfiles\n *\n * ### Examples\n *\n * - Get dotfiles:\n *\n * Retrieves the dotfiles for the current user.\n *\n * ```yaml\n * {}\n * ```\n *\n * @generated from rpc gitpod.v1.UserService.GetDotfilesConfiguration\n */\n getDotfilesConfiguration: {\n name: \"GetDotfilesConfiguration\",\n I: GetDotfilesConfigurationRequest,\n O: GetDotfilesConfigurationResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * Sets the dotfiles configuration for a user.\n *\n * Use this method to:\n * - Configure user dotfiles\n * - Update dotfiles settings\n *\n * ### Examples\n *\n * - Set dotfiles configuration:\n *\n * Sets the dotfiles configuration for the current user.\n *\n * ```yaml\n * {\n * \"repository\": \"https://github.com/gitpod-io/dotfiles\",\n * }\n * ```\n *\n * - Remove dotfiles:\n *\n * Removes the dotfiles for the current user.\n *\n * ```yaml\n * {}\n * ```\n *\n * @generated from rpc gitpod.v1.UserService.SetDotfilesConfiguration\n */\n setDotfilesConfiguration: {\n name: \"SetDotfilesConfiguration\",\n I: SetDotfilesConfigurationRequest,\n O: SetDotfilesConfigurationResponse,\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/agent.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 { PaginationRequest, PaginationResponse } from \"./pagination_pb.js\";\nimport { Subject } from \"./identity_pb.js\";\n\n/**\n * @generated from enum gitpod.v1.SupportedModel\n */\nexport enum SupportedModel {\n /**\n * @generated from enum value: SUPPORTED_MODEL_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: SUPPORTED_MODEL_SONNET_3_5 = 1;\n */\n SONNET_3_5 = 1,\n\n /**\n * @generated from enum value: SUPPORTED_MODEL_SONNET_3_7 = 2;\n */\n SONNET_3_7 = 2,\n\n /**\n * @generated from enum value: SUPPORTED_MODEL_SONNET_3_7_EXTENDED = 3;\n */\n SONNET_3_7_EXTENDED = 3,\n}\n// Retrieve enum metadata with: proto3.getEnumType(SupportedModel)\nproto3.util.setEnumType(SupportedModel, \"gitpod.v1.SupportedModel\", [\n { no: 0, name: \"SUPPORTED_MODEL_UNSPECIFIED\" },\n { no: 1, name: \"SUPPORTED_MODEL_SONNET_3_5\" },\n { no: 2, name: \"SUPPORTED_MODEL_SONNET_3_7\" },\n { no: 3, name: \"SUPPORTED_MODEL_SONNET_3_7_EXTENDED\" },\n]);\n\n/**\n * @generated from message gitpod.v1.Agent\n */\nexport class Agent extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: gitpod.v1.AgentMetadata metadata = 2;\n */\n metadata?: AgentMetadata;\n\n /**\n * @generated from field: gitpod.v1.AgentSpec spec = 3;\n */\n spec?: AgentSpec;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.Agent\";\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: AgentMetadata },\n { no: 3, name: \"spec\", kind: \"message\", T: AgentSpec },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): Agent {\n return new Agent().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): Agent {\n return new Agent().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): Agent {\n return new Agent().fromJsonString(jsonString, options);\n }\n\n static equals(a: Agent | PlainMessage | undefined, b: Agent | PlainMessage | undefined): boolean {\n return proto3.util.equals(Agent, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AgentMetadata\n */\nexport class AgentMetadata 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 constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.AgentMetadata\";\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 ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AgentMetadata {\n return new AgentMetadata().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentMetadata {\n return new AgentMetadata().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentMetadata {\n return new AgentMetadata().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentMetadata | PlainMessage | undefined, b: AgentMetadata | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentMetadata, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListAgentsRequest\n */\nexport class ListAgentsRequest 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.ListAgentsRequest\";\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): ListAgentsRequest {\n return new ListAgentsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListAgentsRequest {\n return new ListAgentsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListAgentsRequest {\n return new ListAgentsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListAgentsRequest | PlainMessage | undefined, b: ListAgentsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListAgentsRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListAgentsResponse\n */\nexport class ListAgentsResponse 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.Agent agents = 2;\n */\n agents: Agent[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListAgentsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"agents\", kind: \"message\", T: Agent, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListAgentsResponse {\n return new ListAgentsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListAgentsResponse {\n return new ListAgentsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListAgentsResponse {\n return new ListAgentsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListAgentsResponse | PlainMessage | undefined, b: ListAgentsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListAgentsResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetAgentRequest\n */\nexport class GetAgentRequest extends Message {\n /**\n * @generated from field: string agent_id = 1;\n */\n agentId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetAgentRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"agent_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetAgentRequest {\n return new GetAgentRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetAgentRequest {\n return new GetAgentRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetAgentRequest {\n return new GetAgentRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetAgentRequest | PlainMessage | undefined, b: GetAgentRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetAgentRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetAgentResponse\n */\nexport class GetAgentResponse extends Message {\n /**\n * @generated from field: gitpod.v1.Agent agent = 1;\n */\n agent?: Agent;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetAgentResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"agent\", kind: \"message\", T: Agent },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetAgentResponse {\n return new GetAgentResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetAgentResponse {\n return new GetAgentResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetAgentResponse {\n return new GetAgentResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetAgentResponse | PlainMessage | undefined, b: GetAgentResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetAgentResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AgentCodeContext\n */\nexport class AgentCodeContext extends Message {\n /**\n * @generated from oneof gitpod.v1.AgentCodeContext.context\n */\n context: {\n /**\n * @generated from field: string project_id = 1;\n */\n value: string;\n case: \"projectId\";\n } | {\n /**\n * @generated from field: string environment_id = 2;\n */\n value: string;\n case: \"environmentId\";\n } | {\n /**\n * @generated from field: gitpod.v1.AgentCodeContext.ContextURL context_url = 3;\n */\n value: AgentCodeContext_ContextURL;\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.AgentCodeContext\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"project_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"context\" },\n { no: 2, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"context\" },\n { no: 3, name: \"context_url\", kind: \"message\", T: AgentCodeContext_ContextURL, oneof: \"context\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AgentCodeContext {\n return new AgentCodeContext().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentCodeContext {\n return new AgentCodeContext().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentCodeContext {\n return new AgentCodeContext().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentCodeContext | PlainMessage | undefined, b: AgentCodeContext | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentCodeContext, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AgentCodeContext.ContextURL\n */\nexport class AgentCodeContext_ContextURL extends Message {\n /**\n * @generated from field: string url = 1;\n */\n url = \"\";\n\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.AgentCodeContext.ContextURL\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"environment_class_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AgentCodeContext_ContextURL {\n return new AgentCodeContext_ContextURL().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentCodeContext_ContextURL {\n return new AgentCodeContext_ContextURL().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentCodeContext_ContextURL {\n return new AgentCodeContext_ContextURL().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentCodeContext_ContextURL | PlainMessage | undefined, b: AgentCodeContext_ContextURL | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentCodeContext_ContextURL, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.StartAgentRequest\n */\nexport class StartAgentRequest extends Message {\n /**\n * @generated from field: string agent_id = 1;\n */\n agentId = \"\";\n\n /**\n * @generated from field: gitpod.v1.AgentCodeContext code_context = 2;\n */\n codeContext?: AgentCodeContext;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.StartAgentRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"agent_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"code_context\", kind: \"message\", T: AgentCodeContext },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): StartAgentRequest {\n return new StartAgentRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): StartAgentRequest {\n return new StartAgentRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): StartAgentRequest {\n return new StartAgentRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: StartAgentRequest | PlainMessage | undefined, b: StartAgentRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(StartAgentRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.StartAgentResponse\n */\nexport class StartAgentResponse extends Message {\n /**\n * @generated from field: string agent_execution_id = 1;\n */\n agentExecutionId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.StartAgentResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"agent_execution_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): StartAgentResponse {\n return new StartAgentResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): StartAgentResponse {\n return new StartAgentResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): StartAgentResponse {\n return new StartAgentResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: StartAgentResponse | PlainMessage | undefined, b: StartAgentResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(StartAgentResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListAgentExecutionsRequest\n */\nexport class ListAgentExecutionsRequest extends Message {\n /**\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\n /**\n * @generated from field: gitpod.v1.ListAgentExecutionsRequest.Filter filter = 2;\n */\n filter?: ListAgentExecutionsRequest_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.ListAgentExecutionsRequest\";\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: ListAgentExecutionsRequest_Filter },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListAgentExecutionsRequest {\n return new ListAgentExecutionsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListAgentExecutionsRequest {\n return new ListAgentExecutionsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListAgentExecutionsRequest {\n return new ListAgentExecutionsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListAgentExecutionsRequest | PlainMessage | undefined, b: ListAgentExecutionsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListAgentExecutionsRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListAgentExecutionsRequest.Filter\n */\nexport class ListAgentExecutionsRequest_Filter extends Message {\n /**\n * @generated from field: repeated string agent_ids = 1;\n */\n agentIds: string[] = [];\n\n /**\n * @generated from field: repeated string project_ids = 2;\n */\n projectIds: string[] = [];\n\n /**\n * @generated from field: repeated string environment_ids = 3;\n */\n environmentIds: string[] = [];\n\n /**\n * @generated from field: repeated string creator_ids = 4;\n */\n creatorIds: string[] = [];\n\n /**\n * @generated from field: repeated gitpod.v1.AgentExecution.Phase status_phases = 5;\n */\n statusPhases: AgentExecution_Phase[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListAgentExecutionsRequest.Filter\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"agent_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 2, name: \"project_ids\", 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: \"creator_ids\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 5, name: \"status_phases\", kind: \"enum\", T: proto3.getEnumType(AgentExecution_Phase), repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListAgentExecutionsRequest_Filter {\n return new ListAgentExecutionsRequest_Filter().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListAgentExecutionsRequest_Filter {\n return new ListAgentExecutionsRequest_Filter().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListAgentExecutionsRequest_Filter {\n return new ListAgentExecutionsRequest_Filter().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListAgentExecutionsRequest_Filter | PlainMessage | undefined, b: ListAgentExecutionsRequest_Filter | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListAgentExecutionsRequest_Filter, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListAgentExecutionsResponse\n */\nexport class ListAgentExecutionsResponse 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.AgentExecution agent_executions = 2;\n */\n agentExecutions: AgentExecution[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListAgentExecutionsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"agent_executions\", kind: \"message\", T: AgentExecution, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListAgentExecutionsResponse {\n return new ListAgentExecutionsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListAgentExecutionsResponse {\n return new ListAgentExecutionsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListAgentExecutionsResponse {\n return new ListAgentExecutionsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListAgentExecutionsResponse | PlainMessage | undefined, b: ListAgentExecutionsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListAgentExecutionsResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetAgentExecutionRequest\n */\nexport class GetAgentExecutionRequest extends Message {\n /**\n * @generated from field: string agent_execution_id = 1;\n */\n agentExecutionId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetAgentExecutionRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"agent_execution_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetAgentExecutionRequest {\n return new GetAgentExecutionRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetAgentExecutionRequest {\n return new GetAgentExecutionRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetAgentExecutionRequest {\n return new GetAgentExecutionRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetAgentExecutionRequest | PlainMessage | undefined, b: GetAgentExecutionRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetAgentExecutionRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetAgentExecutionResponse\n */\nexport class GetAgentExecutionResponse extends Message {\n /**\n * @generated from field: gitpod.v1.AgentExecution agent_execution = 1;\n */\n agentExecution?: AgentExecution;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetAgentExecutionResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"agent_execution\", kind: \"message\", T: AgentExecution },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetAgentExecutionResponse {\n return new GetAgentExecutionResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetAgentExecutionResponse {\n return new GetAgentExecutionResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetAgentExecutionResponse {\n return new GetAgentExecutionResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetAgentExecutionResponse | PlainMessage | undefined, b: GetAgentExecutionResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetAgentExecutionResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteAgentExecutionRequest\n */\nexport class DeleteAgentExecutionRequest extends Message {\n /**\n * @generated from field: string agent_execution_id = 1;\n */\n agentExecutionId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteAgentExecutionRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"agent_execution_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteAgentExecutionRequest {\n return new DeleteAgentExecutionRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteAgentExecutionRequest {\n return new DeleteAgentExecutionRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteAgentExecutionRequest {\n return new DeleteAgentExecutionRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteAgentExecutionRequest | PlainMessage | undefined, b: DeleteAgentExecutionRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteAgentExecutionRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteAgentExecutionResponse\n */\nexport class DeleteAgentExecutionResponse 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.DeleteAgentExecutionResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteAgentExecutionResponse {\n return new DeleteAgentExecutionResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteAgentExecutionResponse {\n return new DeleteAgentExecutionResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteAgentExecutionResponse {\n return new DeleteAgentExecutionResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteAgentExecutionResponse | PlainMessage | undefined, b: DeleteAgentExecutionResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteAgentExecutionResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AgentExecution\n */\nexport class AgentExecution extends Message {\n /**\n * ID is a unique identifier of this agent run. No other agent run with the\n * same name must be managed by this agent manager\n *\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * Metadata is data associated with this agent that's required for other\n * parts of Gitpod to function\n *\n * @generated from field: gitpod.v1.AgentExecution.Metadata metadata = 2;\n */\n metadata?: AgentExecution_Metadata;\n\n /**\n * Spec is the configuration of the agent that's required for the\n * runner to start the agent\n *\n * @generated from field: gitpod.v1.AgentExecution.Spec spec = 3;\n */\n spec?: AgentExecution_Spec;\n\n /**\n * Status is the current status of the agent\n *\n * @generated from field: gitpod.v1.AgentExecution.Status status = 4;\n */\n status?: AgentExecution_Status;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.AgentExecution\";\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: AgentExecution_Metadata },\n { no: 3, name: \"spec\", kind: \"message\", T: AgentExecution_Spec },\n { no: 4, name: \"status\", kind: \"message\", T: AgentExecution_Status },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AgentExecution {\n return new AgentExecution().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentExecution {\n return new AgentExecution().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentExecution {\n return new AgentExecution().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentExecution | PlainMessage | undefined, b: AgentExecution | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentExecution, a, b);\n }\n}\n\n/**\n * @generated from enum gitpod.v1.AgentExecution.Phase\n */\nexport enum AgentExecution_Phase {\n /**\n * The phase is not set.\n *\n * @generated from enum value: PHASE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * The agent run is pending.\n *\n * @generated from enum value: PHASE_PENDING = 10;\n */\n PENDING = 10,\n\n /**\n * The agent run is active.\n *\n * @generated from enum value: PHASE_RUNNING = 20;\n */\n RUNNING = 20,\n\n /**\n * The agent run is waiting for input.\n *\n * @generated from enum value: PHASE_WAITING_FOR_INPUT = 30;\n */\n WAITING_FOR_INPUT = 30,\n\n /**\n * The agent run is inactive.\n *\n * @generated from enum value: PHASE_STOPPED = 40;\n */\n STOPPED = 40,\n}\n// Retrieve enum metadata with: proto3.getEnumType(AgentExecution_Phase)\nproto3.util.setEnumType(AgentExecution_Phase, \"gitpod.v1.AgentExecution.Phase\", [\n { no: 0, name: \"PHASE_UNSPECIFIED\" },\n { no: 10, name: \"PHASE_PENDING\" },\n { no: 20, name: \"PHASE_RUNNING\" },\n { no: 30, name: \"PHASE_WAITING_FOR_INPUT\" },\n { no: 40, name: \"PHASE_STOPPED\" },\n]);\n\n/**\n * @generated from message gitpod.v1.AgentExecution.Metadata\n */\nexport class AgentExecution_Metadata 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.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.AgentExecution.Metadata\";\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: \"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): AgentExecution_Metadata {\n return new AgentExecution_Metadata().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentExecution_Metadata {\n return new AgentExecution_Metadata().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentExecution_Metadata {\n return new AgentExecution_Metadata().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentExecution_Metadata | PlainMessage | undefined, b: AgentExecution_Metadata | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentExecution_Metadata, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AgentExecution.Spec\n */\nexport class AgentExecution_Spec 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 * @generated from field: string session = 2;\n */\n session = \"\";\n\n /**\n * desired_phase is the desired phase of the agent run\n *\n * @generated from field: gitpod.v1.AgentExecution.Phase desired_phase = 3;\n */\n desiredPhase = AgentExecution_Phase.UNSPECIFIED;\n\n /**\n * @generated from field: string agent_id = 4;\n */\n agentId = \"\";\n\n /**\n * @generated from field: gitpod.v1.AgentCodeContext code_context = 5;\n */\n codeContext?: AgentCodeContext;\n\n /**\n * @generated from field: gitpod.v1.AgentExecution.Spec.Limits limits = 6;\n */\n limits?: AgentExecution_Spec_Limits;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.AgentExecution.Spec\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"spec_version\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */ },\n { no: 2, name: \"session\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"desired_phase\", kind: \"enum\", T: proto3.getEnumType(AgentExecution_Phase) },\n { no: 4, name: \"agent_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"code_context\", kind: \"message\", T: AgentCodeContext },\n { no: 6, name: \"limits\", kind: \"message\", T: AgentExecution_Spec_Limits },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AgentExecution_Spec {\n return new AgentExecution_Spec().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentExecution_Spec {\n return new AgentExecution_Spec().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentExecution_Spec {\n return new AgentExecution_Spec().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentExecution_Spec | PlainMessage | undefined, b: AgentExecution_Spec | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentExecution_Spec, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AgentExecution.Spec.Limits\n */\nexport class AgentExecution_Spec_Limits extends Message {\n /**\n * @generated from field: int64 max_iterations = 1;\n */\n maxIterations = protoInt64.zero;\n\n /**\n * @generated from field: int64 max_output_tokens = 2;\n */\n maxOutputTokens = protoInt64.zero;\n\n /**\n * @generated from field: int64 max_input_tokens = 3;\n */\n maxInputTokens = protoInt64.zero;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.AgentExecution.Spec.Limits\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"max_iterations\", kind: \"scalar\", T: 3 /* ScalarType.INT64 */ },\n { no: 2, name: \"max_output_tokens\", kind: \"scalar\", T: 3 /* ScalarType.INT64 */ },\n { no: 3, name: \"max_input_tokens\", kind: \"scalar\", T: 3 /* ScalarType.INT64 */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AgentExecution_Spec_Limits {\n return new AgentExecution_Spec_Limits().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentExecution_Spec_Limits {\n return new AgentExecution_Spec_Limits().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentExecution_Spec_Limits {\n return new AgentExecution_Spec_Limits().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentExecution_Spec_Limits | PlainMessage | undefined, b: AgentExecution_Spec_Limits | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentExecution_Spec_Limits, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AgentExecution.Status\n */\nexport class AgentExecution_Status extends Message {\n /**\n * version of the status. 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.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 * @generated from field: string session = 2;\n */\n session = \"\";\n\n /**\n * @generated from field: gitpod.v1.AgentExecution.Phase phase = 3;\n */\n phase = AgentExecution_Phase.UNSPECIFIED;\n\n /**\n * failure_message contains the reason the agent run failed to operate.\n *\n * @generated from field: string failure_message = 4;\n */\n failureMessage = \"\";\n\n /**\n * warning_message contains warnings, e.g. when the LLM is overloaded.\n *\n * @generated from field: string warning_message = 5;\n */\n warningMessage = \"\";\n\n /**\n * conversation_url is the URL to the conversation (all messages exchanged between the agent and the user) of the agent run.\n *\n * @generated from field: string conversation_url = 10;\n */\n conversationUrl = \"\";\n\n /**\n * transcript_url is the URL to the LLM transcript (all messages exchanged between the agent and the LLM) of the agent run.\n *\n * @generated from field: string transcript_url = 11;\n */\n transcriptUrl = \"\";\n\n /**\n * @generated from field: int64 iterations = 20;\n */\n iterations = protoInt64.zero;\n\n /**\n * @generated from field: int64 input_tokens_used = 21;\n */\n inputTokensUsed = protoInt64.zero;\n\n /**\n * @generated from field: int64 output_tokens_used = 22;\n */\n outputTokensUsed = protoInt64.zero;\n\n /**\n * judgement is the judgement of the agent run produced by the judgement prompt.\n *\n * @generated from field: string judgement = 30;\n */\n judgement = \"\";\n\n /**\n * current_operation is the current operation of the agent execution.\n *\n * @generated from field: gitpod.v1.AgentExecution.Status.CurrentOperation current_operation = 40;\n */\n currentOperation?: AgentExecution_Status_CurrentOperation;\n\n /**\n * used_environments is the list of environments that were used by the agent execution.\n *\n * @generated from field: repeated gitpod.v1.AgentExecution.Status.EnvironmentUsage used_environments = 50;\n */\n usedEnvironments: AgentExecution_Status_EnvironmentUsage[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.AgentExecution.Status\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"status_version\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */ },\n { no: 2, name: \"session\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"phase\", kind: \"enum\", T: proto3.getEnumType(AgentExecution_Phase) },\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: 10, name: \"conversation_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 11, name: \"transcript_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 20, name: \"iterations\", kind: \"scalar\", T: 3 /* ScalarType.INT64 */ },\n { no: 21, name: \"input_tokens_used\", kind: \"scalar\", T: 3 /* ScalarType.INT64 */ },\n { no: 22, name: \"output_tokens_used\", kind: \"scalar\", T: 3 /* ScalarType.INT64 */ },\n { no: 30, name: \"judgement\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 40, name: \"current_operation\", kind: \"message\", T: AgentExecution_Status_CurrentOperation },\n { no: 50, name: \"used_environments\", kind: \"message\", T: AgentExecution_Status_EnvironmentUsage, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AgentExecution_Status {\n return new AgentExecution_Status().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentExecution_Status {\n return new AgentExecution_Status().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentExecution_Status {\n return new AgentExecution_Status().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentExecution_Status | PlainMessage | undefined, b: AgentExecution_Status | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentExecution_Status, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AgentExecution.Status.ToolUse\n */\nexport class AgentExecution_Status_ToolUse extends Message {\n /**\n * @generated from field: string tool_name = 1;\n */\n toolName = \"\";\n\n /**\n * @generated from field: bool complete = 2;\n */\n complete = 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.AgentExecution.Status.ToolUse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"tool_name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"complete\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AgentExecution_Status_ToolUse {\n return new AgentExecution_Status_ToolUse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentExecution_Status_ToolUse {\n return new AgentExecution_Status_ToolUse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentExecution_Status_ToolUse {\n return new AgentExecution_Status_ToolUse().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentExecution_Status_ToolUse | PlainMessage | undefined, b: AgentExecution_Status_ToolUse | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentExecution_Status_ToolUse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AgentExecution.Status.LLM\n */\nexport class AgentExecution_Status_LLM extends Message {\n /**\n * @generated from field: bool complete = 1;\n */\n complete = 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.AgentExecution.Status.LLM\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"complete\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AgentExecution_Status_LLM {\n return new AgentExecution_Status_LLM().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentExecution_Status_LLM {\n return new AgentExecution_Status_LLM().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentExecution_Status_LLM {\n return new AgentExecution_Status_LLM().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentExecution_Status_LLM | PlainMessage | undefined, b: AgentExecution_Status_LLM | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentExecution_Status_LLM, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AgentExecution.Status.CurrentOperation\n */\nexport class AgentExecution_Status_CurrentOperation extends Message {\n /**\n * @generated from field: string session = 1;\n */\n session = \"\";\n\n /**\n * retries is the number of times the agent run has retried one or more steps\n *\n * @generated from field: int64 retries = 2;\n */\n retries = protoInt64.zero;\n\n /**\n * @generated from oneof gitpod.v1.AgentExecution.Status.CurrentOperation.operation\n */\n operation: {\n /**\n * @generated from field: gitpod.v1.AgentExecution.Status.ToolUse tool_use = 3;\n */\n value: AgentExecution_Status_ToolUse;\n case: \"toolUse\";\n } | {\n /**\n * @generated from field: gitpod.v1.AgentExecution.Status.LLM llm = 4;\n */\n value: AgentExecution_Status_LLM;\n case: \"llm\";\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.AgentExecution.Status.CurrentOperation\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"session\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"retries\", kind: \"scalar\", T: 3 /* ScalarType.INT64 */ },\n { no: 3, name: \"tool_use\", kind: \"message\", T: AgentExecution_Status_ToolUse, oneof: \"operation\" },\n { no: 4, name: \"llm\", kind: \"message\", T: AgentExecution_Status_LLM, oneof: \"operation\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AgentExecution_Status_CurrentOperation {\n return new AgentExecution_Status_CurrentOperation().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentExecution_Status_CurrentOperation {\n return new AgentExecution_Status_CurrentOperation().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentExecution_Status_CurrentOperation {\n return new AgentExecution_Status_CurrentOperation().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentExecution_Status_CurrentOperation | PlainMessage | undefined, b: AgentExecution_Status_CurrentOperation | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentExecution_Status_CurrentOperation, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AgentExecution.Status.EnvironmentUsage\n */\nexport class AgentExecution_Status_EnvironmentUsage extends Message {\n /**\n * @generated from field: string environment_id = 1;\n */\n environmentId = \"\";\n\n /**\n * @generated from field: bool created_by_agent = 2;\n */\n createdByAgent = 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.AgentExecution.Status.EnvironmentUsage\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"environment_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"created_by_agent\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AgentExecution_Status_EnvironmentUsage {\n return new AgentExecution_Status_EnvironmentUsage().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentExecution_Status_EnvironmentUsage {\n return new AgentExecution_Status_EnvironmentUsage().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentExecution_Status_EnvironmentUsage {\n return new AgentExecution_Status_EnvironmentUsage().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentExecution_Status_EnvironmentUsage | PlainMessage | undefined, b: AgentExecution_Status_EnvironmentUsage | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentExecution_Status_EnvironmentUsage, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AgentResponseBlock\n */\nexport class AgentResponseBlock extends Message {\n /**\n * id is the unique identifier of the response block. A conversation can have multiple blocks with the same ID.\n * Clients are expected to use the ID to update or replace a block.\n *\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * phase is the phase of the response block indicating how to update the previous output block with the same ID.\n *\n * @generated from field: gitpod.v1.AgentResponseBlock.Phase phase = 2;\n */\n phase = AgentResponseBlock_Phase.UNSPECIFIED;\n\n /**\n * @generated from oneof gitpod.v1.AgentResponseBlock.output\n */\n output: {\n /**\n * @generated from field: gitpod.v1.AgentResponseBlock.TextOutput text = 10;\n */\n value: AgentResponseBlock_TextOutput;\n case: \"text\";\n } | {\n /**\n * @generated from field: gitpod.v1.AgentResponseBlock.ActionStarted action_started = 20;\n */\n value: AgentResponseBlock_ActionStarted;\n case: \"actionStarted\";\n } | {\n /**\n * @generated from field: gitpod.v1.AgentResponseBlock.ActionCompleted action_completed = 21;\n */\n value: AgentResponseBlock_ActionCompleted;\n case: \"actionCompleted\";\n } | {\n /**\n * @generated from field: gitpod.v1.AgentResponseBlock.FileModification file_modification = 30;\n */\n value: AgentResponseBlock_FileModification;\n case: \"fileModification\";\n } | {\n /**\n * @generated from field: gitpod.v1.AgentResponseBlock.EnvironmentCreation environment_creation = 40;\n */\n value: AgentResponseBlock_EnvironmentCreation;\n case: \"environmentCreation\";\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.AgentResponseBlock\";\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(AgentResponseBlock_Phase) },\n { no: 10, name: \"text\", kind: \"message\", T: AgentResponseBlock_TextOutput, oneof: \"output\" },\n { no: 20, name: \"action_started\", kind: \"message\", T: AgentResponseBlock_ActionStarted, oneof: \"output\" },\n { no: 21, name: \"action_completed\", kind: \"message\", T: AgentResponseBlock_ActionCompleted, oneof: \"output\" },\n { no: 30, name: \"file_modification\", kind: \"message\", T: AgentResponseBlock_FileModification, oneof: \"output\" },\n { no: 40, name: \"environment_creation\", kind: \"message\", T: AgentResponseBlock_EnvironmentCreation, oneof: \"output\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AgentResponseBlock {\n return new AgentResponseBlock().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentResponseBlock {\n return new AgentResponseBlock().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentResponseBlock {\n return new AgentResponseBlock().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentResponseBlock | PlainMessage | undefined, b: AgentResponseBlock | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentResponseBlock, a, b);\n }\n}\n\n/**\n * @generated from enum gitpod.v1.AgentResponseBlock.Phase\n */\nexport enum AgentResponseBlock_Phase {\n /**\n * @generated from enum value: PHASE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * Update replaces the previous output block with the same ID.\n *\n * @generated from enum value: PHASE_UPDATE = 1;\n */\n UPDATE = 1,\n\n /**\n * Completed indicates that the output block is complete - it overrides any previous output block with the same ID.\n *\n * @generated from enum value: PHASE_COMPLETED = 2;\n */\n COMPLETED = 2,\n\n /**\n * Delta indicates that the output block is a delta to the previous output block; append to the previous output block.\n *\n * @generated from enum value: PHASE_DELTA = 3;\n */\n DELTA = 3,\n}\n// Retrieve enum metadata with: proto3.getEnumType(AgentResponseBlock_Phase)\nproto3.util.setEnumType(AgentResponseBlock_Phase, \"gitpod.v1.AgentResponseBlock.Phase\", [\n { no: 0, name: \"PHASE_UNSPECIFIED\" },\n { no: 1, name: \"PHASE_UPDATE\" },\n { no: 2, name: \"PHASE_COMPLETED\" },\n { no: 3, name: \"PHASE_DELTA\" },\n]);\n\n/**\n * @generated from message gitpod.v1.AgentResponseBlock.TextOutput\n */\nexport class AgentResponseBlock_TextOutput extends Message {\n /**\n * @generated from field: gitpod.v1.AgentResponseBlock.TextOutput.Type type = 1;\n */\n type = AgentResponseBlock_TextOutput_Type.UNSPECIFIED;\n\n /**\n * @generated from field: string content = 2;\n */\n content = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.AgentResponseBlock.TextOutput\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"type\", kind: \"enum\", T: proto3.getEnumType(AgentResponseBlock_TextOutput_Type) },\n { no: 2, name: \"content\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AgentResponseBlock_TextOutput {\n return new AgentResponseBlock_TextOutput().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentResponseBlock_TextOutput {\n return new AgentResponseBlock_TextOutput().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentResponseBlock_TextOutput {\n return new AgentResponseBlock_TextOutput().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentResponseBlock_TextOutput | PlainMessage | undefined, b: AgentResponseBlock_TextOutput | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentResponseBlock_TextOutput, a, b);\n }\n}\n\n/**\n * @generated from enum gitpod.v1.AgentResponseBlock.TextOutput.Type\n */\nexport enum AgentResponseBlock_TextOutput_Type {\n /**\n * @generated from enum value: TYPE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: TYPE_USER_FACING_OUTPUT = 1;\n */\n USER_FACING_OUTPUT = 1,\n\n /**\n * @generated from enum value: TYPE_THOUGHTS = 2;\n */\n THOUGHTS = 2,\n}\n// Retrieve enum metadata with: proto3.getEnumType(AgentResponseBlock_TextOutput_Type)\nproto3.util.setEnumType(AgentResponseBlock_TextOutput_Type, \"gitpod.v1.AgentResponseBlock.TextOutput.Type\", [\n { no: 0, name: \"TYPE_UNSPECIFIED\" },\n { no: 1, name: \"TYPE_USER_FACING_OUTPUT\" },\n { no: 2, name: \"TYPE_THOUGHTS\" },\n]);\n\n/**\n * @generated from message gitpod.v1.AgentResponseBlock.ActionStarted\n */\nexport class AgentResponseBlock_ActionStarted extends Message {\n /**\n * @generated from field: string action_id = 1;\n */\n actionId = \"\";\n\n /**\n * @generated from field: string intent_description = 2;\n */\n intentDescription = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.AgentResponseBlock.ActionStarted\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"action_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"intent_description\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AgentResponseBlock_ActionStarted {\n return new AgentResponseBlock_ActionStarted().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentResponseBlock_ActionStarted {\n return new AgentResponseBlock_ActionStarted().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentResponseBlock_ActionStarted {\n return new AgentResponseBlock_ActionStarted().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentResponseBlock_ActionStarted | PlainMessage | undefined, b: AgentResponseBlock_ActionStarted | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentResponseBlock_ActionStarted, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AgentResponseBlock.ActionCompleted\n */\nexport class AgentResponseBlock_ActionCompleted extends Message {\n /**\n * @generated from field: string action_id = 1;\n */\n actionId = \"\";\n\n /**\n * @generated from field: string result_description = 2;\n */\n resultDescription = \"\";\n\n /**\n * @generated from field: bool failed = 3;\n */\n failed = 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.AgentResponseBlock.ActionCompleted\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"action_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"result_description\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"failed\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AgentResponseBlock_ActionCompleted {\n return new AgentResponseBlock_ActionCompleted().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentResponseBlock_ActionCompleted {\n return new AgentResponseBlock_ActionCompleted().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentResponseBlock_ActionCompleted {\n return new AgentResponseBlock_ActionCompleted().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentResponseBlock_ActionCompleted | PlainMessage | undefined, b: AgentResponseBlock_ActionCompleted | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentResponseBlock_ActionCompleted, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AgentResponseBlock.FileModification\n */\nexport class AgentResponseBlock_FileModification extends Message {\n /**\n * @generated from field: string action_id = 1;\n */\n actionId = \"\";\n\n /**\n * @generated from field: string file_path = 2;\n */\n filePath = \"\";\n\n /**\n * @generated from field: string content = 3;\n */\n content = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.AgentResponseBlock.FileModification\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"action_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"file_path\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"content\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AgentResponseBlock_FileModification {\n return new AgentResponseBlock_FileModification().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentResponseBlock_FileModification {\n return new AgentResponseBlock_FileModification().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentResponseBlock_FileModification {\n return new AgentResponseBlock_FileModification().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentResponseBlock_FileModification | PlainMessage | undefined, b: AgentResponseBlock_FileModification | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentResponseBlock_FileModification, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AgentResponseBlock.EnvironmentCreation\n */\nexport class AgentResponseBlock_EnvironmentCreation extends Message {\n /**\n * @generated from field: string action_id = 1;\n */\n actionId = \"\";\n\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.AgentResponseBlock.EnvironmentCreation\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"action_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): AgentResponseBlock_EnvironmentCreation {\n return new AgentResponseBlock_EnvironmentCreation().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentResponseBlock_EnvironmentCreation {\n return new AgentResponseBlock_EnvironmentCreation().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentResponseBlock_EnvironmentCreation {\n return new AgentResponseBlock_EnvironmentCreation().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentResponseBlock_EnvironmentCreation | PlainMessage | undefined, b: AgentResponseBlock_EnvironmentCreation | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentResponseBlock_EnvironmentCreation, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UserInputBlock\n */\nexport class UserInputBlock extends Message {\n /**\n * @generated from oneof gitpod.v1.UserInputBlock.input\n */\n input: {\n /**\n * @generated from field: gitpod.v1.UserInputBlock.TextInput text = 20;\n */\n value: UserInputBlock_TextInput;\n case: \"text\";\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.UserInputBlock\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 20, name: \"text\", kind: \"message\", T: UserInputBlock_TextInput, oneof: \"input\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UserInputBlock {\n return new UserInputBlock().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UserInputBlock {\n return new UserInputBlock().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UserInputBlock {\n return new UserInputBlock().fromJsonString(jsonString, options);\n }\n\n static equals(a: UserInputBlock | PlainMessage | undefined, b: UserInputBlock | PlainMessage | undefined): boolean {\n return proto3.util.equals(UserInputBlock, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UserInputBlock.TextInput\n */\nexport class UserInputBlock_TextInput extends Message {\n /**\n * @generated from field: string content = 1;\n */\n content = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UserInputBlock.TextInput\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"content\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UserInputBlock_TextInput {\n return new UserInputBlock_TextInput().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UserInputBlock_TextInput {\n return new UserInputBlock_TextInput().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UserInputBlock_TextInput {\n return new UserInputBlock_TextInput().fromJsonString(jsonString, options);\n }\n\n static equals(a: UserInputBlock_TextInput | PlainMessage | undefined, b: UserInputBlock_TextInput | PlainMessage | undefined): boolean {\n return proto3.util.equals(UserInputBlock_TextInput, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.SendToAgentExecutionRequest\n */\nexport class SendToAgentExecutionRequest extends Message {\n /**\n * @generated from field: string agent_execution_id = 1;\n */\n agentExecutionId = \"\";\n\n /**\n * @generated from field: gitpod.v1.UserInputBlock user_input = 2;\n */\n userInput?: UserInputBlock;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.SendToAgentExecutionRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"agent_execution_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"user_input\", kind: \"message\", T: UserInputBlock },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SendToAgentExecutionRequest {\n return new SendToAgentExecutionRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SendToAgentExecutionRequest {\n return new SendToAgentExecutionRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SendToAgentExecutionRequest {\n return new SendToAgentExecutionRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: SendToAgentExecutionRequest | PlainMessage | undefined, b: SendToAgentExecutionRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(SendToAgentExecutionRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.SendToAgentExecutionResponse\n */\nexport class SendToAgentExecutionResponse 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.SendToAgentExecutionResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SendToAgentExecutionResponse {\n return new SendToAgentExecutionResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SendToAgentExecutionResponse {\n return new SendToAgentExecutionResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SendToAgentExecutionResponse {\n return new SendToAgentExecutionResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: SendToAgentExecutionResponse | PlainMessage | undefined, b: SendToAgentExecutionResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(SendToAgentExecutionResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateAgentExecutionConversationTokenRequest\n */\nexport class CreateAgentExecutionConversationTokenRequest extends Message {\n /**\n * @generated from field: string agent_execution_id = 1;\n */\n agentExecutionId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateAgentExecutionConversationTokenRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"agent_execution_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateAgentExecutionConversationTokenRequest {\n return new CreateAgentExecutionConversationTokenRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateAgentExecutionConversationTokenRequest {\n return new CreateAgentExecutionConversationTokenRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateAgentExecutionConversationTokenRequest {\n return new CreateAgentExecutionConversationTokenRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateAgentExecutionConversationTokenRequest | PlainMessage | undefined, b: CreateAgentExecutionConversationTokenRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateAgentExecutionConversationTokenRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateAgentExecutionConversationTokenResponse\n */\nexport class CreateAgentExecutionConversationTokenResponse 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.CreateAgentExecutionConversationTokenResponse\";\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): CreateAgentExecutionConversationTokenResponse {\n return new CreateAgentExecutionConversationTokenResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateAgentExecutionConversationTokenResponse {\n return new CreateAgentExecutionConversationTokenResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateAgentExecutionConversationTokenResponse {\n return new CreateAgentExecutionConversationTokenResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateAgentExecutionConversationTokenResponse | PlainMessage | undefined, b: CreateAgentExecutionConversationTokenResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateAgentExecutionConversationTokenResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateAgentExecutionTranscriptTokenRequest\n */\nexport class CreateAgentExecutionTranscriptTokenRequest extends Message {\n /**\n * @generated from field: string agent_execution_id = 1;\n */\n agentExecutionId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateAgentExecutionTranscriptTokenRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"agent_execution_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateAgentExecutionTranscriptTokenRequest {\n return new CreateAgentExecutionTranscriptTokenRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateAgentExecutionTranscriptTokenRequest {\n return new CreateAgentExecutionTranscriptTokenRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateAgentExecutionTranscriptTokenRequest {\n return new CreateAgentExecutionTranscriptTokenRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateAgentExecutionTranscriptTokenRequest | PlainMessage | undefined, b: CreateAgentExecutionTranscriptTokenRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateAgentExecutionTranscriptTokenRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateAgentExecutionTranscriptTokenResponse\n */\nexport class CreateAgentExecutionTranscriptTokenResponse 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.CreateAgentExecutionTranscriptTokenResponse\";\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): CreateAgentExecutionTranscriptTokenResponse {\n return new CreateAgentExecutionTranscriptTokenResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateAgentExecutionTranscriptTokenResponse {\n return new CreateAgentExecutionTranscriptTokenResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateAgentExecutionTranscriptTokenResponse {\n return new CreateAgentExecutionTranscriptTokenResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateAgentExecutionTranscriptTokenResponse | PlainMessage | undefined, b: CreateAgentExecutionTranscriptTokenResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateAgentExecutionTranscriptTokenResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AgentSpec\n */\nexport class AgentSpec extends Message {\n /**\n * The prompts configuration for each supported model. One cannot have multiple prompts for the same model - this will return an invalid argument error.\n *\n * @generated from field: repeated gitpod.v1.AgentSpec.Prompts prompts = 1;\n */\n prompts: AgentSpec_Prompts[] = [];\n\n /**\n * The list of tools required by this agent to function\n *\n * @generated from field: repeated string required_tools = 2;\n */\n requiredTools: 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.AgentSpec\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"prompts\", kind: \"message\", T: AgentSpec_Prompts, repeated: true },\n { no: 2, name: \"required_tools\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AgentSpec {\n return new AgentSpec().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentSpec {\n return new AgentSpec().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentSpec {\n return new AgentSpec().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentSpec | PlainMessage | undefined, b: AgentSpec | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentSpec, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.AgentSpec.Prompts\n */\nexport class AgentSpec_Prompts extends Message {\n /**\n * The model these prompts are for\n *\n * @generated from field: gitpod.v1.SupportedModel model = 1;\n */\n model = SupportedModel.UNSPECIFIED;\n\n /**\n * The system prompt that defines the agent's role and capabilities\n *\n * @generated from field: string system_prompt = 2;\n */\n systemPrompt = \"\";\n\n /**\n * The initial message sent to the user. If empty, the agent will start in WAITING_FOR_INPUT state\n *\n * @generated from field: string initial_message = 3;\n */\n initialMessage = \"\";\n\n /**\n * The prompt used to evaluate agent's performance and provide final assessment\n *\n * @generated from field: string judgement_prompt = 4;\n */\n judgementPrompt = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.AgentSpec.Prompts\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"model\", kind: \"enum\", T: proto3.getEnumType(SupportedModel) },\n { no: 2, name: \"system_prompt\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"initial_message\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"judgement_prompt\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): AgentSpec_Prompts {\n return new AgentSpec_Prompts().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): AgentSpec_Prompts {\n return new AgentSpec_Prompts().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): AgentSpec_Prompts {\n return new AgentSpec_Prompts().fromJsonString(jsonString, options);\n }\n\n static equals(a: AgentSpec_Prompts | PlainMessage | undefined, b: AgentSpec_Prompts | PlainMessage | undefined): boolean {\n return proto3.util.equals(AgentSpec_Prompts, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateAgentRequest\n */\nexport class CreateAgentRequest extends Message {\n /**\n * The name of the agent\n *\n * @generated from field: string name = 1;\n */\n name = \"\";\n\n /**\n * A description of what the agent does\n *\n * @generated from field: string description = 2;\n */\n description = \"\";\n\n /**\n * The prompts configuration for each supported model\n *\n * @generated from field: gitpod.v1.AgentSpec spec = 4;\n */\n spec?: AgentSpec;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateAgentRequest\";\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: 4, name: \"spec\", kind: \"message\", T: AgentSpec },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateAgentRequest {\n return new CreateAgentRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateAgentRequest {\n return new CreateAgentRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateAgentRequest {\n return new CreateAgentRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateAgentRequest | PlainMessage | undefined, b: CreateAgentRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateAgentRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateAgentResponse\n */\nexport class CreateAgentResponse extends Message {\n /**\n * The created agent\n *\n * @generated from field: gitpod.v1.Agent agent = 1;\n */\n agent?: Agent;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateAgentResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"agent\", kind: \"message\", T: Agent },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateAgentResponse {\n return new CreateAgentResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateAgentResponse {\n return new CreateAgentResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateAgentResponse {\n return new CreateAgentResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateAgentResponse | PlainMessage | undefined, b: CreateAgentResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateAgentResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateAgentRequest\n */\nexport class UpdateAgentRequest extends Message {\n /**\n * The ID of the agent to update\n *\n * @generated from field: string agent_id = 1;\n */\n agentId = \"\";\n\n /**\n * Optional metadata which will replace the existing metadata partially\n * If not provided, the existing metadata will be kept.\n *\n * @generated from field: gitpod.v1.UpdateAgentRequest.Metadata metadata = 2;\n */\n metadata?: UpdateAgentRequest_Metadata;\n\n /**\n * Optional spec which will replace the existing spec partially\n *\n * @generated from field: gitpod.v1.UpdateAgentRequest.Spec spec = 3;\n */\n spec?: UpdateAgentRequest_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.UpdateAgentRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"agent_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"metadata\", kind: \"message\", T: UpdateAgentRequest_Metadata },\n { no: 3, name: \"spec\", kind: \"message\", T: UpdateAgentRequest_Spec },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateAgentRequest {\n return new UpdateAgentRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateAgentRequest {\n return new UpdateAgentRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateAgentRequest {\n return new UpdateAgentRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateAgentRequest | PlainMessage | undefined, b: UpdateAgentRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateAgentRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateAgentRequest.Metadata\n */\nexport class UpdateAgentRequest_Metadata extends Message {\n /**\n * The name of the agent\n *\n * @generated from field: optional string name = 1;\n */\n name?: string;\n\n /**\n * A description of what the agent does\n *\n * @generated from field: optional string description = 2;\n */\n description?: 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.UpdateAgentRequest.Metadata\";\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 ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateAgentRequest_Metadata {\n return new UpdateAgentRequest_Metadata().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateAgentRequest_Metadata {\n return new UpdateAgentRequest_Metadata().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateAgentRequest_Metadata {\n return new UpdateAgentRequest_Metadata().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateAgentRequest_Metadata | PlainMessage | undefined, b: UpdateAgentRequest_Metadata | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateAgentRequest_Metadata, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateAgentRequest.Spec\n */\nexport class UpdateAgentRequest_Spec extends Message {\n /**\n * The prompts configuration for each supported model.\n * Setting the system prompt of a model to the empty value will remove the system prompt for that model.\n * Adding a prompt for a model that already has a prompt will replace the existing prompt for that model.\n * Adding a prompt for a model that does not exist adds a new prompt for that model.\n *\n * @generated from field: repeated gitpod.v1.AgentSpec.Prompts prompts = 1;\n */\n prompts: AgentSpec_Prompts[] = [];\n\n /**\n * The list of tools required by this agent to function.\n * Providing a value here will replace the existing list of required tools.\n *\n * @generated from field: repeated string required_tools = 2;\n */\n requiredTools: 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.UpdateAgentRequest.Spec\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"prompts\", kind: \"message\", T: AgentSpec_Prompts, repeated: true },\n { no: 2, name: \"required_tools\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateAgentRequest_Spec {\n return new UpdateAgentRequest_Spec().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateAgentRequest_Spec {\n return new UpdateAgentRequest_Spec().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateAgentRequest_Spec {\n return new UpdateAgentRequest_Spec().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateAgentRequest_Spec | PlainMessage | undefined, b: UpdateAgentRequest_Spec | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateAgentRequest_Spec, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateAgentResponse\n */\nexport class UpdateAgentResponse extends Message {\n /**\n * The updated agent\n *\n * @generated from field: gitpod.v1.Agent agent = 1;\n */\n agent?: Agent;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateAgentResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"agent\", kind: \"message\", T: Agent },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateAgentResponse {\n return new UpdateAgentResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateAgentResponse {\n return new UpdateAgentResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateAgentResponse {\n return new UpdateAgentResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateAgentResponse | PlainMessage | undefined, b: UpdateAgentResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateAgentResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteAgentRequest\n */\nexport class DeleteAgentRequest extends Message {\n /**\n * The ID of the agent to delete\n *\n * @generated from field: string agent_id = 1;\n */\n agentId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.DeleteAgentRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"agent_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteAgentRequest {\n return new DeleteAgentRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteAgentRequest {\n return new DeleteAgentRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteAgentRequest {\n return new DeleteAgentRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteAgentRequest | PlainMessage | undefined, b: DeleteAgentRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteAgentRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteAgentResponse\n */\nexport class DeleteAgentResponse 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.DeleteAgentResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteAgentResponse {\n return new DeleteAgentResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteAgentResponse {\n return new DeleteAgentResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteAgentResponse {\n return new DeleteAgentResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteAgentResponse | PlainMessage | undefined, b: DeleteAgentResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteAgentResponse, 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_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\";\nimport { SupportedModel } from \"./agent_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 * 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 * RunnerProvider identifies the specific implementation type of a runner.\n * Each provider maps to a specific kind of runner (local or remote), as\n * specified below for each provider.\n *\n * @generated from enum gitpod.v1.RunnerProvider\n */\nexport enum RunnerProvider {\n /**\n * @generated from enum value: RUNNER_PROVIDER_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * AWS EC2 based runner that deploys as a CloudFormation stack\n * Kind: RUNNER_KIND_REMOTE\n *\n * @generated from enum value: RUNNER_PROVIDER_AWS_EC2 = 1;\n */\n AWS_EC2 = 1,\n\n /**\n * Runner that can be deployed on Linux hosts\n * Kind: RUNNER_KIND_REMOTE\n *\n * @generated from enum value: RUNNER_PROVIDER_LINUX_HOST = 2;\n */\n LINUX_HOST = 2,\n\n /**\n * macOS desktop runner for local development\n * Kind: RUNNER_KIND_LOCAL\n *\n * @generated from enum value: RUNNER_PROVIDER_DESKTOP_MAC = 3;\n */\n DESKTOP_MAC = 3,\n}\n// Retrieve enum metadata with: proto3.getEnumType(RunnerProvider)\nproto3.util.setEnumType(RunnerProvider, \"gitpod.v1.RunnerProvider\", [\n { no: 0, name: \"RUNNER_PROVIDER_UNSPECIFIED\" },\n { no: 1, name: \"RUNNER_PROVIDER_AWS_EC2\" },\n { no: 2, name: \"RUNNER_PROVIDER_LINUX_HOST\" },\n { no: 3, name: \"RUNNER_PROVIDER_DESKTOP_MAC\" },\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 /**\n * can_create_environments filters the response to only environment classes that can be used to create new environments\n * by the caller. Unlike enabled, which indicates general availability, this ensures the caller only sees environment classes\n * they are allowed to use.\n *\n * @generated from field: optional bool can_create_environments = 3;\n */\n canCreateEnvironments?: boolean;\n\n /**\n * runner_kind filters the response to only environment classes from runners of these kinds.\n *\n * @generated from field: repeated gitpod.v1.RunnerKind runner_kinds = 4;\n */\n runnerKinds: RunnerKind[] = [];\n\n /**\n * runner_providers filters the response to only environment classes from runners of these providers.\n *\n * @generated from field: repeated gitpod.v1.RunnerProvider runner_providers = 5;\n */\n runnerProviders: RunnerProvider[] = [];\n\n constructor(data?: 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 { no: 3, name: \"can_create_environments\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true },\n { no: 4, name: \"runner_kinds\", kind: \"enum\", T: proto3.getEnumType(RunnerKind), repeated: true },\n { no: 5, name: \"runner_providers\", kind: \"enum\", T: proto3.getEnumType(RunnerProvider), repeated: 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 * deprecated, will be removed, use default_value instead\n *\n * @generated from field: string default = 1 [deprecated = true];\n * @deprecated\n */\n default = \"\";\n\n /**\n * deprecated, will be removed, use possible_values instead\n *\n * @generated from field: repeated string values = 2 [deprecated = true];\n * @deprecated\n */\n values: string[] = [];\n\n /**\n * @generated from field: gitpod.v1.RunnerConfigurationSchema.EnumField.Value default_value = 3;\n */\n defaultValue?: RunnerConfigurationSchema_EnumField_Value;\n\n /**\n * @generated from field: repeated gitpod.v1.RunnerConfigurationSchema.EnumField.Value possible_values = 4;\n */\n possibleValues: RunnerConfigurationSchema_EnumField_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.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 { no: 3, name: \"default_value\", kind: \"message\", T: RunnerConfigurationSchema_EnumField_Value },\n { no: 4, name: \"possible_values\", kind: \"message\", T: RunnerConfigurationSchema_EnumField_Value, 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.EnumField.Value\n */\nexport class RunnerConfigurationSchema_EnumField_Value extends Message {\n /**\n * @generated from field: string title = 1;\n */\n title = \"\";\n\n /**\n * @generated from field: string subtitle = 2;\n */\n subtitle = \"\";\n\n /**\n * @generated from field: string detail = 3;\n */\n detail = \"\";\n\n constructor(data?: 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.Value\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"title\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"subtitle\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"detail\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunnerConfigurationSchema_EnumField_Value {\n return new RunnerConfigurationSchema_EnumField_Value().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunnerConfigurationSchema_EnumField_Value {\n return new RunnerConfigurationSchema_EnumField_Value().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunnerConfigurationSchema_EnumField_Value {\n return new RunnerConfigurationSchema_EnumField_Value().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunnerConfigurationSchema_EnumField_Value | PlainMessage | undefined, b: RunnerConfigurationSchema_EnumField_Value | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunnerConfigurationSchema_EnumField_Value, 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/**\n * @generated from message gitpod.v1.LLMIntegration\n */\nexport class LLMIntegration extends Message {\n /**\n * id is the unique identifier of the LLM integration\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 * models represents the supported LLM models for this integration\n *\n * @generated from field: repeated gitpod.v1.SupportedModel models = 3;\n */\n models: SupportedModel[] = [];\n\n /**\n * @generated from field: string endpoint = 4;\n */\n endpoint = \"\";\n\n /**\n * encrypted_api_key is the LLM provider's API key encrypted with the runner's public key.\n *\n * @generated from field: bytes encrypted_api_key = 5;\n */\n encryptedApiKey = 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.LLMIntegration\";\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: \"models\", kind: \"enum\", T: proto3.getEnumType(SupportedModel), repeated: true },\n { no: 4, name: \"endpoint\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"encrypted_api_key\", kind: \"scalar\", T: 12 /* ScalarType.BYTES */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): LLMIntegration {\n return new LLMIntegration().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): LLMIntegration {\n return new LLMIntegration().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): LLMIntegration {\n return new LLMIntegration().fromJsonString(jsonString, options);\n }\n\n static equals(a: LLMIntegration | PlainMessage | undefined, b: LLMIntegration | PlainMessage | undefined): boolean {\n return proto3.util.equals(LLMIntegration, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateLLMIntegrationRequest\n */\nexport class CreateLLMIntegrationRequest extends Message {\n /**\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * models represents the LLM models this integration supports\n *\n * @generated from field: repeated gitpod.v1.SupportedModel models = 2;\n */\n models: SupportedModel[] = [];\n\n /**\n * @generated from field: string endpoint = 3;\n */\n endpoint = \"\";\n\n /**\n * api_key is the LLM provider's API key.\n *\n * @generated from field: string api_key = 4;\n */\n apiKey = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CreateLLMIntegrationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"models\", kind: \"enum\", T: proto3.getEnumType(SupportedModel), repeated: true },\n { no: 3, name: \"endpoint\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"api_key\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CreateLLMIntegrationRequest {\n return new CreateLLMIntegrationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateLLMIntegrationRequest {\n return new CreateLLMIntegrationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateLLMIntegrationRequest {\n return new CreateLLMIntegrationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateLLMIntegrationRequest | PlainMessage | undefined, b: CreateLLMIntegrationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateLLMIntegrationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateLLMIntegrationResponse\n */\nexport class CreateLLMIntegrationResponse extends Message {\n /**\n * id is a uniquely generated identifier for the LLM 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.CreateLLMIntegrationResponse\";\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): CreateLLMIntegrationResponse {\n return new CreateLLMIntegrationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateLLMIntegrationResponse {\n return new CreateLLMIntegrationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateLLMIntegrationResponse {\n return new CreateLLMIntegrationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateLLMIntegrationResponse | PlainMessage | undefined, b: CreateLLMIntegrationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateLLMIntegrationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetLLMIntegrationRequest\n */\nexport class GetLLMIntegrationRequest 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.GetLLMIntegrationRequest\";\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): GetLLMIntegrationRequest {\n return new GetLLMIntegrationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetLLMIntegrationRequest {\n return new GetLLMIntegrationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetLLMIntegrationRequest {\n return new GetLLMIntegrationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetLLMIntegrationRequest | PlainMessage | undefined, b: GetLLMIntegrationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetLLMIntegrationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetLLMIntegrationResponse\n */\nexport class GetLLMIntegrationResponse extends Message {\n /**\n * @generated from field: gitpod.v1.LLMIntegration integration = 1;\n */\n integration?: LLMIntegration;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetLLMIntegrationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"integration\", kind: \"message\", T: LLMIntegration },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetLLMIntegrationResponse {\n return new GetLLMIntegrationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetLLMIntegrationResponse {\n return new GetLLMIntegrationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetLLMIntegrationResponse {\n return new GetLLMIntegrationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetLLMIntegrationResponse | PlainMessage | undefined, b: GetLLMIntegrationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetLLMIntegrationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListLLMIntegrationsRequest\n */\nexport class ListLLMIntegrationsRequest 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.ListLLMIntegrationsRequest.Filter filter = 2;\n */\n filter?: ListLLMIntegrationsRequest_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.ListLLMIntegrationsRequest\";\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: ListLLMIntegrationsRequest_Filter },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListLLMIntegrationsRequest {\n return new ListLLMIntegrationsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListLLMIntegrationsRequest {\n return new ListLLMIntegrationsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListLLMIntegrationsRequest {\n return new ListLLMIntegrationsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListLLMIntegrationsRequest | PlainMessage | undefined, b: ListLLMIntegrationsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListLLMIntegrationsRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListLLMIntegrationsRequest.Filter\n */\nexport class ListLLMIntegrationsRequest_Filter extends Message {\n /**\n * runner_ids filters the response to only LLM 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.ListLLMIntegrationsRequest.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): ListLLMIntegrationsRequest_Filter {\n return new ListLLMIntegrationsRequest_Filter().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListLLMIntegrationsRequest_Filter {\n return new ListLLMIntegrationsRequest_Filter().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListLLMIntegrationsRequest_Filter {\n return new ListLLMIntegrationsRequest_Filter().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListLLMIntegrationsRequest_Filter | PlainMessage | undefined, b: ListLLMIntegrationsRequest_Filter | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListLLMIntegrationsRequest_Filter, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListLLMIntegrationsResponse\n */\nexport class ListLLMIntegrationsResponse extends Message {\n /**\n * pagination contains the pagination options for listing llm integrations\n *\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * @generated from field: repeated gitpod.v1.LLMIntegration integrations = 2;\n */\n integrations: LLMIntegration[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListLLMIntegrationsResponse\";\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: LLMIntegration, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListLLMIntegrationsResponse {\n return new ListLLMIntegrationsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListLLMIntegrationsResponse {\n return new ListLLMIntegrationsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListLLMIntegrationsResponse {\n return new ListLLMIntegrationsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListLLMIntegrationsResponse | PlainMessage | undefined, b: ListLLMIntegrationsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListLLMIntegrationsResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateLLMIntegrationRequest\n */\nexport class UpdateLLMIntegrationRequest extends Message {\n /**\n * @generated from field: string id = 1;\n */\n id = \"\";\n\n /**\n * @generated from field: optional string endpoint = 2;\n */\n endpoint?: string;\n\n /**\n * models can be updated to change the supported LLM models\n * Set list of supported models to the given list.\n * Empty list means no updates to the models.\n *\n * @generated from field: repeated gitpod.v1.SupportedModel models = 3;\n */\n models: SupportedModel[] = [];\n\n /**\n * api_key can be set to update the LLM provider's API key.\n * The cleartext secret will be encrypted with the runner's public key before being stored.\n *\n * @generated from field: optional string api_key = 4;\n */\n apiKey?: 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.UpdateLLMIntegrationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"endpoint\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"models\", kind: \"enum\", T: proto3.getEnumType(SupportedModel), repeated: true },\n { no: 4, name: \"api_key\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateLLMIntegrationRequest {\n return new UpdateLLMIntegrationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateLLMIntegrationRequest {\n return new UpdateLLMIntegrationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateLLMIntegrationRequest {\n return new UpdateLLMIntegrationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateLLMIntegrationRequest | PlainMessage | undefined, b: UpdateLLMIntegrationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateLLMIntegrationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateLLMIntegrationResponse\n */\nexport class UpdateLLMIntegrationResponse 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.UpdateLLMIntegrationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateLLMIntegrationResponse {\n return new UpdateLLMIntegrationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateLLMIntegrationResponse {\n return new UpdateLLMIntegrationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateLLMIntegrationResponse {\n return new UpdateLLMIntegrationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateLLMIntegrationResponse | PlainMessage | undefined, b: UpdateLLMIntegrationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateLLMIntegrationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteLLMIntegrationRequest\n */\nexport class DeleteLLMIntegrationRequest 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.DeleteLLMIntegrationRequest\";\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): DeleteLLMIntegrationRequest {\n return new DeleteLLMIntegrationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteLLMIntegrationRequest {\n return new DeleteLLMIntegrationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteLLMIntegrationRequest {\n return new DeleteLLMIntegrationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteLLMIntegrationRequest | PlainMessage | undefined, b: DeleteLLMIntegrationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteLLMIntegrationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.DeleteLLMIntegrationResponse\n */\nexport class DeleteLLMIntegrationResponse 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.DeleteLLMIntegrationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): DeleteLLMIntegrationResponse {\n return new DeleteLLMIntegrationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): DeleteLLMIntegrationResponse {\n return new DeleteLLMIntegrationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): DeleteLLMIntegrationResponse {\n return new DeleteLLMIntegrationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DeleteLLMIntegrationResponse | PlainMessage | undefined, b: DeleteLLMIntegrationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(DeleteLLMIntegrationResponse, 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_configuration_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 * @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: 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 /**\n * Experimental: dotfiles is the dotfiles configuration of the devcontainer\n *\n * @generated from field: gitpod.v1.EnvironmentSpec.DevContainer.Dotfiles dotfiles = 3;\n */\n dotfiles?: EnvironmentSpec_DevContainer_Dotfiles;\n\n constructor(data?: 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 { no: 3, name: \"dotfiles\", kind: \"message\", T: EnvironmentSpec_DevContainer_Dotfiles },\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.DevContainer.Dotfiles\n */\nexport class EnvironmentSpec_DevContainer_Dotfiles extends Message {\n /**\n * URL of a dotfiles Git repository (e.g. https://github.com/owner/repository)\n *\n * @generated from field: string repository = 1;\n */\n repository = \"\";\n\n constructor(data?: 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.Dotfiles\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"repository\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentSpec_DevContainer_Dotfiles {\n return new EnvironmentSpec_DevContainer_Dotfiles().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentSpec_DevContainer_Dotfiles {\n return new EnvironmentSpec_DevContainer_Dotfiles().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EnvironmentSpec_DevContainer_Dotfiles {\n return new EnvironmentSpec_DevContainer_Dotfiles().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnvironmentSpec_DevContainer_Dotfiles | PlainMessage | undefined, b: EnvironmentSpec_DevContainer_Dotfiles | PlainMessage | undefined): boolean {\n return proto3.util.equals(EnvironmentSpec_DevContainer_Dotfiles, 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 } | {\n /**\n * container_registry_basic_auth_host is the hostname of the container registry that supports basic auth\n *\n * @generated from field: string container_registry_basic_auth_host = 13;\n */\n value: string;\n case: \"containerRegistryBasicAuthHost\";\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: 13, name: \"container_registry_basic_auth_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/**\n * @generated from message gitpod.v1.CreateEnvironmentAccessTokenRequest\n */\nexport class CreateEnvironmentAccessTokenRequest extends Message {\n /**\n * environment_id specifies the environment for which the access token should be created.\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.CreateEnvironmentAccessTokenRequest\";\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): CreateEnvironmentAccessTokenRequest {\n return new CreateEnvironmentAccessTokenRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateEnvironmentAccessTokenRequest {\n return new CreateEnvironmentAccessTokenRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateEnvironmentAccessTokenRequest {\n return new CreateEnvironmentAccessTokenRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateEnvironmentAccessTokenRequest | PlainMessage | undefined, b: CreateEnvironmentAccessTokenRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateEnvironmentAccessTokenRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CreateEnvironmentAccessTokenResponse\n */\nexport class CreateEnvironmentAccessTokenResponse extends Message {\n /**\n * access_token is the token that can be used for environment authentication\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.CreateEnvironmentAccessTokenResponse\";\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): CreateEnvironmentAccessTokenResponse {\n return new CreateEnvironmentAccessTokenResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CreateEnvironmentAccessTokenResponse {\n return new CreateEnvironmentAccessTokenResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CreateEnvironmentAccessTokenResponse {\n return new CreateEnvironmentAccessTokenResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CreateEnvironmentAccessTokenResponse | PlainMessage | undefined, b: CreateEnvironmentAccessTokenResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(CreateEnvironmentAccessTokenResponse, 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 { CreateEnvironmentAccessTokenRequest, CreateEnvironmentAccessTokenResponse, 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 * Gets details about a specific environment including its status, configuration, and context URL.\n *\n * Use this method to:\n * - Check if an environment is ready to use\n * - Get connection details for IDE and exposed ports\n * - Monitor environment health and resource usage\n * - Debug environment setup issues\n *\n * ### Examples\n *\n * - Get environment details:\n *\n * Retrieves detailed information about a specific environment using its unique identifier.\n *\n * ```yaml\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * ```\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 * Lists all environments matching the specified criteria.\n *\n * Use this method to find and monitor environments across your organization.\n * Results are ordered by creation time with newest environments first.\n *\n * ### Examples\n *\n * - List running environments for a project:\n *\n * Retrieves all running environments for a specific project with pagination.\n *\n * ```yaml\n * filter:\n * statusPhases: [\"ENVIRONMENT_PHASE_RUNNING\"]\n * projectIds: [\"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"]\n * pagination:\n * pageSize: 10\n * ```\n *\n * - List all environments for a specific runner:\n *\n * Filters environments by runner ID and creator ID.\n *\n * ```yaml\n * filter:\n * runnerIds: [\"e6aa9c54-89d3-42c1-ac31-bd8d8f1concentrate\"]\n * creatorIds: [\"f53d2330-3795-4c5d-a1f3-453121af9c60\"]\n * ```\n *\n * - List stopped and deleted environments:\n *\n * Retrieves all environments in stopped or deleted state.\n *\n * ```yaml\n * filter:\n * statusPhases: [\"ENVIRONMENT_PHASE_STOPPED\", \"ENVIRONMENT_PHASE_DELETED\"]\n * ```\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 * Lists available environment classes with their specifications and resource limits.\n *\n * Use this method to understand what types of environments you can create and their\n * capabilities. Environment classes define the compute resources and features available\n * to your environments.\n *\n * ### Examples\n *\n * - List all available classes:\n *\n * Retrieves a list of all environment classes with their specifications.\n *\n * ```yaml\n * {}\n * ```\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 * Creates a development environment from a context URL (e.g. Git repository) and starts it.\n *\n * The `class` field must be a valid environment class ID. You can find a list of\n * available environment classes with the `ListEnvironmentClasses` method.\n *\n * ### Examples\n *\n * - Create from context URL:\n *\n * Creates an environment from a Git repository URL with default settings.\n *\n * ```yaml\n * spec:\n * machine:\n * class: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * content:\n * initializer:\n * specs:\n * - contextUrl:\n * url: \"https://github.com/gitpod-io/gitpod\"\n * ```\n *\n * - Create from Git repository:\n *\n * Creates an environment from a Git repository with specific branch targeting.\n *\n * ```yaml\n * spec:\n * machine:\n * class: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * content:\n * initializer:\n * specs:\n * - git:\n * remoteUri: \"https://github.com/gitpod-io/gitpod\"\n * cloneTarget: \"main\"\n * targetMode: \"CLONE_TARGET_MODE_REMOTE_BRANCH\"\n * ```\n *\n * - Create with custom timeout and ports:\n *\n * Creates an environment with custom inactivity timeout and exposed port configuration.\n *\n * ```yaml\n * spec:\n * machine:\n * class: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * content:\n * initializer:\n * specs:\n * - contextUrl:\n * url: \"https://github.com/gitpod-io/gitpod\"\n * timeout:\n * disconnected: \"7200s\" # 2 hours in seconds\n * ports:\n * - port: 3000\n * admission: \"ADMISSION_LEVEL_EVERYONE\"\n * name: \"Web App\"\n * ```\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 * Creates an environment from an existing project configuration and starts it.\n *\n * This method uses project settings as defaults but allows overriding specific\n * configurations. Project settings take precedence over default configurations,\n * while custom specifications in the request override project settings.\n *\n * ### Examples\n *\n * - Create with project defaults:\n *\n * Creates an environment using all default settings from the project configuration.\n *\n * ```yaml\n * projectId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * ```\n *\n * - Create with custom compute resources:\n *\n * Creates an environment from project with custom machine class and timeout settings.\n *\n * ```yaml\n * projectId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * spec:\n * machine:\n * class: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * timeout:\n * disconnected: \"14400s\" # 4 hours in seconds\n * ```\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 * Starts a stopped environment.\n *\n * Use this method to resume work on a previously stopped environment. The environment\n * retains its configuration and workspace content from when it was stopped.\n *\n * ### Examples\n *\n * - Start an environment:\n *\n * Resumes a previously stopped environment with its existing configuration.\n *\n * ```yaml\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * ```\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 * Stops a running environment.\n *\n * Use this method to pause work while preserving the environment's state.\n * The environment can be resumed later using StartEnvironment.\n *\n * ### Examples\n *\n * - Stop an environment:\n *\n * Gracefully stops a running environment while preserving its state.\n *\n * ```yaml\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * ```\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 * Updates an environment's configuration while it is running.\n *\n * Updates are limited to:\n * - Git credentials (username, email)\n * - SSH public keys\n * - Content initialization\n * - Port configurations\n * - Automation files\n * - Environment timeouts\n *\n * ### Examples\n *\n * - Update Git credentials:\n *\n * Updates the Git configuration for the environment.\n *\n * ```yaml\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * spec:\n * content:\n * gitUsername: \"example-user\"\n * gitEmail: \"user@example.com\"\n * ```\n *\n * - Add SSH public key:\n *\n * Adds a new SSH public key for authentication.\n *\n * ```yaml\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * spec:\n * sshPublicKeys:\n * - id: \"0194b7c1-c954-718d-91a4-9a742aa5fc11\"\n * value: \"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI...\"\n * ```\n *\n * - Update content session:\n *\n * Updates the content session identifier for the environment.\n *\n * ```yaml\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * spec:\n * content:\n * session: \"0194b7c1-c954-718d-91a4-9a742aa5fc11\"\n * ```\n *\n * Note: Machine class changes require stopping the environment and creating a new one.\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 * Permanently deletes an environment.\n *\n * Running environments are automatically stopped before deletion. If force\n * is true, the environment is deleted immediately without graceful shutdown.\n *\n * ### Examples\n *\n * - Delete with graceful shutdown:\n *\n * Deletes an environment after gracefully stopping it.\n *\n * ```yaml\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * force: false\n * ```\n *\n * - Force delete:\n *\n * Immediately deletes an environment without waiting for graceful shutdown.\n *\n * ```yaml\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * force: true\n * ```\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 * Creates an access token for retrieving environment logs.\n *\n * Generated tokens are valid for one hour and provide read-only access\n * to the environment's logs.\n *\n * ### Examples\n *\n * - Generate logs token:\n *\n * Creates a temporary access token for retrieving environment logs.\n *\n * ```yaml\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * ```\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 * Creates an access token for the environment.\n *\n * Generated tokens are valid for one hour and provide environment-specific access permissions.\n * The token is scoped to a specific environment.\n *\n * ### Examples\n *\n * - Generate environment token:\n *\n * Creates a temporary access token for accessing an environment.\n *\n * ```yaml\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * ```\n *\n * @generated from rpc gitpod.v1.EnvironmentService.CreateEnvironmentAccessToken\n */\n createEnvironmentAccessToken: {\n name: \"CreateEnvironmentAccessToken\",\n I: CreateEnvironmentAccessTokenRequest,\n O: CreateEnvironmentAccessTokenResponse,\n kind: MethodKind.Unary,\n },\n /**\n * Records environment activity to prevent automatic shutdown.\n *\n * Activity signals should be sent every 5 minutes while the environment\n * is actively being used. The source must be between 3-80 characters.\n *\n * ### Examples\n *\n * - Signal VS Code activity:\n *\n * Records VS Code editor activity to prevent environment shutdown.\n *\n * ```yaml\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * activitySignal:\n * source: \"VS Code\"\n * timestamp: \"2025-02-12T14:30:00Z\"\n * ```\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 /**\n * @generated from enum value: PROJECT_ROLE_EDITOR = 3;\n */\n EDITOR = 3,\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 { no: 3, name: \"PROJECT_ROLE_EDITOR\" },\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 * Creates a new project with specified configuration.\n *\n * Use this method to:\n * - Set up development projects\n * - Configure project environments\n * - Define project settings\n * - Initialize project content\n *\n * ### Examples\n *\n * - Create basic project:\n *\n * Creates a project with minimal configuration.\n *\n * ```yaml\n * name: \"Web Application\"\n * environmentClass:\n * environmentClassId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * initializer:\n * specs:\n * - git:\n * remoteUri: \"https://github.com/org/repo\"\n * ```\n *\n * - Create project with devcontainer:\n *\n * Creates a project with custom development container.\n *\n * ```yaml\n * name: \"Backend Service\"\n * environmentClass:\n * environmentClassId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * initializer:\n * specs:\n * - git:\n * remoteUri: \"https://github.com/org/backend\"\n * devcontainerFilePath: \".devcontainer/devcontainer.json\"\n * automationsFilePath: \".gitpod/automations.yaml\"\n * ```\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 * Creates a new project using an existing environment as a template.\n *\n * Use this method to:\n * - Clone environment configurations\n * - Create projects from templates\n * - Share environment setups\n *\n * ### Examples\n *\n * - Create from environment:\n *\n * Creates a project based on existing environment.\n *\n * ```yaml\n * name: \"Frontend Project\"\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * ```\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 * Gets details about a specific project.\n *\n * Use this method to:\n * - View project configuration\n * - Check project status\n * - Get project metadata\n *\n * ### Examples\n *\n * - Get project details:\n *\n * Retrieves information about a specific project.\n *\n * ```yaml\n * projectId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * ```\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 * Updates a project's configuration.\n *\n * Use this method to:\n * - Modify project settings\n * - Update environment class\n * - Change project name\n * - Configure initializers\n *\n * ### Examples\n *\n * - Update project name:\n *\n * Changes the project's display name.\n *\n * ```yaml\n * projectId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * name: \"New Project Name\"\n * ```\n *\n * - Update environment class:\n *\n * Changes the project's environment class.\n *\n * ```yaml\n * projectId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * environmentClass:\n * environmentClassId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\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 * Lists projects with optional filtering.\n *\n * Use this method to:\n * - View all accessible projects\n * - Browse project configurations\n * - Monitor project status\n *\n * ### Examples\n *\n * - List projects:\n *\n * Shows all projects with pagination.\n *\n * ```yaml\n * pagination:\n * pageSize: 20\n * ```\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 * Deletes a project permanently.\n *\n * Use this method to:\n * - Remove unused projects\n * - Clean up test projects\n * - Delete obsolete configurations\n *\n * ### Examples\n *\n * - Delete project:\n *\n * Permanently removes a project.\n *\n * ```yaml\n * projectId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * ```\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 * Lists policies for a project.\n *\n * Use this method to:\n * - View access controls\n * - Check policy configurations\n * - Audit permissions\n *\n * ### Examples\n *\n * - List policies:\n *\n * Shows all policies for a project.\n *\n * ```yaml\n * projectId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * pagination:\n * pageSize: 20\n * ```\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 * Creates a new policy for a project.\n *\n * Use this method to:\n * - Set up access controls\n * - Define group permissions\n * - Configure role-based access\n *\n * ### Examples\n *\n * - Create admin policy:\n *\n * Grants admin access to a group.\n *\n * ```yaml\n * projectId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * groupId: \"f53d2330-3795-4c5d-a1f3-453121af9c60\"\n * role: PROJECT_ROLE_ADMIN\n * ```\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 * Deletes a project policy.\n *\n * Use this method to:\n * - Remove access controls\n * - Revoke permissions\n * - Clean up policies\n *\n * ### Examples\n *\n * - Delete policy:\n *\n * Removes a group's access policy.\n *\n * ```yaml\n * projectId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * groupId: \"f53d2330-3795-4c5d-a1f3-453121af9c60\"\n * ```\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 * Updates an existing project policy.\n *\n * Use this method to:\n * - Modify access levels\n * - Change group roles\n * - Update permissions\n *\n * ### Examples\n *\n * - Update policy role:\n *\n * Changes a group's access level.\n *\n * ```yaml\n * projectId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * groupId: \"f53d2330-3795-4c5d-a1f3-453121af9c60\"\n * role: PROJECT_ROLE_EDITOR\n * ```\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 * Deprecated: use scope instead\n *\n * @generated from field: string project_id = 2 [deprecated = true];\n * @deprecated\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 } | {\n /**\n * secret will be mounted as a docker config in the environment VM, mount will have the docker registry host\n *\n * @generated from field: string container_registry_basic_auth_host = 9;\n */\n value: string;\n case: \"containerRegistryBasicAuthHost\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n /**\n * scope is the scope of the secret\n *\n * @generated from field: gitpod.v1.SecretScope scope = 10;\n */\n scope?: SecretScope;\n\n constructor(data?: 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 { no: 9, name: \"container_registry_basic_auth_host\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"mount\" },\n { no: 10, name: \"scope\", kind: \"message\", T: SecretScope },\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 /**\n * scope is the scope of the secrets to list\n *\n * @generated from field: gitpod.v1.SecretScope scope = 2;\n */\n scope?: SecretScope;\n\n constructor(data?: 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 { no: 2, name: \"scope\", kind: \"message\", T: SecretScope },\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.SecretScope\n */\nexport class SecretScope extends Message {\n /**\n * @generated from oneof gitpod.v1.SecretScope.scope\n */\n scope: {\n /**\n * project_id is the Project ID this Secret belongs to\n *\n * @generated from field: string project_id = 1;\n */\n value: string;\n case: \"projectId\";\n } | {\n /**\n * user_id is the User ID this Secret belongs to\n *\n * @generated from field: string user_id = 2;\n */\n value: string;\n case: \"userId\";\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.SecretScope\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"project_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"scope\" },\n { no: 2, name: \"user_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"scope\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SecretScope {\n return new SecretScope().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SecretScope {\n return new SecretScope().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SecretScope {\n return new SecretScope().fromJsonString(jsonString, options);\n }\n\n static equals(a: SecretScope | PlainMessage | undefined, b: SecretScope | PlainMessage | undefined): boolean {\n return proto3.util.equals(SecretScope, 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 * Deprecated: use scope instead\n *\n * @generated from field: string project_id = 3 [deprecated = true];\n * @deprecated\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 } | {\n /**\n * secret will be mounted as a registry secret\n *\n * @generated from field: string container_registry_basic_auth_host = 9;\n */\n value: string;\n case: \"containerRegistryBasicAuthHost\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n /**\n * @generated from field: gitpod.v1.SecretScope scope = 10;\n */\n scope?: SecretScope;\n\n constructor(data?: 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 { no: 9, name: \"container_registry_basic_auth_host\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"mount\" },\n { no: 10, name: \"scope\", kind: \"message\", T: SecretScope },\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 * Creates a new secret for a project.\n *\n * Use this method to:\n * - Store sensitive configuration values\n * - Set up environment variables\n * - Configure registry authentication\n * - Add file-based secrets\n *\n * ### Examples\n *\n * - Create environment variable:\n *\n * Creates a secret that will be available as an environment variable.\n *\n * ```yaml\n * name: \"DATABASE_URL\"\n * projectId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * value: \"postgresql://user:pass@localhost:5432/db\"\n * environmentVariable: true\n * ```\n *\n * - Create file secret:\n *\n * Creates a secret that will be mounted as a file.\n *\n * ```yaml\n * name: \"SSH_KEY\"\n * projectId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * value: \"-----BEGIN RSA PRIVATE KEY-----\\n...\"\n * filePath: \"/home/gitpod/.ssh/id_rsa\"\n * ```\n *\n * - Create registry auth:\n *\n * Creates credentials for private container registry.\n *\n * ```yaml\n * name: \"DOCKER_AUTH\"\n * projectId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * value: \"username:password\"\n * containerRegistryBasicAuthHost: \"https://registry.example.com\"\n * ```\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 * Updates the value of an existing secret.\n *\n * Use this method to:\n * - Rotate secret values\n * - Update credentials\n *\n * ### Examples\n *\n * - Update secret value:\n *\n * Changes the value of an existing secret.\n *\n * ```yaml\n * secretId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * value: \"new-secret-value\"\n * ```\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 * Lists secrets with optional filtering.\n *\n * Use this method to:\n * - View all project secrets\n * - Filter secrets by project\n *\n * ### Examples\n *\n * - List project secrets:\n *\n * Shows all secrets for a project.\n *\n * ```yaml\n * filter:\n * projectIds: [\"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"]\n * pagination:\n * pageSize: 20\n * ```\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 * Deletes a secret permanently.\n *\n * Use this method to:\n * - Remove unused secrets\n * - Clean up old credentials\n *\n * ### Examples\n *\n * - Delete secret:\n *\n * Permanently removes a secret.\n *\n * ```yaml\n * secretId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\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 * Gets the value of a secret. Only available to environments that are authorized to access the secret.\n *\n * Use this method to:\n * - Retrieve secret values\n * - Access credentials\n *\n * ### Examples\n *\n * - Get secret value:\n *\n * Retrieves the value of a specific secret.\n *\n * ```yaml\n * secretId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\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 { CreateDomainVerificationRequest, CreateDomainVerificationResponse, CreateOrganizationInviteRequest, CreateOrganizationInviteResponse, CreateOrganizationRequest, CreateOrganizationResponse, CreateSSOConfigurationRequest, CreateSSOConfigurationResponse, DeleteDomainVerificationRequest, DeleteDomainVerificationResponse, DeleteOrganizationRequest, DeleteOrganizationResponse, DeleteSSOConfigurationRequest, DeleteSSOConfigurationResponse, GetDomainVerificationRequest, GetDomainVerificationResponse, GetOrganizationInviteRequest, GetOrganizationInviteResponse, GetOrganizationInviteSummaryRequest, GetOrganizationInviteSummaryResponse, GetOrganizationRequest, GetOrganizationResponse, GetSSOConfigurationRequest, GetSSOConfigurationResponse, JoinOrganizationRequest, JoinOrganizationResponse, LeaveOrganizationRequest, LeaveOrganizationResponse, ListDomainVerificationsRequest, ListDomainVerificationsResponse, ListMembersRequest, ListMembersResponse, ListOrganizationsRequest, ListOrganizationsResponse, ListSSOConfigurationsRequest, ListSSOConfigurationsResponse, SetRoleRequest, SetRoleResponse, UpdateOrganizationRequest, UpdateOrganizationResponse, UpdateSSOConfigurationRequest, UpdateSSOConfigurationResponse, VerifyDomainRequest, VerifyDomainResponse } 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 * Creates a new organization with the specified name and settings.\n *\n * Use this method to:\n * - Create a new organization for team collaboration\n * - Set up automatic domain-based invites for team members\n * - Join the organization immediately upon creation\n *\n * ### Examples\n *\n * - Create a basic organization:\n *\n * Creates an organization with just a name.\n *\n * ```yaml\n * name: \"Acme Corp Engineering\"\n * joinOrganization: true\n * ```\n *\n * - Create with domain-based invites:\n *\n * Creates an organization that automatically invites users with matching email domains.\n *\n * ```yaml\n * name: \"Acme Corp\"\n * joinOrganization: true\n * inviteAccountsWithMatchingDomain: true\n * ```\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 * Allows users to join an organization through direct ID, invite link, or domain-based auto-join.\n *\n * Use this method to:\n * - Join an organization via direct ID or invite\n * - Join automatically based on email domain\n * - Accept organization invitations\n *\n * ### Examples\n *\n * - Join via organization ID:\n *\n * Joins an organization directly when you have the ID.\n *\n * ```yaml\n * organizationId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * ```\n *\n * - Join via invite:\n *\n * Accepts an organization invitation link.\n *\n * ```yaml\n * inviteId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\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 * Gets details about a specific organization.\n *\n * Use this method to:\n * - Retrieve organization settings and configuration\n * - Check organization membership status\n * - View domain verification settings\n *\n * ### Examples\n *\n * - Get organization details:\n *\n * Retrieves information about a specific organization.\n *\n * ```yaml\n * organizationId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * ```\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 * Updates an organization's settings including name, invite domains, and member policies.\n *\n * Use this method to:\n * - Modify organization display name\n * - Configure email domain restrictions\n * - Update organization-wide settings\n * - Manage member access policies\n *\n * ### Examples\n *\n * - Update basic settings:\n *\n * Changes organization name and invite domains.\n *\n * ```yaml\n * organizationId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * name: \"New Company Name\"\n * inviteDomains:\n * domains:\n * - \"company.com\"\n * - \"subsidiary.com\"\n * ```\n *\n * - Remove domain restrictions:\n *\n * Clears all domain-based invite restrictions.\n *\n * ```yaml\n * organizationId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * inviteDomains:\n * domains: []\n * ```\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 * Lists all organizations the caller has access to with optional filtering.\n *\n * Use this method to:\n * - View organizations you're a member of\n * - Browse all available organizations\n * - Paginate through organization results\n *\n * ### Examples\n *\n * - List member organizations:\n *\n * Shows organizations where the caller is a member.\n *\n * ```yaml\n * pagination:\n * pageSize: 20\n * scope: SCOPE_MEMBER\n * ```\n *\n * - List all organizations:\n *\n * Shows all organizations visible to the caller.\n *\n * ```yaml\n * pagination:\n * pageSize: 50\n * scope: SCOPE_ALL\n * ```\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 * Permanently deletes an organization.\n *\n * Use this method to:\n * - Remove unused organizations\n * - Clean up test organizations\n * - Complete organization migration\n *\n * ### Examples\n *\n * - Delete organization:\n *\n * Permanently removes an organization and all its data.\n *\n * ```yaml\n * organizationId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * ```\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 * Lists and filters organization members with optional pagination.\n *\n * Use this method to:\n * - View all organization members\n * - Monitor member activity\n * - Manage team membership\n *\n * ### Examples\n *\n * - List active members:\n *\n * Retrieves active members with pagination.\n *\n * ```yaml\n * organizationId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * pagination:\n * pageSize: 20\n * ```\n *\n * - List with pagination:\n *\n * Retrieves next page of members.\n *\n * ```yaml\n * organizationId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * pagination:\n * pageSize: 50\n * token: \"next-page-token-from-previous-response\"\n * ```\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 * Manages organization membership and roles by setting a user's role within the organization.\n *\n * Use this method to:\n * - Promote members to admin role\n * - Change member permissions\n * - Demote admins to regular members\n *\n * ### Examples\n *\n * - Promote to admin:\n *\n * Makes a user an organization administrator.\n *\n * ```yaml\n * organizationId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * userId: \"f53d2330-3795-4c5d-a1f3-453121af9c60\"\n * role: ORGANIZATION_ROLE_ADMIN\n * ```\n *\n * - Change to member:\n *\n * Changes a user's role to regular member.\n *\n * ```yaml\n * organizationId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * userId: \"f53d2330-3795-4c5d-a1f3-453121af9c60\"\n * role: ORGANIZATION_ROLE_MEMBER\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 * Creates an invite link for joining an organization.\n * Any existing OrganizationInvites are invalidated and can no longer be used.\n *\n * Use this method to:\n * - Generate shareable invite links\n * - Manage team growth\n * - Control organization access\n *\n * ### Examples\n *\n * - Create organization invite:\n *\n * Generates a new invite link for the organization.\n *\n * ```yaml\n * organizationId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * ```\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 * @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 * Retrieves organization details and membership info based on an invite link.\n *\n * Use this method to:\n * - Preview organization details before joining\n * - Validate invite link authenticity\n * - Check organization size and activity\n * - View team information before accepting\n *\n * ### Examples\n *\n * - Get invite summary:\n *\n * Retrieves organization information from an invite.\n *\n * ```yaml\n * inviteId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\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 * Removes a user from an organization while preserving organization data.\n *\n * Use this method to:\n * - Remove yourself from an organization\n * - Clean up inactive memberships\n * - Transfer project ownership before leaving\n * - Manage team transitions\n *\n * ### Examples\n *\n * - Leave organization:\n *\n * Removes user from organization membership.\n *\n * ```yaml\n * userId: \"f53d2330-3795-4c5d-a1f3-453121af9c60\"\n * ```\n *\n * Note: Ensure all projects and resources are transferred before leaving.\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 * Creates or updates SSO configuration for organizational authentication.\n *\n * Use this method to:\n * - Configure OIDC-based SSO providers\n * - Set up built-in providers (Google, GitHub, etc.)\n * - Define custom identity providers\n * - Manage authentication policies\n *\n * ### Examples\n *\n * - Configure built-in Google SSO:\n *\n * Sets up SSO using Google Workspace.\n *\n * ```yaml\n * organizationId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * clientId: \"012345678-abcdefghijklmnopqrstuvwxyz.apps.googleusercontent.com\"\n * clientSecret: \"GOCSPX-abcdefghijklmnopqrstuvwxyz123456\"\n * issuerUrl: \"https://accounts.google.com\"\n * emailDomain: \"acme-corp.com\"\n * ```\n *\n * - Configure custom OIDC provider:\n *\n * Sets up SSO with a custom identity provider.\n *\n * ```yaml\n * organizationId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * clientId: \"acme-corp-gitpod\"\n * clientSecret: \"secret-token-value\"\n * issuerUrl: \"https://sso.acme-corp.com\"\n * emailDomain: \"acme-corp.com\"\n * ```\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 * Retrieves a specific SSO configuration.\n *\n * Use this method to:\n * - View SSO provider details\n * - Check configuration status\n * - Verify SSO settings\n *\n * ### Examples\n *\n * - Get SSO configuration:\n *\n * Retrieves details of a specific SSO configuration.\n *\n * ```yaml\n * ssoConfigurationId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\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 * Lists and filters SSO configurations for an organization.\n *\n * Use this method to:\n * - View all SSO providers\n * - Monitor authentication status\n * - Audit security settings\n * - Manage provider configurations\n *\n * ### Examples\n *\n * - List active configurations:\n *\n * Shows all active SSO providers.\n *\n * ```yaml\n * organizationId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * pagination:\n * pageSize: 20\n * ```\n *\n * - List by provider type:\n *\n * Shows custom SSO configurations.\n *\n * ```yaml\n * organizationId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * pagination:\n * pageSize: 20\n * token: \"next-page-token-from-previous-response\"\n * ```\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 * Removes an SSO configuration from an organization.\n *\n * Use this method to:\n * - Disable SSO authentication\n * - Remove outdated providers\n * - Clean up unused configurations\n *\n * ### Examples\n *\n * - Delete SSO configuration:\n *\n * Removes a specific SSO configuration.\n *\n * ```yaml\n * ssoConfigurationId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\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 * Updates SSO provider settings and authentication rules.\n *\n * Use this method to:\n * - Rotate client credentials\n * - Update provider endpoints\n * - Modify claim mappings\n * - Change authentication policies\n * - Toggle SSO enforcement\n *\n * ### Examples\n *\n * - Update credentials:\n *\n * Rotates client ID and secret.\n *\n * ```yaml\n * ssoConfigurationId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * clientId: \"new-client-id\"\n * clientSecret: \"new-client-secret\"\n * ```\n *\n * - Update provider status:\n *\n * Activates or deactivates SSO provider.\n *\n * ```yaml\n * ssoConfigurationId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * state: SSO_CONFIGURATION_STATE_ACTIVE\n * ```\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 * Initiates domain verification process to enable organization features.\n *\n * Use this method to:\n * - Start domain ownership verification\n * - Enable automatic team joining\n * - Set up SSO restrictions\n * - Configure email-based policies\n *\n * ### Examples\n *\n * - Verify primary domain:\n *\n * Starts verification for main company domain.\n *\n * ```yaml\n * organizationId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * domain: \"acme-corp.com\"\n * ```\n *\n * - Verify subsidiary domain:\n *\n * Adds verification for additional company domain.\n *\n * ```yaml\n * organizationId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * domain: \"acme-subsidiary.com\"\n * ```\n *\n * @generated from rpc gitpod.v1.OrganizationService.CreateDomainVerification\n */\n createDomainVerification: {\n name: \"CreateDomainVerification\",\n I: CreateDomainVerificationRequest,\n O: CreateDomainVerificationResponse,\n kind: MethodKind.Unary,\n },\n /**\n * Retrieves the status of a domain verification request.\n *\n * Use this method to:\n * - Check verification progress\n * - View verification requirements\n * - Monitor domain status\n *\n * ### Examples\n *\n * - Get verification status:\n *\n * Checks the current state of a domain verification.\n *\n * ```yaml\n * domainVerificationId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\n *\n * @generated from rpc gitpod.v1.OrganizationService.GetDomainVerification\n */\n getDomainVerification: {\n name: \"GetDomainVerification\",\n I: GetDomainVerificationRequest,\n O: GetDomainVerificationResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * Lists and monitors domain verification status across an organization.\n *\n * Use this method to:\n * - Track verification progress\n * - View all verified domains\n * - Monitor pending verifications\n * - Audit domain settings\n *\n * ### Examples\n *\n * - List all verifications:\n *\n * Shows all domain verifications regardless of status.\n *\n * ```yaml\n * organizationId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * pagination:\n * pageSize: 20\n * ```\n *\n * - List with pagination:\n *\n * Retrieves next page of verifications.\n *\n * ```yaml\n * organizationId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * pagination:\n * pageSize: 20\n * token: \"next-page-token-from-previous-response\"\n * ```\n *\n * @generated from rpc gitpod.v1.OrganizationService.ListDomainVerifications\n */\n listDomainVerifications: {\n name: \"ListDomainVerifications\",\n I: ListDomainVerificationsRequest,\n O: ListDomainVerificationsResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * Verifies domain ownership for an organization.\n *\n * Use this method to:\n * - Complete domain verification process\n * - Enable domain-based features\n * - Validate DNS configuration\n *\n * ### Examples\n *\n * - Verify domain ownership:\n *\n * Verifies ownership after DNS records are configured.\n *\n * ```yaml\n * domainVerificationId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\n *\n * @generated from rpc gitpod.v1.OrganizationService.VerifyDomain\n */\n verifyDomain: {\n name: \"VerifyDomain\",\n I: VerifyDomainRequest,\n O: VerifyDomainResponse,\n kind: MethodKind.Unary,\n },\n /**\n * Removes a domain verification request.\n *\n * Use this method to:\n * - Cancel pending verifications\n * - Remove verified domains\n * - Clean up unused domain records\n *\n * ### Examples\n *\n * - Delete verification:\n *\n * Removes a domain verification request.\n *\n * ```yaml\n * domainVerificationId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\n *\n * @generated from rpc gitpod.v1.OrganizationService.DeleteDomainVerification\n */\n deleteDomainVerification: {\n name: \"DeleteDomainVerification\",\n I: DeleteDomainVerificationRequest,\n O: DeleteDomainVerificationResponse,\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.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 { FieldValue, RunnerKind, RunnerProvider } from \"./runner_configuration_pb.js\";\nimport { PaginationRequest, PaginationResponse } from \"./pagination_pb.js\";\nimport { Subject } from \"./identity_pb.js\";\n\n/**\n * @generated from enum gitpod.v1.LogLevel\n */\nexport enum LogLevel {\n /**\n * @generated from enum value: LOG_LEVEL_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: LOG_LEVEL_DEBUG = 1;\n */\n DEBUG = 1,\n\n /**\n * @generated from enum value: LOG_LEVEL_INFO = 2;\n */\n INFO = 2,\n\n /**\n * @generated from enum value: LOG_LEVEL_WARN = 3;\n */\n WARN = 3,\n\n /**\n * @generated from enum value: LOG_LEVEL_ERROR = 4;\n */\n ERROR = 4,\n}\n// Retrieve enum metadata with: proto3.getEnumType(LogLevel)\nproto3.util.setEnumType(LogLevel, \"gitpod.v1.LogLevel\", [\n { no: 0, name: \"LOG_LEVEL_UNSPECIFIED\" },\n { no: 1, name: \"LOG_LEVEL_DEBUG\" },\n { no: 2, name: \"LOG_LEVEL_INFO\" },\n { no: 3, name: \"LOG_LEVEL_WARN\" },\n { no: 4, name: \"LOG_LEVEL_ERROR\" },\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 /**\n * RUNNER_CAPABILITY_SECRET_CONTAINER_REGISTRY is used by runners to indicate they support secret container registries.\n *\n * @generated from enum value: RUNNER_CAPABILITY_SECRET_CONTAINER_REGISTRY = 2;\n */\n SECRET_CONTAINER_REGISTRY = 2,\n\n /**\n * RUNNER_CAPABILITY_AGENT_EXECUTION is used by runners to indicate they support agent execution.\n *\n * @generated from enum value: RUNNER_CAPABILITY_AGENT_EXECUTION = 3;\n */\n AGENT_EXECUTION = 3,\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 { no: 2, name: \"RUNNER_CAPABILITY_SECRET_CONTAINER_REGISTRY\" },\n { no: 3, name: \"RUNNER_CAPABILITY_AGENT_EXECUTION\" },\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 * This field is optional and here for backwards-compatibility. Use the provider field instead.\n * If provider is set, the runner's kind will be deduced from the provider.\n * Only one of kind and provider must be set.\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 /**\n * The specific implementation type of the runner\n * This field is optional for backwards compatibility but will be required in the future.\n * When specified, kind must not be specified (will be deduced from provider)\n *\n * @generated from field: gitpod.v1.RunnerProvider provider = 4;\n */\n provider = RunnerProvider.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.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 { no: 4, name: \"provider\", kind: \"enum\", T: proto3.getEnumType(RunnerProvider) },\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 * deprecated, will be removed. Use exchange_token instead.\n *\n * @generated from field: string access_token = 2 [deprecated = true];\n * @deprecated\n */\n accessToken = \"\";\n\n /**\n * exchange_token is a one-time use token that should be exchanged by the runner for an access token,\n * using the IdentityService.ExchangeToken rpc. The token expires after 24 hours.\n *\n * @generated from field: string exchange_token = 3;\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.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 { no: 3, name: \"exchange_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 /**\n * providers filters the response to only runners of the specified providers\n *\n * @generated from field: repeated gitpod.v1.RunnerProvider providers = 3;\n */\n providers: RunnerProvider[] = [];\n\n constructor(data?: 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 { no: 3, name: \"providers\", kind: \"enum\", T: proto3.getEnumType(RunnerProvider), 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 /**\n * metrics contains configuration for the runner's metrics collection\n *\n * @generated from field: optional gitpod.v1.UpdateRunnerRequest.MetricsConfiguration metrics = 3;\n */\n metrics?: UpdateRunnerRequest_MetricsConfiguration;\n\n /**\n * log_level is the log level for the runner\n *\n * @generated from field: optional gitpod.v1.LogLevel log_level = 4;\n */\n logLevel?: LogLevel;\n\n constructor(data?: 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 { no: 3, name: \"metrics\", kind: \"message\", T: UpdateRunnerRequest_MetricsConfiguration, opt: true },\n { no: 4, name: \"log_level\", kind: \"enum\", T: proto3.getEnumType(LogLevel), 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.MetricsConfiguration\n */\nexport class UpdateRunnerRequest_MetricsConfiguration extends Message {\n /**\n * enabled indicates whether the runner should collect metrics\n *\n * @generated from field: optional bool enabled = 1;\n */\n enabled?: boolean;\n\n /**\n * url is the URL of the metrics collector\n *\n * @generated from field: optional string url = 2;\n */\n url?: string;\n\n /**\n * username is the username to use for the metrics collector\n *\n * @generated from field: optional string username = 3;\n */\n username?: string;\n\n /**\n * password is the password to use for the metrics collector\n *\n * @generated from field: optional string password = 4;\n */\n password?: 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.UpdateRunnerRequest.MetricsConfiguration\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"enabled\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true },\n { no: 2, name: \"url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"username\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 4, name: \"password\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateRunnerRequest_MetricsConfiguration {\n return new UpdateRunnerRequest_MetricsConfiguration().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateRunnerRequest_MetricsConfiguration {\n return new UpdateRunnerRequest_MetricsConfiguration().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateRunnerRequest_MetricsConfiguration {\n return new UpdateRunnerRequest_MetricsConfiguration().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateRunnerRequest_MetricsConfiguration | PlainMessage | undefined, b: UpdateRunnerRequest_MetricsConfiguration | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateRunnerRequest_MetricsConfiguration, 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 * deprecated, will be removed. Use exchange_token instead.\n *\n * @generated from field: string access_token = 1 [deprecated = true];\n * @deprecated\n */\n accessToken = \"\";\n\n /**\n * exchange_token is a one-time use token that should be exchanged by the runner for an access token,\n * using the IdentityService.ExchangeToken rpc. The token expires after 24 hours.\n *\n * @generated from field: string exchange_token = 2;\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.CreateRunnerTokenResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"access_token\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"exchange_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 [deprecated = true];\n * @deprecated\n */\n authenticationUrl = \"\";\n\n /**\n * @generated from field: bool pat_supported = 3 [deprecated = true];\n * @deprecated\n */\n patSupported = false;\n\n /**\n * scm_id is the unique identifier of the SCM provider\n *\n * @generated from field: string scm_id = 4;\n */\n scmId = \"\";\n\n /**\n * scm_name is the human-readable name of the SCM provider (e.g., \"GitHub\", \"GitLab\")\n *\n * @generated from field: string scm_name = 5;\n */\n scmName = \"\";\n\n /**\n * supports_oauth2 indicates that the host supports OAuth2 authentication\n *\n * @generated from field: gitpod.v1.CheckAuthenticationForHostResponse.AuthenticationMethodOAuth2 supports_oauth2 = 6;\n */\n supportsOauth2?: CheckAuthenticationForHostResponse_AuthenticationMethodOAuth2;\n\n /**\n * supports_pat indicates that the host supports Personal Access Token authentication\n *\n * @generated from field: gitpod.v1.CheckAuthenticationForHostResponse.AuthenticationMethodPersonalAccessToken supports_pat = 7;\n */\n supportsPat?: CheckAuthenticationForHostResponse_AuthenticationMethodPersonalAccessToken;\n\n constructor(data?: 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 { no: 5, name: \"scm_name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 6, name: \"supports_oauth2\", kind: \"message\", T: CheckAuthenticationForHostResponse_AuthenticationMethodOAuth2 },\n { no: 7, name: \"supports_pat\", kind: \"message\", T: CheckAuthenticationForHostResponse_AuthenticationMethodPersonalAccessToken },\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 * @generated from message gitpod.v1.CheckAuthenticationForHostResponse.AuthenticationMethodOAuth2\n */\nexport class CheckAuthenticationForHostResponse_AuthenticationMethodOAuth2 extends Message {\n /**\n * auth_url is the URL where users can authenticate\n *\n * @generated from field: string auth_url = 1;\n */\n authUrl = \"\";\n\n /**\n * docs_url is the URL to the documentation explaining this authentication method\n *\n * @generated from field: string docs_url = 2;\n */\n docsUrl = \"\";\n\n constructor(data?: 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.AuthenticationMethodOAuth2\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"auth_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"docs_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CheckAuthenticationForHostResponse_AuthenticationMethodOAuth2 {\n return new CheckAuthenticationForHostResponse_AuthenticationMethodOAuth2().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CheckAuthenticationForHostResponse_AuthenticationMethodOAuth2 {\n return new CheckAuthenticationForHostResponse_AuthenticationMethodOAuth2().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CheckAuthenticationForHostResponse_AuthenticationMethodOAuth2 {\n return new CheckAuthenticationForHostResponse_AuthenticationMethodOAuth2().fromJsonString(jsonString, options);\n }\n\n static equals(a: CheckAuthenticationForHostResponse_AuthenticationMethodOAuth2 | PlainMessage | undefined, b: CheckAuthenticationForHostResponse_AuthenticationMethodOAuth2 | PlainMessage | undefined): boolean {\n return proto3.util.equals(CheckAuthenticationForHostResponse_AuthenticationMethodOAuth2, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CheckAuthenticationForHostResponse.AuthenticationMethodPersonalAccessToken\n */\nexport class CheckAuthenticationForHostResponse_AuthenticationMethodPersonalAccessToken extends Message {\n /**\n * create_url is the URL where users can create a new Personal Access Token\n *\n * @generated from field: string create_url = 1;\n */\n createUrl = \"\";\n\n /**\n * docs_url is the URL to the documentation explaining PAT usage for this host\n *\n * @generated from field: string docs_url = 2;\n */\n docsUrl = \"\";\n\n /**\n * example is an example of a Personal Access Token\n *\n * @generated from field: string example = 3;\n */\n example = \"\";\n\n /**\n * required_scopes is the list of permissions required for the Personal Access Token\n *\n * @generated from field: repeated string required_scopes = 4;\n */\n requiredScopes: 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.CheckAuthenticationForHostResponse.AuthenticationMethodPersonalAccessToken\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"create_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"docs_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"example\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"required_scopes\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CheckAuthenticationForHostResponse_AuthenticationMethodPersonalAccessToken {\n return new CheckAuthenticationForHostResponse_AuthenticationMethodPersonalAccessToken().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CheckAuthenticationForHostResponse_AuthenticationMethodPersonalAccessToken {\n return new CheckAuthenticationForHostResponse_AuthenticationMethodPersonalAccessToken().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CheckAuthenticationForHostResponse_AuthenticationMethodPersonalAccessToken {\n return new CheckAuthenticationForHostResponse_AuthenticationMethodPersonalAccessToken().fromJsonString(jsonString, options);\n }\n\n static equals(a: CheckAuthenticationForHostResponse_AuthenticationMethodPersonalAccessToken | PlainMessage | undefined, b: CheckAuthenticationForHostResponse_AuthenticationMethodPersonalAccessToken | PlainMessage | undefined): boolean {\n return proto3.util.equals(CheckAuthenticationForHostResponse_AuthenticationMethodPersonalAccessToken, 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 /**\n * The runner's provider\n *\n * @generated from field: gitpod.v1.RunnerProvider provider = 9;\n */\n provider = RunnerProvider.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 { no: 9, name: \"provider\", kind: \"enum\", T: proto3.getEnumType(RunnerProvider) },\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 /**\n * metrics contains configuration for the runner's metrics collection\n *\n * @generated from field: gitpod.v1.MetricsConfiguration metrics = 4;\n */\n metrics?: MetricsConfiguration;\n\n /**\n * log_level is the log level for the runner\n *\n * @generated from field: gitpod.v1.LogLevel log_level = 5;\n */\n logLevel = LogLevel.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.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 { no: 4, name: \"metrics\", kind: \"message\", T: MetricsConfiguration },\n { no: 5, name: \"log_level\", kind: \"enum\", T: proto3.getEnumType(LogLevel) },\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 * @generated from message gitpod.v1.MetricsConfiguration\n */\nexport class MetricsConfiguration extends Message {\n /**\n * enabled indicates whether the runner should collect metrics\n *\n * @generated from field: bool enabled = 1;\n */\n enabled = false;\n\n /**\n * url is the URL of the metrics collector\n *\n * @generated from field: string url = 2;\n */\n url = \"\";\n\n /**\n * username is the username to use for the metrics collector\n *\n * @generated from field: string username = 3;\n */\n username = \"\";\n\n /**\n * password is the password to use for the metrics collector\n *\n * @generated from field: string password = 4;\n */\n password = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.MetricsConfiguration\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"enabled\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n { no: 2, name: \"url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"username\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"password\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): MetricsConfiguration {\n return new MetricsConfiguration().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): MetricsConfiguration {\n return new MetricsConfiguration().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): MetricsConfiguration {\n return new MetricsConfiguration().fromJsonString(jsonString, options);\n }\n\n static equals(a: MetricsConfiguration | PlainMessage | undefined, b: MetricsConfiguration | PlainMessage | undefined): boolean {\n return proto3.util.equals(MetricsConfiguration, 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-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 * Creates a new runner registration with the server. Registrations are very short-lived and must be renewed every 30 seconds.\n *\n * Use this method to:\n * - Register organization runners\n * - Set up runner configurations\n * - Initialize runner credentials\n * - Configure auto-updates\n *\n * ### Examples\n *\n * - Create cloud runner:\n *\n * Creates a new runner in AWS EC2.\n *\n * ```yaml\n * name: \"Production Runner\"\n * provider: RUNNER_PROVIDER_AWS_EC2\n * spec:\n * desiredPhase: RUNNER_PHASE_ACTIVE\n * configuration:\n * region: \"us-west\"\n * releaseChannel: RUNNER_RELEASE_CHANNEL_STABLE\n * autoUpdate: true\n * ```\n *\n * - Create local runner:\n *\n * Creates a new local runner on Linux.\n *\n * ```yaml\n * name: \"Local Development Runner\"\n * provider: RUNNER_PROVIDER_LINUX_HOST\n * spec:\n * desiredPhase: RUNNER_PHASE_ACTIVE\n * configuration:\n * releaseChannel: RUNNER_RELEASE_CHANNEL_LATEST\n * autoUpdate: true\n * ```\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 * Gets details about a specific runner.\n *\n * Use this method to:\n * - Check runner status\n * - View runner configuration\n * - Monitor runner health\n * - Verify runner capabilities\n *\n * ### Examples\n *\n * - Get runner details:\n *\n * Retrieves information about a specific runner.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\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 * Lists all registered runners with optional filtering.\n *\n * Use this method to:\n * - View all available runners\n * - Filter by runner type\n * - Monitor runner status\n * - Check runner availability\n *\n * ### Examples\n *\n * - List all runners:\n *\n * Shows all runners with pagination.\n *\n * ```yaml\n * pagination:\n * pageSize: 20\n * ```\n *\n * - Filter by provider:\n *\n * Lists only AWS EC2 runners.\n *\n * ```yaml\n * filter:\n * providers: [\"RUNNER_PROVIDER_AWS_EC2\"]\n * pagination:\n * pageSize: 20\n * ```\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 * Updates a runner's configuration.\n *\n * Use this method to:\n * - Modify runner settings\n * - Update release channels\n * - Change runner status\n * - Configure auto-update settings\n *\n * ### Examples\n *\n * - Update configuration:\n *\n * Changes runner settings.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * name: \"Updated Runner Name\"\n * spec:\n * configuration:\n * releaseChannel: RUNNER_RELEASE_CHANNEL_LATEST\n * autoUpdate: true\n * ```\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 * Deletes a runner permanently.\n *\n * Use this method to:\n * - Remove unused runners\n * - Clean up runner registrations\n * - Delete obsolete runners\n *\n * ### Examples\n *\n * - Delete runner:\n *\n * Permanently removes a runner.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\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 * Creates a new authentication token for a runner.\n *\n * Use this method to:\n * - Generate runner credentials\n * - Renew expired tokens\n * - Set up runner authentication\n *\n * Note: This does not expire previously issued tokens.\n *\n * ### Examples\n *\n * - Create token:\n *\n * Creates a new token for runner authentication.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\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 * Parses a context URL and returns the parsed result.\n *\n * Use this method to:\n * - Validate context URLs\n * - Check repository access\n * - Verify branch existence\n *\n * Returns:\n * - FAILED_PRECONDITION if authentication is required\n * - PERMISSION_DENIED if access is not allowed\n * - INVALID_ARGUMENT if URL is invalid\n * - NOT_FOUND if repository/branch doesn't exist\n *\n * ### Examples\n *\n * - Parse URL:\n *\n * Parses and validates a context URL.\n *\n * ```yaml\n * contextUrl: \"https://github.com/org/repo/tree/main\"\n * ```\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 * Checks if a user is authenticated for a specific host.\n *\n * Use this method to:\n * - Verify authentication status\n * - Get authentication URLs\n * - Check PAT support\n *\n * ### Examples\n *\n * - Check authentication:\n *\n * Verifies authentication for a host.\n *\n * ```yaml\n * host: \"github.com\"\n * ```\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 * Lists policies for a runner.\n *\n * Use this method to:\n * - View access controls\n * - Check policy configurations\n * - Audit permissions\n *\n * ### Examples\n *\n * - List policies:\n *\n * Shows all policies for a runner.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * pagination:\n * pageSize: 20\n * ```\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 * Creates a new policy for a runner.\n *\n * Use this method to:\n * - Set up access controls\n * - Define group permissions\n * - Configure role-based access\n *\n * ### Examples\n *\n * - Create admin policy:\n *\n * Grants admin access to a group.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * groupId: \"f53d2330-3795-4c5d-a1f3-453121af9c60\"\n * role: RUNNER_ROLE_ADMIN\n * ```\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 * Updates an existing runner policy.\n *\n * Use this method to:\n * - Modify access levels\n * - Change group roles\n * - Update permissions\n *\n * ### Examples\n *\n * - Update policy role:\n *\n * Changes a group's access level.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * groupId: \"f53d2330-3795-4c5d-a1f3-453121af9c60\"\n * role: RUNNER_ROLE_USER\n * ```\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 * Deletes a runner policy.\n *\n * Use this method to:\n * - Remove access controls\n * - Revoke permissions\n * - Clean up policies\n *\n * ### Examples\n *\n * - Delete policy:\n *\n * Removes a group's access policy.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * groupId: \"f53d2330-3795-4c5d-a1f3-453121af9c60\"\n * ```\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, CreateLLMIntegrationRequest, CreateLLMIntegrationResponse, CreateSCMIntegrationRequest, CreateSCMIntegrationResponse, DeleteHostAuthenticationTokenRequest, DeleteHostAuthenticationTokenResponse, DeleteLLMIntegrationRequest, DeleteLLMIntegrationResponse, DeleteSCMIntegrationRequest, DeleteSCMIntegrationResponse, GetEnvironmentClassRequest, GetEnvironmentClassResponse, GetHostAuthenticationTokenRequest, GetHostAuthenticationTokenResponse, GetLLMIntegrationRequest, GetLLMIntegrationResponse, GetRunnerConfigurationSchemaRequest, GetRunnerConfigurationSchemaResponse, GetSCMIntegrationRequest, GetSCMIntegrationResponse, ListEnvironmentClassesRequest, ListEnvironmentClassesResponse, ListHostAuthenticationTokensRequest, ListHostAuthenticationTokensResponse, ListLLMIntegrationsRequest, ListLLMIntegrationsResponse, ListSCMIntegrationsRequest, ListSCMIntegrationsResponse, UpdateEnvironmentClassRequest, UpdateEnvironmentClassResponse, UpdateHostAuthenticationTokenRequest, UpdateHostAuthenticationTokenResponse, UpdateLLMIntegrationRequest, UpdateLLMIntegrationResponse, 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 * Creates a new authentication token for accessing remote hosts.\n *\n * Use this method to:\n * - Set up SCM authentication\n * - Configure OAuth credentials\n * - Manage PAT tokens\n *\n * ### Examples\n *\n * - Create OAuth token:\n *\n * Creates a new OAuth-based authentication token.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * userId: \"f53d2330-3795-4c5d-a1f3-453121af9c60\"\n * host: \"github.com\"\n * token: \"gho_xxxxxxxxxxxx\"\n * source: HOST_AUTHENTICATION_TOKEN_SOURCE_OAUTH\n * expiresAt: \"2024-12-31T23:59:59Z\"\n * refreshToken: \"ghr_xxxxxxxxxxxx\"\n * ```\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 * Gets details about a specific host authentication token.\n *\n * Use this method to:\n * - View token information\n * - Check token expiration\n * - Verify token validity\n *\n * ### Examples\n *\n * - Get token details:\n *\n * Retrieves information about a specific token.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\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 * Lists host authentication tokens with optional filtering.\n *\n * Use this method to:\n * - View all tokens\n * - Filter by runner or user\n * - Monitor token status\n *\n * ### Examples\n *\n * - List all tokens:\n *\n * Shows all tokens with pagination.\n *\n * ```yaml\n * pagination:\n * pageSize: 20\n * ```\n *\n * - Filter by runner:\n *\n * Lists tokens for a specific runner.\n *\n * ```yaml\n * filter:\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * pagination:\n * pageSize: 20\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 * Updates an existing host authentication token.\n *\n * Use this method to:\n * - Refresh token values\n * - Update expiration\n * - Modify token settings\n *\n * ### Examples\n *\n * - Update token:\n *\n * Updates token value and expiration.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * token: \"gho_xxxxxxxxxxxx\"\n * expiresAt: \"2024-12-31T23:59:59Z\"\n * refreshToken: \"ghr_xxxxxxxxxxxx\"\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 * Deletes a host authentication token.\n *\n * Use this method to:\n * - Remove unused tokens\n * - Revoke access\n * - Clean up expired tokens\n *\n * ### Examples\n *\n * - Delete token:\n *\n * Permanently removes a token.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\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 * Gets the latest runner configuration schema.\n *\n * Use this method to:\n * - View available settings\n * - Check configuration options\n * - Validate configurations\n *\n * ### Examples\n *\n * - Get schema:\n *\n * Retrieves configuration schema for a runner.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\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 * Creates a new SCM integration for a runner.\n *\n * Use this method to:\n * - Configure source control access\n * - Set up repository integrations\n * - Enable code synchronization\n *\n * ### Examples\n *\n * - Create GitHub integration:\n *\n * Sets up GitHub SCM integration.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * scmId: \"github\"\n * host: \"github.com\"\n * oauthClientId: \"client_id\"\n * oauthPlaintextClientSecret: \"client_secret\"\n * ```\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 * Gets details about a specific SCM integration.\n *\n * Use this method to:\n * - View integration settings\n * - Check integration status\n * - Verify configuration\n *\n * ### Examples\n *\n * - Get integration details:\n *\n * Retrieves information about a specific integration.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\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 * Lists SCM integrations for a runner.\n *\n * Use this method to:\n * - View all integrations\n * - Monitor integration status\n * - Check available SCMs\n *\n * ### Examples\n *\n * - List integrations:\n *\n * Shows all SCM integrations.\n *\n * ```yaml\n * filter:\n * runnerIds: [\"d2c94c27-3b76-4a42-b88c-95a85e392c68\"]\n * pagination:\n * pageSize: 20\n * ```\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 * Updates an existing SCM integration.\n *\n * Use this method to:\n * - Modify integration settings\n * - Update credentials\n * - Change configuration\n *\n * ### Examples\n *\n * - Update integration:\n *\n * Updates OAuth credentials.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * oauthClientId: \"new_client_id\"\n * oauthPlaintextClientSecret: \"new_client_secret\"\n * ```\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 * Deletes an SCM integration.\n *\n * Use this method to:\n * - Remove unused integrations\n * - Clean up configurations\n * - Revoke SCM access\n *\n * ### Examples\n *\n * - Delete integration:\n *\n * Removes an SCM integration.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\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 * Creates a new environment class for a runner.\n *\n * Use this method to:\n * - Define compute resources\n * - Configure environment settings\n * - Set up runtime options\n *\n * ### Examples\n *\n * - Create environment class:\n *\n * Creates a new environment configuration.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * displayName: \"Large Instance\"\n * description: \"8 CPU, 16GB RAM\"\n * configuration:\n * - key: \"cpu\"\n * value: \"8\"\n * - key: \"memory\"\n * value: \"16384\"\n * ```\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 * Gets details about a specific environment class.\n *\n * Use this method to:\n * - View class configuration\n * - Check resource settings\n * - Verify availability\n *\n * ### Examples\n *\n * - Get class details:\n *\n * Retrieves information about a specific class.\n *\n * ```yaml\n * environmentClassId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\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 * Lists environment classes with optional filtering.\n *\n * Use this method to:\n * - View available classes\n * - Filter by capability\n * - Check enabled status\n *\n * ### Examples\n *\n * - List all classes:\n *\n * Shows all environment classes.\n *\n * ```yaml\n * pagination:\n * pageSize: 20\n * ```\n *\n * - Filter enabled classes:\n *\n * Lists only enabled environment classes.\n *\n * ```yaml\n * filter:\n * enabled: true\n * pagination:\n * pageSize: 20\n * ```\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 * Updates an environment class.\n *\n * Use this method to:\n * - Modify class settings\n * - Update resource limits\n * - Change availability\n *\n * ### Examples\n *\n * - Update class:\n *\n * Changes class configuration.\n *\n * ```yaml\n * environmentClassId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * displayName: \"Updated Large Instance\"\n * description: \"16 CPU, 32GB RAM\"\n * enabled: true\n * ```\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 * Validates a runner configuration.\n *\n * Use this method to:\n * - Check configuration validity\n * - Verify integration settings\n * - Validate environment classes\n *\n * ### Examples\n *\n * - Validate SCM integration:\n *\n * Checks if an SCM integration is valid.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * scmIntegration:\n * id: \"integration-id\"\n * scmId: \"github\"\n * host: \"github.com\"\n * oauthClientId: \"client_id\"\n * oauthPlaintextClientSecret: \"client_secret\"\n * ```\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 * Creates a new LLM integration for a runner.\n *\n * Use this method to:\n * - Configure LLM access\n * - Set up LLM integrations\n * - Enable LLM usage\n *\n * @generated from rpc gitpod.v1.RunnerConfigurationService.CreateLLMIntegration\n */\n createLLMIntegration: {\n name: \"CreateLLMIntegration\",\n I: CreateLLMIntegrationRequest,\n O: CreateLLMIntegrationResponse,\n kind: MethodKind.Unary,\n },\n /**\n * Gets details about a specific LLM integration.\n *\n * Use this method to:\n * - View integration settings\n * - Check integration status\n * - Verify configuration\n *\n * ### Examples\n *\n * - Get integration details:\n *\n * Retrieves information about a specific integration.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\n *\n * @generated from rpc gitpod.v1.RunnerConfigurationService.GetLLMIntegration\n */\n getLLMIntegration: {\n name: \"GetLLMIntegration\",\n I: GetLLMIntegrationRequest,\n O: GetLLMIntegrationResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * Lists LLM integrations for a runner.\n *\n * Use this method to:\n * - View all integrations\n * - Monitor integration status\n * - Check available LLMs\n *\n * ### Examples\n *\n * - List integrations:\n *\n * Shows all LLM integrations.\n *\n * ```yaml\n * filter:\n * runnerIds: [\"d2c94c27-3b76-4a42-b88c-95a85e392c68\"]\n * pagination:\n * pageSize: 20\n * ```\n *\n * @generated from rpc gitpod.v1.RunnerConfigurationService.ListLLMIntegrations\n */\n listLLMIntegrations: {\n name: \"ListLLMIntegrations\",\n I: ListLLMIntegrationsRequest,\n O: ListLLMIntegrationsResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * Updates an existing LLM integration.\n *\n * Use this method to:\n * - Modify integration settings\n * - Update credentials\n * - Change configuration\n *\n * ### Examples\n *\n * - Update integration:\n *\n * Updates OAuth credentials.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * apiKey: \"sk-...\"\n * ```\n *\n * @generated from rpc gitpod.v1.RunnerConfigurationService.UpdateLLMIntegration\n */\n updateLLMIntegration: {\n name: \"UpdateLLMIntegration\",\n I: UpdateLLMIntegrationRequest,\n O: UpdateLLMIntegrationResponse,\n kind: MethodKind.Unary,\n },\n /**\n * Deletes an LLM integration.\n *\n * Use this method to:\n * - Remove unused integrations\n * - Clean up configurations\n * - Revoke LLM access\n *\n * ### Examples\n *\n * - Delete integration:\n *\n * Removes an LLM integration.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\n *\n * @generated from rpc gitpod.v1.RunnerConfigurationService.DeleteLLMIntegration\n */\n deleteLLMIntegration: {\n name: \"DeleteLLMIntegration\",\n I: DeleteLLMIntegrationRequest,\n O: DeleteLLMIntegrationResponse,\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, HostAuthenticationTokenSource, LLMIntegration, 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, LogLevel, ParseContextURLResponse, RunnerCapability, RunnerReleaseChannel } from \"./runner_pb.js\";\nimport { AgentExecution, AgentExecution_Status, SupportedModel, UserInputBlock } from \"./agent_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 /**\n * The SCM contexts for the environment\n *\n * @generated from field: repeated gitpod.v1.SCMContext scm_contexts = 6;\n */\n scmContexts: SCMContext[] = [];\n\n constructor(data?: 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 { no: 6, name: \"scm_contexts\", kind: \"message\", T: SCMContext, repeated: true },\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.SCMContext\n */\nexport class SCMContext extends Message {\n /**\n * @generated from field: string token = 1;\n */\n token = \"\";\n\n /**\n * @generated from field: string host = 2;\n */\n host = \"\";\n\n /**\n * @generated from field: string username = 3;\n */\n username = \"\";\n\n /**\n * @generated from field: string email = 4;\n */\n email = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.SCMContext\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"token\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"host\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"username\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"email\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): SCMContext {\n return new SCMContext().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): SCMContext {\n return new SCMContext().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): SCMContext {\n return new SCMContext().fromJsonString(jsonString, options);\n }\n\n static equals(a: SCMContext | PlainMessage | undefined, b: SCMContext | PlainMessage | undefined): boolean {\n return proto3.util.equals(SCMContext, 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 /**\n * The host authentication token's source\n *\n * @generated from field: gitpod.v1.HostAuthenticationTokenSource source = 5;\n */\n source = HostAuthenticationTokenSource.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.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 { no: 5, name: \"source\", kind: \"enum\", T: proto3.getEnumType(HostAuthenticationTokenSource) },\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.EventAgentExecutionSpecChange event_agent_execution_spec_change = 14;\n */\n value: EventAgentExecutionSpecChange;\n case: \"eventAgentExecutionSpecChange\";\n } | {\n /**\n * @generated from field: gitpod.v1.EventLLMIntegrationChange event_llm_integration_change = 15;\n */\n value: EventLLMIntegrationChange;\n case: \"eventLlmIntegrationChange\";\n } | {\n /**\n * @generated from field: gitpod.v1.EventRunnerConfigurationChange event_runner_configuration_change = 16;\n */\n value: EventRunnerConfigurationChange;\n case: \"eventRunnerConfigurationChange\";\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 } | {\n /**\n * @generated from field: gitpod.v1.CallSendMessageToAgentExecution.Request call_send_message_to_agent_execution = 54;\n */\n value: CallSendMessageToAgentExecution_Request;\n case: \"callSendMessageToAgentExecution\";\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: 14, name: \"event_agent_execution_spec_change\", kind: \"message\", T: EventAgentExecutionSpecChange, oneof: \"request\" },\n { no: 15, name: \"event_llm_integration_change\", kind: \"message\", T: EventLLMIntegrationChange, oneof: \"request\" },\n { no: 16, name: \"event_runner_configuration_change\", kind: \"message\", T: EventRunnerConfigurationChange, 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 { no: 54, name: \"call_send_message_to_agent_execution\", kind: \"message\", T: CallSendMessageToAgentExecution_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 } | {\n /**\n * @generated from field: gitpod.v1.CallSendMessageToAgentExecution.Response call_send_message_to_agent_execution = 54;\n */\n value: CallSendMessageToAgentExecution_Response;\n case: \"callSendMessageToAgentExecution\";\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 { no: 54, name: \"call_send_message_to_agent_execution\", kind: \"message\", T: CallSendMessageToAgentExecution_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.EventLLMIntegrationChange\n */\nexport class EventLLMIntegrationChange extends Message {\n /**\n * The LLM integration's ID\n *\n * @generated from field: string llm_integration_id = 1;\n */\n llmIntegrationId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EventLLMIntegrationChange\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"llm_integration_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EventLLMIntegrationChange {\n return new EventLLMIntegrationChange().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EventLLMIntegrationChange {\n return new EventLLMIntegrationChange().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EventLLMIntegrationChange {\n return new EventLLMIntegrationChange().fromJsonString(jsonString, options);\n }\n\n static equals(a: EventLLMIntegrationChange | PlainMessage | undefined, b: EventLLMIntegrationChange | PlainMessage | undefined): boolean {\n return proto3.util.equals(EventLLMIntegrationChange, 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.EventAgentExecutionSpecChange\n */\nexport class EventAgentExecutionSpecChange extends Message {\n /**\n * The agent execution's ID\n *\n * @generated from field: string agent_execution_id = 1;\n */\n agentExecutionId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.EventAgentExecutionSpecChange\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"agent_execution_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EventAgentExecutionSpecChange {\n return new EventAgentExecutionSpecChange().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EventAgentExecutionSpecChange {\n return new EventAgentExecutionSpecChange().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EventAgentExecutionSpecChange {\n return new EventAgentExecutionSpecChange().fromJsonString(jsonString, options);\n }\n\n static equals(a: EventAgentExecutionSpecChange | PlainMessage | undefined, b: EventAgentExecutionSpecChange | PlainMessage | undefined): boolean {\n return proto3.util.equals(EventAgentExecutionSpecChange, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.EventRunnerConfigurationChange\n */\nexport class EventRunnerConfigurationChange 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.EventRunnerConfigurationChange\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): EventRunnerConfigurationChange {\n return new EventRunnerConfigurationChange().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): EventRunnerConfigurationChange {\n return new EventRunnerConfigurationChange().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): EventRunnerConfigurationChange {\n return new EventRunnerConfigurationChange().fromJsonString(jsonString, options);\n }\n\n static equals(a: EventRunnerConfigurationChange | PlainMessage | undefined, b: EventRunnerConfigurationChange | PlainMessage | undefined): boolean {\n return proto3.util.equals(EventRunnerConfigurationChange, 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.CallSendMessageToAgentExecution\n */\nexport class CallSendMessageToAgentExecution 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.CallSendMessageToAgentExecution\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CallSendMessageToAgentExecution {\n return new CallSendMessageToAgentExecution().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CallSendMessageToAgentExecution {\n return new CallSendMessageToAgentExecution().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CallSendMessageToAgentExecution {\n return new CallSendMessageToAgentExecution().fromJsonString(jsonString, options);\n }\n\n static equals(a: CallSendMessageToAgentExecution | PlainMessage | undefined, b: CallSendMessageToAgentExecution | PlainMessage | undefined): boolean {\n return proto3.util.equals(CallSendMessageToAgentExecution, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CallSendMessageToAgentExecution.Request\n */\nexport class CallSendMessageToAgentExecution_Request extends Message {\n /**\n * @generated from field: string agent_execution_id = 1;\n */\n agentExecutionId = \"\";\n\n /**\n * @generated from field: gitpod.v1.UserInputBlock message = 2;\n */\n message?: UserInputBlock;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.CallSendMessageToAgentExecution.Request\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"agent_execution_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"message\", kind: \"message\", T: UserInputBlock },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CallSendMessageToAgentExecution_Request {\n return new CallSendMessageToAgentExecution_Request().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CallSendMessageToAgentExecution_Request {\n return new CallSendMessageToAgentExecution_Request().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CallSendMessageToAgentExecution_Request {\n return new CallSendMessageToAgentExecution_Request().fromJsonString(jsonString, options);\n }\n\n static equals(a: CallSendMessageToAgentExecution_Request | PlainMessage | undefined, b: CallSendMessageToAgentExecution_Request | PlainMessage | undefined): boolean {\n return proto3.util.equals(CallSendMessageToAgentExecution_Request, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.CallSendMessageToAgentExecution.Response\n */\nexport class CallSendMessageToAgentExecution_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.CallSendMessageToAgentExecution.Response\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): CallSendMessageToAgentExecution_Response {\n return new CallSendMessageToAgentExecution_Response().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): CallSendMessageToAgentExecution_Response {\n return new CallSendMessageToAgentExecution_Response().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): CallSendMessageToAgentExecution_Response {\n return new CallSendMessageToAgentExecution_Response().fromJsonString(jsonString, options);\n }\n\n static equals(a: CallSendMessageToAgentExecution_Response | PlainMessage | undefined, b: CallSendMessageToAgentExecution_Response | PlainMessage | undefined): boolean {\n return proto3.util.equals(CallSendMessageToAgentExecution_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 * deprecated: aws-specific field, use manifest.aws_ec2.runner_image instead\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 /**\n * one of based on runner provider\n *\n * @generated from oneof gitpod.v1.GetLatestVersionResponse.manifest\n */\n manifest: {\n /**\n * @generated from field: gitpod.v1.GetLatestVersionResponse.AwsEc2Manifest aws_ec2 = 10;\n */\n value: GetLatestVersionResponse_AwsEc2Manifest;\n case: \"awsEc2\";\n } | {\n /**\n * @generated from field: gitpod.v1.GetLatestVersionResponse.LinuxHostManifest linux_host = 20;\n */\n value: GetLatestVersionResponse_LinuxHostManifest;\n case: \"linuxHost\";\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.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 { no: 10, name: \"aws_ec2\", kind: \"message\", T: GetLatestVersionResponse_AwsEc2Manifest, oneof: \"manifest\" },\n { no: 20, name: \"linux_host\", kind: \"message\", T: GetLatestVersionResponse_LinuxHostManifest, oneof: \"manifest\" },\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/**\n * @generated from message gitpod.v1.GetLatestVersionResponse.AwsEc2Manifest\n */\nexport class GetLatestVersionResponse_AwsEc2Manifest extends Message {\n /**\n * The container image of the runner.\n * Will only be set if the latest release in the release channel has the same infrastructure version as the runner.\n *\n * @generated from field: string runner_image = 1;\n */\n runnerImage = \"\";\n\n constructor(data?: 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.AwsEc2Manifest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_image\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetLatestVersionResponse_AwsEc2Manifest {\n return new GetLatestVersionResponse_AwsEc2Manifest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetLatestVersionResponse_AwsEc2Manifest {\n return new GetLatestVersionResponse_AwsEc2Manifest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetLatestVersionResponse_AwsEc2Manifest {\n return new GetLatestVersionResponse_AwsEc2Manifest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetLatestVersionResponse_AwsEc2Manifest | PlainMessage | undefined, b: GetLatestVersionResponse_AwsEc2Manifest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetLatestVersionResponse_AwsEc2Manifest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetLatestVersionResponse.LinuxHostManifest\n */\nexport class GetLatestVersionResponse_LinuxHostManifest extends Message {\n /**\n * @generated from field: string linux_runner_url = 1;\n */\n linuxRunnerUrl = \"\";\n\n /**\n * @generated from field: string kernel_image_url = 2;\n */\n kernelImageUrl = \"\";\n\n /**\n * @generated from field: string rootfs_disk_image_url = 3;\n */\n rootfsDiskImageUrl = \"\";\n\n /**\n * @generated from field: string shared_disk_image_url = 4;\n */\n sharedDiskImageUrl = \"\";\n\n /**\n * @generated from field: string cloud_hypervisor_url = 5;\n */\n cloudHypervisorUrl = \"\";\n\n /**\n * @generated from field: string ch_remote_static_url = 6;\n */\n chRemoteStaticUrl = \"\";\n\n /**\n * @generated from field: string zstd_url = 7;\n */\n zstdUrl = \"\";\n\n constructor(data?: 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.LinuxHostManifest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"linux_runner_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"kernel_image_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"rootfs_disk_image_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 4, name: \"shared_disk_image_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"cloud_hypervisor_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 6, name: \"ch_remote_static_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 7, name: \"zstd_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetLatestVersionResponse_LinuxHostManifest {\n return new GetLatestVersionResponse_LinuxHostManifest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetLatestVersionResponse_LinuxHostManifest {\n return new GetLatestVersionResponse_LinuxHostManifest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetLatestVersionResponse_LinuxHostManifest {\n return new GetLatestVersionResponse_LinuxHostManifest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetLatestVersionResponse_LinuxHostManifest | PlainMessage | undefined, b: GetLatestVersionResponse_LinuxHostManifest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetLatestVersionResponse_LinuxHostManifest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetRunnerConfigurationRequest\n */\nexport class GetRunnerConfigurationRequest 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.GetRunnerConfigurationRequest\";\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): GetRunnerConfigurationRequest {\n return new GetRunnerConfigurationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetRunnerConfigurationRequest {\n return new GetRunnerConfigurationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetRunnerConfigurationRequest {\n return new GetRunnerConfigurationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetRunnerConfigurationRequest | PlainMessage | undefined, b: GetRunnerConfigurationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetRunnerConfigurationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.RunnerMetricsConfiguration\n */\nexport class RunnerMetricsConfiguration extends Message {\n /**\n * @generated from field: bool enabled = 1;\n */\n enabled = false;\n\n /**\n * @generated from field: string url = 2;\n */\n url = \"\";\n\n /**\n * @generated from field: bytes encrypted_username = 3;\n */\n encryptedUsername = new Uint8Array(0);\n\n /**\n * @generated from field: bytes encrypted_password = 4;\n */\n encryptedPassword = 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.RunnerMetricsConfiguration\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"enabled\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n { no: 2, name: \"url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"encrypted_username\", kind: \"scalar\", T: 12 /* ScalarType.BYTES */ },\n { no: 4, name: \"encrypted_password\", kind: \"scalar\", T: 12 /* ScalarType.BYTES */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunnerMetricsConfiguration {\n return new RunnerMetricsConfiguration().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunnerMetricsConfiguration {\n return new RunnerMetricsConfiguration().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunnerMetricsConfiguration {\n return new RunnerMetricsConfiguration().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunnerMetricsConfiguration | PlainMessage | undefined, b: RunnerMetricsConfiguration | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunnerMetricsConfiguration, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetRunnerConfigurationResponse\n */\nexport class GetRunnerConfigurationResponse extends Message {\n /**\n * @generated from field: gitpod.v1.GetRunnerConfigurationResponse.RunnerConfiguration configuration = 1;\n */\n configuration?: GetRunnerConfigurationResponse_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.GetRunnerConfigurationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"configuration\", kind: \"message\", T: GetRunnerConfigurationResponse_RunnerConfiguration },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetRunnerConfigurationResponse {\n return new GetRunnerConfigurationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetRunnerConfigurationResponse {\n return new GetRunnerConfigurationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetRunnerConfigurationResponse {\n return new GetRunnerConfigurationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetRunnerConfigurationResponse | PlainMessage | undefined, b: GetRunnerConfigurationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetRunnerConfigurationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetRunnerConfigurationResponse.RunnerConfiguration\n */\nexport class GetRunnerConfigurationResponse_RunnerConfiguration extends Message {\n /**\n * @generated from field: string region = 1;\n */\n region = \"\";\n\n /**\n * @generated from field: gitpod.v1.RunnerReleaseChannel release_channel = 2;\n */\n releaseChannel = RunnerReleaseChannel.UNSPECIFIED;\n\n /**\n * @generated from field: bool auto_update = 3;\n */\n autoUpdate = false;\n\n /**\n * @generated from field: gitpod.v1.RunnerMetricsConfiguration metrics = 4;\n */\n metrics?: RunnerMetricsConfiguration;\n\n /**\n * @generated from field: gitpod.v1.LogLevel log_level = 5;\n */\n logLevel = LogLevel.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.GetRunnerConfigurationResponse.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 { no: 4, name: \"metrics\", kind: \"message\", T: RunnerMetricsConfiguration },\n { no: 5, name: \"log_level\", kind: \"enum\", T: proto3.getEnumType(LogLevel) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetRunnerConfigurationResponse_RunnerConfiguration {\n return new GetRunnerConfigurationResponse_RunnerConfiguration().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetRunnerConfigurationResponse_RunnerConfiguration {\n return new GetRunnerConfigurationResponse_RunnerConfiguration().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetRunnerConfigurationResponse_RunnerConfiguration {\n return new GetRunnerConfigurationResponse_RunnerConfiguration().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetRunnerConfigurationResponse_RunnerConfiguration | PlainMessage | undefined, b: GetRunnerConfigurationResponse_RunnerConfiguration | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetRunnerConfigurationResponse_RunnerConfiguration, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListRunnerAgentExecutionsRequest\n */\nexport class ListRunnerAgentExecutionsRequest extends Message {\n /**\n * pagination contains the pagination options for listing agent executions\n *\n * @generated from field: gitpod.v1.PaginationRequest pagination = 1;\n */\n pagination?: PaginationRequest;\n\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.ListRunnerAgentExecutionsRequest\";\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): ListRunnerAgentExecutionsRequest {\n return new ListRunnerAgentExecutionsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListRunnerAgentExecutionsRequest {\n return new ListRunnerAgentExecutionsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListRunnerAgentExecutionsRequest {\n return new ListRunnerAgentExecutionsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListRunnerAgentExecutionsRequest | PlainMessage | undefined, b: ListRunnerAgentExecutionsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListRunnerAgentExecutionsRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.RunnerAgentExecution\n */\nexport class RunnerAgentExecution extends Message {\n /**\n * @generated from field: gitpod.v1.AgentExecution agent_execution = 1;\n */\n agentExecution?: AgentExecution;\n\n /**\n * @generated from field: string actor_access_token = 3;\n */\n actorAccessToken = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.RunnerAgentExecution\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"agent_execution\", kind: \"message\", T: AgentExecution },\n { no: 3, name: \"actor_access_token\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): RunnerAgentExecution {\n return new RunnerAgentExecution().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): RunnerAgentExecution {\n return new RunnerAgentExecution().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): RunnerAgentExecution {\n return new RunnerAgentExecution().fromJsonString(jsonString, options);\n }\n\n static equals(a: RunnerAgentExecution | PlainMessage | undefined, b: RunnerAgentExecution | PlainMessage | undefined): boolean {\n return proto3.util.equals(RunnerAgentExecution, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListRunnerAgentExecutionsResponse\n */\nexport class ListRunnerAgentExecutionsResponse extends Message {\n /**\n * pagination contains the pagination options for listing agent executions\n *\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * The agent ListRunnerAgentExecutionsRequest on the runner\n *\n * @generated from field: repeated gitpod.v1.RunnerAgentExecution agent_executions = 2;\n */\n agentExecutions: RunnerAgentExecution[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListRunnerAgentExecutionsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"agent_executions\", kind: \"message\", T: RunnerAgentExecution, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListRunnerAgentExecutionsResponse {\n return new ListRunnerAgentExecutionsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListRunnerAgentExecutionsResponse {\n return new ListRunnerAgentExecutionsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListRunnerAgentExecutionsResponse {\n return new ListRunnerAgentExecutionsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListRunnerAgentExecutionsResponse | PlainMessage | undefined, b: ListRunnerAgentExecutionsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListRunnerAgentExecutionsResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetRunnerAgentExecutionRequest\n */\nexport class GetRunnerAgentExecutionRequest extends Message {\n /**\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * @generated from field: string agent_execution_id = 2;\n */\n agentExecutionId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetRunnerAgentExecutionRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"agent_execution_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetRunnerAgentExecutionRequest {\n return new GetRunnerAgentExecutionRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetRunnerAgentExecutionRequest {\n return new GetRunnerAgentExecutionRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetRunnerAgentExecutionRequest {\n return new GetRunnerAgentExecutionRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetRunnerAgentExecutionRequest | PlainMessage | undefined, b: GetRunnerAgentExecutionRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetRunnerAgentExecutionRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetRunnerAgentExecutionResponse\n */\nexport class GetRunnerAgentExecutionResponse extends Message {\n /**\n * @generated from field: gitpod.v1.RunnerAgentExecution agent_execution = 1;\n */\n agentExecution?: RunnerAgentExecution;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetRunnerAgentExecutionResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"agent_execution\", kind: \"message\", T: RunnerAgentExecution },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetRunnerAgentExecutionResponse {\n return new GetRunnerAgentExecutionResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetRunnerAgentExecutionResponse {\n return new GetRunnerAgentExecutionResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetRunnerAgentExecutionResponse {\n return new GetRunnerAgentExecutionResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetRunnerAgentExecutionResponse | PlainMessage | undefined, b: GetRunnerAgentExecutionResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetRunnerAgentExecutionResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateRunnerAgentExecutionRequest\n */\nexport class UpdateRunnerAgentExecutionRequest extends Message {\n /**\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * @generated from field: string agent_execution_id = 2;\n */\n agentExecutionId = \"\";\n\n /**\n * @generated from field: optional string name = 3;\n */\n name?: string;\n\n /**\n * @generated from field: optional string description = 4;\n */\n description?: string;\n\n /**\n * @generated from field: gitpod.v1.AgentExecution.Status status = 5;\n */\n status?: AgentExecution_Status;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.UpdateRunnerAgentExecutionRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"agent_execution_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 4, name: \"description\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 5, name: \"status\", kind: \"message\", T: AgentExecution_Status },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateRunnerAgentExecutionRequest {\n return new UpdateRunnerAgentExecutionRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateRunnerAgentExecutionRequest {\n return new UpdateRunnerAgentExecutionRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateRunnerAgentExecutionRequest {\n return new UpdateRunnerAgentExecutionRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateRunnerAgentExecutionRequest | PlainMessage | undefined, b: UpdateRunnerAgentExecutionRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateRunnerAgentExecutionRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.UpdateRunnerAgentExecutionResponse\n */\nexport class UpdateRunnerAgentExecutionResponse 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.UpdateRunnerAgentExecutionResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): UpdateRunnerAgentExecutionResponse {\n return new UpdateRunnerAgentExecutionResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): UpdateRunnerAgentExecutionResponse {\n return new UpdateRunnerAgentExecutionResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): UpdateRunnerAgentExecutionResponse {\n return new UpdateRunnerAgentExecutionResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: UpdateRunnerAgentExecutionResponse | PlainMessage | undefined, b: UpdateRunnerAgentExecutionResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(UpdateRunnerAgentExecutionResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetRunnerLLMIntegrationRequest\n */\nexport class GetRunnerLLMIntegrationRequest extends Message {\n /**\n * The runner's identity\n *\n * @generated from field: string runner_id = 1;\n */\n runnerId = \"\";\n\n /**\n * The LLM integration's ID\n *\n * @generated from field: string llm_integration_id = 2;\n */\n llmIntegrationId = \"\";\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetRunnerLLMIntegrationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"runner_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"llm_integration_id\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetRunnerLLMIntegrationRequest {\n return new GetRunnerLLMIntegrationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetRunnerLLMIntegrationRequest {\n return new GetRunnerLLMIntegrationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetRunnerLLMIntegrationRequest {\n return new GetRunnerLLMIntegrationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetRunnerLLMIntegrationRequest | PlainMessage | undefined, b: GetRunnerLLMIntegrationRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetRunnerLLMIntegrationRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.GetRunnerLLMIntegrationResponse\n */\nexport class GetRunnerLLMIntegrationResponse extends Message {\n /**\n * @generated from field: gitpod.v1.LLMIntegration llm_integration = 1;\n */\n llmIntegration?: LLMIntegration;\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.GetRunnerLLMIntegrationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"llm_integration\", kind: \"message\", T: LLMIntegration },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): GetRunnerLLMIntegrationResponse {\n return new GetRunnerLLMIntegrationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): GetRunnerLLMIntegrationResponse {\n return new GetRunnerLLMIntegrationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): GetRunnerLLMIntegrationResponse {\n return new GetRunnerLLMIntegrationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetRunnerLLMIntegrationResponse | PlainMessage | undefined, b: GetRunnerLLMIntegrationResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(GetRunnerLLMIntegrationResponse, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListRunnerLLMIntegrationsRequest\n */\nexport class ListRunnerLLMIntegrationsRequest extends Message {\n /**\n * pagination contains the pagination options for listing LLM 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.ListRunnerLLMIntegrationsRequest.Filter filter = 3;\n */\n filter?: ListRunnerLLMIntegrationsRequest_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.ListRunnerLLMIntegrationsRequest\";\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: ListRunnerLLMIntegrationsRequest_Filter },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListRunnerLLMIntegrationsRequest {\n return new ListRunnerLLMIntegrationsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListRunnerLLMIntegrationsRequest {\n return new ListRunnerLLMIntegrationsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListRunnerLLMIntegrationsRequest {\n return new ListRunnerLLMIntegrationsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListRunnerLLMIntegrationsRequest | PlainMessage | undefined, b: ListRunnerLLMIntegrationsRequest | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListRunnerLLMIntegrationsRequest, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListRunnerLLMIntegrationsRequest.Filter\n */\nexport class ListRunnerLLMIntegrationsRequest_Filter extends Message {\n /**\n * supported_models filters the response to only LLM integrations with these models\n *\n * @generated from field: repeated gitpod.v1.SupportedModel supported_models = 1;\n */\n supportedModels: SupportedModel[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListRunnerLLMIntegrationsRequest.Filter\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"supported_models\", kind: \"enum\", T: proto3.getEnumType(SupportedModel), repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListRunnerLLMIntegrationsRequest_Filter {\n return new ListRunnerLLMIntegrationsRequest_Filter().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListRunnerLLMIntegrationsRequest_Filter {\n return new ListRunnerLLMIntegrationsRequest_Filter().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListRunnerLLMIntegrationsRequest_Filter {\n return new ListRunnerLLMIntegrationsRequest_Filter().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListRunnerLLMIntegrationsRequest_Filter | PlainMessage | undefined, b: ListRunnerLLMIntegrationsRequest_Filter | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListRunnerLLMIntegrationsRequest_Filter, a, b);\n }\n}\n\n/**\n * @generated from message gitpod.v1.ListRunnerLLMIntegrationsResponse\n */\nexport class ListRunnerLLMIntegrationsResponse extends Message {\n /**\n * pagination contains the pagination options for listing LLM integrations\n *\n * @generated from field: gitpod.v1.PaginationResponse pagination = 1;\n */\n pagination?: PaginationResponse;\n\n /**\n * The LLM integrations configured for the runner\n *\n * @generated from field: repeated gitpod.v1.LLMIntegration llm_integrations = 2;\n */\n llmIntegrations: LLMIntegration[] = [];\n\n constructor(data?: PartialMessage) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"gitpod.v1.ListRunnerLLMIntegrationsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"pagination\", kind: \"message\", T: PaginationResponse },\n { no: 2, name: \"llm_integrations\", kind: \"message\", T: LLMIntegration, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial): ListRunnerLLMIntegrationsResponse {\n return new ListRunnerLLMIntegrationsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial): ListRunnerLLMIntegrationsResponse {\n return new ListRunnerLLMIntegrationsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial): ListRunnerLLMIntegrationsResponse {\n return new ListRunnerLLMIntegrationsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListRunnerLLMIntegrationsResponse | PlainMessage | undefined, b: ListRunnerLLMIntegrationsResponse | PlainMessage | undefined): boolean {\n return proto3.util.equals(ListRunnerLLMIntegrationsResponse, 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, GetRunnerAgentExecutionRequest, GetRunnerAgentExecutionResponse, GetRunnerConfigurationRequest, GetRunnerConfigurationResponse, GetRunnerEnvironmentRequest, GetRunnerEnvironmentResponse, GetRunnerLLMIntegrationRequest, GetRunnerLLMIntegrationResponse, ListRunnerAgentExecutionsRequest, ListRunnerAgentExecutionsResponse, ListRunnerEnvironmentClassesRequest, ListRunnerEnvironmentClassesResponse, ListRunnerEnvironmentsRequest, ListRunnerEnvironmentsResponse, ListRunnerLLMIntegrationsRequest, ListRunnerLLMIntegrationsResponse, ListRunnerSCMIntegrationsRequest, ListRunnerSCMIntegrationsResponse, MarkRunnerActiveRequest, MarkRunnerActiveResponse, SendResponseRequest, SendResponseResponse, SignupRequest, SignupResponse, UpdateRunnerAgentExecutionRequest, UpdateRunnerAgentExecutionResponse, 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 * Establishes initial connection between a runner and the Gitpod backend. This is the first\n * call a runner makes to register itself and establish its identity.\n *\n * Use this method to:\n * - Register new runners with the platform\n * - Exchange cryptographic keys for secure communication\n * - Declare supported environment classes and capabilities\n * - Initialize runner configuration\n *\n * ### Examples\n *\n * - Register runner:\n *\n * Registers a new runner with its public key and supported environment classes.\n *\n * ```yaml\n * publicKey: \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" # 32 bytes of zeros, base64 encoded\n * environmentClasses:\n * - id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * runnerId: \"f53d2330-3795-4c5d-a1f3-453121af9c60\"\n * displayName: \"Large Instance\"\n * description: \"8 CPU, 16GB RAM\"\n * enabled: true\n * configuration:\n * - key: \"cpu\"\n * value: \"8\"\n * - key: \"memory\"\n * value: \"16384\"\n * ```\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 * Maintains the active status of a runner through periodic heartbeat signals. The runner must\n * call this method every 30 seconds to indicate it's healthy and ready to accept workloads.\n *\n * Use this method to:\n * - Keep runners marked as available in the system\n * - Maintain health check status\n * - Prevent automatic deregistration\n * - Signal readiness for new workloads\n *\n * ### Examples\n *\n * - Send heartbeat:\n *\n * Marks a runner as active and healthy.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\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 * Retrieves environment details for a specific runner.\n *\n * Use this method to:\n * - Get environment configuration\n * - Check environment status\n * - Verify environment ownership\n *\n * ### Examples\n *\n * - Get environment:\n *\n * Retrieves environment details.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * ```\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 * Lists all environments managed by a runner.\n *\n * Use this method to:\n * - View assigned environments\n * - Monitor environment status\n * - Check environment assignments\n *\n * ### Examples\n *\n * - List environments:\n *\n * Shows all environments for a runner.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * pagination:\n * pageSize: 20\n * ```\n *\n * - List specific environments:\n *\n * Shows details for specific environment IDs.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * environmentIds: [\"07e03a28-65a5-4d98-b532-8ea67b188048\"]\n * pagination:\n * pageSize: 20\n * ```\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 * Provides comprehensive status updates about a managed environment. This method allows\n * runners to report detailed state information about environments they're managing.\n *\n * Use this method to:\n * - Report current environment phase and health status\n * - Update machine and container states\n * - Signal content and devcontainer readiness\n * - Provide access URLs and endpoints\n * - Report warnings or failure conditions\n *\n * ### Examples\n *\n * - Update status:\n *\n * Provides a detailed status update for an environment.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * status:\n * phase: ENVIRONMENT_PHASE_RUNNING\n * statusVersion: \"1\"\n * failureMessage: []\n * warningMessage: []\n * machine:\n * phase: PHASE_RUNNING\n * content:\n * phase: CONTENT_PHASE_READY\n * devcontainer:\n * phase: PHASE_RUNNING\n * environmentUrls:\n * logs: \"https://logs.gitpod.io/environment\"\n * ports: []\n * ssh:\n * url: \"ssh://ssh.gitpod.io:22\"\n * ```\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 * Updates the runner's status and capabilities.\n *\n * Use this method to:\n * - Report runner health\n * - Update version information\n * - Signal system changes\n * - Configure capabilities\n *\n * ### Examples\n *\n * - Update status:\n *\n * Updates runner status and details.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * version: \"1.2.3\"\n * systemDetails: \"Linux x86_64\"\n * logUrl: \"https://logs.example.com/runner\"\n * region: \"us-west\"\n * capabilities: [\"RUNNER_CAPABILITY_SECRET_CONTAINER_REGISTRY\"]\n * ```\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 * Updates the configuration schema for a runner.\n *\n * Use this method to:\n * - Define configuration options\n * - Update schema definitions\n * - Set validation rules\n *\n * ### Examples\n *\n * - Update schema:\n *\n * Updates runner configuration schema.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * configSchema:\n * version: \"1.0\"\n * runnerConfig:\n * - id: \"region\"\n * name: \"Region\"\n * description: \"Deployment region\"\n * required: true\n * string:\n * default: \"us-west\"\n * pattern: \"^[a-z]+-[a-z]+-[0-9]+$\"\n * - id: \"autoUpdate\"\n * name: \"Auto Update\"\n * description: \"Enable automatic updates\"\n * required: true\n * bool:\n * default: true\n * ```\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 * Retrieves authentication token for accessing remote hosts.\n *\n * Use this method to:\n * - Get host credentials\n * - Access SCM tokens\n * - Verify authentication\n *\n * ### Examples\n *\n * - Get token:\n *\n * Retrieves authentication token for a host.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * principalId: \"f53d2330-3795-4c5d-a1f3-453121af9c60\"\n * host: \"github.com\"\n * ```\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 * Lists environment classes configured for a runner.\n *\n * Use this method to:\n * - View available classes\n * - Check class configurations\n * - Monitor class status\n *\n * ### Examples\n *\n * - List classes:\n *\n * Shows environment classes for a runner.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * pagination:\n * pageSize: 20\n * ```\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 * Lists SCM integrations configured for a runner.\n *\n * Use this method to:\n * - View SCM configurations\n * - Check integration status\n * - Monitor available SCMs\n *\n * ### Examples\n *\n * - List integrations:\n *\n * Shows SCM integrations for a runner.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * pagination:\n * pageSize: 20\n * ```\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 * Streams requests that need to be handled by the runner.\n *\n * Use this method to:\n * - Receive configuration changes\n * - Handle environment updates\n * - Process integration events\n * - Monitor real-time events\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 * Sends a response to a previously received request.\n *\n * Use this method to:\n * - Respond to requests\n * - Report operation results\n * - Handle errors\n *\n * ### Examples\n *\n * - Send response:\n *\n * Responds to a request.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * requestId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * callParseContext:\n * resp:\n * originalContextUrl: \"https://github.com/org/repo\"\n * git:\n * host: \"github.com\"\n * owner: \"org\"\n * repo: \"repo\"\n * branch: \"main\"\n * cloneUrl: \"https://github.com/org/repo.git\"\n * ```\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 * Gets the latest version information for a runner.\n *\n * Use this method to:\n * - Check for updates\n * - Get version details\n * - Verify compatibility\n *\n * ### Examples\n *\n * - Get version:\n *\n * Retrieves latest version info.\n *\n * ```yaml\n * runnerId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * currentVersion: \"1.2.3\"\n * infrastructureVersion: \"4.5.6\"\n * ```\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 * @generated from rpc gitpod.v1.RunnerInteractionService.GetRunnerConfiguration\n */\n getRunnerConfiguration: {\n name: \"GetRunnerConfiguration\",\n I: GetRunnerConfigurationRequest,\n O: GetRunnerConfigurationResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * @generated from rpc gitpod.v1.RunnerInteractionService.ListRunnerAgentExecutions\n */\n listRunnerAgentExecutions: {\n name: \"ListRunnerAgentExecutions\",\n I: ListRunnerAgentExecutionsRequest,\n O: ListRunnerAgentExecutionsResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * @generated from rpc gitpod.v1.RunnerInteractionService.GetRunnerAgentExecution\n */\n getRunnerAgentExecution: {\n name: \"GetRunnerAgentExecution\",\n I: GetRunnerAgentExecutionRequest,\n O: GetRunnerAgentExecutionResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * @generated from rpc gitpod.v1.RunnerInteractionService.UpdateRunnerAgentExecution\n */\n updateRunnerAgentExecution: {\n name: \"UpdateRunnerAgentExecution\",\n I: UpdateRunnerAgentExecutionRequest,\n O: UpdateRunnerAgentExecutionResponse,\n kind: MethodKind.Unary,\n },\n /**\n * @generated from rpc gitpod.v1.RunnerInteractionService.GetRunnerLLMIntegration\n */\n getRunnerLLMIntegration: {\n name: \"GetRunnerLLMIntegration\",\n I: GetRunnerLLMIntegrationRequest,\n O: GetRunnerLLMIntegrationResponse,\n kind: MethodKind.Unary,\n idempotency: MethodIdempotency.NoSideEffects,\n },\n /**\n * @generated from rpc gitpod.v1.RunnerInteractionService.ListRunnerLLMIntegrations\n */\n listRunnerLLMIntegrations: {\n name: \"ListRunnerLLMIntegrations\",\n I: ListRunnerLLMIntegrationsRequest,\n O: ListRunnerLLMIntegrationsResponse,\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 /**\n * output contains the output of the service.\n * setting an output field to empty string will unset it.\n *\n * @generated from field: map output = 6;\n */\n output: { [key: string]: 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.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 { no: 6, name: \"output\", kind: \"map\", K: 9 /* ScalarType.STRING */, V: {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 /**\n * setting an output field to empty string will unset it.\n *\n * @generated from field: map output = 5;\n */\n output: { [key: string]: 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 { no: 5, name: \"output\", kind: \"map\", K: 9 /* ScalarType.STRING */, V: {kind: \"scalar\", T: 9 /* ScalarType.STRING */} },\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 /**\n * output contains the output of the task execution.\n * setting an output field to empty string will unset it.\n *\n * @generated from field: map output = 4;\n */\n output: { [key: string]: 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.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 { no: 4, name: \"output\", kind: \"map\", K: 9 /* ScalarType.STRING */, V: {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 * Creates a new automation service for an environment.\n *\n * Use this method to:\n * - Set up long-running services\n * - Configure service triggers\n * - Define service dependencies\n * - Specify runtime environments\n *\n * ### Examples\n *\n * - Create basic service:\n *\n * Creates a simple service with start command.\n *\n * ```yaml\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * metadata:\n * reference: \"web-server\"\n * name: \"Web Server\"\n * description: \"Runs the development web server\"\n * triggeredBy:\n * - postDevcontainerStart: true\n * spec:\n * commands:\n * start: \"npm run dev\"\n * ready: \"curl -s http://localhost:3000\"\n * ```\n *\n * - Create Docker-based service:\n *\n * Creates a service running in a specific container.\n *\n * ```yaml\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * metadata:\n * reference: \"redis\"\n * name: \"Redis Server\"\n * description: \"Redis cache service\"\n * spec:\n * commands:\n * start: \"redis-server\"\n * runsOn:\n * docker:\n * image: \"redis:7\"\n * ```\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 * Gets details about a specific automation service.\n *\n * Use this method to:\n * - Check service status\n * - View service configuration\n * - Monitor service health\n * - Retrieve service metadata\n *\n * ### Examples\n *\n * - Get service details:\n *\n * Retrieves information about a specific service.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\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 * Lists automation services with optional filtering.\n *\n * Use this method to:\n * - View all services in an environment\n * - Filter services by reference\n * - Monitor service status\n *\n * ### Examples\n *\n * - List environment services:\n *\n * Shows all services for an environment.\n *\n * ```yaml\n * filter:\n * environmentIds: [\"07e03a28-65a5-4d98-b532-8ea67b188048\"]\n * pagination:\n * pageSize: 20\n * ```\n *\n * - Filter by reference:\n *\n * Lists services matching specific references.\n *\n * ```yaml\n * filter:\n * references: [\"web-server\", \"database\"]\n * pagination:\n * pageSize: 20\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 * Updates an automation service configuration.\n *\n * Use this method to:\n * - Modify service commands\n * - Update triggers\n * - Change runtime settings\n * - Adjust dependencies\n *\n * ### Examples\n *\n * - Update commands:\n *\n * Changes service start and ready commands.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * spec:\n * commands:\n * start: \"npm run start:dev\"\n * ready: \"curl -s http://localhost:8080\"\n * ```\n *\n * - Update triggers:\n *\n * Modifies when the service starts.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * metadata:\n * triggeredBy:\n * trigger:\n * - postDevcontainerStart: true\n * - manual: true\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 * Deletes an automation 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 * Use this method to:\n * - Remove unused services\n * - Clean up service configurations\n * - Stop and delete services\n *\n * ### Examples\n *\n * - Delete service:\n *\n * Removes a service after stopping it.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * force: false\n * ```\n *\n * - Force delete:\n *\n * Immediately removes a service.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * force: true\n * ```\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 * Starts an automation 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 * Use this method to:\n * - Start stopped services\n * - Resume service operations\n * - Trigger service initialization\n *\n * ### Examples\n *\n * - Start service:\n *\n * Starts a previously stopped service.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\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 * Stops an automation 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 * Use this method to:\n * - Pause service operations\n * - Gracefully stop services\n * - Prepare for updates\n *\n * ### Examples\n *\n * - Stop service:\n *\n * Gracefully stops a running service.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\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 * Upserts the automations file for the given environment.\n *\n * Use this method to:\n * - Configure environment automations\n * - Update automation settings\n * - Manage automation files\n *\n * ### Examples\n *\n * - Update automations file:\n *\n * Updates or creates the automations configuration.\n *\n * ```yaml\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * automationsFile:\n * services:\n * web-server:\n * name: \"Web Server\"\n * description: \"Development web server\"\n * commands:\n * start: \"npm run dev\"\n * ready: \"curl -s http://localhost:3000\"\n * triggeredBy:\n * - postDevcontainerStart\n * tasks:\n * build:\n * name: \"Build Project\"\n * description: \"Builds the project artifacts\"\n * command: \"npm run build\"\n * triggeredBy:\n * - postEnvironmentStart\n * ```\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 * Creates a new automation task.\n *\n * Use this method to:\n * - Define one-off or scheduled tasks\n * - Set up build or test automation\n * - Configure task dependencies\n * - Specify execution environments\n *\n * ### Examples\n *\n * - Create basic task:\n *\n * Creates a simple build task.\n *\n * ```yaml\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * metadata:\n * reference: \"build\"\n * name: \"Build Project\"\n * description: \"Builds the project artifacts\"\n * triggeredBy:\n * - postEnvironmentStart: true\n * spec:\n * command: \"npm run build\"\n * ```\n *\n * - Create task with dependencies:\n *\n * Creates a task that depends on other services.\n *\n * ```yaml\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * metadata:\n * reference: \"test\"\n * name: \"Run Tests\"\n * description: \"Runs the test suite\"\n * spec:\n * command: \"npm test\"\n * dependsOn: [\"d2c94c27-3b76-4a42-b88c-95a85e392c68\"]\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 * Gets details about a specific automation task.\n *\n * Use this method to:\n * - Check task configuration\n * - View task dependencies\n * - Monitor task status\n *\n * ### Examples\n *\n * - Get task details:\n *\n * Retrieves information about a specific task.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\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 * Lists automation tasks with optional filtering.\n *\n * Use this method to:\n * - View all tasks in an environment\n * - Filter tasks by reference\n * - Monitor task status\n *\n * ### Examples\n *\n * - List environment tasks:\n *\n * Shows all tasks for an environment.\n *\n * ```yaml\n * filter:\n * environmentIds: [\"07e03a28-65a5-4d98-b532-8ea67b188048\"]\n * pagination:\n * pageSize: 20\n * ```\n *\n * - Filter by reference:\n *\n * Lists tasks matching specific references.\n *\n * ```yaml\n * filter:\n * references: [\"build\", \"test\"]\n * pagination:\n * pageSize: 20\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 * Updates an automation task configuration.\n *\n * Use this method to:\n * - Modify task commands\n * - Update task triggers\n * - Change dependencies\n * - Adjust execution settings\n *\n * ### Examples\n *\n * - Update command:\n *\n * Changes the task's command.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * spec:\n * command: \"npm run test:coverage\"\n * ```\n *\n * - Update triggers:\n *\n * Modifies when the task runs.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * metadata:\n * triggeredBy:\n * trigger:\n * - postEnvironmentStart: true\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 * Deletes an automation task.\n *\n * Use this method to:\n * - Remove unused tasks\n * - Clean up task configurations\n * - Delete obsolete automations\n *\n * ### Examples\n *\n * - Delete task:\n *\n * Removes a task and its configuration.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\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 * Starts a task by creating a new task execution.\n * This call does not block until the task is started; the task will be started asynchronously.\n *\n * Use this method to:\n * - Trigger task execution\n * - Run one-off tasks\n * - Start scheduled tasks immediately\n *\n * ### Examples\n *\n * - Start task:\n *\n * Creates a new execution of a task.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\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 * Lists executions of automation tasks.\n *\n * Use this method to:\n * - View task execution history\n * - Monitor running tasks\n * - Track task completion status\n *\n * ### Examples\n *\n * - List all executions:\n *\n * Shows execution history for all tasks.\n *\n * ```yaml\n * filter:\n * environmentIds: [\"07e03a28-65a5-4d98-b532-8ea67b188048\"]\n * pagination:\n * pageSize: 20\n * ```\n *\n * - Filter by phase:\n *\n * Lists executions in specific phases.\n *\n * ```yaml\n * filter:\n * phases: [\"TASK_EXECUTION_PHASE_RUNNING\", \"TASK_EXECUTION_PHASE_FAILED\"]\n * pagination:\n * pageSize: 20\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 * Gets details about a specific task execution.\n *\n * Use this method to:\n * - Monitor execution progress\n * - View execution logs\n * - Check execution status\n * - Debug failed executions\n *\n * ### Examples\n *\n * - Get execution details:\n *\n * Retrieves information about a specific task execution.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\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 * Stops a running task execution.\n *\n * Use this method to:\n * - Cancel long-running tasks\n * - Stop failed executions\n * - Interrupt task processing\n *\n * ### Examples\n *\n * - Stop execution:\n *\n * Stops a running task execution.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\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 * Updates the status of a task execution.\n * Only the environment executing a task execution is expected to call this function.\n *\n * Use this method to:\n * - Report execution progress\n * - Update step status\n * - Set failure messages\n * - Provide log URLs\n *\n * ### Examples\n *\n * - Update execution status:\n *\n * Updates status with step information.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * steps:\n * - id: \"step-1\"\n * phase: TASK_EXECUTION_PHASE_SUCCEEDED\n * logUrl: \"https://logs.gitpod.io/task-123\"\n * ```\n *\n * - Report failure:\n *\n * Updates status with failure information.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * failureMessage: \"Build failed due to missing dependencies\"\n * steps:\n * - id: \"step-1\"\n * phase: TASK_EXECUTION_PHASE_FAILED\n * failureMessage: \"npm install failed\"\n * ```\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 * Lists groups with optional pagination.\n *\n * Use this method to:\n * - View all groups\n * - Check group memberships\n * - Monitor group configurations\n * - Audit group access\n *\n * ### Examples\n *\n * - List all groups:\n *\n * Shows all groups with pagination.\n *\n * ```yaml\n * pagination:\n * pageSize: 20\n * ```\n *\n * - List with custom page size:\n *\n * Shows groups with specified page size.\n *\n * ```yaml\n * pagination:\n * pageSize: 50\n * token: \"next-page-token-from-previous-response\"\n * ```\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 /**\n * @generated from enum value: RESOURCE_TYPE_DOMAIN_VERIFICATION = 18;\n */\n DOMAIN_VERIFICATION = 18,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_AGENT_EXECUTION = 19;\n */\n AGENT_EXECUTION = 19,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_RUNNER_LLM_INTEGRATION = 20;\n */\n RUNNER_LLM_INTEGRATION = 20,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_AGENT = 21;\n */\n AGENT = 21,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_ENVIRONMENT_SESSION = 22;\n */\n ENVIRONMENT_SESSION = 22,\n\n /**\n * @generated from enum value: RESOURCE_TYPE_USER_SECRET = 23;\n */\n USER_SECRET = 23,\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 { no: 18, name: \"RESOURCE_TYPE_DOMAIN_VERIFICATION\" },\n { no: 19, name: \"RESOURCE_TYPE_AGENT_EXECUTION\" },\n { no: 20, name: \"RESOURCE_TYPE_RUNNER_LLM_INTEGRATION\" },\n { no: 21, name: \"RESOURCE_TYPE_AGENT\" },\n { no: 22, name: \"RESOURCE_TYPE_ENVIRONMENT_SESSION\" },\n { no: 23, name: \"RESOURCE_TYPE_USER_SECRET\" },\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 * Streams events for all projects, runners, environments, tasks, and services based on the\n * specified scope.\n *\n * Use this method to:\n * - Monitor resource changes in real-time\n * - Track system events\n * - Receive notifications\n *\n * The scope parameter determines which events to watch:\n * - Organization scope (default): Watch all organization-wide events including projects,\n * runners and environments. Task and service events are not included. Use by setting\n * organization=true or omitting the scope.\n * - Environment scope: Watch events for a specific environment, including its tasks,\n * task executions, and services. Use by setting environment_id to the UUID of the\n * environment to watch.\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 * Lists audit logs with filtering and pagination options.\n *\n * Use this method to:\n * - View audit history\n * - Track user actions\n * - Monitor system changes\n *\n * ### Examples\n *\n * - List all logs:\n *\n * ```yaml\n * pagination:\n * pageSize: 20\n * ```\n *\n * - Filter by actor:\n *\n * ```yaml\n * filter:\n * actorIds: [\"d2c94c27-3b76-4a42-b88c-95a85e392c68\"]\n * actorPrincipals: [\"PRINCIPAL_USER\"]\n * pagination:\n * pageSize: 20\n * ```\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, PaginationResponse } 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.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.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: PaginationResponse },\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 /**\n * @generated from field: string alias = 7;\n */\n alias = \"\";\n\n constructor(data?: 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 { no: 7, name: \"alias\", 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 * Lists all available code editors.\n *\n * Use this method to:\n * - View supported editors\n * - Get editor capabilities\n * - Browse editor options\n * - Check editor availability\n *\n * ### Examples\n *\n * - List editors:\n *\n * Shows all available editors with pagination.\n *\n * ```yaml\n * pagination:\n * pageSize: 20\n * ```\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 * Gets details about a specific editor.\n *\n * Use this method to:\n * - View editor information\n * - Get editor configuration\n *\n * ### Examples\n *\n * - Get editor details:\n *\n * Retrieves information about a specific editor.\n *\n * ```yaml\n * id: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * ```\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 * Resolves the URL for accessing an editor in a specific environment.\n *\n * Use this method to:\n * - Get editor access URLs\n * - Launch editors for environments\n * - Set up editor connections\n * - Configure editor access\n *\n * ### Examples\n *\n * - Resolve editor URL:\n *\n * Gets the URL for accessing an editor in an environment.\n *\n * ```yaml\n * editorId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n * environmentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * organizationId: \"b0e12f6c-4c67-429d-a4a6-d9838b5da047\"\n * ```\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","// @generated by protoc-gen-connect-es v1.4.0 with parameter \"target=ts\"\n// @generated from file gitpod/v1/agent.proto (package gitpod.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { CreateAgentExecutionConversationTokenRequest, CreateAgentExecutionConversationTokenResponse, CreateAgentRequest, CreateAgentResponse, DeleteAgentExecutionRequest, DeleteAgentExecutionResponse, DeleteAgentRequest, DeleteAgentResponse, GetAgentExecutionRequest, GetAgentExecutionResponse, GetAgentRequest, GetAgentResponse, ListAgentExecutionsRequest, ListAgentExecutionsResponse, ListAgentsRequest, ListAgentsResponse, SendToAgentExecutionRequest, SendToAgentExecutionResponse, StartAgentRequest, StartAgentResponse, UpdateAgentRequest, UpdateAgentResponse } from \"./agent_pb.js\";\nimport { MethodKind } from \"@bufbuild/protobuf\";\n\n/**\n * @generated from service gitpod.v1.AgentService\n */\nexport const AgentService = {\n typeName: \"gitpod.v1.AgentService\",\n methods: {\n /**\n * Lists all agents matching the specified criteria.\n *\n * Use this method to find and monitor agents across your organization.\n * Results are ordered by their creation time with the newest first.\n *\n * ### Examples\n *\n * - List all agents:\n *\n * Retrieves all agents with pagination.\n *\n * ```yaml\n * pagination:\n * pageSize: 10\n * ```\n *\n * @generated from rpc gitpod.v1.AgentService.ListAgents\n */\n listAgents: {\n name: \"ListAgents\",\n I: ListAgentsRequest,\n O: ListAgentsResponse,\n kind: MethodKind.Unary,\n },\n /**\n * Gets details about a specific agent including description,\n * and required models.\n *\n * Use this method to:\n * - Check if an agent is defined correctly\n * - Understand which models are required for this agent\n *\n * ### Examples\n *\n * - Get agent details:\n *\n * ```yaml\n * agentId: \"07e03a28-65a5-4d98-b532-8ea67b188048\"\n * ```\n *\n * @generated from rpc gitpod.v1.AgentService.GetAgent\n */\n getAgent: {\n name: \"GetAgent\",\n I: GetAgentRequest,\n O: GetAgentResponse,\n kind: MethodKind.Unary,\n },\n /**\n * Creates a new agent.\n *\n * Use this method to:\n * - Define new agents with custom prompts and tools\n *\n * @generated from rpc gitpod.v1.AgentService.CreateAgent\n */\n createAgent: {\n name: \"CreateAgent\",\n I: CreateAgentRequest,\n O: CreateAgentResponse,\n kind: MethodKind.Unary,\n },\n /**\n * Updates an existing agent.\n *\n * Use this method to:\n * - Modify agent configuration\n * - Update prompts or required tools\n *\n * @generated from rpc gitpod.v1.AgentService.UpdateAgent\n */\n updateAgent: {\n name: \"UpdateAgent\",\n I: UpdateAgentRequest,\n O: UpdateAgentResponse,\n kind: MethodKind.Unary,\n },\n /**\n * Deletes an agent.\n *\n * Use this method to:\n * - Remove custom agents\n *\n * @generated from rpc gitpod.v1.AgentService.DeleteAgent\n */\n deleteAgent: {\n name: \"DeleteAgent\",\n I: DeleteAgentRequest,\n O: DeleteAgentResponse,\n kind: MethodKind.Unary,\n },\n /**\n * Starts (or triggers) an agent run using a provided agent.\n *\n * Use this method to:\n * - Launch an agent based on a known agent\n *\n * ### Examples\n *\n * - Start an agent with a project ID:\n *\n * ```yaml\n * agentId: \"b8a64cfa-43e2-4b9d-9fb3-07edc63f5971\"\n * codeContext:\n * projectId: \"2d22e4eb-31da-467f-882c-27e21550992f\"\n * ```\n *\n * @generated from rpc gitpod.v1.AgentService.StartAgent\n */\n startAgent: {\n name: \"StartAgent\",\n I: StartAgentRequest,\n O: StartAgentResponse,\n kind: MethodKind.Unary,\n },\n /**\n * Lists all agent runs matching the specified filter.\n *\n * Use this method to track multiple agent runs and their associated resources. Results are ordered by their creation time with the newest first.\n *\n * ### Examples\n *\n * - List agent runs by agent ID:\n *\n * ```yaml\n * filter:\n * agentIds: [\"b8a64cfa-43e2-4b9d-9fb3-07edc63f5971\"]\n * pagination:\n * pageSize: 10\n * ```\n *\n * @generated from rpc gitpod.v1.AgentService.ListAgentExecutions\n */\n listAgentExecutions: {\n name: \"ListAgentExecutions\",\n I: ListAgentExecutionsRequest,\n O: ListAgentExecutionsResponse,\n kind: MethodKind.Unary,\n },\n /**\n * Gets details about a specific agent run, including its metadata, specification,\n * and status (phase, error messages, and usage statistics).\n *\n * Use this method to:\n * - Monitor the run's progress\n * - Retrieve the agent's conversation URL\n * - Check if an agent run is actively producing output\n *\n * ### Examples\n *\n * - Get agent run details by ID:\n *\n * ```yaml\n * agentExecutionId: \"6fa1a3c7-fbb7-49d1-ba56-1890dc7c4c35\"\n * ```\n *\n * @generated from rpc gitpod.v1.AgentService.GetAgentExecution\n */\n getAgentExecution: {\n name: \"GetAgentExecution\",\n I: GetAgentExecutionRequest,\n O: GetAgentExecutionResponse,\n kind: MethodKind.Unary,\n },\n /**\n * Deletes an agent run.\n *\n * Use this method to:\n * - Clean up agent runs that are no longer needed\n *\n * ### Examples\n *\n * - Delete an agent run by ID:\n *\n * ```yaml\n * agentExecutionId: \"6fa1a3c7-fbb7-49d1-ba56-1890dc7c4c35\"\n * ```\n *\n * @generated from rpc gitpod.v1.AgentService.DeleteAgentExecution\n */\n deleteAgentExecution: {\n name: \"DeleteAgentExecution\",\n I: DeleteAgentExecutionRequest,\n O: DeleteAgentExecutionResponse,\n kind: MethodKind.Unary,\n },\n /**\n * Sends user input to an active agent run.\n *\n * This method is used to provide interactive or conversation-based input\n * to an agent. The agent can respond with output blocks containing\n * text, file changes, or tool usage requests.\n *\n * ### Examples\n *\n * - Send a text message to an agent:\n *\n * ```yaml\n * agentExecutionId: \"6fa1a3c7-fbb7-49d1-ba56-1890dc7c4c35\"\n * userInput:\n * text:\n * content: \"Generate a report based on the latest logs.\"\n * ```\n *\n * @generated from rpc gitpod.v1.AgentService.SendToAgentExecution\n */\n sendToAgentExecution: {\n name: \"SendToAgentExecution\",\n I: SendToAgentExecutionRequest,\n O: SendToAgentExecutionResponse,\n kind: MethodKind.Unary,\n },\n /**\n * Creates a token for conversation access with a specific agent run.\n *\n * This method generates a temporary token that can be used to securely\n * connect to an ongoing agent conversation, for example in a web UI.\n *\n * ### Examples\n *\n * - Create a token to join an agent run conversation in a front-end application:\n *\n * ```yaml\n * agentExecutionId: \"6fa1a3c7-fbb7-49d1-ba56-1890dc7c4c35\"\n * ```\n *\n * @generated from rpc gitpod.v1.AgentService.CreateAgentExecutionConversationToken\n */\n createAgentExecutionConversationToken: {\n name: \"CreateAgentExecutionConversationToken\",\n I: CreateAgentExecutionConversationTokenRequest,\n O: CreateAgentExecutionConversationTokenResponse,\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.13746\";\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 { AgentService } from \"gitpod-next-api/gitpod/v1/agent_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);\nconst agentService = createPromiseClient(AgentService, 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 agentService,\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-visible:outline focus-visible:outline-offset-0 focus-visible: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-visible:outline-offset-2 focus-visible:outline-content-primary\",\n ),\n secondary: cn(\n \"shadow-sm bg-surface-glass hover:bg-surface-03 text-content-primary\",\n \"focus-visible:outline-content-primary\",\n ),\n brand: cn(\n \"shadow-sm text-content-invert bg-content-orange hover:bg-content-orange/80\",\n \"focus-visible:outline-offset-2 focus-visible:outline-content-orange\",\n ),\n destructive: cn(\n \"shadow-sm text-content-invert bg-content-red hover:bg-content-red/80\",\n \"focus-visible:outline-offset-2 focus-visible:outline-content-red\",\n ),\n ghost: cn(\n \"disabled:bg-transparent disabled:text-content-secondary bg-transparent hover:bg-surface-03\",\n \"focus-visible:outline-content-primary\",\n ),\n link: cn(\n \"disabled:bg-transparent disabled:text-content-secondary border-0 text-content-secondary hover:text-content-primary\",\n \"focus-visible:outline-content-orange\",\n ),\n // Note(mads): Text variant is experimental, will talk to Cory to see if we can consolidate with the link variant\n text: cn(\n \"h-4 border-0 bg-transparent p-0 text-content-secondary shadow-none hover:cursor-pointer hover:bg-transparent hover:underline focus-visible:underline focus-visible:outline-0 focus-visible:ring-0\",\n \"disabled:bg-transparent\",\n \"inline-flex min-w-0 shrink\",\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 (\n \n {node}\n \n );\n }\n if (isValidElement(node) && node.type === Fragment) {\n return (\n \n {node}\n \n );\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 export function isFailed(status: LocalRunnerStatus | undefined): boolean {\n if (!status) {\n return false;\n }\n if (status.phase === \"failed\") {\n return true;\n }\n if (status.phase === \"installing\" && status.installation) { \n const code = status.installation.exitCode; \n return typeof code === \"number\" && code !== 0;\n }\n return false;\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","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 { 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 { useResetPylon } from \"@/hooks/use-boot-in-app-chat\";\nimport { useGitpodAPI } from \"@/hooks/use-gitpod-api\";\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 { Code, ConnectError } from \"@connectrpc/connect\";\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { DotfilesConfiguration, type User } from \"gitpod-next-api/gitpod/v1/user_pb\";\n\nexport type PlainUser = PlainMessage;\n\nconst keys = {\n getAuthenticatedUserQueryKey: () => keyWithPrincipal([\"user\", \"authenticated\"]),\n getDotfilesConfigurationQueryKey: () => keyWithPrincipal([\"user\", \"dotfilesConfiguration\"]),\n};\n\nexport const useAuthenticatedUser = () => {\n const api = useGitpodAPI();\n const { data: account } = useGetAccount();\n\n const query = useQuery({\n queryKey: keys.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 resetMixpanel = useResetSegment();\n const resetPylon = useResetPylon();\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 resetMixpanel();\n resetPylon();\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\nexport const useGetDotfilesConfiguration = () => {\n const api = useGitpodAPI();\n return useQuery({\n queryKey: keys.getDotfilesConfigurationQueryKey(),\n queryFn: async () => {\n try {\n const response = await api.userService.getDotfilesConfiguration({});\n return response.dotfilesConfiguration;\n } catch (error) {\n // If the dotfiles configuration is not set we'll get a 404 which we'll treat as \"no configuration\"\n const isNotFound = error instanceof ConnectError && error.code === Code.NotFound;\n if (isNotFound) {\n return new DotfilesConfiguration({ repository: \"\" });\n }\n throw error;\n }\n },\n });\n};\n\nexport const useSetDotfilesConfiguration = () => {\n const api = useGitpodAPI();\n const client = useQueryClient();\n return useMutation({\n mutationFn: async ({ repositoryUrl }: { repositoryUrl: string }) => {\n return await api.userService.setDotfilesConfiguration({\n repository: repositoryUrl,\n });\n },\n onSuccess: async (_, { repositoryUrl }) => {\n await client.setQueryData(\n keys.getDotfilesConfigurationQueryKey(),\n new DotfilesConfiguration({ repository: repositoryUrl }),\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 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 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 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 SidebarAgentExecutionList: \"sidebar_agent_execution_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 EnvironmentEditorPopover: \"environment_editor_popover\",\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 OnboardingRunnerCreateLinuxRunnerTabStep: \"onboarding_runner_create_linux_runner_tab_step\",\n OnboardingRunnerConfigureLinuxTabStep: \"onboarding_runner_configure_linux_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 DeleteAgentExecutionModal: \"delete_agent_execution_modal\",\n StartAgentExecutionModal: \"start_agent_execution_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 SDKReleaseNudge: \"sdk_release_nudge\",\n AnnouncementBannerPopover: \"announcement_banner_popover\",\n NudgeDownloadAppPopover: \"nudge_download_app_popover\",\n GitAuthenticationTokenDeleteModal: \"git_authentication_token_delete_modal\",\n GitAuthenticationTokenCreateModal: \"git_authentication_token_create_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 OnaCreateProjectModal: \"ona_create_project_modal\",\n OnaViewTranscriptModal: \"ona_view_transcript_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 { PaginationRequest } from \"gitpod-next-api/gitpod/v1/pagination_pb\";\n\nimport type { PaginationResponse } from \"gitpod-next-api/gitpod/v1/pagination_pb\";\n\n/**\n * Auto-pagination utility that handles pagination requests internally.\n * @param fn Function that accepts no parameters but returns a paginated response\n * @returns All aggregated results from paginated requests\n *\n * @example\n * // Example usage:\n * const allUsers = await autoPaginateRaw(\n * (params) => api.userService.listUsers(params),\n * { organizationId: \"my-org-id\" }\n * ).then((results) => results.flatMap((r) => r.users));\n */\nexport async function autoPaginateRaw(\n fn: (params: P) => Promise,\n baseParams: P,\n) {\n const maxRequests = 100;\n const results: T[] = [];\n\n let token = \"\";\n for (let i = 0; i < maxRequests; i++) {\n const paramsWithPagination = {\n ...baseParams,\n pagination: new PaginationRequest({ token }),\n };\n const result = await fn(paramsWithPagination);\n results.push(result);\n token = result.pagination?.nextToken || \"\";\n\n if (i === maxRequests - 1 && !!token) {\n console.error(`Cancelling pagination at ${maxRequests} requests.`);\n }\n if (!token) {\n break;\n }\n }\n\n return results;\n}\n\n/**\n * Specialized paginator for collections that automatically extracts and flattens items.\n * @param fn Function that accepts parameters and returns a paginated response\n * @param baseParams Base parameters to pass to the function (without pagination)\n * @param extractor Function to extract the collection from each response\n * @returns Flattened array of all items across all pages\n *\n * @example\n * // Example usage:\n * const allUsers = await autoPaginate(\n * (params) => api.userService.listUsers(params),\n * { organizationId: \"my-org-id\" },\n * (response) => response.users\n * );\n */\nexport async function autoPaginate(\n fn: (params: P) => Promise,\n baseParams: P,\n extractor: (result: T) => R[],\n): Promise {\n const results = await autoPaginateRaw(fn, baseParams);\n return results.flatMap(extractor);\n}\n","import { useResetPylon } from \"@/hooks/use-boot-in-app-chat\";\nimport { useGitpodAPI } from \"@/hooks/use-gitpod-api\";\nimport { useResetSegment, useSegmentTrack } from \"@/hooks/use-segment\";\nimport { getPrincipal, setPrincipal } from \"@/principal\";\nimport { defaultRetry, defaultThrowOnError, isNotFoundError, isUnauthorizedError } from \"@/queries/errors\";\nimport { autoPaginate } from \"@/queries/pagination\";\nimport { toPlainMessage, type PlainMessage } from \"@bufbuild/protobuf\";\nimport { hashKey, useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { 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 autoPaginate(\n (params) => api.accountService.listLoginProviders(params),\n {\n filter: {\n inviteId,\n },\n },\n (response) => response.loginProviders,\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 resetPylon = useResetPylon();\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 resetPylon();\n resetMixpanel();\n }\n },\n });\n};\n","import { useGetAccount } from \"@/queries/account-queries\";\nimport { useEffect, useRef } from \"react\";\n\nconst pylonUnauthenticatedUserIdKey = \"pylon-unauthenticated-user-id\";\n\nconst disableChat = process.env.NODE_ENV === \"development\" || process.env.NODE_ENV === \"test\";\n\nexport const useBootInAppChat = () => {\n const APP_ID = \"efa0bf58-5742-41dd-81e3-ffcb7cccda75\";\n\n const { data: account } = useGetAccount();\n\n // For deduplication.\n const calledOnce = useRef(false);\n\n useEffect(() => {\n if (disableChat) {\n return;\n }\n if (calledOnce.current) {\n return;\n }\n calledOnce.current = true;\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 disableAnimations().catch(console.error);\n };\n script.onerror = (error) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const err = error instanceof ErrorEvent ? error.error : error;\n console.log(\"Not booting Pylon: failed to inject script\", err);\n };\n document.head.insertBefore(script, document.head.firstChild);\n\n return () => {\n if (document.head.contains(script)) {\n try {\n document.head.removeChild(script);\n } catch (error) {\n console.error(\"Failed to remove Pylon script\", error);\n }\n }\n };\n }, []);\n\n useEffect(() => {\n if (disableChat) {\n return;\n }\n if (!account) {\n if (!window.localStorage.getItem(pylonUnauthenticatedUserIdKey)) {\n window.localStorage.setItem(pylonUnauthenticatedUserIdKey, crypto.randomUUID());\n }\n return;\n }\n }, [account]);\n\n useEffect(() => {\n if (disableChat) {\n return;\n }\n // Setting window.pylon to undefined causes pylon the hide the chat bubble\n let email = account?.email;\n if (!email) {\n email = `unauthenticated-${window.localStorage.getItem(pylonUnauthenticatedUserIdKey)}@example.com`;\n }\n\n window.pylon = {\n chat_settings: {\n app_id: APP_ID,\n email: email,\n name: account?.name ?? \"Unauthenticated\",\n avatar_url: account?.avatarUrl,\n account_external_id: account?.id,\n },\n };\n if (window.Pylon) {\n // Fields need to be first configured in Pylon\n window.Pylon(\"setNewIssueCustomFields\", {\n product: \"Flex\",\n });\n }\n }, [account]);\n};\n\nexport const useNewInAppChatMessage = () => {\n return (message: string) => {\n if (disableChat) {\n return;\n }\n if (window.Pylon) {\n window.Pylon(\"showNewMessage\", message);\n }\n };\n};\n\nexport const useResetPylon = () => {\n return () => {\n if (disableChat) {\n return;\n }\n window.pylon = undefined;\n window.localStorage.removeItem(pylonUnauthenticatedUserIdKey);\n };\n};\n\nconst disableAnimations = async () => {\n try {\n const findAnimations = () => {\n const chatWindow = document.getElementsByClassName(\"PylonChat-chatWindow\")[0];\n if (chatWindow && chatWindow.tagName === \"IFRAME\") {\n const iframeDoc = (chatWindow as HTMLIFrameElement).contentDocument;\n return iframeDoc?.getElementsByClassName(\"PylonChat-backgroundBlob--container\")[0];\n }\n };\n\n for (let i = 0; i < 10; i++) {\n const animations = findAnimations();\n if (animations) {\n animations.remove();\n console.log(\"Animations removed\");\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, 1000));\n }\n } catch (error) {\n console.error(\"Failed to disable animations\", error);\n }\n};\n","import { useCallback, useState } from \"react\";\n\nexport const useLocalStorage = (key: string, defaultValue: string) => {\n const readValue = useCallback(() => {\n try {\n const raw = window.localStorage.getItem(key);\n return raw ? raw : defaultValue;\n } catch (error) {\n console.warn(`Error reading localStorage key “${key}”:`, error);\n return defaultValue;\n }\n }, [key, defaultValue]);\n\n const [storedValue, setStoredValue] = useState(() => readValue());\n\n const setValue = useCallback(\n (newValue: string) => {\n try {\n // Save to local storage\n window.localStorage.setItem(key, newValue);\n // Save state\n setStoredValue(newValue);\n } catch (error) {\n console.warn(`Error setting localStorage key “${key}”:`, error);\n }\n },\n [key],\n );\n\n return { storedValue, setValue };\n};\n","import { useDesktop } from \"@/hooks/use-desktop\";\nimport { useLocalStorage } from \"@/hooks/use-local-storage\";\nimport { anonymizeFilePaths, useSegmentTrack } from \"@/hooks/use-segment\";\nimport { LocalRunnerStatus } from \"frontend-shared/local-runner\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nexport const useLocalRunner = () => {\n const desktop = useDesktop();\n\n const [status, setStatus] = useState(undefined);\n const { storedValue: errorDismissed, setValue: setErrorDismissed } = useLocalStorage(\n \"localRunnerErrorDismissed\",\n \"false\",\n );\n\n const statusUpdater = useCallback(\n (newStatus: LocalRunnerStatus) => {\n if (!LocalRunnerStatus.isFailed(newStatus) && errorDismissed === \"true\") {\n console.log(\"Resetting error dismissed state\");\n setErrorDismissed(\"false\");\n }\n setStatus(newStatus);\n },\n [errorDismissed, setErrorDismissed],\n );\n\n useEffect(() => desktop.runnerService?.onRunnerStatus(statusUpdater), [desktop.runnerService, statusUpdater]);\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 const errorHandler = {\n \n isRunnerErrorDismissed: errorDismissed === \"true\" && LocalRunnerStatus.isFailed(status),\n dismissRunnerError: () => setErrorDismissed(\"true\"),\n };\n\n if (!desktop.isDesktop) {\n return {\n loading: false,\n status: undefined,\n ...errorHandler,\n };\n }\n\n return {\n loading: !status,\n status,\n ...errorHandler,\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","/**\n * @returns true if the platform is Mac, iPad or iPhone\n */\nexport const isMacLike = (): boolean => {\n if (navigator.platform.startsWith(\"Mac\") || navigator.platform === \"iPhone\") {\n return true;\n }\n\n return false;\n};\n\n/**\n * @returns either \"⌘\" or \"Ctrl + \" depending on the platform for use in key bindings\n */\nexport const getPlatformModifierKey = (): string => (isMacLike() ? \"⌘\" : \"Ctrl + \");\n\n/**\n * @returns either \"⇧\" or \"Shift\" depending on the platform for use in key bindings\n */\nexport const getPlatformShiftKey = (): string => (isMacLike() ? \"⇧\" : \"Shift\");\n\nexport const StartEnvironmentModalKeyBinding = getPlatformModifierKey() + \"O\";\n\nexport const OpenProjectsModalKeyBinding = getPlatformModifierKey() + \"P\";\n\nexport const OpenSettingsModalKeyBinding = getPlatformModifierKey() + \",\";\n","import { isMacLike } from \"@/utils/platform\";\nimport { useCallback, useEffect } from \"react\";\n\n/**\n * Enables platform-specific Cmd+, (or Ctrl+,) to open settings\n */\nexport const useOpenSettingsShortcut = (setTriggered: (value: boolean) => void) => {\n const handleKeyPress = useCallback(\n (event: KeyboardEvent) => {\n if (event.key !== \",\") {\n return;\n }\n if (isMacLike() ? event.metaKey : event.ctrlKey) {\n event.preventDefault();\n setTriggered(true);\n }\n },\n [setTriggered],\n );\n\n useEffect(() => {\n document.addEventListener(\"keydown\", handleKeyPress);\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeyPress);\n };\n }, [handleKeyPress]);\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 { useOpenSettingsShortcut } from \"@/hooks/use-open-settings-shortcut\";\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, useNavigate, useParams } from \"react-router-dom\";\n\nexport const AuthenticatedUserLayout: FC = () => {\n const localRunner = useLocalRunner();\n useBootInAppChat();\n useSegmentIdentify();\n\n const navigateToSettings = useNavigate();\n useOpenSettingsShortcut(() => {\n navigateToSettings(\"/settings/profile\");\n });\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 const needsRunnerScreen = LocalRunnerStatus.needsRunnerScreen(localRunner.status);\n const errorDismissed = localRunner.isRunnerErrorDismissed;\n\n if (needsRunnerScreen && !errorDismissed) {\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 { autoPaginate } from \"@/queries/pagination\";\nimport { keyWithPrincipal } from \"@/queries/principal-key\";\nimport { useAuthenticatedUser } from \"@/queries/user-queries\";\nimport { toPlainMessage } from \"@bufbuild/protobuf\";\nimport { type QueryClient, useMutation, 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 listAllRunnerSCMIntegrations: (runnerIds: string[]) =>\n keyWithPrincipal([\"listAllRunnerSCMIntegrations\", runnerIds]),\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 const client = useQueryClient();\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 autoPaginate(\n (params) => api.runnerConfigurationService.listHostAuthenticationTokens(params),\n new ListHostAuthenticationTokensRequest({\n filter: {\n userId: user.id,\n runnerId: options.runnerId,\n },\n }),\n (response) => response.tokens,\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 onSuccess: () => {\n client.invalidateQueries({ queryKey: runnerConfigurationQueryKey.list() }).catch(console.error);\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 autoPaginate(\n (params) => api.runnerConfigurationService.listHostAuthenticationTokens(params),\n new ListHostAuthenticationTokensRequest({\n filter: {\n userId: user.id,\n runnerId: options.runnerId,\n },\n }),\n (response) => response.tokens,\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 = await autoPaginate(\n (params) => api.runnerConfigurationService.listHostAuthenticationTokens(params),\n new ListHostAuthenticationTokensRequest({\n filter: {\n userId: user.id,\n },\n }),\n (response) => response.tokens,\n );\n\n return {\n tokens: tokens.map((token) => toPlainMessage(token)),\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 autoPaginate(\n (params) => api.runnerConfigurationService.listSCMIntegrations(params),\n new ListSCMIntegrationsRequest({\n filter: {\n runnerIds: [runnerId],\n },\n }),\n (response) => response.integrations,\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 { data: user } = useAuthenticatedUser();\n return useQuery({\n queryKey: runnerConfigurationQueryKey.listAllRunnerSCMIntegrations(runnerIds),\n queryFn: async () => {\n if (!user) {\n throw new Error(\"User not authenticated\");\n }\n if (runnerIds.length === 0) {\n return [];\n }\n\n const integrations = await autoPaginate(\n (params) => api.runnerConfigurationService.listSCMIntegrations(params),\n new ListSCMIntegrationsRequest({\n // disable filter due to limitation of 25 on the backend\n // and apply filter in the client\n // filter: {\n // runnerIds,\n // },\n }),\n (response) => response.integrations,\n ).then((integrations) => integrations.filter((i) => runnerIds.includes(i.runnerId)));\n\n return integrations || [];\n },\n enabled: !!user,\n staleTime: 500,\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 autoPaginate(\n (params) => api.runnerConfigurationService.listEnvironmentClasses(params),\n new ListEnvironmentClassesRequest({ filter: { runnerIds: [runnerId] } }),\n (response) => response.environmentClasses,\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 =\n 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(\n runnerConfigurationQueryKey.listRunnerSCMIntegrations(runnerId),\n (old?: SCMIntegration[]) => 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 { autoPaginate } from \"@/queries/pagination\";\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 { RunnerKind, type RunnerProvider } from \"gitpod-next-api/gitpod/v1/runner_configuration_pb\";\nimport {\n type CheckAuthenticationForHostResponse_AuthenticationMethodPersonalAccessToken,\n CreateRunnerPolicyRequest,\n DeleteRunnerPolicyRequest,\n ListRunnerPoliciesRequest,\n ListRunnersRequest,\n ListRunnersRequest_Filter,\n ParseContextURLPreconditionFailureDetails,\n type Runner,\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 PlainAuthenticationMethodPersonalAccessToken =\n PlainMessage;\n\nexport type AuthenticatedWithRunnerResponse =\n | { type: \"Authenticated\" }\n | {\n type: \"AuthenticationRequired\";\n url: string;\n patAuth?: PlainAuthenticationMethodPersonalAccessToken;\n scmId: string;\n };\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 const plainResponse = toPlainMessage(response);\n return {\n type: \"AuthenticationRequired\",\n url: plainResponse.authenticationUrl,\n patAuth: plainResponse.supportsPat,\n scmId: plainResponse.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 provider?: RunnerProvider;\n};\n\nexport const useListRunners = ({ kind, creatorId, provider }: UseListRunnersParams) => {\n const api = useGitpodAPI();\n const { data: user } = useAuthenticatedUser();\n\n const query = useQuery({\n queryKey: runnerQueryKey.list({ kind, creatorId, provider }),\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 providers: provider ? [provider] : undefined,\n }),\n });\n const runners = await autoPaginate(\n (params) => api.runnerService.listRunners(params),\n request,\n (response) => response.runners,\n );\n\n return runners.map(toPlainRunner);\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 autoPaginate(\n (params) => api.runnerService.listRunners(params),\n new ListRunnersRequest({\n filter: new ListRunnersRequest_Filter({\n kinds: [RunnerKind.LOCAL_CONFIGURATION],\n }),\n }),\n (response) => response.runners,\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, provider }: { name: string; region?: string; provider: RunnerProvider }) => {\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 provider,\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 useCreateRunnerExchangeToken = () => {\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 { exchangeToken } = await api.runnerService.createRunnerToken({\n runnerId: runnerId,\n });\n\n return {\n exchangeToken,\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 = await autoPaginate(\n (params) => api.runnerService.listRunnerPolicies(params),\n new ListRunnerPoliciesRequest({\n runnerId: runnerId,\n }),\n (response) => response.policies,\n );\n\n return {\n policies: policies.map(toPlainRunnerPolicy),\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