You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
After updating omp and restarting, umans-glm-5.2 (Umans AI Coding Plan, direct integration) only exposes four reasoning selectors in the thinking-level picker: off, inherit, high, auto. The top max tier that GLM-5.2 actually supports is missing, and the lower tiers (minimal/low/medium) have disappeared too. Before the update the full ladder was selectable.
This is an omp-side catalog/discovery gap: the Umans level table at packages/catalog/src/provider-models/openai-compat.ts does not map the max level that Umans now reports, and the Umans anthropic-messages/budget path carries no effortMap to route Effort.XHigh onto the upstream "max" wire value.
Observed behavior
Thinking-level picker for umans-glm-5.2:
Before update: full reasoning ladder (minimal, low, medium, high, xhigh/max) selectable.
After update + restart: only off, inherit, high, auto.
The four values shown correspond exactly to what getSupportedEfforts() returns for this model plus the always-present selectors:
inherit and off — always present (THINKING_LEVEL_METADATA in packages/coding-agent/src/thinking.ts).
auto — the AUTO_THINKING selector layered on top.
high — the only surviving model-supported effort.
So the model's supported effort list has collapsed to a single entry: ["high"].
Root cause
Umans is dynamicModelsAuthoritative: true (packages/catalog/src/provider-models/descriptors.ts ~L319–L324), so at runtime the reasoning levels come from the live https://api.code.umans.ai/v1/models/info response, filtered through mapUmansReasoningEfforts in packages/catalog/src/provider-models/openai-compat.ts (~L597) — not the bundled umans-glm-5.2 catalog entry.
The live response for umans-glm-5.2 (fetched unauthenticated, 2026-06-21):
Per the z.ai docs (GLM-5.2 thinking modes), GLM-5.2 has 3 thinking modes: non-thinking, and thinking in two modes — High and Max ("Use Max Thinking for complicated tasks"). Umans surfaces this native none/high/max scale.
But the Umans level table at packages/catalog/src/provider-models/openai-compat.ts:563 only knows the pi internal effort scale — it has no max key:
Result: efforts = ["high"] only. That single effort is what getSupportedEfforts() returns (packages/catalog/src/model-thinking.ts:620) and what the thinking-level picker renders — matching the off/inherit/high/auto regression exactly.
A second, related gap: even once max is mapped to Effort.XHigh, the Umans anthropic-messages/budget path has no effortMap baked onto the model to route Effort.XHigh back to the upstream "max" wire value. mapEffortToAnthropicAdaptiveEffort (packages/catalog/src/model-thinking.ts:696) falls back to the identity (xhigh) when no effortMap entry exists, and Umans would reject xhigh — the same problem the z.ai path already solved with ZAI_GLM_52_REASONING_EFFORT_MAP (model-thinking.ts:83, applied at model-thinking.ts:374).
Expected fix
Two coordinated changes in the Umans discovery path (packages/catalog/src/provider-models/openai-compat.ts) plus a regression test against the resolver:
Map the upstream max level to Effort.XHigh in UMANS_REASONING_EFFORT_BY_LEVEL (and decide how "none" should surface — likely dropped, since off/inherit already cover "no reasoning"). After this, levels: ["none","high","max"] resolves to ["high", "xhigh"] and the picker shows high + max again.
Bake an effortMap onto the Umans umans-glm-5.2 spec ({ [Effort.XHigh]: "max" }, mirroring GLM_52_XHIGH_MAX_EFFORT_MAP / ZAI_GLM_52_REASONING_EFFORT_MAP) so the request body sends "max" rather than the unsupported "xhigh". mapUmansModelInfo (~L630) currently builds the thinking config without an effortMap; that's where it should be attached when the upstream reports a max level.
The bundled umans-glm-5.2 catalog entry (packages/catalog/src/models.json:69312) is now stale relative to the live API — it lists efforts: ["minimal","low","medium","high","xhigh"] with no effortMap. Because Umans is dynamicModelsAuthoritative, the live response overrides it at runtime, but the bundled fallback should be regenerated to match (none/high/max scale, plus the xhigh→max effort map) so the offline/degraded-discovery path is consistent.
Context
Context window: bundled and live both report context_window: 405504 (~406k) for the Umans SKU — this is the Umans-side cap, distinct from z.ai's native GLM-5.2 max of 1,048,576. Not a bug, just noting the source of the number.
Summary
After updating omp and restarting,
umans-glm-5.2(Umans AI Coding Plan, direct integration) only exposes four reasoning selectors in the thinking-level picker:off,inherit,high,auto. The topmaxtier that GLM-5.2 actually supports is missing, and the lower tiers (minimal/low/medium) have disappeared too. Before the update the full ladder was selectable.This is an omp-side catalog/discovery gap: the Umans level table at
packages/catalog/src/provider-models/openai-compat.tsdoes not map themaxlevel that Umans now reports, and the Umans anthropic-messages/budget path carries noeffortMapto routeEffort.XHighonto the upstream"max"wire value.Observed behavior
Thinking-level picker for
umans-glm-5.2:minimal,low,medium,high,xhigh/max) selectable.off,inherit,high,auto.The four values shown correspond exactly to what
getSupportedEfforts()returns for this model plus the always-present selectors:inheritandoff— always present (THINKING_LEVEL_METADATAinpackages/coding-agent/src/thinking.ts).auto— theAUTO_THINKINGselector layered on top.high— the only surviving model-supported effort.So the model's supported effort list has collapsed to a single entry:
["high"].Root cause
Umans is
dynamicModelsAuthoritative: true(packages/catalog/src/provider-models/descriptors.ts~L319–L324), so at runtime the reasoning levels come from the livehttps://api.code.umans.ai/v1/models/inforesponse, filtered throughmapUmansReasoningEffortsinpackages/catalog/src/provider-models/openai-compat.ts(~L597) — not the bundledumans-glm-5.2catalog entry.The live response for
umans-glm-5.2(fetched unauthenticated, 2026-06-21):Per the z.ai docs (GLM-5.2 thinking modes), GLM-5.2 has 3 thinking modes: non-thinking, and thinking in two modes — High and Max ("Use Max Thinking for complicated tasks"). Umans surfaces this native
none/high/maxscale.But the Umans level table at
packages/catalog/src/provider-models/openai-compat.ts:563only knows the pi internal effort scale — it has nomaxkey:mapUmansReasoningEfforts(~L597) iterateslevelsand looks each one up in that table:For
levels: ["none", "high", "max"]:"none"→undefined→ skipped"high"→Effort.High→ included"max"→undefined→ silently droppedResult:
efforts = ["high"]only. That single effort is whatgetSupportedEfforts()returns (packages/catalog/src/model-thinking.ts:620) and what the thinking-level picker renders — matching theoff/inherit/high/autoregression exactly.A second, related gap: even once
maxis mapped toEffort.XHigh, the Umans anthropic-messages/budget path has noeffortMapbaked onto the model to routeEffort.XHighback to the upstream"max"wire value.mapEffortToAnthropicAdaptiveEffort(packages/catalog/src/model-thinking.ts:696) falls back to the identity (xhigh) when noeffortMapentry exists, and Umans would rejectxhigh— the same problem the z.ai path already solved withZAI_GLM_52_REASONING_EFFORT_MAP(model-thinking.ts:83, applied atmodel-thinking.ts:374).Expected fix
Two coordinated changes in the Umans discovery path (
packages/catalog/src/provider-models/openai-compat.ts) plus a regression test against the resolver:maxlevel toEffort.XHighinUMANS_REASONING_EFFORT_BY_LEVEL(and decide how"none"should surface — likely dropped, sinceoff/inheritalready cover "no reasoning"). After this,levels: ["none","high","max"]resolves to["high", "xhigh"]and the picker showshigh+maxagain.effortMaponto the Umansumans-glm-5.2spec ({ [Effort.XHigh]: "max" }, mirroringGLM_52_XHIGH_MAX_EFFORT_MAP/ZAI_GLM_52_REASONING_EFFORT_MAP) so the request body sends"max"rather than the unsupported"xhigh".mapUmansModelInfo(~L630) currently builds thethinkingconfig without aneffortMap; that's where it should be attached when the upstream reports amaxlevel.The bundled
umans-glm-5.2catalog entry (packages/catalog/src/models.json:69312) is now stale relative to the live API — it listsefforts: ["minimal","low","medium","high","xhigh"]with noeffortMap. Because Umans isdynamicModelsAuthoritative, the live response overrides it at runtime, but the bundled fallback should be regenerated to match (none/high/maxscale, plus thexhigh→maxeffort map) so the offline/degraded-discovery path is consistent.Context
context_window: 405504(~406k) for the Umans SKU — this is the Umans-side cap, distinct from z.ai's native GLM-5.2 max of 1,048,576. Not a bug, just noting the source of the number.maxeffort mapping. The Umans path was not covered by that fix —UMANS_REASONING_EFFORT_BY_LEVELstill predates GLM-5.2'smaxtier.packages/catalog/src/provider-models/openai-compat.tslines 563–628 (Umans mapping),packages/catalog/src/model-thinking.tslines 83–92 and 373–378 (z.ai parallel to mirror).Reproduction
Live API (unauthenticated, since Umans discovery is
allowUnauthenticated: true):→
{"supported": true, "can_disable": true, "levels": ["none","high","max"], "default_level": "high"}Then in omp with
umans-glm-5.2selected, open the thinking-level picker → onlyoff/inherit/high/autoappear.Environment
mainatfc84601ea(2026-06-21).api: anthropic-messages,baseUrl: https://api.code.umans.ai).umans-glm-5.2.