browsentic 0.6.0 → 0.6.2

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/cli.js CHANGED
@@ -30079,7 +30079,7 @@ var AGENTS = {
30079
30079
  bin: "codex",
30080
30080
  install: "npm i -g @openai/codex",
30081
30081
  docs: "https://developers.openai.com/codex/cli",
30082
- models: ["gpt-5.6-terra", "gpt-5.1-codex-max", "gpt-5.1-codex", "gpt-5.1-codex-mini"]
30082
+ models: ["gpt-5.6-terra", "gpt-5.6-luna", "gpt-5.5"]
30083
30083
  },
30084
30084
  antigravity: {
30085
30085
  kind: "antigravity",
@@ -30721,12 +30721,12 @@ var ownTool = (name) => /browsentic|^mcp/i.test(name);
30721
30721
  import { randomUUID as randomUUID3 } from "crypto";
30722
30722
  import { homedir as homedir4 } from "os";
30723
30723
  import { join as join7 } from "path";
30724
- var SANDBOX = ["--sandbox", "read-only", "--ask-for-approval", "never", "--skip-git-repo-check"];
30724
+ var SANDBOX = ["-c", 'sandbox_mode="read-only"', "-c", 'approval_policy="never"', "--skip-git-repo-check"];
30725
30725
  var WEB_TOOL = "web_search";
30726
30726
  var codexRunner = {
30727
30727
  kind: "codex",
30728
30728
  versionArgs: ["--version"],
30729
- efforts: ["minimal", "low", "medium", "high"],
30729
+ efforts: ["low", "medium", "high", "xhigh"],
30730
30730
  workspace: () => stateDir,
30731
30731
  skillDirs: () => [join7(homedir4(), ".codex", "skills"), join7(homedir4(), ".codex", "prompts")],
30732
30732
  stream(context) {
@@ -30749,6 +30749,9 @@ var codexRunner = {
30749
30749
  `${server}.env=${tomlTable(mcp.env)}`,
30750
30750
  "-c",
30751
30751
  `${server}.required=true`,
30752
+ // Headless Codex refuses an MCP call it would have asked about; the daemon gates these tools itself.
30753
+ "-c",
30754
+ `${server}.default_tools_approval_mode="approve"`,
30752
30755
  "-c",
30753
30756
  `developer_instructions=${tomlString(context.systemPrompt)}`,
30754
30757
  "-c",
@@ -30801,7 +30804,7 @@ var codexRunner = {
30801
30804
  case "task_complete":
30802
30805
  return sink.done("end_turn");
30803
30806
  case "error":
30804
- return sink.fail("AGENT_FAILED", msg.error || msg.message || "Codex reported an error");
30807
+ return sink.fail("AGENT_FAILED", explain(msg.error || msg.message) || "Codex reported an error");
30805
30808
  default:
30806
30809
  return;
30807
30810
  }
@@ -30832,9 +30835,9 @@ var codexRunner = {
30832
30835
  return sink.done("end_turn");
30833
30836
  }
30834
30837
  case "turn.failed":
30835
- return sink.fail("AGENT_FAILED", frame.error?.message || "Codex could not finish the turn");
30838
+ return sink.fail("AGENT_FAILED", explain(frame.error?.message) || "Codex could not finish the turn");
30836
30839
  case "error":
30837
- return sink.fail("AGENT_FAILED", frame.message || frame.error?.message || "Codex reported an error");
30840
+ return sink.fail("AGENT_FAILED", explain(frame.message || frame.error?.message) || "Codex reported an error");
30838
30841
  default:
30839
30842
  return;
30840
30843
  }
@@ -30890,6 +30893,11 @@ var codexRunner = {
30890
30893
  return null;
30891
30894
  }
30892
30895
  };
30896
+ function explain(raw) {
30897
+ if (!raw) return raw;
30898
+ const message = parseJsonLine(raw)?.error?.message ?? raw;
30899
+ return /model .*(not supported|does not exist|not found)/i.test(message) ? `${message} Pick another model for Codex in the Browsentic popup, then try again.` : message;
30900
+ }
30893
30901
  function kindOf(item) {
30894
30902
  return item?.type ?? item?.item_type;
30895
30903
  }
@@ -31629,19 +31637,13 @@ var CONTAINMENT = {
31629
31637
  keepsEnv: ["OPENAI_", "CODEX_", "AZURE_OPENAI_"],
31630
31638
  note: "no per-run tool list; the read-only sandbox is the whole containment, so the agent can still read any file the user can",
31631
31639
  run: {
31632
- required: [],
31633
- pairs: [
31634
- ["--sandbox", "read-only"],
31635
- ["--ask-for-approval", "never"]
31636
- ],
31640
+ required: ['sandbox_mode="read-only"', 'approval_policy="never"'],
31641
+ pairs: [],
31637
31642
  files: []
31638
31643
  },
31639
31644
  task: {
31640
- required: ["mcp_servers={}"],
31641
- pairs: [
31642
- ["--sandbox", "read-only"],
31643
- ["--ask-for-approval", "never"]
31644
- ],
31645
+ required: ['sandbox_mode="read-only"', 'approval_policy="never"', "mcp_servers={}"],
31646
+ pairs: [],
31645
31647
  files: []
31646
31648
  }
31647
31649
  },
@@ -34270,7 +34272,7 @@ function purgeNpxCache(entries) {
34270
34272
  // package.json
34271
34273
  var package_default = {
34272
34274
  name: "browsentic",
34273
- version: "0.6.0",
34275
+ version: "0.6.2",
34274
34276
  description: "A browser extension with an AI side panel that hands your real, logged-in browser to the AI agent you already run. Installs the extension, runs the local daemon, and optionally speaks MCP.",
34275
34277
  type: "module",
34276
34278
  license: "MIT",
@@ -21685,7 +21685,7 @@ var AGENTS = {
21685
21685
  bin: "codex",
21686
21686
  install: "npm i -g @openai/codex",
21687
21687
  docs: "https://developers.openai.com/codex/cli",
21688
- models: ["gpt-5.6-terra", "gpt-5.1-codex-max", "gpt-5.1-codex", "gpt-5.1-codex-mini"]
21688
+ models: ["gpt-5.6-terra", "gpt-5.6-luna", "gpt-5.5"]
21689
21689
  },
21690
21690
  antigravity: {
21691
21691
  kind: "antigravity",
@@ -23092,6 +23092,8 @@ var FORBIDDEN = [
23092
23092
  /^--allow-all/i,
23093
23093
  /danger-full-access/i,
23094
23094
  /^--sandbox=?(workspace-write|danger-full-access)$/i,
23095
+ /^sandbox_mode=(?!"read-only"$)/i,
23096
+ /^approval_policy=(?!"never"$)/i,
23095
23097
  /^--permission-mode=?(bypassPermissions|acceptEdits)$/i
23096
23098
  ];
23097
23099
  var NEVER2 = ["Bash", "Edit", "Write", "NotebookEdit", "Glob", "Grep", "Task"];
@@ -23126,19 +23128,13 @@ var CONTAINMENT = {
23126
23128
  keepsEnv: ["OPENAI_", "CODEX_", "AZURE_OPENAI_"],
23127
23129
  note: "no per-run tool list; the read-only sandbox is the whole containment, so the agent can still read any file the user can",
23128
23130
  run: {
23129
- required: [],
23130
- pairs: [
23131
- ["--sandbox", "read-only"],
23132
- ["--ask-for-approval", "never"]
23133
- ],
23131
+ required: ['sandbox_mode="read-only"', 'approval_policy="never"'],
23132
+ pairs: [],
23134
23133
  files: []
23135
23134
  },
23136
23135
  task: {
23137
- required: ["mcp_servers={}"],
23138
- pairs: [
23139
- ["--sandbox", "read-only"],
23140
- ["--ask-for-approval", "never"]
23141
- ],
23136
+ required: ['sandbox_mode="read-only"', 'approval_policy="never"', "mcp_servers={}"],
23137
+ pairs: [],
23142
23138
  files: []
23143
23139
  }
23144
23140
  },
@@ -24194,12 +24190,12 @@ var ownTool = (name) => /browsentic|^mcp/i.test(name);
24194
24190
  import { randomUUID as randomUUID4 } from "crypto";
24195
24191
  import { homedir as homedir7 } from "os";
24196
24192
  import { join as join12 } from "path";
24197
- var SANDBOX = ["--sandbox", "read-only", "--ask-for-approval", "never", "--skip-git-repo-check"];
24193
+ var SANDBOX = ["-c", 'sandbox_mode="read-only"', "-c", 'approval_policy="never"', "--skip-git-repo-check"];
24198
24194
  var WEB_TOOL = "web_search";
24199
24195
  var codexRunner = {
24200
24196
  kind: "codex",
24201
24197
  versionArgs: ["--version"],
24202
- efforts: ["minimal", "low", "medium", "high"],
24198
+ efforts: ["low", "medium", "high", "xhigh"],
24203
24199
  workspace: () => stateDir,
24204
24200
  skillDirs: () => [join12(homedir7(), ".codex", "skills"), join12(homedir7(), ".codex", "prompts")],
24205
24201
  stream(context) {
@@ -24222,6 +24218,9 @@ var codexRunner = {
24222
24218
  `${server}.env=${tomlTable(mcp.env)}`,
24223
24219
  "-c",
24224
24220
  `${server}.required=true`,
24221
+ // Headless Codex refuses an MCP call it would have asked about; the daemon gates these tools itself.
24222
+ "-c",
24223
+ `${server}.default_tools_approval_mode="approve"`,
24225
24224
  "-c",
24226
24225
  `developer_instructions=${tomlString(context.systemPrompt)}`,
24227
24226
  "-c",
@@ -24274,7 +24273,7 @@ var codexRunner = {
24274
24273
  case "task_complete":
24275
24274
  return sink.done("end_turn");
24276
24275
  case "error":
24277
- return sink.fail("AGENT_FAILED", msg.error || msg.message || "Codex reported an error");
24276
+ return sink.fail("AGENT_FAILED", explain(msg.error || msg.message) || "Codex reported an error");
24278
24277
  default:
24279
24278
  return;
24280
24279
  }
@@ -24305,9 +24304,9 @@ var codexRunner = {
24305
24304
  return sink.done("end_turn");
24306
24305
  }
24307
24306
  case "turn.failed":
24308
- return sink.fail("AGENT_FAILED", frame.error?.message || "Codex could not finish the turn");
24307
+ return sink.fail("AGENT_FAILED", explain(frame.error?.message) || "Codex could not finish the turn");
24309
24308
  case "error":
24310
- return sink.fail("AGENT_FAILED", frame.message || frame.error?.message || "Codex reported an error");
24309
+ return sink.fail("AGENT_FAILED", explain(frame.message || frame.error?.message) || "Codex reported an error");
24311
24310
  default:
24312
24311
  return;
24313
24312
  }
@@ -24363,6 +24362,11 @@ var codexRunner = {
24363
24362
  return null;
24364
24363
  }
24365
24364
  };
24365
+ function explain(raw) {
24366
+ if (!raw) return raw;
24367
+ const message = parseJsonLine(raw)?.error?.message ?? raw;
24368
+ return /model .*(not supported|does not exist|not found)/i.test(message) ? `${message} Pick another model for Codex in the Browsentic popup, then try again.` : message;
24369
+ }
24366
24370
  function kindOf(item) {
24367
24371
  return item?.type ?? item?.item_type;
24368
24372
  }
@@ -27244,7 +27248,7 @@ X-Browsentic-Reason: ${reason}\r
27244
27248
  // package.json
27245
27249
  var package_default = {
27246
27250
  name: "browsentic",
27247
- version: "0.6.0",
27251
+ version: "0.6.2",
27248
27252
  description: "A browser extension with an AI side panel that hands your real, logged-in browser to the AI agent you already run. Installs the extension, runs the local daemon, and optionally speaks MCP.",
27249
27253
  type: "module",
27250
27254
  license: "MIT",