@posthog/agent 2.3.72 → 2.3.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/claude/session/jsonl-hydration.js.map +1 -1
- package/dist/agent.js +56 -26
- package/dist/agent.js.map +1 -1
- package/dist/posthog-api.js +1 -1
- package/dist/posthog-api.js.map +1 -1
- package/dist/server/agent-server.js +56 -26
- package/dist/server/agent-server.js.map +1 -1
- package/dist/server/bin.cjs +56 -26
- package/dist/server/bin.cjs.map +1 -1
- package/package.json +1 -1
- package/src/adapters/base-acp-agent.ts +11 -2
- package/src/adapters/claude/claude-agent.ts +47 -16
- package/src/adapters/claude/conversion/sdk-to-acp.ts +2 -1
- package/src/adapters/claude/session/models.ts +0 -4
- package/src/adapters/claude/session/options.ts +1 -0
- package/src/adapters/claude/types.ts +2 -0
package/dist/server/bin.cjs
CHANGED
|
@@ -904,7 +904,7 @@ var import_hono = require("hono");
|
|
|
904
904
|
// package.json
|
|
905
905
|
var package_default = {
|
|
906
906
|
name: "@posthog/agent",
|
|
907
|
-
version: "2.3.
|
|
907
|
+
version: "2.3.74",
|
|
908
908
|
repository: "https://github.com/PostHog/code",
|
|
909
909
|
description: "TypeScript agent framework wrapping Claude Agent SDK with Git-based task execution for PostHog",
|
|
910
910
|
exports: {
|
|
@@ -1372,12 +1372,14 @@ function formatGatewayModelName(model) {
|
|
|
1372
1372
|
}
|
|
1373
1373
|
|
|
1374
1374
|
// src/adapters/base-acp-agent.ts
|
|
1375
|
+
var DEFAULT_CONTEXT_WINDOW = 2e5;
|
|
1375
1376
|
var BaseAcpAgent = class {
|
|
1376
1377
|
session;
|
|
1377
1378
|
sessionId;
|
|
1378
1379
|
client;
|
|
1379
1380
|
logger;
|
|
1380
1381
|
fileContentCache = {};
|
|
1382
|
+
gatewayModels = [];
|
|
1381
1383
|
constructor(client) {
|
|
1382
1384
|
this.client = client;
|
|
1383
1385
|
this.logger = new Logger({ debug: true, prefix: "[BaseAcpAgent]" });
|
|
@@ -1430,8 +1432,8 @@ var BaseAcpAgent = class {
|
|
|
1430
1432
|
throw new Error("Method not implemented.");
|
|
1431
1433
|
}
|
|
1432
1434
|
async getModelConfigOptions(currentModelOverride) {
|
|
1433
|
-
|
|
1434
|
-
const options = gatewayModels.filter((model) => isAnthropicModel(model)).map((model) => ({
|
|
1435
|
+
this.gatewayModels = await fetchGatewayModels();
|
|
1436
|
+
const options = this.gatewayModels.filter((model) => isAnthropicModel(model)).map((model) => ({
|
|
1435
1437
|
value: model.id,
|
|
1436
1438
|
name: formatGatewayModelName(model),
|
|
1437
1439
|
description: `Context: ${model.context_window.toLocaleString()} tokens`
|
|
@@ -1452,6 +1454,10 @@ var BaseAcpAgent = class {
|
|
|
1452
1454
|
}
|
|
1453
1455
|
return { currentModelId, options };
|
|
1454
1456
|
}
|
|
1457
|
+
getContextWindowForModel(modelId) {
|
|
1458
|
+
const match = this.gatewayModels.find((m) => m.id === modelId);
|
|
1459
|
+
return match?.context_window ?? DEFAULT_CONTEXT_WINDOW;
|
|
1460
|
+
}
|
|
1455
1461
|
};
|
|
1456
1462
|
|
|
1457
1463
|
// src/adapters/claude/conversion/acp-to-sdk.ts
|
|
@@ -2627,7 +2633,7 @@ function streamEventToAcpNotifications(message, sessionId, toolUseCache, fileCon
|
|
|
2627
2633
|
}
|
|
2628
2634
|
}
|
|
2629
2635
|
async function handleSystemMessage(message, context) {
|
|
2630
|
-
const { sessionId, client, logger } = context;
|
|
2636
|
+
const { session, sessionId, client, logger } = context;
|
|
2631
2637
|
switch (message.subtype) {
|
|
2632
2638
|
case "init":
|
|
2633
2639
|
break;
|
|
@@ -2635,7 +2641,8 @@ async function handleSystemMessage(message, context) {
|
|
|
2635
2641
|
await client.extNotification("_posthog/compact_boundary", {
|
|
2636
2642
|
sessionId,
|
|
2637
2643
|
trigger: message.compact_metadata.trigger,
|
|
2638
|
-
preTokens: message.compact_metadata.pre_tokens
|
|
2644
|
+
preTokens: message.compact_metadata.pre_tokens,
|
|
2645
|
+
contextSize: session.contextSize
|
|
2639
2646
|
});
|
|
2640
2647
|
break;
|
|
2641
2648
|
case "hook_response":
|
|
@@ -3460,16 +3467,6 @@ var GATEWAY_TO_SDK_MODEL = {
|
|
|
3460
3467
|
function toSdkModelId(modelId) {
|
|
3461
3468
|
return GATEWAY_TO_SDK_MODEL[modelId] ?? modelId;
|
|
3462
3469
|
}
|
|
3463
|
-
var MODELS_WITH_1M_CONTEXT = /* @__PURE__ */ new Set([
|
|
3464
|
-
"claude-opus-4-6",
|
|
3465
|
-
"claude-sonnet-4-6"
|
|
3466
|
-
]);
|
|
3467
|
-
function supports1MContext(modelId) {
|
|
3468
|
-
return MODELS_WITH_1M_CONTEXT.has(modelId);
|
|
3469
|
-
}
|
|
3470
|
-
function getDefaultContextWindow(modelId) {
|
|
3471
|
-
return supports1MContext(modelId) ? 1e6 : 2e5;
|
|
3472
|
-
}
|
|
3473
3470
|
var MODELS_WITH_EFFORT = /* @__PURE__ */ new Set([
|
|
3474
3471
|
"claude-opus-4-5",
|
|
3475
3472
|
"claude-opus-4-6",
|
|
@@ -3710,6 +3707,7 @@ function buildSessionOptions(params) {
|
|
|
3710
3707
|
const tools = params.userProvidedOptions?.tools ?? (params.disableBuiltInTools ? [] : { type: "preset", preset: "claude_code" });
|
|
3711
3708
|
const options = {
|
|
3712
3709
|
...params.userProvidedOptions,
|
|
3710
|
+
betas: ["context-1m-2025-08-07"],
|
|
3713
3711
|
systemPrompt: params.systemPrompt ?? buildSystemPrompt(),
|
|
3714
3712
|
settingSources: ["user", "project", "local"],
|
|
3715
3713
|
stderr: (err) => params.logger.error(err),
|
|
@@ -4202,6 +4200,16 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
4202
4200
|
this.session.promptRunning = true;
|
|
4203
4201
|
let handedOff = false;
|
|
4204
4202
|
let lastAssistantTotalUsage = null;
|
|
4203
|
+
if (this.session.lastContextWindowSize == null) {
|
|
4204
|
+
this.session.lastContextWindowSize = this.getContextWindowForModel(
|
|
4205
|
+
this.session.modelId ?? ""
|
|
4206
|
+
);
|
|
4207
|
+
this.logger.debug("Initial context window size from gateway", {
|
|
4208
|
+
modelId: this.session.modelId,
|
|
4209
|
+
contextWindowSize: this.session.lastContextWindowSize
|
|
4210
|
+
});
|
|
4211
|
+
}
|
|
4212
|
+
let lastContextWindowSize = this.session.lastContextWindowSize;
|
|
4205
4213
|
const supportsTerminalOutput = this.clientCapabilities?._meta?.terminal_output === true;
|
|
4206
4214
|
const context = {
|
|
4207
4215
|
session: this.session,
|
|
@@ -4253,8 +4261,19 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
4253
4261
|
const contextWindows = Object.values(message.modelUsage).map(
|
|
4254
4262
|
(m) => m.contextWindow
|
|
4255
4263
|
);
|
|
4256
|
-
|
|
4257
|
-
|
|
4264
|
+
if (contextWindows.length > 0) {
|
|
4265
|
+
const sdkContextWindow = Math.min(...contextWindows);
|
|
4266
|
+
if (sdkContextWindow > lastContextWindowSize) {
|
|
4267
|
+
lastContextWindowSize = sdkContextWindow;
|
|
4268
|
+
}
|
|
4269
|
+
}
|
|
4270
|
+
this.session.lastContextWindowSize = lastContextWindowSize;
|
|
4271
|
+
this.logger.debug("Context window size from result", {
|
|
4272
|
+
sdkReported: contextWindows,
|
|
4273
|
+
resolved: lastContextWindowSize,
|
|
4274
|
+
modelId: this.session.modelId
|
|
4275
|
+
});
|
|
4276
|
+
this.session.contextSize = lastContextWindowSize;
|
|
4258
4277
|
if (lastAssistantTotalUsage !== null) {
|
|
4259
4278
|
this.session.contextUsed = lastAssistantTotalUsage;
|
|
4260
4279
|
}
|
|
@@ -4264,7 +4283,7 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
4264
4283
|
update: {
|
|
4265
4284
|
sessionUpdate: "usage_update",
|
|
4266
4285
|
used: lastAssistantTotalUsage,
|
|
4267
|
-
size:
|
|
4286
|
+
size: lastContextWindowSize,
|
|
4268
4287
|
cost: {
|
|
4269
4288
|
amount: message.total_cost_usd,
|
|
4270
4289
|
currency: "USD"
|
|
@@ -4330,7 +4349,16 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
4330
4349
|
}
|
|
4331
4350
|
if ("usage" in message.message && message.parent_tool_use_id === null) {
|
|
4332
4351
|
const usage = message.message.usage;
|
|
4333
|
-
lastAssistantTotalUsage = usage.input_tokens + usage.
|
|
4352
|
+
lastAssistantTotalUsage = usage.input_tokens + usage.cache_read_input_tokens + usage.cache_creation_input_tokens;
|
|
4353
|
+
await this.client.sessionUpdate({
|
|
4354
|
+
sessionId: params.sessionId,
|
|
4355
|
+
update: {
|
|
4356
|
+
sessionUpdate: "usage_update",
|
|
4357
|
+
used: lastAssistantTotalUsage,
|
|
4358
|
+
size: lastContextWindowSize,
|
|
4359
|
+
cost: null
|
|
4360
|
+
}
|
|
4361
|
+
});
|
|
4334
4362
|
}
|
|
4335
4363
|
const result = await handleUserAssistantMessage(message, context);
|
|
4336
4364
|
if (result.error) throw result.error;
|
|
@@ -4388,9 +4416,11 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
4388
4416
|
await this.session.query.interrupt();
|
|
4389
4417
|
}
|
|
4390
4418
|
async unstable_setSessionModel(params) {
|
|
4391
|
-
|
|
4392
|
-
await this.session.query.setModel(sdkModelId);
|
|
4419
|
+
await this.session.query.setModel(toSdkModelId(params.modelId));
|
|
4393
4420
|
this.session.modelId = params.modelId;
|
|
4421
|
+
this.session.lastContextWindowSize = this.getContextWindowForModel(
|
|
4422
|
+
params.modelId
|
|
4423
|
+
);
|
|
4394
4424
|
this.rebuildEffortConfigOption(params.modelId);
|
|
4395
4425
|
await this.updateConfigOption("model", params.modelId);
|
|
4396
4426
|
return {};
|
|
@@ -4441,6 +4471,7 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
4441
4471
|
const sdkModelId = toSdkModelId(resolvedValue);
|
|
4442
4472
|
await this.session.query.setModel(sdkModelId);
|
|
4443
4473
|
this.session.modelId = resolvedValue;
|
|
4474
|
+
this.session.lastContextWindowSize = this.getContextWindowForModel(resolvedValue);
|
|
4444
4475
|
this.rebuildEffortConfigOption(resolvedValue);
|
|
4445
4476
|
} else if (params.configId === "effort") {
|
|
4446
4477
|
const newEffort = resolvedValue;
|
|
@@ -4601,11 +4632,10 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
4601
4632
|
const modelOptions = await this.getModelConfigOptions();
|
|
4602
4633
|
const resolvedModelId = settingsModel || modelOptions.currentModelId;
|
|
4603
4634
|
session.modelId = resolvedModelId;
|
|
4604
|
-
|
|
4605
|
-
|
|
4606
|
-
|
|
4607
|
-
|
|
4608
|
-
}
|
|
4635
|
+
session.lastContextWindowSize = this.getContextWindowForModel(resolvedModelId);
|
|
4636
|
+
const resolvedSdkModel = toSdkModelId(resolvedModelId);
|
|
4637
|
+
if (!isResume && resolvedSdkModel !== DEFAULT_MODEL) {
|
|
4638
|
+
await this.session.query.setModel(resolvedSdkModel);
|
|
4609
4639
|
}
|
|
4610
4640
|
const availableModes2 = getAvailableModes();
|
|
4611
4641
|
const modes = {
|