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