@posthog/agent 2.1.35 → 2.1.45

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.
@@ -1175,7 +1175,7 @@ var import_uuid = require("uuid");
1175
1175
  // package.json
1176
1176
  var package_default = {
1177
1177
  name: "@posthog/agent",
1178
- version: "2.1.35",
1178
+ version: "2.1.45",
1179
1179
  repository: "https://github.com/PostHog/twig",
1180
1180
  description: "TypeScript agent framework wrapping Claude Agent SDK with Git-based task execution for PostHog",
1181
1181
  exports: {
@@ -1306,11 +1306,16 @@ function unreachable(value, logger) {
1306
1306
  // src/gateway-models.ts
1307
1307
  var DEFAULT_GATEWAY_MODEL = "claude-opus-4-6";
1308
1308
  var BLOCKED_MODELS = /* @__PURE__ */ new Set(["gpt-5-mini", "openai/gpt-5-mini"]);
1309
+ var CACHE_TTL = 10 * 60 * 1e3;
1310
+ var gatewayModelsCache = null;
1309
1311
  async function fetchGatewayModels(options) {
1310
1312
  const gatewayUrl = options?.gatewayUrl ?? process.env.ANTHROPIC_BASE_URL;
1311
1313
  if (!gatewayUrl) {
1312
1314
  return [];
1313
1315
  }
1316
+ if (gatewayModelsCache && gatewayModelsCache.url === gatewayUrl && Date.now() < gatewayModelsCache.expiry) {
1317
+ return gatewayModelsCache.models;
1318
+ }
1314
1319
  const modelsUrl = `${gatewayUrl}/v1/models`;
1315
1320
  try {
1316
1321
  const response = await fetch(modelsUrl);
@@ -1318,8 +1323,13 @@ async function fetchGatewayModels(options) {
1318
1323
  return [];
1319
1324
  }
1320
1325
  const data = await response.json();
1321
- const models = data.data ?? [];
1322
- return models.filter((m) => !BLOCKED_MODELS.has(m.id));
1326
+ const models = (data.data ?? []).filter((m) => !BLOCKED_MODELS.has(m.id));
1327
+ gatewayModelsCache = {
1328
+ models,
1329
+ expiry: Date.now() + CACHE_TTL,
1330
+ url: gatewayUrl
1331
+ };
1332
+ return models;
1323
1333
  } catch {
1324
1334
  return [];
1325
1335
  }
@@ -3227,12 +3237,8 @@ function clearStatsigCache() {
3227
3237
  process.env.CLAUDE_CONFIG_DIR || path2.join(os2.homedir(), ".claude"),
3228
3238
  "statsig"
3229
3239
  );
3230
- try {
3231
- if (fs.existsSync(statsigPath)) {
3232
- fs.rmSync(statsigPath, { recursive: true, force: true });
3233
- }
3234
- } catch {
3235
- }
3240
+ fs.rm(statsigPath, { recursive: true, force: true }, () => {
3241
+ });
3236
3242
  }
3237
3243
 
3238
3244
  // src/adapters/claude/claude-agent.ts
@@ -3294,7 +3300,7 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3294
3300
  const sessionId = (0, import_uuid.v7)();
3295
3301
  const permissionMode = meta?.permissionMode && TWIG_EXECUTION_MODES.includes(meta.permissionMode) ? meta.permissionMode : "default";
3296
3302
  const mcpServers = parseMcpServers(params);
3297
- await fetchMcpToolMetadata(mcpServers, this.logger);
3303
+ const mcpMetadataPromise = fetchMcpToolMetadata(mcpServers, this.logger);
3298
3304
  const options = buildSessionOptions({
3299
3305
  cwd: params.cwd,
3300
3306
  mcpServers,
@@ -3328,13 +3334,14 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3328
3334
  adapter: "claude"
3329
3335
  });
3330
3336
  }
3331
- const modelOptions = await this.getModelConfigOptions();
3337
+ const [modelOptions, slashCommands] = await Promise.all([
3338
+ this.getModelConfigOptions(),
3339
+ getAvailableSlashCommands(q),
3340
+ mcpMetadataPromise
3341
+ ]);
3332
3342
  session.modelId = modelOptions.currentModelId;
3333
3343
  await this.trySetModel(q, modelOptions.currentModelId);
3334
- this.sendAvailableCommandsUpdate(
3335
- sessionId,
3336
- await getAvailableSlashCommands(q)
3337
- );
3344
+ this.sendAvailableCommandsUpdate(sessionId, slashCommands);
3338
3345
  return {
3339
3346
  sessionId,
3340
3347
  configOptions: await this.buildConfigOptions(modelOptions)
@@ -3353,7 +3360,7 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3353
3360
  return {};
3354
3361
  }
3355
3362
  const mcpServers = parseMcpServers(params);
3356
- await fetchMcpToolMetadata(mcpServers, this.logger);
3363
+ const mcpMetadataPromise = fetchMcpToolMetadata(mcpServers, this.logger);
3357
3364
  const permissionMode = meta?.permissionMode && TWIG_EXECUTION_MODES.includes(meta.permissionMode) ? meta.permissionMode : "default";
3358
3365
  const { query: q, session } = await this.initializeQuery({
3359
3366
  cwd: params.cwd,
@@ -3367,10 +3374,11 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3367
3374
  });
3368
3375
  session.taskRunId = meta?.taskRunId;
3369
3376
  this.registerPersistence(sessionId, meta);
3370
- this.sendAvailableCommandsUpdate(
3371
- sessionId,
3372
- await getAvailableSlashCommands(q)
3373
- );
3377
+ const [slashCommands] = await Promise.all([
3378
+ getAvailableSlashCommands(q),
3379
+ mcpMetadataPromise
3380
+ ]);
3381
+ this.sendAvailableCommandsUpdate(sessionId, slashCommands);
3374
3382
  return {
3375
3383
  configOptions: await this.buildConfigOptions()
3376
3384
  };