@posthog/agent 2.1.47 → 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.
@@ -94,8 +94,6 @@ type AcpConnectionConfig = {
94
94
  /** Deployment environment - "local" for desktop, "cloud" for cloud sandbox */
95
95
  deviceType?: "local" | "cloud";
96
96
  logger?: Logger;
97
- /** Enable dev-only instrumentation (timing, verbose logging) */
98
- debug?: boolean;
99
97
  processCallbacks?: ProcessSpawnedCallback;
100
98
  codexOptions?: CodexProcessOptions;
101
99
  allowedModelIds?: Set<string>;
package/dist/agent.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { b as Agent } from './agent-BJ7Uacyp.js';
1
+ export { b as Agent } from './agent-DcBmoTR4.js';
2
2
  import './types.js';
3
3
  import '@agentclientprotocol/sdk';
4
4
  import './logger-DDBiMOOD.js';
package/dist/agent.js CHANGED
@@ -271,49 +271,12 @@ import {
271
271
  import {
272
272
  query
273
273
  } from "@anthropic-ai/claude-agent-sdk";
274
-
275
- // ../shared/dist/index.js
276
- var NOOP_COLLECTOR = {
277
- time: (_label, fn) => fn(),
278
- timeSync: (_label, fn) => fn(),
279
- record: () => {
280
- },
281
- summarize: () => {
282
- }
283
- };
284
- function createTimingCollector(enabled, log) {
285
- if (!enabled) return NOOP_COLLECTOR;
286
- const steps = {};
287
- return {
288
- async time(label, fn) {
289
- const start = Date.now();
290
- const result = await fn();
291
- steps[label] = Date.now() - start;
292
- return result;
293
- },
294
- timeSync(label, fn) {
295
- const start = Date.now();
296
- const result = fn();
297
- steps[label] = Date.now() - start;
298
- return result;
299
- },
300
- record(label, ms) {
301
- steps[label] = ms;
302
- },
303
- summarize(label) {
304
- const total = Object.values(steps).reduce((a, b) => a + b, 0);
305
- log(`[timing] ${label}: ${total}ms`, steps);
306
- }
307
- };
308
- }
309
-
310
- // src/adapters/claude/claude-agent.ts
311
274
  import { v7 as uuidv7 } from "uuid";
312
275
 
313
276
  // package.json
314
277
  var package_default = {
315
278
  name: "@posthog/agent",
316
- version: "2.1.47",
279
+ version: "2.1.48",
317
280
  repository: "https://github.com/PostHog/twig",
318
281
  description: "TypeScript agent framework wrapping Claude Agent SDK with Git-based task execution for PostHog",
319
282
  exports: {
@@ -2424,12 +2387,10 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
2424
2387
  logWriter;
2425
2388
  options;
2426
2389
  lastSentConfigOptions;
2427
- debug;
2428
2390
  constructor(client, logWriter, options) {
2429
2391
  super(client);
2430
2392
  this.logWriter = logWriter;
2431
2393
  this.options = options;
2432
- this.debug = options?.debug ?? false;
2433
2394
  this.toolUseCache = {};
2434
2395
  this.logger = new Logger({ debug: true, prefix: "[ClaudeAcpAgent]" });
2435
2396
  }
@@ -2472,36 +2433,26 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
2472
2433
  }
2473
2434
  async newSession(params) {
2474
2435
  this.checkAuthStatus();
2475
- const tc = createTimingCollector(
2476
- this.debug,
2477
- (msg, data) => this.logger.info(msg, data)
2478
- );
2479
2436
  const meta = params._meta;
2480
2437
  const sessionId = uuidv7();
2481
2438
  const permissionMode = meta?.permissionMode && TWIG_EXECUTION_MODES.includes(meta.permissionMode) ? meta.permissionMode : "default";
2482
- const mcpServers = tc.timeSync(
2483
- "parseMcpServers",
2484
- () => parseMcpServers(params)
2485
- );
2486
- const options = tc.timeSync(
2487
- "buildSessionOptions",
2488
- () => buildSessionOptions({
2489
- cwd: params.cwd,
2490
- mcpServers,
2491
- permissionMode,
2492
- canUseTool: this.createCanUseTool(sessionId),
2493
- logger: this.logger,
2494
- systemPrompt: buildSystemPrompt(meta?.systemPrompt),
2495
- userProvidedOptions: meta?.claudeCode?.options,
2496
- sessionId,
2497
- isResume: false,
2498
- onModeChange: this.createOnModeChange(sessionId),
2499
- onProcessSpawned: this.options?.onProcessSpawned,
2500
- onProcessExited: this.options?.onProcessExited
2501
- })
2502
- );
2439
+ const mcpServers = parseMcpServers(params);
2440
+ const options = buildSessionOptions({
2441
+ cwd: params.cwd,
2442
+ mcpServers,
2443
+ permissionMode,
2444
+ canUseTool: this.createCanUseTool(sessionId),
2445
+ logger: this.logger,
2446
+ systemPrompt: buildSystemPrompt(meta?.systemPrompt),
2447
+ userProvidedOptions: meta?.claudeCode?.options,
2448
+ sessionId,
2449
+ isResume: false,
2450
+ onModeChange: this.createOnModeChange(sessionId),
2451
+ onProcessSpawned: this.options?.onProcessSpawned,
2452
+ onProcessExited: this.options?.onProcessExited
2453
+ });
2503
2454
  const input = new Pushable();
2504
- const q = tc.timeSync("sdkQuery", () => query({ prompt: input, options }));
2455
+ const q = query({ prompt: input, options });
2505
2456
  const session = this.createSession(
2506
2457
  sessionId,
2507
2458
  q,
@@ -2513,27 +2464,17 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
2513
2464
  session.taskRunId = meta?.taskRunId;
2514
2465
  this.registerPersistence(sessionId, meta);
2515
2466
  if (meta?.taskRunId) {
2516
- await tc.time(
2517
- "extNotification",
2518
- () => this.client.extNotification("_posthog/sdk_session", {
2519
- taskRunId: meta.taskRunId,
2520
- sessionId,
2521
- adapter: "claude"
2522
- })
2523
- );
2467
+ await this.client.extNotification("_posthog/sdk_session", {
2468
+ taskRunId: meta.taskRunId,
2469
+ sessionId,
2470
+ adapter: "claude"
2471
+ });
2524
2472
  }
2525
- const modelOptions = await tc.time(
2526
- "fetchModels",
2527
- () => this.getModelConfigOptions()
2528
- );
2529
- this.deferBackgroundFetches(tc, q, sessionId, mcpServers);
2473
+ const modelOptions = await this.getModelConfigOptions();
2474
+ this.deferBackgroundFetches(q, sessionId, mcpServers);
2530
2475
  session.modelId = modelOptions.currentModelId;
2531
2476
  await this.trySetModel(q, modelOptions.currentModelId);
2532
- const configOptions = await tc.time(
2533
- "buildConfigOptions",
2534
- () => this.buildConfigOptions(modelOptions)
2535
- );
2536
- tc.summarize("newSession");
2477
+ const configOptions = await this.buildConfigOptions(modelOptions);
2537
2478
  return {
2538
2479
  sessionId,
2539
2480
  configOptions
@@ -2543,10 +2484,6 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
2543
2484
  return this.resumeSession(params);
2544
2485
  }
2545
2486
  async resumeSession(params) {
2546
- const tc = createTimingCollector(
2547
- this.debug,
2548
- (msg, data) => this.logger.info(msg, data)
2549
- );
2550
2487
  const meta = params._meta;
2551
2488
  const sessionId = meta?.sessionId;
2552
2489
  if (!sessionId) {
@@ -2555,32 +2492,22 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
2555
2492
  if (this.sessionId === sessionId) {
2556
2493
  return {};
2557
2494
  }
2558
- const mcpServers = tc.timeSync(
2559
- "parseMcpServers",
2560
- () => parseMcpServers(params)
2561
- );
2495
+ const mcpServers = parseMcpServers(params);
2562
2496
  const permissionMode = meta?.permissionMode && TWIG_EXECUTION_MODES.includes(meta.permissionMode) ? meta.permissionMode : "default";
2563
- const { query: q, session } = await tc.time(
2564
- "initializeQuery",
2565
- () => this.initializeQuery({
2566
- cwd: params.cwd,
2567
- permissionMode,
2568
- mcpServers,
2569
- systemPrompt: buildSystemPrompt(meta?.systemPrompt),
2570
- userProvidedOptions: meta?.claudeCode?.options,
2571
- sessionId,
2572
- isResume: true,
2573
- additionalDirectories: meta?.claudeCode?.options?.additionalDirectories
2574
- })
2575
- );
2497
+ const { query: q, session } = await this.initializeQuery({
2498
+ cwd: params.cwd,
2499
+ permissionMode,
2500
+ mcpServers,
2501
+ systemPrompt: buildSystemPrompt(meta?.systemPrompt),
2502
+ userProvidedOptions: meta?.claudeCode?.options,
2503
+ sessionId,
2504
+ isResume: true,
2505
+ additionalDirectories: meta?.claudeCode?.options?.additionalDirectories
2506
+ });
2576
2507
  session.taskRunId = meta?.taskRunId;
2577
2508
  this.registerPersistence(sessionId, meta);
2578
- this.deferBackgroundFetches(tc, q, sessionId, mcpServers);
2579
- const configOptions = await tc.time(
2580
- "buildConfigOptions",
2581
- () => this.buildConfigOptions()
2582
- );
2583
- tc.summarize("resumeSession");
2509
+ this.deferBackgroundFetches(q, sessionId, mcpServers);
2510
+ const configOptions = await this.buildConfigOptions();
2584
2511
  return { configOptions };
2585
2512
  }
2586
2513
  async prompt(params) {
@@ -2768,13 +2695,10 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
2768
2695
  * Fire-and-forget: fetch slash commands and MCP tool metadata in parallel.
2769
2696
  * Both populate caches used later — neither is needed to return configOptions.
2770
2697
  */
2771
- deferBackgroundFetches(tc, q, sessionId, mcpServers) {
2698
+ deferBackgroundFetches(q, sessionId, mcpServers) {
2772
2699
  Promise.all([
2773
- tc.time("slashCommands", () => getAvailableSlashCommands(q)),
2774
- tc.time(
2775
- "mcpMetadata",
2776
- () => fetchMcpToolMetadata(mcpServers, this.logger)
2777
- )
2700
+ getAvailableSlashCommands(q),
2701
+ fetchMcpToolMetadata(mcpServers, this.logger)
2778
2702
  ]).then(([slashCommands]) => {
2779
2703
  this.sendAvailableCommandsUpdate(sessionId, slashCommands);
2780
2704
  }).catch((err) => {
@@ -3068,10 +2992,7 @@ function createClaudeConnection(config) {
3068
2992
  const agentStream = ndJsonStream(agentWritable, streams.agent.readable);
3069
2993
  let agent = null;
3070
2994
  const agentConnection = new AgentSideConnection((client) => {
3071
- agent = new ClaudeAcpAgent(client, logWriter, {
3072
- ...config.processCallbacks,
3073
- debug: config.debug
3074
- });
2995
+ agent = new ClaudeAcpAgent(client, logWriter, config.processCallbacks);
3075
2996
  logger.info(`Created ${agent.adapterName} agent`);
3076
2997
  return agent;
3077
2998
  }, agentStream);
@@ -3771,7 +3692,6 @@ var Agent = class {
3771
3692
  taskId,
3772
3693
  deviceType: "local",
3773
3694
  logger: this.logger,
3774
- debug: this.debug,
3775
3695
  processCallbacks: options.processCallbacks,
3776
3696
  allowedModelIds,
3777
3697
  codexOptions: options.adapter === "codex" && gatewayConfig ? {