@posthog/agent 2.3.72 → 2.3.73
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 +55 -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 +55 -26
- package/dist/server/agent-server.js.map +1 -1
- package/dist/server/bin.cjs +55 -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/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.73",
|
|
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",
|
|
@@ -4202,6 +4199,16 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
4202
4199
|
this.session.promptRunning = true;
|
|
4203
4200
|
let handedOff = false;
|
|
4204
4201
|
let lastAssistantTotalUsage = null;
|
|
4202
|
+
if (this.session.lastContextWindowSize == null) {
|
|
4203
|
+
this.session.lastContextWindowSize = this.getContextWindowForModel(
|
|
4204
|
+
this.session.modelId ?? ""
|
|
4205
|
+
);
|
|
4206
|
+
this.logger.debug("Initial context window size from gateway", {
|
|
4207
|
+
modelId: this.session.modelId,
|
|
4208
|
+
contextWindowSize: this.session.lastContextWindowSize
|
|
4209
|
+
});
|
|
4210
|
+
}
|
|
4211
|
+
let lastContextWindowSize = this.session.lastContextWindowSize;
|
|
4205
4212
|
const supportsTerminalOutput = this.clientCapabilities?._meta?.terminal_output === true;
|
|
4206
4213
|
const context = {
|
|
4207
4214
|
session: this.session,
|
|
@@ -4253,8 +4260,19 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
4253
4260
|
const contextWindows = Object.values(message.modelUsage).map(
|
|
4254
4261
|
(m) => m.contextWindow
|
|
4255
4262
|
);
|
|
4256
|
-
|
|
4257
|
-
|
|
4263
|
+
if (contextWindows.length > 0) {
|
|
4264
|
+
const sdkContextWindow = Math.min(...contextWindows);
|
|
4265
|
+
if (sdkContextWindow > lastContextWindowSize) {
|
|
4266
|
+
lastContextWindowSize = sdkContextWindow;
|
|
4267
|
+
}
|
|
4268
|
+
}
|
|
4269
|
+
this.session.lastContextWindowSize = lastContextWindowSize;
|
|
4270
|
+
this.logger.debug("Context window size from result", {
|
|
4271
|
+
sdkReported: contextWindows,
|
|
4272
|
+
resolved: lastContextWindowSize,
|
|
4273
|
+
modelId: this.session.modelId
|
|
4274
|
+
});
|
|
4275
|
+
this.session.contextSize = lastContextWindowSize;
|
|
4258
4276
|
if (lastAssistantTotalUsage !== null) {
|
|
4259
4277
|
this.session.contextUsed = lastAssistantTotalUsage;
|
|
4260
4278
|
}
|
|
@@ -4264,7 +4282,7 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
4264
4282
|
update: {
|
|
4265
4283
|
sessionUpdate: "usage_update",
|
|
4266
4284
|
used: lastAssistantTotalUsage,
|
|
4267
|
-
size:
|
|
4285
|
+
size: lastContextWindowSize,
|
|
4268
4286
|
cost: {
|
|
4269
4287
|
amount: message.total_cost_usd,
|
|
4270
4288
|
currency: "USD"
|
|
@@ -4330,7 +4348,16 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
4330
4348
|
}
|
|
4331
4349
|
if ("usage" in message.message && message.parent_tool_use_id === null) {
|
|
4332
4350
|
const usage = message.message.usage;
|
|
4333
|
-
lastAssistantTotalUsage = usage.input_tokens + usage.
|
|
4351
|
+
lastAssistantTotalUsage = usage.input_tokens + usage.cache_read_input_tokens + usage.cache_creation_input_tokens;
|
|
4352
|
+
await this.client.sessionUpdate({
|
|
4353
|
+
sessionId: params.sessionId,
|
|
4354
|
+
update: {
|
|
4355
|
+
sessionUpdate: "usage_update",
|
|
4356
|
+
used: lastAssistantTotalUsage,
|
|
4357
|
+
size: lastContextWindowSize,
|
|
4358
|
+
cost: null
|
|
4359
|
+
}
|
|
4360
|
+
});
|
|
4334
4361
|
}
|
|
4335
4362
|
const result = await handleUserAssistantMessage(message, context);
|
|
4336
4363
|
if (result.error) throw result.error;
|
|
@@ -4388,9 +4415,11 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
4388
4415
|
await this.session.query.interrupt();
|
|
4389
4416
|
}
|
|
4390
4417
|
async unstable_setSessionModel(params) {
|
|
4391
|
-
|
|
4392
|
-
await this.session.query.setModel(sdkModelId);
|
|
4418
|
+
await this.session.query.setModel(toSdkModelId(params.modelId));
|
|
4393
4419
|
this.session.modelId = params.modelId;
|
|
4420
|
+
this.session.lastContextWindowSize = this.getContextWindowForModel(
|
|
4421
|
+
params.modelId
|
|
4422
|
+
);
|
|
4394
4423
|
this.rebuildEffortConfigOption(params.modelId);
|
|
4395
4424
|
await this.updateConfigOption("model", params.modelId);
|
|
4396
4425
|
return {};
|
|
@@ -4441,6 +4470,7 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
4441
4470
|
const sdkModelId = toSdkModelId(resolvedValue);
|
|
4442
4471
|
await this.session.query.setModel(sdkModelId);
|
|
4443
4472
|
this.session.modelId = resolvedValue;
|
|
4473
|
+
this.session.lastContextWindowSize = this.getContextWindowForModel(resolvedValue);
|
|
4444
4474
|
this.rebuildEffortConfigOption(resolvedValue);
|
|
4445
4475
|
} else if (params.configId === "effort") {
|
|
4446
4476
|
const newEffort = resolvedValue;
|
|
@@ -4601,11 +4631,10 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
4601
4631
|
const modelOptions = await this.getModelConfigOptions();
|
|
4602
4632
|
const resolvedModelId = settingsModel || modelOptions.currentModelId;
|
|
4603
4633
|
session.modelId = resolvedModelId;
|
|
4604
|
-
|
|
4605
|
-
|
|
4606
|
-
|
|
4607
|
-
|
|
4608
|
-
}
|
|
4634
|
+
session.lastContextWindowSize = this.getContextWindowForModel(resolvedModelId);
|
|
4635
|
+
const resolvedSdkModel = toSdkModelId(resolvedModelId);
|
|
4636
|
+
if (!isResume && resolvedSdkModel !== DEFAULT_MODEL) {
|
|
4637
|
+
await this.session.query.setModel(resolvedSdkModel);
|
|
4609
4638
|
}
|
|
4610
4639
|
const availableModes2 = getAvailableModes();
|
|
4611
4640
|
const modes = {
|