@posthog/agent 2.3.171 → 2.3.172

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.
@@ -904,7 +904,7 @@ var import_hono = require("hono");
904
904
  // package.json
905
905
  var package_default = {
906
906
  name: "@posthog/agent",
907
- version: "2.3.171",
907
+ version: "2.3.172",
908
908
  repository: "https://github.com/PostHog/code",
909
909
  description: "TypeScript agent framework wrapping Claude Agent SDK with Git-based task execution for PostHog",
910
910
  exports: {
@@ -3006,6 +3006,26 @@ var CODE_EXECUTION_MODES = [
3006
3006
  function getAvailableModes() {
3007
3007
  return IS_ROOT ? availableModes.filter((m) => m.id !== "bypassPermissions") : availableModes;
3008
3008
  }
3009
+ var CODEX_NATIVE_MODES = ["auto", "read-only", "full-access"];
3010
+ var codexModes = [
3011
+ {
3012
+ id: "read-only",
3013
+ name: "Read Only",
3014
+ description: "Read-only access, no file modifications"
3015
+ },
3016
+ {
3017
+ id: "auto",
3018
+ name: "Auto",
3019
+ description: "Standard behavior, prompts for dangerous operations"
3020
+ }
3021
+ ];
3022
+ if (ALLOW_BYPASS) {
3023
+ codexModes.push({
3024
+ id: "full-access",
3025
+ name: "Full Access",
3026
+ description: "Auto-accept all permission requests"
3027
+ });
3028
+ }
3009
3029
 
3010
3030
  // src/adapters/claude/tools.ts
3011
3031
  var READ_TOOLS = /* @__PURE__ */ new Set(["Read", "NotebookRead"]);
@@ -5005,13 +5025,48 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
5005
5025
  var import_sdk3 = require("@agentclientprotocol/sdk");
5006
5026
 
5007
5027
  // src/adapters/codex/codex-client.ts
5028
+ var AUTO_APPROVED_KINDS = {
5029
+ auto: /* @__PURE__ */ new Set(["read", "search", "fetch", "think"]),
5030
+ "read-only": /* @__PURE__ */ new Set(["read", "search", "fetch", "think"]),
5031
+ "full-access": /* @__PURE__ */ new Set([
5032
+ "read",
5033
+ "edit",
5034
+ "delete",
5035
+ "move",
5036
+ "search",
5037
+ "execute",
5038
+ "think",
5039
+ "fetch",
5040
+ "switch_mode",
5041
+ "other"
5042
+ ])
5043
+ };
5044
+ function shouldAutoApprove(mode, kind) {
5045
+ if (mode === "full-access") return true;
5046
+ if (!kind) return false;
5047
+ return AUTO_APPROVED_KINDS[mode]?.has(kind) ?? false;
5048
+ }
5008
5049
  function createCodexClient(upstreamClient, logger, sessionState, callbacks) {
5009
5050
  const terminalHandles = /* @__PURE__ */ new Map();
5010
5051
  return {
5011
5052
  async requestPermission(params) {
5012
- logger.debug("Relaying permission request to upstream", {
5013
- sessionId: params.sessionId
5014
- });
5053
+ const kind = params.toolCall?.kind;
5054
+ if (shouldAutoApprove(sessionState.permissionMode, kind)) {
5055
+ logger.debug("Auto-approving permission", {
5056
+ mode: sessionState.permissionMode,
5057
+ kind,
5058
+ toolCallId: params.toolCall?.toolCallId
5059
+ });
5060
+ const allowOption = params.options?.find(
5061
+ (o) => o.kind === "allow_once" || o.kind === "allow_always"
5062
+ );
5063
+ return {
5064
+ outcome: {
5065
+ outcome: "selected",
5066
+ optionId: allowOption?.optionId ?? "allow"
5067
+ }
5068
+ };
5069
+ }
5015
5070
  return upstreamClient.requestPermission(params);
5016
5071
  },
5017
5072
  async sessionUpdate(params) {
@@ -5094,7 +5149,7 @@ function createSessionState(sessionId, cwd, opts) {
5094
5149
  return {
5095
5150
  sessionId,
5096
5151
  cwd,
5097
- modeId: opts?.modeId ?? "default",
5152
+ modeId: opts?.modeId ?? "auto",
5098
5153
  modelId: opts?.modelId,
5099
5154
  configOptions: [],
5100
5155
  accumulatedUsage: {
@@ -5103,6 +5158,7 @@ function createSessionState(sessionId, cwd, opts) {
5103
5158
  cachedReadTokens: 0,
5104
5159
  cachedWriteTokens: 0
5105
5160
  },
5161
+ permissionMode: opts?.permissionMode ?? "auto",
5106
5162
  cancelled: false,
5107
5163
  taskRunId: opts?.taskRunId,
5108
5164
  taskId: opts?.taskId
@@ -5297,6 +5353,12 @@ function spawnCodexProcess(options) {
5297
5353
  }
5298
5354
 
5299
5355
  // src/adapters/codex/codex-agent.ts
5356
+ function toPermissionMode(mode) {
5357
+ if (mode && CODEX_NATIVE_MODES.includes(mode)) {
5358
+ return mode;
5359
+ }
5360
+ return "auto";
5361
+ }
5300
5362
  var CodexAcpAgent = class extends BaseAcpAgent {
5301
5363
  adapterName = "codex";
5302
5364
  codexProcess;
@@ -5329,7 +5391,7 @@ var CodexAcpAgent = class extends BaseAcpAgent {
5329
5391
  this.sessionState ?? {
5330
5392
  sessionId: "",
5331
5393
  cwd: "",
5332
- modeId: "default",
5394
+ modeId: "auto",
5333
5395
  configOptions: [],
5334
5396
  accumulatedUsage: {
5335
5397
  inputTokens: 0,
@@ -5337,6 +5399,7 @@ var CodexAcpAgent = class extends BaseAcpAgent {
5337
5399
  cachedReadTokens: 0,
5338
5400
  cachedWriteTokens: 0
5339
5401
  },
5402
+ permissionMode: "auto",
5340
5403
  cancelled: false
5341
5404
  }
5342
5405
  ),
@@ -5375,7 +5438,8 @@ var CodexAcpAgent = class extends BaseAcpAgent {
5375
5438
  taskRunId: meta?.taskRunId,
5376
5439
  taskId: meta?.taskId ?? meta?.persistence?.taskId,
5377
5440
  modeId: response.modes?.currentModeId ?? "default",
5378
- modelId: response.models?.currentModelId
5441
+ modelId: response.models?.currentModelId,
5442
+ permissionMode: toPermissionMode(meta?.permissionMode)
5379
5443
  });
5380
5444
  this.sessionId = response.sessionId;
5381
5445
  this.sessionState.configOptions = response.configOptions ?? [];
@@ -5499,9 +5563,14 @@ var CodexAcpAgent = class extends BaseAcpAgent {
5499
5563
  await this.codexConnection.cancel(params);
5500
5564
  }
5501
5565
  async setSessionMode(params) {
5502
- const response = await this.codexConnection.setSessionMode(params);
5566
+ const permissionMode = toPermissionMode(params.modeId);
5567
+ const response = await this.codexConnection.setSessionMode({
5568
+ ...params,
5569
+ modeId: permissionMode
5570
+ });
5503
5571
  if (this.sessionState) {
5504
- this.sessionState.modeId = params.modeId;
5572
+ this.sessionState.modeId = permissionMode;
5573
+ this.sessionState.permissionMode = permissionMode;
5505
5574
  }
5506
5575
  return response ?? {};
5507
5576
  }