opencodekit 0.23.0 → 0.23.2

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 (23) hide show
  1. package/dist/index.js +354 -825
  2. package/dist/template/.opencode/AGENTS.md +15 -0
  3. package/dist/template/.opencode/command/init.md +198 -34
  4. package/dist/template/.opencode/context/fallow.md +137 -0
  5. package/dist/template/.opencode/dcp-prompts/overrides/compress-range.md +89 -0
  6. package/dist/template/.opencode/opencode.json +110 -315
  7. package/dist/template/.opencode/plugin/README.md +10 -0
  8. package/dist/template/.opencode/plugin/memory/compile.ts +171 -186
  9. package/dist/template/.opencode/plugin/memory/index-generator.ts +118 -133
  10. package/dist/template/.opencode/plugin/memory/lint.ts +253 -275
  11. package/dist/template/.opencode/plugin/memory/tools.ts +224 -268
  12. package/dist/template/.opencode/plugin/memory/validate.ts +154 -164
  13. package/dist/template/.opencode/plugin/sdk/copilot/responses/tool/web-search-preview.ts +13 -30
  14. package/dist/template/.opencode/plugin/sdk/copilot/responses/tool/web-search-shared.ts +25 -0
  15. package/dist/template/.opencode/plugin/sdk/copilot/responses/tool/web-search.ts +17 -34
  16. package/dist/template/.opencode/plugin/session-summary.ts +542 -0
  17. package/dist/template/.opencode/plugin/srcwalk.ts +775 -661
  18. package/dist/template/.opencode/skill/condition-based-waiting/example.ts +15 -2
  19. package/dist/template/.opencode/skill/fallow/SKILL.md +409 -0
  20. package/dist/template/.opencode/skill/fallow/references/cli-reference.md +1905 -0
  21. package/dist/template/.opencode/skill/fallow/references/gotchas.md +644 -0
  22. package/dist/template/.opencode/skill/fallow/references/patterns.md +791 -0
  23. package/package.json +2 -2
@@ -47,9 +47,8 @@
47
47
  },
48
48
  "instructions": [
49
49
  ".opencode/memory/project/user.md",
50
- ".opencode/memory/project/tech-stack.md",
51
- ".opencode/memory/project/project.md",
52
- ".opencode/context/git-context.md"
50
+ ".opencode/context/git-context.md",
51
+ ".opencode/context/fallow.md"
53
52
  ],
54
53
  "keybinds": {
55
54
  "leader": "ctrl+x",
@@ -115,318 +114,8 @@
115
114
  "*token*": "deny"
116
115
  }
117
116
  },
118
- "plugin": ["@tarquinen/opencode-dcp@latest", "openslimedit@latest", "opencodex-fast@latest"],
117
+ "plugin": ["@tarquinen/opencode-dcp@latest", "openslimedit@latest"],
119
118
  "provider": {
120
- "github-copilot": {
121
- "models": {
122
- "claude-haiku-4.5": {
123
- "attachment": true,
124
- "limit": {
125
- "context": 216000,
126
- "output": 32000
127
- },
128
- "options": {
129
- "reasoningEffort": "high"
130
- },
131
- "reasoning": true,
132
- "temperature": true,
133
- "tool_call": true,
134
- "variants": {
135
- "high": {
136
- "options": {
137
- "reasoningEffort": "high"
138
- }
139
- },
140
- "low": {
141
- "options": {
142
- "reasoningEffort": "low"
143
- }
144
- },
145
- "medium": {
146
- "options": {
147
- "reasoningEffort": "medium"
148
- }
149
- }
150
- }
151
- },
152
- "claude-opus-4.7": {
153
- "attachment": true,
154
- "limit": {
155
- "context": 216000,
156
- "output": 64000
157
- },
158
- "options": {
159
- "reasoningEffort": "medium"
160
- },
161
- "reasoning": true,
162
- "temperature": true,
163
- "tool_call": true,
164
- "variants": {
165
- "medium": {
166
- "options": {
167
- "reasoningEffort": "medium"
168
- }
169
- }
170
- }
171
- },
172
- "claude-opus-4.6": {
173
- "attachment": true,
174
- "limit": {
175
- "context": 216000,
176
- "output": 64000
177
- },
178
- "options": {
179
- "reasoningEffort": "high"
180
- },
181
- "reasoning": true,
182
- "temperature": true,
183
- "tool_call": true,
184
- "variants": {
185
- "high": {
186
- "options": {
187
- "reasoningEffort": "high"
188
- }
189
- },
190
- "low": {
191
- "options": {
192
- "reasoningEffort": "low"
193
- }
194
- },
195
- "medium": {
196
- "options": {
197
- "reasoningEffort": "medium"
198
- }
199
- }
200
- }
201
- },
202
- "claude-sonnet-4.6": {
203
- "attachment": true,
204
- "limit": {
205
- "context": 216000,
206
- "output": 32000
207
- },
208
- "options": {
209
- "reasoningEffort": "high"
210
- },
211
- "reasoning": true,
212
- "temperature": true,
213
- "tool_call": true,
214
- "variants": {
215
- "high": {
216
- "options": {
217
- "reasoningEffort": "high"
218
- }
219
- },
220
- "low": {
221
- "options": {
222
- "reasoningEffort": "low"
223
- }
224
- },
225
- "medium": {
226
- "options": {
227
- "reasoningEffort": "medium"
228
- }
229
- }
230
- }
231
- },
232
- "gemini-3-flash-preview": {
233
- "attachment": true,
234
- "limit": {
235
- "context": 173000,
236
- "output": 64000
237
- },
238
- "reasoning": true,
239
- "temperature": true,
240
- "tool_call": true
241
- },
242
- "gemini-3-pro-preview": {
243
- "attachment": true,
244
- "limit": {
245
- "context": 173000,
246
- "output": 64000
247
- },
248
- "reasoning": true,
249
- "temperature": true,
250
- "tool_call": true
251
- },
252
- "gemini-3.1-pro-preview": {
253
- "attachment": true,
254
- "limit": {
255
- "context": 173000,
256
- "output": 64000
257
- },
258
- "reasoning": true,
259
- "temperature": true,
260
- "tool_call": true
261
- },
262
- "gpt-5.3-codex": {
263
- "attachment": true,
264
- "limit": {
265
- "context": 400000,
266
- "input": 400000,
267
- "output": 128000
268
- },
269
- "name": "Gpt 5 3 Codex",
270
- "options": {
271
- "reasoningEffort": "medium",
272
- "reasoningSummary": "auto",
273
- "textVerbosity": "medium"
274
- },
275
- "reasoning": true,
276
- "temperature": true,
277
- "tool_call": true,
278
- "variants": {
279
- "fast": {
280
- "disabled": true
281
- },
282
- "xhigh": {
283
- "include": ["reasoning.encrypted_content"],
284
- "reasoningEffort": "xhigh",
285
- "reasoningSummary": "auto"
286
- },
287
- "high": {
288
- "include": ["reasoning.encrypted_content"],
289
- "reasoningEffort": "high",
290
- "reasoningSummary": "auto",
291
- "textVerbosity": "medium"
292
- },
293
- "low": {
294
- "reasoningEffort": "low",
295
- "reasoningSummary": "auto"
296
- },
297
- "medium": {
298
- "reasoningEffort": "medium",
299
- "reasoningSummary": "auto",
300
- "textVerbosity": "medium"
301
- }
302
- }
303
- },
304
- "gpt-5.4-mini": {
305
- "attachment": true,
306
- "limit": {
307
- "context": 400000,
308
- "input": 400000,
309
- "output": 128000
310
- },
311
- "modalities": {
312
- "input": ["text", "image"],
313
- "output": ["text"]
314
- },
315
- "options": {
316
- "reasoningEffort": "low",
317
- "reasoningSummary": "auto",
318
- "textVerbosity": "medium"
319
- },
320
- "reasoning": true,
321
- "temperature": true,
322
- "tool_call": true,
323
- "variants": {
324
- "xhigh": {
325
- "include": ["reasoning.encrypted_content"],
326
- "reasoningEffort": "xhigh",
327
- "reasoningSummary": "auto"
328
- },
329
- "high": {
330
- "include": ["reasoning.encrypted_content"],
331
- "reasoningEffort": "high",
332
- "reasoningSummary": "auto"
333
- },
334
- "low": {
335
- "reasoningEffort": "low",
336
- "reasoningSummary": "auto"
337
- },
338
- "medium": {
339
- "reasoningEffort": "medium",
340
- "reasoningSummary": "auto"
341
- }
342
- }
343
- },
344
- "gpt-5.4": {
345
- "attachment": true,
346
- "limit": {
347
- "context": 400000,
348
- "input": 400000,
349
- "output": 128000
350
- },
351
- "modalities": {
352
- "input": ["text", "image"],
353
- "output": ["text"]
354
- },
355
- "options": {
356
- "reasoningEffort": "low",
357
- "reasoningSummary": "auto",
358
- "textVerbosity": "medium"
359
- },
360
- "reasoning": true,
361
- "temperature": true,
362
- "tool_call": true,
363
- "variants": {
364
- "xhigh": {
365
- "include": ["reasoning.encrypted_content"],
366
- "reasoningEffort": "xhigh",
367
- "reasoningSummary": "auto"
368
- },
369
- "high": {
370
- "include": ["reasoning.encrypted_content"],
371
- "reasoningEffort": "high",
372
- "reasoningSummary": "auto"
373
- },
374
- "low": {
375
- "reasoningEffort": "low",
376
- "reasoningSummary": "auto"
377
- },
378
- "medium": {
379
- "reasoningEffort": "medium",
380
- "reasoningSummary": "auto"
381
- }
382
- }
383
- },
384
- "gpt-5.5": {
385
- "name": "GPT-5.5",
386
- "attachment": true,
387
- "limit": {
388
- "context": 400000,
389
- "input": 400000,
390
- "output": 128000
391
- },
392
- "modalities": {
393
- "input": ["text", "image"],
394
- "output": ["text"]
395
- },
396
- "options": {
397
- "reasoningEffort": "medium",
398
- "reasoningSummary": "auto",
399
- "textVerbosity": "medium"
400
- },
401
- "reasoning": true,
402
- "temperature": true,
403
- "tool_call": true,
404
- "variants": {
405
- "xhigh": {
406
- "include": ["reasoning.encrypted_content"],
407
- "reasoningEffort": "xhigh",
408
- "reasoningSummary": "auto"
409
- },
410
- "high": {
411
- "include": ["reasoning.encrypted_content"],
412
- "reasoningEffort": "high",
413
- "reasoningSummary": "auto"
414
- },
415
- "low": {
416
- "reasoningEffort": "low",
417
- "reasoningSummary": "auto"
418
- },
419
- "medium": {
420
- "reasoningEffort": "medium",
421
- "reasoningSummary": "auto"
422
- }
423
- }
424
- }
425
- },
426
- "options": {
427
- "timeout": 600000
428
- }
429
- },
430
119
  "proxypal": {
431
120
  "models": {
432
121
  "claude-opus-4.6": {
@@ -678,11 +367,117 @@
678
367
  "baseURL": "http://127.0.0.1:8317/v1",
679
368
  "includeUsage": true
680
369
  }
370
+ },
371
+ "opencode-go": {
372
+ "description": "OpenCode Go subscription — $10/mo for open coding models",
373
+ "options": {
374
+ "baseURL": "https://opencode.ai/zen/go/v1"
375
+ },
376
+ "models": {
377
+ "deepseek-v4-flash": {
378
+ "limit": {
379
+ "context": 200000,
380
+ "output": 64000
381
+ },
382
+ "reasoning": true,
383
+ "tool_call": true
384
+ },
385
+ "mimo-v2.5": {
386
+ "limit": {
387
+ "context": 180000,
388
+ "output": 64000
389
+ },
390
+ "modalities": {
391
+ "input": ["text", "image"],
392
+ "output": ["text"]
393
+ },
394
+ "reasoning": true,
395
+ "tool_call": true
396
+ },
397
+ "deepseek-v4-pro": {
398
+ "limit": {
399
+ "context": 240000,
400
+ "output": 64000
401
+ },
402
+ "reasoning": true,
403
+ "tool_call": true
404
+ },
405
+ "mimo-v2.5-pro": {
406
+ "limit": {
407
+ "context": 220000,
408
+ "output": 64000
409
+ },
410
+ "modalities": {
411
+ "input": ["text", "image", "audio"],
412
+ "output": ["text"]
413
+ },
414
+ "reasoning": true,
415
+ "tool_call": true
416
+ }
417
+ }
418
+ },
419
+ "deepseek": {
420
+ "description": "Direct DeepSeek API — deepseek-v4-flash & deepseek-v4-pro 1M native context",
421
+ "models": {
422
+ "deepseek-v4-flash": {
423
+ "limit": {
424
+ "context": 200000,
425
+ "output": 64000
426
+ },
427
+ "reasoning": true,
428
+ "tool_call": true
429
+ },
430
+ "deepseek-v4-pro": {
431
+ "limit": {
432
+ "context": 240000,
433
+ "output": 64000
434
+ },
435
+ "reasoning": true,
436
+ "tool_call": true
437
+ }
438
+ }
439
+ },
440
+ "xiaomi-mimo": {
441
+ "description": "Direct Xiaomi MiMo API — mimo-v2.5 & mimo-v2.5-pro 1M native context",
442
+ "models": {
443
+ "mimo-v2.5": {
444
+ "limit": {
445
+ "context": 180000,
446
+ "output": 64000
447
+ },
448
+ "modalities": {
449
+ "input": ["text", "image", "audio"],
450
+ "output": ["text"]
451
+ },
452
+ "reasoning": true,
453
+ "tool_call": true
454
+ },
455
+ "mimo-v2.5-pro": {
456
+ "limit": {
457
+ "context": 220000,
458
+ "output": 64000
459
+ },
460
+ "modalities": {
461
+ "input": ["text", "image", "audio"],
462
+ "output": ["text"]
463
+ },
464
+ "reasoning": true,
465
+ "tool_call": true
466
+ }
467
+ }
681
468
  }
682
469
  },
683
470
  "share": "manual",
684
471
  "small_model": "opencode/gpt-5-nano",
685
472
  "watcher": {
686
- "ignore": ["node_modules/**", ".git/**", "dist/**", "build/**", "*.log", ".DS_Store"]
473
+ "ignore": [
474
+ "node_modules/**",
475
+ ".git/**",
476
+ "dist/**",
477
+ "build/**",
478
+ ".fallow/**",
479
+ "*.log",
480
+ ".DS_Store"
481
+ ]
687
482
  }
688
483
  }
@@ -11,6 +11,7 @@ plugin/
11
11
  ├── copilot-auth.ts # GitHub Copilot provider/auth integration
12
12
  ├── prompt-leverage.ts # Prompt pre-processing with structured execution framing
13
13
  ├── rtk.ts # Optional RTK command-output compression hook
14
+ ├── session-summary.ts # Structured persistent session summary (artifact trail, decisions, anchored merge)
14
15
  ├── skill-mcp.ts # Skill-scoped MCP bridge (skill_mcp tools)
15
16
  └── lib/
16
17
  ├── memory-tools.ts # 6 core memory tools (observation, search, get, read, update, timeline)
@@ -69,6 +70,15 @@ plugin/
69
70
  - Rewrites low-risk `bash`/`shell` commands through `rtk rewrite`
70
71
  - Keeps an idempotency guard for symlinked global/project config double-loading
71
72
 
73
+ - `session-summary.ts`
74
+ - Maintains a structured, incrementally-updated session summary that survives DCP compression cycles
75
+ - **File-artifact tracking**: intercepts `read`, `edit`, `write`, `srcwalk_read` via `tool.execute.before` to track which files were read, modified, or created
76
+ - **Decision capture**: auto-tracks `observation(type:decision)` calls to log decisions with rationale
77
+ - **Anchored merge**: persists summary to `.opencode/state/session-summary.md` before compaction, merges incrementally rather than regenerating from scratch
78
+ - **Context injection**: injects structured `<session_summary>` block into system prompt via `experimental.chat.system.transform`
79
+ - **Intent guessing**: captures session intent from the first user message
80
+ - Inspired by Factory.ai's anchored iterative summarization research
81
+
72
82
  ## Notes
73
83
 
74
84
  - OpenCode auto-discovers every `.ts` file in `plugin/` as a plugin — keep helper modules in `lib/`