Capturing github action workflow name if present and send it to clearcut (#13132)

This commit is contained in:
Jainam M
2025-11-19 22:00:03 +05:30
committed by GitHub
parent 0d89ac7406
commit 282654e7b8
3 changed files with 65 additions and 22 deletions
@@ -419,6 +419,31 @@ describe('ClearcutLogger', () => {
); );
}); });
describe('GH_WORKFLOW_NAME metadata', () => {
it('includes workflow name when GH_WORKFLOW_NAME is set', () => {
const { logger } = setup({});
vi.stubEnv('GH_WORKFLOW_NAME', 'test-workflow');
const event = logger?.createLogEvent(EventNames.API_ERROR, []);
expect(event?.event_metadata[0]).toContainEqual({
gemini_cli_key: EventMetadataKey.GEMINI_CLI_GH_WORKFLOW_NAME,
value: 'test-workflow',
});
});
it('does not include workflow name when GH_WORKFLOW_NAME is not set', () => {
const { logger } = setup({});
vi.stubEnv('GH_WORKFLOW_NAME', undefined);
const event = logger?.createLogEvent(EventNames.API_ERROR, []);
const hasWorkflowName = event?.event_metadata[0].some(
(item) =>
item.gemini_cli_key === EventMetadataKey.GEMINI_CLI_GH_WORKFLOW_NAME,
);
expect(hasWorkflowName).toBe(false);
});
});
describe('logChatCompressionEvent', () => { describe('logChatCompressionEvent', () => {
it('logs an event with proper fields', () => { it('logs an event with proper fields', () => {
const { logger } = setup(); const { logger } = setup();
@@ -149,6 +149,13 @@ function determineSurface(): string {
} }
} }
/**
* Determines the GitHub Actions workflow name if the CLI is running in a GitHub Actions environment.
*/
function determineGHWorkflowName(): string | undefined {
return process.env['GH_WORKFLOW_NAME'];
}
/** /**
* Clearcut URL to send logging events to. * Clearcut URL to send logging events to.
*/ */
@@ -260,12 +267,8 @@ export class ClearcutLogger {
data: EventValue[] = [], data: EventValue[] = [],
): LogEvent { ): LogEvent {
const surface = determineSurface(); const surface = determineSurface();
return { const ghWorkflowName = determineGHWorkflowName();
console_type: 'GEMINI_CLI', const baseMetadata: EventValue[] = [
application: 102, // GEMINI_CLI
event_name: eventName as string,
event_metadata: [
[
...data, ...data,
{ {
gemini_cli_key: EventMetadataKey.GEMINI_CLI_SURFACE, gemini_cli_key: EventMetadataKey.GEMINI_CLI_SURFACE,
@@ -283,8 +286,20 @@ export class ClearcutLogger {
gemini_cli_key: EventMetadataKey.GEMINI_CLI_OS, gemini_cli_key: EventMetadataKey.GEMINI_CLI_OS,
value: process.platform, value: process.platform,
}, },
], ];
],
if (ghWorkflowName) {
baseMetadata.push({
gemini_cli_key: EventMetadataKey.GEMINI_CLI_GH_WORKFLOW_NAME,
value: ghWorkflowName,
});
}
return {
console_type: 'GEMINI_CLI',
application: 102, // GEMINI_CLI
event_name: eventName as string,
event_metadata: [baseMetadata],
}; };
} }
@@ -7,7 +7,7 @@
// Defines valid event metadata keys for Clearcut logging. // Defines valid event metadata keys for Clearcut logging.
export enum EventMetadataKey { export enum EventMetadataKey {
// Deleted enums: 24 // Deleted enums: 24
// Next ID: 129 // Next ID: 131
GEMINI_CLI_KEY_UNKNOWN = 0, GEMINI_CLI_KEY_UNKNOWN = 0,
@@ -191,6 +191,9 @@ export enum EventMetadataKey {
// Logs active user settings // Logs active user settings
GEMINI_CLI_USER_SETTINGS = 84, GEMINI_CLI_USER_SETTINGS = 84,
// Logs the name of the GitHub Action workflow that triggered the session.
GEMINI_CLI_GH_WORKFLOW_NAME = 130,
// ========================================================================== // ==========================================================================
// Loop Detected Event Keys // Loop Detected Event Keys
// =========================================================================== // ===========================================================================