@posthog/agent 2.3.281 → 2.3.282
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 +94 -18
- 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 +103 -21
- package/dist/server/agent-server.js.map +1 -1
- package/dist/server/bin.cjs +103 -21
- package/dist/server/bin.cjs.map +1 -1
- package/package.json +1 -1
- package/src/adapters/codex/codex-agent.test.ts +117 -0
- package/src/adapters/codex/codex-agent.ts +90 -17
- package/src/adapters/codex/codex-client.ts +18 -4
- package/src/adapters/codex/session-state.ts +5 -5
- package/src/server/agent-server.ts +24 -11
package/dist/agent.js
CHANGED
|
@@ -245,7 +245,7 @@ import { v7 as uuidv7 } from "uuid";
|
|
|
245
245
|
// package.json
|
|
246
246
|
var package_default = {
|
|
247
247
|
name: "@posthog/agent",
|
|
248
|
-
version: "2.3.
|
|
248
|
+
version: "2.3.282",
|
|
249
249
|
repository: "https://github.com/PostHog/code",
|
|
250
250
|
description: "TypeScript agent framework wrapping Claude Agent SDK with Git-based task execution for PostHog",
|
|
251
251
|
exports: {
|
|
@@ -2157,9 +2157,16 @@ var CODE_EXECUTION_MODES = [
|
|
|
2157
2157
|
// "dontAsk",
|
|
2158
2158
|
"bypassPermissions"
|
|
2159
2159
|
];
|
|
2160
|
+
function isCodeExecutionMode(mode) {
|
|
2161
|
+
return CODE_EXECUTION_MODES.includes(mode);
|
|
2162
|
+
}
|
|
2160
2163
|
function getAvailableModes() {
|
|
2161
2164
|
return IS_ROOT ? availableModes.filter((m) => m.id !== "bypassPermissions") : availableModes;
|
|
2162
2165
|
}
|
|
2166
|
+
var CODEX_NATIVE_MODES = ["auto", "read-only", "full-access"];
|
|
2167
|
+
function isCodexNativeMode(mode) {
|
|
2168
|
+
return CODEX_NATIVE_MODES.includes(mode);
|
|
2169
|
+
}
|
|
2163
2170
|
var codexModes = [
|
|
2164
2171
|
{
|
|
2165
2172
|
id: "read-only",
|
|
@@ -4226,10 +4233,24 @@ var AUTO_APPROVED_KINDS = {
|
|
|
4226
4233
|
"fetch",
|
|
4227
4234
|
"switch_mode",
|
|
4228
4235
|
"other"
|
|
4236
|
+
]),
|
|
4237
|
+
auto: /* @__PURE__ */ new Set(["read", "search", "fetch", "think"]),
|
|
4238
|
+
"read-only": /* @__PURE__ */ new Set(["read", "search", "fetch", "think"]),
|
|
4239
|
+
"full-access": /* @__PURE__ */ new Set([
|
|
4240
|
+
"read",
|
|
4241
|
+
"edit",
|
|
4242
|
+
"delete",
|
|
4243
|
+
"move",
|
|
4244
|
+
"search",
|
|
4245
|
+
"execute",
|
|
4246
|
+
"think",
|
|
4247
|
+
"fetch",
|
|
4248
|
+
"switch_mode",
|
|
4249
|
+
"other"
|
|
4229
4250
|
])
|
|
4230
4251
|
};
|
|
4231
4252
|
function shouldAutoApprove(mode, kind) {
|
|
4232
|
-
if (mode === "bypassPermissions") return true;
|
|
4253
|
+
if (mode === "bypassPermissions" || mode === "full-access") return true;
|
|
4233
4254
|
if (!kind) return false;
|
|
4234
4255
|
return AUTO_APPROVED_KINDS[mode]?.has(kind) ?? false;
|
|
4235
4256
|
}
|
|
@@ -4336,7 +4357,7 @@ function createSessionState(sessionId, cwd, opts) {
|
|
|
4336
4357
|
return {
|
|
4337
4358
|
sessionId,
|
|
4338
4359
|
cwd,
|
|
4339
|
-
modeId: opts?.modeId ?? "
|
|
4360
|
+
modeId: opts?.modeId ?? "auto",
|
|
4340
4361
|
modelId: opts?.modelId,
|
|
4341
4362
|
configOptions: [],
|
|
4342
4363
|
accumulatedUsage: {
|
|
@@ -4345,7 +4366,7 @@ function createSessionState(sessionId, cwd, opts) {
|
|
|
4345
4366
|
cachedReadTokens: 0,
|
|
4346
4367
|
cachedWriteTokens: 0
|
|
4347
4368
|
},
|
|
4348
|
-
permissionMode: opts?.permissionMode ?? "
|
|
4369
|
+
permissionMode: opts?.permissionMode ?? "auto",
|
|
4349
4370
|
taskRunId: opts?.taskRunId,
|
|
4350
4371
|
taskId: opts?.taskId
|
|
4351
4372
|
};
|
|
@@ -4540,18 +4561,33 @@ function spawnCodexProcess(options) {
|
|
|
4540
4561
|
}
|
|
4541
4562
|
|
|
4542
4563
|
// src/adapters/codex/codex-agent.ts
|
|
4543
|
-
function
|
|
4544
|
-
if (mode &&
|
|
4564
|
+
function toCodexPermissionMode(mode) {
|
|
4565
|
+
if (mode && (isCodexNativeMode(mode) || isCodeExecutionMode(mode))) {
|
|
4545
4566
|
return mode;
|
|
4546
4567
|
}
|
|
4547
|
-
return "
|
|
4568
|
+
return "auto";
|
|
4548
4569
|
}
|
|
4549
4570
|
var CODEX_NATIVE_MODE = {
|
|
4550
|
-
default: "
|
|
4551
|
-
acceptEdits: "
|
|
4552
|
-
plan: "
|
|
4553
|
-
bypassPermissions: "
|
|
4571
|
+
default: "auto",
|
|
4572
|
+
acceptEdits: "auto",
|
|
4573
|
+
plan: "read-only",
|
|
4574
|
+
bypassPermissions: "full-access"
|
|
4554
4575
|
};
|
|
4576
|
+
function toCodexNativeMode(mode) {
|
|
4577
|
+
if (mode && isCodexNativeMode(mode)) {
|
|
4578
|
+
return mode;
|
|
4579
|
+
}
|
|
4580
|
+
if (mode && isCodeExecutionMode(mode)) {
|
|
4581
|
+
return CODEX_NATIVE_MODE[mode];
|
|
4582
|
+
}
|
|
4583
|
+
return "auto";
|
|
4584
|
+
}
|
|
4585
|
+
function getCurrentPermissionMode(currentModeId, fallbackMode) {
|
|
4586
|
+
if (currentModeId && isCodexNativeMode(currentModeId)) {
|
|
4587
|
+
return currentModeId;
|
|
4588
|
+
}
|
|
4589
|
+
return toCodexPermissionMode(fallbackMode);
|
|
4590
|
+
}
|
|
4555
4591
|
var CodexAcpAgent = class extends BaseAcpAgent {
|
|
4556
4592
|
adapterName = "codex";
|
|
4557
4593
|
codexProcess;
|
|
@@ -4611,16 +4647,22 @@ var CodexAcpAgent = class extends BaseAcpAgent {
|
|
|
4611
4647
|
}
|
|
4612
4648
|
async newSession(params) {
|
|
4613
4649
|
const meta = params._meta;
|
|
4650
|
+
const requestedPermissionMode = toCodexPermissionMode(meta?.permissionMode);
|
|
4614
4651
|
const response = await this.codexConnection.newSession(params);
|
|
4615
4652
|
this.sessionState = createSessionState(response.sessionId, params.cwd, {
|
|
4616
4653
|
taskRunId: meta?.taskRunId,
|
|
4617
4654
|
taskId: meta?.taskId ?? meta?.persistence?.taskId,
|
|
4618
|
-
modeId: response.modes?.currentModeId ?? "
|
|
4655
|
+
modeId: response.modes?.currentModeId ?? "auto",
|
|
4619
4656
|
modelId: response.models?.currentModelId,
|
|
4620
|
-
permissionMode:
|
|
4657
|
+
permissionMode: requestedPermissionMode
|
|
4621
4658
|
});
|
|
4622
4659
|
this.sessionId = response.sessionId;
|
|
4623
4660
|
this.sessionState.configOptions = response.configOptions ?? [];
|
|
4661
|
+
await this.applyInitialPermissionMode(
|
|
4662
|
+
response.sessionId,
|
|
4663
|
+
meta?.permissionMode,
|
|
4664
|
+
response.modes?.currentModeId
|
|
4665
|
+
);
|
|
4624
4666
|
if (meta?.taskRunId) {
|
|
4625
4667
|
await this.client.extNotification(POSTHOG_NOTIFICATIONS.SDK_SESSION, {
|
|
4626
4668
|
taskRunId: meta.taskRunId,
|
|
@@ -4637,8 +4679,13 @@ var CodexAcpAgent = class extends BaseAcpAgent {
|
|
|
4637
4679
|
async loadSession(params) {
|
|
4638
4680
|
const response = await this.codexConnection.loadSession(params);
|
|
4639
4681
|
const meta = params._meta;
|
|
4682
|
+
const currentPermissionMode = getCurrentPermissionMode(
|
|
4683
|
+
response.modes?.currentModeId,
|
|
4684
|
+
meta?.permissionMode
|
|
4685
|
+
);
|
|
4640
4686
|
this.sessionState = createSessionState(params.sessionId, params.cwd, {
|
|
4641
|
-
|
|
4687
|
+
modeId: response.modes?.currentModeId ?? "auto",
|
|
4688
|
+
permissionMode: currentPermissionMode
|
|
4642
4689
|
});
|
|
4643
4690
|
this.sessionId = params.sessionId;
|
|
4644
4691
|
this.sessionState.configOptions = response.configOptions ?? [];
|
|
@@ -4651,10 +4698,15 @@ var CodexAcpAgent = class extends BaseAcpAgent {
|
|
|
4651
4698
|
mcpServers: params.mcpServers ?? []
|
|
4652
4699
|
});
|
|
4653
4700
|
const meta = params._meta;
|
|
4701
|
+
const currentPermissionMode = getCurrentPermissionMode(
|
|
4702
|
+
loadResponse.modes?.currentModeId,
|
|
4703
|
+
meta?.permissionMode
|
|
4704
|
+
);
|
|
4654
4705
|
this.sessionState = createSessionState(params.sessionId, params.cwd, {
|
|
4655
4706
|
taskRunId: meta?.taskRunId,
|
|
4656
4707
|
taskId: meta?.taskId ?? meta?.persistence?.taskId,
|
|
4657
|
-
|
|
4708
|
+
modeId: loadResponse.modes?.currentModeId ?? "auto",
|
|
4709
|
+
permissionMode: currentPermissionMode
|
|
4658
4710
|
});
|
|
4659
4711
|
this.sessionId = params.sessionId;
|
|
4660
4712
|
this.sessionState.configOptions = loadResponse.configOptions ?? [];
|
|
@@ -4678,15 +4730,39 @@ var CodexAcpAgent = class extends BaseAcpAgent {
|
|
|
4678
4730
|
_meta: params._meta
|
|
4679
4731
|
});
|
|
4680
4732
|
const meta = params._meta;
|
|
4733
|
+
const requestedPermissionMode = toCodexPermissionMode(meta?.permissionMode);
|
|
4681
4734
|
this.sessionState = createSessionState(newResponse.sessionId, params.cwd, {
|
|
4682
4735
|
taskRunId: meta?.taskRunId,
|
|
4683
4736
|
taskId: meta?.taskId ?? meta?.persistence?.taskId,
|
|
4684
|
-
|
|
4737
|
+
modeId: newResponse.modes?.currentModeId ?? "auto",
|
|
4738
|
+
permissionMode: requestedPermissionMode
|
|
4685
4739
|
});
|
|
4686
4740
|
this.sessionId = newResponse.sessionId;
|
|
4687
4741
|
this.sessionState.configOptions = newResponse.configOptions ?? [];
|
|
4742
|
+
await this.applyInitialPermissionMode(
|
|
4743
|
+
newResponse.sessionId,
|
|
4744
|
+
meta?.permissionMode,
|
|
4745
|
+
newResponse.modes?.currentModeId
|
|
4746
|
+
);
|
|
4688
4747
|
return newResponse;
|
|
4689
4748
|
}
|
|
4749
|
+
async applyInitialPermissionMode(sessionId, permissionMode, currentModeId) {
|
|
4750
|
+
if (!permissionMode) {
|
|
4751
|
+
return;
|
|
4752
|
+
}
|
|
4753
|
+
const nativeMode = toCodexNativeMode(permissionMode);
|
|
4754
|
+
if (nativeMode === currentModeId) {
|
|
4755
|
+
this.sessionState.modeId = nativeMode;
|
|
4756
|
+
this.sessionState.permissionMode = toCodexPermissionMode(permissionMode);
|
|
4757
|
+
return;
|
|
4758
|
+
}
|
|
4759
|
+
await this.codexConnection.setSessionMode({
|
|
4760
|
+
sessionId,
|
|
4761
|
+
modeId: nativeMode
|
|
4762
|
+
});
|
|
4763
|
+
this.sessionState.modeId = nativeMode;
|
|
4764
|
+
this.sessionState.permissionMode = toCodexPermissionMode(permissionMode);
|
|
4765
|
+
}
|
|
4690
4766
|
async listSessions(params) {
|
|
4691
4767
|
return this.codexConnection.listSessions(params);
|
|
4692
4768
|
}
|
|
@@ -4732,8 +4808,8 @@ var CodexAcpAgent = class extends BaseAcpAgent {
|
|
|
4732
4808
|
});
|
|
4733
4809
|
}
|
|
4734
4810
|
async setSessionMode(params) {
|
|
4735
|
-
const requestedMode =
|
|
4736
|
-
const nativeMode =
|
|
4811
|
+
const requestedMode = toCodexPermissionMode(params.modeId);
|
|
4812
|
+
const nativeMode = toCodexNativeMode(params.modeId);
|
|
4737
4813
|
const response = await this.codexConnection.setSessionMode({
|
|
4738
4814
|
...params,
|
|
4739
4815
|
modeId: nativeMode
|