Add BeamCreate and BeamDestroy usage events (#67738)

This commit is contained in:
Travis LaDuke
2026-06-22 09:31:19 -07:00
committed by GitHub
parent 37579cb6b1
commit b40214cd86
4 changed files with 1441 additions and 860 deletions
File diff suppressed because it is too large Load Diff
+248 -1
View File
@@ -480,6 +480,72 @@ export interface SessionStartBeamMetadata {
*/
beamId: string;
}
/**
* BeamsCreatedEvent is emitted when a beam VM is created and becomes ready.
*
* PostHog event: tp.beams.created
*
* @generated from protobuf message prehog.v1alpha.BeamsCreatedEvent
*/
export interface BeamsCreatedEvent {
/**
* anonymized beam ID
*
* PostHog property: tp.beam.beam_id
*
* @generated from protobuf field: string beam_id = 1;
*/
beamId: string;
/**
* the region where the beam was created
*
* PostHog property: tp.beam.region
*
* @generated from protobuf field: string region = 2;
*/
region: string;
/**
* time in milliseconds from CreateBeam call to VM ready
*
* PostHog property: tp.beam.startup_duration_ms
*
* @generated from protobuf field: int64 startup_duration_ms = 3;
*/
startupDurationMs: bigint;
}
/**
* BeamsDestroyedEvent is emitted when a beam VM is destroyed.
*
* PostHog event: tp.beams.destroyed
*
* @generated from protobuf message prehog.v1alpha.BeamsDestroyedEvent
*/
export interface BeamsDestroyedEvent {
/**
* anonymized beam ID
*
* PostHog property: tp.beam.beam_id
*
* @generated from protobuf field: string beam_id = 1;
*/
beamId: string;
/**
* the reason the beam was destroyed
*
* PostHog property: tp.beam.destroy_reason
*
* @generated from protobuf field: prehog.v1alpha.BeamDestroyReason reason = 2;
*/
reason: BeamDestroyReason;
/**
* the region where the beam was running
*
* PostHog property: tp.beam.region
*
* @generated from protobuf field: string region = 3;
*/
region: string;
}
/**
* the issuance of a user certificate from the user CA
*
@@ -4365,6 +4431,18 @@ export interface SubmitEventRequest {
* @generated from protobuf field: prehog.v1alpha.UIInteractionEvent ui_interaction = 122;
*/
uiInteraction: UIInteractionEvent;
} | {
oneofKind: "beamsCreated";
/**
* @generated from protobuf field: prehog.v1alpha.BeamsCreatedEvent beams_created = 123;
*/
beamsCreated: BeamsCreatedEvent;
} | {
oneofKind: "beamsDestroyed";
/**
* @generated from protobuf field: prehog.v1alpha.BeamsDestroyedEvent beams_destroyed = 124;
*/
beamsDestroyed: BeamsDestroyedEvent;
} | {
oneofKind: undefined;
};
@@ -4551,6 +4629,29 @@ export enum UserKind {
*/
SYSTEM = 3
}
/**
* BeamDestroyReason is the reason a beam was destroyed.
*
* @generated from protobuf enum prehog.v1alpha.BeamDestroyReason
*/
export enum BeamDestroyReason {
/**
* @generated from protobuf enum value: BEAM_DESTROY_REASON_UNSPECIFIED = 0;
*/
UNSPECIFIED = 0,
/**
* the user explicitly deleted the beam
*
* @generated from protobuf enum value: BEAM_DESTROY_REASON_USER_DELETED = 1;
*/
USER_DELETED = 1,
/**
* the beam was deleted by the garbage collector after expiry
*
* @generated from protobuf enum value: BEAM_DESTROY_REASON_GC_EXPIRED = 2;
*/
GC_EXPIRED = 2
}
/**
* DiscoverResource represents a resource type.
*
@@ -6280,6 +6381,132 @@ class SessionStartBeamMetadata$Type extends MessageType<SessionStartBeamMetadata
*/
export const SessionStartBeamMetadata = new SessionStartBeamMetadata$Type();
// @generated message type with reflection information, may provide speed optimized methods
class BeamsCreatedEvent$Type extends MessageType<BeamsCreatedEvent> {
constructor() {
super("prehog.v1alpha.BeamsCreatedEvent", [
{ no: 1, name: "beam_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
{ no: 2, name: "region", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
{ no: 3, name: "startup_duration_ms", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 0 /*LongType.BIGINT*/ }
]);
}
create(value?: PartialMessage<BeamsCreatedEvent>): BeamsCreatedEvent {
const message = globalThis.Object.create((this.messagePrototype!));
message.beamId = "";
message.region = "";
message.startupDurationMs = 0n;
if (value !== undefined)
reflectionMergePartial<BeamsCreatedEvent>(this, message, value);
return message;
}
internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: BeamsCreatedEvent): BeamsCreatedEvent {
let message = target ?? this.create(), end = reader.pos + length;
while (reader.pos < end) {
let [fieldNo, wireType] = reader.tag();
switch (fieldNo) {
case /* string beam_id */ 1:
message.beamId = reader.string();
break;
case /* string region */ 2:
message.region = reader.string();
break;
case /* int64 startup_duration_ms */ 3:
message.startupDurationMs = reader.int64().toBigInt();
break;
default:
let u = options.readUnknownField;
if (u === "throw")
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
let d = reader.skip(wireType);
if (u !== false)
(u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
}
}
return message;
}
internalBinaryWrite(message: BeamsCreatedEvent, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
/* string beam_id = 1; */
if (message.beamId !== "")
writer.tag(1, WireType.LengthDelimited).string(message.beamId);
/* string region = 2; */
if (message.region !== "")
writer.tag(2, WireType.LengthDelimited).string(message.region);
/* int64 startup_duration_ms = 3; */
if (message.startupDurationMs !== 0n)
writer.tag(3, WireType.Varint).int64(message.startupDurationMs);
let u = options.writeUnknownFields;
if (u !== false)
(u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
return writer;
}
}
/**
* @generated MessageType for protobuf message prehog.v1alpha.BeamsCreatedEvent
*/
export const BeamsCreatedEvent = new BeamsCreatedEvent$Type();
// @generated message type with reflection information, may provide speed optimized methods
class BeamsDestroyedEvent$Type extends MessageType<BeamsDestroyedEvent> {
constructor() {
super("prehog.v1alpha.BeamsDestroyedEvent", [
{ no: 1, name: "beam_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
{ no: 2, name: "reason", kind: "enum", T: () => ["prehog.v1alpha.BeamDestroyReason", BeamDestroyReason, "BEAM_DESTROY_REASON_"] },
{ no: 3, name: "region", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
]);
}
create(value?: PartialMessage<BeamsDestroyedEvent>): BeamsDestroyedEvent {
const message = globalThis.Object.create((this.messagePrototype!));
message.beamId = "";
message.reason = 0;
message.region = "";
if (value !== undefined)
reflectionMergePartial<BeamsDestroyedEvent>(this, message, value);
return message;
}
internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: BeamsDestroyedEvent): BeamsDestroyedEvent {
let message = target ?? this.create(), end = reader.pos + length;
while (reader.pos < end) {
let [fieldNo, wireType] = reader.tag();
switch (fieldNo) {
case /* string beam_id */ 1:
message.beamId = reader.string();
break;
case /* prehog.v1alpha.BeamDestroyReason reason */ 2:
message.reason = reader.int32();
break;
case /* string region */ 3:
message.region = reader.string();
break;
default:
let u = options.readUnknownField;
if (u === "throw")
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
let d = reader.skip(wireType);
if (u !== false)
(u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
}
}
return message;
}
internalBinaryWrite(message: BeamsDestroyedEvent, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
/* string beam_id = 1; */
if (message.beamId !== "")
writer.tag(1, WireType.LengthDelimited).string(message.beamId);
/* prehog.v1alpha.BeamDestroyReason reason = 2; */
if (message.reason !== 0)
writer.tag(2, WireType.Varint).int32(message.reason);
/* string region = 3; */
if (message.region !== "")
writer.tag(3, WireType.LengthDelimited).string(message.region);
let u = options.writeUnknownFields;
if (u !== false)
(u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
return writer;
}
}
/**
* @generated MessageType for protobuf message prehog.v1alpha.BeamsDestroyedEvent
*/
export const BeamsDestroyedEvent = new BeamsDestroyedEvent$Type();
// @generated message type with reflection information, may provide speed optimized methods
class UserCertificateIssuedEvent$Type extends MessageType<UserCertificateIssuedEvent> {
constructor() {
super("prehog.v1alpha.UserCertificateIssuedEvent", [
@@ -13690,7 +13917,9 @@ class SubmitEventRequest$Type extends MessageType<SubmitEventRequest> {
{ no: 119, name: "ui_page_view", kind: "message", oneof: "event", T: () => UIPageViewEvent },
{ no: 120, name: "ui_usage_reporting_alert_cta_click", kind: "message", oneof: "event", T: () => UIUsageReportingAlertCtaClickEvent },
{ no: 121, name: "session_summary_search_event", kind: "message", oneof: "event", T: () => SessionSummarySearchEvent },
{ no: 122, name: "ui_interaction", kind: "message", oneof: "event", T: () => UIInteractionEvent }
{ no: 122, name: "ui_interaction", kind: "message", oneof: "event", T: () => UIInteractionEvent },
{ no: 123, name: "beams_created", kind: "message", oneof: "event", T: () => BeamsCreatedEvent },
{ no: 124, name: "beams_destroyed", kind: "message", oneof: "event", T: () => BeamsDestroyedEvent }
]);
}
create(value?: PartialMessage<SubmitEventRequest>): SubmitEventRequest {
@@ -14412,6 +14641,18 @@ class SubmitEventRequest$Type extends MessageType<SubmitEventRequest> {
uiInteraction: UIInteractionEvent.internalBinaryRead(reader, reader.uint32(), options, (message.event as any).uiInteraction)
};
break;
case /* prehog.v1alpha.BeamsCreatedEvent beams_created */ 123:
message.event = {
oneofKind: "beamsCreated",
beamsCreated: BeamsCreatedEvent.internalBinaryRead(reader, reader.uint32(), options, (message.event as any).beamsCreated)
};
break;
case /* prehog.v1alpha.BeamsDestroyedEvent beams_destroyed */ 124:
message.event = {
oneofKind: "beamsDestroyed",
beamsDestroyed: BeamsDestroyedEvent.internalBinaryRead(reader, reader.uint32(), options, (message.event as any).beamsDestroyed)
};
break;
default:
let u = options.readUnknownField;
if (u === "throw")
@@ -14781,6 +15022,12 @@ class SubmitEventRequest$Type extends MessageType<SubmitEventRequest> {
/* prehog.v1alpha.UIInteractionEvent ui_interaction = 122; */
if (message.event.oneofKind === "uiInteraction")
UIInteractionEvent.internalBinaryWrite(message.event.uiInteraction, writer.tag(122, WireType.LengthDelimited).fork(), options).join();
/* prehog.v1alpha.BeamsCreatedEvent beams_created = 123; */
if (message.event.oneofKind === "beamsCreated")
BeamsCreatedEvent.internalBinaryWrite(message.event.beamsCreated, writer.tag(123, WireType.LengthDelimited).fork(), options).join();
/* prehog.v1alpha.BeamsDestroyedEvent beams_destroyed = 124; */
if (message.event.oneofKind === "beamsDestroyed")
BeamsDestroyedEvent.internalBinaryWrite(message.event.beamsDestroyed, writer.tag(124, WireType.LengthDelimited).fork(), options).join();
let u = options.writeUnknownFields;
if (u !== false)
(u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
+32
View File
@@ -2348,3 +2348,35 @@ func (e *IdentitySecurityAuditLogsIngestedEvent) Anonymize(a utils.Anonymizer) *
},
}
}
// BeamsCreatedEvent is emitted when a beam VM is created and becomes ready.
type BeamsCreatedEvent prehogv1a.BeamsCreatedEvent
// Anonymize anonymizes the event.
func (e *BeamsCreatedEvent) Anonymize(a utils.Anonymizer) *prehogv1a.SubmitEventRequest {
return &prehogv1a.SubmitEventRequest{
Event: &prehogv1a.SubmitEventRequest_BeamsCreated{
BeamsCreated: &prehogv1a.BeamsCreatedEvent{
BeamId: a.AnonymizeString(e.BeamId),
Region: e.Region,
StartupDurationMs: e.StartupDurationMs,
},
},
}
}
// BeamsDestroyedEvent is emitted when a beam VM is destroyed.
type BeamsDestroyedEvent prehogv1a.BeamsDestroyedEvent
// Anonymize anonymizes the event.
func (e *BeamsDestroyedEvent) Anonymize(a utils.Anonymizer) *prehogv1a.SubmitEventRequest {
return &prehogv1a.SubmitEventRequest{
Event: &prehogv1a.SubmitEventRequest_BeamsDestroyed{
BeamsDestroyed: &prehogv1a.BeamsDestroyedEvent{
BeamId: a.AnonymizeString(e.BeamId),
Reason: e.Reason,
Region: e.Region,
},
},
}
}
+52
View File
@@ -342,6 +342,55 @@ message SessionStartBeamMetadata {
string beam_id = 1;
}
// BeamsCreatedEvent is emitted when a beam VM is created and becomes ready.
//
// PostHog event: tp.beams.created
message BeamsCreatedEvent {
// anonymized beam ID
//
// PostHog property: tp.beam.beam_id
string beam_id = 1;
// the region where the beam was created
//
// PostHog property: tp.beam.region
string region = 2;
// time in milliseconds from CreateBeam call to VM ready
//
// PostHog property: tp.beam.startup_duration_ms
int64 startup_duration_ms = 3;
}
// BeamDestroyReason is the reason a beam was destroyed.
enum BeamDestroyReason {
BEAM_DESTROY_REASON_UNSPECIFIED = 0;
// the user explicitly deleted the beam
BEAM_DESTROY_REASON_USER_DELETED = 1;
// the beam was deleted by the garbage collector after expiry
BEAM_DESTROY_REASON_GC_EXPIRED = 2;
}
// BeamsDestroyedEvent is emitted when a beam VM is destroyed.
//
// PostHog event: tp.beams.destroyed
message BeamsDestroyedEvent {
// anonymized beam ID
//
// PostHog property: tp.beam.beam_id
string beam_id = 1;
// the reason the beam was destroyed
//
// PostHog property: tp.beam.destroy_reason
BeamDestroyReason reason = 2;
// the region where the beam was running
//
// PostHog property: tp.beam.region
string region = 3;
}
// the issuance of a user certificate from the user CA
//
// PostHog event: tp.certificate.issued
@@ -2307,6 +2356,9 @@ message SubmitEventRequest {
SessionSummarySearchEvent session_summary_search_event = 121;
UIInteractionEvent ui_interaction = 122;
BeamsCreatedEvent beams_created = 123;
BeamsDestroyedEvent beams_destroyed = 124;
}
reserved 8; // UIOnboardGetStartedClickEvent