opencode-orchestrator 0.6.10 → 0.6.11

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.
Files changed (2) hide show
  1. package/dist/index.js +37 -45
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -16910,11 +16910,44 @@ var OrchestratorPlugin = async (input) => {
16910
16910
  console.log(`[orchestrator] Default agent: ${AGENT_NAMES.COMMANDER}`);
16911
16911
  },
16912
16912
  // -----------------------------------------------------------------
16913
- // session.start hook - runs when a new session begins
16913
+ // Event hook - handles OpenCode events (SDK official)
16914
+ // Replaces non-standard session.start/session.end hooks
16914
16915
  // -----------------------------------------------------------------
16915
- "session.start": async (input2) => {
16916
- log2("[index.ts] session.start", { sessionID: input2.sessionID, agent: input2.agent });
16917
- presets.missionStarted(`Session ${input2.sessionID.slice(0, 12)}...`);
16916
+ event: async (input2) => {
16917
+ const { event } = input2;
16918
+ try {
16919
+ const manager = ParallelAgentManager.getInstance();
16920
+ manager.handleEvent(event);
16921
+ } catch {
16922
+ }
16923
+ if (event.type === "session.created") {
16924
+ const sessionID = event.properties?.id || "";
16925
+ log2("[index.ts] event: session.created", { sessionID });
16926
+ presets.missionStarted(`Session ${sessionID.slice(0, 12)}...`);
16927
+ }
16928
+ if (event.type === "session.deleted" || event.type === SESSION_EVENTS.DELETED) {
16929
+ const sessionID = event.properties?.id || event.properties?.info?.id || "";
16930
+ const session = sessions.get(sessionID);
16931
+ if (session) {
16932
+ const totalTime = Date.now() - session.startTime;
16933
+ const duration3 = totalTime < 6e4 ? `${Math.round(totalTime / 1e3)}s` : `${Math.round(totalTime / 6e4)}m`;
16934
+ log2("[index.ts] event: session.deleted", {
16935
+ sessionID,
16936
+ steps: session.step,
16937
+ duration: duration3
16938
+ });
16939
+ sessions.delete(sessionID);
16940
+ state.sessions.delete(sessionID);
16941
+ clearSession(sessionID);
16942
+ presets.sessionCompleted(sessionID, duration3);
16943
+ }
16944
+ }
16945
+ if (event.type === "session.error") {
16946
+ const sessionID = event.properties?.sessionId || "";
16947
+ const error45 = event.properties?.error || "Unknown error";
16948
+ log2("[index.ts] event: session.error", { sessionID, error: error45 });
16949
+ presets.taskFailed("session", error45.slice(0, 50));
16950
+ }
16918
16951
  },
16919
16952
  // -----------------------------------------------------------------
16920
16953
  // chat.message hook - runs when user sends a message
@@ -17067,26 +17100,6 @@ Anomaly count: ${stateSession.anomalyCount}
17067
17100
  \u23F1\uFE0F [${currentTime}] Step ${session.step}/${session.maxSteps} | This step: ${stepDuration} | Total: ${totalElapsed}`;
17068
17101
  },
17069
17102
  // -----------------------------------------------------------------
17070
- // session.end hook - runs when a session ends
17071
- // -----------------------------------------------------------------
17072
- "session.end": async (input2) => {
17073
- const session = sessions.get(input2.sessionID);
17074
- if (session) {
17075
- const totalTime = Date.now() - session.startTime;
17076
- const duration3 = totalTime < 6e4 ? `${Math.round(totalTime / 1e3)}s` : `${Math.round(totalTime / 6e4)}m`;
17077
- log2("[index.ts] session.end", {
17078
- sessionID: input2.sessionID,
17079
- reason: input2.reason,
17080
- steps: session.step,
17081
- duration: duration3
17082
- });
17083
- sessions.delete(input2.sessionID);
17084
- state.sessions.delete(input2.sessionID);
17085
- clearSession(input2.sessionID);
17086
- presets.sessionCompleted(input2.sessionID, duration3);
17087
- }
17088
- },
17089
- // -----------------------------------------------------------------
17090
17103
  // assistant.done hook - runs when the LLM finishes responding
17091
17104
  // This is the heart of the "relentless loop" - we keep pushing it
17092
17105
  // to continue until we see MISSION COMPLETE or hit the limit
@@ -17198,27 +17211,6 @@ Anomaly count: ${stateSession.anomalyCount}
17198
17211
  state.missionActive = false;
17199
17212
  }
17200
17213
  }
17201
- },
17202
- // -----------------------------------------------------------------
17203
- // Event handler - cleans up when sessions are deleted
17204
- // Uses 'event' hook (not 'handler')
17205
- // -----------------------------------------------------------------
17206
- event: async (input2) => {
17207
- const { event } = input2;
17208
- try {
17209
- const manager = ParallelAgentManager.getInstance();
17210
- manager.handleEvent(event);
17211
- } catch {
17212
- }
17213
- if (event.type === SESSION_EVENTS.DELETED) {
17214
- const props = event.properties;
17215
- if (props?.info?.id) {
17216
- const sessionId = props.info.id;
17217
- sessions.delete(sessionId);
17218
- state.sessions.delete(sessionId);
17219
- clearSession(sessionId);
17220
- }
17221
- }
17222
17214
  }
17223
17215
  };
17224
17216
  };
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "opencode-orchestrator",
3
3
  "displayName": "OpenCode Orchestrator",
4
4
  "description": "Distributed Cognitive Architecture for OpenCode. Turns simple prompts into specialized multi-agent workflows (Planner, Coder, Reviewer).",
5
- "version": "0.6.10",
5
+ "version": "0.6.11",
6
6
  "author": "agnusdei1207",
7
7
  "license": "MIT",
8
8
  "repository": {