opencodekit 0.15.15 → 0.15.16

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.md CHANGED
@@ -80,8 +80,8 @@ Background Plugins:
80
80
  Supporting:
81
81
  • 30+ Skills (domain expertise loaded on-demand)
82
82
  • 26+ Commands (workflow shortcuts)
83
- • 3 MCP Services (context7, exa) + grep-search tool + skill-embedded MCPs
84
- • Custom Tools (memory-*, observation, grep-search, lsp-*)
83
+ • 3 MCP Services (context7, exa) + grepsearch tool + skill-embedded MCPs
84
+ • Custom Tools (memory-*, observation, grepsearch, lsp-*)
85
85
  • Beads task tracking (`bd` CLI for multi-session workflows)
86
86
  • Manual Handoffs (clean phase transitions)
87
87
  ```
@@ -223,9 +223,9 @@ You've successfully set up OpenCodeKit when:
223
223
  - ✅ Skills load on-demand (30+ skills)
224
224
  - ✅ Delegation is clear (build → specialized subagents)
225
225
  - ✅ `/handoff` creates portable bundles (.opencode/memory/handoffs/)
226
- - ✅ Tools configured (context7, grep-search + skill-embedded MCP)
226
+ - ✅ Tools configured (context7, grepsearch + skill-embedded MCP)
227
227
  - ✅ Background plugins active (enforcer, compactor, truncator)
228
- - ✅ Custom tools available (memory-_, observation, grep-search, lsp-_)
228
+ - ✅ Custom tools available (memory-_, observation, grepsearch, lsp-_)
229
229
  - ✅ Environment variables set (.opencode/.env with API keys)
230
230
 
231
231
  ---
package/dist/index.js CHANGED
@@ -750,16 +750,9 @@ var cac = (name = "") => new CAC(name);
750
750
  // package.json
751
751
  var package_default = {
752
752
  name: "opencodekit",
753
- version: "0.15.15",
753
+ version: "0.15.16",
754
754
  description: "CLI tool for bootstrapping and managing OpenCodeKit projects",
755
- keywords: [
756
- "agents",
757
- "cli",
758
- "mcp",
759
- "opencode",
760
- "opencodekit",
761
- "template"
762
- ],
755
+ keywords: ["agents", "cli", "mcp", "opencode", "opencodekit", "template"],
763
756
  license: "MIT",
764
757
  author: "OpenCodeKit",
765
758
  repository: {
@@ -769,10 +762,7 @@ var package_default = {
769
762
  bin: {
770
763
  ock: "dist/index.js"
771
764
  },
772
- files: [
773
- "dist",
774
- "README.md"
775
- ],
765
+ files: ["dist", "README.md"],
776
766
  type: "module",
777
767
  publishConfig: {
778
768
  access: "public",
@@ -816,9 +806,7 @@ var package_default = {
816
806
  engines: {
817
807
  bun: ">=1.3.2"
818
808
  },
819
- trustedDependencies: [
820
- "@beads/bd"
821
- ]
809
+ trustedDependencies: ["@beads/bd"]
822
810
  };
823
811
 
824
812
  // src/commands/agent.ts
@@ -189,8 +189,8 @@ Plugins run automatically in every session:
189
189
  - Requires: EXA_API_KEY
190
190
  - GitHub: https://github.com/exa-labs/exa-mcp-server
191
191
 
192
- 3. **grep-search** - Search 1M+ public GitHub repositories via grep.app
193
- - Native tool: `grep_search({ query: "...", language: [...] })`
192
+ 3. **grepsearch** - Search 1M+ public GitHub repositories via grep.app
193
+ - Native tool: `grepsearch({ query: "...", language: [...] })`
194
194
  - No API key needed (public service)
195
195
  - Direct HTTP wrapper (no MCP overhead)
196
196
 
@@ -4,13 +4,13 @@ mode: primary
4
4
  temperature: 0.2
5
5
  permission:
6
6
  write:
7
- "*": deny
7
+ "*": ask
8
8
  ".beads/artifacts/*/*.md": allow
9
9
  ".opencode/memory/plans/*.md": allow
10
10
  ".opencode/memory/project/*.md": allow
11
11
  ".opencode/plans/*.md": allow
12
12
  edit:
13
- "*": deny
13
+ "*": ask
14
14
  ".beads/artifacts/*/*.md": allow
15
15
  ".opencode/memory/plans/*.md": allow
16
16
  ".opencode/memory/project/*.md": allow
@@ -93,7 +93,7 @@ Run 2-3 tool calls in parallel.
93
93
  **Triggers:** "how do others", "compare", "best practices", "production patterns"
94
94
  **Target:** Summary, 3-5 code examples, tradeoffs, recommendation
95
95
 
96
- 1. Search GitHub with grep_search (vary queries for different angles)
96
+ 1. Search GitHub with grepsearch (vary queries for different angles)
97
97
  2. Compare 3-5 implementations from different repositories
98
98
  3. Synthesize common patterns
99
99
  4. Note tradeoffs and edge cases
@@ -101,8 +101,8 @@ Run 2-3 tool calls in parallel.
101
101
  ```typescript
102
102
  // Run 4-6 external tool calls in parallel
103
103
  // Adapt language filter based on research context
104
- grep_search({ query: "<pattern 1>" }); // No language filter = search all
105
- grep_search({ query: "<pattern 2>", language: "<relevant lang>" });
104
+ grepsearch({ query: "<pattern 1>" }); // No language filter = search all
105
+ grepsearch({ query: "<pattern 2>", language: "<relevant lang>" });
106
106
  codesearch({ query: "<API usage>", tokensNum: 5000 });
107
107
  context7_query_docs({ libraryId: "<id>", topic: "<feature>" });
108
108
  ```
@@ -123,7 +123,7 @@ Run 4-6 tool calls in parallel.
123
123
 
124
124
  Every code reference must include a GitHub permalink. Never link to a branch or tag that can change.
125
125
 
126
- To construct a permalink: use `grep_search` to find code, then build the URL from the repository and file path returned. Format: `https://github.com/owner/repo/blob/<sha>/path/to/file#L10-L20`.
126
+ To construct a permalink: use `grepsearch` to find code, then build the URL from the repository and file path returned. Format: `https://github.com/owner/repo/blob/<sha>/path/to/file#L10-L20`.
127
127
 
128
128
  ## Tool Priority (External Sources Only)
129
129
 
@@ -132,7 +132,7 @@ To construct a permalink: use `grep_search` to find code, then build the URL fro
132
132
  | 1 | memory-search | Past research findings | Instant |
133
133
  | 2 | context7 | Official library docs | Fast |
134
134
  | 3 | codesearch | Exa Code API for SDK/library patterns | Fast |
135
- | 4 | grep_search | Cross-repo GitHub code search (1M+ repos) | Medium |
135
+ | 4 | grepsearch | Cross-repo GitHub code search (1M+ repos) | Medium |
136
136
  | 5 | webfetch | Specific doc URLs, READMEs, changelogs | Medium |
137
137
  | 6 | opensrc + LSP | Clone & analyze source code | Slow |
138
138
  | 7 | websearch | Tutorials, blog posts, recent news | Slow |
@@ -210,14 +210,14 @@ context7_query_docs({ libraryId: nodeId, topic: "streams API" });
210
210
  | Empty results | Try related terms or "API reference" |
211
211
  | API error | Verify CONTEXT7_API_KEY is set (optional) |
212
212
 
213
- ## grep_search Tool
213
+ ## grepsearch Tool
214
214
 
215
215
  Use for cross-repository code search across 1M+ public GitHub repositories.
216
216
 
217
217
  ### Schema
218
218
 
219
219
  ```typescript
220
- grep_search({
220
+ grepsearch({
221
221
  query: string, // Required - search pattern (literal code, not keywords)
222
222
  repo?: string, // Optional - filter to specific repo (e.g., "vercel/ai")
223
223
  language?: string[], // Optional - e.g., ["TypeScript", "TSX"]
@@ -247,22 +247,22 @@ grep_search({
247
247
 
248
248
  ```typescript
249
249
  // Basic repo search
250
- grep_search({ query: "batch_tool", repo: "anomalyco/opencode" });
250
+ grepsearch({ query: "batch_tool", repo: "anomalyco/opencode" });
251
251
 
252
252
  // With language filter
253
- grep_search({
253
+ grepsearch({
254
254
  query: "getServerSession",
255
255
  language: ["TypeScript", "TSX"],
256
256
  });
257
257
 
258
258
  // Regex pattern (multi-line)
259
- grep_search({
259
+ grepsearch({
260
260
  query: "(?s)useEffect\\(\\(\\) => {.*removeEventListener",
261
261
  useRegexp: true,
262
262
  });
263
263
 
264
264
  // Path filter for specific files
265
- grep_search({
265
+ grepsearch({
266
266
  query: "CORS(",
267
267
  language: ["Python"],
268
268
  matchCase: true,
@@ -406,8 +406,8 @@ Structure your response as:
406
406
 
407
407
  ```
408
408
  context7 fails → try codesearch for patterns
409
- codesearch empty → try grep_search with broader query
410
- grep_search empty → webfetch specific doc URLs if known
409
+ codesearch empty → try grepsearch with broader query
410
+ grepsearch empty → webfetch specific doc URLs if known
411
411
  still stuck → opensrc clone + LSP analysis
412
412
  last resort → websearch for tutorials/blogs
413
413
  ```
@@ -417,10 +417,10 @@ last resort → websearch for tutorials/blogs
417
417
  **context7 doesn't find library:**
418
418
 
419
419
  1. Try `codesearch({ query: "<library> <function> example" })`
420
- 2. Try `grep_search({ query: "import.*from.*<library>", language: ["TypeScript"] })`
420
+ 2. Try `grepsearch({ query: "import.*from.*<library>", language: ["TypeScript"] })`
421
421
  3. Clone with `npx opensrc <library>` and read source
422
422
 
423
- **grep_search returns nothing:**
423
+ **grepsearch returns nothing:**
424
424
 
425
425
  - Broaden query: search concepts, not exact function names
426
426
  - Remove specific repo filter to search across all repos
@@ -429,7 +429,7 @@ last resort → websearch for tutorials/blogs
429
429
  - Search for error messages, config patterns, or import statements
430
430
  - Fall back to `codesearch` for conceptual queries
431
431
 
432
- **grep_search API error:**
432
+ **grepsearch API error:**
433
433
 
434
434
  - The grep.app API may be temporarily unavailable
435
435
  - Fall back to `codesearch` for similar functionality
@@ -458,6 +458,6 @@ NO URL GUESSING: Only use URLs from tools or user input.
458
458
  CITE EVERYTHING: No claims without source links.
459
459
 
460
460
  Quick: context7 → codesearch → websearch (2-3 parallel calls)
461
- Deep: grep_search (4-6 parallel calls) → compare 3-5 repos → synthesize
462
- Fallback: context7 → codesearch → grep_search → webfetch → opensrc → websearch
461
+ Deep: grepsearch (4-6 parallel calls) → compare 3-5 repos → synthesize
462
+ Fallback: context7 → codesearch → grepsearch → webfetch → opensrc → websearch
463
463
  ```
@@ -212,7 +212,7 @@ context7_resolve_library_id({
212
212
  });
213
213
 
214
214
  // Real-world implementations
215
- grep_search({
215
+ grepsearch({
216
216
  query: "[pattern to find]",
217
217
  language: ["TypeScript", "TSX"],
218
218
  path: "components/",
@@ -50,7 +50,7 @@ Return file:line references for all findings.`,
50
50
 
51
51
  ### External Research → @scout (this agent)
52
52
 
53
- Scout handles external sources (context7, grep_search, codesearch, etc.)
53
+ Scout handles external sources (context7, grepsearch, codesearch, etc.)
54
54
 
55
55
  ### Parallel Execution
56
56
 
@@ -60,7 +60,7 @@ Run internal and external research in parallel:
60
60
  // Launch both in parallel
61
61
  task({ subagent_type: "explore", prompt: "LSP analysis of..." });
62
62
  context7_resolve_library_id({ libraryName: "<lib>" });
63
- grep_search({ query: "<pattern>", language: "TypeScript" });
63
+ grepsearch({ query: "<pattern>", language: "TypeScript" });
64
64
  ```
65
65
 
66
66
  ## Load Context
@@ -107,7 +107,7 @@ If memory search fails (Ollama not running), continue to external sources.
107
107
  2. **Official docs** (high trust) - What does the library documentation say?
108
108
  3. **Context7** (high trust) - API usage and examples
109
109
  4. **Source code** (high trust) - Library implementation (use `source-code-research` skill)
110
- 5. **GitHub examples** (medium trust) - Real-world patterns via codesearch/grep_search
110
+ 5. **GitHub examples** (medium trust) - Real-world patterns via codesearch/grepsearch
111
111
  6. **Web search** (lower trust) - Only if tiers 1-5 don't answer
112
112
 
113
113
  ## Research
@@ -161,7 +161,7 @@ npx opensrc <owner>/<repo> # GitHub repo
161
161
 
162
162
  ```typescript
163
163
  codesearch({ query: "<API usage pattern>", tokensNum: 5000 });
164
- grep_search({ query: "<code pattern>", language: "TypeScript" });
164
+ grepsearch({ query: "<code pattern>", language: "TypeScript" });
165
165
  ```
166
166
 
167
167
  ## Validate Findings
@@ -4,18 +4,18 @@ created: 2026-01-28T16:59:35.621Z
4
4
  confidence: high
5
5
  valid_until: null
6
6
  superseded_by: null
7
- concepts: ["grep-search", "MCP", "native tool", "architecture", "best practices"]
7
+ concepts: ["grepsearch", "MCP", "native tool", "architecture", "best practices"]
8
8
  ---
9
9
 
10
- # 🎯 gh-grep MCP wrapper vs native grep-search tool
10
+ # 🎯 gh-grep MCP wrapper vs native grepsearch tool
11
11
 
12
12
  🟢 **Confidence:** high
13
13
 
14
14
  Created two implementations for GitHub code search:
15
15
 
16
- 1. **Native tool** (.opencode/tool/grep-search.ts): TypeScript wrapper around grep.app API - WORKING ✅
16
+ 1. **Native tool** (.opencode/tool/grepsearch.ts): TypeScript wrapper around grep.app API - WORKING ✅
17
17
  2. **MCP skill** (.opencode/skill/gh-grep/): Skill wrapper that calls uvx grep-mcp server - BROKEN ❌
18
18
 
19
- The MCP server has an argument parsing bug ('str' object has no attribute 'get') that prevents tool execution. Even the SKILL.md documentation admits: "Note: The MCP server (grep-mcp) may have bugs. The native grep_search tool is recommended."
19
+ The MCP server has an argument parsing bug ('str' object has no attribute 'get') that prevents tool execution. Even the SKILL.md documentation admits: "Note: The MCP server (grep-mcp) may have bugs. The native grepsearch tool is recommended."
20
20
 
21
21
  **Key insight**: We already documented the problem and recommended against the MCP approach. The native tool works perfectly and doesn't require external process dependencies.
@@ -100,7 +100,7 @@ The bug is in **OpenCode's tool response handler**, not the MCP connection layer
100
100
 
101
101
  - `context7_resolve-library-id` - Native HTTP wrapper (works)
102
102
  - `context7_query-docs` - Native HTTP wrapper (works)
103
- - `grep-search` - Native HTTP wrapper (works)
103
+ - `grepsearch` - Native HTTP wrapper (works)
104
104
  - `codesearch` (Exa Code API) - works
105
105
  - `websearch` (Exa Web Search) - works
106
106
 
@@ -3,7 +3,7 @@
3
3
  "agent": {
4
4
  "build": {
5
5
  "description": "Primary development agent with full codebase access",
6
- "model": "opencode/big-pickle"
6
+ "model": "kimi-for-coding/k2p5"
7
7
  },
8
8
  "compaction": {
9
9
  "description": "Session summarizer for context continuity across compactions"
@@ -26,7 +26,7 @@
26
26
  },
27
27
  "plan": {
28
28
  "description": "Primary planning agent for architecture and multi-phase execution",
29
- "model": "opencode/big-pickle"
29
+ "model": "kimi-for-coding/k2p5"
30
30
  },
31
31
  "review": {
32
32
  "description": "Code review, debugging, and security audit specialist",
@@ -49,65 +49,26 @@
49
49
  "experimental": {},
50
50
  "formatter": {
51
51
  "biome": {
52
- "command": [
53
- "npx",
54
- "@biomejs/biome",
55
- "check",
56
- "--write",
57
- "$FILE"
58
- ],
59
- "extensions": [
60
- ".js",
61
- ".jsx",
62
- ".ts",
63
- ".tsx",
64
- ".json",
65
- ".jsonc"
66
- ]
52
+ "command": ["npx", "@biomejs/biome", "check", "--write", "$FILE"],
53
+ "extensions": [".js", ".jsx", ".ts", ".tsx", ".json", ".jsonc"]
67
54
  },
68
55
  "cargo-fmt": {
69
- "command": [
70
- "cargo",
71
- "fmt",
72
- "--",
73
- "$FILE"
74
- ],
75
- "extensions": [
76
- ".rs"
77
- ]
56
+ "command": ["cargo", "fmt", "--", "$FILE"],
57
+ "extensions": [".rs"]
78
58
  },
79
59
  "java-formatter": {
80
- "command": [
81
- "google-java-format",
82
- "--replace",
83
- "$FILE"
84
- ],
60
+ "command": ["google-java-format", "--replace", "$FILE"],
85
61
  "environment": {
86
62
  "JAVA_HOME": "{env:JAVA_HOME}"
87
63
  },
88
- "extensions": [
89
- ".java"
90
- ]
64
+ "extensions": [".java"]
91
65
  },
92
66
  "laravel-pint": {
93
- "command": [
94
- "npx",
95
- "laravel-pint",
96
- "--preset",
97
- "psr12",
98
- "$FILE"
99
- ],
100
- "extensions": [
101
- ".php"
102
- ]
67
+ "command": ["npx", "laravel-pint", "--preset", "psr12", "$FILE"],
68
+ "extensions": [".php"]
103
69
  },
104
70
  "oxfmt": {
105
- "command": [
106
- "npx",
107
- "oxfmt",
108
- "--write",
109
- "$FILE"
110
- ],
71
+ "command": ["npx", "oxfmt", "--write", "$FILE"],
111
72
  "extensions": [
112
73
  ".js",
113
74
  ".jsx",
@@ -126,10 +87,7 @@
126
87
  ]
127
88
  }
128
89
  },
129
- "instructions": [
130
- ".opencode/memory/user.md",
131
- ".opencode/memory/project/*.md"
132
- ],
90
+ "instructions": [".opencode/memory/user.md", ".opencode/memory/project/*.md"],
133
91
  "keybinds": {
134
92
  "command_list": ";",
135
93
  "leader": "`",
@@ -149,7 +107,7 @@
149
107
  "url": "https://stitch.googleapis.com/mcp"
150
108
  }
151
109
  },
152
- "model": "opencode/big-pickle",
110
+ "model": "kimi-for-coding/k2p5",
153
111
  "permission": {
154
112
  "bash": {
155
113
  "*": "allow",
@@ -185,6 +143,64 @@
185
143
  "@franlol/opencode-md-table-formatter@0.0.3"
186
144
  ],
187
145
  "provider": {
146
+ "kimi-for-coding": {
147
+ "models": {
148
+ "k2p5": {
149
+ "limit": {
150
+ "context": 262144,
151
+ "output": 32768
152
+ },
153
+ "temperature": true,
154
+ "reasoning": true,
155
+ "tool_call": true,
156
+ "variants": {
157
+ "high": {
158
+ "options": {
159
+ "thinking": {
160
+ "budgetTokens": 32000,
161
+ "type": "enabled"
162
+ }
163
+ }
164
+ },
165
+ "medium": {
166
+ "options": {
167
+ "thinking": {
168
+ "budgetTokens": 16000,
169
+ "type": "enabled"
170
+ }
171
+ }
172
+ }
173
+ }
174
+ },
175
+ "kimi-k2-thinking": {
176
+ "limit": {
177
+ "context": 262144,
178
+ "output": 32768
179
+ },
180
+ "temperature": true,
181
+ "reasoning": true,
182
+ "tool_call": true,
183
+ "variants": {
184
+ "high": {
185
+ "options": {
186
+ "thinking": {
187
+ "budgetTokens": 32000,
188
+ "type": "enabled"
189
+ }
190
+ }
191
+ },
192
+ "medium": {
193
+ "options": {
194
+ "thinking": {
195
+ "budgetTokens": 16000,
196
+ "type": "enabled"
197
+ }
198
+ }
199
+ }
200
+ }
201
+ }
202
+ }
203
+ },
188
204
  "github-copilot": {
189
205
  "models": {
190
206
  "claude-haiku-4.5": {
@@ -327,17 +343,13 @@
327
343
  "disabled": true
328
344
  },
329
345
  "high": {
330
- "include": [
331
- "reasoning.encrypted_content"
332
- ],
346
+ "include": ["reasoning.encrypted_content"],
333
347
  "reasoningEffort": "high",
334
348
  "reasoningSummary": "auto",
335
349
  "textVerbosity": "low"
336
350
  },
337
351
  "medium": {
338
- "include": [
339
- "reasoning.encrypted_content"
340
- ],
352
+ "include": ["reasoning.encrypted_content"],
341
353
  "reasoningEffort": "medium",
342
354
  "reasoningSummary": "auto",
343
355
  "textVerbosity": "low"
@@ -350,17 +362,13 @@
350
362
  "disabled": true
351
363
  },
352
364
  "high": {
353
- "include": [
354
- "reasoning.encrypted_content"
355
- ],
365
+ "include": ["reasoning.encrypted_content"],
356
366
  "reasoningEffort": "high",
357
367
  "reasoningSummary": "auto",
358
368
  "textVerbosity": "low"
359
369
  },
360
370
  "medium": {
361
- "include": [
362
- "reasoning.encrypted_content"
363
- ],
371
+ "include": ["reasoning.encrypted_content"],
364
372
  "reasoningEffort": "medium",
365
373
  "reasoningSummary": "auto",
366
374
  "textVerbosity": "low"
@@ -390,14 +398,8 @@
390
398
  "output": 65536
391
399
  },
392
400
  "modalities": {
393
- "input": [
394
- "text",
395
- "image",
396
- "pdf"
397
- ],
398
- "output": [
399
- "text"
400
- ]
401
+ "input": ["text", "image", "pdf"],
402
+ "output": ["text"]
401
403
  },
402
404
  "name": "Gemini 2 5 Flash"
403
405
  },
@@ -407,14 +409,8 @@
407
409
  "output": 65536
408
410
  },
409
411
  "modalities": {
410
- "input": [
411
- "text",
412
- "image",
413
- "pdf"
414
- ],
415
- "output": [
416
- "text"
417
- ]
412
+ "input": ["text", "image", "pdf"],
413
+ "output": ["text"]
418
414
  },
419
415
  "name": "Gemini 2 5 Flash Lite"
420
416
  },
@@ -424,14 +420,8 @@
424
420
  "output": 65536
425
421
  },
426
422
  "modalities": {
427
- "input": [
428
- "text",
429
- "image",
430
- "pdf"
431
- ],
432
- "output": [
433
- "text"
434
- ]
423
+ "input": ["text", "image", "pdf"],
424
+ "output": ["text"]
435
425
  },
436
426
  "name": "Gemini 2 5 Pro"
437
427
  },
@@ -441,14 +431,8 @@
441
431
  "output": 65536
442
432
  },
443
433
  "modalities": {
444
- "input": [
445
- "text",
446
- "image",
447
- "pdf"
448
- ],
449
- "output": [
450
- "text"
451
- ]
434
+ "input": ["text", "image", "pdf"],
435
+ "output": ["text"]
452
436
  },
453
437
  "name": "Gemini 3 Flash Preview",
454
438
  "options": {
@@ -485,14 +469,8 @@
485
469
  "output": 65536
486
470
  },
487
471
  "modalities": {
488
- "input": [
489
- "text",
490
- "image",
491
- "pdf"
492
- ],
493
- "output": [
494
- "text"
495
- ]
472
+ "input": ["text", "image", "pdf"],
473
+ "output": ["text"]
496
474
  },
497
475
  "name": "Gemini 3 Pro Preview",
498
476
  "options": {
@@ -522,14 +500,8 @@
522
500
  "output": 64000
523
501
  },
524
502
  "modalities": {
525
- "input": [
526
- "text",
527
- "image",
528
- "pdf"
529
- ],
530
- "output": [
531
- "text"
532
- ]
503
+ "input": ["text", "image", "pdf"],
504
+ "output": ["text"]
533
505
  },
534
506
  "name": "Gemini Claude Opus 4 5 Thinking",
535
507
  "options": {
@@ -558,14 +530,8 @@
558
530
  "output": 64000
559
531
  },
560
532
  "modalities": {
561
- "input": [
562
- "text",
563
- "image",
564
- "pdf"
565
- ],
566
- "output": [
567
- "text"
568
- ]
533
+ "input": ["text", "image", "pdf"],
534
+ "output": ["text"]
569
535
  },
570
536
  "name": "Gemini Claude Sonnet 4 5"
571
537
  },
@@ -575,14 +541,8 @@
575
541
  "output": 64000
576
542
  },
577
543
  "modalities": {
578
- "input": [
579
- "text",
580
- "image",
581
- "pdf"
582
- ],
583
- "output": [
584
- "text"
585
- ]
544
+ "input": ["text", "image", "pdf"],
545
+ "output": ["text"]
586
546
  },
587
547
  "name": "Gemini Claude Sonnet 4 5 Thinking",
588
548
  "options": {
@@ -860,7 +820,7 @@
860
820
  "tools": {
861
821
  "context7-query-docs": true,
862
822
  "context7-resolve-library-id": true,
863
- "grep-search": true,
823
+ "grepsearch": true,
864
824
  "oracle": true
865
825
  },
866
826
  "tui": {
@@ -880,4 +840,4 @@
880
840
  ".DS_Store"
881
841
  ]
882
842
  }
883
- }
843
+ }
@@ -11,7 +11,7 @@
11
11
  "type-check": "tsc --noEmit"
12
12
  },
13
13
  "dependencies": {
14
- "@opencode-ai/plugin": "1.1.40"
14
+ "@opencode-ai/plugin": "1.1.42"
15
15
  },
16
16
  "devDependencies": {
17
17
  "@types/node": "^25.0.3",
@@ -44,7 +44,7 @@ If memory returns high-confidence findings on this exact topic, synthesize and r
44
44
  | 2 | context7_resolve-library-id | Resolve library names to IDs | Fast |
45
45
  | 3 | context7_query-docs | Official library docs | Fast |
46
46
  | 4 | codesearch | Exa Code API for SDK/library patterns | Fast |
47
- | 5 | grep-search | Cross-repo GitHub code search | Medium |
47
+ | 5 | grepsearch | Cross-repo GitHub code search | Medium |
48
48
  | 6 | webfetch | Specific doc URLs, READMEs, changelogs | Medium |
49
49
  | 7 | opensrc + LSP | Clone & analyze source code | Slow |
50
50
  | 8 | websearch | Tutorials, blog posts, recent news | Slow |
@@ -186,7 +186,7 @@ last resort → websearch for tutorials/blogs
186
186
 
187
187
  **context7 doesn't find library:**
188
188
  1. Try `codesearch({ query: "<library> <function> example" })`
189
- 2. Try `gh_grep_searchGitHub({ query: "import.*from.*<library>" })`
189
+ 2. Try `gh_grepsearchGitHub({ query: "import.*from.*<library>" })`
190
190
  3. Clone with `npx opensrc <library>` and read source
191
191
 
192
192
  **gh_grep returns nothing:**
@@ -115,7 +115,7 @@ context7_query_docs({ libraryId: "<id>", topic: "<specific question>" });
115
115
 
116
116
  // Real-world patterns
117
117
  codesearch({ query: "<API usage pattern>", tokensNum: 5000 });
118
- grep_search({ query: "<code pattern>", language: "TypeScript" });
118
+ grepsearch({ query: "<code pattern>", language: "TypeScript" });
119
119
  ```
120
120
 
121
121
  ## Confidence Levels
@@ -366,7 +366,7 @@ Source code research complements other tools:
366
366
  | --------------- | -------------------------- | ------------------------------ |
367
367
  | **Context7** | API docs, official guides | Implementation details |
368
368
  | **codesearch** | Usage patterns in the wild | Canonical implementation |
369
- | **grep_search** | Real-world examples | How library itself works |
369
+ | **grepsearch** | Real-world examples | How library itself works |
370
370
  | **Web search** | Tutorials, blog posts | Ground truth from source |
371
371
  | **Codebase** | Project-specific patterns | How dependencies actually work |
372
372
 
@@ -375,7 +375,7 @@ Source code research complements other tools:
375
375
  1. Context7 - Check official docs
376
376
  2. Codebase - Check existing usage
377
377
  3. **Source code** - If still unclear, fetch source
378
- 4. codesearch/grep_search - See how others use it
378
+ 4. codesearch/grepsearch - See how others use it
379
379
  5. Web search - Last resort for context
380
380
 
381
381
  ## Cleanup
@@ -186,5 +186,5 @@ glob ["src/**/*.ts", "tests/**/*.ts"]
186
186
  | **context7_query-docs** | Query official library documentation. Fast. |
187
187
  | **websearch** | Docs not in Context7, recent releases, troubleshooting. |
188
188
  | **codesearch** | Real implementation patterns from GitHub. |
189
- | **grep-search** | Cross-repo code patterns via grep.app. |
189
+ | **grepsearch** | Cross-repo code patterns via grep.app. |
190
190
  | **webfetch** | Specific URL user provided. |
@@ -27,9 +27,9 @@ IMPORTANT: Search for **literal code patterns**, not keywords:
27
27
  ❌ Bad: "react tutorial", "best practices", "how to use"
28
28
 
29
29
  Examples:
30
- grep_search({ query: "getServerSession", language: "TypeScript" })
31
- grep_search({ query: "CORS(", language: "Python", repo: "flask" })
32
- grep_search({ query: "export async function POST", path: "route.ts" })
30
+ grepsearch({ query: "getServerSession", language: "TypeScript" })
31
+ grepsearch({ query: "CORS(", language: "Python", repo: "flask" })
32
+ grepsearch({ query: "export async function POST", path: "route.ts" })
33
33
  `,
34
34
  args: {
35
35
  query: tool.schema
package/package.json CHANGED
@@ -1,15 +1,8 @@
1
1
  {
2
2
  "name": "opencodekit",
3
- "version": "0.15.15",
3
+ "version": "0.15.16",
4
4
  "description": "CLI tool for bootstrapping and managing OpenCodeKit projects",
5
- "keywords": [
6
- "agents",
7
- "cli",
8
- "mcp",
9
- "opencode",
10
- "opencodekit",
11
- "template"
12
- ],
5
+ "keywords": ["agents", "cli", "mcp", "opencode", "opencodekit", "template"],
13
6
  "license": "MIT",
14
7
  "author": "OpenCodeKit",
15
8
  "repository": {
@@ -19,10 +12,7 @@
19
12
  "bin": {
20
13
  "ock": "dist/index.js"
21
14
  },
22
- "files": [
23
- "dist",
24
- "README.md"
25
- ],
15
+ "files": ["dist", "README.md"],
26
16
  "type": "module",
27
17
  "publishConfig": {
28
18
  "access": "public",
@@ -66,7 +56,5 @@
66
56
  "engines": {
67
57
  "bun": ">=1.3.2"
68
58
  },
69
- "trustedDependencies": [
70
- "@beads/bd"
71
- ]
59
+ "trustedDependencies": ["@beads/bd"]
72
60
  }