@te-river/opencode-team-mode 1.2.0 → 1.3.0
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 +4 -4
- package/README.zh-CN.md +4 -4
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +69 -7
- package/dist/agents.js.map +1 -1
- package/dist/index.d.ts +11 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -15
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +50 -14
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +14 -7
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -99,7 +99,7 @@ After installing, add the plugin to your `opencode.jsonc`:
|
|
|
99
99
|
{
|
|
100
100
|
"$schema": "https://opencode.ai/config.json",
|
|
101
101
|
"plugin": [
|
|
102
|
-
"@te-river/opencode-team-mode"
|
|
102
|
+
"@te-river/opencode-team-mode@latest"
|
|
103
103
|
]
|
|
104
104
|
}
|
|
105
105
|
```
|
|
@@ -117,7 +117,7 @@ To enable TeamMode in every project, add the plugin to your global config:
|
|
|
117
117
|
{
|
|
118
118
|
"$schema": "https://opencode.ai/config.json",
|
|
119
119
|
"plugin": [
|
|
120
|
-
"@te-river/opencode-team-mode"
|
|
120
|
+
"@te-river/opencode-team-mode@latest"
|
|
121
121
|
]
|
|
122
122
|
}
|
|
123
123
|
```
|
|
@@ -203,7 +203,7 @@ opencode-team-mode/
|
|
|
203
203
|
### How it works
|
|
204
204
|
|
|
205
205
|
1. OpenCode Desktop starts and loads `opencode.json`.
|
|
206
|
-
2. It sees `"@te-river/opencode-team-mode"` in the `plugin` array and loads the npm package.
|
|
206
|
+
2. It sees `"@te-river/opencode-team-mode@latest"` in the `plugin` array and loads the npm package.
|
|
207
207
|
3. The plugin's v2 `setup` function runs, using `ctx.agent.transform()` and `ctx.command.transform()` to inject 6 agents and 6 commands.
|
|
208
208
|
4. The plugin's `id: "team-mode"` is displayed as the plugin name in the Desktop UI.
|
|
209
209
|
5. Agents and commands are immediately available in the Desktop UI — no file copying needed.
|
|
@@ -246,7 +246,7 @@ Default is **5 days**. To choose your own, use the tuple plugin form in
|
|
|
246
246
|
{
|
|
247
247
|
"$schema": "https://opencode.ai/config.json",
|
|
248
248
|
"plugin": [
|
|
249
|
-
["@te-river/opencode-team-mode", { "ttlDays": 7 }]
|
|
249
|
+
["@te-river/opencode-team-mode@latest", { "ttlDays": 7 }]
|
|
250
250
|
]
|
|
251
251
|
}
|
|
252
252
|
```
|
package/README.zh-CN.md
CHANGED
|
@@ -99,7 +99,7 @@ npm link
|
|
|
99
99
|
{
|
|
100
100
|
"$schema": "https://opencode.ai/config.json",
|
|
101
101
|
"plugin": [
|
|
102
|
-
"@te-river/opencode-team-mode"
|
|
102
|
+
"@te-river/opencode-team-mode@latest"
|
|
103
103
|
]
|
|
104
104
|
}
|
|
105
105
|
```
|
|
@@ -117,7 +117,7 @@ npm link
|
|
|
117
117
|
{
|
|
118
118
|
"$schema": "https://opencode.ai/config.json",
|
|
119
119
|
"plugin": [
|
|
120
|
-
"@te-river/opencode-team-mode"
|
|
120
|
+
"@te-river/opencode-team-mode@latest"
|
|
121
121
|
]
|
|
122
122
|
}
|
|
123
123
|
```
|
|
@@ -203,7 +203,7 @@ opencode-team-mode/
|
|
|
203
203
|
### 工作原理
|
|
204
204
|
|
|
205
205
|
1. OpenCode 桌面版启动,加载 `opencode.json`
|
|
206
|
-
2. 检测到 `plugin` 数组中的 `"@te-river/opencode-team-mode"`,加载 npm 包
|
|
206
|
+
2. 检测到 `plugin` 数组中的 `"@te-river/opencode-team-mode@latest"`,加载 npm 包
|
|
207
207
|
3. 插件的 `setup` 函数执行,通过 `ctx.agent.transform()` 和 `ctx.command.transform()` 注入 6 个 Agent 和 6 个命令
|
|
208
208
|
4. Agent 和命令立即在桌面版 UI 中可用 —— 无需复制任何文件
|
|
209
209
|
|
|
@@ -238,7 +238,7 @@ opencode-team-mode/
|
|
|
238
238
|
{
|
|
239
239
|
"$schema": "https://opencode.ai/config.json",
|
|
240
240
|
"plugin": [
|
|
241
|
-
["@te-river/opencode-team-mode", { "ttlDays": 7 }]
|
|
241
|
+
["@te-river/opencode-team-mode@latest", { "ttlDays": 7 }]
|
|
242
242
|
]
|
|
243
243
|
}
|
|
244
244
|
```
|
package/dist/agents.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AA8a3C,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAO5C,CAAA"}
|
package/dist/agents.js
CHANGED
|
@@ -15,17 +15,35 @@
|
|
|
15
15
|
* dispatch embeds the relevant prior outputs.
|
|
16
16
|
* - Research findings carry confidence tags and critical ones are verified.
|
|
17
17
|
*/
|
|
18
|
+
import { RULE } from "./types.js";
|
|
19
|
+
/* ------------------------------------------------------------------ */
|
|
20
|
+
/* Blackboard write guarantee (appended to every specialist prompt) */
|
|
21
|
+
/* ------------------------------------------------------------------ */
|
|
22
|
+
const BLACKBOARD_GUARANTEE = `
|
|
23
|
+
|
|
24
|
+
## Blackboard write guarantee
|
|
25
|
+
- Writing your designated blackboard artifact is ALWAYS within your role.
|
|
26
|
+
Any read-only constraint applies to PROJECT SOURCES and the code under
|
|
27
|
+
review — NEVER to the blackboard directory. Your tools can write there;
|
|
28
|
+
do it yourself, in the file the dispatch names.
|
|
29
|
+
- NEVER reply "append this verbatim for me" or hand the full deliverable
|
|
30
|
+
back to the dispatcher to transcribe — that defeats the entire point of
|
|
31
|
+
the blackboard. Reply with your summary + the file path, nothing else.
|
|
32
|
+
- If a write genuinely fails (permissions, missing directory), start your
|
|
33
|
+
reply with the line \`BLACKBOARD WRITE FAILED: <reason>\` and only then
|
|
34
|
+
include the full content as fallback, so the lead can retry the write
|
|
35
|
+
deliberately instead of guessing.`;
|
|
18
36
|
/* ------------------------------------------------------------------ */
|
|
19
37
|
/* Team Lead — orchestrator */
|
|
20
38
|
/* ------------------------------------------------------------------ */
|
|
21
39
|
const teamLead = {
|
|
22
|
-
mode: "
|
|
40
|
+
mode: "primary",
|
|
23
41
|
description: "Team lead orchestrator — decomposes complex tasks, dispatches sub-agents " +
|
|
24
42
|
"(architect, implementer, reviewer, tester, researcher), enforces a " +
|
|
25
43
|
"review/test feedback loop, and synthesises their outputs into a coherent " +
|
|
26
44
|
"deliverable. Use when the task requires multi-step collaboration across " +
|
|
27
45
|
"different expertise areas.",
|
|
28
|
-
|
|
46
|
+
system: `You are the **Team Lead** in a multi-agent coding team.
|
|
29
47
|
|
|
30
48
|
## Role
|
|
31
49
|
You orchestrate the team: decompose work, dispatch it to specialist agents
|
|
@@ -84,6 +102,10 @@ file blackboard (root path is appended at the end of this prompt):
|
|
|
84
102
|
never rely on an agent "knowing" what another produced.
|
|
85
103
|
- Sub-agents reply with a summary plus their file path; read the file
|
|
86
104
|
yourself when you need detail, then relay the relevant parts onward.
|
|
105
|
+
- A specialist asking you to transcribe its output verbatim is a protocol
|
|
106
|
+
violation — send it back to write the file itself. Only if its reply
|
|
107
|
+
contains \`BLACKBOARD WRITE FAILED\` may you write the artifact as a
|
|
108
|
+
fallback; note the failure in MANIFEST.md so it is not silently tolerated.
|
|
87
109
|
- Maintain \`MANIFEST.md\` in the task directory: one line per artifact
|
|
88
110
|
(file — role — status — one-line summary).
|
|
89
111
|
- After you deliver the final report, DELETE the task directory (use the
|
|
@@ -129,6 +151,12 @@ adoption:
|
|
|
129
151
|
- Your final output is a structured summary, not raw agent transcripts.
|
|
130
152
|
`,
|
|
131
153
|
color: "#E879F9", // purple
|
|
154
|
+
permissions: [
|
|
155
|
+
RULE("edit", "*", "allow"),
|
|
156
|
+
RULE("bash", "*", "allow"),
|
|
157
|
+
RULE("webfetch", "*", "allow"),
|
|
158
|
+
RULE("task", "*", "allow"),
|
|
159
|
+
],
|
|
132
160
|
};
|
|
133
161
|
/* ------------------------------------------------------------------ */
|
|
134
162
|
/* Architect */
|
|
@@ -139,7 +167,7 @@ const architect = {
|
|
|
139
167
|
"and technical strategy; revises designs when review or testing exposes a " +
|
|
140
168
|
"flaw. Use when you need a design doc, architecture decision record, or " +
|
|
141
169
|
"module breakdown before implementation.",
|
|
142
|
-
|
|
170
|
+
system: `You are the **Architect** on a multi-agent coding team.
|
|
143
171
|
|
|
144
172
|
## Role
|
|
145
173
|
You produce clear, implementable technical designs. You think in systems:
|
|
@@ -176,6 +204,13 @@ When the team lead sends back a design flaw found in review or testing:
|
|
|
176
204
|
of guessing about the codebase.
|
|
177
205
|
`,
|
|
178
206
|
color: "#38BDF8", // sky blue
|
|
207
|
+
// Read-only on PROJECT sources; the blackboard artifact is explicitly
|
|
208
|
+
// writable (see Blackboard write guarantee).
|
|
209
|
+
permissions: [
|
|
210
|
+
RULE("edit", "*", "allow"),
|
|
211
|
+
RULE("bash", "*", "deny"),
|
|
212
|
+
RULE("webfetch", "*", "allow"),
|
|
213
|
+
],
|
|
179
214
|
};
|
|
180
215
|
/* ------------------------------------------------------------------ */
|
|
181
216
|
/* Implementer */
|
|
@@ -185,7 +220,7 @@ const implementer = {
|
|
|
185
220
|
description: "Core implementer — writes production code, creates files, and builds " +
|
|
186
221
|
"features according to the architect's design; applies review-driven fix " +
|
|
187
222
|
"tasks. Use when you need clean, working code written quickly.",
|
|
188
|
-
|
|
223
|
+
system: `You are the **Implementer** on a multi-agent coding team.
|
|
189
224
|
|
|
190
225
|
## Role
|
|
191
226
|
You write clean, production-quality code following the design spec handed
|
|
@@ -218,6 +253,11 @@ to you by the team lead.
|
|
|
218
253
|
check, the previously failing test).
|
|
219
254
|
`,
|
|
220
255
|
color: "#4ADE80", // green
|
|
256
|
+
permissions: [
|
|
257
|
+
RULE("edit", "*", "allow"),
|
|
258
|
+
RULE("bash", "*", "allow"),
|
|
259
|
+
RULE("webfetch", "*", "allow"),
|
|
260
|
+
],
|
|
221
261
|
};
|
|
222
262
|
/* ------------------------------------------------------------------ */
|
|
223
263
|
/* Reviewer */
|
|
@@ -227,7 +267,7 @@ const reviewer = {
|
|
|
227
267
|
description: "Code reviewer — audits code for correctness, performance, security, " +
|
|
228
268
|
"maintainability, and best practices with severity-graded, actionable " +
|
|
229
269
|
"findings. Use when you want a thorough review before merging.",
|
|
230
|
-
|
|
270
|
+
system: `You are the **Reviewer** on a multi-agent coding team.
|
|
231
271
|
|
|
232
272
|
## Role
|
|
233
273
|
You perform thorough, constructive code reviews. You catch bugs, security
|
|
@@ -268,6 +308,13 @@ plus regressions introduced by the fixes; confirm each prior finding item
|
|
|
268
308
|
by item (fixed / not fixed / partial).
|
|
269
309
|
`,
|
|
270
310
|
color: "#FB923C", // orange
|
|
311
|
+
// May edit ONLY the blackboard artifact; never the reviewed code
|
|
312
|
+
// (see Blackboard write guarantee + role rules).
|
|
313
|
+
permissions: [
|
|
314
|
+
RULE("edit", "*", "allow"),
|
|
315
|
+
RULE("bash", "*", "allow"),
|
|
316
|
+
RULE("webfetch", "*", "allow"),
|
|
317
|
+
],
|
|
271
318
|
};
|
|
272
319
|
/* ------------------------------------------------------------------ */
|
|
273
320
|
/* Tester */
|
|
@@ -277,7 +324,7 @@ const tester = {
|
|
|
277
324
|
description: "Test engineer — writes and runs unit/integration tests, classifies " +
|
|
278
325
|
"failures (product bug vs bad test vs environment), and reports a clear " +
|
|
279
326
|
"verdict. Use to validate correctness or raise coverage.",
|
|
280
|
-
|
|
327
|
+
system: `You are the **Tester** on a multi-agent coding team.
|
|
281
328
|
|
|
282
329
|
## Role
|
|
283
330
|
You write comprehensive, maintainable tests and give the team a trustworthy
|
|
@@ -317,6 +364,11 @@ pass/fail signal.
|
|
|
317
364
|
refactor instead of contorting the test.
|
|
318
365
|
`,
|
|
319
366
|
color: "#F472B6", // pink
|
|
367
|
+
permissions: [
|
|
368
|
+
RULE("edit", "*", "allow"),
|
|
369
|
+
RULE("bash", "*", "allow"),
|
|
370
|
+
RULE("webfetch", "*", "allow"),
|
|
371
|
+
],
|
|
320
372
|
};
|
|
321
373
|
/* ------------------------------------------------------------------ */
|
|
322
374
|
/* Researcher */
|
|
@@ -327,7 +379,7 @@ const researcher = {
|
|
|
327
379
|
"documentation; every finding carries a source and confidence tag so " +
|
|
328
380
|
"the team can decide what needs verification. Use for information that " +
|
|
329
381
|
"must inform a technical decision.",
|
|
330
|
-
|
|
382
|
+
system: `You are the **Researcher** on a multi-agent coding team.
|
|
331
383
|
|
|
332
384
|
## Role
|
|
333
385
|
You find accurate, actionable information so the team can make informed
|
|
@@ -363,7 +415,17 @@ by the team — flag prominently if that is the case.
|
|
|
363
415
|
- State which product/version each finding applies to.
|
|
364
416
|
`,
|
|
365
417
|
color: "#A78BFA", // violet
|
|
418
|
+
permissions: [
|
|
419
|
+
RULE("edit", "*", "allow"),
|
|
420
|
+
RULE("bash", "*", "allow"),
|
|
421
|
+
RULE("webfetch", "*", "allow"),
|
|
422
|
+
RULE("websearch", "*", "allow"),
|
|
423
|
+
],
|
|
366
424
|
};
|
|
425
|
+
/* Append the blackboard write guarantee to every specialist prompt. */
|
|
426
|
+
for (const a of [architect, implementer, reviewer, tester, researcher]) {
|
|
427
|
+
a.system = (a.system ?? "") + BLACKBOARD_GUARANTEE;
|
|
428
|
+
}
|
|
367
429
|
/* ------------------------------------------------------------------ */
|
|
368
430
|
/* Export all agents keyed by name */
|
|
369
431
|
/* ------------------------------------------------------------------ */
|
package/dist/agents.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* opencode-team-mode — OpenCode
|
|
2
|
+
* opencode-team-mode — OpenCode plugin entry point.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Exports the hybrid object shape required by the current OpenCode Desktop
|
|
5
|
+
* loader (v1.18.x):
|
|
6
|
+
* - `id` → display name in the Desktop plugin list
|
|
7
|
+
* - `server` → v1 loader gate; MUST exist or loading is rejected with
|
|
8
|
+
* "must default export an object with server()"
|
|
9
|
+
* - `setup` → v2 domain injection (agent/command transform), real payload
|
|
7
10
|
*
|
|
8
11
|
* Options (via the tuple plugin form):
|
|
9
|
-
* "plugin": [["@te-river/opencode-team-mode", { "ttlDays": 7 }]]
|
|
12
|
+
* "plugin": [["@te-river/opencode-team-mode@latest", { "ttlDays": 7 }]]
|
|
10
13
|
* `ttlDays` controls blackboard auto-cleanup; default 5.
|
|
11
14
|
*/
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
import type { OpenCodePlugin } from "./types.js";
|
|
16
|
+
declare const plugin: OpenCodePlugin;
|
|
17
|
+
export default plugin;
|
|
14
18
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AA8BhD,QAAA,MAAM,MAAM,EAAE,cA2Cb,CAAA;AAED,eAAe,MAAM,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* opencode-team-mode — OpenCode
|
|
2
|
+
* opencode-team-mode — OpenCode plugin entry point.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Exports the hybrid object shape required by the current OpenCode Desktop
|
|
5
|
+
* loader (v1.18.x):
|
|
6
|
+
* - `id` → display name in the Desktop plugin list
|
|
7
|
+
* - `server` → v1 loader gate; MUST exist or loading is rejected with
|
|
8
|
+
* "must default export an object with server()"
|
|
9
|
+
* - `setup` → v2 domain injection (agent/command transform), real payload
|
|
7
10
|
*
|
|
8
11
|
* Options (via the tuple plugin form):
|
|
9
|
-
* "plugin": [["@te-river/opencode-team-mode", { "ttlDays": 7 }]]
|
|
12
|
+
* "plugin": [["@te-river/opencode-team-mode@latest", { "ttlDays": 7 }]]
|
|
10
13
|
* `ttlDays` controls blackboard auto-cleanup; default 5.
|
|
11
14
|
*/
|
|
12
|
-
import { define } from "./types.js";
|
|
13
15
|
import { agents } from "./agents.js";
|
|
14
16
|
import { commands } from "./commands.js";
|
|
15
17
|
import { startBlackboardMaintenance, resolveTtlMs, DEFAULT_TTL_DAYS, } from "./blackboard.js";
|
|
@@ -33,39 +35,46 @@ function blackboardNote(root, ttlDays) {
|
|
|
33
35
|
` Your own delete-after-report is the fast path; the sweep is the safety net.`,
|
|
34
36
|
].join("\n");
|
|
35
37
|
}
|
|
36
|
-
|
|
38
|
+
const plugin = {
|
|
37
39
|
id: "team-mode",
|
|
40
|
+
/** v1 loader gate — no v1 hooks needed, the v2 setup does everything. */
|
|
41
|
+
server: async () => ({}),
|
|
38
42
|
setup: async (ctx) => {
|
|
39
43
|
// ---------- blackboard maintenance (code-level TTL sweeper) ----------
|
|
40
44
|
const directory = resolveDirectory(ctx);
|
|
41
45
|
const ttlMs = resolveTtlMs(ctx.options);
|
|
42
46
|
const ttlDays = Math.round(ttlMs / (24 * 60 * 60 * 1000)) || DEFAULT_TTL_DAYS;
|
|
43
47
|
const boardRoot = startBlackboardMaintenance(directory, ttlMs);
|
|
44
|
-
// ---------- inject team agents ----------
|
|
48
|
+
// ---------- inject team agents (v2 AgentV2Info fields) ----------
|
|
45
49
|
await ctx.agent.transform((agent) => {
|
|
46
50
|
for (const [name, def] of Object.entries(agents)) {
|
|
47
51
|
agent.update(name, (item) => {
|
|
48
52
|
item.description = def.description;
|
|
49
53
|
item.mode = def.mode;
|
|
50
|
-
item.
|
|
54
|
+
item.system =
|
|
51
55
|
name === "team-lead"
|
|
52
|
-
? def.
|
|
53
|
-
: def.
|
|
56
|
+
? (def.system ?? "") + blackboardNote(boardRoot, ttlDays)
|
|
57
|
+
: def.system;
|
|
54
58
|
item.color = def.color;
|
|
59
|
+
// Authoritative v2 ruleset — overrides any stale file-based agent
|
|
60
|
+
// definition that might deny blackboard writes.
|
|
61
|
+
if (def.permissions)
|
|
62
|
+
item.permissions = def.permissions;
|
|
55
63
|
});
|
|
56
64
|
}
|
|
57
65
|
});
|
|
58
|
-
// ---------- inject team commands ----------
|
|
66
|
+
// ---------- inject team commands (v2 CommandV2Info fields) ----------
|
|
59
67
|
await ctx.command.transform((command) => {
|
|
60
68
|
for (const [name, def] of Object.entries(commands)) {
|
|
61
69
|
command.update(name, (item) => {
|
|
70
|
+
item.name = name;
|
|
62
71
|
item.description = def.description;
|
|
63
|
-
item.template = def.template;
|
|
72
|
+
item.template = def.template ?? "";
|
|
64
73
|
item.agent = def.agent;
|
|
65
74
|
});
|
|
66
75
|
}
|
|
67
76
|
});
|
|
68
77
|
},
|
|
69
|
-
}
|
|
70
|
-
export default
|
|
78
|
+
};
|
|
79
|
+
export default plugin;
|
|
71
80
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,45 +1,81 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* OpenCode
|
|
2
|
+
* OpenCode plugin type definitions (1.18.x dual-stack loader).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* IMPORTANT: the current OpenCode Desktop loader validates plugins with the
|
|
5
|
+
* v1 schema (default export MUST have `server()`) while ALSO invoking an
|
|
6
|
+
* optional v2-style `setup(context)` on the same object. The only shape that
|
|
7
|
+
* actually loads is the hybrid:
|
|
8
|
+
*
|
|
9
|
+
* export default { id, server: async () => ({}), setup: async (ctx) => {} }
|
|
10
|
+
*
|
|
11
|
+
* A pure v2 `define({ id, setup })` export is REJECTED with
|
|
12
|
+
* "must default export an object with server()".
|
|
13
|
+
*
|
|
14
|
+
* v2 agent/command item shapes below are taken from
|
|
15
|
+
* @opencode-ai/sdk/v2/types (AgentV2Info / CommandV2Info).
|
|
7
16
|
*/
|
|
17
|
+
export type PermissionEffect = "allow" | "deny" | "ask";
|
|
18
|
+
export interface PermissionRule {
|
|
19
|
+
action: string;
|
|
20
|
+
resource: string;
|
|
21
|
+
effect: PermissionEffect;
|
|
22
|
+
}
|
|
23
|
+
export declare const RULE: (action: string, resource: string, effect: PermissionEffect) => PermissionRule;
|
|
8
24
|
export interface AgentItem {
|
|
9
25
|
description?: string;
|
|
26
|
+
/** "primary" shows in the Desktop agent switcher; sub-agents use "subagent". */
|
|
10
27
|
mode?: "primary" | "subagent" | "all";
|
|
11
|
-
prompt
|
|
12
|
-
|
|
28
|
+
/** System prompt — v2 field name is `system`, NOT `prompt`. */
|
|
29
|
+
system?: string;
|
|
13
30
|
color?: string;
|
|
14
31
|
hidden?: boolean;
|
|
15
|
-
|
|
32
|
+
steps?: number;
|
|
33
|
+
temperature?: number;
|
|
34
|
+
/** v2 ruleset array — NOT the v1 permission object. */
|
|
35
|
+
permissions?: PermissionRule[];
|
|
16
36
|
[key: string]: unknown;
|
|
17
37
|
}
|
|
18
38
|
export interface CommandItem {
|
|
39
|
+
name?: string;
|
|
19
40
|
description?: string;
|
|
20
41
|
template?: string;
|
|
21
42
|
agent?: string;
|
|
22
|
-
|
|
43
|
+
subtask?: boolean;
|
|
23
44
|
[key: string]: unknown;
|
|
24
45
|
}
|
|
25
|
-
export interface
|
|
26
|
-
|
|
46
|
+
export interface AgentDraft {
|
|
47
|
+
list(): readonly AgentItem[];
|
|
48
|
+
get(id: string): AgentItem | undefined;
|
|
49
|
+
default(id: string | undefined): void;
|
|
50
|
+
/** Upsert: creates the entry when missing, then applies the updater. */
|
|
51
|
+
update(id: string, update: (agent: AgentItem) => void): void;
|
|
52
|
+
remove(id: string): void;
|
|
53
|
+
}
|
|
54
|
+
export interface CommandDraft {
|
|
55
|
+
list(): readonly CommandItem[];
|
|
56
|
+
get(name: string): CommandItem | undefined;
|
|
57
|
+
update(name: string, update: (command: CommandItem) => void): void;
|
|
58
|
+
remove(name: string): void;
|
|
27
59
|
}
|
|
28
60
|
export interface PluginContext {
|
|
29
61
|
agent: {
|
|
30
|
-
transform<T
|
|
62
|
+
transform<T>(cb: (draft: AgentDraft) => T | Promise<T>): Promise<T | undefined>;
|
|
31
63
|
reload(): Promise<void>;
|
|
32
64
|
};
|
|
33
65
|
command: {
|
|
34
|
-
transform<T
|
|
66
|
+
transform<T>(cb: (draft: CommandDraft) => T | Promise<T>): Promise<T | undefined>;
|
|
35
67
|
reload(): Promise<void>;
|
|
36
68
|
};
|
|
37
69
|
options?: Record<string, unknown>;
|
|
70
|
+
directory?: string;
|
|
71
|
+
project?: string;
|
|
38
72
|
[key: string]: unknown;
|
|
39
73
|
}
|
|
40
|
-
export interface
|
|
74
|
+
export interface OpenCodePlugin {
|
|
41
75
|
readonly id: string;
|
|
76
|
+
/** v1 loader gate: MUST exist. Return the (empty) v1 hooks object. */
|
|
77
|
+
readonly server: () => Promise<Record<string, unknown>>;
|
|
78
|
+
/** v2 domain injection: the real payload. */
|
|
42
79
|
readonly setup: (ctx: PluginContext) => Promise<void>;
|
|
43
80
|
}
|
|
44
|
-
export declare function define(plugin: PluginDefinition): PluginDefinition;
|
|
45
81
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* OpenCode
|
|
2
|
+
* OpenCode plugin type definitions (1.18.x dual-stack loader).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* IMPORTANT: the current OpenCode Desktop loader validates plugins with the
|
|
5
|
+
* v1 schema (default export MUST have `server()`) while ALSO invoking an
|
|
6
|
+
* optional v2-style `setup(context)` on the same object. The only shape that
|
|
7
|
+
* actually loads is the hybrid:
|
|
8
|
+
*
|
|
9
|
+
* export default { id, server: async () => ({}), setup: async (ctx) => {} }
|
|
10
|
+
*
|
|
11
|
+
* A pure v2 `define({ id, setup })` export is REJECTED with
|
|
12
|
+
* "must default export an object with server()".
|
|
13
|
+
*
|
|
14
|
+
* v2 agent/command item shapes below are taken from
|
|
15
|
+
* @opencode-ai/sdk/v2/types (AgentV2Info / CommandV2Info).
|
|
7
16
|
*/
|
|
8
|
-
export
|
|
9
|
-
return plugin;
|
|
10
|
-
}
|
|
17
|
+
export const RULE = (action, resource, effect) => ({ action, resource, effect });
|
|
11
18
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAYH,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,MAAc,EACd,QAAgB,EAChB,MAAwB,EACR,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@te-river/opencode-team-mode",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Team collaboration mode plugin for OpenCode Desktop — injects specialized agents (architect, reviewer, implementer, tester, researcher) and team workflow commands into your OpenCode workspace.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|