opencode-orchestrator 1.3.12 → 1.5.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
@@ -6,7 +6,7 @@
6
6
  [![MIT License](https://img.shields.io/badge/license-MIT-red.svg)](LICENSE)
7
7
  [![npm](https://img.shields.io/npm/v/opencode-orchestrator.svg)](https://www.npmjs.com/package/opencode-orchestrator)
8
8
  <!-- VERSION:START -->
9
- **Version:** `1.3.12`
9
+ **Version:** `1.5.1`
10
10
  <!-- VERSION:END -->
11
11
  </div>
12
12
 
@@ -34,8 +34,8 @@ Manual fallback: remove `"opencode-orchestrator"` or `["opencode-orchestrator",
34
34
  Tested compatibility:
35
35
 
36
36
  1. Node.js `24+`
37
- 2. `@opencode-ai/plugin` `1.17.3`
38
- 3. `@opencode-ai/sdk` `1.17.3`
37
+ 2. `@opencode-ai/plugin` `1.17.4`
38
+ 3. `@opencode-ai/sdk` `1.17.4`
39
39
 
40
40
  OpenCode plugin options belong inside the `plugin` array as `["plugin-name", {...}]` tuples. Configure `agentConcurrency` and `missionLoop` there:
41
41
 
@@ -99,6 +99,37 @@ Mission controls:
99
99
  3. `/cancel` and `/stop` deactivate the current mission loop.
100
100
  4. The default mission iteration ceiling is `1,000,000,000`.
101
101
 
102
+ Role-aware agent sessions are created or reused on demand: Commander delegates Planner, Worker, and Reviewer tasks into a per-role session pool, then releases or cleans those sessions automatically after completion.
103
+
104
+ ### Authorized Shell Listener TUI
105
+
106
+ For owned lab machines or explicitly authorized test environments, the bundled Rust CLI can run a multi-session TCP shell listener:
107
+
108
+ ```bash
109
+ orchestrator shell-listener --bind 127.0.0.1 --port 4444
110
+ ```
111
+
112
+ The listener is intentionally outside the OpenCode JSON-RPC tool surface. It is an operator-driven terminal workflow, not an LLM-callable tool.
113
+
114
+ Safety defaults:
115
+
116
+ 1. Loopback-only bind by default.
117
+ 2. Non-loopback bind addresses require `--allow-remote`.
118
+ 3. Raw stream logs are stored under `.opencode-orchestrator/shell-listener/`.
119
+ 4. The CLI does not generate payloads, exploit targets, or bypass authentication.
120
+
121
+ TUI commands:
122
+
123
+ | Command | Purpose |
124
+ | --- | --- |
125
+ | `sessions` | Show connected sessions, peer addresses, status, and raw log paths. |
126
+ | `use <id>` | Select the active session. |
127
+ | `send <text>` | Send one input line to the active session. Use this for login, registry, CDK, or reverse-proxy prompts that need human input. |
128
+ | `run <cmd>` | Send a command followed by a unique sentinel marker so completion can be recognized in output. |
129
+ | `pty` | Send a manual PTY helper to the active session when the remote environment supports Python. |
130
+ | `close [id]` | Close a session. |
131
+ | `quit` | Stop the listener UI. |
132
+
102
133
  ## 4. How It Works
103
134
 
104
135
  ```mermaid
Binary file
Binary file
@@ -2,7 +2,7 @@
2
2
  * ╔════════════════════════════════════════════════════════════╗
3
3
  * ║ DISCOVERY CORE PHILOSOPHY ║
4
4
  * ╠════════════════════════════════════════════════════════════╣
5
- * ║ 발견 단계의 핵심 철학: 실행 충분한 탐색
5
+ * ║ Core Philosophy of Discovery: Thorough Exploration Before Execution
6
6
  * ╚════════════════════════════════════════════════════════════╝
7
7
  */
8
8
  export declare const DISCOVERY_CORE = "\n# Discovery Phase Philosophy\n\nBefore any execution, thoroughly explore:\n1. Workspace structure\n2. Environment capabilities\n3. Available skills and tools\n4. Project patterns and conventions\n\nThe discovery phase sets the foundation for all subsequent actions.\n";
@@ -2,7 +2,7 @@
2
2
  * ╔════════════════════════════════════════════════════════════╗
3
3
  * ║ PLANNING CORE PHILOSOPHY ║
4
4
  * ╠════════════════════════════════════════════════════════════╣
5
- * ║ 계획 단계의 핵심 철학: 실행 가능한 명확한 계획 수립
5
+ * ║ Core Philosophy of Planning: Establishing Clear, Actionable Plans
6
6
  * ╚════════════════════════════════════════════════════════════╝
7
7
  */
8
8
  export declare const PLANNING_CORE = "\n# Planning Phase Philosophy\n\nCreate actionable, granular plans:\n1. Break down complex tasks into atomic units\n2. Identify dependencies and execution order\n3. Plan for parallel execution where possible\n4. Define clear success criteria\n\nGood planning makes execution straightforward.\n";
@@ -2,7 +2,7 @@
2
2
  * ╔════════════════════════════════════════════════════════════╗
3
3
  * ║ EXECUTION CORE PHILOSOPHY ║
4
4
  * ╠════════════════════════════════════════════════════════════╣
5
- * ║ 실행 단계의 핵심 철학: 계획을 정확하게 실행
5
+ * ║ Core Philosophy of Execution: Executing Plans with Precision
6
6
  * ╚════════════════════════════════════════════════════════════╝
7
7
  */
8
8
  export declare const EXECUTION_CORE = "\n# Execution Phase Philosophy\n\nExecute with precision and quality:\n1. Follow the plan systematically\n2. Handle errors gracefully\n3. Provide clear progress updates\n4. Maintain code quality standards\n\nExecution transforms plans into reality.\n";
@@ -2,7 +2,7 @@
2
2
  * ╔════════════════════════════════════════════════════════════╗
3
3
  * ║ VERIFICATION CORE PHILOSOPHY ║
4
4
  * ╠════════════════════════════════════════════════════════════╣
5
- * ║ 검증 단계의 핵심 철학: 실행 기반 품질 보증
5
+ * ║ Core Philosophy of Verification: Execution-Based Quality Assurance
6
6
  * ╚════════════════════════════════════════════════════════════╝
7
7
  */
8
8
  export declare const VERIFICATION_CORE = "\n# Verification Phase Philosophy\n\nVerify through actual execution:\n1. Build the project\n2. Run tests\n3. Check linting and type errors\n4. Validate runtime behavior\n\nReal execution is the ultimate verification.\n";
@@ -2,7 +2,7 @@
2
2
  * ╔════════════════════════════════════════════════════════════╗
3
3
  * ║ MISSION CORE PHILOSOPHY ║
4
4
  * ╠════════════════════════════════════════════════════════════╣
5
- * ║ 미션 관리의 핵심 철학: 전체 생명주기 관리
5
+ * ║ Core Philosophy of Mission Control: Managing Full Lifecycle
6
6
  * ╚════════════════════════════════════════════════════════════╝
7
7
  */
8
8
  export declare const MISSION_CORE = "\n# Mission Management Philosophy\n\nManage the entire mission lifecycle:\n1. Track mission status throughout execution\n2. Handle recovery from failures\n3. Determine completion conditions\n4. Ensure clean mission closure\n\nA mission succeeds when all objectives are met.\n";
@@ -2,7 +2,7 @@
2
2
  * ╔════════════════════════════════════════════════════════════╗
3
3
  * ║ TOOLS CORE PHILOSOPHY ║
4
4
  * ╠════════════════════════════════════════════════════════════╣
5
- * ║ 도구 사용의 핵심 철학: 올바른 도구를 올바르게 사용
5
+ * ║ Core Philosophy of Tools: Using the Right Tools Correctly
6
6
  * ╚════════════════════════════════════════════════════════════╝
7
7
  */
8
8
  export declare const TOOLS_CORE = "\n# Tools Usage Philosophy\n\nUse the right tool for the right job:\n1. Understand each tool's capabilities and limitations\n2. Choose the most appropriate tool for each task\n3. Use tools efficiently and correctly\n4. Validate tool outputs\n\nProper tool usage amplifies effectiveness.\n";
@@ -62,7 +62,6 @@ export declare class ParallelAgentManager {
62
62
  private findBySession;
63
63
  private handleTaskError;
64
64
  private handleTaskComplete;
65
- private recoverActiveTasks;
66
65
  }
67
66
  export declare const parallelAgentManager: {
68
67
  getInstance: typeof ParallelAgentManager.getInstance;
package/dist/index.js CHANGED
@@ -1,7 +1,12 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __getOwnPropNames = Object.getOwnPropertyNames;
3
- var __esm = (fn, res) => function __init() {
4
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
3
+ var __esm = (fn, res, err) => function __init() {
4
+ if (err) throw err[0];
5
+ try {
6
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
7
+ } catch (e) {
8
+ throw err = [e], e;
9
+ }
5
10
  };
6
11
  var __export = (target, all) => {
7
12
  for (var name in all)
@@ -23038,9 +23043,6 @@ var ParallelAgentManager = class _ParallelAgentManager {
23038
23043
  (task) => this.handleTaskComplete(task)
23039
23044
  );
23040
23045
  progressNotifier.setManager(this);
23041
- this.recoverActiveTasks().catch((err) => {
23042
- log("Recovery error:", err);
23043
- });
23044
23046
  }
23045
23047
  static getInstance(client, directory, concurrencyConfig) {
23046
23048
  if (!_ParallelAgentManager._instance) {
@@ -23193,8 +23195,6 @@ This task ensures the completeness of the unit before global integration.`,
23193
23195
  }
23194
23196
  progressNotifier.update();
23195
23197
  }
23196
- async recoverActiveTasks() {
23197
- }
23198
23198
  };
23199
23199
  var parallelAgentManager = {
23200
23200
  getInstance: ParallelAgentManager.getInstance.bind(ParallelAgentManager),
@@ -36515,15 +36515,15 @@ var CONTINUE_INSTRUCTION = `<auto_continue>
36515
36515
  </auto_continue>`;
36516
36516
  var STAGNATION_INTERVENTION = `
36517
36517
  <system_intervention type="stagnation_detected">
36518
- \u26A0\uFE0F **\uACBD\uACE0: \uC9C4\uD589 \uC815\uCCB4 \uAC10\uC9C0 (STAGNATION DETECTED)**
36519
- \uCD5C\uADFC \uC5EC\uB7EC \uD134 \uB3D9\uC548 \uC2E4\uC9C8\uC801\uC778 \uC9C4\uC804\uC774 \uAC10\uC9C0\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uB2E8\uC21C "\uBAA8\uB2C8\uD130\uB9C1"\uC774\uB098 \uAC19\uC740 \uD589\uB3D9\uC744 \uBC18\uBCF5\uD558\uB294 \uAC83\uC740 \uAE08\uC9C0\uB429\uB2C8\uB2E4.
36518
+ \u26A0\uFE0F **WARNING: STAGNATION DETECTED**
36519
+ No substantive progress has been detected for the past several turns. Repeating the same action or merely "monitoring" is prohibited.
36520
36520
 
36521
- **\uC790\uC728\uC801 \uC9C4\uB2E8 \uBC0F \uD574\uACB0 \uC9C0\uCE68:**
36522
- 1. **\uC2E4\uC2DC\uAC04 \uB85C\uADF8 \uD655\uC778**: \`check_background_task\` \uB610\uB294 \`read_file\`\uC744 \uC0AC\uC6A9\uD558\uC5EC \uC9C4\uD589 \uC911\uC778 \uC791\uC5C5\uC758 \uCD9C\uB825 \uB85C\uADF8\uB97C \uC9C1\uC811 \uD655\uC778\uD558\uC2ED\uC2DC\uC624.
36523
- 2. **\uD504\uB85C\uC138\uC2A4 \uC0DD\uC874 \uC9C4\uB2E8**: \uC791\uC5C5\uC774 \uC880\uBE44 \uC0C1\uD0DC\uC774\uAC70\uB098 \uBA48\uCD98 \uAC83 \uAC19\uB2E4\uBA74 \uACFC\uAC10\uD558\uAC8C \`kill\`\uD558\uACE0 \uB2E8\uACC4\uB97C \uC138\uBD84\uD654\uD558\uC5EC \uB2E4\uC2DC \uC2E4\uD589\uD558\uC2ED\uC2DC\uC624.
36524
- 3. **\uC804\uB7B5 \uC804\uD658**: \uB3D9\uC77C\uD55C \uC811\uADFC \uBC29\uC2DD\uC774 \uC2E4\uD328\uD558\uACE0 \uC788\uB2E4\uBA74, \uB2E4\uB978 \uB3C4\uAD6C\uB098 \uBC29\uBC95\uC744 \uC0AC\uC6A9\uD558\uC5EC \uBAA9\uD45C\uC5D0 \uB3C4\uB2EC\uD558\uC2ED\uC2DC\uC624.
36521
+ **Guidelines for Autonomous Diagnosis and Resolution:**
36522
+ 1. **Check Real-time Logs**: Use \`check_background_task\` or \`read_file\` to directly check the output logs of the running task.
36523
+ 2. **Process Liveness Diagnosis**: If the task appears to be in a zombie state or hung, proactively \`kill\` it, break down the steps, and run it again.
36524
+ 3. **Strategy Pivot**: If the same approach keeps failing, use alternative tools or methods to reach the goal.
36525
36525
 
36526
- **\uC9C0\uAE08 \uBC14\uB85C \uB2A5\uB3D9\uC801\uC73C\uB85C \uAC1C\uC785\uD558\uC2ED\uC2DC\uC624. \uB300\uAE30\uD558\uC9C0 \uB9C8\uC2ED\uC2DC\uC624.**
36526
+ **Intervene proactively right now. Do not wait.**
36527
36527
  </system_intervention>`;
36528
36528
  var CLEANUP_INSTRUCTION = `
36529
36529
  <system_maintenance type="continuous_hygiene">
@@ -21,5 +21,5 @@ export declare const MISSION_MESSAGES: {
21
21
  };
22
22
  export declare const COMPACTION_PROMPT: string;
23
23
  export declare const CONTINUE_INSTRUCTION: string;
24
- export declare const STAGNATION_INTERVENTION = "\n<system_intervention type=\"stagnation_detected\">\n\u26A0\uFE0F **\uACBD\uACE0: \uC9C4\uD589 \uC815\uCCB4 \uAC10\uC9C0 (STAGNATION DETECTED)**\n\uCD5C\uADFC \uC5EC\uB7EC \uD134 \uB3D9\uC548 \uC2E4\uC9C8\uC801\uC778 \uC9C4\uC804\uC774 \uAC10\uC9C0\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uB2E8\uC21C \"\uBAA8\uB2C8\uD130\uB9C1\"\uC774\uB098 \uAC19\uC740 \uD589\uB3D9\uC744 \uBC18\uBCF5\uD558\uB294 \uAC83\uC740 \uAE08\uC9C0\uB429\uB2C8\uB2E4.\n\n**\uC790\uC728\uC801 \uC9C4\uB2E8 \uBC0F \uD574\uACB0 \uC9C0\uCE68:**\n1. **\uC2E4\uC2DC\uAC04 \uB85C\uADF8 \uD655\uC778**: `check_background_task` \uB610\uB294 `read_file`\uC744 \uC0AC\uC6A9\uD558\uC5EC \uC9C4\uD589 \uC911\uC778 \uC791\uC5C5\uC758 \uCD9C\uB825 \uB85C\uADF8\uB97C \uC9C1\uC811 \uD655\uC778\uD558\uC2ED\uC2DC\uC624.\n2. **\uD504\uB85C\uC138\uC2A4 \uC0DD\uC874 \uC9C4\uB2E8**: \uC791\uC5C5\uC774 \uC880\uBE44 \uC0C1\uD0DC\uC774\uAC70\uB098 \uBA48\uCD98 \uAC83 \uAC19\uB2E4\uBA74 \uACFC\uAC10\uD558\uAC8C `kill`\uD558\uACE0 \uB2E8\uACC4\uB97C \uC138\uBD84\uD654\uD558\uC5EC \uB2E4\uC2DC \uC2E4\uD589\uD558\uC2ED\uC2DC\uC624.\n3. **\uC804\uB7B5 \uC804\uD658**: \uB3D9\uC77C\uD55C \uC811\uADFC \uBC29\uC2DD\uC774 \uC2E4\uD328\uD558\uACE0 \uC788\uB2E4\uBA74, \uB2E4\uB978 \uB3C4\uAD6C\uB098 \uBC29\uBC95\uC744 \uC0AC\uC6A9\uD558\uC5EC \uBAA9\uD45C\uC5D0 \uB3C4\uB2EC\uD558\uC2ED\uC2DC\uC624.\n\n**\uC9C0\uAE08 \uBC14\uB85C \uB2A5\uB3D9\uC801\uC73C\uB85C \uAC1C\uC785\uD558\uC2ED\uC2DC\uC624. \uB300\uAE30\uD558\uC9C0 \uB9C8\uC2ED\uC2DC\uC624.**\n</system_intervention>";
24
+ export declare const STAGNATION_INTERVENTION = "\n<system_intervention type=\"stagnation_detected\">\n\u26A0\uFE0F **WARNING: STAGNATION DETECTED**\nNo substantive progress has been detected for the past several turns. Repeating the same action or merely \"monitoring\" is prohibited.\n\n**Guidelines for Autonomous Diagnosis and Resolution:**\n1. **Check Real-time Logs**: Use `check_background_task` or `read_file` to directly check the output logs of the running task.\n2. **Process Liveness Diagnosis**: If the task appears to be in a zombie state or hung, proactively `kill` it, break down the steps, and run it again.\n3. **Strategy Pivot**: If the same approach keeps failing, use alternative tools or methods to reach the goal.\n\n**Intervene proactively right now. Do not wait.**\n</system_intervention>";
25
25
  export declare const CLEANUP_INSTRUCTION = "\n<system_maintenance type=\"continuous_hygiene\">\n\uD83E\uDDF9 **DOCUMENTATION & STATE HYGIENE (Iteration %ITER%)**\nYou must maintain a pristine workspace. **As part of your move**, perform these checks:\n\n1. **Relevance Assessment**:\n - Review active documents (`.opencode/*.md`). Are they needed for the *current* objective?\n - If a file represents a solved problem or obsolete context, **Archive it** to `.opencode/archive/` or delete it.\n\n2. **Synchronization**:\n - Verify `TODO.md` matches the actual code state. Mark completed items immediately.\n - Check `sync-issues.md`. If issues are resolved, remove them.\n\n3. **Context Optimization**:\n - If `work-log.md` is getting noisy, summarize key decisions into `summary.md` and truncate the log.\n - Keep context lightweight.\n\n**Rule**: A cluttered workspace leads to hallucinations. Clean as you go.\n</system_maintenance>\n";
package/package.json CHANGED
@@ -2,14 +2,14 @@
2
2
  "name": "opencode-orchestrator",
3
3
  "displayName": "OpenCode Orchestrator",
4
4
  "description": "Multi-agent mission control for OpenCode with Commander, Planner, Worker, and Reviewer workflows.",
5
- "version": "1.3.12",
5
+ "version": "1.5.1",
6
6
  "author": "agnusdei1207",
7
7
  "license": "MIT",
8
8
  "repository": {
9
9
  "type": "git",
10
10
  "url": "git+https://github.com/agnusdei1207/opencode-orchestrator.git"
11
11
  },
12
- "homepage": "https://github.com/agnusdei1207/opencode-orchestrator/issues",
12
+ "homepage": "https://agnusdei1207.github.io/opencode-orchestrator/",
13
13
  "bugs": {
14
14
  "url": "https://github.com/agnusdei1207/opencode-orchestrator/issues"
15
15
  },
@@ -74,14 +74,14 @@
74
74
  "node": ">=24"
75
75
  },
76
76
  "dependencies": {
77
- "@opencode-ai/plugin": "1.17.3",
78
- "@opencode-ai/sdk": "1.17.3",
77
+ "@opencode-ai/plugin": "1.17.4",
78
+ "@opencode-ai/sdk": "1.17.4",
79
79
  "jsonc-parser": "^3.3.1",
80
80
  "zod": "^4.3.6"
81
81
  },
82
82
  "devDependencies": {
83
83
  "@types/node": "^24.13.1",
84
- "esbuild": "^0.28.0",
84
+ "esbuild": "^0.28.1",
85
85
  "shx": "^0.4.0",
86
86
  "typescript": "^5.7.0",
87
87
  "vitest": "^4.0.17"
@@ -1,24 +0,0 @@
1
- /**
2
- * Task WAL (Write-Ahead Log) - REMOVED
3
- *
4
- * This module is deprecated and provides no-op stubs for backward compatibility.
5
- * WAL was removed to reduce I/O overhead and simplify architecture.
6
- */
7
- import type { ParallelTask } from "../interfaces/index.js";
8
- export interface WALEntry {
9
- timestamp: string;
10
- action: string;
11
- taskId: string;
12
- data: Partial<ParallelTask>;
13
- }
14
- /**
15
- * No-op WAL - all methods are stubs
16
- */
17
- export declare class TaskWAL {
18
- init(): Promise<void>;
19
- log(): Promise<void>;
20
- flush(): Promise<void>;
21
- readAll(): Promise<Map<string, ParallelTask>>;
22
- compact(): Promise<void>;
23
- }
24
- export declare const taskWAL: TaskWAL;