opencodekit 0.15.9 → 0.15.11

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 (62) hide show
  1. package/dist/index.js +9 -7
  2. package/dist/template/.opencode/AGENTS.md +7 -2
  3. package/dist/template/.opencode/agent/build.md +390 -0
  4. package/dist/template/.opencode/agent/general.md +1 -0
  5. package/dist/template/.opencode/agent/looker.md +1 -0
  6. package/dist/template/.opencode/agent/painter.md +218 -0
  7. package/dist/template/.opencode/agent/plan.md +3 -0
  8. package/dist/template/.opencode/agent/vision.md +1 -0
  9. package/dist/template/.opencode/command/edit-image.md +1 -2
  10. package/dist/template/.opencode/command/generate-icon.md +1 -2
  11. package/dist/template/.opencode/command/generate-image.md +1 -2
  12. package/dist/template/.opencode/command/generate-pattern.md +1 -2
  13. package/dist/template/.opencode/command/generate-storyboard.md +1 -2
  14. package/dist/template/.opencode/command/implement.md +136 -10
  15. package/dist/template/.opencode/command/restore-image.md +1 -2
  16. package/dist/template/.opencode/dcp.jsonc +1 -15
  17. package/dist/template/.opencode/memory/observations/2026-01-25-decision-agent-roles-build-orchestrates-general-e.md +14 -0
  18. package/dist/template/.opencode/memory/observations/2026-01-25-decision-simplified-swarm-helper-tool-to-fix-type.md +20 -0
  19. package/dist/template/.opencode/memory/observations/2026-01-25-decision-use-beads-as-swarm-board-source-of-truth.md +14 -0
  20. package/dist/template/.opencode/memory/observations/2026-01-25-learning-user-wants-real-swarm-coordination-guida.md +15 -0
  21. package/dist/template/.opencode/memory/research/opencode-mcp-bug-report.md +126 -0
  22. package/dist/template/.opencode/opencode.json +812 -704
  23. package/dist/template/.opencode/package.json +1 -1
  24. package/dist/template/.opencode/plans/swarm-protocol.md +123 -0
  25. package/dist/template/.opencode/plugin/README.md +10 -0
  26. package/dist/template/.opencode/plugin/swarm-enforcer.ts +297 -0
  27. package/dist/template/.opencode/skill/supabase-postgres-best-practices/AGENTS.md +1490 -0
  28. package/dist/template/.opencode/skill/supabase-postgres-best-practices/SKILL.md +57 -0
  29. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/advanced-full-text-search.md +55 -0
  30. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/advanced-jsonb-indexing.md +49 -0
  31. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/conn-idle-timeout.md +46 -0
  32. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/conn-limits.md +44 -0
  33. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/conn-pooling.md +41 -0
  34. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/conn-prepared-statements.md +46 -0
  35. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/data-batch-inserts.md +54 -0
  36. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/data-n-plus-one.md +53 -0
  37. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/data-pagination.md +50 -0
  38. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/data-upsert.md +50 -0
  39. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/lock-advisory.md +56 -0
  40. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/lock-deadlock-prevention.md +68 -0
  41. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/lock-short-transactions.md +50 -0
  42. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/lock-skip-locked.md +54 -0
  43. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/monitor-explain-analyze.md +45 -0
  44. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/monitor-pg-stat-statements.md +55 -0
  45. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/monitor-vacuum-analyze.md +55 -0
  46. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-composite-indexes.md +44 -0
  47. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-covering-indexes.md +40 -0
  48. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-index-types.md +45 -0
  49. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-missing-indexes.md +43 -0
  50. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-partial-indexes.md +45 -0
  51. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-data-types.md +46 -0
  52. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-foreign-key-indexes.md +59 -0
  53. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-lowercase-identifiers.md +55 -0
  54. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-partitioning.md +55 -0
  55. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-primary-keys.md +61 -0
  56. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/security-privileges.md +54 -0
  57. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/security-rls-basics.md +50 -0
  58. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/security-rls-performance.md +57 -0
  59. package/dist/template/.opencode/skill/swarm-coordination/SKILL.md +405 -0
  60. package/dist/template/.opencode/tool/swarm-delegate.ts +175 -0
  61. package/dist/template/.opencode/tool/swarm-helper.ts +164 -0
  62. package/package.json +1 -1
@@ -1,706 +1,814 @@
1
1
  {
2
- "$schema": "https://opencode.ai/config.json",
3
- "agent": {
4
- "build": {
5
- "description": "Primary development agent with full codebase access",
6
- "model": "opencode/minimax-m2.1-free"
7
- },
8
- "compaction": {
9
- "description": "Session summarizer for context continuity across compactions",
10
- "model": "opencode/minimax-m2.1-free"
11
- },
12
- "explore": {
13
- "description": "Fast codebase search specialist",
14
- "model": "opencode/grok-code"
15
- },
16
- "general": {
17
- "description": "General-purpose subagent for fast, well-defined tasks; delegates complexity quickly",
18
- "model": "opencode/glm-4.7-free"
19
- },
20
- "looker": {
21
- "description": "Media extraction specialist for images, PDFs, diagrams",
22
- "model": "opencode/gpt-5-nano"
23
- },
24
- "plan": {
25
- "description": "Primary planning agent for architecture and multi-phase execution",
26
- "model": "opencode/minimax-m2.1-free"
27
- },
28
- "review": {
29
- "description": "Code review, debugging, and security audit specialist",
30
- "model": "opencode/minimax-m2.1-free"
31
- },
32
- "scout": {
33
- "description": "External research specialist for library docs and patterns",
34
- "model": "opencode/big-pickle"
35
- },
36
- "vision": {
37
- "description": "Visual content specialist for multimodal analysis and UI/UX guidance",
38
- "model": "opencode/gpt-5-nano"
39
- }
40
- },
41
- "autoupdate": false,
42
- "compaction": {
43
- "auto": true,
44
- "prune": true
45
- },
46
- "experimental": {},
47
- "formatter": {
48
- "biome": {
49
- "command": ["npx", "@biomejs/biome", "check", "--write", "$FILE"],
50
- "extensions": [".js", ".jsx", ".ts", ".tsx", ".json", ".jsonc"]
51
- },
52
- "cargo-fmt": {
53
- "command": ["cargo", "fmt", "--", "$FILE"],
54
- "extensions": [".rs"]
55
- },
56
- "java-formatter": {
57
- "command": ["google-java-format", "--replace", "$FILE"],
58
- "environment": {
59
- "JAVA_HOME": "{env:JAVA_HOME}"
60
- },
61
- "extensions": [".java"]
62
- },
63
- "oxfmt": {
64
- "command": ["npx", "oxfmt", "--write", "$FILE"],
65
- "extensions": [
66
- ".js",
67
- ".jsx",
68
- ".ts",
69
- ".tsx",
70
- ".json",
71
- ".jsonc",
72
- ".html",
73
- ".css",
74
- ".scss",
75
- ".sass",
76
- ".md",
77
- ".mdx",
78
- ".yaml",
79
- ".yml"
80
- ]
81
- },
82
- "laravel-pint": {
83
- "command": ["npx", "laravel-pint", "--preset", "psr12", "$FILE"],
84
- "extensions": [".php"]
85
- }
86
- },
87
- "instructions": [".opencode/memory/user.md", ".opencode/memory/project/*.md"],
88
- "keybinds": {
89
- "command_list": ";",
90
- "leader": "`",
91
- "session_child_cycle": "ctrl+alt+right",
92
- "session_child_cycle_reverse": "ctrl+alt+left",
93
- "session_compact": "ctrl+k"
94
- },
95
- "mcp": {
96
- "context7": {
97
- "command": [
98
- "npx",
99
- "-y",
100
- "@upstash/context7-mcp",
101
- "--api-key",
102
- "{env:CONTEXT7_API_KEY}"
103
- ],
104
- "enabled": true,
105
- "type": "local"
106
- },
107
- "gh_grep": {
108
- "enabled": true,
109
- "type": "remote",
110
- "url": "https://mcp.grep.app"
111
- },
112
- "stitch": {
113
- "enabled": false,
114
- "type": "remote",
115
- "url": "https://stitch.googleapis.com/mcp",
116
- "oauth": false,
117
- "headers": {
118
- "Authorization": "Bearer {env:STITCH_ACCESS_TOKEN}",
119
- "X-Goog-User-Project": "{env:GOOGLE_CLOUD_PROJECT}"
120
- }
121
- }
122
- },
123
- "model": "opencode/minimax-m2.1-free",
124
- "permission": {
125
- "bash": {
126
- "*": "allow",
127
- "cat *": "allow",
128
- "git branch *": "allow",
129
- "git commit *": "ask",
130
- "git diff *": "allow",
131
- "git log *": "allow",
132
- "git push *": "ask",
133
- "git rebase *": "ask",
134
- "git reset *": "ask",
135
- "git status *": "allow",
136
- "ls *": "allow",
137
- "npm *": "allow",
138
- "npx *": "allow",
139
- "rm *": "deny",
140
- "rm -rf *": "deny",
141
- "sudo *": "deny"
142
- },
143
- "doom_loop": "ask",
144
- "edit": "allow",
145
- "external_directory": "ask",
146
- "question": "allow",
147
- "read": {
148
- "*": "allow",
149
- "*.env": "deny",
150
- "*.env.*": "deny",
151
- "*.env.example": "allow"
152
- }
153
- },
154
- "plugin": [
155
- "@tarquinen/opencode-dcp@latest",
156
- "@franlol/opencode-md-table-formatter@0.0.3"
157
- ],
158
- "provider": {
159
- "github-copilot": {
160
- "models": {
161
- "claude-opus-4.5": {
162
- "attachment": true,
163
- "reasoning": true,
164
- "temperature": true,
165
- "tool_call": true,
166
- "variants": {
167
- "high": {
168
- "options": {
169
- "thinking": {
170
- "budgetTokens": 32000,
171
- "type": "enabled"
172
- }
173
- }
174
- },
175
- "medium": {
176
- "options": {
177
- "thinking": {
178
- "budgetTokens": 16000,
179
- "type": "enabled"
180
- }
181
- }
182
- }
183
- }
184
- },
185
- "claude-sonnet-4.5": {
186
- "attachment": true,
187
- "reasoning": true,
188
- "temperature": true,
189
- "tool_call": true,
190
- "variants": {
191
- "high": {
192
- "options": {
193
- "thinking": {
194
- "budgetTokens": 16000,
195
- "type": "enabled"
196
- }
197
- }
198
- },
199
- "medium": {
200
- "options": {
201
- "thinking": {
202
- "budgetTokens": 8000,
203
- "type": "enabled"
204
- }
205
- }
206
- }
207
- }
208
- },
209
- "claude-haiku-4.5": {
210
- "attachment": true,
211
- "reasoning": true,
212
- "temperature": true,
213
- "tool_call": true,
214
- "variants": {
215
- "high": {
216
- "options": {
217
- "thinking": {
218
- "budgetTokens": 32000,
219
- "type": "enabled"
220
- }
221
- }
222
- },
223
- "medium": {
224
- "options": {
225
- "thinking": {
226
- "budgetTokens": 16000,
227
- "type": "enabled"
228
- }
229
- }
230
- }
231
- }
232
- },
233
- "gpt-5-mini": {
234
- "attachment": true,
235
- "reasoning": true,
236
- "temperature": true,
237
- "tool_call": true,
238
- "variants": {
239
- "high": {
240
- "options": {
241
- "reasoning": {
242
- "effort": "high"
243
- }
244
- }
245
- },
246
- "medium": {
247
- "options": {
248
- "reasoning": {
249
- "effort": "medium"
250
- }
251
- }
252
- },
253
- "low": {
254
- "options": {
255
- "reasoning": {
256
- "effort": "low"
257
- }
258
- }
259
- }
260
- }
261
- },
262
- "gpt-5.2-codex": {
263
- "attachment": true,
264
- "reasoning": true,
265
- "temperature": true,
266
- "tool_call": true,
267
- "variants": {
268
- "high": {
269
- "options": {
270
- "reasoning": {
271
- "effort": "high"
272
- }
273
- }
274
- },
275
- "medium": {
276
- "options": {
277
- "reasoning": {
278
- "effort": "medium"
279
- }
280
- }
281
- },
282
- "low": {
283
- "options": {
284
- "reasoning": {
285
- "effort": "low"
286
- }
287
- }
288
- }
289
- }
290
- }
291
- }
292
- },
293
- "openai": {
294
- "models": {
295
- "gpt-5.2": {
296
- "variants": {
297
- "fast": {
298
- "disabled": true
299
- },
300
- "high": {
301
- "include": ["reasoning.encrypted_content"],
302
- "reasoningEffort": "high",
303
- "reasoningSummary": "auto",
304
- "textVerbosity": "low"
305
- },
306
- "medium": {
307
- "include": ["reasoning.encrypted_content"],
308
- "reasoningEffort": "medium",
309
- "reasoningSummary": "auto",
310
- "textVerbosity": "low"
311
- }
312
- }
313
- },
314
- "gpt-5.2-codex": {
315
- "variants": {
316
- "fast": {
317
- "disabled": true
318
- },
319
- "high": {
320
- "include": ["reasoning.encrypted_content"],
321
- "reasoningEffort": "high",
322
- "reasoningSummary": "auto",
323
- "textVerbosity": "low"
324
- },
325
- "medium": {
326
- "include": ["reasoning.encrypted_content"],
327
- "reasoningEffort": "medium",
328
- "reasoningSummary": "auto",
329
- "textVerbosity": "low"
330
- }
331
- }
332
- }
333
- }
334
- },
335
- "opencode": {
336
- "models": {
337
- "big-pickle": {
338
- "options": {
339
- "reasoningEffort": "high",
340
- "temperature": 1,
341
- "top_k": 40,
342
- "top_p": 0.95
343
- },
344
- "reasoning": true
345
- }
346
- }
347
- },
348
- "proxypal": {
349
- "models": {
350
- "gemini-2.5-computer-use-preview-10-2025": {
351
- "limit": {
352
- "context": 880964,
353
- "output": 65536
354
- },
355
- "name": "Gemini 2 5 Computer Use Preview 10 2025",
356
- "modalities": {
357
- "input": ["text", "image", "pdf"],
358
- "output": ["text"]
359
- }
360
- },
361
- "gemini-2.5-flash": {
362
- "limit": {
363
- "context": 880964,
364
- "output": 65536
365
- },
366
- "name": "Gemini 2 5 Flash",
367
- "modalities": {
368
- "input": ["text", "image", "pdf"],
369
- "output": ["text"]
370
- }
371
- },
372
- "gemini-2.5-flash-lite": {
373
- "limit": {
374
- "context": 880964,
375
- "output": 65536
376
- },
377
- "name": "Gemini 2 5 Flash Lite",
378
- "modalities": {
379
- "input": ["text", "image", "pdf"],
380
- "output": ["text"]
381
- }
382
- },
383
- "gemini-2.5-pro": {
384
- "limit": {
385
- "context": 880964,
386
- "output": 65536
387
- },
388
- "name": "Gemini 2 5 Pro",
389
- "modalities": {
390
- "input": ["text", "image", "pdf"],
391
- "output": ["text"]
392
- }
393
- },
394
- "gemini-3-flash-preview": {
395
- "limit": {
396
- "context": 880964,
397
- "output": 65536
398
- },
399
- "name": "Gemini 3 Flash Preview",
400
- "modalities": {
401
- "input": ["text", "image", "pdf"],
402
- "output": ["text"]
403
- },
404
- "variants": {
405
- "low": {
406
- "thinkingLevel": "low"
407
- },
408
- "medium": {
409
- "thinkingLevel": "medium"
410
- },
411
- "high": {
412
- "thinkingLevel": "high"
413
- }
414
- },
415
- "reasoning": true
416
- },
417
- "gemini-3-pro-image-preview": {
418
- "limit": {
419
- "context": 880964,
420
- "output": 65536
421
- },
422
- "name": "Gemini 3 Pro Image Preview",
423
- "modalities": {
424
- "input": ["text", "image", "pdf"],
425
- "output": ["text"]
426
- }
427
- },
428
- "gemini-3-pro-preview": {
429
- "limit": {
430
- "context": 880964,
431
- "output": 65536
432
- },
433
- "name": "Gemini 3 Pro Preview",
434
- "modalities": {
435
- "input": ["text", "image", "pdf"],
436
- "output": ["text"]
437
- },
438
- "variants": {
439
- "low": {
440
- "thinkingLevel": "low"
441
- },
442
- "high": {
443
- "thinkingLevel": "high"
444
- }
445
- },
446
- "reasoning": true
447
- },
448
- "gemini-claude-opus-4-5-thinking": {
449
- "limit": {
450
- "context": 168000,
451
- "output": 64000
452
- },
453
- "modalities": {
454
- "input": ["text", "image", "pdf"],
455
- "output": ["text"]
456
- },
457
- "name": "Gemini Claude Opus 4 5 Thinking",
458
- "variants": {
459
- "low": {
460
- "thinkingConfig": {
461
- "thinkingBudget": 8192
462
- }
463
- },
464
- "max": {
465
- "thinkingConfig": {
466
- "thinkingBudget": 32768
467
- }
468
- }
469
- },
470
- "reasoning": true
471
- },
472
- "gemini-claude-sonnet-4-5": {
473
- "limit": {
474
- "context": 168000,
475
- "output": 64000
476
- },
477
- "modalities": {
478
- "input": ["text", "image", "pdf"],
479
- "output": ["text"]
480
- },
481
- "name": "Gemini Claude Sonnet 4 5"
482
- },
483
- "gemini-claude-sonnet-4-5-thinking": {
484
- "limit": {
485
- "context": 168000,
486
- "output": 64000
487
- },
488
- "modalities": {
489
- "input": ["text", "image", "pdf"],
490
- "output": ["text"]
491
- },
492
- "name": "Gemini Claude Sonnet 4 5 Thinking",
493
- "variants": {
494
- "low": {
495
- "thinkingConfig": {
496
- "thinkingBudget": 8192
497
- }
498
- },
499
- "max": {
500
- "thinkingConfig": {
501
- "thinkingBudget": 32768
502
- }
503
- }
504
- },
505
- "reasoning": true
506
- },
507
- "glm-4.5": {
508
- "limit": {
509
- "context": 107520,
510
- "output": 16384
511
- },
512
- "name": "Glm 4 5"
513
- },
514
- "glm-4.5-air": {
515
- "limit": {
516
- "context": 107520,
517
- "output": 16384
518
- },
519
- "name": "Glm 4 5 Air"
520
- },
521
- "glm-4.6": {
522
- "limit": {
523
- "context": 107520,
524
- "output": 16384
525
- },
526
- "name": "Glm 4 6"
527
- },
528
- "glm-4.7": {
529
- "limit": {
530
- "context": 107520,
531
- "output": 16384
532
- },
533
- "name": "Glm 4 7"
534
- },
535
- "gpt-5": {
536
- "limit": {
537
- "context": 336000,
538
- "output": 32768
539
- },
540
- "name": "Gpt 5",
541
- "options": {
542
- "reasoningEffort": "medium"
543
- },
544
- "reasoning": true
545
- },
546
- "gpt-5-codex": {
547
- "limit": {
548
- "context": 336000,
549
- "output": 32768
550
- },
551
- "name": "Gpt 5 Codex",
552
- "options": {
553
- "reasoningEffort": "medium"
554
- },
555
- "reasoning": true
556
- },
557
- "gpt-5-codex-mini": {
558
- "limit": {
559
- "context": 336000,
560
- "output": 32768
561
- },
562
- "name": "Gpt 5 Codex Mini",
563
- "options": {
564
- "reasoningEffort": "medium"
565
- },
566
- "reasoning": true
567
- },
568
- "gpt-5.1": {
569
- "limit": {
570
- "context": 336000,
571
- "output": 32768
572
- },
573
- "name": "Gpt 5 1",
574
- "options": {
575
- "reasoningEffort": "medium"
576
- },
577
- "reasoning": true
578
- },
579
- "gpt-5.1-codex": {
580
- "limit": {
581
- "context": 336000,
582
- "output": 32768
583
- },
584
- "name": "Gpt 5 1 Codex",
585
- "options": {
586
- "reasoningEffort": "medium"
587
- },
588
- "reasoning": true
589
- },
590
- "gpt-5.1-codex-max": {
591
- "limit": {
592
- "context": 336000,
593
- "output": 32768
594
- },
595
- "name": "Gpt 5 1 Codex Max",
596
- "options": {
597
- "reasoningEffort": "medium"
598
- },
599
- "reasoning": true
600
- },
601
- "gpt-5.1-codex-mini": {
602
- "limit": {
603
- "context": 336000,
604
- "output": 32768
605
- },
606
- "name": "Gpt 5 1 Codex Mini",
607
- "options": {
608
- "reasoningEffort": "medium"
609
- },
610
- "reasoning": true
611
- },
612
- "gpt-5.2": {
613
- "limit": {
614
- "context": 336000,
615
- "output": 32768
616
- },
617
- "name": "Gpt 5 2",
618
- "options": {
619
- "reasoningEffort": "medium"
620
- },
621
- "reasoning": true
622
- },
623
- "gpt-5.2-codex": {
624
- "limit": {
625
- "context": 336000,
626
- "output": 32768
627
- },
628
- "name": "Gpt 5 2 Codex",
629
- "options": {
630
- "reasoningEffort": "medium"
631
- },
632
- "reasoning": true
633
- },
634
- "gpt-oss-120b-medium": {
635
- "limit": {
636
- "context": 107520,
637
- "output": 16384
638
- },
639
- "name": "Gpt Oss 120b Medium"
640
- }
641
- },
642
- "name": "ProxyPal",
643
- "npm": "@ai-sdk/anthropic",
644
- "options": {
645
- "apiKey": "proxypal-local",
646
- "baseURL": "http://127.0.0.1:8317/v1",
647
- "includeUsage": true
648
- }
649
- },
650
- "zai-coding-plan": {
651
- "models": {
652
- "glm-4.6": {
653
- "limit": {
654
- "context": 128000,
655
- "output": 16384
656
- },
657
- "options": {
658
- "temperature": 1,
659
- "thinking": {
660
- "type": "enabled"
661
- }
662
- },
663
- "reasoning": true,
664
- "temperature": true,
665
- "tool_call": true
666
- },
667
- "glm-4.7": {
668
- "id": "glm-4.7",
669
- "interleaved": true,
670
- "limit": {
671
- "context": 200000,
672
- "output": 128000
673
- },
674
- "name": "GLM-4.7",
675
- "options": {
676
- "temperature": 1,
677
- "thinking": {
678
- "type": "enabled"
679
- }
680
- },
681
- "reasoning": true
682
- }
683
- },
684
- "name": "Z.AI Coding Plan"
685
- }
686
- },
687
- "share": "manual",
688
- "small_model": "opencode/gpt-5-nano",
689
- "tui": {
690
- "diff_style": "auto",
691
- "scroll_acceleration": {
692
- "enabled": true
693
- },
694
- "scroll_speed": 3
695
- },
696
- "watcher": {
697
- "ignore": [
698
- "node_modules/**",
699
- ".git/**",
700
- "dist/**",
701
- "build/**",
702
- "*.log",
703
- ".DS_Store"
704
- ]
705
- }
2
+ "$schema": "https://opencode.ai/config.json",
3
+ "agent": {
4
+ "build": {
5
+ "description": "Primary development agent with full codebase access",
6
+ "model": "opencode/big-pickle"
7
+ },
8
+ "compaction": {
9
+ "description": "Session summarizer for context continuity across compactions"
10
+ },
11
+ "explore": {
12
+ "description": "Fast codebase search specialist",
13
+ "model": "opencode/big-pickle"
14
+ },
15
+ "general": {
16
+ "description": "General-purpose subagent for fast, well-defined tasks; delegates complexity quickly",
17
+ "model": "opencode/big-pickle"
18
+ },
19
+ "looker": {
20
+ "description": "Media extraction specialist for images, PDFs, diagrams",
21
+ "model": "opencode/gpt-5-nano"
22
+ },
23
+ "plan": {
24
+ "description": "Primary planning agent for architecture and multi-phase execution",
25
+ "model": "opencode/big-pickle"
26
+ },
27
+ "review": {
28
+ "description": "Code review, debugging, and security audit specialist",
29
+ "model": "opencode/big-pickle"
30
+ },
31
+ "scout": {
32
+ "description": "External research specialist for library docs and patterns",
33
+ "model": "opencode/big-pickle"
34
+ },
35
+ "vision": {
36
+ "description": "Visual content specialist for multimodal analysis and UI/UX guidance",
37
+ "model": "opencode/gpt-5-nano"
38
+ },
39
+ "painter": {
40
+ "description": "Image generation and editing specialist using Gemini 3 Pro Image. Use for creating UI mockups, app icons, hero images, visual assets, and editing/redacting existing images",
41
+ "model": "opencode/gpt-5-nano"
42
+ }
43
+ },
44
+ "autoupdate": false,
45
+ "compaction": {
46
+ "auto": true,
47
+ "prune": true
48
+ },
49
+ "experimental": {},
50
+ "formatter": {
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
+ ]
67
+ },
68
+ "cargo-fmt": {
69
+ "command": [
70
+ "cargo",
71
+ "fmt",
72
+ "--",
73
+ "$FILE"
74
+ ],
75
+ "extensions": [
76
+ ".rs"
77
+ ]
78
+ },
79
+ "java-formatter": {
80
+ "command": [
81
+ "google-java-format",
82
+ "--replace",
83
+ "$FILE"
84
+ ],
85
+ "environment": {
86
+ "JAVA_HOME": "{env:JAVA_HOME}"
87
+ },
88
+ "extensions": [
89
+ ".java"
90
+ ]
91
+ },
92
+ "oxfmt": {
93
+ "command": [
94
+ "npx",
95
+ "oxfmt",
96
+ "--write",
97
+ "$FILE"
98
+ ],
99
+ "extensions": [
100
+ ".js",
101
+ ".jsx",
102
+ ".ts",
103
+ ".tsx",
104
+ ".json",
105
+ ".jsonc",
106
+ ".html",
107
+ ".css",
108
+ ".scss",
109
+ ".sass",
110
+ ".md",
111
+ ".mdx",
112
+ ".yaml",
113
+ ".yml"
114
+ ]
115
+ },
116
+ "laravel-pint": {
117
+ "command": [
118
+ "npx",
119
+ "laravel-pint",
120
+ "--preset",
121
+ "psr12",
122
+ "$FILE"
123
+ ],
124
+ "extensions": [
125
+ ".php"
126
+ ]
127
+ }
128
+ },
129
+ "instructions": [
130
+ ".opencode/memory/user.md",
131
+ ".opencode/memory/project/*.md"
132
+ ],
133
+ "keybinds": {
134
+ "command_list": ";",
135
+ "leader": "`",
136
+ "session_child_cycle": "ctrl+alt+right",
137
+ "session_child_cycle_reverse": "ctrl+alt+left",
138
+ "session_compact": "ctrl+k"
139
+ },
140
+ "mcp": {
141
+ "context7": {
142
+ "type": "remote",
143
+ "url": "https://mcp.context7.com/mcp",
144
+ "headers": {
145
+ "CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
146
+ }
147
+ },
148
+ "gh_grep": {
149
+ "type": "remote",
150
+ "url": "https://mcp.grep.app"
151
+ },
152
+ "stitch": {
153
+ "enabled": false,
154
+ "type": "remote",
155
+ "url": "https://stitch.googleapis.com/mcp",
156
+ "oauth": false,
157
+ "headers": {
158
+ "Authorization": "Bearer {env:STITCH_ACCESS_TOKEN}",
159
+ "X-Goog-User-Project": "{env:GOOGLE_CLOUD_PROJECT}"
160
+ }
161
+ }
162
+ },
163
+ "model": "opencode/big-pickle",
164
+ "permission": {
165
+ "bash": {
166
+ "*": "allow",
167
+ "cat *": "allow",
168
+ "git branch *": "allow",
169
+ "git commit *": "ask",
170
+ "git diff *": "allow",
171
+ "git log *": "allow",
172
+ "git push *": "ask",
173
+ "git rebase *": "ask",
174
+ "git reset *": "ask",
175
+ "git status *": "allow",
176
+ "ls *": "allow",
177
+ "npm *": "allow",
178
+ "npx *": "allow",
179
+ "rm *": "deny",
180
+ "rm -rf *": "deny",
181
+ "sudo *": "deny"
182
+ },
183
+ "doom_loop": "ask",
184
+ "edit": "allow",
185
+ "external_directory": "ask",
186
+ "question": "allow",
187
+ "read": {
188
+ "*": "allow",
189
+ "*.env": "deny",
190
+ "*.env.*": "deny",
191
+ "*.env.example": "allow"
192
+ }
193
+ },
194
+ "plugin": [
195
+ "@tarquinen/opencode-dcp@latest",
196
+ "@franlol/opencode-md-table-formatter@0.0.3"
197
+ ],
198
+ "provider": {
199
+ "github-copilot": {
200
+ "models": {
201
+ "claude-opus-4.5": {
202
+ "attachment": true,
203
+ "reasoning": true,
204
+ "temperature": true,
205
+ "tool_call": true,
206
+ "variants": {
207
+ "high": {
208
+ "options": {
209
+ "thinking": {
210
+ "budgetTokens": 32000,
211
+ "type": "enabled"
212
+ }
213
+ }
214
+ },
215
+ "medium": {
216
+ "options": {
217
+ "thinking": {
218
+ "budgetTokens": 16000,
219
+ "type": "enabled"
220
+ }
221
+ }
222
+ }
223
+ }
224
+ },
225
+ "claude-sonnet-4.5": {
226
+ "attachment": true,
227
+ "reasoning": true,
228
+ "temperature": true,
229
+ "tool_call": true,
230
+ "variants": {
231
+ "high": {
232
+ "options": {
233
+ "thinking": {
234
+ "budgetTokens": 16000,
235
+ "type": "enabled"
236
+ }
237
+ }
238
+ },
239
+ "medium": {
240
+ "options": {
241
+ "thinking": {
242
+ "budgetTokens": 8000,
243
+ "type": "enabled"
244
+ }
245
+ }
246
+ }
247
+ }
248
+ },
249
+ "claude-haiku-4.5": {
250
+ "attachment": true,
251
+ "reasoning": true,
252
+ "temperature": true,
253
+ "tool_call": true,
254
+ "variants": {
255
+ "high": {
256
+ "options": {
257
+ "thinking": {
258
+ "budgetTokens": 32000,
259
+ "type": "enabled"
260
+ }
261
+ }
262
+ },
263
+ "medium": {
264
+ "options": {
265
+ "thinking": {
266
+ "budgetTokens": 16000,
267
+ "type": "enabled"
268
+ }
269
+ }
270
+ }
271
+ }
272
+ },
273
+ "gpt-5-mini": {
274
+ "attachment": true,
275
+ "reasoning": true,
276
+ "temperature": true,
277
+ "tool_call": true,
278
+ "variants": {
279
+ "high": {
280
+ "options": {
281
+ "reasoning": {
282
+ "effort": "high"
283
+ }
284
+ }
285
+ },
286
+ "medium": {
287
+ "options": {
288
+ "reasoning": {
289
+ "effort": "medium"
290
+ }
291
+ }
292
+ },
293
+ "low": {
294
+ "options": {
295
+ "reasoning": {
296
+ "effort": "low"
297
+ }
298
+ }
299
+ }
300
+ }
301
+ },
302
+ "gpt-5.2-codex": {
303
+ "attachment": true,
304
+ "reasoning": true,
305
+ "temperature": true,
306
+ "tool_call": true,
307
+ "variants": {
308
+ "high": {
309
+ "options": {
310
+ "reasoning": {
311
+ "effort": "high"
312
+ }
313
+ }
314
+ },
315
+ "medium": {
316
+ "options": {
317
+ "reasoning": {
318
+ "effort": "medium"
319
+ }
320
+ }
321
+ },
322
+ "low": {
323
+ "options": {
324
+ "reasoning": {
325
+ "effort": "low"
326
+ }
327
+ }
328
+ }
329
+ }
330
+ }
331
+ }
332
+ },
333
+ "openai": {
334
+ "models": {
335
+ "gpt-5.2": {
336
+ "variants": {
337
+ "fast": {
338
+ "disabled": true
339
+ },
340
+ "high": {
341
+ "include": [
342
+ "reasoning.encrypted_content"
343
+ ],
344
+ "reasoningEffort": "high",
345
+ "reasoningSummary": "auto",
346
+ "textVerbosity": "low"
347
+ },
348
+ "medium": {
349
+ "include": [
350
+ "reasoning.encrypted_content"
351
+ ],
352
+ "reasoningEffort": "medium",
353
+ "reasoningSummary": "auto",
354
+ "textVerbosity": "low"
355
+ }
356
+ }
357
+ },
358
+ "gpt-5.2-codex": {
359
+ "variants": {
360
+ "fast": {
361
+ "disabled": true
362
+ },
363
+ "high": {
364
+ "include": [
365
+ "reasoning.encrypted_content"
366
+ ],
367
+ "reasoningEffort": "high",
368
+ "reasoningSummary": "auto",
369
+ "textVerbosity": "low"
370
+ },
371
+ "medium": {
372
+ "include": [
373
+ "reasoning.encrypted_content"
374
+ ],
375
+ "reasoningEffort": "medium",
376
+ "reasoningSummary": "auto",
377
+ "textVerbosity": "low"
378
+ }
379
+ }
380
+ }
381
+ }
382
+ },
383
+ "opencode": {
384
+ "models": {
385
+ "big-pickle": {
386
+ "options": {
387
+ "reasoningEffort": "high",
388
+ "temperature": 1,
389
+ "top_k": 40,
390
+ "top_p": 0.95
391
+ },
392
+ "reasoning": true
393
+ }
394
+ }
395
+ },
396
+ "proxypal": {
397
+ "models": {
398
+ "gemini-2.5-computer-use-preview-10-2025": {
399
+ "limit": {
400
+ "context": 880964,
401
+ "output": 65536
402
+ },
403
+ "name": "Gemini 2 5 Computer Use Preview 10 2025",
404
+ "modalities": {
405
+ "input": [
406
+ "text",
407
+ "image",
408
+ "pdf"
409
+ ],
410
+ "output": [
411
+ "text"
412
+ ]
413
+ }
414
+ },
415
+ "gemini-2.5-flash": {
416
+ "limit": {
417
+ "context": 880964,
418
+ "output": 65536
419
+ },
420
+ "name": "Gemini 2 5 Flash",
421
+ "modalities": {
422
+ "input": [
423
+ "text",
424
+ "image",
425
+ "pdf"
426
+ ],
427
+ "output": [
428
+ "text"
429
+ ]
430
+ }
431
+ },
432
+ "gemini-2.5-flash-lite": {
433
+ "limit": {
434
+ "context": 880964,
435
+ "output": 65536
436
+ },
437
+ "name": "Gemini 2 5 Flash Lite",
438
+ "modalities": {
439
+ "input": [
440
+ "text",
441
+ "image",
442
+ "pdf"
443
+ ],
444
+ "output": [
445
+ "text"
446
+ ]
447
+ }
448
+ },
449
+ "gemini-2.5-pro": {
450
+ "limit": {
451
+ "context": 880964,
452
+ "output": 65536
453
+ },
454
+ "name": "Gemini 2 5 Pro",
455
+ "modalities": {
456
+ "input": [
457
+ "text",
458
+ "image",
459
+ "pdf"
460
+ ],
461
+ "output": [
462
+ "text"
463
+ ]
464
+ }
465
+ },
466
+ "gemini-3-flash-preview": {
467
+ "limit": {
468
+ "context": 880964,
469
+ "output": 65536
470
+ },
471
+ "name": "Gemini 3 Flash Preview",
472
+ "modalities": {
473
+ "input": [
474
+ "text",
475
+ "image",
476
+ "pdf"
477
+ ],
478
+ "output": [
479
+ "text"
480
+ ]
481
+ },
482
+ "variants": {
483
+ "low": {
484
+ "thinkingLevel": "low"
485
+ },
486
+ "medium": {
487
+ "thinkingLevel": "medium"
488
+ },
489
+ "high": {
490
+ "thinkingLevel": "high"
491
+ }
492
+ },
493
+ "reasoning": true
494
+ },
495
+ "gemini-3-pro-image-preview": {
496
+ "limit": {
497
+ "context": 880964,
498
+ "output": 65536
499
+ },
500
+ "name": "Gemini 3 Pro Image Preview",
501
+ "modalities": {
502
+ "input": [
503
+ "text",
504
+ "image",
505
+ "pdf"
506
+ ],
507
+ "output": [
508
+ "text"
509
+ ]
510
+ }
511
+ },
512
+ "gemini-3-pro-preview": {
513
+ "limit": {
514
+ "context": 880964,
515
+ "output": 65536
516
+ },
517
+ "name": "Gemini 3 Pro Preview",
518
+ "modalities": {
519
+ "input": [
520
+ "text",
521
+ "image",
522
+ "pdf"
523
+ ],
524
+ "output": [
525
+ "text"
526
+ ]
527
+ },
528
+ "variants": {
529
+ "low": {
530
+ "thinkingLevel": "low"
531
+ },
532
+ "high": {
533
+ "thinkingLevel": "high"
534
+ }
535
+ },
536
+ "reasoning": true
537
+ },
538
+ "gemini-claude-opus-4-5-thinking": {
539
+ "limit": {
540
+ "context": 168000,
541
+ "output": 64000
542
+ },
543
+ "modalities": {
544
+ "input": [
545
+ "text",
546
+ "image",
547
+ "pdf"
548
+ ],
549
+ "output": [
550
+ "text"
551
+ ]
552
+ },
553
+ "name": "Gemini Claude Opus 4 5 Thinking",
554
+ "variants": {
555
+ "low": {
556
+ "thinkingConfig": {
557
+ "thinkingBudget": 8192
558
+ }
559
+ },
560
+ "max": {
561
+ "thinkingConfig": {
562
+ "thinkingBudget": 32768
563
+ }
564
+ }
565
+ },
566
+ "reasoning": true
567
+ },
568
+ "gemini-claude-sonnet-4-5": {
569
+ "limit": {
570
+ "context": 168000,
571
+ "output": 64000
572
+ },
573
+ "modalities": {
574
+ "input": [
575
+ "text",
576
+ "image",
577
+ "pdf"
578
+ ],
579
+ "output": [
580
+ "text"
581
+ ]
582
+ },
583
+ "name": "Gemini Claude Sonnet 4 5"
584
+ },
585
+ "gemini-claude-sonnet-4-5-thinking": {
586
+ "limit": {
587
+ "context": 168000,
588
+ "output": 64000
589
+ },
590
+ "modalities": {
591
+ "input": [
592
+ "text",
593
+ "image",
594
+ "pdf"
595
+ ],
596
+ "output": [
597
+ "text"
598
+ ]
599
+ },
600
+ "name": "Gemini Claude Sonnet 4 5 Thinking",
601
+ "variants": {
602
+ "low": {
603
+ "thinkingConfig": {
604
+ "thinkingBudget": 8192
605
+ }
606
+ },
607
+ "max": {
608
+ "thinkingConfig": {
609
+ "thinkingBudget": 32768
610
+ }
611
+ }
612
+ },
613
+ "reasoning": true
614
+ },
615
+ "glm-4.5": {
616
+ "limit": {
617
+ "context": 107520,
618
+ "output": 16384
619
+ },
620
+ "name": "Glm 4 5"
621
+ },
622
+ "glm-4.5-air": {
623
+ "limit": {
624
+ "context": 107520,
625
+ "output": 16384
626
+ },
627
+ "name": "Glm 4 5 Air"
628
+ },
629
+ "glm-4.6": {
630
+ "limit": {
631
+ "context": 107520,
632
+ "output": 16384
633
+ },
634
+ "name": "Glm 4 6"
635
+ },
636
+ "glm-4.7": {
637
+ "limit": {
638
+ "context": 107520,
639
+ "output": 16384
640
+ },
641
+ "name": "Glm 4 7"
642
+ },
643
+ "gpt-5": {
644
+ "limit": {
645
+ "context": 336000,
646
+ "output": 32768
647
+ },
648
+ "name": "Gpt 5",
649
+ "options": {
650
+ "reasoningEffort": "medium"
651
+ },
652
+ "reasoning": true
653
+ },
654
+ "gpt-5-codex": {
655
+ "limit": {
656
+ "context": 336000,
657
+ "output": 32768
658
+ },
659
+ "name": "Gpt 5 Codex",
660
+ "options": {
661
+ "reasoningEffort": "medium"
662
+ },
663
+ "reasoning": true
664
+ },
665
+ "gpt-5-codex-mini": {
666
+ "limit": {
667
+ "context": 336000,
668
+ "output": 32768
669
+ },
670
+ "name": "Gpt 5 Codex Mini",
671
+ "options": {
672
+ "reasoningEffort": "medium"
673
+ },
674
+ "reasoning": true
675
+ },
676
+ "gpt-5.1": {
677
+ "limit": {
678
+ "context": 336000,
679
+ "output": 32768
680
+ },
681
+ "name": "Gpt 5 1",
682
+ "options": {
683
+ "reasoningEffort": "medium"
684
+ },
685
+ "reasoning": true
686
+ },
687
+ "gpt-5.1-codex": {
688
+ "limit": {
689
+ "context": 336000,
690
+ "output": 32768
691
+ },
692
+ "name": "Gpt 5 1 Codex",
693
+ "options": {
694
+ "reasoningEffort": "medium"
695
+ },
696
+ "reasoning": true
697
+ },
698
+ "gpt-5.1-codex-max": {
699
+ "limit": {
700
+ "context": 336000,
701
+ "output": 32768
702
+ },
703
+ "name": "Gpt 5 1 Codex Max",
704
+ "options": {
705
+ "reasoningEffort": "medium"
706
+ },
707
+ "reasoning": true
708
+ },
709
+ "gpt-5.1-codex-mini": {
710
+ "limit": {
711
+ "context": 336000,
712
+ "output": 32768
713
+ },
714
+ "name": "Gpt 5 1 Codex Mini",
715
+ "options": {
716
+ "reasoningEffort": "medium"
717
+ },
718
+ "reasoning": true
719
+ },
720
+ "gpt-5.2": {
721
+ "limit": {
722
+ "context": 336000,
723
+ "output": 32768
724
+ },
725
+ "name": "Gpt 5 2",
726
+ "options": {
727
+ "reasoningEffort": "medium"
728
+ },
729
+ "reasoning": true
730
+ },
731
+ "gpt-5.2-codex": {
732
+ "limit": {
733
+ "context": 336000,
734
+ "output": 32768
735
+ },
736
+ "name": "Gpt 5 2 Codex",
737
+ "options": {
738
+ "reasoningEffort": "medium"
739
+ },
740
+ "reasoning": true
741
+ },
742
+ "gpt-oss-120b-medium": {
743
+ "limit": {
744
+ "context": 107520,
745
+ "output": 16384
746
+ },
747
+ "name": "Gpt Oss 120b Medium"
748
+ }
749
+ },
750
+ "name": "ProxyPal",
751
+ "npm": "@ai-sdk/anthropic",
752
+ "options": {
753
+ "apiKey": "proxypal-local",
754
+ "baseURL": "http://127.0.0.1:8317/v1",
755
+ "includeUsage": true
756
+ }
757
+ },
758
+ "zai-coding-plan": {
759
+ "models": {
760
+ "glm-4.6": {
761
+ "limit": {
762
+ "context": 128000,
763
+ "output": 16384
764
+ },
765
+ "options": {
766
+ "temperature": 1,
767
+ "thinking": {
768
+ "type": "enabled"
769
+ }
770
+ },
771
+ "reasoning": true,
772
+ "temperature": true,
773
+ "tool_call": true
774
+ },
775
+ "glm-4.7": {
776
+ "id": "glm-4.7",
777
+ "interleaved": true,
778
+ "limit": {
779
+ "context": 200000,
780
+ "output": 128000
781
+ },
782
+ "name": "GLM-4.7",
783
+ "options": {
784
+ "temperature": 1,
785
+ "thinking": {
786
+ "type": "enabled"
787
+ }
788
+ },
789
+ "reasoning": true
790
+ }
791
+ },
792
+ "name": "Z.AI Coding Plan"
793
+ }
794
+ },
795
+ "share": "manual",
796
+ "small_model": "opencode/gpt-5-nano",
797
+ "tui": {
798
+ "diff_style": "auto",
799
+ "scroll_acceleration": {
800
+ "enabled": true
801
+ },
802
+ "scroll_speed": 3
803
+ },
804
+ "watcher": {
805
+ "ignore": [
806
+ "node_modules/**",
807
+ ".git/**",
808
+ "dist/**",
809
+ "build/**",
810
+ "*.log",
811
+ ".DS_Store"
812
+ ]
813
+ }
706
814
  }