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.
- package/README.ja-JP.md +30 -1
- package/README.ko-KR.md +30 -1
- package/README.md +36 -1
- package/README.zh-CN.md +30 -1
- package/dist/agents/orchestrator.d.ts +0 -2
- package/dist/cli/index.js +22 -34
- package/dist/config/agent-mcps.d.ts +0 -4
- package/dist/config/constants.d.ts +1 -7
- package/dist/config/council-schema.d.ts +0 -15
- package/dist/config/runtime-preset.d.ts +0 -1
- package/dist/config/schema.d.ts +2 -68
- package/dist/hooks/auto-update-checker/skill-sync.d.ts +9 -0
- package/dist/hooks/filter-available-skills/index.d.ts +1 -13
- package/dist/hooks/foreground-fallback/index.d.ts +1 -1
- package/dist/hooks/image-hook.d.ts +1 -13
- package/dist/hooks/index.d.ts +3 -2
- package/dist/hooks/phase-reminder/index.d.ts +10 -16
- package/dist/hooks/reflect/index.d.ts +13 -0
- package/dist/hooks/task-session-manager/index.d.ts +2 -16
- package/dist/hooks/types.d.ts +23 -0
- package/dist/index.js +391 -289
- package/dist/tui.js +16 -25
- package/dist/utils/agent-variant.d.ts +0 -40
- package/dist/utils/compat.d.ts +0 -1
- package/dist/utils/guards.d.ts +4 -0
- package/dist/utils/index.d.ts +1 -2
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/task.d.ts +0 -2
- package/oh-my-opencode-slim.schema.json +2 -249
- package/package.json +1 -1
- package/src/skills/codemap.md +4 -1
- package/src/skills/reflect/SKILL.md +193 -0
- package/src/skills/worktrees/SKILL.md +164 -0
- package/dist/config/fallback-chains.d.ts +0 -1
- package/dist/hooks/apply-patch/patch.d.ts +0 -2
- package/dist/hooks/delegate-task-retry/guidance.d.ts +0 -2
- package/dist/hooks/delegate-task-retry/index.d.ts +0 -4
- package/dist/hooks/json-error-recovery/index.d.ts +0 -1
- 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
|
|
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
|
|
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.
|
|
1610
|
-
var COMPANION_TAG = "companion-v0.1.
|
|
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;
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -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.$
|
|
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.$
|
|
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
|
-
|
|
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
|
|
23
|
+
* (built from _modelArray entries in agents.<name>.model).
|
|
24
24
|
*/
|
|
25
25
|
export declare class ForegroundFallbackManager {
|
|
26
26
|
private readonly client;
|