@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.
- package/dist/{agent-BJ7Uacyp.d.ts → agent-DcBmoTR4.d.ts} +0 -2
- package/dist/agent.d.ts +1 -1
- package/dist/agent.js +42 -122
- package/dist/agent.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +169 -247
- package/dist/index.js.map +1 -1
- package/dist/server/agent-server.js +169 -246
- package/dist/server/agent-server.js.map +1 -1
- package/dist/server/bin.cjs +169 -246
- package/dist/server/bin.cjs.map +1 -1
- package/package.json +1 -1
- package/src/adapters/acp-connection.ts +1 -6
- package/src/adapters/claude/claude-agent.ts +39 -75
- package/src/agent.ts +0 -1
|
@@ -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
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.
|
|
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 =
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
|
-
|
|
2492
|
-
|
|
2493
|
-
|
|
2494
|
-
|
|
2495
|
-
|
|
2496
|
-
|
|
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 =
|
|
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
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
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
|
|
2526
|
-
|
|
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
|
|
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 =
|
|
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
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
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(
|
|
2579
|
-
const configOptions = await
|
|
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(
|
|
2698
|
+
deferBackgroundFetches(q, sessionId, mcpServers) {
|
|
2772
2699
|
Promise.all([
|
|
2773
|
-
|
|
2774
|
-
|
|
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 ? {
|