oh-my-opencode-slim 2.2.2 → 2.2.3

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.ja-JP.md CHANGED
@@ -35,7 +35,7 @@ oh-my-opencode-slim は OpenCode 向けのエージェントオーケストレ
35
35
  - **[同梱スキル](#skills)** - `deepwork`、`codemap`、`verification-planning`、`reflect` などのプロンプトベースのワークフローを、エージェントごとに割り当てます。
36
36
  - **[Council](docs/council.md)** - `@council` で同じ質問を複数モデルに並列で投げ、1 つの回答に統合します。
37
37
  - **[Companion](docs/companion.md)** - 並列のバックグラウンド専門家を含む、稼働中のエージェントを表示する任意のフローティングデスクトップウィンドウです。
38
- - **[マルチプレクサー統合](docs/multiplexer-integration.md)** - Tmux、Zellij、Herdr、cmux のペインでエージェントの作業をライブ表示します。
38
+ - **[マルチプレクサー統合](docs/multiplexer-integration.md)** - Tmux、Zellij、Herdr、cmux、kitty のペインでエージェントの作業をライブ表示します。
39
39
  - **[プリセット切り替え](docs/preset-switching.md)** - `/preset` でチーム全体のモデルを実行時に切り替えます。
40
40
  - **[コードインテリジェンスツール](docs/tools.md)** - 25 言語対応の LSP、AST 対応検索、Web 検索・ドキュメント・GitHub コード検索用の組み込み MCP を提供します。
41
41
  - **[完全にカスタマイズ可能](docs/configuration.md)** - カスタムエージェント、プロンプト上書き、エージェントごとのスキル/MCP 権限、[プロジェクトローカルのカスタマイズ](docs/project-local-customization.md)に対応します。
@@ -143,7 +143,7 @@ bun run build
143
143
  > バックグラウンドオーケストレーションの仕組みを理解しておくことを**推奨**します。**[Orchestrator のプロンプト](https://github.com/alvinunreal/oh-my-opencode-slim/blob/master/src/agents/orchestrator.ts#L28)** には、スケジューラーのルール、専門エージェントへのルーティングロジック、作業をバックグラウンドエージェントへ割り当てるしきい値が記述されています。`@agentName <task>` のようにサブエージェントを呼び出すことで、いつでも手動で委譲できます。
144
144
 
145
145
  > [!TIP]
146
- > バックグラウンドエージェントが現在のデフォルトワークフローになっているため、**[Multiplexer Integration](docs/multiplexer-integration.md)** を有効化して設定することを**強く推奨**します。各エージェントが専用の Tmux、Zellij、Herdr または cmux ペインで自動的に開かれるため、Orchestrator がセッションを調整し続けている間も、専門エージェントの作業をリアルタイムで追えます。
146
+ > バックグラウンドエージェントが現在のデフォルトワークフローになっているため、**[Multiplexer Integration](docs/multiplexer-integration.md)** を有効化して設定することを**強く推奨**します。各エージェントが専用の Tmux、Zellij、Herdr、cmux、または kitty ペインで自動的に開かれるため、Orchestrator がセッションを調整し続けている間も、専門エージェントの作業をリアルタイムで追えます。
147
147
 
148
148
  デフォルトで生成される設定には `openai` と `opencode-go` の両方のプリセットが含まれます。
149
149
 
@@ -607,7 +607,7 @@ bunx oh-my-opencode-slim@latest install --companion=yes
607
607
  | **[Council](docs/council.md)** | 複数のモデルを並列実行し、`@council` で 1 つの回答に統合します |
608
608
  | **[Custom Agents](docs/configuration.md#custom-agents)** | カスタムプロンプト、モデル、MCP アクセス、Orchestrator の委譲ルールを備えた独自の専門エージェントを定義します |
609
609
  | **[ACP Agents](docs/acp-agents.md)** | Claude Code ACP や Gemini ACP などの外部 ACP 互換エージェントを委譲可能なサブエージェントとして接続します |
610
- | **[Multiplexer Integration](docs/multiplexer-integration.md)** | エージェントの動作を Tmux、Zellij、Herdr cmux のペインでライブ表示します |
610
+ | **[Multiplexer Integration](docs/multiplexer-integration.md)** | エージェントの動作を Tmux、Zellij、Herdr、cmux、や kitty のペインでライブ表示します |
611
611
  | **[Codemap](docs/codemap.md)** | 階層的なコードマップを生成し、大規模コードベースを迅速に理解します |
612
612
  | **[Clonedeps](docs/clonedeps.md)** | 選択した依存関係のソースを ignore 済みのローカルワークスペースにクローンし、調査できるようにします |
613
613
  | **[Worktrees](docs/worktrees.md)** | `.slim/worktrees/` lane を使い、隔離された並列または高リスクなコーディング作業を行います |
package/README.ko-KR.md CHANGED
@@ -44,7 +44,7 @@ oh-my-opencode-slim은 OpenCode용 에이전트 오케스트레이션 플러그
44
44
  - **[Companion](docs/companion.md)** - 병렬 백그라운드 전문 에이전트를 포함해
45
45
  활성 에이전트를 보여 주는 선택적 플로팅 데스크톱 창입니다.
46
46
  - **[멀티플렉서 통합](docs/multiplexer-integration.md)** - Tmux, Zellij,
47
- Herdr 또는 cmux 페인에서 에이전트 작업을 실시간으로 확인합니다.
47
+ Herdr, cmux, 또는 kitty 페인에서 에이전트 작업을 실시간으로 확인합니다.
48
48
  - **[프리셋 전환](docs/preset-switching.md)** - `/preset`으로 실행 중에 팀 전체의
49
49
  모델을 교체합니다.
50
50
  - **[코드 인텔리전스 도구](docs/tools.md)** - 25개 언어를 지원하는 LSP 도구와
@@ -154,7 +154,7 @@ bun run build
154
154
  > 자동 위임이 어떻게 동작하는지 이해하는 것을 **권장**합니다. **[Orchestrator 프롬프트](https://github.com/alvinunreal/oh-my-opencode-slim/blob/master/src/agents/orchestrator.ts#L28)** 에는 위임 규칙, 전문 에이전트 라우팅 로직, 메인 에이전트가 언제 서브에이전트로 작업을 넘겨야 하는지에 대한 임계값이 포함되어 있습니다. 수동으로 위임하려면 `@agentName <task>`로 서브에이전트를 호출하면 됩니다.
155
155
 
156
156
  > [!TIP]
157
- > 이제 백그라운드 에이전트가 기본 워크플로이므로 **[Multiplexer Integration](docs/multiplexer-integration.md)** 을 활성화하고 설정하는 것을 **강력히 권장**합니다. 각 에이전트를 전용 Tmux, Zellij, Herdr 또는 cmux 창에서 자동으로 열어 주기 때문에, Orchestrator가 세션을 계속 조율하는 동안 전문 에이전트들의 작업을 실시간으로 따라볼 수 있습니다.
157
+ > 이제 백그라운드 에이전트가 기본 워크플로이므로 **[Multiplexer Integration](docs/multiplexer-integration.md)** 을 활성화하고 설정하는 것을 **강력히 권장**합니다. 각 에이전트를 전용 Tmux, Zellij, Herdr, cmux, 또는 kitty 창에서 자동으로 열어 주기 때문에, Orchestrator가 세션을 계속 조율하는 동안 전문 에이전트들의 작업을 실시간으로 따라볼 수 있습니다.
158
158
 
159
159
  기본 생성 설정에는 `openai`와 `opencode-go` 프리셋이 모두 포함되어 있습니다.
160
160
 
@@ -628,7 +628,7 @@ bunx oh-my-opencode-slim@latest install --companion=yes
628
628
  | **[Council](docs/council.md)** | `@council`로 여러 모델을 병렬 실행하고 하나의 답변으로 종합 |
629
629
  | **[Custom Agents](docs/configuration.md#custom-agents)** | 커스텀 프롬프트, 모델, MCP 접근, Orchestrator 위임 규칙으로 커스텀 전문 에이전트 정의 |
630
630
  | **[ACP Agents](docs/acp-agents.md)** | Claude Code ACP 또는 Gemini ACP 같은 외부 ACP 호환 에이전트를 위임 가능한 서브에이전트로 연결 |
631
- | **[Multiplexer Integration](docs/multiplexer-integration.md)** | Tmux, Zellij, Herdr 또는 cmux 페인에서 에이전트 작업을 실시간으로 확인 |
631
+ | **[Multiplexer Integration](docs/multiplexer-integration.md)** | Tmux, Zellij, Herdr, cmux, 또는 kitty 페인에서 에이전트 작업을 실시간으로 확인 |
632
632
  | **[Codemap](docs/codemap.md)** | 계층형 코드맵을 생성하여 대규모 코드베이스를 빠르게 파악 |
633
633
  | **[Clonedeps](docs/clonedeps.md)** | 선택한 의존성 소스를 무시된 로컬 워크스페이스에 복제하여 검사 |
634
634
  | **[Worktrees](docs/worktrees.md)** | `.slim/worktrees/` lane을 사용해 격리된 병렬 또는 고위험 코딩 작업 수행 |
package/README.md CHANGED
@@ -43,7 +43,7 @@ The main idea is simple: instead of forcing one model to do everything, the plug
43
43
  - **[Companion](docs/companion.md)** - an optional floating desktop window
44
44
  showing which agents are active, including parallel background specialists.
45
45
  - **[Multiplexer integration](docs/multiplexer-integration.md)** - watch agents
46
- work live in Tmux, Zellij, Herdr, or cmux panes.
46
+ work live in Tmux, Zellij, Herdr, cmux, or kitty panes.
47
47
  - **[Preset switching](docs/preset-switching.md)** - swap the whole team's
48
48
  models at runtime with `/preset`.
49
49
  - **[Code intelligence tools](docs/tools.md)** - LSP tools, AST-aware search
@@ -101,6 +101,13 @@ Install and configure oh-my-opencode-slim: https://raw.githubusercontent.com/alv
101
101
  bunx oh-my-opencode-slim@latest install
102
102
  ```
103
103
 
104
+ The published CLI is a Node-compatible bundle, so `npx` works too if you don't
105
+ have Bun installed:
106
+
107
+ ```bash
108
+ npx oh-my-opencode-slim@latest install
109
+ ```
110
+
104
111
  ### Run from Master
105
112
 
106
113
  Use this if you want the latest code, easier bug fixes, or a local setup for
@@ -155,7 +162,7 @@ Then:
155
162
  > It's **recommended** to understand how background orchestration works. The **[Orchestrator prompt](https://github.com/alvinunreal/oh-my-opencode-slim/blob/master/src/agents/orchestrator.ts#L28)** contains the scheduler rules, specialist routing logic, and thresholds for when work should be assigned to background agents. You can always delegate manually by calling a subagent via: `@agentName <task>`
156
163
 
157
164
  > [!TIP]
158
- > Because background agents are now the default workflow, it is **highly recommended** to enable and configure **[Multiplexer Integration](docs/multiplexer-integration.md)**. It automatically opens each agent in a dedicated Tmux, Zellij, Herdr, or cmux pane, so you can watch specialists work live while the Orchestrator continues coordinating the session.
165
+ > Because background agents are now the default workflow, it is **highly recommended** to enable and configure **[Multiplexer Integration](docs/multiplexer-integration.md)**. It automatically opens each agent in a dedicated Tmux, Zellij, Herdr, cmux, or kitty pane, so you can watch specialists work live while the Orchestrator continues coordinating the session.
159
166
 
160
167
  The default generated configuration includes both `openai` and `opencode-go` presets.
161
168
 
@@ -631,7 +638,7 @@ Use this section as a map: start with installation, then jump to features, confi
631
638
  | **[Council](docs/council.md)** | Run multiple models in parallel and synthesize a single answer with `@council` |
632
639
  | **[Custom Agents](docs/configuration.md#custom-agents)** | Define your own specialists with custom prompts, models, MCP access, and Orchestrator delegation rules |
633
640
  | **[ACP Agents](docs/acp-agents.md)** | Connect external ACP-compatible agents such as Claude Code ACP or Gemini ACP as delegatable subagents |
634
- | **[Multiplexer Integration](docs/multiplexer-integration.md)** | Watch agents work live in Tmux, Zellij, Herdr, or cmux panes |
641
+ | **[Multiplexer Integration](docs/multiplexer-integration.md)** | Watch agents work live in Tmux, Zellij, Herdr, cmux, or kitty panes |
635
642
  | **[Codemap](docs/codemap.md)** | Generate hierarchical codemaps to understand large codebases faster |
636
643
  | **[Clonedeps](docs/clonedeps.md)** | Clone selected dependency source into an ignored local workspace for inspection |
637
644
  | **[Worktrees](docs/worktrees.md)** | Use `.slim/worktrees/` lanes for isolated parallel or risky coding work |
@@ -661,7 +668,7 @@ Use this section as a map: start with installation, then jump to features, confi
661
668
  <p><sub>Every merged contribution leaves a mark on the realm.</sub></p>
662
669
 
663
670
  <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
664
- [![All Contributors](https://img.shields.io/badge/all_contributors-77-orange.svg?style=flat-square)](#contributors-)
671
+ [![All Contributors](https://img.shields.io/badge/all_contributors-79-orange.svg?style=flat-square)](#contributors-)
665
672
  <!-- ALL-CONTRIBUTORS-BADGE:END -->
666
673
  </div>
667
674
 
@@ -774,6 +781,10 @@ Use this section as a map: start with installation, then jump to features, confi
774
781
  <td align="center" valign="top" width="16.66%"><a href="https://github.com/HighColdHC"><img src="https://avatars.githubusercontent.com/u/35870222?v=4?s=100" width="100px;" alt="HighColdHC"/><br /><sub><b>HighColdHC</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=HighColdHC" title="Code">💻</a></td>
775
782
  <td align="center" valign="top" width="16.66%"><a href="https://hardcore.engineer/about"><img src="https://avatars.githubusercontent.com/u/401815?v=4?s=100" width="100px;" alt="Stephan Schielke"/><br /><sub><b>Stephan Schielke</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=stephanschielke" title="Code">💻</a></td>
776
783
  <td align="center" valign="top" width="16.66%"><a href="https://github.com/DanMaly"><img src="https://avatars.githubusercontent.com/u/69809112?v=4?s=100" width="100px;" alt="Daniel Maly"/><br /><sub><b>Daniel Maly</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=DanMaly" title="Code">💻</a></td>
784
+ <td align="center" valign="top" width="16.66%"><a href="https://github.com/Chewji9875"><img src="https://avatars.githubusercontent.com/u/126886556?v=4?s=100" width="100px;" alt="Chewji"/><br /><sub><b>Chewji</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=Chewji9875" title="Code">💻</a></td>
785
+ </tr>
786
+ <tr>
787
+ <td align="center" valign="top" width="16.66%"><a href="https://github.com/DanielMaly"><img src="https://avatars.githubusercontent.com/u/1443921?v=4?s=100" width="100px;" alt="Daniel Maly"/><br /><sub><b>Daniel Maly</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=DanielMaly" title="Code">💻</a></td>
777
788
  </tr>
778
789
  </tbody>
779
790
  </table>
@@ -1,3 +1,3 @@
1
- #!/usr/bin/env bun
1
+ #!/usr/bin/env node
2
2
  import type { InstallArgs } from './types';
3
3
  export declare function parseArgs(args: string[]): InstallArgs;
package/dist/cli/index.js CHANGED
@@ -1,5 +1,4 @@
1
- #!/usr/bin/env bun
2
- // @bun
1
+ #!/usr/bin/env node
3
2
  import { createRequire } from "node:module";
4
3
  var __defProp = Object.defineProperty;
5
4
  var __returnValue = (v) => v;
@@ -468,6 +467,7 @@ var MultiplexerTypeSchema = z2.enum([
468
467
  "tmux",
469
468
  "zellij",
470
469
  "herdr",
470
+ "kitty",
471
471
  "cmux",
472
472
  "none"
473
473
  ]);
@@ -2924,12 +2924,13 @@ init_compat();
2924
2924
  import { spawnSync as spawnSync2 } from "node:child_process";
2925
2925
  import { statSync as statSync4 } from "node:fs";
2926
2926
  var cachedOpenCodePath = null;
2927
- function resolvePathCommand(command) {
2927
+ function resolvePathCommand(command, environment = process.env) {
2928
2928
  try {
2929
2929
  const resolver = process.platform === "win32" ? "where" : "which";
2930
2930
  const result = spawnSync2(resolver, [command], {
2931
2931
  encoding: "utf-8",
2932
- stdio: ["ignore", "pipe", "ignore"]
2932
+ stdio: ["ignore", "pipe", "ignore"],
2933
+ env: environment
2933
2934
  });
2934
2935
  if (result.status !== 0) {
2935
2936
  return null;
@@ -2940,18 +2941,19 @@ function resolvePathCommand(command) {
2940
2941
  return null;
2941
2942
  }
2942
2943
  }
2943
- function canExecute(command, args) {
2944
+ function canExecute(command, args, environment = process.env) {
2944
2945
  try {
2945
2946
  const result = spawnSync2(command, args, {
2946
- stdio: "ignore"
2947
+ stdio: "ignore",
2948
+ env: environment
2947
2949
  });
2948
2950
  return result.status === 0;
2949
2951
  } catch {
2950
2952
  return false;
2951
2953
  }
2952
2954
  }
2953
- function getOpenCodePaths() {
2954
- const home = process.env.HOME || process.env.USERPROFILE || "";
2955
+ function getOpenCodePaths(environment = process.env) {
2956
+ const home = environment.HOME || environment.USERPROFILE || "";
2955
2957
  return [
2956
2958
  "opencode",
2957
2959
  `${home}/.local/bin/opencode`,
@@ -2981,50 +2983,53 @@ function getOpenCodePaths() {
2981
2983
  `${home}/.pnpm-global/bin/opencode`
2982
2984
  ];
2983
2985
  }
2984
- function resolveOpenCodePath() {
2985
- if (cachedOpenCodePath) {
2986
+ function resolveOpenCodePath(environment = process.env) {
2987
+ const useCache = environment === process.env;
2988
+ if (useCache && cachedOpenCodePath) {
2986
2989
  return cachedOpenCodePath;
2987
2990
  }
2988
- const pathOpenCodePath = resolvePathCommand("opencode");
2991
+ const pathOpenCodePath = resolvePathCommand("opencode", environment);
2989
2992
  if (pathOpenCodePath) {
2990
- cachedOpenCodePath = pathOpenCodePath;
2993
+ if (useCache) {
2994
+ cachedOpenCodePath = pathOpenCodePath;
2995
+ }
2991
2996
  return pathOpenCodePath;
2992
2997
  }
2993
- const paths = getOpenCodePaths();
2998
+ const paths = getOpenCodePaths(environment);
2994
2999
  for (const opencodePath of paths) {
2995
3000
  if (opencodePath === "opencode")
2996
3001
  continue;
2997
3002
  try {
2998
3003
  const stat = statSync4(opencodePath);
2999
3004
  if (stat.isFile()) {
3000
- cachedOpenCodePath = opencodePath;
3005
+ if (useCache) {
3006
+ cachedOpenCodePath = opencodePath;
3007
+ }
3001
3008
  return opencodePath;
3002
3009
  }
3003
3010
  } catch {}
3004
3011
  }
3005
3012
  return "opencode";
3006
3013
  }
3007
- async function isOpenCodeInstalled() {
3008
- const pathOpenCodePath = resolvePathCommand("opencode");
3009
- if (pathOpenCodePath && canExecute(pathOpenCodePath, ["--version"])) {
3010
- cachedOpenCodePath = pathOpenCodePath;
3014
+ async function isOpenCodeInstalled(environment = process.env) {
3015
+ const useCache = environment === process.env;
3016
+ const pathOpenCodePath = resolvePathCommand("opencode", environment);
3017
+ if (pathOpenCodePath && canExecute(pathOpenCodePath, ["--version"], environment)) {
3018
+ if (useCache) {
3019
+ cachedOpenCodePath = pathOpenCodePath;
3020
+ }
3011
3021
  return true;
3012
3022
  }
3013
- const paths = getOpenCodePaths();
3023
+ const paths = getOpenCodePaths(environment);
3014
3024
  for (const opencodePath of paths) {
3015
3025
  if (opencodePath === "opencode")
3016
3026
  continue;
3017
- try {
3018
- const proc = crossSpawn([opencodePath, "--version"], {
3019
- stdout: "pipe",
3020
- stderr: "pipe"
3021
- });
3022
- await proc.exited;
3023
- if (proc.exitCode === 0) {
3027
+ if (canExecute(opencodePath, ["--version"], environment)) {
3028
+ if (useCache) {
3024
3029
  cachedOpenCodePath = opencodePath;
3025
- return true;
3026
3030
  }
3027
- } catch {}
3031
+ return true;
3032
+ }
3028
3033
  }
3029
3034
  return false;
3030
3035
  }
@@ -3437,15 +3442,6 @@ async function install(args) {
3437
3442
  return runInstall(config);
3438
3443
  }
3439
3444
 
3440
- // src/cli/providers.ts
3441
- var GENERATED_PRESETS2 = ["openai", "opencode-go"];
3442
- function isGeneratedPresetName2(value) {
3443
- return GENERATED_PRESETS2.includes(value);
3444
- }
3445
- function getGeneratedPresetNames2() {
3446
- return [...GENERATED_PRESETS2];
3447
- }
3448
-
3449
3445
  // src/cli/index.ts
3450
3446
  function parseArgs(args) {
3451
3447
  const result = {
@@ -3467,8 +3463,8 @@ function parseArgs(args) {
3467
3463
  result.companion = mode;
3468
3464
  } else if (arg.startsWith("--preset=")) {
3469
3465
  const preset = arg.split("=")[1];
3470
- if (!isGeneratedPresetName2(preset)) {
3471
- console.error(`Unsupported preset: ${preset}. Available presets: ${getGeneratedPresetNames2().join(", ")}`);
3466
+ if (!isGeneratedPresetName(preset)) {
3467
+ console.error(`Unsupported preset: ${preset}. Available presets: ${getGeneratedPresetNames().join(", ")}`);
3472
3468
  process.exit(1);
3473
3469
  }
3474
3470
  result.preset = preset;
@@ -3519,7 +3515,7 @@ Options:
3519
3515
  Doctor options:
3520
3516
  --json Print diagnostics as JSON
3521
3517
 
3522
- Available presets: ${getGeneratedPresetNames2().join(", ")}
3518
+ Available presets: ${getGeneratedPresetNames().join(", ")}
3523
3519
 
3524
3520
  The installer generates OpenAI and OpenCode Go presets by default.
3525
3521
  OpenAI is active unless --preset selects another generated preset.
@@ -1,5 +1,5 @@
1
- export declare function resolveOpenCodePath(): string;
2
- export declare function isOpenCodeInstalled(): Promise<boolean>;
1
+ export declare function resolveOpenCodePath(environment?: NodeJS.ProcessEnv): string;
2
+ export declare function isOpenCodeInstalled(environment?: NodeJS.ProcessEnv): Promise<boolean>;
3
3
  export declare function isTmuxInstalled(): Promise<boolean>;
4
4
  export declare function getOpenCodeVersion(): Promise<string | null>;
5
5
  export declare function getOpenCodePath(): string | null;
@@ -13,7 +13,6 @@ export declare const DEFAULT_MODELS: Record<AgentName, string | undefined>;
13
13
  export declare const POLL_INTERVAL_MS = 500;
14
14
  export declare const POLL_INTERVAL_BACKGROUND_MS = 2000;
15
15
  export declare const MAX_POLL_TIME_MS: number;
16
- export declare const DEFAULT_MAX_SUBAGENT_DEPTH = 3;
17
16
  export declare const PHASE_REMINDER_TEXT = "!IMPORTANT! Scheduler workflow: First choose the lightest workflow that fits the work. If direct execution is justified, complete it and verify proportionately. Otherwise: plan lanes/dependencies \u2192 dispatch background specialists \u2192 track task IDs \u2192 wait for hook-driven completion \u2192 reconcile terminal results \u2192 verify. Do not poll running jobs, consume running-job output, or advance dependent work. !END!";
18
17
  export declare function formatSystemReminder(text: string): string;
19
18
  export declare const PHASE_REMINDER: string;
@@ -335,6 +335,7 @@ export declare const MultiplexerTypeSchema: z.ZodEnum<{
335
335
  tmux: "tmux";
336
336
  zellij: "zellij";
337
337
  herdr: "herdr";
338
+ kitty: "kitty";
338
339
  cmux: "cmux";
339
340
  none: "none";
340
341
  }>;
@@ -366,6 +367,7 @@ export declare const MultiplexerConfigSchema: z.ZodObject<{
366
367
  tmux: "tmux";
367
368
  zellij: "zellij";
368
369
  herdr: "herdr";
370
+ kitty: "kitty";
369
371
  cmux: "cmux";
370
372
  none: "none";
371
373
  }>>;
@@ -968,6 +970,7 @@ export declare const PluginConfigSchema: z.ZodObject<{
968
970
  tmux: "tmux";
969
971
  zellij: "zellij";
970
972
  herdr: "herdr";
973
+ kitty: "kitty";
971
974
  cmux: "cmux";
972
975
  none: "none";
973
976
  }>>;
@@ -7,16 +7,14 @@
7
7
  import type { PluginInput } from '@opencode-ai/plugin';
8
8
  import type { PluginConfig } from '../config';
9
9
  import type { CouncilResult } from '../config/council-schema';
10
- import type { SubagentDepthTracker } from '../utils/subagent-depth';
11
10
  export declare class CouncilManager {
12
11
  private client;
13
12
  private directory;
14
13
  private config?;
15
- private depthTracker?;
16
14
  private tmuxEnabled;
17
15
  private deprecatedFields?;
18
16
  private legacyMasterModel?;
19
- constructor(ctx: PluginInput, config?: PluginConfig, depthTracker?: SubagentDepthTracker, tmuxEnabled?: boolean);
17
+ constructor(ctx: PluginInput, config?: PluginConfig, tmuxEnabled?: boolean);
20
18
  /** Return deprecated config fields detected during parsing (for tool warnings). */
21
19
  getDeprecatedFields(): string[] | undefined;
22
20
  /** Return the legacy master.model if it was used as fallback. */
@@ -18,7 +18,10 @@ export declare function createTaskSessionManagerHook(_ctx: PluginInput, options:
18
18
  * model fallback rather than natural completion. */
19
19
  isFallbackInProgress?: (sessionID: string) => boolean;
20
20
  coordinator?: SessionLifecycle;
21
+ /** Test seam only; production always uses the reconciliation delay. */
22
+ idleReconcileDelayMs?: number;
21
23
  }): {
24
+ observeChatMessage: (input: unknown, output: unknown) => void;
22
25
  'tool.execute.before': (input: {
23
26
  tool: string;
24
27
  sessionID?: string;
@@ -8,6 +8,8 @@ export interface PendingTaskCall {
8
8
  export declare function createPendingCallTracker(): {
9
9
  add(call: PendingTaskCall): void;
10
10
  take(callId?: string, parentSessionId?: string): PendingTaskCall | undefined;
11
+ /** Peek oldest pending call for a parent without removing it. */
12
+ peekByParent(parentSessionId: string): PendingTaskCall | undefined;
11
13
  clearSession(sessionId: string): void;
12
14
  pendingCallId(sessionID?: string, callID?: string): string;
13
15
  };
@@ -0,0 +1,17 @@
1
+ type EventInput = {
2
+ event: {
3
+ type: string;
4
+ properties?: {
5
+ info?: {
6
+ id?: string;
7
+ };
8
+ sessionID?: string;
9
+ };
10
+ };
11
+ };
12
+ /**
13
+ * Invalidate task continuations before multiplexer event handling and disposal
14
+ * cleanup.
15
+ */
16
+ export declare function handleTaskSessionEvent(input: EventInput, invalidateTaskSessions: (input: EventInput) => Promise<void>, handleMultiplexerEvent: () => Promise<void>, cleanupInstance: () => Promise<void>): Promise<void>;
17
+ export {};