@posthog/agent 2.3.74 → 2.3.81
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 +45 -5
- package/dist/agent.js.map +1 -1
- package/dist/posthog-api.js +1 -1
- package/dist/posthog-api.js.map +1 -1
- package/dist/server/agent-server.d.ts +1 -0
- package/dist/server/agent-server.js +46 -5
- package/dist/server/agent-server.js.map +1 -1
- package/dist/server/bin.cjs +52 -6
- package/dist/server/bin.cjs.map +1 -1
- package/package.json +1 -1
- package/src/adapters/claude/claude-agent.ts +11 -2
- package/src/adapters/claude/permissions/permission-handlers.ts +35 -1
- package/src/adapters/claude/types.ts +1 -0
- package/src/server/agent-server.ts +1 -0
- package/src/server/bin.ts +12 -0
- package/src/server/types.ts +1 -0
package/dist/agent.js
CHANGED
|
@@ -281,7 +281,7 @@ import { v7 as uuidv7 } from "uuid";
|
|
|
281
281
|
// package.json
|
|
282
282
|
var package_default = {
|
|
283
283
|
name: "@posthog/agent",
|
|
284
|
-
version: "2.3.
|
|
284
|
+
version: "2.3.81",
|
|
285
285
|
repository: "https://github.com/PostHog/code",
|
|
286
286
|
description: "TypeScript agent framework wrapping Claude Agent SDK with Git-based task execution for PostHog",
|
|
287
287
|
exports: {
|
|
@@ -2512,8 +2512,37 @@ function handlePlanFileException(context) {
|
|
|
2512
2512
|
updatedInput: toolInput
|
|
2513
2513
|
};
|
|
2514
2514
|
}
|
|
2515
|
+
function extractDomainFromUrl(url) {
|
|
2516
|
+
try {
|
|
2517
|
+
return new URL(url).hostname;
|
|
2518
|
+
} catch {
|
|
2519
|
+
return null;
|
|
2520
|
+
}
|
|
2521
|
+
}
|
|
2522
|
+
function isDomainAllowed(hostname, allowedDomains) {
|
|
2523
|
+
return allowedDomains.some((pattern) => {
|
|
2524
|
+
if (pattern.startsWith("*.")) {
|
|
2525
|
+
const suffix = pattern.slice(1);
|
|
2526
|
+
return hostname === pattern.slice(2) || hostname.endsWith(suffix);
|
|
2527
|
+
}
|
|
2528
|
+
return hostname === pattern;
|
|
2529
|
+
});
|
|
2530
|
+
}
|
|
2515
2531
|
async function canUseTool(context) {
|
|
2516
|
-
const { toolName, toolInput, session } = context;
|
|
2532
|
+
const { toolName, toolInput, session, allowedDomains } = context;
|
|
2533
|
+
if (allowedDomains && allowedDomains.length > 0) {
|
|
2534
|
+
if (toolName === "WebFetch" || toolName === "WebSearch") {
|
|
2535
|
+
const url = toolInput.url;
|
|
2536
|
+
if (url) {
|
|
2537
|
+
const hostname = extractDomainFromUrl(url);
|
|
2538
|
+
if (hostname && !isDomainAllowed(hostname, allowedDomains)) {
|
|
2539
|
+
const message = `Domain "${hostname}" is not in the allowed list: ${allowedDomains.join(", ")}`;
|
|
2540
|
+
await emitToolDenial(context, message);
|
|
2541
|
+
return { behavior: "deny", message, interrupt: false };
|
|
2542
|
+
}
|
|
2543
|
+
}
|
|
2544
|
+
}
|
|
2545
|
+
}
|
|
2517
2546
|
if (isToolAllowedForMode(toolName, session.permissionMode)) {
|
|
2518
2547
|
return {
|
|
2519
2548
|
behavior: "allow",
|
|
@@ -2603,6 +2632,13 @@ var GATEWAY_TO_SDK_MODEL = {
|
|
|
2603
2632
|
function toSdkModelId(modelId) {
|
|
2604
2633
|
return GATEWAY_TO_SDK_MODEL[modelId] ?? modelId;
|
|
2605
2634
|
}
|
|
2635
|
+
var MODELS_WITH_1M_CONTEXT = /* @__PURE__ */ new Set([
|
|
2636
|
+
"claude-opus-4-6",
|
|
2637
|
+
"claude-sonnet-4-6"
|
|
2638
|
+
]);
|
|
2639
|
+
function supports1MContext(modelId) {
|
|
2640
|
+
return MODELS_WITH_1M_CONTEXT.has(modelId);
|
|
2641
|
+
}
|
|
2606
2642
|
var MODELS_WITH_EFFORT = /* @__PURE__ */ new Set([
|
|
2607
2643
|
"claude-opus-4-5",
|
|
2608
2644
|
"claude-opus-4-6",
|
|
@@ -3681,7 +3717,7 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
3681
3717
|
cwd,
|
|
3682
3718
|
mcpServers,
|
|
3683
3719
|
permissionMode,
|
|
3684
|
-
canUseTool: this.createCanUseTool(sessionId),
|
|
3720
|
+
canUseTool: this.createCanUseTool(sessionId, meta?.allowedDomains),
|
|
3685
3721
|
logger: this.logger,
|
|
3686
3722
|
systemPrompt,
|
|
3687
3723
|
userProvidedOptions: meta?.claudeCode?.options,
|
|
@@ -3773,6 +3809,9 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
3773
3809
|
if (!isResume && resolvedSdkModel !== DEFAULT_MODEL) {
|
|
3774
3810
|
await this.session.query.setModel(resolvedSdkModel);
|
|
3775
3811
|
}
|
|
3812
|
+
if (supports1MContext(resolvedModelId)) {
|
|
3813
|
+
options.betas = ["context-1m-2025-08-07"];
|
|
3814
|
+
}
|
|
3776
3815
|
const availableModes2 = getAvailableModes();
|
|
3777
3816
|
const modes = {
|
|
3778
3817
|
currentModeId: permissionMode,
|
|
@@ -3811,7 +3850,7 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
3811
3850
|
);
|
|
3812
3851
|
return { sessionId, modes, models, configOptions };
|
|
3813
3852
|
}
|
|
3814
|
-
createCanUseTool(sessionId) {
|
|
3853
|
+
createCanUseTool(sessionId, allowedDomains) {
|
|
3815
3854
|
return async (toolName, toolInput, { suggestions, toolUseID, signal }) => canUseTool({
|
|
3816
3855
|
session: this.session,
|
|
3817
3856
|
toolName,
|
|
@@ -3823,7 +3862,8 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
3823
3862
|
sessionId,
|
|
3824
3863
|
fileContentCache: this.fileContentCache,
|
|
3825
3864
|
logger: this.logger,
|
|
3826
|
-
updateConfigOption: (configId, value) => this.updateConfigOption(configId, value)
|
|
3865
|
+
updateConfigOption: (configId, value) => this.updateConfigOption(configId, value),
|
|
3866
|
+
allowedDomains
|
|
3827
3867
|
});
|
|
3828
3868
|
}
|
|
3829
3869
|
createOnModeChange() {
|