From 472b68ba721eea77e473796fc05386f4aaf9cd41 Mon Sep 17 00:00:00 2001 From: Jim Wordelman Date: Sun, 24 May 2026 08:16:03 -0700 Subject: [PATCH] feat(beads): emit hqstore backstop leak events --- cmd/gc/dashboard/web/src/generated/index.ts | 2 +- .../dashboard/web/src/generated/schema.d.ts | 63 +++++- .../dashboard/web/src/generated/types.gen.ts | 54 ++++- docs/schema/openapi.json | 137 +++++++++++- docs/schema/openapi.txt | 137 +++++++++++- internal/api/genclient/client_gen.go | 126 +++++++++++ internal/api/openapi.json | 137 +++++++++++- internal/beads/hqstore_ttl.go | 119 ++++++++++- internal/beads/hqstore_ttl_internal_test.go | 200 ++++++++++++++++++ internal/events/events.go | 9 +- internal/events/payloads.go | 17 ++ 11 files changed, 978 insertions(+), 23 deletions(-) create mode 100644 internal/beads/hqstore_ttl_internal_test.go diff --git a/cmd/gc/dashboard/web/src/generated/index.ts b/cmd/gc/dashboard/web/src/generated/index.ts index 17904fdbe37..b63571b2e4d 100644 --- a/cmd/gc/dashboard/web/src/generated/index.ts +++ b/cmd/gc/dashboard/web/src/generated/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts export { createAgent, createBead, createConvoy, createProvider, createRig, createSession, deleteV0CityByCityNameAgentByBase, deleteV0CityByCityNameAgentByDirByBase, deleteV0CityByCityNameBeadById, deleteV0CityByCityNameConvoyById, deleteV0CityByCityNameExtmsgAdapters, deleteV0CityByCityNameExtmsgParticipants, deleteV0CityByCityNameMailById, deleteV0CityByCityNamePatchesAgentByBase, deleteV0CityByCityNamePatchesAgentByDirByBase, deleteV0CityByCityNamePatchesProviderByName, deleteV0CityByCityNamePatchesRigByName, deleteV0CityByCityNameProviderByName, deleteV0CityByCityNameRigByName, deleteV0CityByCityNameWorkflowByWorkflowId, emitEvent, ensureExtmsgGroup, getHealth, getV0Cities, getV0CityByCityName, getV0CityByCityNameAgentByBase, getV0CityByCityNameAgentByBaseOutput, getV0CityByCityNameAgentByDirByBase, getV0CityByCityNameAgentByDirByBaseOutput, getV0CityByCityNameAgents, getV0CityByCityNameBeadById, getV0CityByCityNameBeadByIdDeps, getV0CityByCityNameBeads, getV0CityByCityNameBeadsGraphByRootId, getV0CityByCityNameBeadsReady, getV0CityByCityNameConfig, getV0CityByCityNameConfigExplain, getV0CityByCityNameConfigValidate, getV0CityByCityNameConvoyById, getV0CityByCityNameConvoyByIdCheck, getV0CityByCityNameConvoys, getV0CityByCityNameEvents, getV0CityByCityNameExtmsgAdapters, getV0CityByCityNameExtmsgBindings, getV0CityByCityNameExtmsgGroups, getV0CityByCityNameExtmsgTranscript, getV0CityByCityNameFormulaByName, getV0CityByCityNameFormulas, getV0CityByCityNameFormulasByName, getV0CityByCityNameFormulasByNameRuns, getV0CityByCityNameFormulasFeed, getV0CityByCityNameHealth, getV0CityByCityNameMail, getV0CityByCityNameMailById, getV0CityByCityNameMailCount, getV0CityByCityNameMailThreadById, getV0CityByCityNameOrderByName, getV0CityByCityNameOrderHistoryByBeadId, getV0CityByCityNameOrders, getV0CityByCityNameOrdersCheck, getV0CityByCityNameOrdersFeed, getV0CityByCityNameOrdersHistory, getV0CityByCityNamePacks, getV0CityByCityNamePatchesAgentByBase, getV0CityByCityNamePatchesAgentByDirByBase, getV0CityByCityNamePatchesAgents, getV0CityByCityNamePatchesProviderByName, getV0CityByCityNamePatchesProviders, getV0CityByCityNamePatchesRigByName, getV0CityByCityNamePatchesRigs, getV0CityByCityNameProviderByName, getV0CityByCityNameProviderReadiness, getV0CityByCityNameProviders, getV0CityByCityNameProvidersPublic, getV0CityByCityNameReadiness, getV0CityByCityNameRigByName, getV0CityByCityNameRigs, getV0CityByCityNameServiceByName, getV0CityByCityNameServices, getV0CityByCityNameSessionById, getV0CityByCityNameSessionByIdAgents, getV0CityByCityNameSessionByIdAgentsByAgentId, getV0CityByCityNameSessionByIdPending, getV0CityByCityNameSessionByIdTranscript, getV0CityByCityNameSessions, getV0CityByCityNameStatus, getV0CityByCityNameWorkflowByWorkflowId, getV0Events, getV0ProviderReadiness, getV0Readiness, type Options, patchV0CityByCityName, patchV0CityByCityNameAgentByBase, patchV0CityByCityNameAgentByDirByBase, patchV0CityByCityNameBeadById, patchV0CityByCityNameProviderByName, patchV0CityByCityNameRigByName, patchV0CityByCityNameSessionById, postV0City, postV0CityByCityNameAgentByBaseByAction, postV0CityByCityNameAgentByDirByBaseByAction, postV0CityByCityNameBeadByIdAssign, postV0CityByCityNameBeadByIdClose, postV0CityByCityNameBeadByIdReopen, postV0CityByCityNameBeadByIdUpdate, postV0CityByCityNameConvoyByIdAdd, postV0CityByCityNameConvoyByIdClose, postV0CityByCityNameConvoyByIdRemove, postV0CityByCityNameExtmsgBind, postV0CityByCityNameExtmsgInbound, postV0CityByCityNameExtmsgOutbound, postV0CityByCityNameExtmsgParticipants, postV0CityByCityNameExtmsgTranscriptAck, postV0CityByCityNameExtmsgUnbind, postV0CityByCityNameFormulasByNamePreview, postV0CityByCityNameMailByIdArchive, postV0CityByCityNameMailByIdMarkUnread, postV0CityByCityNameMailByIdRead, postV0CityByCityNameOrderByNameDisable, postV0CityByCityNameOrderByNameEnable, postV0CityByCityNameRigByNameByAction, postV0CityByCityNameServiceByNameRestart, postV0CityByCityNameSessionByIdClose, postV0CityByCityNameSessionByIdKill, postV0CityByCityNameSessionByIdPermissionMode, postV0CityByCityNameSessionByIdRename, postV0CityByCityNameSessionByIdStop, postV0CityByCityNameSessionByIdSuspend, postV0CityByCityNameSessionByIdWake, postV0CityByCityNameSling, postV0CityByCityNameUnregister, putV0CityByCityNamePatchesAgents, putV0CityByCityNamePatchesProviders, putV0CityByCityNamePatchesRigs, registerExtmsgAdapter, replyMail, respondSession, rotateEvents, sendMail, sendSessionMessage, streamAgentOutput, streamAgentOutputQualified, streamEvents, streamSession, streamSupervisorEvents, submitSession } from './sdk.gen'; -export type { AdapterCapabilities, AdapterEventPayload, AgentCreatedOutputBody, AgentCreateInputBody, AgentMapping, AgentOutputResponse, AgentPatch, AgentPatchSetInputBody, AgentResponse, AgentUpdateInputBody, AgentUpdateQualifiedInputBody, AnnotatedAgentResponse, AnnotatedProviderResponse, AsyncAcceptedBody, AsyncAcceptedResponse, Bead, BeadAssignInputBody, BeadCreateInputBody, BeadDepsResponse, BeadEventPayload, BeadGraphResponse, BeadUpdateBody, BindingStatus, BoundEventPayload, CityCreateRequest, CityCreateSucceededPayload, CityGetResponse, CityInfo, CityLifecyclePayload, CityPatchInputBody, CityUnregisterSucceededPayload, ClientOptions, ConfigAgentResponse, ConfigExplainPatches, ConfigExplainResponse, ConfigPatchesResponse, ConfigResponse, ConfigRigResponse, ConfigValidateOutputBody, ConversationGroupParticipant, ConversationGroupRecord, ConversationKind, ConversationRef, ConversationTranscriptRecord, ConvoyAddInputBody, ConvoyCheckResponse, ConvoyCreateInputBody, ConvoyGetResponse, ConvoyProgress, ConvoyRemoveInputBody, CreateAgentData, CreateAgentError, CreateAgentErrors, CreateAgentResponse, CreateAgentResponses, CreateBeadData, CreateBeadError, CreateBeadErrors, CreateBeadResponse, CreateBeadResponses, CreateConvoyData, CreateConvoyError, CreateConvoyErrors, CreateConvoyResponse, CreateConvoyResponses, CreateProviderData, CreateProviderError, CreateProviderErrors, CreateProviderResponse, CreateProviderResponses, CreateRigData, CreateRigError, CreateRigErrors, CreateRigResponse, CreateRigResponses, CreateSessionData, CreateSessionError, CreateSessionErrors, CreateSessionResponse, CreateSessionResponses, DeleteV0CityByCityNameAgentByBaseData, DeleteV0CityByCityNameAgentByBaseError, DeleteV0CityByCityNameAgentByBaseErrors, DeleteV0CityByCityNameAgentByBaseResponse, DeleteV0CityByCityNameAgentByBaseResponses, DeleteV0CityByCityNameAgentByDirByBaseData, DeleteV0CityByCityNameAgentByDirByBaseError, DeleteV0CityByCityNameAgentByDirByBaseErrors, DeleteV0CityByCityNameAgentByDirByBaseResponse, DeleteV0CityByCityNameAgentByDirByBaseResponses, DeleteV0CityByCityNameBeadByIdData, DeleteV0CityByCityNameBeadByIdError, DeleteV0CityByCityNameBeadByIdErrors, DeleteV0CityByCityNameBeadByIdResponse, DeleteV0CityByCityNameBeadByIdResponses, DeleteV0CityByCityNameConvoyByIdData, DeleteV0CityByCityNameConvoyByIdError, DeleteV0CityByCityNameConvoyByIdErrors, DeleteV0CityByCityNameConvoyByIdResponse, DeleteV0CityByCityNameConvoyByIdResponses, DeleteV0CityByCityNameExtmsgAdaptersData, DeleteV0CityByCityNameExtmsgAdaptersError, DeleteV0CityByCityNameExtmsgAdaptersErrors, DeleteV0CityByCityNameExtmsgAdaptersResponse, DeleteV0CityByCityNameExtmsgAdaptersResponses, DeleteV0CityByCityNameExtmsgParticipantsData, DeleteV0CityByCityNameExtmsgParticipantsError, DeleteV0CityByCityNameExtmsgParticipantsErrors, DeleteV0CityByCityNameExtmsgParticipantsResponse, DeleteV0CityByCityNameExtmsgParticipantsResponses, DeleteV0CityByCityNameMailByIdData, DeleteV0CityByCityNameMailByIdError, DeleteV0CityByCityNameMailByIdErrors, DeleteV0CityByCityNameMailByIdResponse, DeleteV0CityByCityNameMailByIdResponses, DeleteV0CityByCityNamePatchesAgentByBaseData, DeleteV0CityByCityNamePatchesAgentByBaseError, DeleteV0CityByCityNamePatchesAgentByBaseErrors, DeleteV0CityByCityNamePatchesAgentByBaseResponse, DeleteV0CityByCityNamePatchesAgentByBaseResponses, DeleteV0CityByCityNamePatchesAgentByDirByBaseData, DeleteV0CityByCityNamePatchesAgentByDirByBaseError, DeleteV0CityByCityNamePatchesAgentByDirByBaseErrors, DeleteV0CityByCityNamePatchesAgentByDirByBaseResponse, DeleteV0CityByCityNamePatchesAgentByDirByBaseResponses, DeleteV0CityByCityNamePatchesProviderByNameData, DeleteV0CityByCityNamePatchesProviderByNameError, DeleteV0CityByCityNamePatchesProviderByNameErrors, DeleteV0CityByCityNamePatchesProviderByNameResponse, DeleteV0CityByCityNamePatchesProviderByNameResponses, DeleteV0CityByCityNamePatchesRigByNameData, DeleteV0CityByCityNamePatchesRigByNameError, DeleteV0CityByCityNamePatchesRigByNameErrors, DeleteV0CityByCityNamePatchesRigByNameResponse, DeleteV0CityByCityNamePatchesRigByNameResponses, DeleteV0CityByCityNameProviderByNameData, DeleteV0CityByCityNameProviderByNameError, DeleteV0CityByCityNameProviderByNameErrors, DeleteV0CityByCityNameProviderByNameResponse, DeleteV0CityByCityNameProviderByNameResponses, DeleteV0CityByCityNameRigByNameData, DeleteV0CityByCityNameRigByNameError, DeleteV0CityByCityNameRigByNameErrors, DeleteV0CityByCityNameRigByNameResponse, DeleteV0CityByCityNameRigByNameResponses, DeleteV0CityByCityNameWorkflowByWorkflowIdData, DeleteV0CityByCityNameWorkflowByWorkflowIdError, DeleteV0CityByCityNameWorkflowByWorkflowIdErrors, DeleteV0CityByCityNameWorkflowByWorkflowIdResponse, DeleteV0CityByCityNameWorkflowByWorkflowIdResponses, DeliveryContextRecord, Dep, EmitEventData, EmitEventError, EmitEventErrors, EmitEventResponse, EmitEventResponses, EnsureExtmsgGroupData, EnsureExtmsgGroupError, EnsureExtmsgGroupErrors, EnsureExtmsgGroupResponse, EnsureExtmsgGroupResponses, ErrorDetail, ErrorModel, EventEmitOutputBody, EventEmitRequest, EventPayload, EventRotateAnchor, EventRotateArchive, EventRotateResponse, EventStreamEnvelope, ExternalActor, ExternalAttachment, ExternalInboundMessage, ExtmsgAdapterInfo, ExtMsgAdapterRegisterInputBody, ExtMsgAdapterRegisterOutputBody, ExtMsgAdapterUnregisterInputBody, ExtMsgBindInputBody, ExtMsgGroupEnsureInputBody, ExtMsgInboundInputBody, ExtMsgOutboundInputBody, ExtMsgParticipantRemoveInputBody, ExtMsgParticipantUpsertInputBody, ExtMsgTranscriptAckInputBody, ExtMsgUnbindBody, ExtMsgUnbindInputBody, FanoutPolicy, FormulaDetailResponse, FormulaFeedBody, FormulaListBody, FormulaPreviewBody, FormulaPreviewEdgeResponse, FormulaPreviewNodeResponse, FormulaPreviewResponse, FormulaRecentRunResponse, FormulaRunsResponse, FormulaStepResponse, FormulaSummaryResponse, FormulaVarDefResponse, GetHealthData, GetHealthError, GetHealthErrors, GetHealthResponse, GetHealthResponses, GetV0CitiesData, GetV0CitiesError, GetV0CitiesErrors, GetV0CitiesResponse, GetV0CitiesResponses, GetV0CityByCityNameAgentByBaseData, GetV0CityByCityNameAgentByBaseError, GetV0CityByCityNameAgentByBaseErrors, GetV0CityByCityNameAgentByBaseOutputData, GetV0CityByCityNameAgentByBaseOutputError, GetV0CityByCityNameAgentByBaseOutputErrors, GetV0CityByCityNameAgentByBaseOutputResponse, GetV0CityByCityNameAgentByBaseOutputResponses, GetV0CityByCityNameAgentByBaseResponse, GetV0CityByCityNameAgentByBaseResponses, GetV0CityByCityNameAgentByDirByBaseData, GetV0CityByCityNameAgentByDirByBaseError, GetV0CityByCityNameAgentByDirByBaseErrors, GetV0CityByCityNameAgentByDirByBaseOutputData, GetV0CityByCityNameAgentByDirByBaseOutputError, GetV0CityByCityNameAgentByDirByBaseOutputErrors, GetV0CityByCityNameAgentByDirByBaseOutputResponse, GetV0CityByCityNameAgentByDirByBaseOutputResponses, GetV0CityByCityNameAgentByDirByBaseResponse, GetV0CityByCityNameAgentByDirByBaseResponses, GetV0CityByCityNameAgentsData, GetV0CityByCityNameAgentsError, GetV0CityByCityNameAgentsErrors, GetV0CityByCityNameAgentsResponse, GetV0CityByCityNameAgentsResponses, GetV0CityByCityNameBeadByIdData, GetV0CityByCityNameBeadByIdDepsData, GetV0CityByCityNameBeadByIdDepsError, GetV0CityByCityNameBeadByIdDepsErrors, GetV0CityByCityNameBeadByIdDepsResponse, GetV0CityByCityNameBeadByIdDepsResponses, GetV0CityByCityNameBeadByIdError, GetV0CityByCityNameBeadByIdErrors, GetV0CityByCityNameBeadByIdResponse, GetV0CityByCityNameBeadByIdResponses, GetV0CityByCityNameBeadsData, GetV0CityByCityNameBeadsError, GetV0CityByCityNameBeadsErrors, GetV0CityByCityNameBeadsGraphByRootIdData, GetV0CityByCityNameBeadsGraphByRootIdError, GetV0CityByCityNameBeadsGraphByRootIdErrors, GetV0CityByCityNameBeadsGraphByRootIdResponse, GetV0CityByCityNameBeadsGraphByRootIdResponses, GetV0CityByCityNameBeadsReadyData, GetV0CityByCityNameBeadsReadyError, GetV0CityByCityNameBeadsReadyErrors, GetV0CityByCityNameBeadsReadyResponse, GetV0CityByCityNameBeadsReadyResponses, GetV0CityByCityNameBeadsResponse, GetV0CityByCityNameBeadsResponses, GetV0CityByCityNameConfigData, GetV0CityByCityNameConfigError, GetV0CityByCityNameConfigErrors, GetV0CityByCityNameConfigExplainData, GetV0CityByCityNameConfigExplainError, GetV0CityByCityNameConfigExplainErrors, GetV0CityByCityNameConfigExplainResponse, GetV0CityByCityNameConfigExplainResponses, GetV0CityByCityNameConfigResponse, GetV0CityByCityNameConfigResponses, GetV0CityByCityNameConfigValidateData, GetV0CityByCityNameConfigValidateError, GetV0CityByCityNameConfigValidateErrors, GetV0CityByCityNameConfigValidateResponse, GetV0CityByCityNameConfigValidateResponses, GetV0CityByCityNameConvoyByIdCheckData, GetV0CityByCityNameConvoyByIdCheckError, GetV0CityByCityNameConvoyByIdCheckErrors, GetV0CityByCityNameConvoyByIdCheckResponse, GetV0CityByCityNameConvoyByIdCheckResponses, GetV0CityByCityNameConvoyByIdData, GetV0CityByCityNameConvoyByIdError, GetV0CityByCityNameConvoyByIdErrors, GetV0CityByCityNameConvoyByIdResponse, GetV0CityByCityNameConvoyByIdResponses, GetV0CityByCityNameConvoysData, GetV0CityByCityNameConvoysError, GetV0CityByCityNameConvoysErrors, GetV0CityByCityNameConvoysResponse, GetV0CityByCityNameConvoysResponses, GetV0CityByCityNameData, GetV0CityByCityNameError, GetV0CityByCityNameErrors, GetV0CityByCityNameEventsData, GetV0CityByCityNameEventsError, GetV0CityByCityNameEventsErrors, GetV0CityByCityNameEventsResponse, GetV0CityByCityNameEventsResponses, GetV0CityByCityNameExtmsgAdaptersData, GetV0CityByCityNameExtmsgAdaptersError, GetV0CityByCityNameExtmsgAdaptersErrors, GetV0CityByCityNameExtmsgAdaptersResponse, GetV0CityByCityNameExtmsgAdaptersResponses, GetV0CityByCityNameExtmsgBindingsData, GetV0CityByCityNameExtmsgBindingsError, GetV0CityByCityNameExtmsgBindingsErrors, GetV0CityByCityNameExtmsgBindingsResponse, GetV0CityByCityNameExtmsgBindingsResponses, GetV0CityByCityNameExtmsgGroupsData, GetV0CityByCityNameExtmsgGroupsError, GetV0CityByCityNameExtmsgGroupsErrors, GetV0CityByCityNameExtmsgGroupsResponse, GetV0CityByCityNameExtmsgGroupsResponses, GetV0CityByCityNameExtmsgTranscriptData, GetV0CityByCityNameExtmsgTranscriptError, GetV0CityByCityNameExtmsgTranscriptErrors, GetV0CityByCityNameExtmsgTranscriptResponse, GetV0CityByCityNameExtmsgTranscriptResponses, GetV0CityByCityNameFormulaByNameData, GetV0CityByCityNameFormulaByNameError, GetV0CityByCityNameFormulaByNameErrors, GetV0CityByCityNameFormulaByNameResponse, GetV0CityByCityNameFormulaByNameResponses, GetV0CityByCityNameFormulasByNameData, GetV0CityByCityNameFormulasByNameError, GetV0CityByCityNameFormulasByNameErrors, GetV0CityByCityNameFormulasByNameResponse, GetV0CityByCityNameFormulasByNameResponses, GetV0CityByCityNameFormulasByNameRunsData, GetV0CityByCityNameFormulasByNameRunsError, GetV0CityByCityNameFormulasByNameRunsErrors, GetV0CityByCityNameFormulasByNameRunsResponse, GetV0CityByCityNameFormulasByNameRunsResponses, GetV0CityByCityNameFormulasData, GetV0CityByCityNameFormulasError, GetV0CityByCityNameFormulasErrors, GetV0CityByCityNameFormulasFeedData, GetV0CityByCityNameFormulasFeedError, GetV0CityByCityNameFormulasFeedErrors, GetV0CityByCityNameFormulasFeedResponse, GetV0CityByCityNameFormulasFeedResponses, GetV0CityByCityNameFormulasResponse, GetV0CityByCityNameFormulasResponses, GetV0CityByCityNameHealthData, GetV0CityByCityNameHealthError, GetV0CityByCityNameHealthErrors, GetV0CityByCityNameHealthResponse, GetV0CityByCityNameHealthResponses, GetV0CityByCityNameMailByIdData, GetV0CityByCityNameMailByIdError, GetV0CityByCityNameMailByIdErrors, GetV0CityByCityNameMailByIdResponse, GetV0CityByCityNameMailByIdResponses, GetV0CityByCityNameMailCountData, GetV0CityByCityNameMailCountError, GetV0CityByCityNameMailCountErrors, GetV0CityByCityNameMailCountResponse, GetV0CityByCityNameMailCountResponses, GetV0CityByCityNameMailData, GetV0CityByCityNameMailError, GetV0CityByCityNameMailErrors, GetV0CityByCityNameMailResponse, GetV0CityByCityNameMailResponses, GetV0CityByCityNameMailThreadByIdData, GetV0CityByCityNameMailThreadByIdError, GetV0CityByCityNameMailThreadByIdErrors, GetV0CityByCityNameMailThreadByIdResponse, GetV0CityByCityNameMailThreadByIdResponses, GetV0CityByCityNameOrderByNameData, GetV0CityByCityNameOrderByNameError, GetV0CityByCityNameOrderByNameErrors, GetV0CityByCityNameOrderByNameResponse, GetV0CityByCityNameOrderByNameResponses, GetV0CityByCityNameOrderHistoryByBeadIdData, GetV0CityByCityNameOrderHistoryByBeadIdError, GetV0CityByCityNameOrderHistoryByBeadIdErrors, GetV0CityByCityNameOrderHistoryByBeadIdResponse, GetV0CityByCityNameOrderHistoryByBeadIdResponses, GetV0CityByCityNameOrdersCheckData, GetV0CityByCityNameOrdersCheckError, GetV0CityByCityNameOrdersCheckErrors, GetV0CityByCityNameOrdersCheckResponse, GetV0CityByCityNameOrdersCheckResponses, GetV0CityByCityNameOrdersData, GetV0CityByCityNameOrdersError, GetV0CityByCityNameOrdersErrors, GetV0CityByCityNameOrdersFeedData, GetV0CityByCityNameOrdersFeedError, GetV0CityByCityNameOrdersFeedErrors, GetV0CityByCityNameOrdersFeedResponse, GetV0CityByCityNameOrdersFeedResponses, GetV0CityByCityNameOrdersHistoryData, GetV0CityByCityNameOrdersHistoryError, GetV0CityByCityNameOrdersHistoryErrors, GetV0CityByCityNameOrdersHistoryResponse, GetV0CityByCityNameOrdersHistoryResponses, GetV0CityByCityNameOrdersResponse, GetV0CityByCityNameOrdersResponses, GetV0CityByCityNamePacksData, GetV0CityByCityNamePacksError, GetV0CityByCityNamePacksErrors, GetV0CityByCityNamePacksResponse, GetV0CityByCityNamePacksResponses, GetV0CityByCityNamePatchesAgentByBaseData, GetV0CityByCityNamePatchesAgentByBaseError, GetV0CityByCityNamePatchesAgentByBaseErrors, GetV0CityByCityNamePatchesAgentByBaseResponse, GetV0CityByCityNamePatchesAgentByBaseResponses, GetV0CityByCityNamePatchesAgentByDirByBaseData, GetV0CityByCityNamePatchesAgentByDirByBaseError, GetV0CityByCityNamePatchesAgentByDirByBaseErrors, GetV0CityByCityNamePatchesAgentByDirByBaseResponse, GetV0CityByCityNamePatchesAgentByDirByBaseResponses, GetV0CityByCityNamePatchesAgentsData, GetV0CityByCityNamePatchesAgentsError, GetV0CityByCityNamePatchesAgentsErrors, GetV0CityByCityNamePatchesAgentsResponse, GetV0CityByCityNamePatchesAgentsResponses, GetV0CityByCityNamePatchesProviderByNameData, GetV0CityByCityNamePatchesProviderByNameError, GetV0CityByCityNamePatchesProviderByNameErrors, GetV0CityByCityNamePatchesProviderByNameResponse, GetV0CityByCityNamePatchesProviderByNameResponses, GetV0CityByCityNamePatchesProvidersData, GetV0CityByCityNamePatchesProvidersError, GetV0CityByCityNamePatchesProvidersErrors, GetV0CityByCityNamePatchesProvidersResponse, GetV0CityByCityNamePatchesProvidersResponses, GetV0CityByCityNamePatchesRigByNameData, GetV0CityByCityNamePatchesRigByNameError, GetV0CityByCityNamePatchesRigByNameErrors, GetV0CityByCityNamePatchesRigByNameResponse, GetV0CityByCityNamePatchesRigByNameResponses, GetV0CityByCityNamePatchesRigsData, GetV0CityByCityNamePatchesRigsError, GetV0CityByCityNamePatchesRigsErrors, GetV0CityByCityNamePatchesRigsResponse, GetV0CityByCityNamePatchesRigsResponses, GetV0CityByCityNameProviderByNameData, GetV0CityByCityNameProviderByNameError, GetV0CityByCityNameProviderByNameErrors, GetV0CityByCityNameProviderByNameResponse, GetV0CityByCityNameProviderByNameResponses, GetV0CityByCityNameProviderReadinessData, GetV0CityByCityNameProviderReadinessError, GetV0CityByCityNameProviderReadinessErrors, GetV0CityByCityNameProviderReadinessResponse, GetV0CityByCityNameProviderReadinessResponses, GetV0CityByCityNameProvidersData, GetV0CityByCityNameProvidersError, GetV0CityByCityNameProvidersErrors, GetV0CityByCityNameProvidersPublicData, GetV0CityByCityNameProvidersPublicError, GetV0CityByCityNameProvidersPublicErrors, GetV0CityByCityNameProvidersPublicResponse, GetV0CityByCityNameProvidersPublicResponses, GetV0CityByCityNameProvidersResponse, GetV0CityByCityNameProvidersResponses, GetV0CityByCityNameReadinessData, GetV0CityByCityNameReadinessError, GetV0CityByCityNameReadinessErrors, GetV0CityByCityNameReadinessResponse, GetV0CityByCityNameReadinessResponses, GetV0CityByCityNameResponse, GetV0CityByCityNameResponses, GetV0CityByCityNameRigByNameData, GetV0CityByCityNameRigByNameError, GetV0CityByCityNameRigByNameErrors, GetV0CityByCityNameRigByNameResponse, GetV0CityByCityNameRigByNameResponses, GetV0CityByCityNameRigsData, GetV0CityByCityNameRigsError, GetV0CityByCityNameRigsErrors, GetV0CityByCityNameRigsResponse, GetV0CityByCityNameRigsResponses, GetV0CityByCityNameServiceByNameData, GetV0CityByCityNameServiceByNameError, GetV0CityByCityNameServiceByNameErrors, GetV0CityByCityNameServiceByNameResponse, GetV0CityByCityNameServiceByNameResponses, GetV0CityByCityNameServicesData, GetV0CityByCityNameServicesError, GetV0CityByCityNameServicesErrors, GetV0CityByCityNameServicesResponse, GetV0CityByCityNameServicesResponses, GetV0CityByCityNameSessionByIdAgentsByAgentIdData, GetV0CityByCityNameSessionByIdAgentsByAgentIdError, GetV0CityByCityNameSessionByIdAgentsByAgentIdErrors, GetV0CityByCityNameSessionByIdAgentsByAgentIdResponse, GetV0CityByCityNameSessionByIdAgentsByAgentIdResponses, GetV0CityByCityNameSessionByIdAgentsData, GetV0CityByCityNameSessionByIdAgentsError, GetV0CityByCityNameSessionByIdAgentsErrors, GetV0CityByCityNameSessionByIdAgentsResponse, GetV0CityByCityNameSessionByIdAgentsResponses, GetV0CityByCityNameSessionByIdData, GetV0CityByCityNameSessionByIdError, GetV0CityByCityNameSessionByIdErrors, GetV0CityByCityNameSessionByIdPendingData, GetV0CityByCityNameSessionByIdPendingError, GetV0CityByCityNameSessionByIdPendingErrors, GetV0CityByCityNameSessionByIdPendingResponse, GetV0CityByCityNameSessionByIdPendingResponses, GetV0CityByCityNameSessionByIdResponse, GetV0CityByCityNameSessionByIdResponses, GetV0CityByCityNameSessionByIdTranscriptData, GetV0CityByCityNameSessionByIdTranscriptError, GetV0CityByCityNameSessionByIdTranscriptErrors, GetV0CityByCityNameSessionByIdTranscriptResponse, GetV0CityByCityNameSessionByIdTranscriptResponses, GetV0CityByCityNameSessionsData, GetV0CityByCityNameSessionsError, GetV0CityByCityNameSessionsErrors, GetV0CityByCityNameSessionsResponse, GetV0CityByCityNameSessionsResponses, GetV0CityByCityNameStatusData, GetV0CityByCityNameStatusError, GetV0CityByCityNameStatusErrors, GetV0CityByCityNameStatusResponse, GetV0CityByCityNameStatusResponses, GetV0CityByCityNameWorkflowByWorkflowIdData, GetV0CityByCityNameWorkflowByWorkflowIdError, GetV0CityByCityNameWorkflowByWorkflowIdErrors, GetV0CityByCityNameWorkflowByWorkflowIdResponse, GetV0CityByCityNameWorkflowByWorkflowIdResponses, GetV0EventsData, GetV0EventsError, GetV0EventsErrors, GetV0EventsResponse, GetV0EventsResponses, GetV0ProviderReadinessData, GetV0ProviderReadinessError, GetV0ProviderReadinessErrors, GetV0ProviderReadinessResponse, GetV0ProviderReadinessResponses, GetV0ReadinessData, GetV0ReadinessError, GetV0ReadinessErrors, GetV0ReadinessResponse, GetV0ReadinessResponses, GitStatus, GroupCreatedEventPayload, GroupRouteDecision, HealthOutputBody, HeartbeatEvent, InboundEventPayload, InboundResult, ListBodyAgentPatch, ListBodyAgentResponse, ListBodyBead, ListBodyConversationTranscriptRecord, ListBodyExtmsgAdapterInfo, ListBodyProviderPatch, ListBodyProviderResponse, ListBodyRigPatch, ListBodyRigResponse, ListBodySessionBindingRecord, ListBodySessionResponse, ListBodyStatus, ListBodyWireEvent, LogicalNode, MailCountOutputBody, MailEventPayload, MailListBody, MailReplyInputBody, MailSendInputBody, Message, MonitorFeedItemResponse, NoPayload, OkResponseBody, OkWithIdResponseBody, OptionChoiceDto, OrderCheckListBody, OrderCheckResponse, OrderHistoryDetailResponse, OrderHistoryEntry, OrderHistoryListBody, OrderListBody, OrderResponse, OrdersFeedBody, OutboundEventPayload, OutboundResult, OutputTurn, PackListBody, PackResponse, PaginationInfo, PatchDeletedResponseBody, PatchOkResponseBody, PatchV0CityByCityNameAgentByBaseData, PatchV0CityByCityNameAgentByBaseError, PatchV0CityByCityNameAgentByBaseErrors, PatchV0CityByCityNameAgentByBaseResponse, PatchV0CityByCityNameAgentByBaseResponses, PatchV0CityByCityNameAgentByDirByBaseData, PatchV0CityByCityNameAgentByDirByBaseError, PatchV0CityByCityNameAgentByDirByBaseErrors, PatchV0CityByCityNameAgentByDirByBaseResponse, PatchV0CityByCityNameAgentByDirByBaseResponses, PatchV0CityByCityNameBeadByIdData, PatchV0CityByCityNameBeadByIdError, PatchV0CityByCityNameBeadByIdErrors, PatchV0CityByCityNameBeadByIdResponse, PatchV0CityByCityNameBeadByIdResponses, PatchV0CityByCityNameData, PatchV0CityByCityNameError, PatchV0CityByCityNameErrors, PatchV0CityByCityNameProviderByNameData, PatchV0CityByCityNameProviderByNameError, PatchV0CityByCityNameProviderByNameErrors, PatchV0CityByCityNameProviderByNameResponse, PatchV0CityByCityNameProviderByNameResponses, PatchV0CityByCityNameResponse, PatchV0CityByCityNameResponses, PatchV0CityByCityNameRigByNameData, PatchV0CityByCityNameRigByNameError, PatchV0CityByCityNameRigByNameErrors, PatchV0CityByCityNameRigByNameResponse, PatchV0CityByCityNameRigByNameResponses, PatchV0CityByCityNameSessionByIdData, PatchV0CityByCityNameSessionByIdError, PatchV0CityByCityNameSessionByIdErrors, PatchV0CityByCityNameSessionByIdResponse, PatchV0CityByCityNameSessionByIdResponses, PendingInteraction, PoolOverride, PostV0CityByCityNameAgentByBaseByActionData, PostV0CityByCityNameAgentByBaseByActionError, PostV0CityByCityNameAgentByBaseByActionErrors, PostV0CityByCityNameAgentByBaseByActionResponse, PostV0CityByCityNameAgentByBaseByActionResponses, PostV0CityByCityNameAgentByDirByBaseByActionData, PostV0CityByCityNameAgentByDirByBaseByActionError, PostV0CityByCityNameAgentByDirByBaseByActionErrors, PostV0CityByCityNameAgentByDirByBaseByActionResponse, PostV0CityByCityNameAgentByDirByBaseByActionResponses, PostV0CityByCityNameBeadByIdAssignData, PostV0CityByCityNameBeadByIdAssignError, PostV0CityByCityNameBeadByIdAssignErrors, PostV0CityByCityNameBeadByIdAssignResponse, PostV0CityByCityNameBeadByIdAssignResponses, PostV0CityByCityNameBeadByIdCloseData, PostV0CityByCityNameBeadByIdCloseError, PostV0CityByCityNameBeadByIdCloseErrors, PostV0CityByCityNameBeadByIdCloseResponse, PostV0CityByCityNameBeadByIdCloseResponses, PostV0CityByCityNameBeadByIdReopenData, PostV0CityByCityNameBeadByIdReopenError, PostV0CityByCityNameBeadByIdReopenErrors, PostV0CityByCityNameBeadByIdReopenResponse, PostV0CityByCityNameBeadByIdReopenResponses, PostV0CityByCityNameBeadByIdUpdateData, PostV0CityByCityNameBeadByIdUpdateError, PostV0CityByCityNameBeadByIdUpdateErrors, PostV0CityByCityNameBeadByIdUpdateResponse, PostV0CityByCityNameBeadByIdUpdateResponses, PostV0CityByCityNameConvoyByIdAddData, PostV0CityByCityNameConvoyByIdAddError, PostV0CityByCityNameConvoyByIdAddErrors, PostV0CityByCityNameConvoyByIdAddResponse, PostV0CityByCityNameConvoyByIdAddResponses, PostV0CityByCityNameConvoyByIdCloseData, PostV0CityByCityNameConvoyByIdCloseError, PostV0CityByCityNameConvoyByIdCloseErrors, PostV0CityByCityNameConvoyByIdCloseResponse, PostV0CityByCityNameConvoyByIdCloseResponses, PostV0CityByCityNameConvoyByIdRemoveData, PostV0CityByCityNameConvoyByIdRemoveError, PostV0CityByCityNameConvoyByIdRemoveErrors, PostV0CityByCityNameConvoyByIdRemoveResponse, PostV0CityByCityNameConvoyByIdRemoveResponses, PostV0CityByCityNameExtmsgBindData, PostV0CityByCityNameExtmsgBindError, PostV0CityByCityNameExtmsgBindErrors, PostV0CityByCityNameExtmsgBindResponse, PostV0CityByCityNameExtmsgBindResponses, PostV0CityByCityNameExtmsgInboundData, PostV0CityByCityNameExtmsgInboundError, PostV0CityByCityNameExtmsgInboundErrors, PostV0CityByCityNameExtmsgInboundResponse, PostV0CityByCityNameExtmsgInboundResponses, PostV0CityByCityNameExtmsgOutboundData, PostV0CityByCityNameExtmsgOutboundError, PostV0CityByCityNameExtmsgOutboundErrors, PostV0CityByCityNameExtmsgOutboundResponse, PostV0CityByCityNameExtmsgOutboundResponses, PostV0CityByCityNameExtmsgParticipantsData, PostV0CityByCityNameExtmsgParticipantsError, PostV0CityByCityNameExtmsgParticipantsErrors, PostV0CityByCityNameExtmsgParticipantsResponse, PostV0CityByCityNameExtmsgParticipantsResponses, PostV0CityByCityNameExtmsgTranscriptAckData, PostV0CityByCityNameExtmsgTranscriptAckError, PostV0CityByCityNameExtmsgTranscriptAckErrors, PostV0CityByCityNameExtmsgTranscriptAckResponse, PostV0CityByCityNameExtmsgTranscriptAckResponses, PostV0CityByCityNameExtmsgUnbindData, PostV0CityByCityNameExtmsgUnbindError, PostV0CityByCityNameExtmsgUnbindErrors, PostV0CityByCityNameExtmsgUnbindResponse, PostV0CityByCityNameExtmsgUnbindResponses, PostV0CityByCityNameFormulasByNamePreviewData, PostV0CityByCityNameFormulasByNamePreviewError, PostV0CityByCityNameFormulasByNamePreviewErrors, PostV0CityByCityNameFormulasByNamePreviewResponse, PostV0CityByCityNameFormulasByNamePreviewResponses, PostV0CityByCityNameMailByIdArchiveData, PostV0CityByCityNameMailByIdArchiveError, PostV0CityByCityNameMailByIdArchiveErrors, PostV0CityByCityNameMailByIdArchiveResponse, PostV0CityByCityNameMailByIdArchiveResponses, PostV0CityByCityNameMailByIdMarkUnreadData, PostV0CityByCityNameMailByIdMarkUnreadError, PostV0CityByCityNameMailByIdMarkUnreadErrors, PostV0CityByCityNameMailByIdMarkUnreadResponse, PostV0CityByCityNameMailByIdMarkUnreadResponses, PostV0CityByCityNameMailByIdReadData, PostV0CityByCityNameMailByIdReadError, PostV0CityByCityNameMailByIdReadErrors, PostV0CityByCityNameMailByIdReadResponse, PostV0CityByCityNameMailByIdReadResponses, PostV0CityByCityNameOrderByNameDisableData, PostV0CityByCityNameOrderByNameDisableError, PostV0CityByCityNameOrderByNameDisableErrors, PostV0CityByCityNameOrderByNameDisableResponse, PostV0CityByCityNameOrderByNameDisableResponses, PostV0CityByCityNameOrderByNameEnableData, PostV0CityByCityNameOrderByNameEnableError, PostV0CityByCityNameOrderByNameEnableErrors, PostV0CityByCityNameOrderByNameEnableResponse, PostV0CityByCityNameOrderByNameEnableResponses, PostV0CityByCityNameRigByNameByActionData, PostV0CityByCityNameRigByNameByActionError, PostV0CityByCityNameRigByNameByActionErrors, PostV0CityByCityNameRigByNameByActionResponse, PostV0CityByCityNameRigByNameByActionResponses, PostV0CityByCityNameServiceByNameRestartData, PostV0CityByCityNameServiceByNameRestartError, PostV0CityByCityNameServiceByNameRestartErrors, PostV0CityByCityNameServiceByNameRestartResponse, PostV0CityByCityNameServiceByNameRestartResponses, PostV0CityByCityNameSessionByIdCloseData, PostV0CityByCityNameSessionByIdCloseError, PostV0CityByCityNameSessionByIdCloseErrors, PostV0CityByCityNameSessionByIdCloseResponse, PostV0CityByCityNameSessionByIdCloseResponses, PostV0CityByCityNameSessionByIdKillData, PostV0CityByCityNameSessionByIdKillError, PostV0CityByCityNameSessionByIdKillErrors, PostV0CityByCityNameSessionByIdKillResponse, PostV0CityByCityNameSessionByIdKillResponses, PostV0CityByCityNameSessionByIdPermissionModeData, PostV0CityByCityNameSessionByIdPermissionModeError, PostV0CityByCityNameSessionByIdPermissionModeErrors, PostV0CityByCityNameSessionByIdPermissionModeResponse, PostV0CityByCityNameSessionByIdPermissionModeResponses, PostV0CityByCityNameSessionByIdRenameData, PostV0CityByCityNameSessionByIdRenameError, PostV0CityByCityNameSessionByIdRenameErrors, PostV0CityByCityNameSessionByIdRenameResponse, PostV0CityByCityNameSessionByIdRenameResponses, PostV0CityByCityNameSessionByIdStopData, PostV0CityByCityNameSessionByIdStopError, PostV0CityByCityNameSessionByIdStopErrors, PostV0CityByCityNameSessionByIdStopResponse, PostV0CityByCityNameSessionByIdStopResponses, PostV0CityByCityNameSessionByIdSuspendData, PostV0CityByCityNameSessionByIdSuspendError, PostV0CityByCityNameSessionByIdSuspendErrors, PostV0CityByCityNameSessionByIdSuspendResponse, PostV0CityByCityNameSessionByIdSuspendResponses, PostV0CityByCityNameSessionByIdWakeData, PostV0CityByCityNameSessionByIdWakeError, PostV0CityByCityNameSessionByIdWakeErrors, PostV0CityByCityNameSessionByIdWakeResponse, PostV0CityByCityNameSessionByIdWakeResponses, PostV0CityByCityNameSlingData, PostV0CityByCityNameSlingError, PostV0CityByCityNameSlingErrors, PostV0CityByCityNameSlingResponse, PostV0CityByCityNameSlingResponses, PostV0CityByCityNameUnregisterData, PostV0CityByCityNameUnregisterError, PostV0CityByCityNameUnregisterErrors, PostV0CityByCityNameUnregisterResponse, PostV0CityByCityNameUnregisterResponses, PostV0CityData, PostV0CityError, PostV0CityErrors, PostV0CityResponse, PostV0CityResponses, ProjectIdentityStampedPayload, ProviderCreatedOutputBody, ProviderCreateInputBody, ProviderOptionDto, ProviderPatch, ProviderPatchSetInputBody, ProviderPublicListBody, ProviderPublicResponse, ProviderReadiness, ProviderReadinessResponse, ProviderResponse, ProviderSpecJson, ProviderUpdateInputBody, PublishReceipt, PutV0CityByCityNamePatchesAgentsData, PutV0CityByCityNamePatchesAgentsError, PutV0CityByCityNamePatchesAgentsErrors, PutV0CityByCityNamePatchesAgentsResponse, PutV0CityByCityNamePatchesAgentsResponses, PutV0CityByCityNamePatchesProvidersData, PutV0CityByCityNamePatchesProvidersError, PutV0CityByCityNamePatchesProvidersErrors, PutV0CityByCityNamePatchesProvidersResponse, PutV0CityByCityNamePatchesProvidersResponses, PutV0CityByCityNamePatchesRigsData, PutV0CityByCityNamePatchesRigsError, PutV0CityByCityNamePatchesRigsErrors, PutV0CityByCityNamePatchesRigsResponse, PutV0CityByCityNamePatchesRigsResponses, ReadinessItem, ReadinessResponse, RegisterExtmsgAdapterData, RegisterExtmsgAdapterError, RegisterExtmsgAdapterErrors, RegisterExtmsgAdapterResponse, RegisterExtmsgAdapterResponses, ReplyMailData, ReplyMailError, ReplyMailErrors, ReplyMailResponse, ReplyMailResponses, RequestFailedPayload, RespondSessionData, RespondSessionError, RespondSessionErrors, RespondSessionResponse, RespondSessionResponses, RigActionBody, RigCreatedOutputBody, RigCreateInputBody, RigPatch, RigPatchSetInputBody, RigResponse, RigUpdateInputBody, RotatedPayload, RotateEventsData, RotateEventsError, RotateEventsErrors, RotateEventsResponse, RotateEventsResponses, ScopeGroup, SendMailData, SendMailError, SendMailErrors, SendMailResponse, SendMailResponses, SendSessionMessageData, SendSessionMessageError, SendSessionMessageErrors, SendSessionMessageResponse, SendSessionMessageResponses, ServiceRestartOutputBody, SessionActivityEvent, SessionAgentGetResponse, SessionAgentListResponse, SessionBindingRecord, SessionCreateBody, SessionCreateSucceededPayload, SessionDrainAckedWithAssignedWorkPayload, SessionInfo, SessionLifecyclePayload, SessionMessageInputBody, SessionMessageSucceededPayload, SessionPatchBody, SessionPendingResponse, SessionPermissionModeBody, SessionRawMessageFrame, SessionRenameInputBody, SessionRespondInputBody, SessionRespondOutputBody, SessionResponse, SessionStreamCommonEvent, SessionStreamMessageEvent, SessionStreamRawMessageEvent, SessionSubmitInputBody, SessionSubmitSucceededPayload, SessionTranscriptGetResponse, SlingInputBody, SlingResponse, Status, StatusAgentCounts, StatusAgentDetail, StatusBody, StatusMailCounts, StatusNamedSessionDetail, StatusRigCounts, StatusRigDetail, StatusSessionCountsDetail, StatusStoreHealth, StatusWorkCounts, StoreMaintenanceDonePayload, StoreMaintenanceFailedPayload, StreamAgentOutputData, StreamAgentOutputError, StreamAgentOutputErrors, StreamAgentOutputQualifiedData, StreamAgentOutputQualifiedError, StreamAgentOutputQualifiedErrors, StreamAgentOutputQualifiedResponse, StreamAgentOutputQualifiedResponses, StreamAgentOutputResponse, StreamAgentOutputResponses, StreamEventsData, StreamEventsError, StreamEventsErrors, StreamEventsResponse, StreamEventsResponses, StreamSessionData, StreamSessionError, StreamSessionErrors, StreamSessionResponse, StreamSessionResponses, StreamSupervisorEventsData, StreamSupervisorEventsError, StreamSupervisorEventsErrors, StreamSupervisorEventsResponse, StreamSupervisorEventsResponses, SubmissionCapabilities, SubmitIntent, SubmitSessionData, SubmitSessionError, SubmitSessionErrors, SubmitSessionResponse, SubmitSessionResponses, SupervisorCitiesOutputBody, SupervisorEventListOutputBody, SupervisorFsPressureSkippedTickPayload, SupervisorHealthOutputBody, SupervisorShutdownPayload, SupervisorStartup, TaggedEventStreamEnvelope, TranscriptMessageKind, TranscriptProvenance, TypedEventStreamEnvelope, TypedEventStreamEnvelopeBeadClosed, TypedEventStreamEnvelopeBeadCreated, TypedEventStreamEnvelopeBeadUpdated, TypedEventStreamEnvelopeCityCreated, TypedEventStreamEnvelopeCityResumed, TypedEventStreamEnvelopeCitySuspended, TypedEventStreamEnvelopeCityUnregisterRequested, TypedEventStreamEnvelopeControllerStarted, TypedEventStreamEnvelopeControllerStopped, TypedEventStreamEnvelopeConvoyClosed, TypedEventStreamEnvelopeConvoyCreated, TypedEventStreamEnvelopeCustom, TypedEventStreamEnvelopeEventsRotated, TypedEventStreamEnvelopeExtmsgAdapterAdded, TypedEventStreamEnvelopeExtmsgAdapterRemoved, TypedEventStreamEnvelopeExtmsgBound, TypedEventStreamEnvelopeExtmsgGroupCreated, TypedEventStreamEnvelopeExtmsgInbound, TypedEventStreamEnvelopeExtmsgOutbound, TypedEventStreamEnvelopeExtmsgUnbound, TypedEventStreamEnvelopeGcStoreMaintenanceDone, TypedEventStreamEnvelopeGcStoreMaintenanceFailed, TypedEventStreamEnvelopeMailArchived, TypedEventStreamEnvelopeMailDeleted, TypedEventStreamEnvelopeMailMarkedRead, TypedEventStreamEnvelopeMailMarkedUnread, TypedEventStreamEnvelopeMailRead, TypedEventStreamEnvelopeMailReplied, TypedEventStreamEnvelopeMailSent, TypedEventStreamEnvelopeOrderCompleted, TypedEventStreamEnvelopeOrderFailed, TypedEventStreamEnvelopeOrderFired, TypedEventStreamEnvelopeProjectIdentityStamped, TypedEventStreamEnvelopeProviderSwapped, TypedEventStreamEnvelopeRequestFailed, TypedEventStreamEnvelopeRequestResultCityCreate, TypedEventStreamEnvelopeRequestResultCityUnregister, TypedEventStreamEnvelopeRequestResultSessionCreate, TypedEventStreamEnvelopeRequestResultSessionMessage, TypedEventStreamEnvelopeRequestResultSessionSubmit, TypedEventStreamEnvelopeSessionCrashed, TypedEventStreamEnvelopeSessionDrainAckedWithAssignedWork, TypedEventStreamEnvelopeSessionDraining, TypedEventStreamEnvelopeSessionIdleKilled, TypedEventStreamEnvelopeSessionMaxAgeKilled, TypedEventStreamEnvelopeSessionQuarantined, TypedEventStreamEnvelopeSessionStopped, TypedEventStreamEnvelopeSessionStranded, TypedEventStreamEnvelopeSessionSuspended, TypedEventStreamEnvelopeSessionUndrained, TypedEventStreamEnvelopeSessionUpdated, TypedEventStreamEnvelopeSessionWoke, TypedEventStreamEnvelopeSessionWorkQueryFailed, TypedEventStreamEnvelopeSupervisorFsPressureSkippedTick, TypedEventStreamEnvelopeSupervisorShutdownRequested, TypedEventStreamEnvelopeWorkerOperation, TypedTaggedEventStreamEnvelope, TypedTaggedEventStreamEnvelopeBeadClosed, TypedTaggedEventStreamEnvelopeBeadCreated, TypedTaggedEventStreamEnvelopeBeadUpdated, TypedTaggedEventStreamEnvelopeCityCreated, TypedTaggedEventStreamEnvelopeCityResumed, TypedTaggedEventStreamEnvelopeCitySuspended, TypedTaggedEventStreamEnvelopeCityUnregisterRequested, TypedTaggedEventStreamEnvelopeControllerStarted, TypedTaggedEventStreamEnvelopeControllerStopped, TypedTaggedEventStreamEnvelopeConvoyClosed, TypedTaggedEventStreamEnvelopeConvoyCreated, TypedTaggedEventStreamEnvelopeCustom, TypedTaggedEventStreamEnvelopeEventsRotated, TypedTaggedEventStreamEnvelopeExtmsgAdapterAdded, TypedTaggedEventStreamEnvelopeExtmsgAdapterRemoved, TypedTaggedEventStreamEnvelopeExtmsgBound, TypedTaggedEventStreamEnvelopeExtmsgGroupCreated, TypedTaggedEventStreamEnvelopeExtmsgInbound, TypedTaggedEventStreamEnvelopeExtmsgOutbound, TypedTaggedEventStreamEnvelopeExtmsgUnbound, TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone, TypedTaggedEventStreamEnvelopeGcStoreMaintenanceFailed, TypedTaggedEventStreamEnvelopeMailArchived, TypedTaggedEventStreamEnvelopeMailDeleted, TypedTaggedEventStreamEnvelopeMailMarkedRead, TypedTaggedEventStreamEnvelopeMailMarkedUnread, TypedTaggedEventStreamEnvelopeMailRead, TypedTaggedEventStreamEnvelopeMailReplied, TypedTaggedEventStreamEnvelopeMailSent, TypedTaggedEventStreamEnvelopeOrderCompleted, TypedTaggedEventStreamEnvelopeOrderFailed, TypedTaggedEventStreamEnvelopeOrderFired, TypedTaggedEventStreamEnvelopeProjectIdentityStamped, TypedTaggedEventStreamEnvelopeProviderSwapped, TypedTaggedEventStreamEnvelopeRequestFailed, TypedTaggedEventStreamEnvelopeRequestResultCityCreate, TypedTaggedEventStreamEnvelopeRequestResultCityUnregister, TypedTaggedEventStreamEnvelopeRequestResultSessionCreate, TypedTaggedEventStreamEnvelopeRequestResultSessionMessage, TypedTaggedEventStreamEnvelopeRequestResultSessionSubmit, TypedTaggedEventStreamEnvelopeSessionCrashed, TypedTaggedEventStreamEnvelopeSessionDrainAckedWithAssignedWork, TypedTaggedEventStreamEnvelopeSessionDraining, TypedTaggedEventStreamEnvelopeSessionIdleKilled, TypedTaggedEventStreamEnvelopeSessionMaxAgeKilled, TypedTaggedEventStreamEnvelopeSessionQuarantined, TypedTaggedEventStreamEnvelopeSessionStopped, TypedTaggedEventStreamEnvelopeSessionStranded, TypedTaggedEventStreamEnvelopeSessionSuspended, TypedTaggedEventStreamEnvelopeSessionUndrained, TypedTaggedEventStreamEnvelopeSessionUpdated, TypedTaggedEventStreamEnvelopeSessionWoke, TypedTaggedEventStreamEnvelopeSessionWorkQueryFailed, TypedTaggedEventStreamEnvelopeSupervisorFsPressureSkippedTick, TypedTaggedEventStreamEnvelopeSupervisorShutdownRequested, TypedTaggedEventStreamEnvelopeWorkerOperation, UnboundEventPayload, WorkerOperationEventPayload, WorkflowAttemptSummary, WorkflowBeadResponse, WorkflowDeleteResponse, WorkflowDepResponse, WorkflowEventProjection, WorkflowSnapshotResponse, WorkspaceResponse } from './types.gen'; +export type { AdapterCapabilities, AdapterEventPayload, AgentCreatedOutputBody, AgentCreateInputBody, AgentMapping, AgentOutputResponse, AgentPatch, AgentPatchSetInputBody, AgentResponse, AgentUpdateInputBody, AgentUpdateQualifiedInputBody, AnnotatedAgentResponse, AnnotatedProviderResponse, AsyncAcceptedBody, AsyncAcceptedResponse, Bead, BeadAssignInputBody, BeadCreateInputBody, BeadDepsResponse, BeadEventPayload, BeadGraphResponse, BeadUpdateBody, BindingStatus, BoundEventPayload, CityCreateRequest, CityCreateSucceededPayload, CityGetResponse, CityInfo, CityLifecyclePayload, CityPatchInputBody, CityUnregisterSucceededPayload, ClientOptions, ConfigAgentResponse, ConfigExplainPatches, ConfigExplainResponse, ConfigPatchesResponse, ConfigResponse, ConfigRigResponse, ConfigValidateOutputBody, ConversationGroupParticipant, ConversationGroupRecord, ConversationKind, ConversationRef, ConversationTranscriptRecord, ConvoyAddInputBody, ConvoyCheckResponse, ConvoyCreateInputBody, ConvoyGetResponse, ConvoyProgress, ConvoyRemoveInputBody, CreateAgentData, CreateAgentError, CreateAgentErrors, CreateAgentResponse, CreateAgentResponses, CreateBeadData, CreateBeadError, CreateBeadErrors, CreateBeadResponse, CreateBeadResponses, CreateConvoyData, CreateConvoyError, CreateConvoyErrors, CreateConvoyResponse, CreateConvoyResponses, CreateProviderData, CreateProviderError, CreateProviderErrors, CreateProviderResponse, CreateProviderResponses, CreateRigData, CreateRigError, CreateRigErrors, CreateRigResponse, CreateRigResponses, CreateSessionData, CreateSessionError, CreateSessionErrors, CreateSessionResponse, CreateSessionResponses, DeleteV0CityByCityNameAgentByBaseData, DeleteV0CityByCityNameAgentByBaseError, DeleteV0CityByCityNameAgentByBaseErrors, DeleteV0CityByCityNameAgentByBaseResponse, DeleteV0CityByCityNameAgentByBaseResponses, DeleteV0CityByCityNameAgentByDirByBaseData, DeleteV0CityByCityNameAgentByDirByBaseError, DeleteV0CityByCityNameAgentByDirByBaseErrors, DeleteV0CityByCityNameAgentByDirByBaseResponse, DeleteV0CityByCityNameAgentByDirByBaseResponses, DeleteV0CityByCityNameBeadByIdData, DeleteV0CityByCityNameBeadByIdError, DeleteV0CityByCityNameBeadByIdErrors, DeleteV0CityByCityNameBeadByIdResponse, DeleteV0CityByCityNameBeadByIdResponses, DeleteV0CityByCityNameConvoyByIdData, DeleteV0CityByCityNameConvoyByIdError, DeleteV0CityByCityNameConvoyByIdErrors, DeleteV0CityByCityNameConvoyByIdResponse, DeleteV0CityByCityNameConvoyByIdResponses, DeleteV0CityByCityNameExtmsgAdaptersData, DeleteV0CityByCityNameExtmsgAdaptersError, DeleteV0CityByCityNameExtmsgAdaptersErrors, DeleteV0CityByCityNameExtmsgAdaptersResponse, DeleteV0CityByCityNameExtmsgAdaptersResponses, DeleteV0CityByCityNameExtmsgParticipantsData, DeleteV0CityByCityNameExtmsgParticipantsError, DeleteV0CityByCityNameExtmsgParticipantsErrors, DeleteV0CityByCityNameExtmsgParticipantsResponse, DeleteV0CityByCityNameExtmsgParticipantsResponses, DeleteV0CityByCityNameMailByIdData, DeleteV0CityByCityNameMailByIdError, DeleteV0CityByCityNameMailByIdErrors, DeleteV0CityByCityNameMailByIdResponse, DeleteV0CityByCityNameMailByIdResponses, DeleteV0CityByCityNamePatchesAgentByBaseData, DeleteV0CityByCityNamePatchesAgentByBaseError, DeleteV0CityByCityNamePatchesAgentByBaseErrors, DeleteV0CityByCityNamePatchesAgentByBaseResponse, DeleteV0CityByCityNamePatchesAgentByBaseResponses, DeleteV0CityByCityNamePatchesAgentByDirByBaseData, DeleteV0CityByCityNamePatchesAgentByDirByBaseError, DeleteV0CityByCityNamePatchesAgentByDirByBaseErrors, DeleteV0CityByCityNamePatchesAgentByDirByBaseResponse, DeleteV0CityByCityNamePatchesAgentByDirByBaseResponses, DeleteV0CityByCityNamePatchesProviderByNameData, DeleteV0CityByCityNamePatchesProviderByNameError, DeleteV0CityByCityNamePatchesProviderByNameErrors, DeleteV0CityByCityNamePatchesProviderByNameResponse, DeleteV0CityByCityNamePatchesProviderByNameResponses, DeleteV0CityByCityNamePatchesRigByNameData, DeleteV0CityByCityNamePatchesRigByNameError, DeleteV0CityByCityNamePatchesRigByNameErrors, DeleteV0CityByCityNamePatchesRigByNameResponse, DeleteV0CityByCityNamePatchesRigByNameResponses, DeleteV0CityByCityNameProviderByNameData, DeleteV0CityByCityNameProviderByNameError, DeleteV0CityByCityNameProviderByNameErrors, DeleteV0CityByCityNameProviderByNameResponse, DeleteV0CityByCityNameProviderByNameResponses, DeleteV0CityByCityNameRigByNameData, DeleteV0CityByCityNameRigByNameError, DeleteV0CityByCityNameRigByNameErrors, DeleteV0CityByCityNameRigByNameResponse, DeleteV0CityByCityNameRigByNameResponses, DeleteV0CityByCityNameWorkflowByWorkflowIdData, DeleteV0CityByCityNameWorkflowByWorkflowIdError, DeleteV0CityByCityNameWorkflowByWorkflowIdErrors, DeleteV0CityByCityNameWorkflowByWorkflowIdResponse, DeleteV0CityByCityNameWorkflowByWorkflowIdResponses, DeliveryContextRecord, Dep, EmitEventData, EmitEventError, EmitEventErrors, EmitEventResponse, EmitEventResponses, EnsureExtmsgGroupData, EnsureExtmsgGroupError, EnsureExtmsgGroupErrors, EnsureExtmsgGroupResponse, EnsureExtmsgGroupResponses, ErrorDetail, ErrorModel, EventEmitOutputBody, EventEmitRequest, EventPayload, EventRotateAnchor, EventRotateArchive, EventRotateResponse, EventStreamEnvelope, ExternalActor, ExternalAttachment, ExternalInboundMessage, ExtmsgAdapterInfo, ExtMsgAdapterRegisterInputBody, ExtMsgAdapterRegisterOutputBody, ExtMsgAdapterUnregisterInputBody, ExtMsgBindInputBody, ExtMsgGroupEnsureInputBody, ExtMsgInboundInputBody, ExtMsgOutboundInputBody, ExtMsgParticipantRemoveInputBody, ExtMsgParticipantUpsertInputBody, ExtMsgTranscriptAckInputBody, ExtMsgUnbindBody, ExtMsgUnbindInputBody, FanoutPolicy, FormulaDetailResponse, FormulaFeedBody, FormulaListBody, FormulaPreviewBody, FormulaPreviewEdgeResponse, FormulaPreviewNodeResponse, FormulaPreviewResponse, FormulaRecentRunResponse, FormulaRunsResponse, FormulaStepResponse, FormulaSummaryResponse, FormulaVarDefResponse, GetHealthData, GetHealthError, GetHealthErrors, GetHealthResponse, GetHealthResponses, GetV0CitiesData, GetV0CitiesError, GetV0CitiesErrors, GetV0CitiesResponse, GetV0CitiesResponses, GetV0CityByCityNameAgentByBaseData, GetV0CityByCityNameAgentByBaseError, GetV0CityByCityNameAgentByBaseErrors, GetV0CityByCityNameAgentByBaseOutputData, GetV0CityByCityNameAgentByBaseOutputError, GetV0CityByCityNameAgentByBaseOutputErrors, GetV0CityByCityNameAgentByBaseOutputResponse, GetV0CityByCityNameAgentByBaseOutputResponses, GetV0CityByCityNameAgentByBaseResponse, GetV0CityByCityNameAgentByBaseResponses, GetV0CityByCityNameAgentByDirByBaseData, GetV0CityByCityNameAgentByDirByBaseError, GetV0CityByCityNameAgentByDirByBaseErrors, GetV0CityByCityNameAgentByDirByBaseOutputData, GetV0CityByCityNameAgentByDirByBaseOutputError, GetV0CityByCityNameAgentByDirByBaseOutputErrors, GetV0CityByCityNameAgentByDirByBaseOutputResponse, GetV0CityByCityNameAgentByDirByBaseOutputResponses, GetV0CityByCityNameAgentByDirByBaseResponse, GetV0CityByCityNameAgentByDirByBaseResponses, GetV0CityByCityNameAgentsData, GetV0CityByCityNameAgentsError, GetV0CityByCityNameAgentsErrors, GetV0CityByCityNameAgentsResponse, GetV0CityByCityNameAgentsResponses, GetV0CityByCityNameBeadByIdData, GetV0CityByCityNameBeadByIdDepsData, GetV0CityByCityNameBeadByIdDepsError, GetV0CityByCityNameBeadByIdDepsErrors, GetV0CityByCityNameBeadByIdDepsResponse, GetV0CityByCityNameBeadByIdDepsResponses, GetV0CityByCityNameBeadByIdError, GetV0CityByCityNameBeadByIdErrors, GetV0CityByCityNameBeadByIdResponse, GetV0CityByCityNameBeadByIdResponses, GetV0CityByCityNameBeadsData, GetV0CityByCityNameBeadsError, GetV0CityByCityNameBeadsErrors, GetV0CityByCityNameBeadsGraphByRootIdData, GetV0CityByCityNameBeadsGraphByRootIdError, GetV0CityByCityNameBeadsGraphByRootIdErrors, GetV0CityByCityNameBeadsGraphByRootIdResponse, GetV0CityByCityNameBeadsGraphByRootIdResponses, GetV0CityByCityNameBeadsReadyData, GetV0CityByCityNameBeadsReadyError, GetV0CityByCityNameBeadsReadyErrors, GetV0CityByCityNameBeadsReadyResponse, GetV0CityByCityNameBeadsReadyResponses, GetV0CityByCityNameBeadsResponse, GetV0CityByCityNameBeadsResponses, GetV0CityByCityNameConfigData, GetV0CityByCityNameConfigError, GetV0CityByCityNameConfigErrors, GetV0CityByCityNameConfigExplainData, GetV0CityByCityNameConfigExplainError, GetV0CityByCityNameConfigExplainErrors, GetV0CityByCityNameConfigExplainResponse, GetV0CityByCityNameConfigExplainResponses, GetV0CityByCityNameConfigResponse, GetV0CityByCityNameConfigResponses, GetV0CityByCityNameConfigValidateData, GetV0CityByCityNameConfigValidateError, GetV0CityByCityNameConfigValidateErrors, GetV0CityByCityNameConfigValidateResponse, GetV0CityByCityNameConfigValidateResponses, GetV0CityByCityNameConvoyByIdCheckData, GetV0CityByCityNameConvoyByIdCheckError, GetV0CityByCityNameConvoyByIdCheckErrors, GetV0CityByCityNameConvoyByIdCheckResponse, GetV0CityByCityNameConvoyByIdCheckResponses, GetV0CityByCityNameConvoyByIdData, GetV0CityByCityNameConvoyByIdError, GetV0CityByCityNameConvoyByIdErrors, GetV0CityByCityNameConvoyByIdResponse, GetV0CityByCityNameConvoyByIdResponses, GetV0CityByCityNameConvoysData, GetV0CityByCityNameConvoysError, GetV0CityByCityNameConvoysErrors, GetV0CityByCityNameConvoysResponse, GetV0CityByCityNameConvoysResponses, GetV0CityByCityNameData, GetV0CityByCityNameError, GetV0CityByCityNameErrors, GetV0CityByCityNameEventsData, GetV0CityByCityNameEventsError, GetV0CityByCityNameEventsErrors, GetV0CityByCityNameEventsResponse, GetV0CityByCityNameEventsResponses, GetV0CityByCityNameExtmsgAdaptersData, GetV0CityByCityNameExtmsgAdaptersError, GetV0CityByCityNameExtmsgAdaptersErrors, GetV0CityByCityNameExtmsgAdaptersResponse, GetV0CityByCityNameExtmsgAdaptersResponses, GetV0CityByCityNameExtmsgBindingsData, GetV0CityByCityNameExtmsgBindingsError, GetV0CityByCityNameExtmsgBindingsErrors, GetV0CityByCityNameExtmsgBindingsResponse, GetV0CityByCityNameExtmsgBindingsResponses, GetV0CityByCityNameExtmsgGroupsData, GetV0CityByCityNameExtmsgGroupsError, GetV0CityByCityNameExtmsgGroupsErrors, GetV0CityByCityNameExtmsgGroupsResponse, GetV0CityByCityNameExtmsgGroupsResponses, GetV0CityByCityNameExtmsgTranscriptData, GetV0CityByCityNameExtmsgTranscriptError, GetV0CityByCityNameExtmsgTranscriptErrors, GetV0CityByCityNameExtmsgTranscriptResponse, GetV0CityByCityNameExtmsgTranscriptResponses, GetV0CityByCityNameFormulaByNameData, GetV0CityByCityNameFormulaByNameError, GetV0CityByCityNameFormulaByNameErrors, GetV0CityByCityNameFormulaByNameResponse, GetV0CityByCityNameFormulaByNameResponses, GetV0CityByCityNameFormulasByNameData, GetV0CityByCityNameFormulasByNameError, GetV0CityByCityNameFormulasByNameErrors, GetV0CityByCityNameFormulasByNameResponse, GetV0CityByCityNameFormulasByNameResponses, GetV0CityByCityNameFormulasByNameRunsData, GetV0CityByCityNameFormulasByNameRunsError, GetV0CityByCityNameFormulasByNameRunsErrors, GetV0CityByCityNameFormulasByNameRunsResponse, GetV0CityByCityNameFormulasByNameRunsResponses, GetV0CityByCityNameFormulasData, GetV0CityByCityNameFormulasError, GetV0CityByCityNameFormulasErrors, GetV0CityByCityNameFormulasFeedData, GetV0CityByCityNameFormulasFeedError, GetV0CityByCityNameFormulasFeedErrors, GetV0CityByCityNameFormulasFeedResponse, GetV0CityByCityNameFormulasFeedResponses, GetV0CityByCityNameFormulasResponse, GetV0CityByCityNameFormulasResponses, GetV0CityByCityNameHealthData, GetV0CityByCityNameHealthError, GetV0CityByCityNameHealthErrors, GetV0CityByCityNameHealthResponse, GetV0CityByCityNameHealthResponses, GetV0CityByCityNameMailByIdData, GetV0CityByCityNameMailByIdError, GetV0CityByCityNameMailByIdErrors, GetV0CityByCityNameMailByIdResponse, GetV0CityByCityNameMailByIdResponses, GetV0CityByCityNameMailCountData, GetV0CityByCityNameMailCountError, GetV0CityByCityNameMailCountErrors, GetV0CityByCityNameMailCountResponse, GetV0CityByCityNameMailCountResponses, GetV0CityByCityNameMailData, GetV0CityByCityNameMailError, GetV0CityByCityNameMailErrors, GetV0CityByCityNameMailResponse, GetV0CityByCityNameMailResponses, GetV0CityByCityNameMailThreadByIdData, GetV0CityByCityNameMailThreadByIdError, GetV0CityByCityNameMailThreadByIdErrors, GetV0CityByCityNameMailThreadByIdResponse, GetV0CityByCityNameMailThreadByIdResponses, GetV0CityByCityNameOrderByNameData, GetV0CityByCityNameOrderByNameError, GetV0CityByCityNameOrderByNameErrors, GetV0CityByCityNameOrderByNameResponse, GetV0CityByCityNameOrderByNameResponses, GetV0CityByCityNameOrderHistoryByBeadIdData, GetV0CityByCityNameOrderHistoryByBeadIdError, GetV0CityByCityNameOrderHistoryByBeadIdErrors, GetV0CityByCityNameOrderHistoryByBeadIdResponse, GetV0CityByCityNameOrderHistoryByBeadIdResponses, GetV0CityByCityNameOrdersCheckData, GetV0CityByCityNameOrdersCheckError, GetV0CityByCityNameOrdersCheckErrors, GetV0CityByCityNameOrdersCheckResponse, GetV0CityByCityNameOrdersCheckResponses, GetV0CityByCityNameOrdersData, GetV0CityByCityNameOrdersError, GetV0CityByCityNameOrdersErrors, GetV0CityByCityNameOrdersFeedData, GetV0CityByCityNameOrdersFeedError, GetV0CityByCityNameOrdersFeedErrors, GetV0CityByCityNameOrdersFeedResponse, GetV0CityByCityNameOrdersFeedResponses, GetV0CityByCityNameOrdersHistoryData, GetV0CityByCityNameOrdersHistoryError, GetV0CityByCityNameOrdersHistoryErrors, GetV0CityByCityNameOrdersHistoryResponse, GetV0CityByCityNameOrdersHistoryResponses, GetV0CityByCityNameOrdersResponse, GetV0CityByCityNameOrdersResponses, GetV0CityByCityNamePacksData, GetV0CityByCityNamePacksError, GetV0CityByCityNamePacksErrors, GetV0CityByCityNamePacksResponse, GetV0CityByCityNamePacksResponses, GetV0CityByCityNamePatchesAgentByBaseData, GetV0CityByCityNamePatchesAgentByBaseError, GetV0CityByCityNamePatchesAgentByBaseErrors, GetV0CityByCityNamePatchesAgentByBaseResponse, GetV0CityByCityNamePatchesAgentByBaseResponses, GetV0CityByCityNamePatchesAgentByDirByBaseData, GetV0CityByCityNamePatchesAgentByDirByBaseError, GetV0CityByCityNamePatchesAgentByDirByBaseErrors, GetV0CityByCityNamePatchesAgentByDirByBaseResponse, GetV0CityByCityNamePatchesAgentByDirByBaseResponses, GetV0CityByCityNamePatchesAgentsData, GetV0CityByCityNamePatchesAgentsError, GetV0CityByCityNamePatchesAgentsErrors, GetV0CityByCityNamePatchesAgentsResponse, GetV0CityByCityNamePatchesAgentsResponses, GetV0CityByCityNamePatchesProviderByNameData, GetV0CityByCityNamePatchesProviderByNameError, GetV0CityByCityNamePatchesProviderByNameErrors, GetV0CityByCityNamePatchesProviderByNameResponse, GetV0CityByCityNamePatchesProviderByNameResponses, GetV0CityByCityNamePatchesProvidersData, GetV0CityByCityNamePatchesProvidersError, GetV0CityByCityNamePatchesProvidersErrors, GetV0CityByCityNamePatchesProvidersResponse, GetV0CityByCityNamePatchesProvidersResponses, GetV0CityByCityNamePatchesRigByNameData, GetV0CityByCityNamePatchesRigByNameError, GetV0CityByCityNamePatchesRigByNameErrors, GetV0CityByCityNamePatchesRigByNameResponse, GetV0CityByCityNamePatchesRigByNameResponses, GetV0CityByCityNamePatchesRigsData, GetV0CityByCityNamePatchesRigsError, GetV0CityByCityNamePatchesRigsErrors, GetV0CityByCityNamePatchesRigsResponse, GetV0CityByCityNamePatchesRigsResponses, GetV0CityByCityNameProviderByNameData, GetV0CityByCityNameProviderByNameError, GetV0CityByCityNameProviderByNameErrors, GetV0CityByCityNameProviderByNameResponse, GetV0CityByCityNameProviderByNameResponses, GetV0CityByCityNameProviderReadinessData, GetV0CityByCityNameProviderReadinessError, GetV0CityByCityNameProviderReadinessErrors, GetV0CityByCityNameProviderReadinessResponse, GetV0CityByCityNameProviderReadinessResponses, GetV0CityByCityNameProvidersData, GetV0CityByCityNameProvidersError, GetV0CityByCityNameProvidersErrors, GetV0CityByCityNameProvidersPublicData, GetV0CityByCityNameProvidersPublicError, GetV0CityByCityNameProvidersPublicErrors, GetV0CityByCityNameProvidersPublicResponse, GetV0CityByCityNameProvidersPublicResponses, GetV0CityByCityNameProvidersResponse, GetV0CityByCityNameProvidersResponses, GetV0CityByCityNameReadinessData, GetV0CityByCityNameReadinessError, GetV0CityByCityNameReadinessErrors, GetV0CityByCityNameReadinessResponse, GetV0CityByCityNameReadinessResponses, GetV0CityByCityNameResponse, GetV0CityByCityNameResponses, GetV0CityByCityNameRigByNameData, GetV0CityByCityNameRigByNameError, GetV0CityByCityNameRigByNameErrors, GetV0CityByCityNameRigByNameResponse, GetV0CityByCityNameRigByNameResponses, GetV0CityByCityNameRigsData, GetV0CityByCityNameRigsError, GetV0CityByCityNameRigsErrors, GetV0CityByCityNameRigsResponse, GetV0CityByCityNameRigsResponses, GetV0CityByCityNameServiceByNameData, GetV0CityByCityNameServiceByNameError, GetV0CityByCityNameServiceByNameErrors, GetV0CityByCityNameServiceByNameResponse, GetV0CityByCityNameServiceByNameResponses, GetV0CityByCityNameServicesData, GetV0CityByCityNameServicesError, GetV0CityByCityNameServicesErrors, GetV0CityByCityNameServicesResponse, GetV0CityByCityNameServicesResponses, GetV0CityByCityNameSessionByIdAgentsByAgentIdData, GetV0CityByCityNameSessionByIdAgentsByAgentIdError, GetV0CityByCityNameSessionByIdAgentsByAgentIdErrors, GetV0CityByCityNameSessionByIdAgentsByAgentIdResponse, GetV0CityByCityNameSessionByIdAgentsByAgentIdResponses, GetV0CityByCityNameSessionByIdAgentsData, GetV0CityByCityNameSessionByIdAgentsError, GetV0CityByCityNameSessionByIdAgentsErrors, GetV0CityByCityNameSessionByIdAgentsResponse, GetV0CityByCityNameSessionByIdAgentsResponses, GetV0CityByCityNameSessionByIdData, GetV0CityByCityNameSessionByIdError, GetV0CityByCityNameSessionByIdErrors, GetV0CityByCityNameSessionByIdPendingData, GetV0CityByCityNameSessionByIdPendingError, GetV0CityByCityNameSessionByIdPendingErrors, GetV0CityByCityNameSessionByIdPendingResponse, GetV0CityByCityNameSessionByIdPendingResponses, GetV0CityByCityNameSessionByIdResponse, GetV0CityByCityNameSessionByIdResponses, GetV0CityByCityNameSessionByIdTranscriptData, GetV0CityByCityNameSessionByIdTranscriptError, GetV0CityByCityNameSessionByIdTranscriptErrors, GetV0CityByCityNameSessionByIdTranscriptResponse, GetV0CityByCityNameSessionByIdTranscriptResponses, GetV0CityByCityNameSessionsData, GetV0CityByCityNameSessionsError, GetV0CityByCityNameSessionsErrors, GetV0CityByCityNameSessionsResponse, GetV0CityByCityNameSessionsResponses, GetV0CityByCityNameStatusData, GetV0CityByCityNameStatusError, GetV0CityByCityNameStatusErrors, GetV0CityByCityNameStatusResponse, GetV0CityByCityNameStatusResponses, GetV0CityByCityNameWorkflowByWorkflowIdData, GetV0CityByCityNameWorkflowByWorkflowIdError, GetV0CityByCityNameWorkflowByWorkflowIdErrors, GetV0CityByCityNameWorkflowByWorkflowIdResponse, GetV0CityByCityNameWorkflowByWorkflowIdResponses, GetV0EventsData, GetV0EventsError, GetV0EventsErrors, GetV0EventsResponse, GetV0EventsResponses, GetV0ProviderReadinessData, GetV0ProviderReadinessError, GetV0ProviderReadinessErrors, GetV0ProviderReadinessResponse, GetV0ProviderReadinessResponses, GetV0ReadinessData, GetV0ReadinessError, GetV0ReadinessErrors, GetV0ReadinessResponse, GetV0ReadinessResponses, GitStatus, GroupCreatedEventPayload, GroupRouteDecision, HealthOutputBody, HeartbeatEvent, InboundEventPayload, InboundResult, ListBodyAgentPatch, ListBodyAgentResponse, ListBodyBead, ListBodyConversationTranscriptRecord, ListBodyExtmsgAdapterInfo, ListBodyProviderPatch, ListBodyProviderResponse, ListBodyRigPatch, ListBodyRigResponse, ListBodySessionBindingRecord, ListBodySessionResponse, ListBodyStatus, ListBodyWireEvent, LogicalNode, MailCountOutputBody, MailEventPayload, MailListBody, MailReplyInputBody, MailSendInputBody, Message, MonitorFeedItemResponse, NoPayload, OkResponseBody, OkWithIdResponseBody, OptionChoiceDto, OrderCheckListBody, OrderCheckResponse, OrderHistoryDetailResponse, OrderHistoryEntry, OrderHistoryListBody, OrderListBody, OrderResponse, OrdersFeedBody, OutboundEventPayload, OutboundResult, OutputTurn, PackListBody, PackResponse, PaginationInfo, PatchDeletedResponseBody, PatchOkResponseBody, PatchV0CityByCityNameAgentByBaseData, PatchV0CityByCityNameAgentByBaseError, PatchV0CityByCityNameAgentByBaseErrors, PatchV0CityByCityNameAgentByBaseResponse, PatchV0CityByCityNameAgentByBaseResponses, PatchV0CityByCityNameAgentByDirByBaseData, PatchV0CityByCityNameAgentByDirByBaseError, PatchV0CityByCityNameAgentByDirByBaseErrors, PatchV0CityByCityNameAgentByDirByBaseResponse, PatchV0CityByCityNameAgentByDirByBaseResponses, PatchV0CityByCityNameBeadByIdData, PatchV0CityByCityNameBeadByIdError, PatchV0CityByCityNameBeadByIdErrors, PatchV0CityByCityNameBeadByIdResponse, PatchV0CityByCityNameBeadByIdResponses, PatchV0CityByCityNameData, PatchV0CityByCityNameError, PatchV0CityByCityNameErrors, PatchV0CityByCityNameProviderByNameData, PatchV0CityByCityNameProviderByNameError, PatchV0CityByCityNameProviderByNameErrors, PatchV0CityByCityNameProviderByNameResponse, PatchV0CityByCityNameProviderByNameResponses, PatchV0CityByCityNameResponse, PatchV0CityByCityNameResponses, PatchV0CityByCityNameRigByNameData, PatchV0CityByCityNameRigByNameError, PatchV0CityByCityNameRigByNameErrors, PatchV0CityByCityNameRigByNameResponse, PatchV0CityByCityNameRigByNameResponses, PatchV0CityByCityNameSessionByIdData, PatchV0CityByCityNameSessionByIdError, PatchV0CityByCityNameSessionByIdErrors, PatchV0CityByCityNameSessionByIdResponse, PatchV0CityByCityNameSessionByIdResponses, PendingInteraction, PoolOverride, PostV0CityByCityNameAgentByBaseByActionData, PostV0CityByCityNameAgentByBaseByActionError, PostV0CityByCityNameAgentByBaseByActionErrors, PostV0CityByCityNameAgentByBaseByActionResponse, PostV0CityByCityNameAgentByBaseByActionResponses, PostV0CityByCityNameAgentByDirByBaseByActionData, PostV0CityByCityNameAgentByDirByBaseByActionError, PostV0CityByCityNameAgentByDirByBaseByActionErrors, PostV0CityByCityNameAgentByDirByBaseByActionResponse, PostV0CityByCityNameAgentByDirByBaseByActionResponses, PostV0CityByCityNameBeadByIdAssignData, PostV0CityByCityNameBeadByIdAssignError, PostV0CityByCityNameBeadByIdAssignErrors, PostV0CityByCityNameBeadByIdAssignResponse, PostV0CityByCityNameBeadByIdAssignResponses, PostV0CityByCityNameBeadByIdCloseData, PostV0CityByCityNameBeadByIdCloseError, PostV0CityByCityNameBeadByIdCloseErrors, PostV0CityByCityNameBeadByIdCloseResponse, PostV0CityByCityNameBeadByIdCloseResponses, PostV0CityByCityNameBeadByIdReopenData, PostV0CityByCityNameBeadByIdReopenError, PostV0CityByCityNameBeadByIdReopenErrors, PostV0CityByCityNameBeadByIdReopenResponse, PostV0CityByCityNameBeadByIdReopenResponses, PostV0CityByCityNameBeadByIdUpdateData, PostV0CityByCityNameBeadByIdUpdateError, PostV0CityByCityNameBeadByIdUpdateErrors, PostV0CityByCityNameBeadByIdUpdateResponse, PostV0CityByCityNameBeadByIdUpdateResponses, PostV0CityByCityNameConvoyByIdAddData, PostV0CityByCityNameConvoyByIdAddError, PostV0CityByCityNameConvoyByIdAddErrors, PostV0CityByCityNameConvoyByIdAddResponse, PostV0CityByCityNameConvoyByIdAddResponses, PostV0CityByCityNameConvoyByIdCloseData, PostV0CityByCityNameConvoyByIdCloseError, PostV0CityByCityNameConvoyByIdCloseErrors, PostV0CityByCityNameConvoyByIdCloseResponse, PostV0CityByCityNameConvoyByIdCloseResponses, PostV0CityByCityNameConvoyByIdRemoveData, PostV0CityByCityNameConvoyByIdRemoveError, PostV0CityByCityNameConvoyByIdRemoveErrors, PostV0CityByCityNameConvoyByIdRemoveResponse, PostV0CityByCityNameConvoyByIdRemoveResponses, PostV0CityByCityNameExtmsgBindData, PostV0CityByCityNameExtmsgBindError, PostV0CityByCityNameExtmsgBindErrors, PostV0CityByCityNameExtmsgBindResponse, PostV0CityByCityNameExtmsgBindResponses, PostV0CityByCityNameExtmsgInboundData, PostV0CityByCityNameExtmsgInboundError, PostV0CityByCityNameExtmsgInboundErrors, PostV0CityByCityNameExtmsgInboundResponse, PostV0CityByCityNameExtmsgInboundResponses, PostV0CityByCityNameExtmsgOutboundData, PostV0CityByCityNameExtmsgOutboundError, PostV0CityByCityNameExtmsgOutboundErrors, PostV0CityByCityNameExtmsgOutboundResponse, PostV0CityByCityNameExtmsgOutboundResponses, PostV0CityByCityNameExtmsgParticipantsData, PostV0CityByCityNameExtmsgParticipantsError, PostV0CityByCityNameExtmsgParticipantsErrors, PostV0CityByCityNameExtmsgParticipantsResponse, PostV0CityByCityNameExtmsgParticipantsResponses, PostV0CityByCityNameExtmsgTranscriptAckData, PostV0CityByCityNameExtmsgTranscriptAckError, PostV0CityByCityNameExtmsgTranscriptAckErrors, PostV0CityByCityNameExtmsgTranscriptAckResponse, PostV0CityByCityNameExtmsgTranscriptAckResponses, PostV0CityByCityNameExtmsgUnbindData, PostV0CityByCityNameExtmsgUnbindError, PostV0CityByCityNameExtmsgUnbindErrors, PostV0CityByCityNameExtmsgUnbindResponse, PostV0CityByCityNameExtmsgUnbindResponses, PostV0CityByCityNameFormulasByNamePreviewData, PostV0CityByCityNameFormulasByNamePreviewError, PostV0CityByCityNameFormulasByNamePreviewErrors, PostV0CityByCityNameFormulasByNamePreviewResponse, PostV0CityByCityNameFormulasByNamePreviewResponses, PostV0CityByCityNameMailByIdArchiveData, PostV0CityByCityNameMailByIdArchiveError, PostV0CityByCityNameMailByIdArchiveErrors, PostV0CityByCityNameMailByIdArchiveResponse, PostV0CityByCityNameMailByIdArchiveResponses, PostV0CityByCityNameMailByIdMarkUnreadData, PostV0CityByCityNameMailByIdMarkUnreadError, PostV0CityByCityNameMailByIdMarkUnreadErrors, PostV0CityByCityNameMailByIdMarkUnreadResponse, PostV0CityByCityNameMailByIdMarkUnreadResponses, PostV0CityByCityNameMailByIdReadData, PostV0CityByCityNameMailByIdReadError, PostV0CityByCityNameMailByIdReadErrors, PostV0CityByCityNameMailByIdReadResponse, PostV0CityByCityNameMailByIdReadResponses, PostV0CityByCityNameOrderByNameDisableData, PostV0CityByCityNameOrderByNameDisableError, PostV0CityByCityNameOrderByNameDisableErrors, PostV0CityByCityNameOrderByNameDisableResponse, PostV0CityByCityNameOrderByNameDisableResponses, PostV0CityByCityNameOrderByNameEnableData, PostV0CityByCityNameOrderByNameEnableError, PostV0CityByCityNameOrderByNameEnableErrors, PostV0CityByCityNameOrderByNameEnableResponse, PostV0CityByCityNameOrderByNameEnableResponses, PostV0CityByCityNameRigByNameByActionData, PostV0CityByCityNameRigByNameByActionError, PostV0CityByCityNameRigByNameByActionErrors, PostV0CityByCityNameRigByNameByActionResponse, PostV0CityByCityNameRigByNameByActionResponses, PostV0CityByCityNameServiceByNameRestartData, PostV0CityByCityNameServiceByNameRestartError, PostV0CityByCityNameServiceByNameRestartErrors, PostV0CityByCityNameServiceByNameRestartResponse, PostV0CityByCityNameServiceByNameRestartResponses, PostV0CityByCityNameSessionByIdCloseData, PostV0CityByCityNameSessionByIdCloseError, PostV0CityByCityNameSessionByIdCloseErrors, PostV0CityByCityNameSessionByIdCloseResponse, PostV0CityByCityNameSessionByIdCloseResponses, PostV0CityByCityNameSessionByIdKillData, PostV0CityByCityNameSessionByIdKillError, PostV0CityByCityNameSessionByIdKillErrors, PostV0CityByCityNameSessionByIdKillResponse, PostV0CityByCityNameSessionByIdKillResponses, PostV0CityByCityNameSessionByIdPermissionModeData, PostV0CityByCityNameSessionByIdPermissionModeError, PostV0CityByCityNameSessionByIdPermissionModeErrors, PostV0CityByCityNameSessionByIdPermissionModeResponse, PostV0CityByCityNameSessionByIdPermissionModeResponses, PostV0CityByCityNameSessionByIdRenameData, PostV0CityByCityNameSessionByIdRenameError, PostV0CityByCityNameSessionByIdRenameErrors, PostV0CityByCityNameSessionByIdRenameResponse, PostV0CityByCityNameSessionByIdRenameResponses, PostV0CityByCityNameSessionByIdStopData, PostV0CityByCityNameSessionByIdStopError, PostV0CityByCityNameSessionByIdStopErrors, PostV0CityByCityNameSessionByIdStopResponse, PostV0CityByCityNameSessionByIdStopResponses, PostV0CityByCityNameSessionByIdSuspendData, PostV0CityByCityNameSessionByIdSuspendError, PostV0CityByCityNameSessionByIdSuspendErrors, PostV0CityByCityNameSessionByIdSuspendResponse, PostV0CityByCityNameSessionByIdSuspendResponses, PostV0CityByCityNameSessionByIdWakeData, PostV0CityByCityNameSessionByIdWakeError, PostV0CityByCityNameSessionByIdWakeErrors, PostV0CityByCityNameSessionByIdWakeResponse, PostV0CityByCityNameSessionByIdWakeResponses, PostV0CityByCityNameSlingData, PostV0CityByCityNameSlingError, PostV0CityByCityNameSlingErrors, PostV0CityByCityNameSlingResponse, PostV0CityByCityNameSlingResponses, PostV0CityByCityNameUnregisterData, PostV0CityByCityNameUnregisterError, PostV0CityByCityNameUnregisterErrors, PostV0CityByCityNameUnregisterResponse, PostV0CityByCityNameUnregisterResponses, PostV0CityData, PostV0CityError, PostV0CityErrors, PostV0CityResponse, PostV0CityResponses, ProjectIdentityStampedPayload, ProviderCreatedOutputBody, ProviderCreateInputBody, ProviderOptionDto, ProviderPatch, ProviderPatchSetInputBody, ProviderPublicListBody, ProviderPublicResponse, ProviderReadiness, ProviderReadinessResponse, ProviderResponse, ProviderSpecJson, ProviderUpdateInputBody, PublishReceipt, PutV0CityByCityNamePatchesAgentsData, PutV0CityByCityNamePatchesAgentsError, PutV0CityByCityNamePatchesAgentsErrors, PutV0CityByCityNamePatchesAgentsResponse, PutV0CityByCityNamePatchesAgentsResponses, PutV0CityByCityNamePatchesProvidersData, PutV0CityByCityNamePatchesProvidersError, PutV0CityByCityNamePatchesProvidersErrors, PutV0CityByCityNamePatchesProvidersResponse, PutV0CityByCityNamePatchesProvidersResponses, PutV0CityByCityNamePatchesRigsData, PutV0CityByCityNamePatchesRigsError, PutV0CityByCityNamePatchesRigsErrors, PutV0CityByCityNamePatchesRigsResponse, PutV0CityByCityNamePatchesRigsResponses, ReadinessItem, ReadinessResponse, RegisterExtmsgAdapterData, RegisterExtmsgAdapterError, RegisterExtmsgAdapterErrors, RegisterExtmsgAdapterResponse, RegisterExtmsgAdapterResponses, ReplyMailData, ReplyMailError, ReplyMailErrors, ReplyMailResponse, ReplyMailResponses, RequestFailedPayload, RespondSessionData, RespondSessionError, RespondSessionErrors, RespondSessionResponse, RespondSessionResponses, RigActionBody, RigCreatedOutputBody, RigCreateInputBody, RigPatch, RigPatchSetInputBody, RigResponse, RigUpdateInputBody, RotatedPayload, RotateEventsData, RotateEventsError, RotateEventsErrors, RotateEventsResponse, RotateEventsResponses, ScopeGroup, SendMailData, SendMailError, SendMailErrors, SendMailResponse, SendMailResponses, SendSessionMessageData, SendSessionMessageError, SendSessionMessageErrors, SendSessionMessageResponse, SendSessionMessageResponses, ServiceRestartOutputBody, SessionActivityEvent, SessionAgentGetResponse, SessionAgentListResponse, SessionBindingRecord, SessionCreateBody, SessionCreateSucceededPayload, SessionDrainAckedWithAssignedWorkPayload, SessionInfo, SessionLifecyclePayload, SessionMessageInputBody, SessionMessageSucceededPayload, SessionPatchBody, SessionPendingResponse, SessionPermissionModeBody, SessionRawMessageFrame, SessionRenameInputBody, SessionRespondInputBody, SessionRespondOutputBody, SessionResponse, SessionStreamCommonEvent, SessionStreamMessageEvent, SessionStreamRawMessageEvent, SessionSubmitInputBody, SessionSubmitSucceededPayload, SessionTranscriptGetResponse, SlingInputBody, SlingResponse, Status, StatusAgentCounts, StatusAgentDetail, StatusBody, StatusMailCounts, StatusNamedSessionDetail, StatusRigCounts, StatusRigDetail, StatusSessionCountsDetail, StatusStoreHealth, StatusWorkCounts, StoreBackstopLeakDetectedPayload, StoreMaintenanceDonePayload, StoreMaintenanceFailedPayload, StreamAgentOutputData, StreamAgentOutputError, StreamAgentOutputErrors, StreamAgentOutputQualifiedData, StreamAgentOutputQualifiedError, StreamAgentOutputQualifiedErrors, StreamAgentOutputQualifiedResponse, StreamAgentOutputQualifiedResponses, StreamAgentOutputResponse, StreamAgentOutputResponses, StreamEventsData, StreamEventsError, StreamEventsErrors, StreamEventsResponse, StreamEventsResponses, StreamSessionData, StreamSessionError, StreamSessionErrors, StreamSessionResponse, StreamSessionResponses, StreamSupervisorEventsData, StreamSupervisorEventsError, StreamSupervisorEventsErrors, StreamSupervisorEventsResponse, StreamSupervisorEventsResponses, SubmissionCapabilities, SubmitIntent, SubmitSessionData, SubmitSessionError, SubmitSessionErrors, SubmitSessionResponse, SubmitSessionResponses, SupervisorCitiesOutputBody, SupervisorEventListOutputBody, SupervisorFsPressureSkippedTickPayload, SupervisorHealthOutputBody, SupervisorShutdownPayload, SupervisorStartup, TaggedEventStreamEnvelope, TranscriptMessageKind, TranscriptProvenance, TypedEventStreamEnvelope, TypedEventStreamEnvelopeBeadClosed, TypedEventStreamEnvelopeBeadCreated, TypedEventStreamEnvelopeBeadUpdated, TypedEventStreamEnvelopeCityCreated, TypedEventStreamEnvelopeCityResumed, TypedEventStreamEnvelopeCitySuspended, TypedEventStreamEnvelopeCityUnregisterRequested, TypedEventStreamEnvelopeControllerStarted, TypedEventStreamEnvelopeControllerStopped, TypedEventStreamEnvelopeConvoyClosed, TypedEventStreamEnvelopeConvoyCreated, TypedEventStreamEnvelopeCustom, TypedEventStreamEnvelopeEventsRotated, TypedEventStreamEnvelopeExtmsgAdapterAdded, TypedEventStreamEnvelopeExtmsgAdapterRemoved, TypedEventStreamEnvelopeExtmsgBound, TypedEventStreamEnvelopeExtmsgGroupCreated, TypedEventStreamEnvelopeExtmsgInbound, TypedEventStreamEnvelopeExtmsgOutbound, TypedEventStreamEnvelopeExtmsgUnbound, TypedEventStreamEnvelopeGcStoreBackstopLeakDetected, TypedEventStreamEnvelopeGcStoreMaintenanceDone, TypedEventStreamEnvelopeGcStoreMaintenanceFailed, TypedEventStreamEnvelopeMailArchived, TypedEventStreamEnvelopeMailDeleted, TypedEventStreamEnvelopeMailMarkedRead, TypedEventStreamEnvelopeMailMarkedUnread, TypedEventStreamEnvelopeMailRead, TypedEventStreamEnvelopeMailReplied, TypedEventStreamEnvelopeMailSent, TypedEventStreamEnvelopeOrderCompleted, TypedEventStreamEnvelopeOrderFailed, TypedEventStreamEnvelopeOrderFired, TypedEventStreamEnvelopeProjectIdentityStamped, TypedEventStreamEnvelopeProviderSwapped, TypedEventStreamEnvelopeRequestFailed, TypedEventStreamEnvelopeRequestResultCityCreate, TypedEventStreamEnvelopeRequestResultCityUnregister, TypedEventStreamEnvelopeRequestResultSessionCreate, TypedEventStreamEnvelopeRequestResultSessionMessage, TypedEventStreamEnvelopeRequestResultSessionSubmit, TypedEventStreamEnvelopeSessionCrashed, TypedEventStreamEnvelopeSessionDrainAckedWithAssignedWork, TypedEventStreamEnvelopeSessionDraining, TypedEventStreamEnvelopeSessionIdleKilled, TypedEventStreamEnvelopeSessionMaxAgeKilled, TypedEventStreamEnvelopeSessionQuarantined, TypedEventStreamEnvelopeSessionStopped, TypedEventStreamEnvelopeSessionStranded, TypedEventStreamEnvelopeSessionSuspended, TypedEventStreamEnvelopeSessionUndrained, TypedEventStreamEnvelopeSessionUpdated, TypedEventStreamEnvelopeSessionWoke, TypedEventStreamEnvelopeSessionWorkQueryFailed, TypedEventStreamEnvelopeSupervisorFsPressureSkippedTick, TypedEventStreamEnvelopeSupervisorShutdownRequested, TypedEventStreamEnvelopeWorkerOperation, TypedTaggedEventStreamEnvelope, TypedTaggedEventStreamEnvelopeBeadClosed, TypedTaggedEventStreamEnvelopeBeadCreated, TypedTaggedEventStreamEnvelopeBeadUpdated, TypedTaggedEventStreamEnvelopeCityCreated, TypedTaggedEventStreamEnvelopeCityResumed, TypedTaggedEventStreamEnvelopeCitySuspended, TypedTaggedEventStreamEnvelopeCityUnregisterRequested, TypedTaggedEventStreamEnvelopeControllerStarted, TypedTaggedEventStreamEnvelopeControllerStopped, TypedTaggedEventStreamEnvelopeConvoyClosed, TypedTaggedEventStreamEnvelopeConvoyCreated, TypedTaggedEventStreamEnvelopeCustom, TypedTaggedEventStreamEnvelopeEventsRotated, TypedTaggedEventStreamEnvelopeExtmsgAdapterAdded, TypedTaggedEventStreamEnvelopeExtmsgAdapterRemoved, TypedTaggedEventStreamEnvelopeExtmsgBound, TypedTaggedEventStreamEnvelopeExtmsgGroupCreated, TypedTaggedEventStreamEnvelopeExtmsgInbound, TypedTaggedEventStreamEnvelopeExtmsgOutbound, TypedTaggedEventStreamEnvelopeExtmsgUnbound, TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected, TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone, TypedTaggedEventStreamEnvelopeGcStoreMaintenanceFailed, TypedTaggedEventStreamEnvelopeMailArchived, TypedTaggedEventStreamEnvelopeMailDeleted, TypedTaggedEventStreamEnvelopeMailMarkedRead, TypedTaggedEventStreamEnvelopeMailMarkedUnread, TypedTaggedEventStreamEnvelopeMailRead, TypedTaggedEventStreamEnvelopeMailReplied, TypedTaggedEventStreamEnvelopeMailSent, TypedTaggedEventStreamEnvelopeOrderCompleted, TypedTaggedEventStreamEnvelopeOrderFailed, TypedTaggedEventStreamEnvelopeOrderFired, TypedTaggedEventStreamEnvelopeProjectIdentityStamped, TypedTaggedEventStreamEnvelopeProviderSwapped, TypedTaggedEventStreamEnvelopeRequestFailed, TypedTaggedEventStreamEnvelopeRequestResultCityCreate, TypedTaggedEventStreamEnvelopeRequestResultCityUnregister, TypedTaggedEventStreamEnvelopeRequestResultSessionCreate, TypedTaggedEventStreamEnvelopeRequestResultSessionMessage, TypedTaggedEventStreamEnvelopeRequestResultSessionSubmit, TypedTaggedEventStreamEnvelopeSessionCrashed, TypedTaggedEventStreamEnvelopeSessionDrainAckedWithAssignedWork, TypedTaggedEventStreamEnvelopeSessionDraining, TypedTaggedEventStreamEnvelopeSessionIdleKilled, TypedTaggedEventStreamEnvelopeSessionMaxAgeKilled, TypedTaggedEventStreamEnvelopeSessionQuarantined, TypedTaggedEventStreamEnvelopeSessionStopped, TypedTaggedEventStreamEnvelopeSessionStranded, TypedTaggedEventStreamEnvelopeSessionSuspended, TypedTaggedEventStreamEnvelopeSessionUndrained, TypedTaggedEventStreamEnvelopeSessionUpdated, TypedTaggedEventStreamEnvelopeSessionWoke, TypedTaggedEventStreamEnvelopeSessionWorkQueryFailed, TypedTaggedEventStreamEnvelopeSupervisorFsPressureSkippedTick, TypedTaggedEventStreamEnvelopeSupervisorShutdownRequested, TypedTaggedEventStreamEnvelopeWorkerOperation, UnboundEventPayload, WorkerOperationEventPayload, WorkflowAttemptSummary, WorkflowBeadResponse, WorkflowDeleteResponse, WorkflowDepResponse, WorkflowEventProjection, WorkflowSnapshotResponse, WorkspaceResponse } from './types.gen'; diff --git a/cmd/gc/dashboard/web/src/generated/schema.d.ts b/cmd/gc/dashboard/web/src/generated/schema.d.ts index 87e0cdc0bc4..db11c81a2fd 100644 --- a/cmd/gc/dashboard/web/src/generated/schema.d.ts +++ b/cmd/gc/dashboard/web/src/generated/schema.d.ts @@ -2549,7 +2549,7 @@ export interface components { /** @description Event type. */ type: string; }; - EventPayload: components["schemas"]["AdapterEventPayload"] | components["schemas"]["BeadEventPayload"] | components["schemas"]["BoundEventPayload"] | components["schemas"]["CityCreateSucceededPayload"] | components["schemas"]["CityLifecyclePayload"] | components["schemas"]["CityUnregisterSucceededPayload"] | components["schemas"]["GroupCreatedEventPayload"] | components["schemas"]["InboundEventPayload"] | components["schemas"]["MailEventPayload"] | components["schemas"]["NoPayload"] | components["schemas"]["OutboundEventPayload"] | components["schemas"]["ProjectIdentityStampedPayload"] | components["schemas"]["RequestFailedPayload"] | components["schemas"]["RotatedPayload"] | components["schemas"]["SessionCreateSucceededPayload"] | components["schemas"]["SessionDrainAckedWithAssignedWorkPayload"] | components["schemas"]["SessionLifecyclePayload"] | components["schemas"]["SessionMessageSucceededPayload"] | components["schemas"]["SessionSubmitSucceededPayload"] | components["schemas"]["StoreMaintenanceDonePayload"] | components["schemas"]["StoreMaintenanceFailedPayload"] | components["schemas"]["SupervisorFSPressureSkippedTickPayload"] | components["schemas"]["SupervisorShutdownPayload"] | components["schemas"]["UnboundEventPayload"] | components["schemas"]["WorkerOperationEventPayload"]; + EventPayload: components["schemas"]["AdapterEventPayload"] | components["schemas"]["BeadEventPayload"] | components["schemas"]["BoundEventPayload"] | components["schemas"]["CityCreateSucceededPayload"] | components["schemas"]["CityLifecyclePayload"] | components["schemas"]["CityUnregisterSucceededPayload"] | components["schemas"]["GroupCreatedEventPayload"] | components["schemas"]["InboundEventPayload"] | components["schemas"]["MailEventPayload"] | components["schemas"]["NoPayload"] | components["schemas"]["OutboundEventPayload"] | components["schemas"]["ProjectIdentityStampedPayload"] | components["schemas"]["RequestFailedPayload"] | components["schemas"]["RotatedPayload"] | components["schemas"]["SessionCreateSucceededPayload"] | components["schemas"]["SessionDrainAckedWithAssignedWorkPayload"] | components["schemas"]["SessionLifecyclePayload"] | components["schemas"]["SessionMessageSucceededPayload"] | components["schemas"]["SessionSubmitSucceededPayload"] | components["schemas"]["StoreBackstopLeakDetectedPayload"] | components["schemas"]["StoreMaintenanceDonePayload"] | components["schemas"]["StoreMaintenanceFailedPayload"] | components["schemas"]["SupervisorFSPressureSkippedTickPayload"] | components["schemas"]["SupervisorShutdownPayload"] | components["schemas"]["UnboundEventPayload"] | components["schemas"]["WorkerOperationEventPayload"]; EventRotateAnchor: { /** * Format: int64 @@ -4184,6 +4184,28 @@ export interface components { */ ready: number; }; + StoreBackstopLeakDetectedPayload: { + /** + * Format: int64 + * @description Closed ephemeral beads reclaimed by the backstop sweep. + */ + ephemeral_count: number; + /** + * Format: int64 + * @description Closed main-tier beads reclaimed by the backstop sweep. + */ + main_count: number; + /** + * Format: int64 + * @description Configured leak threshold that the total reclaim count exceeded. + */ + threshold: number; + /** + * Format: int64 + * @description Total closed beads reclaimed by the backstop sweep. + */ + total_count: number; + }; StoreMaintenanceDonePayload: { /** Format: int64 */ after_bytes: number; @@ -4327,7 +4349,7 @@ export interface components { * Typed city event stream envelope * @description Discriminated union of city event stream envelopes. Each variant constrains the envelope type and payload schema together. */ - TypedEventStreamEnvelope: components["schemas"]["TypedEventStreamEnvelopeBeadClosed"] | components["schemas"]["TypedEventStreamEnvelopeBeadCreated"] | components["schemas"]["TypedEventStreamEnvelopeBeadUpdated"] | components["schemas"]["TypedEventStreamEnvelopeCityCreated"] | components["schemas"]["TypedEventStreamEnvelopeCityResumed"] | components["schemas"]["TypedEventStreamEnvelopeCitySuspended"] | components["schemas"]["TypedEventStreamEnvelopeCityUnregisterRequested"] | components["schemas"]["TypedEventStreamEnvelopeControllerStarted"] | components["schemas"]["TypedEventStreamEnvelopeControllerStopped"] | components["schemas"]["TypedEventStreamEnvelopeConvoyClosed"] | components["schemas"]["TypedEventStreamEnvelopeConvoyCreated"] | components["schemas"]["TypedEventStreamEnvelopeEventsRotated"] | components["schemas"]["TypedEventStreamEnvelopeExtmsgAdapterAdded"] | components["schemas"]["TypedEventStreamEnvelopeExtmsgAdapterRemoved"] | components["schemas"]["TypedEventStreamEnvelopeExtmsgBound"] | components["schemas"]["TypedEventStreamEnvelopeExtmsgGroupCreated"] | components["schemas"]["TypedEventStreamEnvelopeExtmsgInbound"] | components["schemas"]["TypedEventStreamEnvelopeExtmsgOutbound"] | components["schemas"]["TypedEventStreamEnvelopeExtmsgUnbound"] | components["schemas"]["TypedEventStreamEnvelopeGcStoreMaintenanceDone"] | components["schemas"]["TypedEventStreamEnvelopeGcStoreMaintenanceFailed"] | components["schemas"]["TypedEventStreamEnvelopeMailArchived"] | components["schemas"]["TypedEventStreamEnvelopeMailDeleted"] | components["schemas"]["TypedEventStreamEnvelopeMailMarkedRead"] | components["schemas"]["TypedEventStreamEnvelopeMailMarkedUnread"] | components["schemas"]["TypedEventStreamEnvelopeMailRead"] | components["schemas"]["TypedEventStreamEnvelopeMailReplied"] | components["schemas"]["TypedEventStreamEnvelopeMailSent"] | components["schemas"]["TypedEventStreamEnvelopeOrderCompleted"] | components["schemas"]["TypedEventStreamEnvelopeOrderFailed"] | components["schemas"]["TypedEventStreamEnvelopeOrderFired"] | components["schemas"]["TypedEventStreamEnvelopeProjectIdentityStamped"] | components["schemas"]["TypedEventStreamEnvelopeProviderSwapped"] | components["schemas"]["TypedEventStreamEnvelopeRequestFailed"] | components["schemas"]["TypedEventStreamEnvelopeRequestResultCityCreate"] | components["schemas"]["TypedEventStreamEnvelopeRequestResultCityUnregister"] | components["schemas"]["TypedEventStreamEnvelopeRequestResultSessionCreate"] | components["schemas"]["TypedEventStreamEnvelopeRequestResultSessionMessage"] | components["schemas"]["TypedEventStreamEnvelopeRequestResultSessionSubmit"] | components["schemas"]["TypedEventStreamEnvelopeSessionCrashed"] | components["schemas"]["TypedEventStreamEnvelopeSessionDrainAckedWithAssignedWork"] | components["schemas"]["TypedEventStreamEnvelopeSessionDraining"] | components["schemas"]["TypedEventStreamEnvelopeSessionIdleKilled"] | components["schemas"]["TypedEventStreamEnvelopeSessionMaxAgeKilled"] | components["schemas"]["TypedEventStreamEnvelopeSessionQuarantined"] | components["schemas"]["TypedEventStreamEnvelopeSessionStopped"] | components["schemas"]["TypedEventStreamEnvelopeSessionStranded"] | components["schemas"]["TypedEventStreamEnvelopeSessionSuspended"] | components["schemas"]["TypedEventStreamEnvelopeSessionUndrained"] | components["schemas"]["TypedEventStreamEnvelopeSessionUpdated"] | components["schemas"]["TypedEventStreamEnvelopeSessionWoke"] | components["schemas"]["TypedEventStreamEnvelopeSessionWorkQueryFailed"] | components["schemas"]["TypedEventStreamEnvelopeSupervisorFsPressureSkippedTick"] | components["schemas"]["TypedEventStreamEnvelopeSupervisorShutdownRequested"] | components["schemas"]["TypedEventStreamEnvelopeWorkerOperation"] | components["schemas"]["TypedEventStreamEnvelopeCustom"]; + TypedEventStreamEnvelope: components["schemas"]["TypedEventStreamEnvelopeBeadClosed"] | components["schemas"]["TypedEventStreamEnvelopeBeadCreated"] | components["schemas"]["TypedEventStreamEnvelopeBeadUpdated"] | components["schemas"]["TypedEventStreamEnvelopeCityCreated"] | components["schemas"]["TypedEventStreamEnvelopeCityResumed"] | components["schemas"]["TypedEventStreamEnvelopeCitySuspended"] | components["schemas"]["TypedEventStreamEnvelopeCityUnregisterRequested"] | components["schemas"]["TypedEventStreamEnvelopeControllerStarted"] | components["schemas"]["TypedEventStreamEnvelopeControllerStopped"] | components["schemas"]["TypedEventStreamEnvelopeConvoyClosed"] | components["schemas"]["TypedEventStreamEnvelopeConvoyCreated"] | components["schemas"]["TypedEventStreamEnvelopeEventsRotated"] | components["schemas"]["TypedEventStreamEnvelopeExtmsgAdapterAdded"] | components["schemas"]["TypedEventStreamEnvelopeExtmsgAdapterRemoved"] | components["schemas"]["TypedEventStreamEnvelopeExtmsgBound"] | components["schemas"]["TypedEventStreamEnvelopeExtmsgGroupCreated"] | components["schemas"]["TypedEventStreamEnvelopeExtmsgInbound"] | components["schemas"]["TypedEventStreamEnvelopeExtmsgOutbound"] | components["schemas"]["TypedEventStreamEnvelopeExtmsgUnbound"] | components["schemas"]["TypedEventStreamEnvelopeGcStoreBackstopLeakDetected"] | components["schemas"]["TypedEventStreamEnvelopeGcStoreMaintenanceDone"] | components["schemas"]["TypedEventStreamEnvelopeGcStoreMaintenanceFailed"] | components["schemas"]["TypedEventStreamEnvelopeMailArchived"] | components["schemas"]["TypedEventStreamEnvelopeMailDeleted"] | components["schemas"]["TypedEventStreamEnvelopeMailMarkedRead"] | components["schemas"]["TypedEventStreamEnvelopeMailMarkedUnread"] | components["schemas"]["TypedEventStreamEnvelopeMailRead"] | components["schemas"]["TypedEventStreamEnvelopeMailReplied"] | components["schemas"]["TypedEventStreamEnvelopeMailSent"] | components["schemas"]["TypedEventStreamEnvelopeOrderCompleted"] | components["schemas"]["TypedEventStreamEnvelopeOrderFailed"] | components["schemas"]["TypedEventStreamEnvelopeOrderFired"] | components["schemas"]["TypedEventStreamEnvelopeProjectIdentityStamped"] | components["schemas"]["TypedEventStreamEnvelopeProviderSwapped"] | components["schemas"]["TypedEventStreamEnvelopeRequestFailed"] | components["schemas"]["TypedEventStreamEnvelopeRequestResultCityCreate"] | components["schemas"]["TypedEventStreamEnvelopeRequestResultCityUnregister"] | components["schemas"]["TypedEventStreamEnvelopeRequestResultSessionCreate"] | components["schemas"]["TypedEventStreamEnvelopeRequestResultSessionMessage"] | components["schemas"]["TypedEventStreamEnvelopeRequestResultSessionSubmit"] | components["schemas"]["TypedEventStreamEnvelopeSessionCrashed"] | components["schemas"]["TypedEventStreamEnvelopeSessionDrainAckedWithAssignedWork"] | components["schemas"]["TypedEventStreamEnvelopeSessionDraining"] | components["schemas"]["TypedEventStreamEnvelopeSessionIdleKilled"] | components["schemas"]["TypedEventStreamEnvelopeSessionMaxAgeKilled"] | components["schemas"]["TypedEventStreamEnvelopeSessionQuarantined"] | components["schemas"]["TypedEventStreamEnvelopeSessionStopped"] | components["schemas"]["TypedEventStreamEnvelopeSessionStranded"] | components["schemas"]["TypedEventStreamEnvelopeSessionSuspended"] | components["schemas"]["TypedEventStreamEnvelopeSessionUndrained"] | components["schemas"]["TypedEventStreamEnvelopeSessionUpdated"] | components["schemas"]["TypedEventStreamEnvelopeSessionWoke"] | components["schemas"]["TypedEventStreamEnvelopeSessionWorkQueryFailed"] | components["schemas"]["TypedEventStreamEnvelopeSupervisorFsPressureSkippedTick"] | components["schemas"]["TypedEventStreamEnvelopeSupervisorShutdownRequested"] | components["schemas"]["TypedEventStreamEnvelopeWorkerOperation"] | components["schemas"]["TypedEventStreamEnvelopeCustom"]; /** TypedEventStreamEnvelope bead.closed */ TypedEventStreamEnvelopeBeadClosed: { actor: string; @@ -4668,6 +4690,23 @@ export interface components { type: "extmsg.unbound"; workflow?: components["schemas"]["WorkflowEventProjection"]; }; + /** TypedEventStreamEnvelope gc.store.backstop_leak.detected */ + TypedEventStreamEnvelopeGcStoreBackstopLeakDetected: { + actor: string; + message?: string; + payload: components["schemas"]["StoreBackstopLeakDetectedPayload"]; + /** Format: int64 */ + seq: number; + subject?: string; + /** Format: date-time */ + ts: string; + /** + * @description discriminator enum property added by openapi-typescript + * @enum {string} + */ + type: "gc.store.backstop_leak.detected"; + workflow?: components["schemas"]["WorkflowEventProjection"]; + }; /** TypedEventStreamEnvelope gc.store.maintenance.done */ TypedEventStreamEnvelopeGcStoreMaintenanceDone: { actor: string; @@ -5284,7 +5323,7 @@ export interface components { * Typed supervisor event stream envelope * @description Discriminated union of supervisor event stream envelopes. Each variant constrains the envelope type and payload schema together and includes the source city. */ - TypedTaggedEventStreamEnvelope: components["schemas"]["TypedTaggedEventStreamEnvelopeBeadClosed"] | components["schemas"]["TypedTaggedEventStreamEnvelopeBeadCreated"] | components["schemas"]["TypedTaggedEventStreamEnvelopeBeadUpdated"] | components["schemas"]["TypedTaggedEventStreamEnvelopeCityCreated"] | components["schemas"]["TypedTaggedEventStreamEnvelopeCityResumed"] | components["schemas"]["TypedTaggedEventStreamEnvelopeCitySuspended"] | components["schemas"]["TypedTaggedEventStreamEnvelopeCityUnregisterRequested"] | components["schemas"]["TypedTaggedEventStreamEnvelopeControllerStarted"] | components["schemas"]["TypedTaggedEventStreamEnvelopeControllerStopped"] | components["schemas"]["TypedTaggedEventStreamEnvelopeConvoyClosed"] | components["schemas"]["TypedTaggedEventStreamEnvelopeConvoyCreated"] | components["schemas"]["TypedTaggedEventStreamEnvelopeEventsRotated"] | components["schemas"]["TypedTaggedEventStreamEnvelopeExtmsgAdapterAdded"] | components["schemas"]["TypedTaggedEventStreamEnvelopeExtmsgAdapterRemoved"] | components["schemas"]["TypedTaggedEventStreamEnvelopeExtmsgBound"] | components["schemas"]["TypedTaggedEventStreamEnvelopeExtmsgGroupCreated"] | components["schemas"]["TypedTaggedEventStreamEnvelopeExtmsgInbound"] | components["schemas"]["TypedTaggedEventStreamEnvelopeExtmsgOutbound"] | components["schemas"]["TypedTaggedEventStreamEnvelopeExtmsgUnbound"] | components["schemas"]["TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone"] | components["schemas"]["TypedTaggedEventStreamEnvelopeGcStoreMaintenanceFailed"] | components["schemas"]["TypedTaggedEventStreamEnvelopeMailArchived"] | components["schemas"]["TypedTaggedEventStreamEnvelopeMailDeleted"] | components["schemas"]["TypedTaggedEventStreamEnvelopeMailMarkedRead"] | components["schemas"]["TypedTaggedEventStreamEnvelopeMailMarkedUnread"] | components["schemas"]["TypedTaggedEventStreamEnvelopeMailRead"] | components["schemas"]["TypedTaggedEventStreamEnvelopeMailReplied"] | components["schemas"]["TypedTaggedEventStreamEnvelopeMailSent"] | components["schemas"]["TypedTaggedEventStreamEnvelopeOrderCompleted"] | components["schemas"]["TypedTaggedEventStreamEnvelopeOrderFailed"] | components["schemas"]["TypedTaggedEventStreamEnvelopeOrderFired"] | components["schemas"]["TypedTaggedEventStreamEnvelopeProjectIdentityStamped"] | components["schemas"]["TypedTaggedEventStreamEnvelopeProviderSwapped"] | components["schemas"]["TypedTaggedEventStreamEnvelopeRequestFailed"] | components["schemas"]["TypedTaggedEventStreamEnvelopeRequestResultCityCreate"] | components["schemas"]["TypedTaggedEventStreamEnvelopeRequestResultCityUnregister"] | components["schemas"]["TypedTaggedEventStreamEnvelopeRequestResultSessionCreate"] | components["schemas"]["TypedTaggedEventStreamEnvelopeRequestResultSessionMessage"] | components["schemas"]["TypedTaggedEventStreamEnvelopeRequestResultSessionSubmit"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionCrashed"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionDrainAckedWithAssignedWork"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionDraining"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionIdleKilled"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionMaxAgeKilled"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionQuarantined"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionStopped"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionStranded"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionSuspended"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionUndrained"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionUpdated"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionWoke"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionWorkQueryFailed"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSupervisorFsPressureSkippedTick"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSupervisorShutdownRequested"] | components["schemas"]["TypedTaggedEventStreamEnvelopeWorkerOperation"] | components["schemas"]["TypedTaggedEventStreamEnvelopeCustom"]; + TypedTaggedEventStreamEnvelope: components["schemas"]["TypedTaggedEventStreamEnvelopeBeadClosed"] | components["schemas"]["TypedTaggedEventStreamEnvelopeBeadCreated"] | components["schemas"]["TypedTaggedEventStreamEnvelopeBeadUpdated"] | components["schemas"]["TypedTaggedEventStreamEnvelopeCityCreated"] | components["schemas"]["TypedTaggedEventStreamEnvelopeCityResumed"] | components["schemas"]["TypedTaggedEventStreamEnvelopeCitySuspended"] | components["schemas"]["TypedTaggedEventStreamEnvelopeCityUnregisterRequested"] | components["schemas"]["TypedTaggedEventStreamEnvelopeControllerStarted"] | components["schemas"]["TypedTaggedEventStreamEnvelopeControllerStopped"] | components["schemas"]["TypedTaggedEventStreamEnvelopeConvoyClosed"] | components["schemas"]["TypedTaggedEventStreamEnvelopeConvoyCreated"] | components["schemas"]["TypedTaggedEventStreamEnvelopeEventsRotated"] | components["schemas"]["TypedTaggedEventStreamEnvelopeExtmsgAdapterAdded"] | components["schemas"]["TypedTaggedEventStreamEnvelopeExtmsgAdapterRemoved"] | components["schemas"]["TypedTaggedEventStreamEnvelopeExtmsgBound"] | components["schemas"]["TypedTaggedEventStreamEnvelopeExtmsgGroupCreated"] | components["schemas"]["TypedTaggedEventStreamEnvelopeExtmsgInbound"] | components["schemas"]["TypedTaggedEventStreamEnvelopeExtmsgOutbound"] | components["schemas"]["TypedTaggedEventStreamEnvelopeExtmsgUnbound"] | components["schemas"]["TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected"] | components["schemas"]["TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone"] | components["schemas"]["TypedTaggedEventStreamEnvelopeGcStoreMaintenanceFailed"] | components["schemas"]["TypedTaggedEventStreamEnvelopeMailArchived"] | components["schemas"]["TypedTaggedEventStreamEnvelopeMailDeleted"] | components["schemas"]["TypedTaggedEventStreamEnvelopeMailMarkedRead"] | components["schemas"]["TypedTaggedEventStreamEnvelopeMailMarkedUnread"] | components["schemas"]["TypedTaggedEventStreamEnvelopeMailRead"] | components["schemas"]["TypedTaggedEventStreamEnvelopeMailReplied"] | components["schemas"]["TypedTaggedEventStreamEnvelopeMailSent"] | components["schemas"]["TypedTaggedEventStreamEnvelopeOrderCompleted"] | components["schemas"]["TypedTaggedEventStreamEnvelopeOrderFailed"] | components["schemas"]["TypedTaggedEventStreamEnvelopeOrderFired"] | components["schemas"]["TypedTaggedEventStreamEnvelopeProjectIdentityStamped"] | components["schemas"]["TypedTaggedEventStreamEnvelopeProviderSwapped"] | components["schemas"]["TypedTaggedEventStreamEnvelopeRequestFailed"] | components["schemas"]["TypedTaggedEventStreamEnvelopeRequestResultCityCreate"] | components["schemas"]["TypedTaggedEventStreamEnvelopeRequestResultCityUnregister"] | components["schemas"]["TypedTaggedEventStreamEnvelopeRequestResultSessionCreate"] | components["schemas"]["TypedTaggedEventStreamEnvelopeRequestResultSessionMessage"] | components["schemas"]["TypedTaggedEventStreamEnvelopeRequestResultSessionSubmit"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionCrashed"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionDrainAckedWithAssignedWork"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionDraining"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionIdleKilled"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionMaxAgeKilled"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionQuarantined"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionStopped"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionStranded"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionSuspended"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionUndrained"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionUpdated"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionWoke"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSessionWorkQueryFailed"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSupervisorFsPressureSkippedTick"] | components["schemas"]["TypedTaggedEventStreamEnvelopeSupervisorShutdownRequested"] | components["schemas"]["TypedTaggedEventStreamEnvelopeWorkerOperation"] | components["schemas"]["TypedTaggedEventStreamEnvelopeCustom"]; /** TypedTaggedEventStreamEnvelope bead.closed */ TypedTaggedEventStreamEnvelopeBeadClosed: { actor: string; @@ -5645,6 +5684,24 @@ export interface components { type: "extmsg.unbound"; workflow?: components["schemas"]["WorkflowEventProjection"]; }; + /** TypedTaggedEventStreamEnvelope gc.store.backstop_leak.detected */ + TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected: { + actor: string; + city: string; + message?: string; + payload: components["schemas"]["StoreBackstopLeakDetectedPayload"]; + /** Format: int64 */ + seq: number; + subject?: string; + /** Format: date-time */ + ts: string; + /** + * @description discriminator enum property added by openapi-typescript + * @enum {string} + */ + type: "gc.store.backstop_leak.detected"; + workflow?: components["schemas"]["WorkflowEventProjection"]; + }; /** TypedTaggedEventStreamEnvelope gc.store.maintenance.done */ TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone: { actor: string; diff --git a/cmd/gc/dashboard/web/src/generated/types.gen.ts b/cmd/gc/dashboard/web/src/generated/types.gen.ts index 45c5ad76f79..639d5ce2f81 100644 --- a/cmd/gc/dashboard/web/src/generated/types.gen.ts +++ b/cmd/gc/dashboard/web/src/generated/types.gen.ts @@ -754,7 +754,7 @@ export type EventEmitRequest = { type: string; }; -export type EventPayload = AdapterEventPayload | BeadEventPayload | BoundEventPayload | CityCreateSucceededPayload | CityLifecyclePayload | CityUnregisterSucceededPayload | GroupCreatedEventPayload | InboundEventPayload | MailEventPayload | NoPayload | OutboundEventPayload | ProjectIdentityStampedPayload | RequestFailedPayload | RotatedPayload | SessionCreateSucceededPayload | SessionDrainAckedWithAssignedWorkPayload | SessionLifecyclePayload | SessionMessageSucceededPayload | SessionSubmitSucceededPayload | StoreMaintenanceDonePayload | StoreMaintenanceFailedPayload | SupervisorFsPressureSkippedTickPayload | SupervisorShutdownPayload | UnboundEventPayload | WorkerOperationEventPayload; +export type EventPayload = AdapterEventPayload | BeadEventPayload | BoundEventPayload | CityCreateSucceededPayload | CityLifecyclePayload | CityUnregisterSucceededPayload | GroupCreatedEventPayload | InboundEventPayload | MailEventPayload | NoPayload | OutboundEventPayload | ProjectIdentityStampedPayload | RequestFailedPayload | RotatedPayload | SessionCreateSucceededPayload | SessionDrainAckedWithAssignedWorkPayload | SessionLifecyclePayload | SessionMessageSucceededPayload | SessionSubmitSucceededPayload | StoreBackstopLeakDetectedPayload | StoreMaintenanceDonePayload | StoreMaintenanceFailedPayload | SupervisorFsPressureSkippedTickPayload | SupervisorShutdownPayload | UnboundEventPayload | WorkerOperationEventPayload; export type EventRotateAnchor = { /** @@ -3002,6 +3002,25 @@ export type StatusWorkCounts = { ready: number; }; +export type StoreBackstopLeakDetectedPayload = { + /** + * Closed ephemeral beads reclaimed by the backstop sweep. + */ + ephemeral_count: number; + /** + * Closed main-tier beads reclaimed by the backstop sweep. + */ + main_count: number; + /** + * Configured leak threshold that the total reclaim count exceeded. + */ + threshold: number; + /** + * Total closed beads reclaimed by the backstop sweep. + */ + total_count: number; +}; + export type StoreMaintenanceDonePayload = { after_bytes: number; before_bytes: number; @@ -3204,6 +3223,8 @@ export type TypedEventStreamEnvelope = ({ } & TypedEventStreamEnvelopeExtmsgOutbound) | ({ type: 'extmsg.unbound'; } & TypedEventStreamEnvelopeExtmsgUnbound) | ({ + type: 'gc.store.backstop_leak.detected'; +} & TypedEventStreamEnvelopeGcStoreBackstopLeakDetected) | ({ type: 'gc.store.maintenance.done'; } & TypedEventStreamEnvelopeGcStoreMaintenanceDone) | ({ type: 'gc.store.maintenance.failed'; @@ -3559,6 +3580,20 @@ export type TypedEventStreamEnvelopeExtmsgUnbound = { workflow?: WorkflowEventProjection; }; +/** + * TypedEventStreamEnvelope gc.store.backstop_leak.detected + */ +export type TypedEventStreamEnvelopeGcStoreBackstopLeakDetected = { + actor: string; + message?: string; + payload: StoreBackstopLeakDetectedPayload; + seq: number; + subject?: string; + ts: string; + type: 'gc.store.backstop_leak.detected'; + workflow?: WorkflowEventProjection; +}; + /** * TypedEventStreamEnvelope gc.store.maintenance.done */ @@ -4107,6 +4142,8 @@ export type TypedTaggedEventStreamEnvelope = ({ } & TypedTaggedEventStreamEnvelopeExtmsgOutbound) | ({ type: 'extmsg.unbound'; } & TypedTaggedEventStreamEnvelopeExtmsgUnbound) | ({ + type: 'gc.store.backstop_leak.detected'; +} & TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected) | ({ type: 'gc.store.maintenance.done'; } & TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone) | ({ type: 'gc.store.maintenance.failed'; @@ -4482,6 +4519,21 @@ export type TypedTaggedEventStreamEnvelopeExtmsgUnbound = { workflow?: WorkflowEventProjection; }; +/** + * TypedTaggedEventStreamEnvelope gc.store.backstop_leak.detected + */ +export type TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected = { + actor: string; + city: string; + message?: string; + payload: StoreBackstopLeakDetectedPayload; + seq: number; + subject?: string; + ts: string; + type: 'gc.store.backstop_leak.detected'; + workflow?: WorkflowEventProjection; +}; + /** * TypedTaggedEventStreamEnvelope gc.store.maintenance.done */ diff --git a/docs/schema/openapi.json b/docs/schema/openapi.json index 301f4c24e06..a241cd02734 100644 --- a/docs/schema/openapi.json +++ b/docs/schema/openapi.json @@ -2075,6 +2075,9 @@ { "$ref": "#/components/schemas/SessionSubmitSucceededPayload" }, + { + "$ref": "#/components/schemas/StoreBackstopLeakDetectedPayload" + }, { "$ref": "#/components/schemas/StoreMaintenanceDonePayload" }, @@ -6957,6 +6960,38 @@ ], "type": "object" }, + "StoreBackstopLeakDetectedPayload": { + "additionalProperties": false, + "properties": { + "ephemeral_count": { + "description": "Closed ephemeral beads reclaimed by the backstop sweep.", + "format": "int64", + "type": "integer" + }, + "main_count": { + "description": "Closed main-tier beads reclaimed by the backstop sweep.", + "format": "int64", + "type": "integer" + }, + "threshold": { + "description": "Configured leak threshold that the total reclaim count exceeded.", + "format": "int64", + "type": "integer" + }, + "total_count": { + "description": "Total closed beads reclaimed by the backstop sweep.", + "format": "int64", + "type": "integer" + } + }, + "required": [ + "main_count", + "ephemeral_count", + "total_count", + "threshold" + ], + "type": "object" + }, "StoreMaintenanceDonePayload": { "additionalProperties": false, "properties": { @@ -7315,6 +7350,7 @@ "extmsg.inbound": "#/components/schemas/TypedEventStreamEnvelopeExtmsgInbound", "extmsg.outbound": "#/components/schemas/TypedEventStreamEnvelopeExtmsgOutbound", "extmsg.unbound": "#/components/schemas/TypedEventStreamEnvelopeExtmsgUnbound", + "gc.store.backstop_leak.detected": "#/components/schemas/TypedEventStreamEnvelopeGcStoreBackstopLeakDetected", "gc.store.maintenance.done": "#/components/schemas/TypedEventStreamEnvelopeGcStoreMaintenanceDone", "gc.store.maintenance.failed": "#/components/schemas/TypedEventStreamEnvelopeGcStoreMaintenanceFailed", "mail.archived": "#/components/schemas/TypedEventStreamEnvelopeMailArchived", @@ -7412,6 +7448,9 @@ { "$ref": "#/components/schemas/TypedEventStreamEnvelopeExtmsgUnbound" }, + { + "$ref": "#/components/schemas/TypedEventStreamEnvelopeGcStoreBackstopLeakDetected" + }, { "$ref": "#/components/schemas/TypedEventStreamEnvelopeGcStoreMaintenanceDone" }, @@ -8067,7 +8106,8 @@ "extmsg.outbound", "events.rotated", "gc.store.maintenance.done", - "gc.store.maintenance.failed" + "gc.store.maintenance.failed", + "gc.store.backstop_leak.detected" ] }, "type": "string" @@ -8422,6 +8462,48 @@ "title": "TypedEventStreamEnvelope extmsg.unbound", "type": "object" }, + "TypedEventStreamEnvelopeGcStoreBackstopLeakDetected": { + "additionalProperties": false, + "properties": { + "actor": { + "type": "string" + }, + "message": { + "type": "string" + }, + "payload": { + "$ref": "#/components/schemas/StoreBackstopLeakDetectedPayload" + }, + "seq": { + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "subject": { + "type": "string" + }, + "ts": { + "format": "date-time", + "type": "string" + }, + "type": { + "const": "gc.store.backstop_leak.detected", + "type": "string" + }, + "workflow": { + "$ref": "#/components/schemas/WorkflowEventProjection" + } + }, + "required": [ + "seq", + "type", + "ts", + "actor", + "payload" + ], + "title": "TypedEventStreamEnvelope gc.store.backstop_leak.detected", + "type": "object" + }, "TypedEventStreamEnvelopeGcStoreMaintenanceDone": { "additionalProperties": false, "properties": { @@ -9957,6 +10039,7 @@ "extmsg.inbound": "#/components/schemas/TypedTaggedEventStreamEnvelopeExtmsgInbound", "extmsg.outbound": "#/components/schemas/TypedTaggedEventStreamEnvelopeExtmsgOutbound", "extmsg.unbound": "#/components/schemas/TypedTaggedEventStreamEnvelopeExtmsgUnbound", + "gc.store.backstop_leak.detected": "#/components/schemas/TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected", "gc.store.maintenance.done": "#/components/schemas/TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone", "gc.store.maintenance.failed": "#/components/schemas/TypedTaggedEventStreamEnvelopeGcStoreMaintenanceFailed", "mail.archived": "#/components/schemas/TypedTaggedEventStreamEnvelopeMailArchived", @@ -10054,6 +10137,9 @@ { "$ref": "#/components/schemas/TypedTaggedEventStreamEnvelopeExtmsgUnbound" }, + { + "$ref": "#/components/schemas/TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected" + }, { "$ref": "#/components/schemas/TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone" }, @@ -10756,7 +10842,8 @@ "extmsg.outbound", "events.rotated", "gc.store.maintenance.done", - "gc.store.maintenance.failed" + "gc.store.maintenance.failed", + "gc.store.backstop_leak.detected" ] }, "type": "string" @@ -11144,6 +11231,52 @@ "title": "TypedTaggedEventStreamEnvelope extmsg.unbound", "type": "object" }, + "TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected": { + "additionalProperties": false, + "properties": { + "actor": { + "type": "string" + }, + "city": { + "type": "string" + }, + "message": { + "type": "string" + }, + "payload": { + "$ref": "#/components/schemas/StoreBackstopLeakDetectedPayload" + }, + "seq": { + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "subject": { + "type": "string" + }, + "ts": { + "format": "date-time", + "type": "string" + }, + "type": { + "const": "gc.store.backstop_leak.detected", + "type": "string" + }, + "workflow": { + "$ref": "#/components/schemas/WorkflowEventProjection" + } + }, + "required": [ + "seq", + "type", + "ts", + "actor", + "payload", + "city" + ], + "title": "TypedTaggedEventStreamEnvelope gc.store.backstop_leak.detected", + "type": "object" + }, "TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone": { "additionalProperties": false, "properties": { diff --git a/docs/schema/openapi.txt b/docs/schema/openapi.txt index 301f4c24e06..a241cd02734 100644 --- a/docs/schema/openapi.txt +++ b/docs/schema/openapi.txt @@ -2075,6 +2075,9 @@ { "$ref": "#/components/schemas/SessionSubmitSucceededPayload" }, + { + "$ref": "#/components/schemas/StoreBackstopLeakDetectedPayload" + }, { "$ref": "#/components/schemas/StoreMaintenanceDonePayload" }, @@ -6957,6 +6960,38 @@ ], "type": "object" }, + "StoreBackstopLeakDetectedPayload": { + "additionalProperties": false, + "properties": { + "ephemeral_count": { + "description": "Closed ephemeral beads reclaimed by the backstop sweep.", + "format": "int64", + "type": "integer" + }, + "main_count": { + "description": "Closed main-tier beads reclaimed by the backstop sweep.", + "format": "int64", + "type": "integer" + }, + "threshold": { + "description": "Configured leak threshold that the total reclaim count exceeded.", + "format": "int64", + "type": "integer" + }, + "total_count": { + "description": "Total closed beads reclaimed by the backstop sweep.", + "format": "int64", + "type": "integer" + } + }, + "required": [ + "main_count", + "ephemeral_count", + "total_count", + "threshold" + ], + "type": "object" + }, "StoreMaintenanceDonePayload": { "additionalProperties": false, "properties": { @@ -7315,6 +7350,7 @@ "extmsg.inbound": "#/components/schemas/TypedEventStreamEnvelopeExtmsgInbound", "extmsg.outbound": "#/components/schemas/TypedEventStreamEnvelopeExtmsgOutbound", "extmsg.unbound": "#/components/schemas/TypedEventStreamEnvelopeExtmsgUnbound", + "gc.store.backstop_leak.detected": "#/components/schemas/TypedEventStreamEnvelopeGcStoreBackstopLeakDetected", "gc.store.maintenance.done": "#/components/schemas/TypedEventStreamEnvelopeGcStoreMaintenanceDone", "gc.store.maintenance.failed": "#/components/schemas/TypedEventStreamEnvelopeGcStoreMaintenanceFailed", "mail.archived": "#/components/schemas/TypedEventStreamEnvelopeMailArchived", @@ -7412,6 +7448,9 @@ { "$ref": "#/components/schemas/TypedEventStreamEnvelopeExtmsgUnbound" }, + { + "$ref": "#/components/schemas/TypedEventStreamEnvelopeGcStoreBackstopLeakDetected" + }, { "$ref": "#/components/schemas/TypedEventStreamEnvelopeGcStoreMaintenanceDone" }, @@ -8067,7 +8106,8 @@ "extmsg.outbound", "events.rotated", "gc.store.maintenance.done", - "gc.store.maintenance.failed" + "gc.store.maintenance.failed", + "gc.store.backstop_leak.detected" ] }, "type": "string" @@ -8422,6 +8462,48 @@ "title": "TypedEventStreamEnvelope extmsg.unbound", "type": "object" }, + "TypedEventStreamEnvelopeGcStoreBackstopLeakDetected": { + "additionalProperties": false, + "properties": { + "actor": { + "type": "string" + }, + "message": { + "type": "string" + }, + "payload": { + "$ref": "#/components/schemas/StoreBackstopLeakDetectedPayload" + }, + "seq": { + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "subject": { + "type": "string" + }, + "ts": { + "format": "date-time", + "type": "string" + }, + "type": { + "const": "gc.store.backstop_leak.detected", + "type": "string" + }, + "workflow": { + "$ref": "#/components/schemas/WorkflowEventProjection" + } + }, + "required": [ + "seq", + "type", + "ts", + "actor", + "payload" + ], + "title": "TypedEventStreamEnvelope gc.store.backstop_leak.detected", + "type": "object" + }, "TypedEventStreamEnvelopeGcStoreMaintenanceDone": { "additionalProperties": false, "properties": { @@ -9957,6 +10039,7 @@ "extmsg.inbound": "#/components/schemas/TypedTaggedEventStreamEnvelopeExtmsgInbound", "extmsg.outbound": "#/components/schemas/TypedTaggedEventStreamEnvelopeExtmsgOutbound", "extmsg.unbound": "#/components/schemas/TypedTaggedEventStreamEnvelopeExtmsgUnbound", + "gc.store.backstop_leak.detected": "#/components/schemas/TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected", "gc.store.maintenance.done": "#/components/schemas/TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone", "gc.store.maintenance.failed": "#/components/schemas/TypedTaggedEventStreamEnvelopeGcStoreMaintenanceFailed", "mail.archived": "#/components/schemas/TypedTaggedEventStreamEnvelopeMailArchived", @@ -10054,6 +10137,9 @@ { "$ref": "#/components/schemas/TypedTaggedEventStreamEnvelopeExtmsgUnbound" }, + { + "$ref": "#/components/schemas/TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected" + }, { "$ref": "#/components/schemas/TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone" }, @@ -10756,7 +10842,8 @@ "extmsg.outbound", "events.rotated", "gc.store.maintenance.done", - "gc.store.maintenance.failed" + "gc.store.maintenance.failed", + "gc.store.backstop_leak.detected" ] }, "type": "string" @@ -11144,6 +11231,52 @@ "title": "TypedTaggedEventStreamEnvelope extmsg.unbound", "type": "object" }, + "TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected": { + "additionalProperties": false, + "properties": { + "actor": { + "type": "string" + }, + "city": { + "type": "string" + }, + "message": { + "type": "string" + }, + "payload": { + "$ref": "#/components/schemas/StoreBackstopLeakDetectedPayload" + }, + "seq": { + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "subject": { + "type": "string" + }, + "ts": { + "format": "date-time", + "type": "string" + }, + "type": { + "const": "gc.store.backstop_leak.detected", + "type": "string" + }, + "workflow": { + "$ref": "#/components/schemas/WorkflowEventProjection" + } + }, + "required": [ + "seq", + "type", + "ts", + "actor", + "payload", + "city" + ], + "title": "TypedTaggedEventStreamEnvelope gc.store.backstop_leak.detected", + "type": "object" + }, "TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone": { "additionalProperties": false, "properties": { diff --git a/internal/api/genclient/client_gen.go b/internal/api/genclient/client_gen.go index b87f989eb7c..32f335dd363 100644 --- a/internal/api/genclient/client_gen.go +++ b/internal/api/genclient/client_gen.go @@ -2834,6 +2834,21 @@ type StatusWorkCounts struct { Ready int64 `json:"ready"` } +// StoreBackstopLeakDetectedPayload defines model for StoreBackstopLeakDetectedPayload. +type StoreBackstopLeakDetectedPayload struct { + // EphemeralCount Closed ephemeral beads reclaimed by the backstop sweep. + EphemeralCount int64 `json:"ephemeral_count"` + + // MainCount Closed main-tier beads reclaimed by the backstop sweep. + MainCount int64 `json:"main_count"` + + // Threshold Configured leak threshold that the total reclaim count exceeded. + Threshold int64 `json:"threshold"` + + // TotalCount Total closed beads reclaimed by the backstop sweep. + TotalCount int64 `json:"total_count"` +} + // StoreMaintenanceDonePayload defines model for StoreMaintenanceDonePayload. type StoreMaintenanceDonePayload struct { AfterBytes int64 `json:"after_bytes"` @@ -3216,6 +3231,18 @@ type TypedEventStreamEnvelopeExtmsgUnbound struct { Workflow *WorkflowEventProjection `json:"workflow,omitempty"` } +// TypedEventStreamEnvelopeGcStoreBackstopLeakDetected defines model for TypedEventStreamEnvelopeGcStoreBackstopLeakDetected. +type TypedEventStreamEnvelopeGcStoreBackstopLeakDetected struct { + Actor string `json:"actor"` + Message *string `json:"message,omitempty"` + Payload StoreBackstopLeakDetectedPayload `json:"payload"` + Seq int64 `json:"seq"` + Subject *string `json:"subject,omitempty"` + Ts time.Time `json:"ts"` + Type string `json:"type"` + Workflow *WorkflowEventProjection `json:"workflow,omitempty"` +} + // TypedEventStreamEnvelopeGcStoreMaintenanceDone defines model for TypedEventStreamEnvelopeGcStoreMaintenanceDone. type TypedEventStreamEnvelopeGcStoreMaintenanceDone struct { Actor string `json:"actor"` @@ -3913,6 +3940,19 @@ type TypedTaggedEventStreamEnvelopeExtmsgUnbound struct { Workflow *WorkflowEventProjection `json:"workflow,omitempty"` } +// TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected defines model for TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected. +type TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected struct { + Actor string `json:"actor"` + City string `json:"city"` + Message *string `json:"message,omitempty"` + Payload StoreBackstopLeakDetectedPayload `json:"payload"` + Seq int64 `json:"seq"` + Subject *string `json:"subject,omitempty"` + Ts time.Time `json:"ts"` + Type string `json:"type"` + Workflow *WorkflowEventProjection `json:"workflow,omitempty"` +} + // TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone defines model for TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone. type TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone struct { Actor string `json:"actor"` @@ -6083,6 +6123,32 @@ func (t *EventPayload) MergeSessionSubmitSucceededPayload(v SessionSubmitSucceed return err } +// AsStoreBackstopLeakDetectedPayload returns the union data inside the EventPayload as a StoreBackstopLeakDetectedPayload +func (t EventPayload) AsStoreBackstopLeakDetectedPayload() (StoreBackstopLeakDetectedPayload, error) { + var body StoreBackstopLeakDetectedPayload + err := json.Unmarshal(t.union, &body) + return body, err +} + +// FromStoreBackstopLeakDetectedPayload overwrites any union data inside the EventPayload as the provided StoreBackstopLeakDetectedPayload +func (t *EventPayload) FromStoreBackstopLeakDetectedPayload(v StoreBackstopLeakDetectedPayload) error { + b, err := json.Marshal(v) + t.union = b + return err +} + +// MergeStoreBackstopLeakDetectedPayload performs a merge with any union data inside the EventPayload, using the provided StoreBackstopLeakDetectedPayload +func (t *EventPayload) MergeStoreBackstopLeakDetectedPayload(v StoreBackstopLeakDetectedPayload) error { + b, err := json.Marshal(v) + if err != nil { + return err + } + + merged, err := runtime.JSONMerge(t.union, b) + t.union = merged + return err +} + // AsStoreMaintenanceDonePayload returns the union data inside the EventPayload as a StoreMaintenanceDonePayload func (t EventPayload) AsStoreMaintenanceDonePayload() (StoreMaintenanceDonePayload, error) { var body StoreMaintenanceDonePayload @@ -6869,6 +6935,34 @@ func (t *TypedEventStreamEnvelope) MergeTypedEventStreamEnvelopeExtmsgUnbound(v return err } +// AsTypedEventStreamEnvelopeGcStoreBackstopLeakDetected returns the union data inside the TypedEventStreamEnvelope as a TypedEventStreamEnvelopeGcStoreBackstopLeakDetected +func (t TypedEventStreamEnvelope) AsTypedEventStreamEnvelopeGcStoreBackstopLeakDetected() (TypedEventStreamEnvelopeGcStoreBackstopLeakDetected, error) { + var body TypedEventStreamEnvelopeGcStoreBackstopLeakDetected + err := json.Unmarshal(t.union, &body) + return body, err +} + +// FromTypedEventStreamEnvelopeGcStoreBackstopLeakDetected overwrites any union data inside the TypedEventStreamEnvelope as the provided TypedEventStreamEnvelopeGcStoreBackstopLeakDetected +func (t *TypedEventStreamEnvelope) FromTypedEventStreamEnvelopeGcStoreBackstopLeakDetected(v TypedEventStreamEnvelopeGcStoreBackstopLeakDetected) error { + v.Type = "gc.store.backstop_leak.detected" + b, err := json.Marshal(v) + t.union = b + return err +} + +// MergeTypedEventStreamEnvelopeGcStoreBackstopLeakDetected performs a merge with any union data inside the TypedEventStreamEnvelope, using the provided TypedEventStreamEnvelopeGcStoreBackstopLeakDetected +func (t *TypedEventStreamEnvelope) MergeTypedEventStreamEnvelopeGcStoreBackstopLeakDetected(v TypedEventStreamEnvelopeGcStoreBackstopLeakDetected) error { + v.Type = "gc.store.backstop_leak.detected" + b, err := json.Marshal(v) + if err != nil { + return err + } + + merged, err := runtime.JSONMerge(t.union, b) + t.union = merged + return err +} + // AsTypedEventStreamEnvelopeGcStoreMaintenanceDone returns the union data inside the TypedEventStreamEnvelope as a TypedEventStreamEnvelopeGcStoreMaintenanceDone func (t TypedEventStreamEnvelope) AsTypedEventStreamEnvelopeGcStoreMaintenanceDone() (TypedEventStreamEnvelopeGcStoreMaintenanceDone, error) { var body TypedEventStreamEnvelopeGcStoreMaintenanceDone @@ -7959,6 +8053,8 @@ func (t TypedEventStreamEnvelope) ValueByDiscriminator() (interface{}, error) { return t.AsTypedEventStreamEnvelopeExtmsgOutbound() case "extmsg.unbound": return t.AsTypedEventStreamEnvelopeExtmsgUnbound() + case "gc.store.backstop_leak.detected": + return t.AsTypedEventStreamEnvelopeGcStoreBackstopLeakDetected() case "gc.store.maintenance.done": return t.AsTypedEventStreamEnvelopeGcStoreMaintenanceDone() case "gc.store.maintenance.failed": @@ -8578,6 +8674,34 @@ func (t *TypedTaggedEventStreamEnvelope) MergeTypedTaggedEventStreamEnvelopeExtm return err } +// AsTypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected returns the union data inside the TypedTaggedEventStreamEnvelope as a TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected +func (t TypedTaggedEventStreamEnvelope) AsTypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected() (TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected, error) { + var body TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected + err := json.Unmarshal(t.union, &body) + return body, err +} + +// FromTypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected overwrites any union data inside the TypedTaggedEventStreamEnvelope as the provided TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected +func (t *TypedTaggedEventStreamEnvelope) FromTypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected(v TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected) error { + v.Type = "gc.store.backstop_leak.detected" + b, err := json.Marshal(v) + t.union = b + return err +} + +// MergeTypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected performs a merge with any union data inside the TypedTaggedEventStreamEnvelope, using the provided TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected +func (t *TypedTaggedEventStreamEnvelope) MergeTypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected(v TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected) error { + v.Type = "gc.store.backstop_leak.detected" + b, err := json.Marshal(v) + if err != nil { + return err + } + + merged, err := runtime.JSONMerge(t.union, b) + t.union = merged + return err +} + // AsTypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone returns the union data inside the TypedTaggedEventStreamEnvelope as a TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone func (t TypedTaggedEventStreamEnvelope) AsTypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone() (TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone, error) { var body TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone @@ -9668,6 +9792,8 @@ func (t TypedTaggedEventStreamEnvelope) ValueByDiscriminator() (interface{}, err return t.AsTypedTaggedEventStreamEnvelopeExtmsgOutbound() case "extmsg.unbound": return t.AsTypedTaggedEventStreamEnvelopeExtmsgUnbound() + case "gc.store.backstop_leak.detected": + return t.AsTypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected() case "gc.store.maintenance.done": return t.AsTypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone() case "gc.store.maintenance.failed": diff --git a/internal/api/openapi.json b/internal/api/openapi.json index 301f4c24e06..a241cd02734 100644 --- a/internal/api/openapi.json +++ b/internal/api/openapi.json @@ -2075,6 +2075,9 @@ { "$ref": "#/components/schemas/SessionSubmitSucceededPayload" }, + { + "$ref": "#/components/schemas/StoreBackstopLeakDetectedPayload" + }, { "$ref": "#/components/schemas/StoreMaintenanceDonePayload" }, @@ -6957,6 +6960,38 @@ ], "type": "object" }, + "StoreBackstopLeakDetectedPayload": { + "additionalProperties": false, + "properties": { + "ephemeral_count": { + "description": "Closed ephemeral beads reclaimed by the backstop sweep.", + "format": "int64", + "type": "integer" + }, + "main_count": { + "description": "Closed main-tier beads reclaimed by the backstop sweep.", + "format": "int64", + "type": "integer" + }, + "threshold": { + "description": "Configured leak threshold that the total reclaim count exceeded.", + "format": "int64", + "type": "integer" + }, + "total_count": { + "description": "Total closed beads reclaimed by the backstop sweep.", + "format": "int64", + "type": "integer" + } + }, + "required": [ + "main_count", + "ephemeral_count", + "total_count", + "threshold" + ], + "type": "object" + }, "StoreMaintenanceDonePayload": { "additionalProperties": false, "properties": { @@ -7315,6 +7350,7 @@ "extmsg.inbound": "#/components/schemas/TypedEventStreamEnvelopeExtmsgInbound", "extmsg.outbound": "#/components/schemas/TypedEventStreamEnvelopeExtmsgOutbound", "extmsg.unbound": "#/components/schemas/TypedEventStreamEnvelopeExtmsgUnbound", + "gc.store.backstop_leak.detected": "#/components/schemas/TypedEventStreamEnvelopeGcStoreBackstopLeakDetected", "gc.store.maintenance.done": "#/components/schemas/TypedEventStreamEnvelopeGcStoreMaintenanceDone", "gc.store.maintenance.failed": "#/components/schemas/TypedEventStreamEnvelopeGcStoreMaintenanceFailed", "mail.archived": "#/components/schemas/TypedEventStreamEnvelopeMailArchived", @@ -7412,6 +7448,9 @@ { "$ref": "#/components/schemas/TypedEventStreamEnvelopeExtmsgUnbound" }, + { + "$ref": "#/components/schemas/TypedEventStreamEnvelopeGcStoreBackstopLeakDetected" + }, { "$ref": "#/components/schemas/TypedEventStreamEnvelopeGcStoreMaintenanceDone" }, @@ -8067,7 +8106,8 @@ "extmsg.outbound", "events.rotated", "gc.store.maintenance.done", - "gc.store.maintenance.failed" + "gc.store.maintenance.failed", + "gc.store.backstop_leak.detected" ] }, "type": "string" @@ -8422,6 +8462,48 @@ "title": "TypedEventStreamEnvelope extmsg.unbound", "type": "object" }, + "TypedEventStreamEnvelopeGcStoreBackstopLeakDetected": { + "additionalProperties": false, + "properties": { + "actor": { + "type": "string" + }, + "message": { + "type": "string" + }, + "payload": { + "$ref": "#/components/schemas/StoreBackstopLeakDetectedPayload" + }, + "seq": { + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "subject": { + "type": "string" + }, + "ts": { + "format": "date-time", + "type": "string" + }, + "type": { + "const": "gc.store.backstop_leak.detected", + "type": "string" + }, + "workflow": { + "$ref": "#/components/schemas/WorkflowEventProjection" + } + }, + "required": [ + "seq", + "type", + "ts", + "actor", + "payload" + ], + "title": "TypedEventStreamEnvelope gc.store.backstop_leak.detected", + "type": "object" + }, "TypedEventStreamEnvelopeGcStoreMaintenanceDone": { "additionalProperties": false, "properties": { @@ -9957,6 +10039,7 @@ "extmsg.inbound": "#/components/schemas/TypedTaggedEventStreamEnvelopeExtmsgInbound", "extmsg.outbound": "#/components/schemas/TypedTaggedEventStreamEnvelopeExtmsgOutbound", "extmsg.unbound": "#/components/schemas/TypedTaggedEventStreamEnvelopeExtmsgUnbound", + "gc.store.backstop_leak.detected": "#/components/schemas/TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected", "gc.store.maintenance.done": "#/components/schemas/TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone", "gc.store.maintenance.failed": "#/components/schemas/TypedTaggedEventStreamEnvelopeGcStoreMaintenanceFailed", "mail.archived": "#/components/schemas/TypedTaggedEventStreamEnvelopeMailArchived", @@ -10054,6 +10137,9 @@ { "$ref": "#/components/schemas/TypedTaggedEventStreamEnvelopeExtmsgUnbound" }, + { + "$ref": "#/components/schemas/TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected" + }, { "$ref": "#/components/schemas/TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone" }, @@ -10756,7 +10842,8 @@ "extmsg.outbound", "events.rotated", "gc.store.maintenance.done", - "gc.store.maintenance.failed" + "gc.store.maintenance.failed", + "gc.store.backstop_leak.detected" ] }, "type": "string" @@ -11144,6 +11231,52 @@ "title": "TypedTaggedEventStreamEnvelope extmsg.unbound", "type": "object" }, + "TypedTaggedEventStreamEnvelopeGcStoreBackstopLeakDetected": { + "additionalProperties": false, + "properties": { + "actor": { + "type": "string" + }, + "city": { + "type": "string" + }, + "message": { + "type": "string" + }, + "payload": { + "$ref": "#/components/schemas/StoreBackstopLeakDetectedPayload" + }, + "seq": { + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "subject": { + "type": "string" + }, + "ts": { + "format": "date-time", + "type": "string" + }, + "type": { + "const": "gc.store.backstop_leak.detected", + "type": "string" + }, + "workflow": { + "$ref": "#/components/schemas/WorkflowEventProjection" + } + }, + "required": [ + "seq", + "type", + "ts", + "actor", + "payload", + "city" + ], + "title": "TypedTaggedEventStreamEnvelope gc.store.backstop_leak.detected", + "type": "object" + }, "TypedTaggedEventStreamEnvelopeGcStoreMaintenanceDone": { "additionalProperties": false, "properties": { diff --git a/internal/beads/hqstore_ttl.go b/internal/beads/hqstore_ttl.go index 8c13b930dab..2251f8ce0b3 100644 --- a/internal/beads/hqstore_ttl.go +++ b/internal/beads/hqstore_ttl.go @@ -1,9 +1,30 @@ package beads import ( + "encoding/json" + "log" "time" + + "github.com/gastownhall/gascity/internal/events" ) +var hqStoreTTLLogf = log.Printf + +type hqTTLSweepResult struct { + Expired int + Retention int + Backstop hqBackstopReclaim +} + +type hqBackstopReclaim struct { + Main int + Ephemeral int +} + +func (r hqBackstopReclaim) total() int { + return r.Main + r.Ephemeral +} + // PurgeExpired removes ephemeral beads whose expires_at metadata is in the // past. It returns the number of beads removed. func (s *HQStore) PurgeExpired() (int, error) { @@ -61,6 +82,11 @@ func (s *HQStore) DrainRetentionQueue() int { // than the supplied tier cutoff. It scans main-tier and ephemeral records with // their respective cutoffs and returns the total number deleted. func (s *HQStore) PurgeBackstop(mainCutoff, ephemeralCutoff time.Duration) (int, error) { + reclaim, err := s.purgeBackstop(mainCutoff, ephemeralCutoff) + return reclaim.total(), err +} + +func (s *HQStore) purgeBackstop(mainCutoff, ephemeralCutoff time.Duration) (hqBackstopReclaim, error) { now := time.Now() mainBefore := now.Add(-mainCutoff) ephemeralBefore := now.Add(-ephemeralCutoff) @@ -68,24 +94,101 @@ func (s *HQStore) PurgeBackstop(mainCutoff, ephemeralCutoff time.Duration) (int, s.mu.Lock() defer s.mu.Unlock() if err := s.ensureOpenLocked(); err != nil { - return 0, err + return hqBackstopReclaim{}, err } - ids := make([]string, 0) + type candidate struct { + id string + ephemeral bool + } + + candidates := make([]candidate, 0) for id, bead := range s.main { if hqClosedBefore(bead, mainBefore) { - ids = append(ids, id) + candidates = append(candidates, candidate{id: id}) } } for id, bead := range s.wisps { if hqClosedBefore(bead, ephemeralBefore) { - ids = append(ids, id) + candidates = append(candidates, candidate{id: id, ephemeral: true}) } } - for _, id := range ids { - s.deleteLocked(id) + + var reclaim hqBackstopReclaim + for _, candidate := range candidates { + s.deleteLocked(candidate.id) + if candidate.ephemeral { + reclaim.Ephemeral++ + } else { + reclaim.Main++ + } } - return len(ids), nil + return reclaim, nil +} + +func (s *HQStore) runTTLSweep() hqTTLSweepResult { + var result hqTTLSweepResult + + expired, err := s.PurgeExpired() + if err != nil { + hqStoreTTLLogf("hqstore ttl sweep: purge expired: %v", err) + return result + } + result.Expired = expired + + result.Retention = s.DrainRetentionQueue() + + backstop, err := s.purgeBackstop(s.mainTierBackstopTTL, s.ephemeralBackstopTTL) + if err != nil { + hqStoreTTLLogf("hqstore ttl sweep: purge backstop: %v", err) + return result + } + result.Backstop = backstop + s.reportBackstopReclaim(backstop) + return result +} + +func (s *HQStore) reportBackstopReclaim(reclaim hqBackstopReclaim) { + total := reclaim.total() + if total == 0 { + return + } + if s.leakThreshold > 0 && total > s.leakThreshold { + hqStoreTTLLogf("hqstore ttl sweep: backstop leak detected reclaimed=%d threshold=%d main=%d ephemeral=%d", + total, s.leakThreshold, reclaim.Main, reclaim.Ephemeral) + s.emitBackstopLeakDetected(reclaim) + return + } + if s.leakThreshold > 0 { + hqStoreTTLLogf("hqstore ttl sweep: backstop reclaimed=%d threshold=%d main=%d ephemeral=%d", + total, s.leakThreshold, reclaim.Main, reclaim.Ephemeral) + return + } + hqStoreTTLLogf("hqstore ttl sweep: backstop reclaimed=%d leak_detector=disabled main=%d ephemeral=%d", + total, reclaim.Main, reclaim.Ephemeral) +} + +func (s *HQStore) emitBackstopLeakDetected(reclaim hqBackstopReclaim) { + if s.leakRecorder == nil { + return + } + payload := events.StoreBackstopLeakDetectedPayload{ + MainCount: reclaim.Main, + EphemeralCount: reclaim.Ephemeral, + TotalCount: reclaim.total(), + Threshold: s.leakThreshold, + } + raw, err := json.Marshal(payload) + if err != nil { + hqStoreTTLLogf("hqstore ttl sweep: marshal backstop leak event: %v", err) + return + } + s.leakRecorder.Record(events.Event{ + Type: events.StoreBackstopLeakDetected, + Actor: "controller", + Subject: s.dir, + Payload: raw, + }) } func hqBeadExpiresAt(b Bead) (time.Time, bool) { @@ -160,7 +263,7 @@ func (s *HQStore) startTTLSweeper() { for { select { case <-ticker.C: - _, _ = s.PurgeExpired() + s.runTTLSweep() case <-s.ttlStop: return } diff --git a/internal/beads/hqstore_ttl_internal_test.go b/internal/beads/hqstore_ttl_internal_test.go new file mode 100644 index 00000000000..ec4b032293a --- /dev/null +++ b/internal/beads/hqstore_ttl_internal_test.go @@ -0,0 +1,200 @@ +package beads + +import ( + "encoding/json" + "errors" + "fmt" + "strings" + "testing" + "time" + + "github.com/gastownhall/gascity/internal/events" +) + +func TestHQStoreTTLSweepRunsExpiredRetentionThenBackstop(t *testing.T) { + store := openInternalHQStoreForTest(t, + WithHQStoreSnapshotInterval(0), + WithHQStoreMainTierBackstopTTL(time.Hour), + WithHQStoreEphemeralBackstopTTL(time.Hour), + WithHQStoreLeakDetector(0, events.NewFake()), + ) + old := time.Now().Add(-2 * time.Hour) + + expiredWisp := createClosedInternalHQBead(t, store, Bead{ + Title: "expired-wisp", + Ephemeral: true, + Metadata: map[string]string{ + hqExpiresAtMetadataKey: time.Now().Add(-time.Minute).Format(time.RFC3339Nano), + }, + }, old) + retainedMain := createRetainedInternalHQBead(t, store, Bead{Title: "retained-main"}, old, time.Now().Add(-time.Minute)) + orphanMain := createClosedInternalHQBead(t, store, Bead{Title: "orphan-main"}, old) + + result := store.runTTLSweep() + + if result.Expired != 1 { + t.Fatalf("Expired = %d, want 1", result.Expired) + } + if result.Retention != 1 { + t.Fatalf("Retention = %d, want 1", result.Retention) + } + if result.Backstop.Main != 1 || result.Backstop.Ephemeral != 0 { + t.Fatalf("Backstop = main:%d ephemeral:%d, want main:1 ephemeral:0", result.Backstop.Main, result.Backstop.Ephemeral) + } + for _, id := range []string{expiredWisp.ID, retainedMain.ID, orphanMain.ID} { + if _, err := store.Get(id); !errors.Is(err, ErrNotFound) { + t.Fatalf("Get(%q) error = %v, want ErrNotFound", id, err) + } + } +} + +func TestHQStoreBackstopLeakDetectorEmitsTypedEventAboveThreshold(t *testing.T) { + rec := events.NewFake() + store := openInternalHQStoreForTest(t, + WithHQStoreSnapshotInterval(0), + WithHQStoreMainTierBackstopTTL(time.Hour), + WithHQStoreEphemeralBackstopTTL(time.Hour), + WithHQStoreLeakDetector(2, rec), + ) + old := time.Now().Add(-2 * time.Hour) + createClosedInternalHQBead(t, store, Bead{Title: "main-a"}, old) + createClosedInternalHQBead(t, store, Bead{Title: "main-b"}, old) + createClosedInternalHQBead(t, store, Bead{Title: "wisp", Ephemeral: true}, old) + + result := store.runTTLSweep() + + if result.Backstop.total() != 3 { + t.Fatalf("backstop total = %d, want 3", result.Backstop.total()) + } + if len(rec.Events) != 1 { + t.Fatalf("events recorded = %d, want 1: %+v", len(rec.Events), rec.Events) + } + ev := rec.Events[0] + if ev.Type != events.StoreBackstopLeakDetected { + t.Fatalf("event type = %q, want %q", ev.Type, events.StoreBackstopLeakDetected) + } + if ev.Actor != "controller" { + t.Fatalf("event actor = %q, want controller", ev.Actor) + } + if ev.Subject != store.dir { + t.Fatalf("event subject = %q, want %q", ev.Subject, store.dir) + } + var payload events.StoreBackstopLeakDetectedPayload + if err := json.Unmarshal(ev.Payload, &payload); err != nil { + t.Fatalf("unmarshal payload: %v", err) + } + if payload.MainCount != 2 || payload.EphemeralCount != 1 || payload.TotalCount != 3 || payload.Threshold != 2 { + t.Fatalf("payload = %+v, want main=2 ephemeral=1 total=3 threshold=2", payload) + } +} + +func TestHQStoreBackstopLeakDetectorSilentAtOrBelowThreshold(t *testing.T) { + rec := events.NewFake() + store := openInternalHQStoreForTest(t, + WithHQStoreSnapshotInterval(0), + WithHQStoreMainTierBackstopTTL(time.Hour), + WithHQStoreEphemeralBackstopTTL(time.Hour), + WithHQStoreLeakDetector(3, rec), + ) + old := time.Now().Add(-2 * time.Hour) + createClosedInternalHQBead(t, store, Bead{Title: "main-a"}, old) + createClosedInternalHQBead(t, store, Bead{Title: "main-b"}, old) + createClosedInternalHQBead(t, store, Bead{Title: "wisp", Ephemeral: true}, old) + + result := store.runTTLSweep() + + if result.Backstop.total() != 3 { + t.Fatalf("backstop total = %d, want 3", result.Backstop.total()) + } + if len(rec.Events) != 0 { + t.Fatalf("events recorded = %d, want 0: %+v", len(rec.Events), rec.Events) + } +} + +func TestHQStoreBackstopReclaimLogsNormalAndLeakReclaimDistinctly(t *testing.T) { + oldLogf := hqStoreTTLLogf + var logs []string + hqStoreTTLLogf = func(format string, args ...any) { + logs = append(logs, fmt.Sprintf(format, args...)) + } + t.Cleanup(func() { hqStoreTTLLogf = oldLogf }) + + normal := openInternalHQStoreForTest(t, + WithHQStoreSnapshotInterval(0), + WithHQStoreMainTierBackstopTTL(time.Hour), + WithHQStoreEphemeralBackstopTTL(time.Hour), + WithHQStoreLeakDetector(5, events.NewFake()), + ) + createClosedInternalHQBead(t, normal, Bead{Title: "normal"}, time.Now().Add(-2*time.Hour)) + normal.runTTLSweep() + + if !joinedLogsContain(logs, "backstop reclaimed") { + t.Fatalf("normal reclaim logs = %q, want backstop reclaimed", logs) + } + if joinedLogsContain(logs, "backstop leak detected") { + t.Fatalf("normal reclaim logs = %q, did not want leak detection", logs) + } + + logs = nil + leak := openInternalHQStoreForTest(t, + WithHQStoreSnapshotInterval(0), + WithHQStoreMainTierBackstopTTL(time.Hour), + WithHQStoreEphemeralBackstopTTL(time.Hour), + WithHQStoreLeakDetector(1, events.NewFake()), + ) + createClosedInternalHQBead(t, leak, Bead{Title: "leak-a"}, time.Now().Add(-2*time.Hour)) + createClosedInternalHQBead(t, leak, Bead{Title: "leak-b"}, time.Now().Add(-2*time.Hour)) + leak.runTTLSweep() + + if !joinedLogsContain(logs, "backstop leak detected") { + t.Fatalf("leak reclaim logs = %q, want leak detection", logs) + } +} + +func openInternalHQStoreForTest(t *testing.T, opts ...HQStoreOption) *HQStore { + t.Helper() + store, err := OpenHQStore(t.TempDir(), opts...) + if err != nil { + t.Fatalf("OpenHQStore: %v", err) + } + t.Cleanup(func() { + if err := store.Shutdown(); err != nil { + t.Errorf("Shutdown: %v", err) + } + }) + return store +} + +func createClosedInternalHQBead(t *testing.T, store *HQStore, b Bead, closedAt time.Time) Bead { + t.Helper() + created, err := store.Create(b) + if err != nil { + t.Fatalf("Create %q: %v", b.Title, err) + } + if err := store.Close(created.ID); err != nil { + t.Fatalf("Close %q: %v", created.ID, err) + } + if err := store.SetMetadata(created.ID, hqClosedAtMetadataKey, closedAt.Format(time.RFC3339Nano)); err != nil { + t.Fatalf("SetMetadata closed_at %q: %v", created.ID, err) + } + return created +} + +func createRetainedInternalHQBead(t *testing.T, store *HQStore, b Bead, closedAt, deleteAfter time.Time) Bead { + t.Helper() + created, err := store.Create(b) + if err != nil { + t.Fatalf("Create %q: %v", b.Title, err) + } + if err := store.CloseWithRetention(created.ID, deleteAfter); err != nil { + t.Fatalf("CloseWithRetention %q: %v", created.ID, err) + } + if err := store.SetMetadata(created.ID, hqClosedAtMetadataKey, closedAt.Format(time.RFC3339Nano)); err != nil { + t.Fatalf("SetMetadata closed_at %q: %v", created.ID, err) + } + return created +} + +func joinedLogsContain(logs []string, want string) bool { + return strings.Contains(strings.Join(logs, "\n"), want) +} diff --git a/internal/events/events.go b/internal/events/events.go index 0bf55433d3b..769d9dd591e 100644 --- a/internal/events/events.go +++ b/internal/events/events.go @@ -112,11 +112,12 @@ const ( // across rotations. EventsRotated = "events.rotated" - // Dolt store maintenance events. Emitted by the supervisor's - // StoreMaintenanceLoop (internal/supervisor/maintenance.go) after - // each scheduled maintenance cycle completes or fails. + // Store maintenance and health events. StoreMaintenanceDone = "gc.store.maintenance.done" StoreMaintenanceFailed = "gc.store.maintenance.failed" + // StoreBackstopLeakDetected fires when the HQStore TTL sweeper's backstop + // reclaim exceeds the configured leak threshold. + StoreBackstopLeakDetected = "gc.store.backstop_leak.detected" ) // KnownEventTypes lists every event-type constant this package defines. @@ -147,7 +148,7 @@ var KnownEventTypes = []string{ ExtMsgAdapterAdded, ExtMsgAdapterRemoved, ExtMsgInbound, ExtMsgOutbound, EventsRotated, - StoreMaintenanceDone, StoreMaintenanceFailed, + StoreMaintenanceDone, StoreMaintenanceFailed, StoreBackstopLeakDetected, } // Event is a single recorded occurrence in the system. diff --git a/internal/events/payloads.go b/internal/events/payloads.go index d4145d1e9e6..ef54cabd8c5 100644 --- a/internal/events/payloads.go +++ b/internal/events/payloads.go @@ -34,3 +34,20 @@ type StoreMaintenanceFailedPayload struct { // IsEventPayload marks StoreMaintenanceFailedPayload as an events.Payload variant. func (StoreMaintenanceFailedPayload) IsEventPayload() {} + +// StoreBackstopLeakDetectedPayload is the typed payload for +// gc.store.backstop_leak.detected events. The HQStore TTL sweeper emits it +// when backstop reclaim exceeds the configured leak threshold. +type StoreBackstopLeakDetectedPayload struct { + MainCount int `json:"main_count" doc:"Closed main-tier beads reclaimed by the backstop sweep."` + EphemeralCount int `json:"ephemeral_count" doc:"Closed ephemeral beads reclaimed by the backstop sweep."` + TotalCount int `json:"total_count" doc:"Total closed beads reclaimed by the backstop sweep."` + Threshold int `json:"threshold" doc:"Configured leak threshold that the total reclaim count exceeded."` +} + +// IsEventPayload marks StoreBackstopLeakDetectedPayload as an events.Payload variant. +func (StoreBackstopLeakDetectedPayload) IsEventPayload() {} + +func init() { + RegisterPayload(StoreBackstopLeakDetected, StoreBackstopLeakDetectedPayload{}) +}