@sorenllm/opencode-forge 0.18.0 → 0.18.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.
Files changed (2) hide show
  1. package/dist/index.js +15 -5
  2. package/package.json +64 -64
package/dist/index.js CHANGED
@@ -16391,7 +16391,8 @@ function readPlanDir(worktree) {
16391
16391
  function ensureSession(sessionID, worktree) {
16392
16392
  const existing = sessions.get(sessionID);
16393
16393
  if (existing) {
16394
- existing.worktree = worktree;
16394
+ if (!isRootish(worktree))
16395
+ existing.worktree = worktree;
16395
16396
  return existing;
16396
16397
  }
16397
16398
  const state = { sessionID, worktree };
@@ -17609,6 +17610,17 @@ var server = async (input, options) => {
17609
17610
  hostWorktree = effectiveInitDir;
17610
17611
  rememberHostAnchor(effectiveInitDir);
17611
17612
  const client = input.client;
17613
+ const resolveSessionAnchorForPools = async (sessionID) => {
17614
+ if (!sessionID)
17615
+ return "";
17616
+ try {
17617
+ const rec = client?.session?.get ? await client.session.get({ path: { id: sessionID } }) : undefined;
17618
+ const anchor = effectiveWorktree(rec?.worktree, rec?.directory);
17619
+ if (anchor && !isRootish(anchor))
17620
+ return anchor;
17621
+ } catch {}
17622
+ return sessions.get(sessionID)?.worktree ?? "";
17623
+ };
17612
17624
  jobClient = input.client;
17613
17625
  const jobsOpts = options?.jobs;
17614
17626
  if (jobsOpts?.mode === "auto" || jobsOpts?.mode === "forge" || jobsOpts?.mode === "native")
@@ -17821,8 +17833,7 @@ var server = async (input, options) => {
17821
17833
  const agentId = target.slice("forge-".length);
17822
17834
  const entry = resolution?.agents[agentId];
17823
17835
  if (resolution && entry) {
17824
- const bound = sessions.get(input2.sessionID);
17825
- const anchor = bound?.worktree ?? "";
17836
+ const anchor = await resolveSessionAnchorForPools(input2.sessionID);
17826
17837
  if (!anchor) {
17827
17838
  if (!poolGateUnknownNotes.has(input2.sessionID)) {
17828
17839
  poolGateUnknownNotes.add(input2.sessionID);
@@ -17844,8 +17855,7 @@ var server = async (input, options) => {
17844
17855
  if (target && target.toLowerCase().startsWith("forge-") && input2.sessionID) {
17845
17856
  const crew = crews.get(input2.sessionID);
17846
17857
  if (crew && (crew.mode === "pending" || crew.mode === "executing")) {
17847
- const bound = sessions.get(input2.sessionID);
17848
- const anchor = bound?.worktree ?? "";
17858
+ const anchor = await resolveSessionAnchorForPools(input2.sessionID);
17849
17859
  if (anchor) {
17850
17860
  const complianceRefusal = crewPoolComplianceRefusal(anchor);
17851
17861
  if (complianceRefusal)
package/package.json CHANGED
@@ -1,64 +1,64 @@
1
- {
2
- "name": "@sorenllm/opencode-forge",
3
- "version": "0.18.0",
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
- "type": "module",
6
- "main": "./dist/index.js",
7
- "exports": {
8
- ".": {
9
- "import": "./dist/index.js"
10
- },
11
- "./server": {
12
- "import": "./dist/index.js"
13
- }
14
- },
15
- "files": [
16
- "dist",
17
- "README.md"
18
- ],
19
- "scripts": {
20
- "bundle": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && bun build ./plugin.ts --outfile ./dist/index.js --target node --format esm",
21
- "test": "node --test tests/*.test.mjs",
22
- "typecheck": "tsc --noEmit"
23
- },
24
- "keywords": [
25
- "opencode",
26
- "opencode-plugin",
27
- "subagents",
28
- "plan",
29
- "planning",
30
- "workflow",
31
- "single-agent",
32
- "goal",
33
- "crew",
34
- "orchestration",
35
- "background-jobs",
36
- "shell",
37
- "watchdog"
38
- ],
39
- "license": "MIT",
40
- "author": "chengsongren",
41
- "homepage": "https://github.com/ChengZiiii/opencode-forge#readme",
42
- "repository": {
43
- "type": "git",
44
- "url": "git+https://github.com/ChengZiiii/opencode-forge.git"
45
- },
46
- "bugs": {
47
- "url": "https://github.com/ChengZiiii/opencode-forge/issues"
48
- },
49
- "peerDependencies": {
50
- "@opencode-ai/plugin": "^1.18.0"
51
- },
52
- "devDependencies": {
53
- "@opencode-ai/plugin": "^1.18.0",
54
- "@types/node": "^22.13.9",
55
- "typescript": "^5.8.2"
56
- },
57
- "engines": {
58
- "opencode": "^1.18.0"
59
- },
60
- "publishConfig": {
61
- "access": "public",
62
- "registry": "https://registry.npmjs.org/"
63
- }
64
- }
1
+ {
2
+ "name": "@sorenllm/opencode-forge",
3
+ "version": "0.18.1",
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
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./dist/index.js"
10
+ },
11
+ "./server": {
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "README.md"
18
+ ],
19
+ "scripts": {
20
+ "bundle": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && bun build ./plugin.ts --outfile ./dist/index.js --target node --format esm",
21
+ "test": "node --test tests/*.test.mjs",
22
+ "typecheck": "tsc --noEmit"
23
+ },
24
+ "keywords": [
25
+ "opencode",
26
+ "opencode-plugin",
27
+ "subagents",
28
+ "plan",
29
+ "planning",
30
+ "workflow",
31
+ "single-agent",
32
+ "goal",
33
+ "crew",
34
+ "orchestration",
35
+ "background-jobs",
36
+ "shell",
37
+ "watchdog"
38
+ ],
39
+ "license": "MIT",
40
+ "author": "chengsongren",
41
+ "homepage": "https://github.com/ChengZiiii/opencode-forge#readme",
42
+ "repository": {
43
+ "type": "git",
44
+ "url": "git+https://github.com/ChengZiiii/opencode-forge.git"
45
+ },
46
+ "bugs": {
47
+ "url": "https://github.com/ChengZiiii/opencode-forge/issues"
48
+ },
49
+ "peerDependencies": {
50
+ "@opencode-ai/plugin": "^1.18.0"
51
+ },
52
+ "devDependencies": {
53
+ "@opencode-ai/plugin": "^1.18.0",
54
+ "@types/node": "^22.13.9",
55
+ "typescript": "^5.8.2"
56
+ },
57
+ "engines": {
58
+ "opencode": "^1.18.0"
59
+ },
60
+ "publishConfig": {
61
+ "access": "public",
62
+ "registry": "https://registry.npmjs.org/"
63
+ }
64
+ }