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 +19 -17
- package/dist/daemon-main.js +21 -17
- package/extension/chrome-mv3/background.js +2 -2
- package/extension/chrome-mv3/chunks/{globals-RKxmETMG.js → globals-BK3VEmc5.js} +2 -2
- package/extension/chrome-mv3/chunks/{popup-DBnq_NvX.js → popup-iKGW3YtO.js} +1 -1
- package/extension/chrome-mv3/chunks/{sidepanel-CrG8wCdP.js → sidepanel-m-EckRJp.js} +1 -1
- package/extension/chrome-mv3/manifest.json +1 -1
- package/extension/chrome-mv3/popup.html +2 -2
- package/extension/chrome-mv3/sidepanel.html +2 -2
- package/package.json +1 -1
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.
|
|
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 = ["
|
|
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: ["
|
|
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.
|
|
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",
|
package/dist/daemon-main.js
CHANGED
|
@@ -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.
|
|
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 = ["
|
|
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: ["
|
|
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.
|
|
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",
|