@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.
@@ -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.72",
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
- const gatewayModels = await fetchGatewayModels();
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
- const contextWindowSize = contextWindows.length > 0 ? Math.min(...contextWindows) : getDefaultContextWindow(this.session.modelId ?? "");
4257
- this.session.contextSize = contextWindowSize;
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: contextWindowSize,
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.output_tokens + usage.cache_read_input_tokens + usage.cache_creation_input_tokens;
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
- const sdkModelId = toSdkModelId(params.modelId);
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
- if (!isResume) {
4605
- const resolvedSdkModel = toSdkModelId(resolvedModelId);
4606
- if (resolvedSdkModel !== DEFAULT_MODEL) {
4607
- await this.session.query.setModel(resolvedSdkModel);
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 = {