oh-my-opencode-slim 2.1.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.ja-JP.md +18 -18
  2. package/README.ko-KR.md +18 -18
  3. package/README.md +29 -18
  4. package/README.zh-CN.md +16 -16
  5. package/dist/cli/index.js +42 -11
  6. package/dist/cli/providers.d.ts +7 -7
  7. package/dist/companion/manager.d.ts +3 -0
  8. package/dist/config/constants.d.ts +2 -1
  9. package/dist/config/council-schema.d.ts +37 -12
  10. package/dist/config/schema.d.ts +13 -6
  11. package/dist/council/council-manager.d.ts +7 -3
  12. package/dist/hooks/foreground-fallback/index.d.ts +35 -1
  13. package/dist/hooks/index.d.ts +1 -0
  14. package/dist/hooks/phase-reminder/index.d.ts +3 -1
  15. package/dist/hooks/post-file-tool-nudge/index.d.ts +15 -9
  16. package/dist/hooks/session-lifecycle.d.ts +11 -0
  17. package/dist/hooks/task-session-manager/index.d.ts +14 -2
  18. package/dist/index.js +972 -514
  19. package/dist/interview/service.d.ts +2 -0
  20. package/dist/multiplexer/herdr/index.d.ts +5 -3
  21. package/dist/multiplexer/session-manager.d.ts +5 -5
  22. package/dist/multiplexer/shared.d.ts +24 -0
  23. package/dist/multiplexer/tmux/index.d.ts +0 -1
  24. package/dist/multiplexer/zellij/index.d.ts +0 -1
  25. package/dist/tools/cancel-task.d.ts +2 -2
  26. package/dist/tui.d.ts +1 -0
  27. package/dist/tui.js +45 -10
  28. package/dist/utils/background-job-board.d.ts +5 -1
  29. package/dist/utils/background-job-coordinator.d.ts +72 -0
  30. package/dist/utils/background-job-store.d.ts +46 -0
  31. package/dist/utils/councillor-models.d.ts +20 -0
  32. package/dist/utils/index.d.ts +2 -0
  33. package/dist/utils/internal-initiator.d.ts +6 -1
  34. package/dist/utils/session.d.ts +1 -1
  35. package/oh-my-opencode-slim.schema.json +13 -1
  36. package/package.json +1 -1
  37. package/src/skills/oh-my-opencode-slim/SKILL.md +3 -3
  38. package/src/skills/release-smoke-test/SKILL.md +2 -2
package/README.ja-JP.md CHANGED
@@ -151,12 +151,12 @@ bun run build
151
151
  "preset": "openai",
152
152
  "presets": {
153
153
  "openai": {
154
- "orchestrator": { "model": "openai/gpt-5.5", "variant": "medium", "skills": ["*"], "mcps": ["*", "!context7"] },
155
- "oracle": { "model": "openai/gpt-5.5", "variant": "high", "skills": ["simplify"], "mcps": [] },
156
- "librarian": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "gh_grep"] },
157
- "explorer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] },
158
- "designer": { "model": "openai/gpt-5.4-mini", "variant": "medium", "skills": [], "mcps": [] },
159
- "fixer": { "model": "openai/gpt-5.5", "variant": "low", "skills": [], "mcps": [] }
154
+ "orchestrator": { "model": "openai/gpt-5.6-terra", "variant": "medium", "skills": ["*"], "mcps": ["*", "!context7"] },
155
+ "oracle": { "model": "openai/gpt-5.6-sol", "variant": "high", "skills": ["simplify"], "mcps": [] },
156
+ "librarian": { "model": "openai/gpt-5.6-luna", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "gh_grep"] },
157
+ "explorer": { "model": "openai/gpt-5.6-luna", "variant": "low", "skills": [], "mcps": [] },
158
+ "designer": { "model": "openai/gpt-5.6-luna", "variant": "medium", "skills": [], "mcps": [] },
159
+ "fixer": { "model": "openai/gpt-5.6-luna", "variant": "medium", "skills": [], "mcps": [] }
160
160
  },
161
161
  "opencode-go": {
162
162
  "orchestrator": { "model": "opencode-go/glm-5.2", "skills": [ "*" ], "mcps": [ "*", "!context7" ] },
@@ -310,12 +310,12 @@ Worktrees は、Git worktree を `.slim/worktrees/<slug>/` 配下の安全で隔
310
310
  </tr>
311
311
  <tr>
312
312
  <td colspan="2">
313
- <b>Default Model:</b> <code>openai/gpt-5.5</code>
313
+ <b>Default Model:</b> <code>openai/gpt-5.6-terra</code>
314
314
  </td>
315
315
  </tr>
316
316
  <tr>
317
317
  <td colspan="2">
318
- <b>Recommended Models:</b> <code>openai/gpt-5.5</code> <code>anthropic/claude-opus-4.6</code>
318
+ <b>Recommended Models:</b> <code>openai/gpt-5.6-terra</code> <code>anthropic/claude-opus-4.6</code>
319
319
  </td>
320
320
  </tr>
321
321
  <tr>
@@ -351,12 +351,12 @@ Worktrees は、Git worktree を `.slim/worktrees/<slug>/` 配下の安全で隔
351
351
  </tr>
352
352
  <tr>
353
353
  <td colspan="2">
354
- <b>Default Model:</b> <code>openai/gpt-5.4-mini</code>
354
+ <b>Default Model:</b> <code>openai/gpt-5.6-luna</code>
355
355
  </td>
356
356
  </tr>
357
357
  <tr>
358
358
  <td colspan="2">
359
- <b>Recommended Models:</b> <code>cerebras/zai-glm-4.7</code> <code>fireworks-ai/accounts/fireworks/routers/kimi-k2p5-turbo</code> <code>openai/gpt-5.4-mini</code>
359
+ <b>Recommended Models:</b> <code>cerebras/zai-glm-4.7</code> <code>fireworks-ai/accounts/fireworks/routers/kimi-k2p5-turbo</code> <code>openai/gpt-5.6-luna</code>
360
360
  </td>
361
361
  </tr>
362
362
  <tr>
@@ -392,12 +392,12 @@ Worktrees は、Git worktree を `.slim/worktrees/<slug>/` 配下の安全で隔
392
392
  </tr>
393
393
  <tr>
394
394
  <td colspan="2">
395
- <b>Default Model:</b> <code>openai/gpt-5.5 (high)</code>
395
+ <b>Default Model:</b> <code>openai/gpt-5.6-sol (high)</code>
396
396
  </td>
397
397
  </tr>
398
398
  <tr>
399
399
  <td colspan="2">
400
- <b>Recommended Models:</b> <code>openai/gpt-5.5 (high)</code> <code>google/gemini-3.1-pro-preview (high)</code>
400
+ <b>Recommended Models:</b> <code>openai/gpt-5.6-sol (high)</code> <code>google/gemini-3.1-pro-preview (high)</code>
401
401
  </td>
402
402
  </tr>
403
403
  <tr>
@@ -482,12 +482,12 @@ Worktrees は、Git worktree を `.slim/worktrees/<slug>/` 配下の安全で隔
482
482
  </tr>
483
483
  <tr>
484
484
  <td colspan="2">
485
- <b>Default Model:</b> <code>openai/gpt-5.4-mini</code>
485
+ <b>Default Model:</b> <code>openai/gpt-5.6-luna</code>
486
486
  </td>
487
487
  </tr>
488
488
  <tr>
489
489
  <td colspan="2">
490
- <b>Recommended Models:</b> <code>cerebras/zai-glm-4.7</code> <code>fireworks-ai/accounts/fireworks/routers/kimi-k2p5-turbo</code> <code>openai/gpt-5.4-mini</code>
490
+ <b>Recommended Models:</b> <code>cerebras/zai-glm-4.7</code> <code>fireworks-ai/accounts/fireworks/routers/kimi-k2p5-turbo</code> <code>openai/gpt-5.6-luna</code>
491
491
  </td>
492
492
  </tr>
493
493
  <tr>
@@ -523,7 +523,7 @@ Worktrees は、Git worktree を `.slim/worktrees/<slug>/` 配下の安全で隔
523
523
  </tr>
524
524
  <tr>
525
525
  <td colspan="2">
526
- <b>Default Model:</b> <code>openai/gpt-5.4-mini</code>
526
+ <b>Default Model:</b> <code>openai/gpt-5.6-luna</code>
527
527
  </td>
528
528
  </tr>
529
529
  <tr>
@@ -564,12 +564,12 @@ Worktrees は、Git worktree を `.slim/worktrees/<slug>/` 配下の安全で隔
564
564
  </tr>
565
565
  <tr>
566
566
  <td colspan="2">
567
- <b>Default Model:</b> <code>openai/gpt-5.4-mini</code>
567
+ <b>Default Model:</b> <code>openai/gpt-5.6-luna</code>
568
568
  </td>
569
569
  </tr>
570
570
  <tr>
571
571
  <td colspan="2">
572
- <b>Recommended Models:</b> <code>cerebras/zai-glm-4.7</code> <code>fireworks-ai/accounts/fireworks/routers/kimi-k2p5-turbo</code> <code>openai/gpt-5.4-mini</code>
572
+ <b>Recommended Models:</b> <code>cerebras/zai-glm-4.7</code> <code>fireworks-ai/accounts/fireworks/routers/kimi-k2p5-turbo</code> <code>openai/gpt-5.6-luna</code>
573
573
  </td>
574
574
  </tr>
575
575
  <tr>
@@ -611,7 +611,7 @@ Worktrees は、Git worktree を `.slim/worktrees/<slug>/` 配下の安全で隔
611
611
  </tr>
612
612
  <tr>
613
613
  <td colspan="2">
614
- <b>Default Model:</b> <code>openai/gpt-5.4-mini</code> - <i>有効化するにはビジョン対応モデルを設定してください</i>
614
+ <b>Default Model:</b> <code>openai/gpt-5.6-luna</code> - <i>有効化するにはビジョン対応モデルを設定してください</i>
615
615
  </td>
616
616
  </tr>
617
617
  <tr>
package/README.ko-KR.md CHANGED
@@ -149,12 +149,12 @@ bun run build
149
149
  "preset": "openai",
150
150
  "presets": {
151
151
  "openai": {
152
- "orchestrator": { "model": "openai/gpt-5.5", "variant": "medium", "skills": ["*"], "mcps": ["*", "!context7"] },
153
- "oracle": { "model": "openai/gpt-5.5", "variant": "high", "skills": ["simplify"], "mcps": [] },
154
- "librarian": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "gh_grep"] },
155
- "explorer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] },
156
- "designer": { "model": "openai/gpt-5.4-mini", "variant": "medium", "skills": [], "mcps": [] },
157
- "fixer": { "model": "openai/gpt-5.5", "variant": "low", "skills": [], "mcps": [] }
152
+ "orchestrator": { "model": "openai/gpt-5.6-terra", "variant": "medium", "skills": ["*"], "mcps": ["*", "!context7"] },
153
+ "oracle": { "model": "openai/gpt-5.6-sol", "variant": "high", "skills": ["simplify"], "mcps": [] },
154
+ "librarian": { "model": "openai/gpt-5.6-luna", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "gh_grep"] },
155
+ "explorer": { "model": "openai/gpt-5.6-luna", "variant": "low", "skills": [], "mcps": [] },
156
+ "designer": { "model": "openai/gpt-5.6-luna", "variant": "medium", "skills": [], "mcps": [] },
157
+ "fixer": { "model": "openai/gpt-5.6-luna", "variant": "medium", "skills": [], "mcps": [] }
158
158
  },
159
159
  "opencode-go": {
160
160
  "orchestrator": { "model": "opencode-go/glm-5.2", "skills": [ "*" ], "mcps": [ "*", "!context7" ] },
@@ -308,12 +308,12 @@ Worktrees는 Git worktree를 `.slim/worktrees/<slug>/` 아래의 안전하고
308
308
  </tr>
309
309
  <tr>
310
310
  <td colspan="2">
311
- <b>기본 모델:</b> <code>openai/gpt-5.5</code>
311
+ <b>기본 모델:</b> <code>openai/gpt-5.6-terra</code>
312
312
  </td>
313
313
  </tr>
314
314
  <tr>
315
315
  <td colspan="2">
316
- <b>추천 모델:</b> <code>openai/gpt-5.5</code> <code>anthropic/claude-opus-4.6</code>
316
+ <b>추천 모델:</b> <code>openai/gpt-5.6-terra</code> <code>anthropic/claude-opus-4.6</code>
317
317
  </td>
318
318
  </tr>
319
319
  <tr>
@@ -349,12 +349,12 @@ Worktrees는 Git worktree를 `.slim/worktrees/<slug>/` 아래의 안전하고
349
349
  </tr>
350
350
  <tr>
351
351
  <td colspan="2">
352
- <b>기본 모델:</b> <code>openai/gpt-5.4-mini</code>
352
+ <b>기본 모델:</b> <code>openai/gpt-5.6-luna</code>
353
353
  </td>
354
354
  </tr>
355
355
  <tr>
356
356
  <td colspan="2">
357
- <b>추천 모델:</b> <code>cerebras/zai-glm-4.7</code> <code>fireworks-ai/accounts/fireworks/routers/kimi-k2p5-turbo</code> <code>openai/gpt-5.4-mini</code>
357
+ <b>추천 모델:</b> <code>cerebras/zai-glm-4.7</code> <code>fireworks-ai/accounts/fireworks/routers/kimi-k2p5-turbo</code> <code>openai/gpt-5.6-luna</code>
358
358
  </td>
359
359
  </tr>
360
360
  <tr>
@@ -390,12 +390,12 @@ Worktrees는 Git worktree를 `.slim/worktrees/<slug>/` 아래의 안전하고
390
390
  </tr>
391
391
  <tr>
392
392
  <td colspan="2">
393
- <b>기본 모델:</b> <code>openai/gpt-5.5 (high)</code>
393
+ <b>기본 모델:</b> <code>openai/gpt-5.6-sol (high)</code>
394
394
  </td>
395
395
  </tr>
396
396
  <tr>
397
397
  <td colspan="2">
398
- <b>추천 모델:</b> <code>openai/gpt-5.5 (high)</code> <code>google/gemini-3.1-pro-preview (high)</code>
398
+ <b>추천 모델:</b> <code>openai/gpt-5.6-sol (high)</code> <code>google/gemini-3.1-pro-preview (high)</code>
399
399
  </td>
400
400
  </tr>
401
401
  <tr>
@@ -480,12 +480,12 @@ Worktrees는 Git worktree를 `.slim/worktrees/<slug>/` 아래의 안전하고
480
480
  </tr>
481
481
  <tr>
482
482
  <td colspan="2">
483
- <b>기본 모델:</b> <code>openai/gpt-5.4-mini</code>
483
+ <b>기본 모델:</b> <code>openai/gpt-5.6-luna</code>
484
484
  </td>
485
485
  </tr>
486
486
  <tr>
487
487
  <td colspan="2">
488
- <b>추천 모델:</b> <code>cerebras/zai-glm-4.7</code> <code>fireworks-ai/accounts/fireworks/routers/kimi-k2p5-turbo</code> <code>openai/gpt-5.4-mini</code>
488
+ <b>추천 모델:</b> <code>cerebras/zai-glm-4.7</code> <code>fireworks-ai/accounts/fireworks/routers/kimi-k2p5-turbo</code> <code>openai/gpt-5.6-luna</code>
489
489
  </td>
490
490
  </tr>
491
491
  <tr>
@@ -521,7 +521,7 @@ Worktrees는 Git worktree를 `.slim/worktrees/<slug>/` 아래의 안전하고
521
521
  </tr>
522
522
  <tr>
523
523
  <td colspan="2">
524
- <b>기본 모델:</b> <code>openai/gpt-5.4-mini</code>
524
+ <b>기본 모델:</b> <code>openai/gpt-5.6-luna</code>
525
525
  </td>
526
526
  </tr>
527
527
  <tr>
@@ -562,12 +562,12 @@ Worktrees는 Git worktree를 `.slim/worktrees/<slug>/` 아래의 안전하고
562
562
  </tr>
563
563
  <tr>
564
564
  <td colspan="2">
565
- <b>기본 모델:</b> <code>openai/gpt-5.4-mini</code>
565
+ <b>기본 모델:</b> <code>openai/gpt-5.6-luna</code>
566
566
  </td>
567
567
  </tr>
568
568
  <tr>
569
569
  <td colspan="2">
570
- <b>추천 모델:</b> <code>cerebras/zai-glm-4.7</code> <code>fireworks-ai/accounts/fireworks/routers/kimi-k2p5-turbo</code> <code>openai/gpt-5.4-mini</code>
570
+ <b>추천 모델:</b> <code>cerebras/zai-glm-4.7</code> <code>fireworks-ai/accounts/fireworks/routers/kimi-k2p5-turbo</code> <code>openai/gpt-5.6-luna</code>
571
571
  </td>
572
572
  </tr>
573
573
  <tr>
@@ -609,7 +609,7 @@ Worktrees는 Git worktree를 `.slim/worktrees/<slug>/` 아래의 안전하고
609
609
  </tr>
610
610
  <tr>
611
611
  <td colspan="2">
612
- <b>기본 모델:</b> <code>openai/gpt-5.4-mini</code> - <i>비전 지원 모델을 구성하여 활성화</i>
612
+ <b>기본 모델:</b> <code>openai/gpt-5.6-luna</code> - <i>비전 지원 모델을 구성하여 활성화</i>
613
613
  </td>
614
614
  </tr>
615
615
  <tr>
package/README.md CHANGED
@@ -147,12 +147,12 @@ The default generated configuration includes both `openai` and `opencode-go` pre
147
147
  "preset": "openai",
148
148
  "presets": {
149
149
  "openai": {
150
- "orchestrator": { "model": "openai/gpt-5.5", "variant": "medium", "skills": ["*"], "mcps": ["*", "!context7"] },
151
- "oracle": { "model": "openai/gpt-5.5", "variant": "high", "skills": ["simplify"], "mcps": [] },
152
- "librarian": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "gh_grep"] },
153
- "explorer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] },
154
- "designer": { "model": "openai/gpt-5.4-mini", "variant": "medium", "skills": [], "mcps": [] },
155
- "fixer": { "model": "openai/gpt-5.5", "variant": "low", "skills": [], "mcps": [] }
150
+ "orchestrator": { "model": "openai/gpt-5.6-terra", "variant": "medium", "skills": ["*"], "mcps": ["*", "!context7"] },
151
+ "oracle": { "model": "openai/gpt-5.6-sol", "variant": "high", "skills": ["simplify"], "mcps": [] },
152
+ "librarian": { "model": "openai/gpt-5.6-luna", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "gh_grep"] },
153
+ "explorer": { "model": "openai/gpt-5.6-luna", "variant": "low", "skills": [], "mcps": [] },
154
+ "designer": { "model": "openai/gpt-5.6-luna", "variant": "medium", "skills": [], "mcps": [] },
155
+ "fixer": { "model": "openai/gpt-5.6-luna", "variant": "medium", "skills": [], "mcps": [] }
156
156
  },
157
157
  "opencode-go": {
158
158
  "orchestrator": { "model": "opencode-go/glm-5.2", "skills": [ "*" ], "mcps": [ "*", "!context7" ] },
@@ -166,9 +166,17 @@ The default generated configuration includes both `openai` and `opencode-go` pre
166
166
  }
167
167
  ```
168
168
 
169
+ ### Preset Docs
170
+
171
+ - **[OpenAI Preset](docs/openai-preset.md)** — the default generated preset; runs all agents on OpenAI models.
172
+ - **[OpenCode Go Preset](docs/opencode-go-preset.md)** — runs the agents on OpenCode Go models; enables the Observer agent for visual analysis since its orchestrator model isn't multimodal.
173
+ - **[Author's Preset](docs/authors-preset.md)** — the exact config the author runs day to day, with third-party skills.
174
+ - **[$30 Preset](docs/thirty-dollars-preset.md)** — a mixed-provider setup built around Codex Plus and GitHub Copilot Pro for about $30/month.
175
+ - **[OpenCode Zen Free Preset](docs/opencode-zen-free-preset.md)** — every agent runs on an opencode free model; no usage cost.
176
+
169
177
  ### For Alternative Providers
170
178
 
171
- To use custom providers or a mixed-provider setup, use **[Configuration](docs/configuration.md)** for the full reference. If you want a ready-made starting point, check the **[Author's Preset](docs/authors-preset.md)** and **[$30 Preset](docs/thirty-dollars-preset.md)** - the `$30` preset is the best cheap setup.
179
+ To use custom providers or a mixed-provider setup, use **[Configuration](docs/configuration.md)** for the full reference.
172
180
 
173
181
  ### ✅ Verify Your Setup
174
182
 
@@ -335,12 +343,12 @@ rules.
335
343
  </tr>
336
344
  <tr>
337
345
  <td colspan="2">
338
- <b>Default Model:</b> <code>openai/gpt-5.5 (medium)</code>
346
+ <b>Default Model:</b> <code>openai/gpt-5.6-terra (medium)</code>
339
347
  </td>
340
348
  </tr>
341
349
  <tr>
342
350
  <td colspan="2">
343
- <b>Recommended Models:</b> <code>openai/gpt-5.5 (medium)</code> <code>anthropic/claude-fable-5</code> <code>anthropic/claude-opus-4-8</code>
351
+ <b>Recommended Models:</b> <code>openai/gpt-5.6-terra (medium)</code> <code>anthropic/claude-fable-5</code> <code>anthropic/claude-opus-4-8</code>
344
352
  </td>
345
353
  </tr>
346
354
  <tr>
@@ -376,7 +384,7 @@ rules.
376
384
  </tr>
377
385
  <tr>
378
386
  <td colspan="2">
379
- <b>Default Model:</b> <code>openai/gpt-5.4-mini</code>
387
+ <b>Default Model:</b> <code>openai/gpt-5.6-luna</code>
380
388
  </td>
381
389
  </tr>
382
390
  <tr>
@@ -417,12 +425,12 @@ rules.
417
425
  </tr>
418
426
  <tr>
419
427
  <td colspan="2">
420
- <b>Default Model:</b> <code>openai/gpt-5.5 (high)</code>
428
+ <b>Default Model:</b> <code>openai/gpt-5.6-sol (high)</code>
421
429
  </td>
422
430
  </tr>
423
431
  <tr>
424
432
  <td colspan="2">
425
- <b>Recommended Models:</b> <code>openai/gpt-5.5 (xhigh)</code> <code>anthropic/claude-fable-5</code> <code>anthropic/claude-opus-4-8 (xhigh)</code>
433
+ <b>Recommended Models:</b> <code>openai/gpt-5.6-sol (xhigh)</code> <code>anthropic/claude-fable-5</code> <code>anthropic/claude-opus-4-8 (xhigh)</code>
426
434
  </td>
427
435
  </tr>
428
436
  <tr>
@@ -507,7 +515,7 @@ rules.
507
515
  </tr>
508
516
  <tr>
509
517
  <td colspan="2">
510
- <b>Default Model:</b> <code>openai/gpt-5.4-mini</code>
518
+ <b>Default Model:</b> <code>openai/gpt-5.6-luna</code>
511
519
  </td>
512
520
  </tr>
513
521
  <tr>
@@ -548,7 +556,7 @@ rules.
548
556
  </tr>
549
557
  <tr>
550
558
  <td colspan="2">
551
- <b>Default Model:</b> <code>openai/gpt-5.4-mini</code>
559
+ <b>Default Model:</b> <code>openai/gpt-5.6-luna</code>
552
560
  </td>
553
561
  </tr>
554
562
  <tr>
@@ -589,12 +597,12 @@ rules.
589
597
  </tr>
590
598
  <tr>
591
599
  <td colspan="2">
592
- <b>Default Model:</b> <code>openai/gpt-5.5 (low)</code>
600
+ <b>Default Model:</b> <code>openai/gpt-5.6-luna (medium)</code>
593
601
  </td>
594
602
  </tr>
595
603
  <tr>
596
604
  <td colspan="2">
597
- <b>Recommended Models:</b> <code>openai/gpt-5.5 (low)</code> <code>anthropic/claude-sonnet-4-6</code>
605
+ <b>Recommended Models:</b> <code>openai/gpt-5.6-luna (medium)</code> <code>anthropic/claude-sonnet-4-6</code>
598
606
  </td>
599
607
  </tr>
600
608
  <tr>
@@ -636,7 +644,7 @@ rules.
636
644
  </tr>
637
645
  <tr>
638
646
  <td colspan="2">
639
- <b>Default Model:</b> <code>openai/gpt-5.4-mini</code> - <i>configure a vision-capable model to enable</i>
647
+ <b>Default Model:</b> <code>openai/gpt-5.6-luna</code> - <i>configure a vision-capable model to enable</i>
640
648
  </td>
641
649
  </tr>
642
650
  <tr>
@@ -699,7 +707,7 @@ Use this section as a map: start with installation, then jump to features, confi
699
707
  <p><sub>Every merged contribution leaves a mark on the realm.</sub></p>
700
708
 
701
709
  <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
702
- [![All Contributors](https://img.shields.io/badge/all_contributors-72-orange.svg?style=flat-square)](#contributors-)
710
+ [![All Contributors](https://img.shields.io/badge/all_contributors-73-orange.svg?style=flat-square)](#contributors-)
703
711
  <!-- ALL-CONTRIBUTORS-BADGE:END -->
704
712
  </div>
705
713
 
@@ -806,6 +814,9 @@ Use this section as a map: start with installation, then jump to features, confi
806
814
  <td align="center" valign="top" width="16.66%"><a href="https://rgutzen.github.io/"><img src="https://avatars.githubusercontent.com/u/16289604?v=4?s=100" width="100px;" alt="Robin Gutzen"/><br /><sub><b>Robin Gutzen</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=rgutzen" title="Code">💻</a></td>
807
815
  <td align="center" valign="top" width="16.66%"><a href="https://github.com/dragon-Elec"><img src="https://avatars.githubusercontent.com/u/197374270?v=4?s=100" width="100px;" alt="Yash"/><br /><sub><b>Yash</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=dragon-Elec" title="Code">💻</a></td>
808
816
  </tr>
817
+ <tr>
818
+ <td align="center" valign="top" width="16.66%"><a href="https://github.com/Jiajun0413"><img src="https://avatars.githubusercontent.com/u/184531967?v=4?s=100" width="100px;" alt="Liu Jiajun"/><br /><sub><b>Liu Jiajun</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=Jiajun0413" title="Code">💻</a></td>
819
+ </tr>
809
820
  </tbody>
810
821
  </table>
811
822
 
package/README.zh-CN.md CHANGED
@@ -144,12 +144,12 @@ bun run build
144
144
  "preset": "openai",
145
145
  "presets": {
146
146
  "openai": {
147
- "orchestrator": { "model": "openai/gpt-5.5", "variant": "medium", "skills": ["*"], "mcps": ["*", "!context7"] },
148
- "oracle": { "model": "openai/gpt-5.5", "variant": "high", "skills": ["simplify"], "mcps": [] },
149
- "librarian": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "gh_grep"] },
150
- "explorer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] },
151
- "designer": { "model": "openai/gpt-5.4-mini", "variant": "medium", "skills": [], "mcps": [] },
152
- "fixer": { "model": "openai/gpt-5.5", "variant": "low", "skills": [], "mcps": [] }
147
+ "orchestrator": { "model": "openai/gpt-5.6-terra", "variant": "medium", "skills": ["*"], "mcps": ["*", "!context7"] },
148
+ "oracle": { "model": "openai/gpt-5.6-sol", "variant": "high", "skills": ["simplify"], "mcps": [] },
149
+ "librarian": { "model": "openai/gpt-5.6-luna", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "gh_grep"] },
150
+ "explorer": { "model": "openai/gpt-5.6-luna", "variant": "low", "skills": [], "mcps": [] },
151
+ "designer": { "model": "openai/gpt-5.6-luna", "variant": "medium", "skills": [], "mcps": [] },
152
+ "fixer": { "model": "openai/gpt-5.6-luna", "variant": "medium", "skills": [], "mcps": [] }
153
153
  },
154
154
  "opencode-go": {
155
155
  "orchestrator": { "model": "opencode-go/glm-5.2", "skills": [ "*" ], "mcps": [ "*", "!context7" ] },
@@ -303,12 +303,12 @@ Worktrees 将 Git worktree 作为安全、隔离的编码通道管理,默认
303
303
  </tr>
304
304
  <tr>
305
305
  <td colspan="2">
306
- <b>默认模型:</b> <code>openai/gpt-5.5 (medium)</code>
306
+ <b>默认模型:</b> <code>openai/gpt-5.6-terra (medium)</code>
307
307
  </td>
308
308
  </tr>
309
309
  <tr>
310
310
  <td colspan="2">
311
- <b>推荐模型:</b> <code>openai/gpt-5.5 (medium)</code> <code>anthropic/claude-opus-4.6</code>
311
+ <b>推荐模型:</b> <code>openai/gpt-5.6-terra (medium)</code> <code>anthropic/claude-opus-4.6</code>
312
312
  </td>
313
313
  </tr>
314
314
  <tr>
@@ -344,7 +344,7 @@ Worktrees 将 Git worktree 作为安全、隔离的编码通道管理,默认
344
344
  </tr>
345
345
  <tr>
346
346
  <td colspan="2">
347
- <b>默认模型:</b> <code>openai/gpt-5.4-mini</code>
347
+ <b>默认模型:</b> <code>openai/gpt-5.6-luna</code>
348
348
  </td>
349
349
  </tr>
350
350
  <tr>
@@ -385,12 +385,12 @@ Worktrees 将 Git worktree 作为安全、隔离的编码通道管理,默认
385
385
  </tr>
386
386
  <tr>
387
387
  <td colspan="2">
388
- <b>默认模型:</b> <code>openai/gpt-5.5 (high)</code>
388
+ <b>默认模型:</b> <code>openai/gpt-5.6-sol (high)</code>
389
389
  </td>
390
390
  </tr>
391
391
  <tr>
392
392
  <td colspan="2">
393
- <b>推荐模型:</b> <code>openai/gpt-5.5 (high)</code> <code>google/gemini-3.1-pro-preview (high)</code>
393
+ <b>推荐模型:</b> <code>openai/gpt-5.6-sol (high)</code> <code>google/gemini-3.1-pro-preview (high)</code>
394
394
  </td>
395
395
  </tr>
396
396
  <tr>
@@ -475,7 +475,7 @@ Worktrees 将 Git worktree 作为安全、隔离的编码通道管理,默认
475
475
  </tr>
476
476
  <tr>
477
477
  <td colspan="2">
478
- <b>默认模型:</b> <code>openai/gpt-5.4-mini</code>
478
+ <b>默认模型:</b> <code>openai/gpt-5.6-luna</code>
479
479
  </td>
480
480
  </tr>
481
481
  <tr>
@@ -516,7 +516,7 @@ Worktrees 将 Git worktree 作为安全、隔离的编码通道管理,默认
516
516
  </tr>
517
517
  <tr>
518
518
  <td colspan="2">
519
- <b>默认模型:</b> <code>openai/gpt-5.4-mini</code>
519
+ <b>默认模型:</b> <code>openai/gpt-5.6-luna</code>
520
520
  </td>
521
521
  </tr>
522
522
  <tr>
@@ -557,12 +557,12 @@ Worktrees 将 Git worktree 作为安全、隔离的编码通道管理,默认
557
557
  </tr>
558
558
  <tr>
559
559
  <td colspan="2">
560
- <b>默认模型:</b> <code>openai/gpt-5.5 (low)</code>
560
+ <b>默认模型:</b> <code>openai/gpt-5.6-luna (medium)</code>
561
561
  </td>
562
562
  </tr>
563
563
  <tr>
564
564
  <td colspan="2">
565
- <b>推荐模型:</b> <code>openai/gpt-5.5 (low)</code>
565
+ <b>推荐模型:</b> <code>openai/gpt-5.6-luna (medium)</code>
566
566
  </td>
567
567
  </tr>
568
568
  <tr>
@@ -604,7 +604,7 @@ Worktrees 将 Git worktree 作为安全、隔离的编码通道管理,默认
604
604
  </tr>
605
605
  <tr>
606
606
  <td colspan="2">
607
- <b>默认模型:</b> <code>openai/gpt-5.4-mini</code> - <i>需配置具有视觉能力的模型以启用</i>
607
+ <b>默认模型:</b> <code>openai/gpt-5.6-luna</code> - <i>需配置具有视觉能力的模型以启用</i>
608
608
  </td>
609
609
  </tr>
610
610
  <tr>
package/dist/cli/index.js CHANGED
@@ -293,14 +293,43 @@ var ALL_AGENT_NAMES = ["orchestrator", ...SUBAGENT_NAMES];
293
293
  var PROTECTED_AGENTS = new Set(["orchestrator", "councillor"]);
294
294
  var MAX_POLL_TIME_MS = 5 * 60 * 1000;
295
295
  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!`;
296
- var PHASE_REMINDER = `<internal_reminder>${PHASE_REMINDER_TEXT}</internal_reminder>`;
296
+ function formatSystemReminder(text) {
297
+ return `<system-reminder>
298
+ ${text}
299
+ </system-reminder>`;
300
+ }
301
+ var PHASE_REMINDER = formatSystemReminder(PHASE_REMINDER_TEXT);
297
302
  // src/config/council-schema.ts
298
303
  import { z } from "zod";
299
- var ModelIdSchema = z.string().regex(/^[^/\s]+\/[^\s]+$/, 'Expected provider/model format (e.g. "openai/gpt-5.4-mini")');
304
+
305
+ // src/utils/councillor-models.ts
306
+ function normalizeCouncillorModels(model, fallbackVariant) {
307
+ const raw = Array.isArray(model) ? model : [model];
308
+ return raw.map((entry) => typeof entry === "string" ? { id: entry, variant: fallbackVariant } : { id: entry.id, variant: entry.variant ?? fallbackVariant });
309
+ }
310
+
311
+ // src/config/council-schema.ts
312
+ var ModelIdSchema = z.string().regex(/^[^/\s]+\/[^\s]+$/, 'Expected provider/model format (e.g. "openai/gpt-5.6-luna")');
313
+ var CouncillorModelEntrySchema = z.object({
314
+ id: ModelIdSchema,
315
+ variant: z.string().optional()
316
+ });
317
+ var CouncillorModelSchema = z.union([
318
+ ModelIdSchema,
319
+ z.array(z.union([ModelIdSchema, CouncillorModelEntrySchema])).min(1)
320
+ ]).describe('Model ID in provider/model format (e.g. "openai/gpt-5.6-luna"), or an ' + "ordered fallback chain (array of model IDs or { id, variant } entries) " + "tried in order until one responds.");
300
321
  var CouncillorConfigSchema = z.object({
301
- model: ModelIdSchema.describe('Model ID in provider/model format (e.g. "openai/gpt-5.4-mini")'),
322
+ model: CouncillorModelSchema,
302
323
  variant: z.string().optional(),
303
324
  prompt: z.string().optional().describe("Optional role/guidance injected into the councillor user prompt")
325
+ }).transform((c) => {
326
+ const models = normalizeCouncillorModels(c.model, c.variant);
327
+ return {
328
+ model: models[0].id,
329
+ variant: c.variant,
330
+ prompt: c.prompt,
331
+ models
332
+ };
304
333
  });
305
334
  var CouncilPresetSchema = z.record(z.string(), z.record(z.string(), z.unknown())).transform((entries, ctx) => {
306
335
  const councillors = {};
@@ -454,7 +483,9 @@ var FailoverConfigSchema = z2.object({
454
483
  enabled: z2.boolean().default(true),
455
484
  timeoutMs: z2.number().min(0).default(15000),
456
485
  retryDelayMs: z2.number().min(0).default(500),
457
- 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.")
486
+ maxRetries: z2.number().int().min(0).default(3).describe("Number of consecutive 429/rate-limit responses tolerated on the " + "same model before aborting (or swapping to the next fallback " + "model when a chain is configured)."),
487
+ 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."),
488
+ runtimeOverride: z2.boolean().default(true).describe("When true (default), a runtime model selected via /model that is " + "outside the configured fallback chain will still trigger the chain " + "on rate-limit errors. When false, out-of-chain runtime picks are " + "respected and the error surfaces instead of silently falling back " + "to the chain. Models that are members of the chain always fall back " + "regardless of this setting.")
458
489
  }).strict();
459
490
  var CompanionConfigSchema = z2.object({
460
491
  enabled: z2.boolean().optional(),
@@ -495,7 +526,7 @@ function rejectOrchestratorPromptOnOrchestrator(overrides, ctx, pathPrefix) {
495
526
  var PluginConfigSchema = z2.object({
496
527
  preset: z2.string().optional(),
497
528
  setDefaultAgent: z2.boolean().optional(),
498
- compactSidebar: z2.boolean().optional().describe("Use the compact TUI sidebar layout when enabled."),
529
+ compactSidebar: z2.boolean().optional().describe("Use the compact TUI sidebar layout. Defaults to true; set false to use the expanded layout."),
499
530
  autoUpdate: z2.boolean().optional().describe("Disable automatic installation of plugin updates when false. Defaults to true."),
500
531
  presets: z2.record(z2.string(), PresetSchema).optional(),
501
532
  agents: z2.record(z2.string(), AgentOverrideConfigSchema).optional(),
@@ -595,12 +626,12 @@ var SCHEMA_URL = "https://unpkg.com/oh-my-opencode-slim@latest/oh-my-opencode-sl
595
626
  var GENERATED_PRESETS = ["openai", "opencode-go"];
596
627
  var MODEL_MAPPINGS = {
597
628
  openai: {
598
- orchestrator: { model: "openai/gpt-5.5", variant: "medium" },
599
- oracle: { model: "openai/gpt-5.5", variant: "high" },
600
- librarian: { model: "openai/gpt-5.4-mini", variant: "low" },
601
- explorer: { model: "openai/gpt-5.4-mini", variant: "low" },
602
- designer: { model: "openai/gpt-5.4-mini", variant: "medium" },
603
- fixer: { model: "openai/gpt-5.5", variant: "low" }
629
+ orchestrator: { model: "openai/gpt-5.6-terra", variant: "medium" },
630
+ oracle: { model: "openai/gpt-5.6-sol", variant: "high" },
631
+ librarian: { model: "openai/gpt-5.6-luna", variant: "low" },
632
+ explorer: { model: "openai/gpt-5.6-luna", variant: "low" },
633
+ designer: { model: "openai/gpt-5.6-luna", variant: "medium" },
634
+ fixer: { model: "openai/gpt-5.6-luna", variant: "medium" }
604
635
  },
605
636
  kimi: {
606
637
  orchestrator: { model: "kimi-for-coding/k2p5" },
@@ -3,28 +3,28 @@ export declare const GENERATED_PRESETS: readonly ["openai", "opencode-go"];
3
3
  export declare const MODEL_MAPPINGS: {
4
4
  readonly openai: {
5
5
  readonly orchestrator: {
6
- readonly model: "openai/gpt-5.5";
6
+ readonly model: "openai/gpt-5.6-terra";
7
7
  readonly variant: "medium";
8
8
  };
9
9
  readonly oracle: {
10
- readonly model: "openai/gpt-5.5";
10
+ readonly model: "openai/gpt-5.6-sol";
11
11
  readonly variant: "high";
12
12
  };
13
13
  readonly librarian: {
14
- readonly model: "openai/gpt-5.4-mini";
14
+ readonly model: "openai/gpt-5.6-luna";
15
15
  readonly variant: "low";
16
16
  };
17
17
  readonly explorer: {
18
- readonly model: "openai/gpt-5.4-mini";
18
+ readonly model: "openai/gpt-5.6-luna";
19
19
  readonly variant: "low";
20
20
  };
21
21
  readonly designer: {
22
- readonly model: "openai/gpt-5.4-mini";
22
+ readonly model: "openai/gpt-5.6-luna";
23
23
  readonly variant: "medium";
24
24
  };
25
25
  readonly fixer: {
26
- readonly model: "openai/gpt-5.5";
27
- readonly variant: "low";
26
+ readonly model: "openai/gpt-5.6-luna";
27
+ readonly variant: "medium";
28
28
  };
29
29
  };
30
30
  readonly kimi: {
@@ -17,6 +17,8 @@ export declare class CompanionManager {
17
17
  private readonly busyAgentSessions;
18
18
  private readonly config?;
19
19
  private companionProcess;
20
+ private wasSpawner;
21
+ private spawnedCompanionPid;
20
22
  constructor(sessionId: string, cwd: string, config?: CompanionConfig);
21
23
  onLoad(): void;
22
24
  /**
@@ -40,6 +42,7 @@ export declare class CompanionManager {
40
42
  onWaitingInput(): void;
41
43
  onInputResolved(): void;
42
44
  onExit(): void;
45
+ private removeOwnedPidFileIfNoSessionsRemain;
43
46
  /** One entry per running agent instance (two fixers → two cells). */
44
47
  private activeAgents;
45
48
  private flush;
@@ -15,7 +15,8 @@ export declare const POLL_INTERVAL_BACKGROUND_MS = 2000;
15
15
  export declare const MAX_POLL_TIME_MS: number;
16
16
  export declare const DEFAULT_MAX_SUBAGENT_DEPTH = 3;
17
17
  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!";
18
- 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>";
18
+ export declare function formatSystemReminder(text: string): string;
19
+ export declare const PHASE_REMINDER: string;
19
20
  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.";
20
21
  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.";
21
22
  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.";