oh-my-opencode-slim 1.0.6 → 1.1.0

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 (56) hide show
  1. package/README.md +30 -17
  2. package/dist/cli/config-io.d.ts +1 -0
  3. package/dist/cli/divoom.d.ts +23 -0
  4. package/dist/cli/doctor.d.ts +38 -0
  5. package/dist/cli/index.js +469 -58
  6. package/dist/cli/providers.d.ts +3 -0
  7. package/dist/config/council-schema.d.ts +2 -2
  8. package/dist/config/index.d.ts +1 -1
  9. package/dist/config/loader.d.ts +46 -1
  10. package/dist/config/schema.d.ts +23 -0
  11. package/dist/divoom/council.gif +0 -0
  12. package/dist/divoom/designer.gif +0 -0
  13. package/dist/divoom/explorer.gif +0 -0
  14. package/dist/divoom/fixer.gif +0 -0
  15. package/dist/divoom/input.gif +0 -0
  16. package/dist/divoom/intro.gif +0 -0
  17. package/dist/divoom/librarian.gif +0 -0
  18. package/dist/divoom/manager.d.ts +57 -0
  19. package/dist/divoom/oracle.gif +0 -0
  20. package/dist/divoom/orchestrator.gif +0 -0
  21. package/dist/index.js +1304 -291
  22. package/dist/integrations/divoom/index.d.ts +3 -0
  23. package/dist/integrations/divoom/status-manager.d.ts +31 -0
  24. package/dist/integrations/divoom/swift-helper-source.d.ts +1 -0
  25. package/dist/integrations/divoom/swift-transport.d.ts +26 -0
  26. package/dist/integrations/divoom/types.d.ts +41 -0
  27. package/dist/multiplexer/tmux/index.d.ts +5 -0
  28. package/dist/tools/council.d.ts +2 -2
  29. package/dist/tools/fork/command.d.ts +28 -0
  30. package/dist/tools/fork/files.d.ts +33 -0
  31. package/dist/tools/fork/index.d.ts +10 -0
  32. package/dist/tools/fork/state.d.ts +7 -0
  33. package/dist/tools/fork/tools.d.ts +23 -0
  34. package/dist/tools/fork/vendor.d.ts +28 -0
  35. package/dist/tools/handoff/command.d.ts +29 -0
  36. package/dist/tools/handoff/files.d.ts +33 -0
  37. package/dist/tools/handoff/index.d.ts +10 -0
  38. package/dist/tools/handoff/state.d.ts +7 -0
  39. package/dist/tools/handoff/tools.d.ts +23 -0
  40. package/dist/tools/handoff/vendor.d.ts +28 -0
  41. package/dist/tools/index.d.ts +2 -0
  42. package/dist/tools/subtask/command.d.ts +30 -0
  43. package/dist/tools/subtask/files.d.ts +34 -0
  44. package/dist/tools/subtask/index.d.ts +11 -0
  45. package/dist/tools/subtask/state.d.ts +7 -0
  46. package/dist/tools/subtask/tools.d.ts +23 -0
  47. package/dist/tools/subtask/vendor.d.ts +27 -0
  48. package/dist/tui.d.ts +1 -0
  49. package/dist/tui.js +679 -11
  50. package/dist/utils/session.d.ts +11 -4
  51. package/oh-my-opencode-slim.schema.json +59 -0
  52. package/package.json +3 -2
  53. package/src/skills/clonedeps/README.md +23 -0
  54. package/src/skills/clonedeps/SKILL.md +237 -0
  55. package/src/skills/clonedeps/codemap.md +41 -0
  56. package/src/skills/codemap.md +8 -5
package/README.md CHANGED
@@ -39,12 +39,14 @@ bunx oh-my-opencode-slim@latest install
39
39
 
40
40
  The installer also registers the companion TUI plugin in OpenCode's
41
41
  `tui.json`, which adds a small sidebar showing specialist-agent status plus
42
- active/reusable task sessions. For manual setups, add `oh-my-opencode-slim` to
43
- the `plugin` array in both `opencode.json` and `tui.json`.
42
+ active/reusable task sessions. It also warms OpenCode's plugin cache so bunx
43
+ installs keep loading even after temporary directories are cleaned up. For
44
+ manual setups, add `oh-my-opencode-slim` to the `plugin` array in both
45
+ `opencode.json` and `tui.json`.
44
46
 
45
47
  ### Getting Started
46
48
 
47
- The installer generates both OpenAI and OpenCode Go presets, with OpenAI active by default. OpenAI uses `openai/gpt-5.5` for the higher-judgment agents and `openai/gpt-5.4-mini` for the faster scoped agents. To make OpenCode Go active during install, run `bunx oh-my-opencode-slim@latest install --preset=opencode-go`.
49
+ The installer generates both OpenAI and OpenCode Go presets, with OpenAI active by default. OpenAI uses `openai/gpt-5.5` for the higher-judgment agents and `openai/gpt-5.4-mini` for the faster scoped agents. To make OpenCode Go active during install, run `bunx oh-my-opencode-slim@latest install --preset=opencode-go` or change the default preset name in `~/.config/opencode/oh-my-opencode-slim.json` after installation.
48
50
 
49
51
  Then:
50
52
 
@@ -63,9 +65,9 @@ Then:
63
65
  4. **Update the models you want for each agent**
64
66
 
65
67
  > [!TIP]
66
- > Want to understand how automatic delegation works in practice? Review the **[Orchestrator prompt](https://github.com/alvinunreal/oh-my-opencode-slim/blob/master/src/agents/orchestrator.ts#L28)** — it contains the delegation rules, specialist routing logic, and the thresholds for when the main agent should hand work off to subagents.
68
+ > It's **recommended** to understand how automatic delegation works. The **[Orchestrator prompt](https://github.com/alvinunreal/oh-my-opencode-slim/blob/master/src/agents/orchestrator.ts#L28)** contains the delegation rules, specialist routing logic, and the thresholds for when the main agent should hand work off to subagents. You can alway delegate manually by calling a subagent via: `@agentName <task>`
67
69
 
68
- The default generated configuration includes both `openai` and `opencode-go` presets. Abbreviated:
70
+ The default generated configuration includes both `openai` and `opencode-go` presets.
69
71
 
70
72
  ```jsonc
71
73
  {
@@ -79,24 +81,29 @@ The default generated configuration includes both `openai` and `opencode-go` pre
79
81
  "explorer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] },
80
82
  "designer": { "model": "openai/gpt-5.4-mini", "variant": "medium", "skills": ["agent-browser"], "mcps": [] },
81
83
  "fixer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] }
84
+ },
85
+ "opencode-go": {
86
+ "orchestrator": { "model": "opencode-go/glm-5.1", "skills": [ "*" ], "mcps": [ "*", "!context7" ] },
87
+ "oracle": { "model": "opencode-go/deepseek-v4-pro", "variant": "max", "skills": ["simplify"], "mcps": [] },
88
+ "council": { "model": "opencode-go/deepseek-v4-pro", "variant": "high", "skills": [], "mcps": [] },
89
+ "librarian": { "model": "opencode-go/minimax-m2.7", "skills": [], "mcps": [ "websearch", "context7", "grep_app" ] },
90
+ "explorer": { "model": "opencode-go/minimax-m2.7", "skills": [], "mcps": [] },
91
+ "designer": { "model": "opencode-go/kimi-k2.6", "variant": "medium", "skills": [ "agent-browser" ], "mcps": [] },
92
+ "fixer": { "model": "opencode-go/deepseek-v4-flash", "variant": "high", "skills": [], "mcps": [] }
82
93
  }
83
94
  }
84
95
  }
85
96
  ```
86
97
 
87
- Session management is enabled by default even though it is not shown in the
88
- starter config. See **[Session Management](docs/session-management.md)** if you
89
- want to customize how many resumable child-agent sessions are remembered.
90
-
91
98
  ### For Alternative Providers
92
99
 
93
- To use OpenCode Go, Kimi, GitHub Copilot, ZAI Coding Plan, 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.
100
+ 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.
94
101
 
95
102
  The configuration guide also covers custom subagents via `agents.<name>`, where
96
103
  you can define both a normal `prompt` and an `orchestratorPrompt` block for
97
104
  delegation.
98
105
 
99
- You can also mix and match any models per agent. For model suggestions, see the **Recommended Models** listed under each agent below.
106
+ For model suggestions, see the **Recommended Models** listed under each agent below.
100
107
 
101
108
  ### ✅ Verify Your Setup
102
109
 
@@ -425,7 +432,7 @@ If any agent fails to respond, check your provider authentication and config fil
425
432
  ### Observer: The Silent Witness
426
433
 
427
434
  > [!NOTE]
428
- > **Why a separate agent?** If your Orchestrator model is not multimodal, enable Observer to handle images, screenshots, PDFs, and other visual files. Observer is disabled by default and gives the Orchestrator a dedicated multimodal reader without forcing you to change your main reasoning model. Set `disabled_agents: []` and an `observer` model in your configuration.
435
+ > **Why a separate agent?** If your Orchestrator model is not multimodal, enable Observer to handle images, screenshots, PDFs, and other visual files. Observer is disabled by default and gives the Orchestrator a dedicated multimodal reader without forcing you to change your main reasoning model. Set `disabled_agents: []` and an `observer` model in your configuration. The bundled `opencode-go` install preset does this automatically because its GLM Orchestrator is not multimodal.
429
436
 
430
437
  <table>
431
438
  <tr>
@@ -439,7 +446,7 @@ If any agent fails to respond, check your provider authentication and config fil
439
446
 
440
447
  - Images, screenshots, diagrams → `read` tool (native image support)
441
448
  - PDFs and binary documents → `read` tool (text + structure extraction)
442
- - **Disabled by default** — enable with `"disabled_agents": []` and configure a vision-capable model
449
+ - **Disabled by default** — enable with `"disabled_agents": []` and configure a vision-capable model; installing with `--preset=opencode-go` enables it with `opencode-go/kimi-k2.6`
443
450
 
444
451
  </td>
445
452
  </tr>
@@ -479,12 +486,15 @@ Use this section as a map: start with installation, then jump to features, confi
479
486
  | Doc | What it covers |
480
487
  |-----|----------------|
481
488
  | **[Council](docs/council.md)** | Run multiple models in parallel and synthesize a single answer with `@council` |
482
- | **[Interview](docs/interview.md)** | Turn rough ideas into a structured markdown spec through a browser-based Q&A flow |
483
489
  | **[Multiplexer Integration](docs/multiplexer-integration.md)** | Watch agents work live in Tmux or Zellij panes |
484
490
  | **[Session Management](docs/session-management.md)** | Reuse recent child-agent sessions with short aliases instead of starting over |
485
491
  | **[Todo Continuation](docs/todo-continuation.md)** | Auto-continue orchestrator sessions with cooldowns and safety checks |
486
492
  | **[Preset Switching](docs/preset-switching.md)** | Switch agent model presets at runtime with `/preset` |
493
+ | **[Subtask](docs/subtask.md)** | Run a bounded child worker with `/subtask` and return a structured summary to the main session |
487
494
  | **[Codemap](docs/codemap.md)** | Generate hierarchical codemaps to understand large codebases faster |
495
+ | **[Clonedeps](docs/clonedeps.md)** | Clone selected dependency source into an ignored local workspace for inspection |
496
+ | **[Interview](docs/interview.md)** | Turn rough ideas into a structured markdown spec through a browser-based Q&A flow |
497
+ | **[Divoom Display](docs/divoom.md)** | Mirror orchestrator and specialist-agent activity to a Divoom MiniToo Bluetooth display |
488
498
 
489
499
  ### ⚙️ Config & Reference
490
500
 
@@ -492,16 +502,17 @@ Use this section as a map: start with installation, then jump to features, confi
492
502
  |-----|----------------|
493
503
  | **[Configuration](docs/configuration.md)** | Config file locations, JSONC support, prompt overrides, and full option reference |
494
504
  | **[Maintainer Guide](docs/maintainers.md)** | Issue triage rules, label meanings, support routing, and repo maintenance workflow |
495
- | **[Skills](docs/skills.md)** | Built-in and recommended skills such as `simplify`, `agent-browser`, and `codemap` |
505
+ | **[Skills](docs/skills.md)** | Built-in and recommended skills such as `simplify`, `agent-browser`, `codemap`, and `clonedeps` |
496
506
  | **[MCPs](docs/mcps.md)** | `websearch`, `context7`, `grep_app`, and how MCP permissions work per agent |
497
507
  | **[Tools](docs/tools.md)** | Built-in tool capabilities like `webfetch`, LSP tools, code search, and formatters |
498
508
 
499
- ### 💡 Example Presets
509
+ ### 💡 Presets
500
510
 
501
511
  | Doc | What it covers |
502
512
  |-----|----------------|
503
513
  | **[Author's Preset](docs/authors-preset.md)** | The author's daily mixed-provider setup |
504
514
  | **[$30 Preset](docs/thirty-dollars-preset.md)** | A budget mixed-provider setup for around $30/month |
515
+ | **[OpenCode Go Preset](docs/opencode-go-preset.md)** | The bundled `opencode-go` preset generated by the installer |
505
516
 
506
517
  ---
507
518
 
@@ -512,7 +523,7 @@ Use this section as a map: start with installation, then jump to features, confi
512
523
  <p><sub>Every merged contribution leaves a mark on the realm.</sub></p>
513
524
 
514
525
  <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
515
- [![All Contributors](https://img.shields.io/badge/all_contributors-44-orange.svg?style=flat-square)](#contributors-)
526
+ [![All Contributors](https://img.shields.io/badge/all_contributors-46-orange.svg?style=flat-square)](#contributors-)
516
527
  <!-- ALL-CONTRIBUTORS-BADGE:END -->
517
528
  </div>
518
529
 
@@ -582,6 +593,8 @@ Use this section as a map: start with installation, then jump to features, confi
582
593
  <tr>
583
594
  <td align="center" valign="top" width="16.66%"><a href="https://github.com/gustavocaiano"><img src="https://avatars.githubusercontent.com/u/104129313?v=4?s=100" width="100px;" alt="Gustavo Caiano"/><br /><sub><b>Gustavo Caiano</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=gustavocaiano" title="Code">💻</a></td>
584
595
  <td align="center" valign="top" width="16.66%"><a href="https://github.com/ThomasMldr"><img src="https://avatars.githubusercontent.com/u/6631765?v=4?s=100" width="100px;" alt="Thomas Mulder"/><br /><sub><b>Thomas Mulder</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=ThomasMldr" title="Code">💻</a></td>
596
+ <td align="center" valign="top" width="16.66%"><a href="https://github.com/maou-shonen"><img src="https://avatars.githubusercontent.com/u/22576780?v=4?s=100" width="100px;" alt="魔王少年(maou shonen)"/><br /><sub><b>魔王少年(maou shonen)</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=maou-shonen" title="Code">💻</a></td>
597
+ <td align="center" valign="top" width="16.66%"><a href="https://github.com/jelasin"><img src="https://avatars.githubusercontent.com/u/97788570?v=4?s=100" width="100px;" alt=" Jelasin"/><br /><sub><b> Jelasin</b></sub></a><br /><a href="https://github.com/alvinunreal/oh-my-opencode-slim/commits?author=jelasin" title="Code">💻</a></td>
585
598
  </tr>
586
599
  </tbody>
587
600
  </table>
@@ -1,4 +1,5 @@
1
1
  import type { ConfigMergeResult, DetectedConfig, InstallConfig, OpenCodeConfig } from './types';
2
+ export declare function warmOpenCodePluginCache(): Promise<ConfigMergeResult | null>;
2
3
  /**
3
4
  * Strip JSON comments (single-line // and multi-line) and trailing commas for JSONC support.
4
5
  */
@@ -0,0 +1,23 @@
1
+ import type { DivoomStatus } from '../integrations/divoom/types';
2
+ export type DivoomCliResult = {
3
+ exitCode: number;
4
+ message?: string;
5
+ error?: string;
6
+ };
7
+ export type DivoomCliOptions = {
8
+ cwd?: string;
9
+ dryRun?: boolean;
10
+ detector?: () => Promise<string | null>;
11
+ transportFactory?: (config: {
12
+ status: DivoomStatus;
13
+ directory: string;
14
+ }) => {
15
+ sendStatus(update: {
16
+ status: DivoomStatus;
17
+ reason: string;
18
+ timestamp: number;
19
+ }): Promise<void>;
20
+ };
21
+ };
22
+ export declare function runDivoomCli(args: string[], options?: DivoomCliOptions): Promise<DivoomCliResult>;
23
+ export declare function detectDivoomAddress(): Promise<string | null>;
@@ -0,0 +1,38 @@
1
+ import { z } from 'zod';
2
+ import { type PluginConfig } from '../config/schema';
3
+ export type DoctorArgs = {
4
+ json?: boolean;
5
+ error?: string;
6
+ help?: boolean;
7
+ };
8
+ export declare function parseDoctorArgs(args: string[]): DoctorArgs;
9
+ export type ConfigCheckResult = {
10
+ scope: 'user' | 'project';
11
+ path: string | null;
12
+ exists: boolean;
13
+ ok: boolean;
14
+ config?: PluginConfig;
15
+ error?: {
16
+ kind: 'invalid-json' | 'invalid-schema' | 'read-error';
17
+ message: string;
18
+ issues?: z.ZodIssue[];
19
+ };
20
+ };
21
+ export type PresetCheckResult = {
22
+ preset: string;
23
+ ok: boolean;
24
+ error?: {
25
+ kind: 'missing-preset';
26
+ message: string;
27
+ };
28
+ };
29
+ export type DoctorResult = {
30
+ ok: boolean;
31
+ project: string;
32
+ configs: ConfigCheckResult[];
33
+ presetCheck?: PresetCheckResult;
34
+ };
35
+ export declare function runDoctorCheck(cwd: string): DoctorResult;
36
+ export declare function formatHumanDoctorResult(result: DoctorResult): string;
37
+ export declare function formatJsonDoctorResult(result: DoctorResult): string;
38
+ export declare function doctor(args: DoctorArgs): Promise<number>;