oh-my-opencode-slim 2.0.1 → 2.0.2

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 (39) hide show
  1. package/README.ja-JP.md +30 -1
  2. package/README.ko-KR.md +30 -1
  3. package/README.md +36 -1
  4. package/README.zh-CN.md +30 -1
  5. package/dist/agents/orchestrator.d.ts +0 -2
  6. package/dist/cli/index.js +22 -34
  7. package/dist/config/agent-mcps.d.ts +0 -4
  8. package/dist/config/constants.d.ts +1 -7
  9. package/dist/config/council-schema.d.ts +0 -15
  10. package/dist/config/runtime-preset.d.ts +0 -1
  11. package/dist/config/schema.d.ts +2 -68
  12. package/dist/hooks/auto-update-checker/skill-sync.d.ts +9 -0
  13. package/dist/hooks/filter-available-skills/index.d.ts +1 -13
  14. package/dist/hooks/foreground-fallback/index.d.ts +1 -1
  15. package/dist/hooks/image-hook.d.ts +1 -13
  16. package/dist/hooks/index.d.ts +3 -2
  17. package/dist/hooks/phase-reminder/index.d.ts +10 -16
  18. package/dist/hooks/reflect/index.d.ts +13 -0
  19. package/dist/hooks/task-session-manager/index.d.ts +2 -16
  20. package/dist/hooks/types.d.ts +23 -0
  21. package/dist/index.js +391 -289
  22. package/dist/tui.js +16 -25
  23. package/dist/utils/agent-variant.d.ts +0 -40
  24. package/dist/utils/compat.d.ts +0 -1
  25. package/dist/utils/guards.d.ts +4 -0
  26. package/dist/utils/index.d.ts +1 -2
  27. package/dist/utils/logger.d.ts +1 -1
  28. package/dist/utils/task.d.ts +0 -2
  29. package/oh-my-opencode-slim.schema.json +2 -249
  30. package/package.json +1 -1
  31. package/src/skills/codemap.md +4 -1
  32. package/src/skills/reflect/SKILL.md +193 -0
  33. package/src/skills/worktrees/SKILL.md +164 -0
  34. package/dist/config/fallback-chains.d.ts +0 -1
  35. package/dist/hooks/apply-patch/patch.d.ts +0 -2
  36. package/dist/hooks/delegate-task-retry/guidance.d.ts +0 -2
  37. package/dist/hooks/delegate-task-retry/index.d.ts +0 -4
  38. package/dist/hooks/json-error-recovery/index.d.ts +0 -1
  39. package/dist/utils/env.d.ts +0 -1
package/README.ja-JP.md CHANGED
@@ -164,6 +164,8 @@ V2 は oh-my-opencode-slim を、スケジューラー中心のマルチエー
164
164
  - **[バックグラウンドエージェント](#バックグラウンドエージェント)** — Orchestrator は専門家をバックグラウンドタスクとしてディスパッチし、タスク/セッション ID を追跡し、完了イベントを待ってから結果を整合します。
165
165
  - **[Companion](#companion)** — 任意のフローティングデスクトップウィンドウが、並列実行中のバックグラウンド専門家を含め、現在アクティブなエージェントを表示します。
166
166
  - **[Deepwork](#deepwork)** — 大規模、多ファイル、高リスク、または段階的なコーディング作業向けの構造化ワークフローです。永続的な計画ファイルと Oracle レビューゲートを使用します。
167
+ - **[Reflect](#reflect)** — 繰り返される作業パターンを振り返り、再利用可能な skill、エージェント、コマンド、設定ルール、プロンプトルール、プロジェクト playbook を提案します。
168
+ - **[Worktrees](#worktrees)** — 複雑、高リスク、または並列タスク向けに、安全プロトコル付きの隔離されたコーディング lane として Git worktree を管理します。
167
169
  - **[oh-my-opencode-slim Skill](#oh-my-opencode-slim-skill)** — モデル、プロンプト、カスタムエージェント、MCP アクセス、プリセット、プラグイン動作を安全に調整するための同梱設定 skill です。
168
170
 
169
171
  #### バックグラウンドエージェント
@@ -201,6 +203,32 @@ Deepwork は、大規模リファクタリング、多段階機能、高リス
201
203
 
202
204
  いつ使うべきか、ワークフローがどのように動くかは **[Skills](docs/skills.md#deepwork)** を参照してください。
203
205
 
206
+ #### Reflect
207
+
208
+ Reflect は、Orchestrator が繰り返し発生するワークフロー上の摩擦から学ぶのを助けます。最近の作業と既存の資産を確認し、skill、カスタムエージェント、コマンド、設定ルール、プロンプトルール、MCP 権限変更、プロジェクト playbook の中から、最小で有用な改善を提案します。十分な証拠がない場合は、何も作成しないことを推奨します。
209
+
210
+ 直接実行できます。
211
+
212
+ ```text
213
+ /reflect
214
+ /reflect release workflow and checks
215
+ ```
216
+
217
+ 自然なプロンプトでも利用できます。
218
+
219
+ ```text
220
+ reflect on my recent workflows
221
+ find repeated work worth turning into reusable instructions
222
+ ```
223
+
224
+ 完全なワークフローとガードレールは **[Skills](docs/skills.md#reflect)** を参照してください。
225
+
226
+ #### Worktrees
227
+
228
+ Worktrees は、Git worktree を `.slim/worktrees/<slug>/` 配下の安全で隔離されたコーディング lane として管理します。Orchestrator が lane のライフサイクルを管理し、`.slim/worktrees.json` に状態を記録し、専門エージェントを lane 内で実行し、Git の状態を変更する前に明示的な確認を求めます。
229
+
230
+ 安全プロトコルは **[Skills](docs/skills.md#worktrees)** を参照してください。
231
+
204
232
  #### oh-my-opencode-slim Skill
205
233
 
206
234
  同梱の `oh-my-opencode-slim` skill は、Orchestrator がプラグイン自体を設定・改善するのを支援します。モデル調整、カスタムエージェント、プロンプト上書き、skill/MCP 権限、プリセット、任意エージェント、バックグラウンドオーケストレーション、繰り返し発生するワークフロー上の摩擦に利用できます。
@@ -570,6 +598,7 @@ Deepwork は、大規模リファクタリング、多段階機能、高リス
570
598
  | **[Multiplexer Integration](docs/multiplexer-integration.md)** | エージェントの動作を Tmux や Zellij のペインでライブ表示します |
571
599
  | **[Codemap](docs/codemap.md)** | 階層的なコードマップを生成し、大規模コードベースを迅速に理解します |
572
600
  | **[Clonedeps](docs/clonedeps.md)** | 選択した依存関係のソースを ignore 済みのローカルワークスペースにクローンし、調査できるようにします |
601
+ | **[Worktrees](docs/worktrees.md)** | `.slim/worktrees/` lane を使い、隔離された並列または高リスクなコーディング作業を行います |
573
602
  | **[Preset Switching](docs/preset-switching.md)** | `/preset` で実行時にエージェントモデルのプリセットを切り替えます |
574
603
  | **[Interview](docs/interview.md)** | ブラウザベースの Q&A フローで、ざっくりとしたアイデアを構造化された Markdown 仕様に変換します |
575
604
  | **[Companion](docs/companion.md)** | 解析、ヘルプ、型情報のためのフローティングウィンドウ companion |
@@ -582,7 +611,7 @@ Deepwork は、大規模リファクタリング、多段階機能、高リス
582
611
  | **[Configuration](docs/configuration.md)** | 設定ファイルの配置場所、JSONC サポート、プロンプトの上書き、全オプションのリファレンス |
583
612
  | **[Background Orchestration](docs/background-orchestration.md)** | ネイティブのバックグラウンドサブエージェントを中心にした、スケジューラー優先の Orchestrator モデル |
584
613
  | **[Maintainer Guide](docs/maintainers.md)** | Issue のトリアージルール、ラベルの意味、サポートの振り分け、リポジトリ運用ワークフロー |
585
- | **[Skills](docs/skills.md)** | `simplify`、`codemap`、`clonedeps`、`deepwork`、`oh-my-opencode-slim` などの同梱スキル |
614
+ | **[Skills](docs/skills.md)** | `simplify`、`codemap`、`clonedeps`、`deepwork`、`reflect`、`worktrees`、`oh-my-opencode-slim` などの同梱スキル |
586
615
  | **[MCPs](docs/mcps.md)** | `websearch`、`context7`、`gh_grep`、およびエージェントごとの MCP 権限の仕組み |
587
616
  | **[Tools](docs/tools.md)** | `webfetch`、LSP ツール、コード検索、フォーマッターなどの組み込みツール機能 |
588
617
 
package/README.ko-KR.md CHANGED
@@ -162,6 +162,8 @@ V2는 oh-my-opencode-slim을 스케줄러 중심의 멀티 에이전트 워크
162
162
  - **[백그라운드 에이전트](#백그라운드-에이전트)** — Orchestrator가 전문가를 백그라운드 작업으로 디스패치하고, 작업/세션 ID를 추적하며, 완료 이벤트를 기다린 뒤 결과를 조정합니다.
163
163
  - **[Companion](#companion)** — 선택 사항인 플로팅 데스크톱 창이 병렬 백그라운드 전문가를 포함해 현재 활성 에이전트를 보여줍니다.
164
164
  - **[Deepwork](#deepwork)** — 대규모, 다중 파일, 위험도가 높거나 단계적인 코딩 작업을 위한 구조화된 워크플로입니다. 지속적인 계획 파일과 Oracle 리뷰 게이트를 사용합니다.
165
+ - **[Reflect](#reflect)** — 반복되는 작업 패턴을 돌아보고 재사용 가능한 skill, 에이전트, 명령, 설정 규칙, 프롬프트 규칙, 프로젝트 playbook을 제안합니다.
166
+ - **[Worktrees](#worktrees)** — 복잡하거나 위험하거나 병렬로 진행되는 작업을 위해 Git worktree를 안전 프로토콜이 있는 격리된 코딩 lane으로 관리합니다.
165
167
  - **[oh-my-opencode-slim Skill](#oh-my-opencode-slim-skill)** — 모델, 프롬프트, 커스텀 에이전트, MCP 접근, 프리셋, 플러그인 동작을 안전하게 조정하는 번들 설정 skill입니다.
166
168
 
167
169
  #### 백그라운드 에이전트
@@ -199,6 +201,32 @@ Deepwork는 대규모 리팩터링, 다단계 기능, 위험한 아키텍처 변
199
201
 
200
202
  사용 시점과 워크플로 동작 방식은 **[Skills](docs/skills.md#deepwork)** 를 참고하세요.
201
203
 
204
+ #### Reflect
205
+
206
+ Reflect는 Orchestrator가 반복되는 워크플로 마찰에서 배우도록 돕습니다. 최근 작업과 기존 자산을 검토한 뒤 skill, 커스텀 에이전트, 명령, 설정 규칙, 프롬프트 규칙, MCP 권한 변경, 프로젝트 playbook 중 가장 작고 유용한 개선안을 제안합니다. 근거가 부족하면 아무것도 만들지 않는 것을 권장해야 합니다.
207
+
208
+ 직접 실행할 수 있습니다.
209
+
210
+ ```text
211
+ /reflect
212
+ /reflect release workflow and checks
213
+ ```
214
+
215
+ 자연어 프롬프트로도 사용할 수 있습니다.
216
+
217
+ ```text
218
+ reflect on my recent workflows
219
+ find repeated work worth turning into reusable instructions
220
+ ```
221
+
222
+ 전체 워크플로와 가드레일은 **[Skills](docs/skills.md#reflect)** 를 참고하세요.
223
+
224
+ #### Worktrees
225
+
226
+ Worktrees는 Git worktree를 `.slim/worktrees/<slug>/` 아래의 안전하고 격리된 코딩 lane으로 관리합니다. Orchestrator가 lane의 생명주기를 관리하고, `.slim/worktrees.json`에 상태를 추적하며, 전문가 에이전트를 lane 안에서 실행하고, Git 상태를 변경하기 전에 명시적인 확인을 요구합니다.
227
+
228
+ 안전 프로토콜은 **[Skills](docs/skills.md#worktrees)** 를 참고하세요.
229
+
202
230
  #### oh-my-opencode-slim Skill
203
231
 
204
232
  번들된 `oh-my-opencode-slim` skill은 Orchestrator가 플러그인 자체를 설정하고 개선하도록 돕습니다. 모델 튜닝, 커스텀 에이전트, 프롬프트 오버라이드, skill/MCP 권한, 프리셋, 선택적 에이전트, 백그라운드 오케스트레이션, 반복되는 워크플로 마찰에 사용할 수 있습니다.
@@ -568,6 +596,7 @@ Deepwork는 대규모 리팩터링, 다단계 기능, 위험한 아키텍처 변
568
596
  | **[Multiplexer Integration](docs/multiplexer-integration.md)** | Tmux 또는 Zellij 페인에서 에이전트 작업을 실시간으로 확인 |
569
597
  | **[Codemap](docs/codemap.md)** | 계층형 코드맵을 생성하여 대규모 코드베이스를 빠르게 파악 |
570
598
  | **[Clonedeps](docs/clonedeps.md)** | 선택한 의존성 소스를 무시된 로컬 워크스페이스에 복제하여 검사 |
599
+ | **[Worktrees](docs/worktrees.md)** | `.slim/worktrees/` lane을 사용해 격리된 병렬 또는 고위험 코딩 작업 수행 |
571
600
  | **[Preset Switching](docs/preset-switching.md)** | `/preset`으로 런타임에 에이전트 모델 프리셋 전환 |
572
601
  | **[Interview](docs/interview.md)** | 브라우저 기반 Q&A 흐름을 통해 거친 아이디어를 구조화된 마크다운 명세로 변환 |
573
602
  | **[Companion](docs/companion.md)** | 파싱, 도움말, 타입을 위한 플로팅 창 companion |
@@ -580,7 +609,7 @@ Deepwork는 대규모 리팩터링, 다단계 기능, 위험한 아키텍처 변
580
609
  | **[Configuration](docs/configuration.md)** | 설정 파일 위치, JSONC 지원, 프롬프트 오버라이드, 전체 옵션 레퍼런스 |
581
610
  | **[Background Orchestration](docs/background-orchestration.md)** | 네이티브 백그라운드 서브에이전트를 기반으로 한 스케줄러 우선 Orchestrator 모델 |
582
611
  | **[Maintainer Guide](docs/maintainers.md)** | 이슈 트리아지 규칙, 라벨 의미, 지원 라우팅, 저장소 유지보수 워크플로우 |
583
- | **[Skills](docs/skills.md)** | `simplify`, `codemap`, `clonedeps`, `deepwork`, `oh-my-opencode-slim` 등 번들된 스킬 |
612
+ | **[Skills](docs/skills.md)** | `simplify`, `codemap`, `clonedeps`, `deepwork`, `reflect`, `worktrees`, `oh-my-opencode-slim` 등 번들된 스킬 |
584
613
  | **[MCPs](docs/mcps.md)** | `websearch`, `context7`, `gh_grep` 및 에이전트별 MCP 권한 동작 방식 |
585
614
  | **[Tools](docs/tools.md)** | `webfetch`, LSP 도구, 코드 검색, 포매터 등 내장 도구 기능 |
586
615
 
package/README.md CHANGED
@@ -165,6 +165,10 @@ verification while specialists do the work in their own lanes.
165
165
  agents are currently active, including parallel background specialists.
166
166
  - **[Deepwork](#deepwork)** — a structured workflow for large, multi-file, risky,
167
167
  or phased coding work using persistent plan files and Oracle review gates.
168
+ - **[Reflect](#reflect)** — reviews repeated work patterns and suggests reusable skills,
169
+ agents, commands, config rules, prompt rules, or project playbooks.
170
+ - **[Worktrees](#worktrees)** — manages Git worktrees as isolated coding lanes
171
+ with safety protocols for complex, risky, or parallel tasks.
168
172
  - **[oh-my-opencode-slim skill](#oh-my-opencode-slim-skill)** — a bundled
169
173
  configuration skill that helps tune models, prompts, custom agents, MCP access,
170
174
  presets, and plugin behavior safely.
@@ -215,6 +219,36 @@ Start it with:
215
219
  See **[Skills](docs/skills.md#deepwork)** for when to use it and how the workflow
216
220
  runs.
217
221
 
222
+ #### Reflect
223
+
224
+ Reflect helps the Orchestrator learn from repeated workflow friction. It reviews
225
+ recent work and existing assets, then recommends the smallest useful improvement:
226
+ a skill, custom agent, command, config rule, prompt rule, MCP permission change,
227
+ or project playbook. If there is not enough evidence, it should recommend
228
+ creating nothing.
229
+
230
+ Use it directly with:
231
+
232
+ ```text
233
+ /reflect
234
+ /reflect release workflow and checks
235
+ ```
236
+
237
+ Or with natural prompts like:
238
+
239
+ ```text
240
+ reflect on my recent workflows
241
+ find repeated work worth turning into reusable instructions
242
+ ```
243
+
244
+ See **[Skills](docs/skills.md#reflect)** for the full workflow and guardrails.
245
+
246
+ #### Worktrees
247
+
248
+ Worktrees manages Git worktrees as safe, isolated coding lanes under `.slim/worktrees/<slug>/`. The Orchestrator manages the lifecycle of these lanes, tracks state in `.slim/worktrees.json`, dispatches specialist agents inside them, and requires explicit confirmation before mutating git state.
249
+
250
+ See **[Skills](docs/skills.md#worktrees)** for the safety protocol.
251
+
218
252
  #### oh-my-opencode-slim Skill
219
253
 
220
254
  The bundled `oh-my-opencode-slim` skill helps the Orchestrator configure and
@@ -588,6 +622,7 @@ Use this section as a map: start with installation, then jump to features, confi
588
622
  | **[Multiplexer Integration](docs/multiplexer-integration.md)** | Watch agents work live in Tmux or Zellij panes |
589
623
  | **[Codemap](docs/codemap.md)** | Generate hierarchical codemaps to understand large codebases faster |
590
624
  | **[Clonedeps](docs/clonedeps.md)** | Clone selected dependency source into an ignored local workspace for inspection |
625
+ | **[Worktrees](docs/worktrees.md)** | Use `.slim/worktrees/` lanes for isolated parallel or risky coding work |
591
626
  | **[Preset Switching](docs/preset-switching.md)** | Switch agent model presets at runtime with `/preset` |
592
627
  | **[Interview](docs/interview.md)** | Turn rough ideas into a structured markdown spec through a browser-based Q&A flow |
593
628
  | **[Companion](docs/companion.md)** | Floating window companion for parsing, help, and types |
@@ -600,7 +635,7 @@ Use this section as a map: start with installation, then jump to features, confi
600
635
  | **[Configuration](docs/configuration.md)** | Config file locations, JSONC support, prompt overrides, and full option reference |
601
636
  | **[Background Orchestration](docs/background-orchestration.md)** | Scheduler-first orchestrator model built around native background subagents |
602
637
  | **[Maintainer Guide](docs/maintainers.md)** | Issue triage rules, label meanings, support routing, and repo maintenance workflow |
603
- | **[Skills](docs/skills.md)** | Bundled skills such as `simplify`, `codemap`, `clonedeps`, `deepwork`, and `oh-my-opencode-slim` |
638
+ | **[Skills](docs/skills.md)** | Bundled skills such as `simplify`, `codemap`, `clonedeps`, `deepwork`, `reflect`, `worktrees`, and `oh-my-opencode-slim` |
604
639
  | **[MCPs](docs/mcps.md)** | `websearch`, `context7`, `gh_grep`, and how MCP permissions work per agent |
605
640
  | **[Tools](docs/tools.md)** | Built-in tool capabilities like `webfetch`, LSP tools, code search, and formatters |
606
641
 
package/README.zh-CN.md CHANGED
@@ -159,6 +159,8 @@ V2 将 oh-my-opencode-slim 变成了以调度器为核心的多智能体工作
159
159
  - **[后台智能体](#后台智能体)** — Orchestrator 现在会把专家作为后台任务派发,跟踪任务/会话 ID,等待完成事件,并在继续之前整合结果。
160
160
  - **[Companion](#companion)** — 可选的浮动桌面窗口会显示当前活跃的智能体,包括并行运行的后台专家。
161
161
  - **[Deepwork](#deepwork)** — 面向大型、多文件、高风险或分阶段编码工作的结构化工作流,使用持久化计划文件和 Oracle 评审关卡。
162
+ - **[Reflect](#reflect)** — 回顾重复出现的工作模式,并建议可复用的 skill、智能体、命令、配置规则、提示词规则或项目 playbook。
163
+ - **[Worktrees](#worktrees)** — 将 Git worktree 作为隔离编码通道管理,并为复杂、高风险或并行任务提供安全协议。
162
164
  - **[oh-my-opencode-slim Skill](#oh-my-opencode-slim-skill)** — 随包提供的配置技能,可安全调优模型、提示词、自定义智能体、MCP 访问、预设和插件行为。
163
165
 
164
166
  #### 后台智能体
@@ -196,6 +198,32 @@ Deepwork 适用于重型编码会话:大范围重构、多阶段功能、高
196
198
 
197
199
  何时使用以及工作流如何运行,请参阅 **[Skills](docs/skills.md#deepwork)**。
198
200
 
201
+ #### Reflect
202
+
203
+ Reflect 帮助 Orchestrator 从重复出现的工作流摩擦中学习。它会回顾近期工作和现有资产,然后建议最小且有用的改进:skill、自定义智能体、命令、配置规则、提示词规则、MCP 权限变更或项目 playbook。如果证据不足,它应建议什么都不创建。
204
+
205
+ 直接使用:
206
+
207
+ ```text
208
+ /reflect
209
+ /reflect release workflow and checks
210
+ ```
211
+
212
+ 也可以使用自然语言提示:
213
+
214
+ ```text
215
+ reflect on my recent workflows
216
+ find repeated work worth turning into reusable instructions
217
+ ```
218
+
219
+ 完整工作流和安全规则见 **[Skills](docs/skills.md#reflect)**。
220
+
221
+ #### Worktrees
222
+
223
+ Worktrees 将 Git worktree 作为安全、隔离的编码通道管理,默认位于 `.slim/worktrees/<slug>/`。Orchestrator 负责这些通道的生命周期,在 `.slim/worktrees.json` 中跟踪状态,在通道内调度专家智能体,并在修改 Git 状态前要求明确确认。
224
+
225
+ 安全协议见 **[Skills](docs/skills.md#worktrees)**。
226
+
199
227
  #### oh-my-opencode-slim Skill
200
228
 
201
229
  内置的 `oh-my-opencode-slim` skill 可帮助 Orchestrator 配置和改进插件本身。可用于模型调优、自定义智能体、提示词覆盖、skill/MCP 权限、预设、可选智能体、后台编排以及反复出现的工作流摩擦。
@@ -565,6 +593,7 @@ Deepwork 适用于重型编码会话:大范围重构、多阶段功能、高
565
593
  | **[多路复用器集成](docs/multiplexer-integration.md)** | 在 Tmux 或 Zellij 窗格中实时观看智能体工作 |
566
594
  | **[Codemap](docs/codemap.md)** | 生成层级代码地图,更快理解大型代码库 |
567
595
  | **[Clonedeps](docs/clonedeps.md)** | 将选定的依赖源码克隆到被忽略的本地工作区中以供检查 |
596
+ | **[Worktrees](docs/worktrees.md)** | 使用 `.slim/worktrees/` 通道进行隔离的并行或高风险编码工作 |
568
597
  | **[预设切换](docs/preset-switching.md)** | 使用 `/preset` 在运行时切换智能体模型预设 |
569
598
  | **[Interview](docs/interview.md)** | 通过基于浏览器的问答流程,将粗略想法转成结构化 markdown 规格 |
570
599
  | **[Companion](docs/companion.md)** | 用于解析、帮助和类型信息的浮动窗口 companion |
@@ -577,7 +606,7 @@ Deepwork 适用于重型编码会话:大范围重构、多阶段功能、高
577
606
  | **[配置](docs/configuration.md)** | 配置文件位置、JSONC 支持、提示词覆盖和完整选项参考 |
578
607
  | **[后台编排](docs/background-orchestration.md)** | 围绕原生后台子智能体构建的调度器优先 Orchestrator 模型 |
579
608
  | **[维护者指南](docs/maintainers.md)** | issue 分流规则、标签含义、支持路由和仓库维护工作流 |
580
- | **[Skills](docs/skills.md)** | `simplify`、`codemap`、`clonedeps`、`deepwork` 和 `oh-my-opencode-slim` 等捆绑技能 |
609
+ | **[Skills](docs/skills.md)** | `simplify`、`codemap`、`clonedeps`、`deepwork`、`reflect`、`worktrees` 和 `oh-my-opencode-slim` 等捆绑技能 |
581
610
  | **[MCPs](docs/mcps.md)** | `websearch`、`context7`、`gh_grep` 以及每个智能体的 MCP 权限机制 |
582
611
  | **[Tools](docs/tools.md)** | `webfetch`、LSP 工具、代码搜索和格式化工具等内置工具能力 |
583
612
 
@@ -22,8 +22,6 @@ export declare function resolvePrompt(base: string, customPrompt?: string, custo
22
22
  * @returns The complete orchestrator prompt string
23
23
  */
24
24
  export declare function buildOrchestratorPrompt(disabledAgents?: Set<string>): string;
25
- /** @deprecated Use buildOrchestratorPrompt() instead */
26
- export declare const ORCHESTRATOR_PROMPT: string;
27
25
  export declare function createOrchestratorAgent(model?: string | Array<string | {
28
26
  id: string;
29
27
  variant?: string;
package/dist/cli/index.js CHANGED
@@ -21,7 +21,6 @@ var __require = /* @__PURE__ */ createRequire(import.meta.url);
21
21
  // src/utils/compat.ts
22
22
  var exports_compat = {};
23
23
  __export(exports_compat, {
24
- isBun: () => isBun,
25
24
  crossWrite: () => crossWrite,
26
25
  crossSpawn: () => crossSpawn
27
26
  });
@@ -72,10 +71,7 @@ function crossSpawn(command, options) {
72
71
  async function crossWrite(path, data) {
73
72
  await fsWriteFile(path, Buffer.from(data));
74
73
  }
75
- var isBun;
76
- var init_compat = __esm(() => {
77
- isBun = typeof globalThis.Bun !== "undefined";
78
- });
74
+ var init_compat = () => {};
79
75
 
80
76
  // src/utils/zip-extractor.ts
81
77
  var exports_zip_extractor = {};
@@ -306,11 +302,11 @@ var SUBAGENT_NAMES = [
306
302
  "council",
307
303
  "councillor"
308
304
  ];
309
- var ORCHESTRATOR_NAME = "orchestrator";
310
- var ALL_AGENT_NAMES = [ORCHESTRATOR_NAME, ...SUBAGENT_NAMES];
305
+ var ALL_AGENT_NAMES = ["orchestrator", ...SUBAGENT_NAMES];
311
306
  var PROTECTED_AGENTS = new Set(["orchestrator", "councillor"]);
312
- var DEFAULT_TIMEOUT_MS = 2 * 60 * 1000;
313
307
  var MAX_POLL_TIME_MS = 5 * 60 * 1000;
308
+ var PHASE_REMINDER_TEXT = `!IMPORTANT! Scheduler workflow: plan lanes/dependencies → dispatch background specialists → track task IDs → wait for hook-driven completion → reconcile terminal results → verify. Do not poll running jobs, consume running-job output, or advance dependent work. !END!`;
309
+ var PHASE_REMINDER = `<internal_reminder>${PHASE_REMINDER_TEXT}</internal_reminder>`;
314
310
  // src/config/council-schema.ts
315
311
  import { z } from "zod";
316
312
  var ModelIdSchema = z.string().regex(/^[^/\s]+\/[^\s]+$/, 'Expected provider/model format (e.g. "openai/gpt-5.4-mini")');
@@ -357,17 +353,11 @@ var CouncilConfigSchema = z.object({
357
353
  default_preset: z.string().default("default"),
358
354
  councillor_execution_mode: CouncillorExecutionModeSchema.describe('Execution mode for councillors. "serial" runs them one at a time (required for single-model systems). "parallel" runs them concurrently (default, faster for multi-model systems).'),
359
355
  councillor_retries: z.number().int().min(0).max(5).default(3).describe("Number of retry attempts for councillors that return empty responses " + "(e.g. due to provider rate limiting). Default: 3 retries."),
360
- master: z.unknown().optional().describe("DEPRECATED — ignored. Council agent synthesizes directly."),
361
- master_timeout: z.unknown().optional().describe('DEPRECATED — ignored. Use "timeout" instead.'),
362
- master_fallback: z.unknown().optional().describe("DEPRECATED — ignored. No separate master session.")
356
+ master: z.unknown().optional().describe("DEPRECATED — ignored. Council agent synthesizes directly.")
363
357
  }).transform((data) => {
364
358
  const deprecated = [];
365
359
  if (data.master !== undefined)
366
360
  deprecated.push("master");
367
- if (data.master_timeout !== undefined)
368
- deprecated.push("master_timeout");
369
- if (data.master_fallback !== undefined)
370
- deprecated.push("master_fallback");
371
361
  const legacyMasterModel = typeof data.master === "object" && data.master !== null && "model" in data.master && typeof data.master.model === "string" ? data.master.model : undefined;
372
362
  return {
373
363
  presets: data.presets,
@@ -409,15 +399,6 @@ var ManualPlanSchema = z2.object({
409
399
  librarian: ManualAgentPlanSchema,
410
400
  fixer: ManualAgentPlanSchema
411
401
  }).strict();
412
- var AgentModelChainSchema = z2.array(z2.string()).min(1);
413
- var FallbackChainsSchema = z2.object({
414
- orchestrator: AgentModelChainSchema.optional(),
415
- oracle: AgentModelChainSchema.optional(),
416
- designer: AgentModelChainSchema.optional(),
417
- explorer: AgentModelChainSchema.optional(),
418
- librarian: AgentModelChainSchema.optional(),
419
- fixer: AgentModelChainSchema.optional()
420
- }).catchall(AgentModelChainSchema);
421
402
  var AgentOverrideConfigSchema = z2.object({
422
403
  model: z2.union([
423
404
  z2.string(),
@@ -480,9 +461,8 @@ var FailoverConfigSchema = z2.object({
480
461
  enabled: z2.boolean().default(true),
481
462
  timeoutMs: z2.number().min(0).default(15000),
482
463
  retryDelayMs: z2.number().min(0).default(500),
483
- chains: FallbackChainsSchema.default({}),
484
464
  retry_on_empty: z2.boolean().default(true).describe("When true (default), empty provider responses are treated as failures, " + "triggering fallback/retry. Set to false to treat them as successes.")
485
- });
465
+ }).strict();
486
466
  var CompanionConfigSchema = z2.object({
487
467
  enabled: z2.boolean().optional(),
488
468
  position: z2.enum(["bottom-right", "bottom-left", "top-right", "top-left"]).optional(),
@@ -513,10 +493,7 @@ function validateCustomOnlyPromptFields(overrides, ctx, pathPrefix) {
513
493
  var PluginConfigSchema = z2.object({
514
494
  preset: z2.string().optional(),
515
495
  setDefaultAgent: z2.boolean().optional(),
516
- scoringEngineVersion: z2.enum(["v1", "v2-shadow", "v2"]).optional(),
517
- balanceProviderUsage: z2.boolean().optional(),
518
496
  autoUpdate: z2.boolean().optional().describe("Disable automatic installation of plugin updates when false. Defaults to true."),
519
- manualPlan: ManualPlanSchema.optional(),
520
497
  presets: z2.record(z2.string(), PresetSchema).optional(),
521
498
  agents: z2.record(z2.string(), AgentOverrideConfigSchema).optional(),
522
499
  disabled_agents: z2.array(z2.string()).optional().describe("Agent names to disable completely. " + "Disabled agents are not instantiated and cannot be delegated to. " + "Orchestrator and council internal agents (councillor) cannot be disabled. " + "By default, 'observer' is disabled. Remove it from this list and configure a vision-capable model to enable."),
@@ -587,11 +564,23 @@ var CUSTOM_SKILLS = [
587
564
  allowedAgents: ["orchestrator"],
588
565
  sourcePath: "src/skills/deepwork"
589
566
  },
567
+ {
568
+ name: "reflect",
569
+ description: "Review repeated work and suggest reusable workflow improvements",
570
+ allowedAgents: ["orchestrator"],
571
+ sourcePath: "src/skills/reflect"
572
+ },
590
573
  {
591
574
  name: "oh-my-opencode-slim",
592
575
  description: "Configure, customize, and safely improve oh-my-opencode-slim setups",
593
576
  allowedAgents: ["orchestrator"],
594
577
  sourcePath: "src/skills/oh-my-opencode-slim"
578
+ },
579
+ {
580
+ name: "worktrees",
581
+ description: "Manage Git worktrees as OMO safe isolated coding lanes for complex/risky/parallel work",
582
+ allowedAgents: ["orchestrator"],
583
+ sourcePath: "src/skills/worktrees"
595
584
  }
596
585
  ];
597
586
  function getCustomSkillsDir() {
@@ -1606,8 +1595,8 @@ import {
1606
1595
  } from "node:fs";
1607
1596
  import { homedir as homedir4, tmpdir } from "node:os";
1608
1597
  import * as path2 from "node:path";
1609
- var COMPANION_VERSION = "0.1.0";
1610
- var COMPANION_TAG = "companion-v0.1.0";
1598
+ var COMPANION_VERSION = "0.1.2";
1599
+ var COMPANION_TAG = "companion-v0.1.2";
1611
1600
  var GITHUB_REPO = "alvinunreal/oh-my-opencode-slim";
1612
1601
  function getCompanionTarget() {
1613
1602
  const p = process.platform;
@@ -1615,8 +1604,6 @@ function getCompanionTarget() {
1615
1604
  if (p === "darwin") {
1616
1605
  if (a === "arm64")
1617
1606
  return "aarch64-apple-darwin";
1618
- if (a === "x64")
1619
- return "x86_64-apple-darwin";
1620
1607
  } else if (p === "linux") {
1621
1608
  if (a === "x64")
1622
1609
  return "x86_64-unknown-linux-gnu";
@@ -2001,8 +1988,9 @@ ${block}
2001
1988
  return { enabledNow: false, configuredTarget: target };
2002
1989
  }
2003
1990
  async function shouldInstallCompanion(config) {
2004
- if (config.companion === "yes")
1991
+ if (config.companion === "yes") {
2005
1992
  return true;
1993
+ }
2006
1994
  if (config.companion === "no")
2007
1995
  return false;
2008
1996
  if (config.dryRun) {
@@ -5,10 +5,6 @@ export declare const DEFAULT_AGENT_MCPS: Record<AgentName, string[]>;
5
5
  * Parse a list with wildcard and exclusion syntax.
6
6
  */
7
7
  export declare function parseList(items: string[], allAvailable: string[]): string[];
8
- /**
9
- * Get available MCP names from schema and config.
10
- */
11
- export declare function getAvailableMcpNames(config?: PluginConfig): string[];
12
8
  /**
13
9
  * Get the MCP list for an agent (from config or defaults).
14
10
  */
@@ -1,26 +1,20 @@
1
1
  export declare const AGENT_ALIASES: Record<string, string>;
2
2
  export declare const SUBAGENT_NAMES: readonly ["explorer", "librarian", "oracle", "designer", "fixer", "observer", "council", "councillor"];
3
- export declare const ORCHESTRATOR_NAME: "orchestrator";
4
3
  export declare const ALL_AGENT_NAMES: readonly ["orchestrator", "explorer", "librarian", "oracle", "designer", "fixer", "observer", "council", "councillor"];
5
4
  export type AgentName = (typeof ALL_AGENT_NAMES)[number];
6
- export declare const ORCHESTRATABLE_AGENTS: readonly ["explorer", "librarian", "oracle", "designer", "fixer", "observer", "council"];
7
5
  /** Agents that cannot be disabled even if listed in disabled_agents config. */
8
6
  export declare const PROTECTED_AGENTS: Set<string>;
9
7
  /**
10
8
  * Get the list of orchestratable agents, excluding any disabled agents.
11
9
  * This is used for delegation validation at runtime.
12
10
  */
13
- export declare function getOrchestratableAgents(disabledAgents?: Set<string>): string[];
14
- export declare const SUBAGENT_DELEGATION_RULES: Record<AgentName, readonly string[]>;
15
11
  export declare const DEFAULT_MODELS: Record<AgentName, string | undefined>;
16
12
  export declare const POLL_INTERVAL_MS = 500;
17
- export declare const POLL_INTERVAL_SLOW_MS = 1000;
18
13
  export declare const POLL_INTERVAL_BACKGROUND_MS = 2000;
19
- export declare const DEFAULT_TIMEOUT_MS: number;
20
14
  export declare const MAX_POLL_TIME_MS: number;
21
- export declare const FALLBACK_FAILOVER_TIMEOUT_MS = 15000;
22
15
  export declare const DEFAULT_MAX_SUBAGENT_DEPTH = 3;
23
16
  export declare const PHASE_REMINDER_TEXT = "!IMPORTANT! Scheduler workflow: 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!";
17
+ export declare const PHASE_REMINDER = "<internal_reminder>!IMPORTANT! Scheduler workflow: 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!</internal_reminder>";
24
18
  export declare const WRITABLE_FILE_OPERATIONS_RULES = "**File Operations Rules**:\n- Prefer dedicated file tools for normal code work: glob/grep/ast_grep_search for discovery, read for file contents, and edit/write/apply_patch for targeted source changes.\n- Use bash for execution and automation: git, package managers, tests, builds, scripts, diagnostics, and shell-native filesystem operations.\n- Shell is acceptable for bulk or mechanical filesystem changes when it is clearer or safer than many individual edits (for example: truncate generated logs, remove build artifacts, batch rename/move files), especially when the user explicitly asks for that shell operation.\n- Before destructive or broad shell operations, verify the target set and quote paths. Prefer a dry-run/listing first when practical.\n- Do not use cat/head/tail/sed/awk only to read code into context; use read/grep unless a shell pipeline is genuinely the better diagnostic.";
25
19
  export declare const READONLY_FILE_OPERATIONS_RULES = "**File Operations Rules**:\n- READ-ONLY: inspect and report; do not modify files.\n- Prefer dedicated file tools for codebase inspection: glob/grep/ast_grep_search for discovery and read for file contents.\n- Bash is allowed for non-mutating diagnostics and shell-native inspection when it is the clearest tool, but not for modifying files.\n- Do not use cat/head/tail/sed/awk only to read code into context; use read/grep unless a shell pipeline is genuinely the better diagnostic.";
26
20
  export declare const NO_SHELL_READONLY_FILE_OPERATIONS_RULES = "**File Operations Rules**:\n- READ-ONLY: inspect and report; do not modify files.\n- Use glob/grep/ast_grep_search for discovery and read for file contents.\n- Do not use bash or shell commands.";
@@ -69,8 +69,6 @@ export declare const CouncilConfigSchema: z.ZodPipe<z.ZodObject<{
69
69
  }>>;
70
70
  councillor_retries: z.ZodDefault<z.ZodNumber>;
71
71
  master: z.ZodOptional<z.ZodUnknown>;
72
- master_timeout: z.ZodOptional<z.ZodUnknown>;
73
- master_fallback: z.ZodOptional<z.ZodUnknown>;
74
72
  }, z.core.$strip>, z.ZodTransform<{
75
73
  presets: Record<string, Record<string, {
76
74
  model: string;
@@ -94,22 +92,9 @@ export declare const CouncilConfigSchema: z.ZodPipe<z.ZodObject<{
94
92
  councillor_execution_mode: "parallel" | "serial";
95
93
  councillor_retries: number;
96
94
  master?: unknown;
97
- master_timeout?: unknown;
98
- master_fallback?: unknown;
99
95
  }>>;
100
96
  export type CouncilConfig = z.infer<typeof CouncilConfigSchema>;
101
97
  export type CouncillorExecutionMode = z.infer<typeof CouncillorExecutionModeSchema>;
102
- /**
103
- * A sensible default council configuration that users can copy into their
104
- * opencode.jsonc. Provides a 3-councillor preset using common models.
105
- *
106
- * Users should replace models with ones they have access to.
107
- *
108
- * ```jsonc
109
- * "council": DEFAULT_COUNCIL_CONFIG
110
- * ```
111
- */
112
- export declare const DEFAULT_COUNCIL_CONFIG: z.input<typeof CouncilConfigSchema>;
113
98
  /**
114
99
  * Result of a council session.
115
100
  */
@@ -9,4 +9,3 @@ export declare function setActiveRuntimePreset(name: string | null): void;
9
9
  export declare function getActiveRuntimePreset(): string | null;
10
10
  export declare function getPreviousRuntimePreset(): string | null;
11
11
  export declare function setActiveRuntimePresetWithPrevious(name: string | null): void;
12
- export declare function rollbackRuntimePreset(previous: string | null): void;
@@ -1,5 +1,4 @@
1
1
  import { z } from 'zod';
2
- declare const FALLBACK_AGENT_NAMES: readonly ["orchestrator", "oracle", "designer", "explorer", "librarian", "fixer"];
3
2
  declare const MANUAL_AGENT_NAMES: readonly ["orchestrator", "oracle", "designer", "explorer", "librarian", "fixer"];
4
3
  export declare const ProviderModelIdSchema: z.ZodString;
5
4
  export declare const ManualAgentPlanSchema: z.ZodObject<{
@@ -49,7 +48,6 @@ export declare const ManualPlanSchema: z.ZodObject<{
49
48
  export type ManualAgentName = (typeof MANUAL_AGENT_NAMES)[number];
50
49
  export type ManualAgentPlan = z.infer<typeof ManualAgentPlanSchema>;
51
50
  export type ManualPlan = z.infer<typeof ManualPlanSchema>;
52
- export type FallbackAgentName = (typeof FALLBACK_AGENT_NAMES)[number];
53
51
  export declare const AgentOverrideConfigSchema: z.ZodObject<{
54
52
  model: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
55
53
  id: z.ZodString;
@@ -177,16 +175,8 @@ export declare const FailoverConfigSchema: z.ZodObject<{
177
175
  enabled: z.ZodDefault<z.ZodBoolean>;
178
176
  timeoutMs: z.ZodDefault<z.ZodNumber>;
179
177
  retryDelayMs: z.ZodDefault<z.ZodNumber>;
180
- chains: z.ZodDefault<z.ZodObject<{
181
- orchestrator: z.ZodOptional<z.ZodArray<z.ZodString>>;
182
- oracle: z.ZodOptional<z.ZodArray<z.ZodString>>;
183
- designer: z.ZodOptional<z.ZodArray<z.ZodString>>;
184
- explorer: z.ZodOptional<z.ZodArray<z.ZodString>>;
185
- librarian: z.ZodOptional<z.ZodArray<z.ZodString>>;
186
- fixer: z.ZodOptional<z.ZodArray<z.ZodString>>;
187
- }, z.core.$catchall<z.ZodArray<z.ZodString>>>>;
188
178
  retry_on_empty: z.ZodDefault<z.ZodBoolean>;
189
- }, z.core.$strip>;
179
+ }, z.core.$strict>;
190
180
  export type FailoverConfig = z.infer<typeof FailoverConfigSchema>;
191
181
  export declare const CompanionConfigSchema: z.ZodObject<{
192
182
  enabled: z.ZodOptional<z.ZodBoolean>;
@@ -206,51 +196,7 @@ export type CompanionConfig = z.infer<typeof CompanionConfigSchema>;
206
196
  export declare const PluginConfigSchema: z.ZodObject<{
207
197
  preset: z.ZodOptional<z.ZodString>;
208
198
  setDefaultAgent: z.ZodOptional<z.ZodBoolean>;
209
- scoringEngineVersion: z.ZodOptional<z.ZodEnum<{
210
- v1: "v1";
211
- "v2-shadow": "v2-shadow";
212
- v2: "v2";
213
- }>>;
214
- balanceProviderUsage: z.ZodOptional<z.ZodBoolean>;
215
199
  autoUpdate: z.ZodOptional<z.ZodBoolean>;
216
- manualPlan: z.ZodOptional<z.ZodObject<{
217
- orchestrator: z.ZodObject<{
218
- primary: z.ZodString;
219
- fallback1: z.ZodString;
220
- fallback2: z.ZodString;
221
- fallback3: z.ZodString;
222
- }, z.core.$strip>;
223
- oracle: z.ZodObject<{
224
- primary: z.ZodString;
225
- fallback1: z.ZodString;
226
- fallback2: z.ZodString;
227
- fallback3: z.ZodString;
228
- }, z.core.$strip>;
229
- designer: z.ZodObject<{
230
- primary: z.ZodString;
231
- fallback1: z.ZodString;
232
- fallback2: z.ZodString;
233
- fallback3: z.ZodString;
234
- }, z.core.$strip>;
235
- explorer: z.ZodObject<{
236
- primary: z.ZodString;
237
- fallback1: z.ZodString;
238
- fallback2: z.ZodString;
239
- fallback3: z.ZodString;
240
- }, z.core.$strip>;
241
- librarian: z.ZodObject<{
242
- primary: z.ZodString;
243
- fallback1: z.ZodString;
244
- fallback2: z.ZodString;
245
- fallback3: z.ZodString;
246
- }, z.core.$strip>;
247
- fixer: z.ZodObject<{
248
- primary: z.ZodString;
249
- fallback1: z.ZodString;
250
- fallback2: z.ZodString;
251
- fallback3: z.ZodString;
252
- }, z.core.$strip>;
253
- }, z.core.$strict>>;
254
200
  presets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{
255
201
  model: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
256
202
  id: z.ZodString;
@@ -334,16 +280,8 @@ export declare const PluginConfigSchema: z.ZodObject<{
334
280
  enabled: z.ZodDefault<z.ZodBoolean>;
335
281
  timeoutMs: z.ZodDefault<z.ZodNumber>;
336
282
  retryDelayMs: z.ZodDefault<z.ZodNumber>;
337
- chains: z.ZodDefault<z.ZodObject<{
338
- orchestrator: z.ZodOptional<z.ZodArray<z.ZodString>>;
339
- oracle: z.ZodOptional<z.ZodArray<z.ZodString>>;
340
- designer: z.ZodOptional<z.ZodArray<z.ZodString>>;
341
- explorer: z.ZodOptional<z.ZodArray<z.ZodString>>;
342
- librarian: z.ZodOptional<z.ZodArray<z.ZodString>>;
343
- fixer: z.ZodOptional<z.ZodArray<z.ZodString>>;
344
- }, z.core.$catchall<z.ZodArray<z.ZodString>>>>;
345
283
  retry_on_empty: z.ZodDefault<z.ZodBoolean>;
346
- }, z.core.$strip>>;
284
+ }, z.core.$strict>>;
347
285
  council: z.ZodOptional<z.ZodPipe<z.ZodObject<{
348
286
  presets: z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>, z.ZodTransform<Record<string, {
349
287
  model: string;
@@ -358,8 +296,6 @@ export declare const PluginConfigSchema: z.ZodObject<{
358
296
  }>>;
359
297
  councillor_retries: z.ZodDefault<z.ZodNumber>;
360
298
  master: z.ZodOptional<z.ZodUnknown>;
361
- master_timeout: z.ZodOptional<z.ZodUnknown>;
362
- master_fallback: z.ZodOptional<z.ZodUnknown>;
363
299
  }, z.core.$strip>, z.ZodTransform<{
364
300
  presets: Record<string, Record<string, {
365
301
  model: string;
@@ -383,8 +319,6 @@ export declare const PluginConfigSchema: z.ZodObject<{
383
319
  councillor_execution_mode: "parallel" | "serial";
384
320
  councillor_retries: number;
385
321
  master?: unknown;
386
- master_timeout?: unknown;
387
- master_fallback?: unknown;
388
322
  }>>>;
389
323
  companion: z.ZodOptional<z.ZodObject<{
390
324
  enabled: z.ZodOptional<z.ZodBoolean>;
@@ -0,0 +1,9 @@
1
+ export interface SkillSyncResult {
2
+ installed: string[];
3
+ skippedExisting: string[];
4
+ failed: string[];
5
+ }
6
+ /**
7
+ * Synchronizes bundled skills from the newly installed package root to OpenCode config skills directory.
8
+ */
9
+ export declare function syncBundledSkillsFromPackage(packageRoot: string): SkillSyncResult;
@@ -5,19 +5,7 @@
5
5
  */
6
6
  import type { PluginInput } from '@opencode-ai/plugin';
7
7
  import { type PluginConfig } from '../../config';
8
- interface MessageInfo {
9
- role: string;
10
- agent?: string;
11
- }
12
- interface MessagePart {
13
- type: string;
14
- text?: string;
15
- [key: string]: unknown;
16
- }
17
- interface MessageWithParts {
18
- info: MessageInfo;
19
- parts: MessagePart[];
20
- }
8
+ import type { MessageWithParts } from '../types';
21
9
  type SkillRule = 'allow' | 'ask' | 'deny';
22
10
  declare function filterAvailableSkillsText(text: string, permissionRules: Record<string, SkillRule>): string;
23
11
  /**
@@ -20,7 +20,7 @@ export declare function isRateLimitError(error: unknown): boolean;
20
20
  * Manages runtime model fallback for foreground agent sessions.
21
21
  *
22
22
  * Constructed at plugin init with the ordered fallback chains for each agent
23
- * (built from _modelArray entries merged with fallback.chains config).
23
+ * (built from _modelArray entries in agents.<name>.model).
24
24
  */
25
25
  export declare class ForegroundFallbackManager {
26
26
  private readonly client;