opencode-courier 0.13.4 → 0.13.6

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 CHANGED
@@ -11,6 +11,11 @@ polling.
11
11
  [![License: MIT](https://img.shields.io/npm/l/opencode-courier)](LICENSE)
12
12
  [![Supported OpenCode V2 version](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fivopogace%2Fopencode-courier%2Fmain%2Fpackage.json&query=%24.peerDependencies%5B%27%40opencode%2Fplugin%27%5D&label=opencode&color=blue)](#supported-opencode-version)
13
13
 
14
+ ![An orchestrator fixes two issues in parallel: a lead per issue, each with two workers, switched between in the tree panel as the reports come back up](https://raw.githubusercontent.com/ivopogace/opencode-courier/main/docs/demo.gif)
15
+
16
+ The main case, step by step: two issues fixed in parallel, a lead per issue and two workers under
17
+ each, switched between in the `/courier tree` panel as the reports come back up.
18
+
14
19
  https://github.com/user-attachments/assets/d7cf74f8-15b3-4cc1-866e-b75ba0ac3f8a
15
20
 
16
21
  A narrated tour of the terminal UI: the tree panel, the asks inbox, failing children and memory.
@@ -18,7 +23,7 @@ A narrated tour of the terminal UI: the tree panel, the asks inbox, failing chil
18
23
  ## Quickstart
19
24
 
20
25
  ```bash
21
- npm install -g @opencode/cli@2.2.2 # OpenCode V2, the version courier is tested on
26
+ npm install -g @opencode/cli@2.2.4 # OpenCode V2, the version courier is tested on
22
27
  opencode plugin add opencode-courier
23
28
  opencode
24
29
  ```
@@ -62,10 +67,10 @@ split a task and how to check and merge the parts. Every detail: [the reference]
62
67
  ## Install
63
68
 
64
69
  Requires OpenCode V2: the `opencode` command from `@opencode/cli`. Each release is tested against
65
- one OpenCode version; this one is tested on **OpenCode 2.2.2** (check with `opencode --version`).
70
+ one OpenCode version; this one is tested on **OpenCode 2.2.4** (check with `opencode --version`).
66
71
 
67
72
  ```bash
68
- npm install -g @opencode/cli@2.2.2
73
+ npm install -g @opencode/cli@2.2.4
69
74
  opencode plugin add opencode-courier
70
75
  ```
71
76
 
@@ -78,13 +83,13 @@ name, without a version: OpenCode offers updates only for an entry without an ex
78
83
  <!-- compat-table:start rows=3: generated by script/compat-table.ts from the release tags -->
79
84
  | opencode-courier | OpenCode V2 (`opencode` and `@opencode/plugin`) |
80
85
  |---|---|
86
+ | 0.13.6 | 2.2.4 |
87
+ | 0.13.5 | 2.2.3 |
81
88
  | 0.13.2, 0.13.3, 0.13.4 | 2.2.2 |
82
- | 0.13.1 | 2.2.1 |
83
- | 0.13.0 | 2.2.0 |
84
89
  <!-- compat-table:end -->
85
90
 
86
91
  Every release: [the full table](docs/reference.md#the-opencode-version). The server part loads on
87
- any V2 host from 2.0.4 on. The terminal part is tested on OpenCode 2.2.2 only.
92
+ any V2 host from 2.0.4 on. The terminal part is tested on OpenCode 2.2.4 only.
88
93
 
89
94
  ## Options
90
95
 
@@ -6,6 +6,11 @@ import { chooseModel } from "./model.js";
6
6
  import { putEntries, syncStanding } from "./standing.js";
7
7
  import { childStore, groupStore } from "./store.js";
8
8
  import { childBrief, childBranch, nativeIsolateRefusal, ROLE_KEY, rolePart } from "./text.js";
9
+ /**
10
+ * A spawned session's own rules: OpenCode's schedule tools are hidden, as their wake-ups go round the tree, so a child
11
+ * that schedules one and ends its turn would read as silent. A native child would otherwise run on its parent's rules.
12
+ */
13
+ const CHILD_RULES = [{ action: "opencode_schedule_*", resource: "*", effect: "deny" }];
9
14
  function titleOf(task) {
10
15
  const line = task.trim().split("\n")[0] ?? "";
11
16
  return line.length > 60 ? `${line.slice(0, 57)}...` : line;
@@ -93,8 +98,8 @@ async function create(ports, parentID, input) {
93
98
  ...(input.agent ? { agent: input.agent } : {}),
94
99
  ...(model ? { model } : {}),
95
100
  ...(worktree ? { location: { directory: worktree } } : {}),
96
- // An empty ruleset, not none: a native child would otherwise run on its parent's session rules.
97
- ...(native ? { parentID, permissions: [] } : {}),
101
+ ...(native ? { parentID } : {}),
102
+ permissions: [...CHILD_RULES],
98
103
  metadata: { courier: { parentID } },
99
104
  })
100
105
  .catch(async (error) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-courier",
3
- "version": "0.13.4",
3
+ "version": "0.13.6",
4
4
  "description": "Multi-session orchestration for OpenCode V2: spawn child sessions, be woken by them. No polling.",
5
5
  "license": "MIT",
6
6
  "author": "Ivo Pogace <71701666+ivopogace@users.noreply.github.com>",
@@ -56,14 +56,14 @@
56
56
  "test:e2e": "e2e/run.sh"
57
57
  },
58
58
  "peerDependencies": {
59
- "@opencode/plugin": "2.2.2",
59
+ "@opencode/plugin": "2.2.4",
60
60
  "effect": "4.0.6"
61
61
  },
62
62
  "devDependencies": {
63
- "@opencode/plugin": "2.2.2",
64
- "@opencode/theme": "2.2.2",
65
- "@opentui/core": "0.7.0",
66
- "@opentui/solid": "0.7.0",
63
+ "@opencode/plugin": "2.2.4",
64
+ "@opencode/theme": "2.2.4",
65
+ "@opentui/core": "0.8.0",
66
+ "@opentui/solid": "0.8.0",
67
67
  "@types/bun": "1.4.2",
68
68
  "@types/node": "26.6.4",
69
69
  "effect": "4.0.6",