Skip to content

Commit 6d2d9fe

Browse files
committed
move token-counter to agent-runtime
1 parent 20c99fd commit 6d2d9fe

File tree

9 files changed

+55
-18
lines changed

9 files changed

+55
-18
lines changed

backend/src/llm-apis/relace-api.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1+
import { countTokens } from '@codebuff/agent-runtime/util/token-counter'
12
import { models } from '@codebuff/common/old-constants'
23
import { buildArray } from '@codebuff/common/util/array'
34
import { parseMarkdownCodeBlock } from '@codebuff/common/util/file'
45
import { env } from '@codebuff/internal'
56

67
import { saveMessage } from '../llm-apis/message-cost-tracker'
7-
import { countTokens } from '../util/token-counter'
88

99
import type { PromptAiSdkFn } from '@codebuff/common/types/contracts/llm'
1010
import type { Logger } from '@codebuff/common/types/contracts/logger'

backend/src/process-file-block.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { countTokens } from '@codebuff/agent-runtime/util/token-counter'
12
import { models } from '@codebuff/common/old-constants'
23
import { cleanMarkdownCodeBlock } from '@codebuff/common/util/file'
34
import { hasLazyEdit } from '@codebuff/common/util/string'
@@ -8,7 +9,6 @@ import {
89
parseAndGetDiffBlocksSingleFile,
910
retryDiffBlocksPrompt,
1011
} from './generate-diffs-prompt'
11-
import { countTokens } from './util/token-counter'
1212

1313
import type { PromptAiSdkFn } from '@codebuff/common/types/contracts/llm'
1414
import type { Logger } from '@codebuff/common/types/contracts/logger'

backend/src/run-agent-step.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { countTokensJson } from '@codebuff/agent-runtime/util/token-counter'
12
import { insertTrace } from '@codebuff/bigquery'
23
import { trackEvent } from '@codebuff/common/analytics'
34
import { AnalyticsEvent } from '@codebuff/common/constants/analytics-events'
@@ -23,17 +24,16 @@ import {
2324
messagesWithSystem,
2425
expireMessages,
2526
} from './util/messages'
26-
import { countTokensJson } from './util/token-counter'
2727
import { getRequestContext } from './websockets/request-context'
2828

2929
import type { AgentResponseTrace } from '@codebuff/bigquery'
3030
import type { AgentTemplate } from '@codebuff/common/types/agent-template'
31+
import type { SendActionFn } from '@codebuff/common/types/contracts/client'
3132
import type {
3233
AddAgentStepFn,
3334
FinishAgentRunFn,
3435
StartAgentRunFn,
3536
} from '@codebuff/common/types/contracts/database'
36-
import type { SendActionFn } from '@codebuff/common/types/contracts/client'
3737
import type { Logger } from '@codebuff/common/types/contracts/logger'
3838
import type { ParamsExcluding } from '@codebuff/common/types/function-params'
3939
import type { Message } from '@codebuff/common/types/messages/codebuff-message'

backend/src/system-prompt/search-system-prompt.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
import {
2+
countTokens,
3+
countTokensJson,
4+
} from '@codebuff/agent-runtime/util/token-counter'
15
import { insertTrace } from '@codebuff/bigquery'
26
import { buildArray } from '@codebuff/common/util/array'
37

@@ -6,7 +10,6 @@ import {
610
getProjectFileTreePrompt,
711
getSystemInfoPrompt,
812
} from './prompts'
9-
import { countTokens, countTokensJson } from '../util/token-counter'
1013

1114
import type { Logger } from '@codebuff/common/types/contracts/logger'
1215
import type { ProjectFileContext } from '@codebuff/common/util/file'

backend/src/system-prompt/truncate-file-tree.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1+
import {
2+
countTokens,
3+
countTokensJson,
4+
} from '@codebuff/agent-runtime/util/token-counter'
15
import {
26
printFileTree,
37
printFileTreeWithTokens,
48
} from '@codebuff/common/util/file'
59
import { sampleSizeWithSeed } from '@codebuff/common/util/random'
610

7-
import { countTokens, countTokensJson } from '../util/token-counter'
8-
911
import type { Logger } from '@codebuff/common/types/contracts/logger'
10-
1112
import type {
1213
FileTreeNode,
1314
ProjectFileContext,

backend/src/tools/handlers/tool/find-files.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
import {
2+
countTokens,
3+
countTokensJson,
4+
} from '@codebuff/agent-runtime/util/token-counter'
15
import { insertTrace } from '@codebuff/bigquery'
26

37
import {
@@ -7,7 +11,6 @@ import {
711
import { getFileReadingUpdates } from '../../../get-file-reading-updates'
812
import { getSearchSystemPrompt } from '../../../system-prompt/search-system-prompt'
913
import { renderReadFilesResult } from '../../../util/parse-tool-call-xml'
10-
import { countTokens, countTokensJson } from '../../../util/token-counter'
1114

1215
import type { CodebuffToolHandlerFunction } from '../handler-function-type'
1316
import type { GetExpandedFileContextForTrainingBlobTrace } from '@codebuff/bigquery'

backend/src/util/__tests__/messages.test.ts

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import * as tokenCounter from '@codebuff/agent-runtime/util/token-counter'
12
import {
23
afterEach,
34
beforeEach,
@@ -13,7 +14,6 @@ import {
1314
messagesWithSystem,
1415
getPreviouslyReadFiles,
1516
} from '../messages'
16-
import * as tokenCounter from '../token-counter'
1717

1818
import type { CodebuffToolMessage } from '@codebuff/common/tools/list'
1919
import type {
@@ -292,7 +292,12 @@ describe('trimMessagesToFitTokenLimit', () => {
292292
it('handles empty messages array', () => {
293293
const maxTotalTokens = 200
294294
const systemTokens = 100
295-
const result = trimMessagesToFitTokenLimit({ messages: [], systemTokens, maxTotalTokens, logger })
295+
const result = trimMessagesToFitTokenLimit({
296+
messages: [],
297+
systemTokens,
298+
maxTotalTokens,
299+
logger,
300+
})
296301

297302
expect(result).toEqual([])
298303
})
@@ -315,7 +320,12 @@ describe('trimMessagesToFitTokenLimit', () => {
315320
},
316321
]
317322

318-
const result = trimMessagesToFitTokenLimit({ messages, systemTokens: 0, maxTotalTokens: 1000, logger })
323+
const result = trimMessagesToFitTokenLimit({
324+
messages,
325+
systemTokens: 0,
326+
maxTotalTokens: 1000,
327+
logger,
328+
})
319329

320330
// Should contain the kept messages
321331
const keptMessages = result.filter(
@@ -345,7 +355,12 @@ describe('trimMessagesToFitTokenLimit', () => {
345355
},
346356
] as Message[]
347357

348-
const result = trimMessagesToFitTokenLimit({ messages, systemTokens: 0, maxTotalTokens: 10000, logger })
358+
const result = trimMessagesToFitTokenLimit({
359+
messages,
360+
systemTokens: 0,
361+
maxTotalTokens: 10000,
362+
logger,
363+
})
349364

350365
// Should be unchanged when under token limit
351366
expect(result).toHaveLength(2)
@@ -361,7 +376,12 @@ describe('trimMessagesToFitTokenLimit', () => {
361376
{ role: 'user', content: 'Keep this', keepDuringTruncation: true },
362377
]
363378

364-
const result = trimMessagesToFitTokenLimit({ messages, systemTokens: 0, maxTotalTokens: 1000, logger })
379+
const result = trimMessagesToFitTokenLimit({
380+
messages,
381+
systemTokens: 0,
382+
maxTotalTokens: 1000,
383+
logger,
384+
})
365385

366386
// Should only have one replacement message for consecutive removals
367387
const replacementMessages = result.filter(
@@ -391,7 +411,12 @@ describe('trimMessagesToFitTokenLimit', () => {
391411
{ role: 'user', content: 'C'.repeat(100) }, // Might be kept
392412
]
393413

394-
const result = trimMessagesToFitTokenLimit({ messages, systemTokens: 0, maxTotalTokens: 2000, logger })
414+
const result = trimMessagesToFitTokenLimit({
415+
messages,
416+
systemTokens: 0,
417+
maxTotalTokens: 2000,
418+
logger,
419+
})
395420

396421
// Should preserve the keepDuringTruncation message
397422
const keptMessage = result.find(
@@ -415,7 +440,12 @@ describe('trimMessagesToFitTokenLimit', () => {
415440
{ role: 'user', content: 'C'.repeat(800) }, // Large message to force truncation
416441
]
417442

418-
const result = trimMessagesToFitTokenLimit({ messages, systemTokens: 0, maxTotalTokens: 500, logger })
443+
const result = trimMessagesToFitTokenLimit({
444+
messages,
445+
systemTokens: 0,
446+
maxTotalTokens: 500,
447+
logger,
448+
})
419449

420450
// Should keep both marked messages
421451
const keptMessages = result.filter(

backend/src/util/messages.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
import { AssertionError } from 'assert'
22

3+
import { countTokensJson } from '@codebuff/agent-runtime/util/token-counter'
34
import { buildArray } from '@codebuff/common/util/array'
45
import { getErrorObject } from '@codebuff/common/util/error'
56
import { closeXml } from '@codebuff/common/util/xml'
67
import { cloneDeep, isEqual } from 'lodash'
78

89
import { simplifyTerminalCommandResults } from './simplify-tool-results'
9-
import { countTokensJson } from './token-counter'
1010

1111
import type { System } from '../llm-apis/claude'
1212
import type {
1313
CodebuffToolMessage,
1414
CodebuffToolOutput,
1515
} from '@codebuff/common/tools/list'
16+
import type { Logger } from '@codebuff/common/types/contracts/logger'
1617
import type {
1718
Message,
1819
ToolMessage,
@@ -21,7 +22,6 @@ import type {
2122
TextPart,
2223
ImagePart,
2324
} from '@codebuff/common/types/messages/content-part'
24-
import type { Logger } from '@codebuff/common/types/contracts/logger'
2525

2626
export function messagesWithSystem(params: {
2727
messages: Message[]

0 commit comments

Comments
 (0)