Skip to content

Commit e1342f6

Browse files
committed
pass in logger to trackEvent
1 parent bd97f52 commit e1342f6

File tree

11 files changed

+132
-71
lines changed

11 files changed

+132
-71
lines changed

backend/src/__tests__/agent-run.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import {
1818

1919
import { startAgentRun, finishAgentRun, addAgentStep } from '../agent-run'
2020

21-
import type { Logger } from '@codebuff/agent-runtime'
21+
import type { Logger } from '@codebuff/types/logger'
2222

2323
describe('Agent Run Database Functions', () => {
2424
let logger: Logger

backend/src/llm-apis/message-cost-tracker.ts

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -521,10 +521,15 @@ async function updateUserCycleUsage(
521521
)
522522
}
523523

524-
trackEvent(AnalyticsEvent.CREDIT_CONSUMED, userId, {
525-
creditsUsed,
526-
fromPurchased: result.fromPurchased,
527-
organizationId: orgId,
524+
trackEvent({
525+
event: AnalyticsEvent.CREDIT_CONSUMED,
526+
userId,
527+
properties: {
528+
creditsUsed,
529+
fromPurchased: result.fromPurchased,
530+
organizationId: orgId,
531+
},
532+
logger,
528533
})
529534

530535
return result
@@ -539,9 +544,14 @@ async function updateUserCycleUsage(
539544
)
540545
}
541546

542-
trackEvent(AnalyticsEvent.CREDIT_CONSUMED, userId, {
543-
creditsUsed,
544-
fromPurchased: result.fromPurchased,
547+
trackEvent({
548+
event: AnalyticsEvent.CREDIT_CONSUMED,
549+
userId,
550+
properties: {
551+
creditsUsed,
552+
fromPurchased: result.fromPurchased,
553+
},
554+
logger,
545555
})
546556

547557
return result

backend/src/run-agent-step.ts

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
import { insertTrace } from '@codebuff/bigquery'
22
import { trackEvent } from '@codebuff/common/analytics'
33
import { AnalyticsEvent } from '@codebuff/common/constants/analytics-events'
4-
import {
5-
supportsCacheControl,
6-
} from '@codebuff/common/old-constants'
4+
import { supportsCacheControl } from '@codebuff/common/old-constants'
75
import { TOOLS_WHICH_WONT_FORCE_NEXT_STEP } from '@codebuff/common/tools/constants'
86
import { buildArray } from '@codebuff/common/util/array'
97
import { getErrorObject } from '@codebuff/common/util/error'
@@ -124,13 +122,18 @@ export const runAgentStep = async (
124122
// Generates a unique ID for each main prompt run (ie: a step of the agent loop)
125123
// This is used to link logs within a single agent loop
126124
const agentStepId = crypto.randomUUID()
127-
trackEvent(AnalyticsEvent.AGENT_STEP, userId ?? '', {
128-
agentStepId,
129-
clientSessionId,
130-
fingerprintId,
131-
userInputId,
132-
userId,
133-
repoName: repoId,
125+
trackEvent({
126+
event: AnalyticsEvent.AGENT_STEP,
127+
userId: userId ?? '',
128+
properties: {
129+
agentStepId,
130+
clientSessionId,
131+
fingerprintId,
132+
userInputId,
133+
userId,
134+
repoName: repoId,
135+
},
136+
logger,
134137
})
135138

136139
let messageHistory = agentState.messageHistory

backend/src/tools/handlers/tool/create-plan.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,18 @@ export const handleCreatePlan = ((params: {
6666
if (!fileProcessingState.promisesByPath[path]) {
6767
fileProcessingState.promisesByPath[path] = []
6868
if (path.endsWith('knowledge.md')) {
69-
trackEvent(AnalyticsEvent.KNOWLEDGE_FILE_UPDATED, userId ?? '', {
70-
agentStepId,
71-
clientSessionId,
72-
fingerprintId,
73-
userInputId,
74-
userId,
75-
repoName: repoId,
69+
trackEvent({
70+
event: AnalyticsEvent.KNOWLEDGE_FILE_UPDATED,
71+
userId: userId ?? '',
72+
properties: {
73+
agentStepId,
74+
clientSessionId,
75+
fingerprintId,
76+
userInputId,
77+
userId,
78+
repoName: repoId,
79+
},
80+
logger,
7681
})
7782
}
7883
}

backend/src/websockets/websocket-action.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,14 @@ const onPrompt = async (
145145

146146
if (prompt) {
147147
logger.info({ prompt }, `USER INPUT: ${prompt.slice(0, 100)}`)
148-
trackEvent(AnalyticsEvent.USER_INPUT, userId, {
149-
prompt,
150-
promptId,
148+
trackEvent({
149+
event: AnalyticsEvent.USER_INPUT,
150+
userId,
151+
properties: {
152+
prompt,
153+
promptId,
154+
},
155+
logger,
151156
})
152157
}
153158

backend/src/xml-stream-parser.ts

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import {
77
toolNameParam,
88
} from '@codebuff/common/tools/constants'
99

10+
import { logger } from './util/logger'
11+
1012
import type { StreamChunk } from './llm-apis/vercel-ai-sdk/ai-sdk'
1113
import type { Model } from '@codebuff/common/old-constants'
1214
import type {
@@ -72,10 +74,10 @@ export async function* processStreamWithTags(
7274
try {
7375
parsedParams = JSON.parse(contents)
7476
} catch (error: any) {
75-
trackEvent(
76-
AnalyticsEvent.MALFORMED_TOOL_CALL_JSON,
77-
loggerOptions?.userId ?? '',
78-
{
77+
trackEvent({
78+
event: AnalyticsEvent.MALFORMED_TOOL_CALL_JSON,
79+
userId: loggerOptions?.userId ?? '',
80+
properties: {
7981
contents: JSON.stringify(contents),
8082
model: loggerOptions?.model,
8183
agent: loggerOptions?.agentName,
@@ -86,7 +88,8 @@ export async function* processStreamWithTags(
8688
},
8789
autocompleted,
8890
},
89-
)
91+
logger,
92+
})
9093
const shortenedContents =
9194
contents.length < 200
9295
? contents
@@ -106,31 +109,37 @@ export async function* processStreamWithTags(
106109
? processors[toolName] ?? defaultProcessor(toolName)
107110
: undefined
108111
if (!processor) {
109-
trackEvent(
110-
AnalyticsEvent.UNKNOWN_TOOL_CALL,
111-
loggerOptions?.userId ?? '',
112-
{
112+
trackEvent({
113+
event: AnalyticsEvent.UNKNOWN_TOOL_CALL,
114+
userId: loggerOptions?.userId ?? '',
115+
properties: {
113116
contents,
114117
toolName,
115118
model: loggerOptions?.model,
116119
agent: loggerOptions?.agentName,
117120
autocompleted,
118121
},
119-
)
122+
logger,
123+
})
120124
onError(
121125
'parse_error',
122126
`Unknown tool ${JSON.stringify(toolName)} for tool call: ${contents}`,
123127
)
124128
return
125129
}
126130

127-
trackEvent(AnalyticsEvent.TOOL_USE, loggerOptions?.userId ?? '', {
128-
toolName,
129-
contents,
130-
parsedParams,
131-
autocompleted,
132-
model: loggerOptions?.model,
133-
agent: loggerOptions?.agentName,
131+
trackEvent({
132+
event: AnalyticsEvent.TOOL_USE,
133+
userId: loggerOptions?.userId ?? '',
134+
properties: {
135+
toolName,
136+
contents,
137+
parsedParams,
138+
autocompleted,
139+
model: loggerOptions?.model,
140+
agent: loggerOptions?.agentName,
141+
},
142+
logger,
134143
})
135144
delete parsedParams[toolNameParam]
136145

common/src/analytics.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,17 @@ export async function flushAnalytics() {
3636
} catch (error) {}
3737
}
3838

39-
export function trackEvent(
40-
event: AnalyticsEvent,
41-
userId: string,
42-
properties?: Record<string, any>,
43-
) {
39+
export function trackEvent({
40+
event,
41+
userId,
42+
properties,
43+
logger,
44+
}: {
45+
event: AnalyticsEvent
46+
userId: string
47+
properties?: Record<string, any>
48+
logger: Logger
49+
}) {
4450
if (env.NEXT_PUBLIC_CB_ENVIRONMENT !== 'prod') {
4551
logger.info({ payload: { event, properties } }, 'Analytics event tracked')
4652
return

packages/billing/src/grant-credits.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { trackEvent } from '@codebuff/common/analytics'
2-
import { DEFAULT_FREE_CREDITS_GRANT } from '@codebuff/common/old-constants'
32
import { AnalyticsEvent } from '@codebuff/common/constants/analytics-events'
43
import { GRANT_PRIORITIES } from '@codebuff/common/constants/grant-priorities'
54
import db from '@codebuff/common/db'
65
import * as schema from '@codebuff/common/db/schema'
6+
import { DEFAULT_FREE_CREDITS_GRANT } from '@codebuff/common/old-constants'
77
import { getNextQuotaReset } from '@codebuff/common/util/dates'
88
import { logger } from '@codebuff/common/util/logger'
99
import { withRetry } from '@codebuff/common/util/promise'
@@ -205,12 +205,17 @@ export async function grantCreditOperation(
205205
}
206206
}
207207

208-
trackEvent(AnalyticsEvent.CREDIT_GRANT, userId, {
209-
operationId,
210-
type,
211-
description,
212-
amount,
213-
expiresAt,
208+
trackEvent({
209+
event: AnalyticsEvent.CREDIT_GRANT,
210+
userId,
211+
properties: {
212+
operationId,
213+
type,
214+
description,
215+
amount,
216+
expiresAt,
217+
},
218+
logger,
214219
})
215220

216221
logger.info(

packages/billing/src/org-monitoring.ts

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -150,10 +150,15 @@ export async function sendOrganizationAlert(
150150
)
151151

152152
// Track analytics event
153-
trackEvent(AnalyticsEvent.CREDIT_GRANT, alert.organizationId, {
154-
alertType: alert.alertType,
155-
currentBalance: alert.currentBalance,
156-
threshold: alert.threshold,
153+
trackEvent({
154+
event: AnalyticsEvent.CREDIT_GRANT,
155+
userId: alert.organizationId,
156+
properties: {
157+
alertType: alert.alertType,
158+
currentBalance: alert.currentBalance,
159+
threshold: alert.threshold,
160+
},
161+
logger,
157162
})
158163

159164
// TODO: Implement actual alerting mechanisms:
@@ -299,12 +304,17 @@ export async function trackOrganizationUsageMetrics(
299304
)
300305

301306
// Track analytics event
302-
trackEvent(AnalyticsEvent.CREDIT_GRANT, metrics.organizationId, {
303-
type: 'usage_metrics',
304-
timeframe: metrics.timeframe,
305-
totalCreditsConsumed: metrics.totalCreditsConsumed,
306-
uniqueUsers: metrics.uniqueUsers,
307-
repositoryCount: metrics.repositoryCount,
307+
trackEvent({
308+
event: AnalyticsEvent.CREDIT_GRANT,
309+
userId: metrics.organizationId,
310+
properties: {
311+
type: 'usage_metrics',
312+
timeframe: metrics.timeframe,
313+
totalCreditsConsumed: metrics.totalCreditsConsumed,
314+
uniqueUsers: metrics.uniqueUsers,
315+
repositoryCount: metrics.repositoryCount,
316+
},
317+
logger,
308318
})
309319

310320
// TODO: Store metrics in time-series database for dashboards

web/src/app/api/auth/[...nextauth]/auth-options.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,11 @@ export const authOptions: NextAuthOptions = {
231231
userData.name
232232
)
233233

234-
trackEvent(AnalyticsEvent.SIGNUP, userData.id)
234+
trackEvent({
235+
event: AnalyticsEvent.SIGNUP,
236+
userId: userData.id,
237+
logger,
238+
})
235239

236240
logger.info({ user }, 'createUser event processing finished.')
237241
},

0 commit comments

Comments
 (0)