@te-river/opencode-team-mode 1.2.1 → 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.
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AA+Z3C,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAO5C,CAAA"}
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,6 +15,7 @@
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";
18
19
  /* ------------------------------------------------------------------ */
19
20
  /* Blackboard write guarantee (appended to every specialist prompt) */
20
21
  /* ------------------------------------------------------------------ */
@@ -36,13 +37,13 @@ const BLACKBOARD_GUARANTEE = `
36
37
  /* Team Lead — orchestrator */
37
38
  /* ------------------------------------------------------------------ */
38
39
  const teamLead = {
39
- mode: "all",
40
+ mode: "primary",
40
41
  description: "Team lead orchestrator — decomposes complex tasks, dispatches sub-agents " +
41
42
  "(architect, implementer, reviewer, tester, researcher), enforces a " +
42
43
  "review/test feedback loop, and synthesises their outputs into a coherent " +
43
44
  "deliverable. Use when the task requires multi-step collaboration across " +
44
45
  "different expertise areas.",
45
- prompt: `You are the **Team Lead** in a multi-agent coding team.
46
+ system: `You are the **Team Lead** in a multi-agent coding team.
46
47
 
47
48
  ## Role
48
49
  You orchestrate the team: decompose work, dispatch it to specialist agents
@@ -150,13 +151,12 @@ adoption:
150
151
  - Your final output is a structured summary, not raw agent transcripts.
151
152
  `,
152
153
  color: "#E879F9", // purple
153
- permission: {
154
- edit: "allow",
155
- bash: "allow",
156
- webfetch: "allow",
157
- task: "allow",
158
- todowrite: "allow",
159
- },
154
+ permissions: [
155
+ RULE("edit", "*", "allow"),
156
+ RULE("bash", "*", "allow"),
157
+ RULE("webfetch", "*", "allow"),
158
+ RULE("task", "*", "allow"),
159
+ ],
160
160
  };
161
161
  /* ------------------------------------------------------------------ */
162
162
  /* Architect */
@@ -167,7 +167,7 @@ const architect = {
167
167
  "and technical strategy; revises designs when review or testing exposes a " +
168
168
  "flaw. Use when you need a design doc, architecture decision record, or " +
169
169
  "module breakdown before implementation.",
170
- prompt: `You are the **Architect** on a multi-agent coding team.
170
+ system: `You are the **Architect** on a multi-agent coding team.
171
171
 
172
172
  ## Role
173
173
  You produce clear, implementable technical designs. You think in systems:
@@ -206,7 +206,11 @@ When the team lead sends back a design flaw found in review or testing:
206
206
  color: "#38BDF8", // sky blue
207
207
  // Read-only on PROJECT sources; the blackboard artifact is explicitly
208
208
  // writable (see Blackboard write guarantee).
209
- permission: { edit: "allow", bash: "deny", webfetch: "allow" },
209
+ permissions: [
210
+ RULE("edit", "*", "allow"),
211
+ RULE("bash", "*", "deny"),
212
+ RULE("webfetch", "*", "allow"),
213
+ ],
210
214
  };
211
215
  /* ------------------------------------------------------------------ */
212
216
  /* Implementer */
@@ -216,7 +220,7 @@ const implementer = {
216
220
  description: "Core implementer — writes production code, creates files, and builds " +
217
221
  "features according to the architect's design; applies review-driven fix " +
218
222
  "tasks. Use when you need clean, working code written quickly.",
219
- prompt: `You are the **Implementer** on a multi-agent coding team.
223
+ system: `You are the **Implementer** on a multi-agent coding team.
220
224
 
221
225
  ## Role
222
226
  You write clean, production-quality code following the design spec handed
@@ -249,7 +253,11 @@ to you by the team lead.
249
253
  check, the previously failing test).
250
254
  `,
251
255
  color: "#4ADE80", // green
252
- permission: { edit: "allow", bash: "allow", webfetch: "allow" },
256
+ permissions: [
257
+ RULE("edit", "*", "allow"),
258
+ RULE("bash", "*", "allow"),
259
+ RULE("webfetch", "*", "allow"),
260
+ ],
253
261
  };
254
262
  /* ------------------------------------------------------------------ */
255
263
  /* Reviewer */
@@ -259,7 +267,7 @@ const reviewer = {
259
267
  description: "Code reviewer — audits code for correctness, performance, security, " +
260
268
  "maintainability, and best practices with severity-graded, actionable " +
261
269
  "findings. Use when you want a thorough review before merging.",
262
- prompt: `You are the **Reviewer** on a multi-agent coding team.
270
+ system: `You are the **Reviewer** on a multi-agent coding team.
263
271
 
264
272
  ## Role
265
273
  You perform thorough, constructive code reviews. You catch bugs, security
@@ -302,7 +310,11 @@ by item (fixed / not fixed / partial).
302
310
  color: "#FB923C", // orange
303
311
  // May edit ONLY the blackboard artifact; never the reviewed code
304
312
  // (see Blackboard write guarantee + role rules).
305
- permission: { edit: "allow", bash: "allow", webfetch: "allow" },
313
+ permissions: [
314
+ RULE("edit", "*", "allow"),
315
+ RULE("bash", "*", "allow"),
316
+ RULE("webfetch", "*", "allow"),
317
+ ],
306
318
  };
307
319
  /* ------------------------------------------------------------------ */
308
320
  /* Tester */
@@ -312,7 +324,7 @@ const tester = {
312
324
  description: "Test engineer — writes and runs unit/integration tests, classifies " +
313
325
  "failures (product bug vs bad test vs environment), and reports a clear " +
314
326
  "verdict. Use to validate correctness or raise coverage.",
315
- prompt: `You are the **Tester** on a multi-agent coding team.
327
+ system: `You are the **Tester** on a multi-agent coding team.
316
328
 
317
329
  ## Role
318
330
  You write comprehensive, maintainable tests and give the team a trustworthy
@@ -352,7 +364,11 @@ pass/fail signal.
352
364
  refactor instead of contorting the test.
353
365
  `,
354
366
  color: "#F472B6", // pink
355
- permission: { edit: "allow", bash: "allow", webfetch: "allow" },
367
+ permissions: [
368
+ RULE("edit", "*", "allow"),
369
+ RULE("bash", "*", "allow"),
370
+ RULE("webfetch", "*", "allow"),
371
+ ],
356
372
  };
357
373
  /* ------------------------------------------------------------------ */
358
374
  /* Researcher */
@@ -363,7 +379,7 @@ const researcher = {
363
379
  "documentation; every finding carries a source and confidence tag so " +
364
380
  "the team can decide what needs verification. Use for information that " +
365
381
  "must inform a technical decision.",
366
- prompt: `You are the **Researcher** on a multi-agent coding team.
382
+ system: `You are the **Researcher** on a multi-agent coding team.
367
383
 
368
384
  ## Role
369
385
  You find accurate, actionable information so the team can make informed
@@ -399,16 +415,16 @@ by the team — flag prominently if that is the case.
399
415
  - State which product/version each finding applies to.
400
416
  `,
401
417
  color: "#A78BFA", // violet
402
- permission: {
403
- edit: "allow",
404
- bash: "allow",
405
- webfetch: "allow",
406
- websearch: "allow",
407
- },
418
+ permissions: [
419
+ RULE("edit", "*", "allow"),
420
+ RULE("bash", "*", "allow"),
421
+ RULE("webfetch", "*", "allow"),
422
+ RULE("websearch", "*", "allow"),
423
+ ],
408
424
  };
409
425
  /* Append the blackboard write guarantee to every specialist prompt. */
410
426
  for (const a of [architect, implementer, reviewer, tester, researcher]) {
411
- a.prompt = (a.prompt ?? "") + BLACKBOARD_GUARANTEE;
427
+ a.system = (a.system ?? "") + BLACKBOARD_GUARANTEE;
412
428
  }
413
429
  /* ------------------------------------------------------------------ */
414
430
  /* Export all agents keyed by name */
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
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 v2 plugin entry point.
2
+ * opencode-team-mode — OpenCode plugin entry point.
3
3
  *
4
- * Uses the v2 Promise API with an explicit `id` field. The `id` is the
5
- * display name shown in OpenCode Desktop's plugin list (instead of the
6
- * raw file path).
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
- export declare const Plugin: import("./types.js").PluginDefinition;
13
- export default Plugin;
15
+ import type { OpenCodePlugin } from "./types.js";
16
+ declare const plugin: OpenCodePlugin;
17
+ export default plugin;
14
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAiCH,eAAO,MAAM,MAAM,uCAuCjB,CAAA;AAEF,eAAe,MAAM,CAAA"}
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 v2 plugin entry point.
2
+ * opencode-team-mode — OpenCode plugin entry point.
3
3
  *
4
- * Uses the v2 Promise API with an explicit `id` field. The `id` is the
5
- * display name shown in OpenCode Desktop's plugin list (instead of the
6
- * raw file path).
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,43 +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
- export const Plugin = define({
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.prompt =
54
+ item.system =
51
55
  name === "team-lead"
52
- ? def.prompt + blackboardNote(boardRoot, ttlDays)
53
- : def.prompt;
56
+ ? (def.system ?? "") + blackboardNote(boardRoot, ttlDays)
57
+ : def.system;
54
58
  item.color = def.color;
55
- // Authoritative permission from the plugin — overrides any stale
56
- // file-based agent definition that might deny blackboard writes.
57
- if (def.permission)
58
- item.permission = def.permission;
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;
59
63
  });
60
64
  }
61
65
  });
62
- // ---------- inject team commands ----------
66
+ // ---------- inject team commands (v2 CommandV2Info fields) ----------
63
67
  await ctx.command.transform((command) => {
64
68
  for (const [name, def] of Object.entries(commands)) {
65
69
  command.update(name, (item) => {
70
+ item.name = name;
66
71
  item.description = def.description;
67
- item.template = def.template;
72
+ item.template = def.template ?? "";
68
73
  item.agent = def.agent;
69
74
  });
70
75
  }
71
76
  });
72
77
  },
73
- });
74
- export default Plugin;
78
+ };
79
+ export default plugin;
75
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":"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"}
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 v2 Plugin type definitions.
2
+ * OpenCode plugin type definitions (1.18.x dual-stack loader).
3
3
  *
4
- * These types match the v2 Promise plugin API used by OpenCode Desktop.
5
- * The v2 format requires an `id` field which controls the display name
6
- * shown in the Desktop UI.
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?: string;
12
- model?: string;
28
+ /** System prompt — v2 field name is `system`, NOT `prompt`. */
29
+ system?: string;
13
30
  color?: string;
14
31
  hidden?: boolean;
15
- permission?: Record<string, unknown>;
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
- model?: string;
43
+ subtask?: boolean;
23
44
  [key: string]: unknown;
24
45
  }
25
- export interface TransformEditor<T> {
26
- update(name: string, updater: (item: T) => void): void;
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 = void>(callback: (editor: TransformEditor<AgentItem>) => T | Promise<T>): Promise<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 = void>(callback: (editor: TransformEditor<CommandItem>) => T | Promise<T>): Promise<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 PluginDefinition {
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
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,WAAW,SAAS;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,KAAK,CAAA;IACrC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,CAAA;CACvD;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE;QACL,SAAS,CAAC,CAAC,GAAG,IAAI,EAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAC/D,OAAO,CAAC,CAAC,CAAC,CAAA;QACb,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;KACxB,CAAA;IACD,OAAO,EAAE;QACP,SAAS,CAAC,CAAC,GAAG,IAAI,EAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACjE,OAAO,CAAC,CAAC,CAAC,CAAA;QACb,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;KACxB,CAAA;IACD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAID,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACtD;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAEjE"}
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 v2 Plugin type definitions.
2
+ * OpenCode plugin type definitions (1.18.x dual-stack loader).
3
3
  *
4
- * These types match the v2 Promise plugin API used by OpenCode Desktop.
5
- * The v2 format requires an `id` field which controls the display name
6
- * shown in the Desktop UI.
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 function define(plugin) {
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;;;;;;GAMG;AAmDH,MAAM,UAAU,MAAM,CAAC,MAAwB;IAC7C,OAAO,MAAM,CAAA;AACf,CAAC"}
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.2.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",