Skip to content

Commit 5b882eb

Browse files
committed
refactor: migrate agent context assembly to TypeScript
1 parent ee85a0e commit 5b882eb

10 files changed

Lines changed: 400 additions & 283 deletions

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,8 @@ src/agent/context-metrics.js
184184
src/agent/agent-liveness-poll.js
185185
src/agent/context-replay-policy.js
186186
src/agent/agent-context-sources.js
187+
src/agent/agent-context-builder.js
188+
src/agent/agent-context-packs.js
187189
src/agent/agent-context-sections.js
188190
src/agent/agent-context-types.js
189191
src/agent/agent-context-environment-sections.js

eslint.config.mjs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,8 @@ export default [
438438
'src/agent/output-extraction-failures.js',
439439
'src/agent/agent-trigger-evaluator.js',
440440
'src/agent/agent-context-sections.js',
441+
'src/agent/agent-context-builder.js',
442+
'src/agent/agent-context-packs.js',
441443
'src/agent/agent-context-types.js',
442444
'src/agent/agent-context-environment-sections.js',
443445
'src/agent/agent-context-prompt-sections.js',

src/agent/agent-context-builder.js

Lines changed: 0 additions & 278 deletions
This file was deleted.

src/agent/agent-context-builder.ts

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import contextMetrics = require('./context-metrics');
2+
import contextPackBuilder = require('./context-pack-builder');
3+
import agentContextPacks = require('./agent-context-packs');
4+
5+
import type { BuildContextParams, ContextStrategy } from './agent-context-types';
6+
7+
const MAX_CONTEXT_CHARS = 500000;
8+
const { buildContextMetrics, emitContextMetrics, resolveLegacyMaxTokens, updateTotalMetrics } =
9+
contextMetrics;
10+
const { buildContextPacks } = contextPackBuilder;
11+
const { buildAgentContextPacks } = agentContextPacks;
12+
13+
function buildContext(params: BuildContextParams): string {
14+
const strategy: ContextStrategy = params.config.contextStrategy || { sources: [] };
15+
const continuation = params.mode === 'continuation';
16+
const packs = buildAgentContextPacks(params, strategy, continuation);
17+
const maxTokens = resolveLegacyMaxTokens(strategy);
18+
const packResult = buildContextPacks({
19+
packs,
20+
maxTokens,
21+
maxChars: MAX_CONTEXT_CHARS,
22+
});
23+
24+
const metrics = buildContextMetrics({
25+
clusterId: params.cluster.id,
26+
agentId: params.id,
27+
role: params.role,
28+
iteration: params.iteration,
29+
triggeringMessage: params.triggeringMessage,
30+
strategy: {
31+
...strategy,
32+
contextMode: continuation ? 'continuation' : 'full',
33+
},
34+
packs: packResult.packDecisions,
35+
budget: packResult.budget,
36+
truncation: packResult.truncation,
37+
});
38+
39+
updateTotalMetrics(metrics, packResult.context.length);
40+
emitContextMetrics(metrics, {
41+
messageBus: params.messageBus,
42+
clusterId: params.cluster.id,
43+
agentId: params.id,
44+
});
45+
46+
return packResult.context;
47+
}
48+
49+
export = {
50+
buildContext,
51+
};

0 commit comments

Comments
 (0)