Browse Source

fix: rename grep MCP to gh_grep

Alvin Unreal 1 month ago
parent
commit
e76c13cd4c

+ 3 - 3
README.ja-JP.md

@@ -90,7 +90,7 @@ bunx oh-my-opencode-slim@beta install --background-subagents=yes
     "openai": {
       "orchestrator": { "model": "openai/gpt-5.5", "skills": ["*"], "mcps": ["*", "!context7"] },
       "oracle": { "model": "openai/gpt-5.5", "variant": "high", "skills": ["simplify"], "mcps": [] },
-      "librarian": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "grep_app"] },
+      "librarian": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "gh_grep"] },
       "explorer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] },
       "designer": { "model": "openai/gpt-5.4-mini", "variant": "medium", "skills": [], "mcps": [] },
       "fixer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] }
@@ -99,7 +99,7 @@ bunx oh-my-opencode-slim@beta install --background-subagents=yes
       "orchestrator": { "model": "opencode-go/glm-5.1", "skills": [ "*" ], "mcps": [ "*", "!context7" ] },
       "oracle": { "model": "opencode-go/deepseek-v4-pro", "variant": "max", "skills": ["simplify"], "mcps": [] },
       "council": { "model": "opencode-go/deepseek-v4-pro", "variant": "high", "skills": [], "mcps": [] },
-      "librarian": { "model": "opencode-go/minimax-m2.7", "skills": [], "mcps": [ "websearch", "context7", "grep_app" ] },
+      "librarian": { "model": "opencode-go/minimax-m2.7", "skills": [], "mcps": [ "websearch", "context7", "gh_grep" ] },
       "explorer": { "model": "opencode-go/minimax-m2.7", "skills": [], "mcps": [] },
       "designer": { "model": "opencode-go/kimi-k2.6", "variant": "medium", "skills": [], "mcps": [] },
       "fixer": { "model": "opencode-go/deepseek-v4-flash", "variant": "high", "skills": [], "mcps": [] }
@@ -516,7 +516,7 @@ ping all agents
 | **[Configuration](docs/configuration.md)** | 設定ファイルの配置場所、JSONC サポート、プロンプトの上書き、全オプションのリファレンス |
 | **[Maintainer Guide](docs/maintainers.md)** | Issue のトリアージルール、ラベルの意味、サポートの振り分け、リポジトリ運用ワークフロー |
 | **[Skills](docs/skills.md)** | `simplify`、`codemap`、`clonedeps` などの同梱スキル |
-| **[MCPs](docs/mcps.md)** | `websearch`、`context7`、`grep_app`、およびエージェントごとの MCP 権限の仕組み |
+| **[MCPs](docs/mcps.md)** | `websearch`、`context7`、`gh_grep`、およびエージェントごとの MCP 権限の仕組み |
 | **[Tools](docs/tools.md)** | `webfetch`、LSP ツール、コード検索、フォーマッターなどの組み込みツール機能 |
 
 ### 💡 プリセット

+ 3 - 3
README.ko-KR.md

@@ -89,7 +89,7 @@ OPENCODE_EXPERIMENTAL_BACKGROUND_SUBAGENTS=1 opencode
     "openai": {
       "orchestrator": { "model": "openai/gpt-5.5", "skills": ["*"], "mcps": ["*", "!context7"] },
       "oracle": { "model": "openai/gpt-5.5", "variant": "high", "skills": ["simplify"], "mcps": [] },
-      "librarian": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "grep_app"] },
+      "librarian": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "gh_grep"] },
       "explorer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] },
       "designer": { "model": "openai/gpt-5.4-mini", "variant": "medium", "skills": [], "mcps": [] },
       "fixer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] }
@@ -98,7 +98,7 @@ OPENCODE_EXPERIMENTAL_BACKGROUND_SUBAGENTS=1 opencode
       "orchestrator": { "model": "opencode-go/glm-5.1", "skills": [ "*" ], "mcps": [ "*", "!context7" ] },
       "oracle": { "model": "opencode-go/deepseek-v4-pro", "variant": "max", "skills": ["simplify"], "mcps": [] },
       "council": { "model": "opencode-go/deepseek-v4-pro", "variant": "high", "skills": [], "mcps": [] },
-      "librarian": { "model": "opencode-go/minimax-m2.7", "skills": [], "mcps": [ "websearch", "context7", "grep_app" ] },
+      "librarian": { "model": "opencode-go/minimax-m2.7", "skills": [], "mcps": [ "websearch", "context7", "gh_grep" ] },
       "explorer": { "model": "opencode-go/minimax-m2.7", "skills": [], "mcps": [] },
       "designer": { "model": "opencode-go/kimi-k2.6", "variant": "medium", "skills": [], "mcps": [] },
       "fixer": { "model": "opencode-go/deepseek-v4-flash", "variant": "high", "skills": [], "mcps": [] }
@@ -513,7 +513,7 @@ ping all agents
 | **[Configuration](docs/configuration.md)** | 설정 파일 위치, JSONC 지원, 프롬프트 오버라이드, 전체 옵션 레퍼런스 |
 | **[Maintainer Guide](docs/maintainers.md)** | 이슈 트리아지 규칙, 라벨 의미, 지원 라우팅, 저장소 유지보수 워크플로우 |
 | **[Skills](docs/skills.md)** | `simplify`, `codemap`, `clonedeps`, `deepwork`, `oh-my-opencode-slim` 등 번들된 스킬 |
-| **[MCPs](docs/mcps.md)** | `websearch`, `context7`, `grep_app` 및 에이전트별 MCP 권한 동작 방식 |
+| **[MCPs](docs/mcps.md)** | `websearch`, `context7`, `gh_grep` 및 에이전트별 MCP 권한 동작 방식 |
 | **[Tools](docs/tools.md)** | `webfetch`, LSP 도구, 코드 검색, 포매터 등 내장 도구 기능 |
 
 ### 💡 프리셋

+ 3 - 3
README.md

@@ -108,7 +108,7 @@ The default generated configuration includes both `openai` and `opencode-go` pre
     "openai": {
       "orchestrator": { "model": "openai/gpt-5.5", "skills": ["*"], "mcps": ["*", "!context7"] },
       "oracle": { "model": "openai/gpt-5.5", "variant": "high", "skills": ["simplify"], "mcps": [] },
-      "librarian": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "grep_app"] },
+      "librarian": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "gh_grep"] },
       "explorer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] },
       "designer": { "model": "openai/gpt-5.4-mini", "variant": "medium", "skills": [], "mcps": [] },
       "fixer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] }
@@ -117,7 +117,7 @@ The default generated configuration includes both `openai` and `opencode-go` pre
       "orchestrator": { "model": "opencode-go/glm-5.1", "skills": [ "*" ], "mcps": [ "*", "!context7" ] },
       "oracle": { "model": "opencode-go/deepseek-v4-pro", "variant": "max", "skills": ["simplify"], "mcps": [] },
       "council": { "model": "opencode-go/deepseek-v4-pro", "variant": "high", "skills": [], "mcps": [] },
-      "librarian": { "model": "opencode-go/minimax-m2.7", "skills": [], "mcps": [ "websearch", "context7", "grep_app" ] },
+      "librarian": { "model": "opencode-go/minimax-m2.7", "skills": [], "mcps": [ "websearch", "context7", "gh_grep" ] },
       "explorer": { "model": "opencode-go/minimax-m2.7", "skills": [], "mcps": [] },
       "designer": { "model": "opencode-go/kimi-k2.6", "variant": "medium", "skills": [], "mcps": [] },
       "fixer": { "model": "opencode-go/deepseek-v4-flash", "variant": "high", "skills": [], "mcps": [] }
@@ -534,7 +534,7 @@ Use this section as a map: start with installation, then jump to features, confi
 | **[Configuration](docs/configuration.md)** | Config file locations, JSONC support, prompt overrides, and full option reference |
 | **[Maintainer Guide](docs/maintainers.md)** | Issue triage rules, label meanings, support routing, and repo maintenance workflow |
 | **[Skills](docs/skills.md)** | Bundled skills such as `simplify`, `codemap`, `clonedeps`, `deepwork`, and `oh-my-opencode-slim` |
-| **[MCPs](docs/mcps.md)** | `websearch`, `context7`, `grep_app`, and how MCP permissions work per agent |
+| **[MCPs](docs/mcps.md)** | `websearch`, `context7`, `gh_grep`, and how MCP permissions work per agent |
 | **[Tools](docs/tools.md)** | Built-in tool capabilities like `webfetch`, LSP tools, code search, and formatters |
 
 ### 💡 Presets

+ 3 - 3
README.zh-CN.md

@@ -86,7 +86,7 @@ bunx oh-my-opencode-slim@beta install --background-subagents=yes
     "openai": {
       "orchestrator": { "model": "openai/gpt-5.5", "skills": ["*"], "mcps": ["*", "!context7"] },
       "oracle": { "model": "openai/gpt-5.5", "variant": "high", "skills": ["simplify"], "mcps": [] },
-      "librarian": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "grep_app"] },
+      "librarian": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "gh_grep"] },
       "explorer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] },
       "designer": { "model": "openai/gpt-5.4-mini", "variant": "medium", "skills": [], "mcps": [] },
       "fixer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] }
@@ -95,7 +95,7 @@ bunx oh-my-opencode-slim@beta install --background-subagents=yes
       "orchestrator": { "model": "opencode-go/glm-5.1", "skills": [ "*" ], "mcps": [ "*", "!context7" ] },
       "oracle": { "model": "opencode-go/deepseek-v4-pro", "variant": "max", "skills": ["simplify"], "mcps": [] },
       "council": { "model": "opencode-go/deepseek-v4-pro", "variant": "high", "skills": [], "mcps": [] },
-      "librarian": { "model": "opencode-go/minimax-m2.7", "skills": [], "mcps": [ "websearch", "context7", "grep_app" ] },
+      "librarian": { "model": "opencode-go/minimax-m2.7", "skills": [], "mcps": [ "websearch", "context7", "gh_grep" ] },
       "explorer": { "model": "opencode-go/minimax-m2.7", "skills": [], "mcps": [] },
       "designer": { "model": "opencode-go/kimi-k2.6", "variant": "medium", "skills": [], "mcps": [] },
       "fixer": { "model": "opencode-go/deepseek-v4-flash", "variant": "high", "skills": [], "mcps": [] }
@@ -511,7 +511,7 @@ ping all agents
 | **[配置指南 (docs/configuration.md)](docs/configuration.md)** | 配置文件位置、JSONC 支持、提示词覆盖以及完整的选项参考 |
 | **[维护者指南 (docs/maintainers.md)](docs/maintainers.md)** | 问题分流规则、标签含义、支持路由以及仓库维护工作流 |
 | **[技能列表 (Skills) (docs/skills.md)](docs/skills.md)** | 捆绑的技能,如 `simplify`、`codemap` 和 `clonedeps` |
-| **[MCP 服务 (docs/mcps.md)](docs/mcps.md)** | `websearch`、`context7`、`grep_app` 以及每个智能体的 MCP 权限工作机制 |
+| **[MCP 服务 (docs/mcps.md)](docs/mcps.md)** | `websearch`、`context7`、`gh_grep` 以及每个智能体的 MCP 权限工作机制 |
 | **[工具说明 (docs/tools.md)](docs/tools.md)** | 内置工具能力,如 `webfetch`、LSP 工具、代码搜索和格式化工具 |
 
 ### 💡 预设配置

+ 1 - 1
docs/authors-preset.md

@@ -13,7 +13,7 @@ This is the exact configuration the author runs day-to-day.
     "openai": { "orchestrator": { "model": "openai/gpt-5.5-fast", "skills": [ "*" ], "mcps": [ "*", "!context7"] },
         "oracle": { "model": "openai/gpt-5.5-fast", "variant": "high", "skills": [], "mcps": [] },
         "council": { "model": "openai/gpt-5.5-fast" },
-        "librarian": { "model": "openai/gpt-5.3-codex-spark", "variant": "low", "skills": [], "mcps": [ "websearch", "context7", "grep_app" ] },
+        "librarian": { "model": "openai/gpt-5.3-codex-spark", "variant": "low", "skills": [], "mcps": [ "websearch", "context7", "gh_grep" ] },
         "explorer": { "model": "openai/gpt-5.3-codex-spark", "variant": "low", "skills": [], "mcps": [] },
         "designer": { "model": "github-copilot/gemini-3.1-pro-preview", "skills": [], "mcps": [] },
         "fixer": { "model": "openai/gpt-5.3-codex-spark", "variant": "low", "skills": [], "mcps": [] }

+ 3 - 3
docs/mcps.md

@@ -10,7 +10,7 @@ Built-in Model Context Protocol (MCP) servers ship with oh-my-opencode-slim and
 |-----|---------|----------|
 | `websearch` | Real-time web search via Exa AI | `https://mcp.exa.ai/mcp` |
 | `context7` | Official library documentation (up-to-date) | `https://mcp.context7.com/mcp` |
-| `grep_app` | GitHub code search via grep.app | `https://mcp.grep.app` |
+| `gh_grep` | GitHub code search via grep.app | `https://mcp.grep.app` |
 
 ---
 
@@ -19,7 +19,7 @@ Built-in Model Context Protocol (MCP) servers ship with oh-my-opencode-slim and
 | Agent | Default MCPs |
 |-------|-------------|
 | `orchestrator` | `*`, `!context7` |
-| `librarian` | `websearch`, `context7`, `grep_app` |
+| `librarian` | `websearch`, `context7`, `gh_grep` |
 | `designer` | none |
 | `oracle` | none |
 | `explorer` | none |
@@ -55,7 +55,7 @@ Control which MCPs each agent can use via the `mcps` array in your preset config
         "mcps": ["*", "!context7"]
       },
       "librarian": {
-        "mcps": ["websearch", "context7", "grep_app"]
+        "mcps": ["websearch", "context7", "gh_grep"]
       },
       "oracle": {
         "mcps": ["*", "!websearch"]

+ 1 - 1
docs/quick-reference.md

@@ -24,7 +24,7 @@
 | Doc | Contents |
 |-----|----------|
 | [Skills](skills.md) | `simplify`, `codemap`, `clonedeps` — skills assignment syntax |
-| [MCPs](mcps.md) | `websearch`, `context7`, `grep_app` — permissions per agent, global disable |
+| [MCPs](mcps.md) | `websearch`, `context7`, `gh_grep` — permissions per agent, global disable |
 | [Tools](tools.md) | Background tasks, LSP, code search (`ast_grep`), formatters |
 | [Configuration](configuration.md) | Config files, prompt overriding, JSONC, full option reference table |
 

+ 1 - 1
docs/thirty-dollars-preset.md

@@ -15,7 +15,7 @@ It uses Codex Plus for the OpenAI models and GitHub Copilot for the premium coun
       "thirtydollars": { "orchestrator": { "model": "openai/gpt-5.5", "skills": [ "*" ], "mcps": [ "*", "websearch"] },
         "oracle": { "model": "openai/gpt-5.5", "variant": "high", "skills": [], "mcps": [] },
         "council": { "model": "openai/gpt-5.5" },
-        "librarian": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [ "websearch", "context7", "grep_app" ] },
+        "librarian": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [ "websearch", "context7", "gh_grep" ] },
         "explorer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] },
         "designer": { "model": "github-copilot/gemini-3.1-pro-preview", "skills": [], "mcps": [] },
         "fixer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] }

+ 1 - 1
src/agents/fixer.ts

@@ -17,7 +17,7 @@ const FIXER_PROMPT = `You are Fixer - a fast, focused implementation specialist.
 ${WRITABLE_FILE_OPERATIONS_RULES}
 
 **Constraints**:
-- NO external research (no websearch, context7, grep_app)
+- NO external research (no websearch, context7, gh_grep)
 - NO delegation or spawning subagents
 - No multi-step research/planning; minimal execution sequence ok
 - If context is insufficient: use grep/glob/read directly — do not delegate

+ 1 - 1
src/agents/librarian.ts

@@ -13,7 +13,7 @@ const LIBRARIAN_PROMPT = `You are Librarian - a research specialist for codebase
 
 **Tools to Use**:
 - context7: Official documentation lookup
-- grep_app: Search GitHub repositories
+- gh_grep: Search GitHub repositories
 - websearch: General web search for docs
 
 ${READONLY_FILE_OPERATIONS_RULES}

+ 1 - 1
src/cli/providers.test.ts

@@ -183,7 +183,7 @@ describe('providers', () => {
     expect(agents.orchestrator.mcps).toEqual(['*', '!context7']);
     expect(agents.librarian.mcps).toContain('websearch');
     expect(agents.librarian.mcps).toContain('context7');
-    expect(agents.librarian.mcps).toContain('grep_app');
+    expect(agents.librarian.mcps).toContain('gh_grep');
     expect(agents.designer.mcps).toEqual([]);
   });
 });

+ 2 - 2
src/config/agent-mcps.test.ts

@@ -19,10 +19,10 @@ describe('parseList', () => {
       parseList(DEFAULT_AGENT_MCPS.orchestrator, [
         'websearch',
         'context7',
-        'grep_app',
+        'gh_grep',
         'custom-mcp',
       ]),
-    ).toEqual(['websearch', 'grep_app', 'custom-mcp']);
+    ).toEqual(['websearch', 'gh_grep', 'custom-mcp']);
   });
 
   test('wildcard with exclusions', () => {

+ 1 - 1
src/config/agent-mcps.ts

@@ -11,7 +11,7 @@ export const DEFAULT_AGENT_MCPS: Record<AgentName, string[]> = {
   orchestrator: ['*', '!context7'],
   designer: [],
   oracle: [],
-  librarian: ['websearch', 'context7', 'grep_app'],
+  librarian: ['websearch', 'context7', 'gh_grep'],
   explorer: [],
   fixer: [],
   observer: [],

+ 1 - 1
src/config/schema.ts

@@ -163,7 +163,7 @@ export const WebsearchConfigSchema = z.object({
 export type WebsearchConfig = z.infer<typeof WebsearchConfigSchema>;
 
 // MCP names
-export const McpNameSchema = z.enum(['websearch', 'context7', 'grep_app']);
+export const McpNameSchema = z.enum(['websearch', 'context7', 'gh_grep']);
 export type McpName = z.infer<typeof McpNameSchema>;
 
 export const InterviewConfigSchema = z.object({

+ 1 - 1
src/hooks/json-error-recovery/hook.ts

@@ -5,7 +5,7 @@ export const JSON_ERROR_TOOL_EXCLUDE_LIST = [
   'read',
   'glob',
   'webfetch',
-  'grep_app_searchgithub',
+  'gh_grep_searchgithub',
   'websearch_web_search_exa',
 ] as const;
 

+ 1 - 1
src/mcp/grep-app.ts

@@ -4,7 +4,7 @@ import type { RemoteMcpConfig } from './types';
  * grep.app - ultra-fast code search across GitHub repositories
  * @see https://grep.app
  */
-export const grep_app: RemoteMcpConfig = {
+export const gh_grep: RemoteMcpConfig = {
   type: 'remote',
   url: 'https://mcp.grep.app',
   oauth: false,

+ 11 - 11
src/mcp/index.test.ts

@@ -8,7 +8,7 @@ describe('createBuiltinMcps', () => {
 
     expect(names).toContain('websearch');
     expect(names).toContain('context7');
-    expect(names).toContain('grep_app');
+    expect(names).toContain('gh_grep');
   });
 
   test('returns all MCPs with empty disabled list', () => {
@@ -18,7 +18,7 @@ describe('createBuiltinMcps', () => {
     expect(names.length).toBe(3);
     expect(names).toContain('websearch');
     expect(names).toContain('context7');
-    expect(names).toContain('grep_app');
+    expect(names).toContain('gh_grep');
   });
 
   test('excludes single disabled MCP', () => {
@@ -27,21 +27,21 @@ describe('createBuiltinMcps', () => {
 
     expect(names).not.toContain('websearch');
     expect(names).toContain('context7');
-    expect(names).toContain('grep_app');
+    expect(names).toContain('gh_grep');
   });
 
   test('excludes multiple disabled MCPs', () => {
-    const mcps = createBuiltinMcps(['websearch', 'grep_app']);
+    const mcps = createBuiltinMcps(['websearch', 'gh_grep']);
     const names = Object.keys(mcps);
 
     expect(names).not.toContain('websearch');
-    expect(names).not.toContain('grep_app');
+    expect(names).not.toContain('gh_grep');
     expect(names).toContain('context7');
     expect(names.length).toBe(1);
   });
 
   test('excludes all MCPs when all disabled', () => {
-    const mcps = createBuiltinMcps(['websearch', 'context7', 'grep_app']);
+    const mcps = createBuiltinMcps(['websearch', 'context7', 'gh_grep']);
     const names = Object.keys(mcps);
 
     expect(names.length).toBe(0);
@@ -55,7 +55,7 @@ describe('createBuiltinMcps', () => {
     expect(names.length).toBe(3);
     expect(names).toContain('websearch');
     expect(names).toContain('context7');
-    expect(names).toContain('grep_app');
+    expect(names).toContain('gh_grep');
   });
 
   test('MCP configs have required properties', () => {
@@ -86,11 +86,11 @@ describe('createBuiltinMcps', () => {
     expect('url' in context7).toBe(true);
   });
 
-  test('grep_app MCP has correct structure', () => {
+  test('gh_grep MCP has correct structure', () => {
     const mcps = createBuiltinMcps();
-    const grep_app = mcps.grep_app;
+    const gh_grep = mcps.gh_grep;
 
-    expect(grep_app).toBeDefined();
-    expect('url' in grep_app).toBe(true);
+    expect(gh_grep).toBeDefined();
+    expect('url' in gh_grep).toBe(true);
   });
 });

+ 2 - 2
src/mcp/index.ts

@@ -1,6 +1,6 @@
 import type { McpName, WebsearchConfig } from '../config';
 import { context7 } from './context7';
-import { grep_app } from './grep-app';
+import { gh_grep } from './grep-app';
 import type { McpConfig } from './types';
 import { createWebsearchConfig, websearch } from './websearch';
 
@@ -9,7 +9,7 @@ export type { LocalMcpConfig, McpConfig, RemoteMcpConfig } from './types';
 const allBuiltinMcps: Record<McpName, McpConfig> = {
   websearch,
   context7,
-  grep_app,
+  gh_grep,
 };
 
 /**

+ 1 - 1
src/skills/oh-my-opencode-slim/SKILL.md

@@ -131,7 +131,7 @@ Edit the active preset under `presets.<preset>.<agent>`:
         "model": "openai/gpt-5.4-mini",
         "variant": "low",
         "skills": [],
-        "mcps": ["websearch", "context7", "grep_app"]
+        "mcps": ["websearch", "context7", "gh_grep"]
       }
     }
   }