opencode-reviewer 1.0.2 → 2.0.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 +130 -91
- package/THIRD_PARTY_NOTICES.md +35 -0
- package/dist/tui.js +4307 -8585
- package/package.json +19 -10
package/README.md
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
# OpenCode Reviewer
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Reviews pending permissions in the [OpenCode](https://github.com/anomalyco/opencode) sidebar using a separate LLM. Covers
|
|
8
|
-
shell commands, file edits, skill loading, MCP calls, custom tools, and external-directory access.
|
|
3
|
+
Reviews pending permissions in the [OpenCode](https://github.com/anomalyco/opencode) sidebar using a separate LLM. Reviews
|
|
4
|
+
native shell commands, file edits, and external-directory access. Skill, MCP and
|
|
5
|
+
custom-tool requests currently remain manual.
|
|
9
6
|
Supports streaming explanations, saved report history, auto-approval, and Linux
|
|
10
7
|
desktop notifications with distinct sounds.
|
|
11
8
|
|
|
@@ -17,21 +14,23 @@ This plugin is meant to enable you to run sessions with less frequent input in a
|
|
|
17
14
|
|
|
18
15
|

|
|
19
16
|
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
For OpenCode V2 on Linux. The plugin checks the server companion's protocol and
|
|
18
|
+
each request's data and scope rather than allowing only specific host versions.
|
|
22
19
|
|
|
23
20
|
## Install and config
|
|
24
21
|
|
|
25
|
-
Add this entry to `~/.config/opencode/
|
|
26
|
-
|
|
22
|
+
Add this entry to the global `~/.config/opencode/cli.json`, or
|
|
23
|
+
`$XDG_CONFIG_HOME/opencode/cli.json` when `XDG_CONFIG_HOME` is set.
|
|
24
|
+
There is no project-local CLI configuration. OpenCode loads the
|
|
25
|
+
[npm package](https://www.npmjs.com/package/opencode-reviewer) from this entry.
|
|
27
26
|
|
|
28
27
|
```json
|
|
29
28
|
{
|
|
30
|
-
"$schema": "https://opencode.ai/
|
|
31
|
-
"
|
|
32
|
-
|
|
33
|
-
"opencode-reviewer@
|
|
34
|
-
{
|
|
29
|
+
"$schema": "https://opencode.ai/v2/cli.json",
|
|
30
|
+
"plugins": [
|
|
31
|
+
{
|
|
32
|
+
"package": "opencode-reviewer@2.0.1",
|
|
33
|
+
"options": {
|
|
35
34
|
"baseURL": "https://openrouter.ai/api/v1",
|
|
36
35
|
"model": "your-model",
|
|
37
36
|
"apiKey": "your-api-key",
|
|
@@ -66,7 +65,7 @@ OpenCode installs the [npm package](https://www.npmjs.com/package/opencode-revie
|
|
|
66
65
|
"maxFiles": 6,
|
|
67
66
|
"maxEvidenceBytes": 131072
|
|
68
67
|
}
|
|
69
|
-
|
|
68
|
+
}
|
|
70
69
|
]
|
|
71
70
|
}
|
|
72
71
|
```
|
|
@@ -82,14 +81,34 @@ endpoint. Remove `instructions` to use the built-in prompts and
|
|
|
82
81
|
|
|
83
82
|
The connection, credential and directory values above are examples, not defaults.
|
|
84
83
|
All boolean, numeric and per-type notification values shown are the defaults.
|
|
85
|
-
Restart OpenCode after changing configuration.
|
|
86
|
-
|
|
87
|
-
|
|
84
|
+
Restart OpenCode after changing reviewer configuration. Also load the server
|
|
85
|
+
companion in `opencode.json`, globally or in the project. Keep permission rules
|
|
86
|
+
only in this server configuration, not in `cli.json`:
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"$schema": "https://opencode.ai/config.json",
|
|
91
|
+
"plugins": ["opencode-reviewer@2.0.1"],
|
|
92
|
+
"permissions": [
|
|
93
|
+
{ "action": "shell", "resource": "*", "effect": "ask" },
|
|
94
|
+
{ "action": "edit", "resource": "*", "effect": "ask" },
|
|
95
|
+
{ "action": "skill", "resource": "*", "effect": "ask" },
|
|
96
|
+
{ "action": "external_directory", "resource": "*", "effect": "ask" }
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Merge these entries with your existing configuration. Rules are ordered and the last
|
|
102
|
+
matching rule wins. Reviews run only when OpenCode asks for permission. Existing
|
|
103
|
+
`allow` rules and native autoaccept skip review. See OpenCode's
|
|
104
|
+
[server config](https://opencode.ai/v2/docs/config),
|
|
105
|
+
[CLI config](https://opencode.ai/v2/docs/cli/config) and
|
|
106
|
+
[CLI plugins](https://opencode.ai/v2/docs/build/plugins/cli) guides.
|
|
88
107
|
|
|
89
108
|
## Options reference
|
|
90
109
|
|
|
91
|
-
These are options inside the plugin's
|
|
92
|
-
Defaults apply only to omitted options
|
|
110
|
+
These are options inside the plugin's `options` object in global `cli.json`.
|
|
111
|
+
Defaults apply only to omitted options. `null` is invalid. Boolean and integer
|
|
93
112
|
options require JSON booleans and numbers, not quoted strings. Integer ranges are
|
|
94
113
|
inclusive, fractions are invalid, and the maximum safe integer is
|
|
95
114
|
9,007,199,254,740,991. Unknown option names are rejected.
|
|
@@ -102,13 +121,13 @@ inclusive, fractions are invalid, and the maximum safe integer is
|
|
|
102
121
|
| `apiKeyEnv` | string | Unset | Environment-variable name matching `[A-Za-z_][A-Za-z_0-9]*`. Without an inline key, its value must be set and nonblank when a review runs. Omit both key options for no Authorization header. |
|
|
103
122
|
| `instructions` | string | Unset (built-ins) | Absolute, NUL-free directory path containing overrides for the [prompt templates](https://github.com/mightykatun/opencode-reviewer/tree/main/prompts), not inline instructions. Missing named files use built-ins; supplied files must be readable, regular, non-symlink, nonempty UTF-8 text up to 64 KiB. Fixed contracts cannot be overridden. |
|
|
104
123
|
| `stream` | boolean | `false` | Request SSE and show provisional rating/text updates. Normal automatic approval waits for a completed, validated report; fast mode can approve on an early Safe rating. Presentation rules are described below. |
|
|
105
|
-
| `reviewBash` | boolean | `true` | Review native shell
|
|
106
|
-
| `reviewEdits` | boolean | `true` | Review native `edit`, `write` and `
|
|
107
|
-
| `reviewSkills` | boolean | `true` |
|
|
108
|
-
| `reviewMcp` | boolean | `false` |
|
|
109
|
-
| `reviewCustomTools` | boolean | `false` |
|
|
124
|
+
| `reviewBash` | boolean | `true` | Review native `shell` permissions. The option keeps its existing name. |
|
|
125
|
+
| `reviewEdits` | boolean | `true` | Review native `edit`, `write` and `patch` tools, which use the `edit` permission action. |
|
|
126
|
+
| `reviewSkills` | boolean | `true` | Skill-review category switch. Exact mandatory skill instructions are currently unavailable to the V2 collector, so these requests remain manual. |
|
|
127
|
+
| `reviewMcp` | boolean | `false` | MCP-review category switch. V2 MCP collection is currently unsupported; enabling this does not supply missing origin/catalog evidence or permit automatic approval. |
|
|
128
|
+
| `reviewCustomTools` | boolean | `false` | Custom-tool review category switch. V2 custom-tool collection is currently unsupported; these requests remain manual. |
|
|
110
129
|
| `reviewExternalDirectories` | boolean | `false` | Review directory access independently of operation-review switches. Directory approval can resume the operation without another prompt. |
|
|
111
|
-
| `autoApprove` | boolean | `false` | Allow Safe reviews once automatically. Normally waits for completion, validation and the countdown.
|
|
130
|
+
| `autoApprove` | boolean | `false` | Allow Safe reviews once automatically. Normally waits for completion, validation and the countdown. Requires the top-level conversation and physical presentation proof; subagent browsing never permits automatic approval. Normal-mode report-history cover has a separate physical-proof exception. |
|
|
112
131
|
| `fastMode` | boolean | `false` | Requires `autoApprove: true`. Approve an eligible, front-of-queue request as soon as a Safe rating is parsed, bypassing the countdown. Respects `stream`; with `stream: false`, waits for the complete validated response. Finish the report and save it in the background after approval. |
|
|
113
132
|
| `extraCareful` | boolean | `true` | Include extra-careful guidance when `autoApprove` is enabled. Setting `false` omits that guidance without disabling automatic approval. |
|
|
114
133
|
| `autoApproveDelaySeconds` | integer | `15` | `0`–`3600` seconds. Positive values include an extra 200 ms initial grace; `0` skips the wait but keeps the other approval checks. Ignored in fast mode. |
|
|
@@ -120,8 +139,8 @@ inclusive, fractions are invalid, and the maximum safe integer is
|
|
|
120
139
|
| `formatRetries` | integer | `1` | `0`–`100` additional assessment-format correction attempts. `0` disables format corrections, not independent transport recovery. |
|
|
121
140
|
| `maxOutputTokens` | integer | `4096` | `1` through the maximum safe integer. Sent as `max_tokens` on every reviewer POST, including retries/corrections. Your provider/model enforces its supported output limit. |
|
|
122
141
|
| `timeoutMs` | integer | `30000` | `1`–`3600000` milliseconds shared across evidence collection, HTTP requests, retries and corrections; not a fresh budget per POST. |
|
|
123
|
-
| `maxFiles` | integer | `6` | `1`–`1000` distinct file candidates per shell/edit
|
|
124
|
-
| `maxEvidenceBytes` | integer | `131072` | `1`–`16777216` bytes for command/source content, edit diffs or category-specific JSON evidence.
|
|
142
|
+
| `maxFiles` | integer | `6` | `1`–`1000` distinct file candidates per shell/edit review, including unavailable candidates. |
|
|
143
|
+
| `maxEvidenceBytes` | integer | `131072` | `1`–`16777216` bytes for command/source content, edit diffs or category-specific JSON evidence. Optional items are omitted whole; oversized mandatory evidence fails analysis. This is not a cap on the full prompt or HTTP request. |
|
|
125
144
|
|
|
126
145
|
Notification channels are independent: `banner: false, sound: true` is sound-only;
|
|
127
146
|
`banner: true, sound: false` is banner-only; both `false` disable that type.
|
|
@@ -136,46 +155,49 @@ The sidebar shows Safe, Unsafe, or Analysis unavailable. Explanations support
|
|
|
136
155
|
Markdown and scrolling. If the sidebar is hidden, use OpenCode's Show sidebar
|
|
137
156
|
command.
|
|
138
157
|
|
|
139
|
-
The reviewer
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
158
|
+
The reviewer panel appears only in the main conversation. Opening any subagent,
|
|
159
|
+
including a nested one, hides the panel and prevents normal and fast auto-approval.
|
|
160
|
+
Reviews may still finish while hidden. If a Safe report has never started a normal
|
|
161
|
+
countdown, returning to the main conversation can start a fresh one once the host
|
|
162
|
+
confirms the panel is visible. Leaving after a countdown starts cancels auto-approval
|
|
163
|
+
for that request for the rest of that plugin run. Returning or disabling and
|
|
164
|
+
re-enabling review won't restart it.
|
|
165
|
+
|
|
166
|
+
Auto-approval requires mouse tracking so the host can check that the panel is
|
|
167
|
+
visible and receives clicks. With mouse tracking off, you can still read reports
|
|
168
|
+
and approve requests manually. The plugin doesn't enable mouse tracking or reveal
|
|
169
|
+
a hidden sidebar unless you click an approval notification; it checks that the
|
|
170
|
+
sidebar is absent from the main conversation before showing it.
|
|
171
|
+
|
|
172
|
+
The skill, MCP and custom-tool options are still present, but these reviews aren't
|
|
173
|
+
supported in V2. The reviewer can't get the required skill instructions or verify
|
|
174
|
+
the source and catalog information for MCP and custom tools. Those requests need
|
|
175
|
+
manual approval; they aren't rated Safe.
|
|
176
|
+
|
|
177
|
+
Code Mode and its tool search stay enabled. Native tool calls can be reviewed when
|
|
178
|
+
the reviewer can match them exactly to their permission requests. Nested calls
|
|
179
|
+
without an exact match need manual approval. This assumes other installed plugins don't change
|
|
180
|
+
what native tools do, replace or alias their executors, or rewrite commands after
|
|
181
|
+
the reviewer has captured them.
|
|
182
|
+
|
|
183
|
+
Subagent reviews include the latest user prompt from the main conversation. The
|
|
184
|
+
V2 evidence collector can't get the exact task passed to the requesting subagent,
|
|
185
|
+
so it leaves that out rather than guessing from older tasks, sibling requests or
|
|
186
|
+
queued follow-ups. Missing optional context doesn't prevent review if the required
|
|
187
|
+
operation evidence is verified. Context can't override the review rules.
|
|
165
188
|
|
|
166
189
|
With streaming enabled, Evaluating and its spinner disappear when a rating arrives.
|
|
167
|
-
The rating
|
|
168
|
-
clears the preview and
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
full validated response and then skips the countdown.
|
|
190
|
+
The rating is provisional until the full response passes validation. A retry
|
|
191
|
+
clears the preview and brings back the loading indicator. Normal auto-approval
|
|
192
|
+
waits for the full validated report and for the host to confirm that it's displayed
|
|
193
|
+
in the main conversation.
|
|
194
|
+
|
|
195
|
+
With `autoApprove: true` and `fastMode: true`, a parsed Safe rating can approve the
|
|
196
|
+
request before the streamed report finishes, without a countdown. The request must
|
|
197
|
+
be first in OpenCode's permission queue, and the host must confirm the panel is
|
|
198
|
+
visible in the main conversation. Browsing a subagent, hiding the sidebar or
|
|
199
|
+
covering it with a dialog or report history prevents fast approval. Without
|
|
200
|
+
streaming, fast mode waits for the full validated response, then skips the countdown.
|
|
179
201
|
|
|
180
202
|
After confirmed fast approval, the live panel shows **Auto-approved; finishing
|
|
181
203
|
report…** and stays ahead of newer requests until its report finishes. Hiding the
|
|
@@ -198,13 +220,15 @@ limits and overall timeout still apply. Retried requests can incur additional
|
|
|
198
220
|
provider charges, and unreported usage remains unknown.
|
|
199
221
|
|
|
200
222
|
During an auto-approval countdown, click the countdown to allow once immediately,
|
|
201
|
-
or Cancel to leave the request manual. Hiding or covering the panel
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
223
|
+
or Cancel to leave the request manual. Hiding or covering the panel cancels the
|
|
224
|
+
countdown too, except when this plugin's report history is displayed in the main
|
|
225
|
+
conversation and passes the host's visibility checks. Browsing any subagent or
|
|
226
|
+
switching conversations cancels it. Returning, reopening the panel or re-enabling
|
|
227
|
+
review won't restart a canceled countdown. If the plugin can't confirm the result
|
|
228
|
+
of an approval attempt, it leaves the request manual and never retries that attempt.
|
|
206
229
|
Cancel before using native Allow always or rejection
|
|
207
230
|
forms; those forms alone do not stop the countdown.
|
|
231
|
+
Cancel remains available during native preparation, until the approval is sent.
|
|
208
232
|
Positive countdowns add a 200 ms initial grace and then update on remaining-time
|
|
209
233
|
boundaries. A zero-second setting still approves without that grace.
|
|
210
234
|
|
|
@@ -213,6 +237,10 @@ descendants. The setting is saved for resume. Both commands are also in the comm
|
|
|
213
237
|
palette. Disabling stops unapproved reviews and countdowns while native permission
|
|
214
238
|
controls remain available. Already-approved fast-mode reports finish in the background.
|
|
215
239
|
|
|
240
|
+
If the server reconnects or the companion is replaced, reviews and auto-approval
|
|
241
|
+
stop. Reload the plugin or restart OpenCode to resume. This keeps cached permissions
|
|
242
|
+
from the old connection separate from the new one.
|
|
243
|
+
|
|
216
244
|
### Report history
|
|
217
245
|
|
|
218
246
|
Use `/reviewer-history` or **Reviewer: Report history** in the command palette to
|
|
@@ -222,6 +250,8 @@ PageUp/PageDown scroll. Close or Escape closes history. Repeating the command
|
|
|
222
250
|
returns to the newest report. History remains available with review disabled or
|
|
223
251
|
invalid reviewer configuration. The history command preserves a hidden sidebar;
|
|
224
252
|
clicking an approval notification reveals it and selects that permission's live or saved report.
|
|
253
|
+
Keyboard browsing also works with mouse tracking off; that does not grant
|
|
254
|
+
automatic-approval history cover.
|
|
225
255
|
|
|
226
256
|
Each entry shows the original report, available usage, model, provider and outcome:
|
|
227
257
|
**Auto approved**, **Manually approved**, **Cancelled**, or **Rejected**. Cancelled
|
|
@@ -231,19 +261,27 @@ native Allow once replies whose submitting client cannot be identified. History
|
|
|
231
261
|
keeps the latest completed report, which can differ from the report that caused
|
|
232
262
|
approval in another window.
|
|
233
263
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
report is rendered.
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
264
|
+
In normal mode, opening report history can leave a countdown running in the main
|
|
265
|
+
conversation. The host must confirm that the history heading and footer are visible
|
|
266
|
+
and the review report is rendered. A newly completed Safe review can become eligible
|
|
267
|
+
for a countdown under the same checks. OpenCode dialogs, including the command palette, still cancel an
|
|
268
|
+
active countdown; opening history afterward won't restart it. History blocks fast
|
|
269
|
+
approval. Browsing saved reports doesn't itself approve requests or replay notifications.
|
|
270
|
+
|
|
271
|
+
Reports are saved only after a permission resolution that qualifies for history.
|
|
272
|
+
They can contain private text and are kept under OpenCode's local state base:
|
|
273
|
+
`$XDG_STATE_HOME`, or `~/.local/state` when unset. Safely accessible history stays
|
|
274
|
+
under `opencode/opencode-reviewer/`. If the host directory is unsuitable for private
|
|
275
|
+
storage, the plugin uses its private, plugin-owned sibling
|
|
276
|
+
`opencode-reviewer-state/opencode-reviewer/` without changing host-directory permissions.
|
|
277
|
+
An existing safe sibling database remains in use across restarts. Conversation
|
|
278
|
+
enable/disable settings stay in the original OpenCode state directory.
|
|
279
|
+
The plugin deletes them only when it can verify that a deleted conversation belongs
|
|
280
|
+
to the matching server and scope. If that can't be verified after an offline
|
|
281
|
+
deletion, it keeps the history; a missing list entry or bare 404 isn't enough.
|
|
282
|
+
Windows using the same state directory share history, grouped by host directory
|
|
283
|
+
and main conversation. Reports not yet saved can be lost on shutdown or during a
|
|
284
|
+
prolonged storage failure.
|
|
247
285
|
|
|
248
286
|
### Usage totals
|
|
249
287
|
|
|
@@ -253,8 +291,8 @@ views. Use Tab or click a scope to switch. The dialog opens on Lifetime;
|
|
|
253
291
|
Conversation uses the session selected when opened, resolving its root and all
|
|
254
292
|
descendants, including subagents, within the current host-directory scope.
|
|
255
293
|
Opening from a descendant shows the same combined conversation totals.
|
|
256
|
-
|
|
257
|
-
costs use reported charges; other endpoints use available catalog estimates.
|
|
294
|
+
Statistics remain available with review disabled or invalid reviewer configuration.
|
|
295
|
+
OpenRouter costs use reported charges; other endpoints use available catalog estimates.
|
|
258
296
|
Received usage counts even if a review fails or is interrupted. Unreported charges
|
|
259
297
|
are missing from the totals.
|
|
260
298
|
|
|
@@ -349,8 +387,8 @@ interaction per root conversation repeats: permissions precede questions, with
|
|
|
349
387
|
the host's session/request ordering. Queued interactions stay silent. Handoff sends
|
|
350
388
|
the next eligible request's initial notification, then waits a full interval before
|
|
351
389
|
its first reminder. Independent visited conversations
|
|
352
|
-
can each remind. The supported host
|
|
353
|
-
|
|
390
|
+
can each remind. The supported V2 host's root input queue includes the full descendant
|
|
391
|
+
family, root first and then the host's public family order.
|
|
354
392
|
|
|
355
393
|
Answering/dismissing a question in OpenCode, resolving a permission, deleting its
|
|
356
394
|
session or closing the plugin stops its reminders. Closing/clicking a desktop
|
|
@@ -362,7 +400,7 @@ Notifications cover conversations visited in this terminal and their descendants
|
|
|
362
400
|
Existing pending requests at startup/resume are not replayed or reminded, but still
|
|
363
401
|
participate in queue ordering. Clicking can select
|
|
364
402
|
the originating GNOME Terminal tab and root conversation. Native input prompts
|
|
365
|
-
cover root
|
|
403
|
+
cover the root and its full descendant family in the supported host. Open dialogs are
|
|
366
404
|
left intact; other terminals still receive banners and sounds. Desktop policies
|
|
367
405
|
control expiry/history and whether activation actually brings a window forward.
|
|
368
406
|
Clicking **Reviewer approved a permission** opens that permission's unfinished
|
|
@@ -406,7 +444,8 @@ Use Node.js 24.15.0+ within 24.x, or 22.22.2+ within 22.x, and npm.
|
|
|
406
444
|
Run `npm ci --ignore-scripts`, then `npm run check` for typechecking, source tests,
|
|
407
445
|
pure-helper tests and the build. `npm run test:helpers` runs the helper checks
|
|
408
446
|
without building or starting OpenCode. Pull-request CI checks both Node versions
|
|
409
|
-
and runs a separate representative Linux
|
|
447
|
+
and runs a separate representative Linux fixture profile on stock OpenCode
|
|
448
|
+
2.0.26 and 2.0.27.
|
|
410
449
|
After building, run `node scripts/test-runtime.mjs --profile ci` for that same
|
|
411
450
|
profile. Use `node scripts/test-runtime.mjs --list` for the complete runtime
|
|
412
451
|
inventory or `node scripts/test-runtime.mjs --plan --profile ci` for a
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -27,6 +27,41 @@ ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
|
27
27
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
28
28
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
29
29
|
|
|
30
|
+
# Bundled dependency: @opencode/theme 2.0.26
|
|
31
|
+
|
|
32
|
+
https://github.com/anomalyco/opencode/tree/v2.0.26/packages/theme
|
|
33
|
+
|
|
34
|
+
The pinned theme syntax helper is bundled unchanged in the terminal payload.
|
|
35
|
+
A build-time adapter replaces its public barrel with a syntax-only re-export;
|
|
36
|
+
unused theme parsers, schemas and their Effect dependency are not bundled.
|
|
37
|
+
Solid and OpenTUI remain host-provided external dependencies.
|
|
38
|
+
|
|
39
|
+
License source: https://github.com/anomalyco/opencode/blob/v2.0.26/LICENSE
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
MIT License
|
|
43
|
+
|
|
44
|
+
Copyright (c) 2025 opencode
|
|
45
|
+
|
|
46
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
47
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
48
|
+
in the Software without restriction, including without limitation the rights
|
|
49
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
50
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
51
|
+
furnished to do so, subject to the following conditions:
|
|
52
|
+
|
|
53
|
+
The above copyright notice and this permission notice shall be included in all
|
|
54
|
+
copies or substantial portions of the Software.
|
|
55
|
+
|
|
56
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
57
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
58
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
59
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
60
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
61
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
62
|
+
SOFTWARE.
|
|
63
|
+
```
|
|
64
|
+
|
|
30
65
|
# Bundled audio decoder and supplied sounds
|
|
31
66
|
|
|
32
67
|
The six notification MP3 files were supplied by the maintainer with
|