@sorenllm/opencode-forge 0.14.0 → 0.14.1
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/README.md +11 -1
- package/dist/index.js +4 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -80,7 +80,17 @@ entirely (the hide is withdrawn in the same stroke). The forge family is
|
|
|
80
80
|
prompted to route every shell command through `forge_shell` — on hosts that
|
|
81
81
|
ignore injected tools maps the builtin tool stays visible but is refused at
|
|
82
82
|
call time, and the channel mandate is what keeps the model from trying it
|
|
83
|
-
first (the belt refusal remains the backstop).
|
|
83
|
+
first (the belt refusal remains the backstop). On such unfiltered hosts the
|
|
84
|
+
fallback belt family is a three-part enumeration of hard refusals at the
|
|
85
|
+
tool layer: a forge-family builtin `shell`/`bash` call is refused with a
|
|
86
|
+
pointer to `forge_shell`; a non-forge agent's call of any forge tool is
|
|
87
|
+
refused with the partition guidance; and a `forge-*` worker (any family
|
|
88
|
+
member whose agent name is not exactly `forge`) calling a harness state tool
|
|
89
|
+
(`plan_*`, `goal_*`, `crew_begin`, `crew_close`) is refused as primary-only.
|
|
90
|
+
That refusal fires before any execution or user confirmation dialog, so a
|
|
91
|
+
worker's state-tool call never reaches a gate, and the error names the way
|
|
92
|
+
out: report findings back to the orchestrating session — the primary forge
|
|
93
|
+
agent alone calls the state tools. Mixed sessions (Tab
|
|
84
94
|
between agents in one session): harness state (plans/goals) stays
|
|
85
95
|
session-bound, tool surfaces follow the current speaker, and the goal loop
|
|
86
96
|
parks instead of driving a non-forge turn. One deliberate exception: a
|
package/dist/index.js
CHANGED
|
@@ -15824,6 +15824,7 @@ var FORGE_STATE_TOOLS = [
|
|
|
15824
15824
|
var FORGE_EXEC_TOOLS = ["forge_shell", "forge_jobs"];
|
|
15825
15825
|
var FORGE_ALL_TOOLS = [...FORGE_STATE_TOOLS, ...FORGE_EXEC_TOOLS];
|
|
15826
15826
|
var FORGE_TOOL_SET = new Set(FORGE_ALL_TOOLS);
|
|
15827
|
+
var FORGE_STATE_TOOL_SET = new Set(FORGE_STATE_TOOLS);
|
|
15827
15828
|
var NATIVE_PARTITION_FALLBACKS = ["build", "plan", "general", "explore"];
|
|
15828
15829
|
var FORGE_PROMPT = `You are forge — the single general-purpose coding agent. You handle every task directly: exploration, planning, implementation, and verification. There is no agent switching.
|
|
15829
15830
|
|
|
@@ -17598,6 +17599,9 @@ var server = async (input, options) => {
|
|
|
17598
17599
|
if (isForgeFamilyAgent(speaker) && (input2.tool === "shell" || input2.tool === "bash") && !jobsKeepBuiltinShell && jobStage() < 2) {
|
|
17599
17600
|
throw new Error(`[forge:partition] Builtin shell refused: the forge family executes through forge_shell (jobs.keepBuiltinShell or jobs.mode: "native" restores the builtin shell). Re-issue the command through forge_shell.`);
|
|
17600
17601
|
}
|
|
17602
|
+
if (isForgeFamilyAgent(speaker) && speaker.toLowerCase() !== FORGE_AGENT && FORGE_STATE_TOOL_SET.has(input2.tool)) {
|
|
17603
|
+
throw new Error(`[forge:partition] Tool refused: "${input2.tool}" is a harness state tool reserved for the primary forge agent; "${speaker}" is a forge worker. Report your findings back to the orchestrating session — the primary agent calls ${input2.tool} at the gate.`);
|
|
17604
|
+
}
|
|
17601
17605
|
}
|
|
17602
17606
|
}
|
|
17603
17607
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sorenllm/opencode-forge",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.1",
|
|
4
4
|
"description": "Single general-purpose forge agent for opencode: static worker subagents defined in forge.json (pinned model + thoughtLevel pair, or an Auto worker inheriting the parent model; dispatched through the native task tool — TUI-visible), a plan harness (file-backed plans with approve/close confirmation gates and a hard draft write-ban), a goal harness (autonomous, host-verified objectives), a /crew orchestration command (declared-plan waves with an evidence-checked close gate), a job supervisor (forge_shell with exit-bound completion, idle/success early return, background jobs with poll/log/kill/handoff), and a builtin-shell hang watchdog.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|