oh-my-opencode 2.13.2 → 2.14.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.
package/README.ja.md CHANGED
@@ -10,6 +10,7 @@
10
10
  > | [<img alt="Discord link" src="https://img.shields.io/discord/1452487457085063218?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=flat-square" width="156px" />](https://discord.gg/PUwSMR9XNk) | [Discordコミュニティ](https://discord.gg/PUwSMR9XNk)に参加して、コントリビューターや`oh-my-opencode`仲間とつながりましょう。 |
11
11
  > | :-----| :----- |
12
12
  > | [<img alt="X link" src="https://img.shields.io/badge/Follow-%40justsisyphus-00CED1?style=flat-square&logo=x&labelColor=black" width="156px" />](https://x.com/justsisyphus) | `oh-my-opencode`に関するニュースは私のXアカウントで投稿していましたが、無実の罪で凍結されたため、<br />[@justsisyphus](https://x.com/justsisyphus)が代わりに更新を投稿しています。 |
13
+ > | [<img alt="GitHub Follow" src="https://img.shields.io/github/followers/code-yeongyu?style=flat-square&logo=github&labelColor=black&color=24292f" width="156px" />](https://github.com/code-yeongyu) | GitHubで[@code-yeongyu](https://github.com/code-yeongyu)をフォローして、他のプロジェクトもチェックしてください。 |
13
14
 
14
15
  <!-- <CENTERED SECTION FOR GITHUB DISPLAY> -->
15
16
 
package/README.md CHANGED
@@ -10,6 +10,7 @@
10
10
  > | [<img alt="Discord link" src="https://img.shields.io/discord/1452487457085063218?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=flat-square" width="156px" />](https://discord.gg/PUwSMR9XNk) | Join our [Discord community](https://discord.gg/PUwSMR9XNk) to connect with contributors and fellow `oh-my-opencode` users. |
11
11
  > | :-----| :----- |
12
12
  > | [<img alt="X link" src="https://img.shields.io/badge/Follow-%40justsisyphus-00CED1?style=flat-square&logo=x&labelColor=black" width="156px" />](https://x.com/justsisyphus) | News and updates for `oh-my-opencode` used to be posted on my X account. <br /> Since it was suspended mistakenly, [@justsisyphus](https://x.com/justsisyphus) now posts updates on my behalf. |
13
+ > | [<img alt="GitHub Follow" src="https://img.shields.io/github/followers/code-yeongyu?style=flat-square&logo=github&labelColor=black&color=24292f" width="156px" />](https://github.com/code-yeongyu) | Follow [@code-yeongyu](https://github.com/code-yeongyu) on GitHub for more projects. |
13
14
 
14
15
  <!-- <CENTERED SECTION FOR GITHUB DISPLAY> -->
15
16
 
@@ -41,7 +42,7 @@ No stupid token consumption massive subagents here. No bloat tools here.
41
42
  [![GitHub Issues](https://img.shields.io/github/issues/code-yeongyu/oh-my-opencode?color=ff80eb&labelColor=black&style=flat-square)](https://github.com/code-yeongyu/oh-my-opencode/issues)
42
43
  [![License](https://img.shields.io/badge/license-SUL--1.0-white?labelColor=black&style=flat-square)](https://github.com/code-yeongyu/oh-my-opencode/blob/master/LICENSE.md)
43
44
 
44
- [English](README.md) | [한국어](README.ko.md) | [日本語](README.ja.md) | [简体中文](README.zh-cn.md)
45
+ [English](README.md) | [日本語](README.ja.md) | [简体中文](README.zh-cn.md)
45
46
 
46
47
  </div>
47
48
 
@@ -582,6 +583,7 @@ These tools enable agents to reference previous conversations and maintain conti
582
583
  - Use camelCase for function names
583
584
  ```
584
585
  - **Online**: Project rules aren't everything. Built-in MCPs for extended capabilities:
586
+ - **websearch**: Real-time web search powered by [Exa AI](https://exa.ai)
585
587
  - **context7**: Official documentation lookup
586
588
  - **grep_app**: Ultra-fast code search across public GitHub repos (great for finding implementation examples)
587
589
 
@@ -983,8 +985,9 @@ Available hooks: `todo-continuation-enforcer`, `context-window-monitor`, `sessio
983
985
 
984
986
  ### MCPs
985
987
 
986
- Context7 and grep.app MCP enabled by default.
988
+ Exa, Context7 and grep.app MCP enabled by default.
987
989
 
990
+ - **websearch**: Real-time web search powered by [Exa AI](https://exa.ai) - searches the web and returns relevant content
988
991
  - **context7**: Fetches up-to-date official documentation for libraries
989
992
  - **grep_app**: Ultra-fast code search across millions of public GitHub repositories via [grep.app](https://grep.app)
990
993
 
@@ -992,7 +995,7 @@ Don't want them? Disable via `disabled_mcps` in `~/.config/opencode/oh-my-openco
992
995
 
993
996
  ```json
994
997
  {
995
- "disabled_mcps": ["context7", "grep_app"]
998
+ "disabled_mcps": ["websearch", "context7", "grep_app"]
996
999
  }
997
1000
  ```
998
1001
 
package/README.zh-cn.md CHANGED
@@ -10,6 +10,7 @@
10
10
  > | [<img alt="Discord link" src="https://img.shields.io/discord/1452487457085063218?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=flat-square" width="156px" />](https://discord.gg/PUwSMR9XNk) | 加入我们的 [Discord 社区](https://discord.gg/PUwSMR9XNk),和贡献者们、`oh-my-opencode` 用户们一起交流。 |
11
11
  > | :-----| :----- |
12
12
  > | [<img alt="X link" src="https://img.shields.io/badge/Follow-%40justsisyphus-00CED1?style=flat-square&logo=x&labelColor=black" width="156px" />](https://x.com/justsisyphus) | `oh-my-opencode` 的消息之前在我的 X 账号发,但账号被无辜封了,<br />现在 [@justsisyphus](https://x.com/justsisyphus) 替我发更新。 |
13
+ > | [<img alt="GitHub Follow" src="https://img.shields.io/github/followers/code-yeongyu?style=flat-square&logo=github&labelColor=black&color=24292f" width="156px" />](https://github.com/code-yeongyu) | 在 GitHub 上关注 [@code-yeongyu](https://github.com/code-yeongyu),了解更多项目。 |
13
14
 
14
15
  <!-- <CENTERED SECTION FOR GITHUB DISPLAY> -->
15
16
 
package/dist/cli/index.js CHANGED
@@ -2657,7 +2657,7 @@ var require_napi = __commonJS((exports, module) => {
2657
2657
  var require_package = __commonJS((exports, module) => {
2658
2658
  module.exports = {
2659
2659
  name: "oh-my-opencode",
2660
- version: "2.13.1",
2660
+ version: "2.13.2",
2661
2661
  description: "OpenCode plugin - custom agents (oracle, librarian) and enhanced features",
2662
2662
  main: "dist/index.js",
2663
2663
  types: "dist/index.d.ts",
@@ -22518,7 +22518,7 @@ function date4(params) {
22518
22518
  // node_modules/zod/v4/classic/external.js
22519
22519
  config(en_default());
22520
22520
  // src/mcp/types.ts
22521
- var McpNameSchema = exports_external.enum(["context7", "grep_app"]);
22521
+ var McpNameSchema = exports_external.enum(["websearch", "context7", "grep_app"]);
22522
22522
  var AnyMcpNameSchema = exports_external.string().min(1);
22523
22523
 
22524
22524
  // src/config/schema.ts
@@ -22715,6 +22715,11 @@ var RalphLoopConfigSchema = exports_external.object({
22715
22715
  default_max_iterations: exports_external.number().min(1).max(1000).default(100),
22716
22716
  state_dir: exports_external.string().optional()
22717
22717
  });
22718
+ var BackgroundTaskConfigSchema = exports_external.object({
22719
+ defaultConcurrency: exports_external.number().min(1).optional(),
22720
+ providerConcurrency: exports_external.record(exports_external.string(), exports_external.number().min(1)).optional(),
22721
+ modelConcurrency: exports_external.record(exports_external.string(), exports_external.number().min(1)).optional()
22722
+ });
22718
22723
  var OhMyOpenCodeConfigSchema = exports_external.object({
22719
22724
  $schema: exports_external.string().optional(),
22720
22725
  disabled_mcps: exports_external.array(AnyMcpNameSchema).optional(),
@@ -22730,7 +22735,8 @@ var OhMyOpenCodeConfigSchema = exports_external.object({
22730
22735
  experimental: ExperimentalConfigSchema.optional(),
22731
22736
  auto_update: exports_external.boolean().optional(),
22732
22737
  skills: SkillsConfigSchema.optional(),
22733
- ralph_loop: RalphLoopConfigSchema.optional()
22738
+ ralph_loop: RalphLoopConfigSchema.optional(),
22739
+ background_task: BackgroundTaskConfigSchema.optional()
22734
22740
  });
22735
22741
  // src/cli/doctor/checks/config.ts
22736
22742
  var USER_CONFIG_DIR2 = join5(homedir4(), ".config", "opencode");
@@ -12,7 +12,6 @@ export declare const BuiltinSkillNameSchema: z.ZodEnum<{
12
12
  playwright: "playwright";
13
13
  }>;
14
14
  export declare const OverridableAgentNameSchema: z.ZodEnum<{
15
- plan: "plan";
16
15
  Sisyphus: "Sisyphus";
17
16
  oracle: "oracle";
18
17
  librarian: "librarian";
@@ -21,6 +20,7 @@ export declare const OverridableAgentNameSchema: z.ZodEnum<{
21
20
  "document-writer": "document-writer";
22
21
  "multimodal-looker": "multimodal-looker";
23
22
  build: "build";
23
+ plan: "plan";
24
24
  "OpenCode-Builder": "OpenCode-Builder";
25
25
  "Planner-Sisyphus": "Planner-Sisyphus";
26
26
  }>;
@@ -770,6 +770,11 @@ export declare const RalphLoopConfigSchema: z.ZodObject<{
770
770
  default_max_iterations: z.ZodDefault<z.ZodNumber>;
771
771
  state_dir: z.ZodOptional<z.ZodString>;
772
772
  }, z.core.$strip>;
773
+ export declare const BackgroundTaskConfigSchema: z.ZodObject<{
774
+ defaultConcurrency: z.ZodOptional<z.ZodNumber>;
775
+ providerConcurrency: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
776
+ modelConcurrency: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
777
+ }, z.core.$strip>;
773
778
  export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
774
779
  $schema: z.ZodOptional<z.ZodString>;
775
780
  disabled_mcps: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -1418,10 +1423,16 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1418
1423
  default_max_iterations: z.ZodDefault<z.ZodNumber>;
1419
1424
  state_dir: z.ZodOptional<z.ZodString>;
1420
1425
  }, z.core.$strip>>;
1426
+ background_task: z.ZodOptional<z.ZodObject<{
1427
+ defaultConcurrency: z.ZodOptional<z.ZodNumber>;
1428
+ providerConcurrency: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
1429
+ modelConcurrency: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
1430
+ }, z.core.$strip>>;
1421
1431
  }, z.core.$strip>;
1422
1432
  export type OhMyOpenCodeConfig = z.infer<typeof OhMyOpenCodeConfigSchema>;
1423
1433
  export type AgentOverrideConfig = z.infer<typeof AgentOverrideConfigSchema>;
1424
1434
  export type AgentOverrides = z.infer<typeof AgentOverridesSchema>;
1435
+ export type BackgroundTaskConfig = z.infer<typeof BackgroundTaskConfigSchema>;
1425
1436
  export type AgentName = z.infer<typeof AgentNameSchema>;
1426
1437
  export type HookName = z.infer<typeof HookNameSchema>;
1427
1438
  export type BuiltinCommandName = z.infer<typeof BuiltinCommandNameSchema>;
@@ -0,0 +1,10 @@
1
+ import type { BackgroundTaskConfig } from "../../config/schema";
2
+ export declare class ConcurrencyManager {
3
+ private config?;
4
+ private counts;
5
+ private queues;
6
+ constructor(config?: BackgroundTaskConfig);
7
+ getConcurrencyLimit(model: string): number;
8
+ acquire(model: string): Promise<void>;
9
+ release(model: string): void;
10
+ }
@@ -1,2 +1,3 @@
1
1
  export * from "./types";
2
2
  export { BackgroundManager } from "./manager";
3
+ export { ConcurrencyManager } from "./concurrency";
@@ -1,5 +1,6 @@
1
1
  import type { PluginInput } from "@opencode-ai/plugin";
2
2
  import type { BackgroundTask, LaunchInput } from "./types";
3
+ import type { BackgroundTaskConfig } from "../../config/schema";
3
4
  interface EventProperties {
4
5
  sessionID?: string;
5
6
  info?: {
@@ -17,7 +18,8 @@ export declare class BackgroundManager {
17
18
  private client;
18
19
  private directory;
19
20
  private pollingInterval?;
20
- constructor(ctx: PluginInput);
21
+ private concurrencyManager;
22
+ constructor(ctx: PluginInput, config?: BackgroundTaskConfig);
21
23
  launch(input: LaunchInput): Promise<BackgroundTask>;
22
24
  getTask(id: string): BackgroundTask | undefined;
23
25
  getTasksByParentSession(sessionID: string): BackgroundTask[];
@@ -24,6 +24,7 @@ export interface BackgroundTask {
24
24
  providerID: string;
25
25
  modelID: string;
26
26
  };
27
+ model?: string;
27
28
  }
28
29
  export interface LaunchInput {
29
30
  description: string;
@@ -1,7 +1,11 @@
1
+ import { type LoadedSkill } from "../../features/opencode-skill-loader";
1
2
  import type { ParsedSlashCommand } from "./types";
3
+ export interface ExecutorOptions {
4
+ skills?: LoadedSkill[];
5
+ }
2
6
  export interface ExecuteResult {
3
7
  success: boolean;
4
8
  replacementText?: string;
5
9
  error?: string;
6
10
  }
7
- export declare function executeSlashCommand(parsed: ParsedSlashCommand): Promise<ExecuteResult>;
11
+ export declare function executeSlashCommand(parsed: ParsedSlashCommand, options?: ExecutorOptions): Promise<ExecuteResult>;
@@ -1,8 +1,12 @@
1
1
  import type { AutoSlashCommandHookInput, AutoSlashCommandHookOutput } from "./types";
2
+ import type { LoadedSkill } from "../../features/opencode-skill-loader";
2
3
  export * from "./detector";
3
4
  export * from "./executor";
4
5
  export * from "./constants";
5
6
  export * from "./types";
6
- export declare function createAutoSlashCommandHook(): {
7
+ export interface AutoSlashCommandHookOptions {
8
+ skills?: LoadedSkill[];
9
+ }
10
+ export declare function createAutoSlashCommandHook(options?: AutoSlashCommandHookOptions): {
7
11
  "chat.message": (input: AutoSlashCommandHookInput, output: AutoSlashCommandHookOutput) => Promise<void>;
8
12
  };
@@ -0,0 +1 @@
1
+ export {};