@posthog/agent 2.1.45 → 2.1.48

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/index.js CHANGED
@@ -1174,7 +1174,7 @@ import { v7 as uuidv7 } from "uuid";
1174
1174
  // package.json
1175
1175
  var package_default = {
1176
1176
  name: "@posthog/agent",
1177
- version: "2.1.45",
1177
+ version: "2.1.48",
1178
1178
  repository: "https://github.com/PostHog/twig",
1179
1179
  description: "TypeScript agent framework wrapping Claude Agent SDK with Git-based task execution for PostHog",
1180
1180
  exports: {
@@ -3291,12 +3291,12 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3291
3291
  backgroundTerminals = {};
3292
3292
  clientCapabilities;
3293
3293
  logWriter;
3294
- processCallbacks;
3294
+ options;
3295
3295
  lastSentConfigOptions;
3296
- constructor(client, logWriter, processCallbacks) {
3296
+ constructor(client, logWriter, options) {
3297
3297
  super(client);
3298
3298
  this.logWriter = logWriter;
3299
- this.processCallbacks = processCallbacks;
3299
+ this.options = options;
3300
3300
  this.toolUseCache = {};
3301
3301
  this.logger = new Logger({ debug: true, prefix: "[ClaudeAcpAgent]" });
3302
3302
  }
@@ -3343,7 +3343,6 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3343
3343
  const sessionId = uuidv7();
3344
3344
  const permissionMode = meta?.permissionMode && TWIG_EXECUTION_MODES.includes(meta.permissionMode) ? meta.permissionMode : "default";
3345
3345
  const mcpServers = parseMcpServers(params);
3346
- const mcpMetadataPromise = fetchMcpToolMetadata(mcpServers, this.logger);
3347
3346
  const options = buildSessionOptions({
3348
3347
  cwd: params.cwd,
3349
3348
  mcpServers,
@@ -3355,8 +3354,8 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3355
3354
  sessionId,
3356
3355
  isResume: false,
3357
3356
  onModeChange: this.createOnModeChange(sessionId),
3358
- onProcessSpawned: this.processCallbacks?.onProcessSpawned,
3359
- onProcessExited: this.processCallbacks?.onProcessExited
3357
+ onProcessSpawned: this.options?.onProcessSpawned,
3358
+ onProcessExited: this.options?.onProcessExited
3360
3359
  });
3361
3360
  const input = new Pushable();
3362
3361
  const q = query({ prompt: input, options });
@@ -3377,17 +3376,14 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3377
3376
  adapter: "claude"
3378
3377
  });
3379
3378
  }
3380
- const [modelOptions, slashCommands] = await Promise.all([
3381
- this.getModelConfigOptions(),
3382
- getAvailableSlashCommands(q),
3383
- mcpMetadataPromise
3384
- ]);
3379
+ const modelOptions = await this.getModelConfigOptions();
3380
+ this.deferBackgroundFetches(q, sessionId, mcpServers);
3385
3381
  session.modelId = modelOptions.currentModelId;
3386
3382
  await this.trySetModel(q, modelOptions.currentModelId);
3387
- this.sendAvailableCommandsUpdate(sessionId, slashCommands);
3383
+ const configOptions = await this.buildConfigOptions(modelOptions);
3388
3384
  return {
3389
3385
  sessionId,
3390
- configOptions: await this.buildConfigOptions(modelOptions)
3386
+ configOptions
3391
3387
  };
3392
3388
  }
3393
3389
  async loadSession(params) {
@@ -3403,7 +3399,6 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3403
3399
  return {};
3404
3400
  }
3405
3401
  const mcpServers = parseMcpServers(params);
3406
- const mcpMetadataPromise = fetchMcpToolMetadata(mcpServers, this.logger);
3407
3402
  const permissionMode = meta?.permissionMode && TWIG_EXECUTION_MODES.includes(meta.permissionMode) ? meta.permissionMode : "default";
3408
3403
  const { query: q, session } = await this.initializeQuery({
3409
3404
  cwd: params.cwd,
@@ -3417,14 +3412,9 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3417
3412
  });
3418
3413
  session.taskRunId = meta?.taskRunId;
3419
3414
  this.registerPersistence(sessionId, meta);
3420
- const [slashCommands] = await Promise.all([
3421
- getAvailableSlashCommands(q),
3422
- mcpMetadataPromise
3423
- ]);
3424
- this.sendAvailableCommandsUpdate(sessionId, slashCommands);
3425
- return {
3426
- configOptions: await this.buildConfigOptions()
3427
- };
3415
+ this.deferBackgroundFetches(q, sessionId, mcpServers);
3416
+ const configOptions = await this.buildConfigOptions();
3417
+ return { configOptions };
3428
3418
  }
3429
3419
  async prompt(params) {
3430
3420
  this.session.cancelled = false;
@@ -3496,8 +3486,8 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3496
3486
  isResume: config.isResume,
3497
3487
  additionalDirectories: config.additionalDirectories,
3498
3488
  onModeChange: this.createOnModeChange(config.sessionId),
3499
- onProcessSpawned: this.processCallbacks?.onProcessSpawned,
3500
- onProcessExited: this.processCallbacks?.onProcessExited
3489
+ onProcessSpawned: this.options?.onProcessSpawned,
3490
+ onProcessExited: this.options?.onProcessExited
3501
3491
  });
3502
3492
  const q = query({ prompt: input, options });
3503
3493
  const abortController = options.abortController;
@@ -3607,6 +3597,20 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3607
3597
  await q.setModel(fallback);
3608
3598
  }
3609
3599
  }
3600
+ /**
3601
+ * Fire-and-forget: fetch slash commands and MCP tool metadata in parallel.
3602
+ * Both populate caches used later — neither is needed to return configOptions.
3603
+ */
3604
+ deferBackgroundFetches(q, sessionId, mcpServers) {
3605
+ Promise.all([
3606
+ getAvailableSlashCommands(q),
3607
+ fetchMcpToolMetadata(mcpServers, this.logger)
3608
+ ]).then(([slashCommands]) => {
3609
+ this.sendAvailableCommandsUpdate(sessionId, slashCommands);
3610
+ }).catch((err) => {
3611
+ this.logger.warn("Failed to fetch deferred session data", { err });
3612
+ });
3613
+ }
3610
3614
  registerPersistence(sessionId, meta) {
3611
3615
  const persistence = meta?.persistence;
3612
3616
  if (persistence && this.logWriter) {