@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 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.281",
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 ?? "default",
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 ?? "default",
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 toCodeExecutionMode(mode) {
4544
- if (mode && CODE_EXECUTION_MODES.includes(mode)) {
4564
+ function toCodexPermissionMode(mode) {
4565
+ if (mode && (isCodexNativeMode(mode) || isCodeExecutionMode(mode))) {
4545
4566
  return mode;
4546
4567
  }
4547
- return "default";
4568
+ return "auto";
4548
4569
  }
4549
4570
  var CODEX_NATIVE_MODE = {
4550
- default: "default",
4551
- acceptEdits: "default",
4552
- plan: "plan",
4553
- bypassPermissions: "default"
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 ?? "default",
4655
+ modeId: response.modes?.currentModeId ?? "auto",
4619
4656
  modelId: response.models?.currentModelId,
4620
- permissionMode: toCodeExecutionMode(meta?.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
- permissionMode: toCodeExecutionMode(meta?.permissionMode)
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
- permissionMode: toCodeExecutionMode(meta?.permissionMode)
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
- permissionMode: toCodeExecutionMode(meta?.permissionMode)
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 = toCodeExecutionMode(params.modeId);
4736
- const nativeMode = CODEX_NATIVE_MODE[requestedMode];
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