@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/agent.js +29 -25
- package/dist/agent.js.map +1 -1
- package/dist/index.js +29 -25
- package/dist/index.js.map +1 -1
- package/dist/server/agent-server.js +29 -25
- package/dist/server/agent-server.js.map +1 -1
- package/dist/server/bin.cjs +29 -25
- package/dist/server/bin.cjs.map +1 -1
- package/package.json +3 -3
- package/src/adapters/claude/claude-agent.ts +41 -32
package/dist/agent.js
CHANGED
|
@@ -276,7 +276,7 @@ import { v7 as uuidv7 } from "uuid";
|
|
|
276
276
|
// package.json
|
|
277
277
|
var package_default = {
|
|
278
278
|
name: "@posthog/agent",
|
|
279
|
-
version: "2.1.
|
|
279
|
+
version: "2.1.48",
|
|
280
280
|
repository: "https://github.com/PostHog/twig",
|
|
281
281
|
description: "TypeScript agent framework wrapping Claude Agent SDK with Git-based task execution for PostHog",
|
|
282
282
|
exports: {
|
|
@@ -2385,12 +2385,12 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
2385
2385
|
backgroundTerminals = {};
|
|
2386
2386
|
clientCapabilities;
|
|
2387
2387
|
logWriter;
|
|
2388
|
-
|
|
2388
|
+
options;
|
|
2389
2389
|
lastSentConfigOptions;
|
|
2390
|
-
constructor(client, logWriter,
|
|
2390
|
+
constructor(client, logWriter, options) {
|
|
2391
2391
|
super(client);
|
|
2392
2392
|
this.logWriter = logWriter;
|
|
2393
|
-
this.
|
|
2393
|
+
this.options = options;
|
|
2394
2394
|
this.toolUseCache = {};
|
|
2395
2395
|
this.logger = new Logger({ debug: true, prefix: "[ClaudeAcpAgent]" });
|
|
2396
2396
|
}
|
|
@@ -2437,7 +2437,6 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
2437
2437
|
const sessionId = uuidv7();
|
|
2438
2438
|
const permissionMode = meta?.permissionMode && TWIG_EXECUTION_MODES.includes(meta.permissionMode) ? meta.permissionMode : "default";
|
|
2439
2439
|
const mcpServers = parseMcpServers(params);
|
|
2440
|
-
const mcpMetadataPromise = fetchMcpToolMetadata(mcpServers, this.logger);
|
|
2441
2440
|
const options = buildSessionOptions({
|
|
2442
2441
|
cwd: params.cwd,
|
|
2443
2442
|
mcpServers,
|
|
@@ -2449,8 +2448,8 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
2449
2448
|
sessionId,
|
|
2450
2449
|
isResume: false,
|
|
2451
2450
|
onModeChange: this.createOnModeChange(sessionId),
|
|
2452
|
-
onProcessSpawned: this.
|
|
2453
|
-
onProcessExited: this.
|
|
2451
|
+
onProcessSpawned: this.options?.onProcessSpawned,
|
|
2452
|
+
onProcessExited: this.options?.onProcessExited
|
|
2454
2453
|
});
|
|
2455
2454
|
const input = new Pushable();
|
|
2456
2455
|
const q = query({ prompt: input, options });
|
|
@@ -2471,17 +2470,14 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
2471
2470
|
adapter: "claude"
|
|
2472
2471
|
});
|
|
2473
2472
|
}
|
|
2474
|
-
const
|
|
2475
|
-
|
|
2476
|
-
getAvailableSlashCommands(q),
|
|
2477
|
-
mcpMetadataPromise
|
|
2478
|
-
]);
|
|
2473
|
+
const modelOptions = await this.getModelConfigOptions();
|
|
2474
|
+
this.deferBackgroundFetches(q, sessionId, mcpServers);
|
|
2479
2475
|
session.modelId = modelOptions.currentModelId;
|
|
2480
2476
|
await this.trySetModel(q, modelOptions.currentModelId);
|
|
2481
|
-
this.
|
|
2477
|
+
const configOptions = await this.buildConfigOptions(modelOptions);
|
|
2482
2478
|
return {
|
|
2483
2479
|
sessionId,
|
|
2484
|
-
configOptions
|
|
2480
|
+
configOptions
|
|
2485
2481
|
};
|
|
2486
2482
|
}
|
|
2487
2483
|
async loadSession(params) {
|
|
@@ -2497,7 +2493,6 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
2497
2493
|
return {};
|
|
2498
2494
|
}
|
|
2499
2495
|
const mcpServers = parseMcpServers(params);
|
|
2500
|
-
const mcpMetadataPromise = fetchMcpToolMetadata(mcpServers, this.logger);
|
|
2501
2496
|
const permissionMode = meta?.permissionMode && TWIG_EXECUTION_MODES.includes(meta.permissionMode) ? meta.permissionMode : "default";
|
|
2502
2497
|
const { query: q, session } = await this.initializeQuery({
|
|
2503
2498
|
cwd: params.cwd,
|
|
@@ -2511,14 +2506,9 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
2511
2506
|
});
|
|
2512
2507
|
session.taskRunId = meta?.taskRunId;
|
|
2513
2508
|
this.registerPersistence(sessionId, meta);
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
]);
|
|
2518
|
-
this.sendAvailableCommandsUpdate(sessionId, slashCommands);
|
|
2519
|
-
return {
|
|
2520
|
-
configOptions: await this.buildConfigOptions()
|
|
2521
|
-
};
|
|
2509
|
+
this.deferBackgroundFetches(q, sessionId, mcpServers);
|
|
2510
|
+
const configOptions = await this.buildConfigOptions();
|
|
2511
|
+
return { configOptions };
|
|
2522
2512
|
}
|
|
2523
2513
|
async prompt(params) {
|
|
2524
2514
|
this.session.cancelled = false;
|
|
@@ -2590,8 +2580,8 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
2590
2580
|
isResume: config.isResume,
|
|
2591
2581
|
additionalDirectories: config.additionalDirectories,
|
|
2592
2582
|
onModeChange: this.createOnModeChange(config.sessionId),
|
|
2593
|
-
onProcessSpawned: this.
|
|
2594
|
-
onProcessExited: this.
|
|
2583
|
+
onProcessSpawned: this.options?.onProcessSpawned,
|
|
2584
|
+
onProcessExited: this.options?.onProcessExited
|
|
2595
2585
|
});
|
|
2596
2586
|
const q = query({ prompt: input, options });
|
|
2597
2587
|
const abortController = options.abortController;
|
|
@@ -2701,6 +2691,20 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
2701
2691
|
await q.setModel(fallback);
|
|
2702
2692
|
}
|
|
2703
2693
|
}
|
|
2694
|
+
/**
|
|
2695
|
+
* Fire-and-forget: fetch slash commands and MCP tool metadata in parallel.
|
|
2696
|
+
* Both populate caches used later — neither is needed to return configOptions.
|
|
2697
|
+
*/
|
|
2698
|
+
deferBackgroundFetches(q, sessionId, mcpServers) {
|
|
2699
|
+
Promise.all([
|
|
2700
|
+
getAvailableSlashCommands(q),
|
|
2701
|
+
fetchMcpToolMetadata(mcpServers, this.logger)
|
|
2702
|
+
]).then(([slashCommands]) => {
|
|
2703
|
+
this.sendAvailableCommandsUpdate(sessionId, slashCommands);
|
|
2704
|
+
}).catch((err) => {
|
|
2705
|
+
this.logger.warn("Failed to fetch deferred session data", { err });
|
|
2706
|
+
});
|
|
2707
|
+
}
|
|
2704
2708
|
registerPersistence(sessionId, meta) {
|
|
2705
2709
|
const persistence = meta?.persistence;
|
|
2706
2710
|
if (persistence && this.logWriter) {
|