opencode-codeops 1.10.2 → 1.10.3

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/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  All notable changes to CodeOps are recorded here.
4
4
 
5
+ ## 1.10.3 — 2026-10-04
6
+
7
+ ### Fixes
8
+
9
+ - effort: prefer the model variant over the reasoning-support flag
10
+
5
11
  ## 1.10.2 — 2026-10-04
6
12
 
7
13
  ### Fixes
@@ -309,9 +309,13 @@ export function modelSupportsReasoning(model) {
309
309
  * The runtime model carries a `variants` record whose entries are the exact
310
310
  * provider options for each level (for example `reasoningEffort`, or a nested
311
311
  * `reasoning.effort`). This function is the only place that mapping is
312
- * consumed, so the plugin never hardcodes a provider key. The function is
313
- * pure: it returns a new object when a change applies and the original object
314
- * reference otherwise.
312
+ * consumed, so the plugin never hardcodes a provider key. A matching variant
313
+ * is applied even when the model's reasoning capability flag is absent or
314
+ * false: the variant itself is the provider-known option set, and the host
315
+ * applies inherited variants the same way. Only when no variants record
316
+ * exists does the documented `reasoningEffort` passthrough require an
317
+ * explicit reasoning capability. The function is pure: it returns a new
318
+ * object when a change applies and the original object reference otherwise.
315
319
  *
316
320
  * @param options - Current provider options
317
321
  * @param level - Candidate level from {@link resolveEffort}
@@ -320,7 +324,6 @@ export function modelSupportsReasoning(model) {
320
324
  */
321
325
  export function applyEffort(options, level, model) {
322
326
  if (!isRoutingReasoning(level)) return options
323
- if (!modelSupportsReasoning(model)) return options
324
327
 
325
328
  const variants = extractModelVariants(model)
326
329
  if (variants !== undefined) {
@@ -330,6 +333,7 @@ export function applyEffort(options, level, model) {
330
333
  return deepMergePlain(options, variantOptions)
331
334
  }
332
335
 
336
+ if (!modelSupportsReasoning(model)) return options
333
337
  return { ...options, reasoningEffort: level }
334
338
  }
335
339
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-codeops",
3
- "version": "1.10.2",
3
+ "version": "1.10.3",
4
4
  "description": "Specification-first engineering for complex systems — CodeOps plugin for OpenCode",
5
5
  "type": "module",
6
6
  "engines": {
package/plugin/index.ts CHANGED
@@ -12,10 +12,12 @@ import {
12
12
  import {
13
13
  appendEffortTrace,
14
14
  applyEffort,
15
+ extractModelVariants,
15
16
  findEffortMarker,
16
17
  isEffortLevel,
17
18
  isEffortTraceEnabled,
18
19
  isRoutingReasoning,
20
+ modelSupportsReasoning,
19
21
  readRoutingReasoning,
20
22
  readSessionEffort,
21
23
  resolveEffort,
@@ -348,6 +350,8 @@ export const CodeOpsPlugin: Plugin = async ({ client, directory }) => {
348
350
  level,
349
351
  source,
350
352
  applied: changed,
353
+ reasoningSupported: modelSupportsReasoning(input.model),
354
+ variantLevels: Object.keys(extractModelVariants(input.model) ?? {}),
351
355
  })
352
356
  if (!changed) {
353
357
  if (marker !== undefined) {