@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.
@@ -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.45",
1178
+ version: "2.1.48",
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: {
@@ -3248,12 +3248,12 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3248
3248
  backgroundTerminals = {};
3249
3249
  clientCapabilities;
3250
3250
  logWriter;
3251
- processCallbacks;
3251
+ options;
3252
3252
  lastSentConfigOptions;
3253
- constructor(client, logWriter, processCallbacks) {
3253
+ constructor(client, logWriter, options) {
3254
3254
  super(client);
3255
3255
  this.logWriter = logWriter;
3256
- this.processCallbacks = processCallbacks;
3256
+ this.options = options;
3257
3257
  this.toolUseCache = {};
3258
3258
  this.logger = new Logger({ debug: true, prefix: "[ClaudeAcpAgent]" });
3259
3259
  }
@@ -3300,7 +3300,6 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3300
3300
  const sessionId = (0, import_uuid.v7)();
3301
3301
  const permissionMode = meta?.permissionMode && TWIG_EXECUTION_MODES.includes(meta.permissionMode) ? meta.permissionMode : "default";
3302
3302
  const mcpServers = parseMcpServers(params);
3303
- const mcpMetadataPromise = fetchMcpToolMetadata(mcpServers, this.logger);
3304
3303
  const options = buildSessionOptions({
3305
3304
  cwd: params.cwd,
3306
3305
  mcpServers,
@@ -3312,8 +3311,8 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3312
3311
  sessionId,
3313
3312
  isResume: false,
3314
3313
  onModeChange: this.createOnModeChange(sessionId),
3315
- onProcessSpawned: this.processCallbacks?.onProcessSpawned,
3316
- onProcessExited: this.processCallbacks?.onProcessExited
3314
+ onProcessSpawned: this.options?.onProcessSpawned,
3315
+ onProcessExited: this.options?.onProcessExited
3317
3316
  });
3318
3317
  const input = new Pushable();
3319
3318
  const q = (0, import_claude_agent_sdk.query)({ prompt: input, options });
@@ -3334,17 +3333,14 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3334
3333
  adapter: "claude"
3335
3334
  });
3336
3335
  }
3337
- const [modelOptions, slashCommands] = await Promise.all([
3338
- this.getModelConfigOptions(),
3339
- getAvailableSlashCommands(q),
3340
- mcpMetadataPromise
3341
- ]);
3336
+ const modelOptions = await this.getModelConfigOptions();
3337
+ this.deferBackgroundFetches(q, sessionId, mcpServers);
3342
3338
  session.modelId = modelOptions.currentModelId;
3343
3339
  await this.trySetModel(q, modelOptions.currentModelId);
3344
- this.sendAvailableCommandsUpdate(sessionId, slashCommands);
3340
+ const configOptions = await this.buildConfigOptions(modelOptions);
3345
3341
  return {
3346
3342
  sessionId,
3347
- configOptions: await this.buildConfigOptions(modelOptions)
3343
+ configOptions
3348
3344
  };
3349
3345
  }
3350
3346
  async loadSession(params) {
@@ -3360,7 +3356,6 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3360
3356
  return {};
3361
3357
  }
3362
3358
  const mcpServers = parseMcpServers(params);
3363
- const mcpMetadataPromise = fetchMcpToolMetadata(mcpServers, this.logger);
3364
3359
  const permissionMode = meta?.permissionMode && TWIG_EXECUTION_MODES.includes(meta.permissionMode) ? meta.permissionMode : "default";
3365
3360
  const { query: q, session } = await this.initializeQuery({
3366
3361
  cwd: params.cwd,
@@ -3374,14 +3369,9 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3374
3369
  });
3375
3370
  session.taskRunId = meta?.taskRunId;
3376
3371
  this.registerPersistence(sessionId, meta);
3377
- const [slashCommands] = await Promise.all([
3378
- getAvailableSlashCommands(q),
3379
- mcpMetadataPromise
3380
- ]);
3381
- this.sendAvailableCommandsUpdate(sessionId, slashCommands);
3382
- return {
3383
- configOptions: await this.buildConfigOptions()
3384
- };
3372
+ this.deferBackgroundFetches(q, sessionId, mcpServers);
3373
+ const configOptions = await this.buildConfigOptions();
3374
+ return { configOptions };
3385
3375
  }
3386
3376
  async prompt(params) {
3387
3377
  this.session.cancelled = false;
@@ -3453,8 +3443,8 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3453
3443
  isResume: config.isResume,
3454
3444
  additionalDirectories: config.additionalDirectories,
3455
3445
  onModeChange: this.createOnModeChange(config.sessionId),
3456
- onProcessSpawned: this.processCallbacks?.onProcessSpawned,
3457
- onProcessExited: this.processCallbacks?.onProcessExited
3446
+ onProcessSpawned: this.options?.onProcessSpawned,
3447
+ onProcessExited: this.options?.onProcessExited
3458
3448
  });
3459
3449
  const q = (0, import_claude_agent_sdk.query)({ prompt: input, options });
3460
3450
  const abortController = options.abortController;
@@ -3564,6 +3554,20 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
3564
3554
  await q.setModel(fallback);
3565
3555
  }
3566
3556
  }
3557
+ /**
3558
+ * Fire-and-forget: fetch slash commands and MCP tool metadata in parallel.
3559
+ * Both populate caches used later — neither is needed to return configOptions.
3560
+ */
3561
+ deferBackgroundFetches(q, sessionId, mcpServers) {
3562
+ Promise.all([
3563
+ getAvailableSlashCommands(q),
3564
+ fetchMcpToolMetadata(mcpServers, this.logger)
3565
+ ]).then(([slashCommands]) => {
3566
+ this.sendAvailableCommandsUpdate(sessionId, slashCommands);
3567
+ }).catch((err) => {
3568
+ this.logger.warn("Failed to fetch deferred session data", { err });
3569
+ });
3570
+ }
3567
3571
  registerPersistence(sessionId, meta) {
3568
3572
  const persistence = meta?.persistence;
3569
3573
  if (persistence && this.logWriter) {