@divaltor/academy 0.4.0 → 0.4.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 CHANGED
@@ -32,6 +32,7 @@ Add Academy to `opencode.jsonc`. All options are optional:
32
32
  },
33
33
  "experimental": {
34
34
  "communication": {
35
+ "enabled": true,
35
36
  "thread_summary": "opencode-go/glm-5.3-flash",
36
37
  },
37
38
  },
@@ -58,7 +59,7 @@ Each agent under `agents` accepts `name`, `color`, and `model`. Colors may be si
58
59
  >
59
60
  > An agent's name is also its session ID. Renaming it can prevent existing sessions from continuing.
60
61
 
61
- Session tools are experimental and off by default; set `experimental.communication` to enable them. They are available under Code Mode's `academy` namespace. Only the root primary session can create threads; omit `agent` for a general coding session.
62
+ Session tools are experimental and off by default; set `experimental.communication.enabled` to `true` to enable them. They are available under Code Mode's `academy` namespace. Only the root primary session can create threads; omit `agent` for a general coding session.
62
63
 
63
64
  > [!NOTE]
64
65
  >
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@divaltor/academy",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "An OpenCode plugin that trains a Tracen Academy roster of specialist coding agents to research, build, and review.",
5
5
  "homepage": "https://github.com/divaltor/academy#readme",
6
6
  "bugs": {
package/src/index.ts CHANGED
@@ -54,6 +54,7 @@ const setup = Effect.fn("Academy.setup")(function* setup(ctx: Plugin.Context) {
54
54
  Agent.ID.make(agentOptions[id]?.name ?? id);
55
55
  const configuredAgentIDs = agents.map((agent) => agentID(agent.id));
56
56
  const communication = options.experimental?.communication;
57
+ const communicationEnabled = communication?.enabled === true;
57
58
 
58
59
  if (new Set(configuredAgentIDs).size !== configuredAgentIDs.length) {
59
60
  return yield* Effect.die(
@@ -102,7 +103,7 @@ const setup = Effect.fn("Academy.setup")(function* setup(ctx: Plugin.Context) {
102
103
  agent.color =
103
104
  agentOptions[definition.id]?.color ?? agent.color ?? definition.color;
104
105
  const base =
105
- definition.id === "rudolf" && communication !== undefined
106
+ definition.id === "rudolf" && communicationEnabled
106
107
  ? definition.system.replace(
107
108
  "# Communication",
108
109
  `${rudolfCommunicationPrompt}\n\n# Communication`
@@ -133,7 +134,7 @@ const setup = Effect.fn("Academy.setup")(function* setup(ctx: Plugin.Context) {
133
134
  editor.default(agentID("rudolf"));
134
135
  });
135
136
 
136
- if (communication !== undefined) {
137
+ if (communication !== undefined && communicationEnabled) {
137
138
  yield* SessionCommunication.register(ctx, communication, agentID("rudolf"));
138
139
  }
139
140
  });
@@ -43,6 +43,7 @@ export namespace SessionCommunication {
43
43
  );
44
44
 
45
45
  export const Options = Schema.Struct({
46
+ enabled: Schema.optionalKey(Schema.Boolean),
46
47
  thread_summary: Schema.optionalKey(ModelReference),
47
48
  });
48
49