-
Notifications
You must be signed in to change notification settings - Fork 662
fix(codex,acl): routed reasoning-effort propagation (#1100) and a workable Windows ACL envelope (#1156) #1197
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
aa8851f
6429e9c
2f242bb
392179e
07e7525
aca150b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -196,6 +196,8 @@ export interface ProviderRegistryEntry { | |||||||||||||||||||||||||||
| supportsServiceTier?: boolean; | ||||||||||||||||||||||||||||
| /** Registry default for plaintext reasoning replay; see `OcxProviderConfig.preserveResponsesReasoningContent`. Registry-only like `supportsServiceTier`. */ | ||||||||||||||||||||||||||||
| preserveResponsesReasoningContent?: boolean; | ||||||||||||||||||||||||||||
| /** Registry defaults for per-model Codex reasoning propagation; explicit user keys win during enrichment. */ | ||||||||||||||||||||||||||||
| modelSupportsReasoningSummaries?: Record<string, boolean>; | ||||||||||||||||||||||||||||
| modelDiscovery?: ProviderModelDiscoverySpec; | ||||||||||||||||||||||||||||
| contextWindow?: number; | ||||||||||||||||||||||||||||
| modelContextWindows?: Record<string, number>; | ||||||||||||||||||||||||||||
|
|
@@ -1104,6 +1106,12 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [ | |||||||||||||||||||||||||||
| ...Object.fromEntries(OPENCODE_GO_THINKING_TOGGLE_MODELS.map(id => [id, THINKING_TOGGLE_MAP])), | ||||||||||||||||||||||||||||
| ...Object.fromEntries(DEEPSEEK_THINKING_MODELS.map(id => [id, deepseekReasoningMapFor(id)])), | ||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||
| modelSupportsReasoningSummaries: { | ||||||||||||||||||||||||||||
| "glm-5.2": true, | ||||||||||||||||||||||||||||
| "glm-5.1": true, | ||||||||||||||||||||||||||||
| "glm-5": true, | ||||||||||||||||||||||||||||
| ...Object.fromEntries(DEEPSEEK_THINKING_MODELS.map(id => [id, true])), | ||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||
| thinkingToggleModels: OPENCODE_GO_THINKING_TOGGLE_MODELS, | ||||||||||||||||||||||||||||
| thinkingBudgetModels: THINKING_BUDGET_MODELS, | ||||||||||||||||||||||||||||
| noReasoningModels: ["kimi-k2.7-code", "kimi-k2.7-code-highspeed"], | ||||||||||||||||||||||||||||
|
|
@@ -1340,6 +1348,7 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [ | |||||||||||||||||||||||||||
| */ | ||||||||||||||||||||||||||||
| modelReasoningEfforts: Object.fromEntries(DEEPSEEK_THINKING_MODELS.map(id => [id, deepseekThinkingEffortsFor(id)])), | ||||||||||||||||||||||||||||
| modelReasoningEffortMap: Object.fromEntries(DEEPSEEK_THINKING_MODELS.map(id => [id, deepseekReasoningMapFor(id)])), | ||||||||||||||||||||||||||||
| modelSupportsReasoningSummaries: Object.fromEntries(DEEPSEEK_THINKING_MODELS.map(id => [id, true])), | ||||||||||||||||||||||||||||
| preserveReasoningContentModels: DEEPSEEK_THINKING_MODELS, | ||||||||||||||||||||||||||||
| // Issue #88: every DeepSeek API model is text-only input (no image support upstream) — the | ||||||||||||||||||||||||||||
| // vision sidecar describes attached images for them, and the catalog advertises image input | ||||||||||||||||||||||||||||
|
|
@@ -1653,6 +1662,7 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [ | |||||||||||||||||||||||||||
| modelSuffixBracketStrip: true, | ||||||||||||||||||||||||||||
| noVisionModels: ZAI_GLM_52_MODELS, | ||||||||||||||||||||||||||||
| modelReasoningEfforts: Object.fromEntries(ZAI_GLM_52_MODELS.map(id => [id, ZAI_GLM_52_REASONING_EFFORTS])), | ||||||||||||||||||||||||||||
| modelSupportsReasoningSummaries: Object.fromEntries(ZAI_GLM_52_MODELS.map(id => [id, true])), | ||||||||||||||||||||||||||||
| preserveReasoningContentModels: ZAI_GLM_52_MODELS, | ||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||
| // Zhipu's domestic BigModel platform: OpenAI-compatible pay-as-you-go on open.bigmodel.cn — a | ||||||||||||||||||||||||||||
|
|
@@ -1689,11 +1699,50 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [ | |||||||||||||||||||||||||||
| modelReasoningEffortMap: Object.fromEntries( | ||||||||||||||||||||||||||||
| ZHIPU_BIGMODEL_THINKING_TOGGLE_MODELS.map(id => [id, THINKING_TOGGLE_MAP]), | ||||||||||||||||||||||||||||
| ), | ||||||||||||||||||||||||||||
| modelSupportsReasoningSummaries: Object.fromEntries( | ||||||||||||||||||||||||||||
| ZHIPU_BIGMODEL_THINKING_TOGGLE_MODELS.map(id => [id, true]), | ||||||||||||||||||||||||||||
| ), | ||||||||||||||||||||||||||||
| preserveReasoningContentModels: ZHIPU_BIGMODEL_THINKING_TOGGLE_MODELS, | ||||||||||||||||||||||||||||
| // No liveModels: GET /api/paas/v4/models has not been observed to answer on this host, and a | ||||||||||||||||||||||||||||
| // false live claim yields an empty picker at runtime. Flip it on once someone verifies it. | ||||||||||||||||||||||||||||
| note: "Domestic BigModel pay-as-you-go endpoint (open.bigmodel.cn)", | ||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||
| // BigModel's Coding Plan is a SEPARATE endpoint from the pay-as-you-go row above, and that is | ||||||||||||||||||||||||||||
| // the whole reason this one exists. #1100 was reported against | ||||||||||||||||||||||||||||
| // `https://open.bigmodel.cn/api/coding/paas/v4`; the row above covers only `/api/paas/v4`, so | ||||||||||||||||||||||||||||
| // destination enrichment matched nothing, `modelSupportsReasoningSummaries` stayed unset, and | ||||||||||||||||||||||||||||
| // Codex kept dropping the inbound reasoning object — effort displayed as `-`. | ||||||||||||||||||||||||||||
| // | ||||||||||||||||||||||||||||
| // A prefix or fuzzy endpoint match would have been the shortcut. It is also how a config | ||||||||||||||||||||||||||||
| // pointed at one vendor route silently inherits another route's metadata, so endpoints stay | ||||||||||||||||||||||||||||
| // exact and each one gets its own row. | ||||||||||||||||||||||||||||
| // | ||||||||||||||||||||||||||||
| // The id is NOT `glm-cn`, which the free-provider directory already binds to this same coding | ||||||||||||||||||||||||||||
| // path: registering it here would let routedProviderConfig() canonicalize a saved `glm-cn` | ||||||||||||||||||||||||||||
| // config onto this baseUrl. Same reasoning as `zhipu-bigmodel` above. | ||||||||||||||||||||||||||||
| // | ||||||||||||||||||||||||||||
| // Models follow Z.AI's coding-plan list rather than the pay-as-you-go one. This endpoint is | ||||||||||||||||||||||||||||
| // the subscription product, and the reporter's `glm-5.2` is only on that side. | ||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||
| id: "zhipu-bigmodel-coding", | ||||||||||||||||||||||||||||
| label: "Zhipu AI — BigModel Coding Plan", | ||||||||||||||||||||||||||||
| baseUrl: "https://open.bigmodel.cn/api/coding/paas/v4", | ||||||||||||||||||||||||||||
| adapter: "openai-chat", | ||||||||||||||||||||||||||||
| authKind: "key", | ||||||||||||||||||||||||||||
| dashboardUrl: "https://bigmodel.cn/console/usercenter/apikeys", | ||||||||||||||||||||||||||||
|
Comment on lines
+1727
to
+1732
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win Preserve custom destinations for this new fixed-route provider.
A custom provider with this name and another destination can receive Coding Plan models and reasoning-summary defaults. That can enable summary delivery for an upstream that rejects it. Set Proposed fix {
id: "zhipu-bigmodel-coding",
label: "Zhipu AI — BigModel Coding Plan",
baseUrl: "https://open.bigmodel.cn/api/coding/paas/v4",
adapter: "openai-chat",
authKind: "key",
+ preserveCustomDestination: true,As per path instructions, flag provider/adapter contract drift in 📝 Committable suggestion
Suggested change
🤖 Prompt for AI AgentsSource: Path instructions |
||||||||||||||||||||||||||||
| defaultModel: "glm-5.2", | ||||||||||||||||||||||||||||
| models: ["glm-5.2", "glm-5.2[1m]", "glm-5.1", "glm-5", "glm-4.6"], | ||||||||||||||||||||||||||||
| jawcodeBundle: "zai", | ||||||||||||||||||||||||||||
| modelContextWindows: { "glm-5.2": 1_000_000, "glm-5.2[1m]": 1_000_000 }, | ||||||||||||||||||||||||||||
| modelSuffixBracketStrip: true, | ||||||||||||||||||||||||||||
| noVisionModels: ZAI_GLM_52_MODELS, | ||||||||||||||||||||||||||||
| modelReasoningEfforts: Object.fromEntries(ZAI_GLM_52_MODELS.map(id => [id, ZAI_GLM_52_REASONING_EFFORTS])), | ||||||||||||||||||||||||||||
| modelSupportsReasoningSummaries: Object.fromEntries(ZAI_GLM_52_MODELS.map(id => [id, true])), | ||||||||||||||||||||||||||||
| preserveReasoningContentModels: ZAI_GLM_52_MODELS, | ||||||||||||||||||||||||||||
| // No liveModels: the same reasoning as the pay-as-you-go row — an unverified live claim | ||||||||||||||||||||||||||||
| // yields an empty picker at runtime. | ||||||||||||||||||||||||||||
| note: "Domestic BigModel Coding Plan endpoint (open.bigmodel.cn)", | ||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||
| { id: "nanogpt", label: "NanoGPT", baseUrl: "https://nano-gpt.com/api/v1", adapter: "openai-chat", authKind: "key", dashboardUrl: "https://nano-gpt.com/api" }, | ||||||||||||||||||||||||||||
| { id: "synthetic", label: "Synthetic", baseUrl: "https://api.synthetic.new/openai/v1", adapter: "openai-chat", authKind: "key", dashboardUrl: "https://synthetic.new" }, | ||||||||||||||||||||||||||||
| // SiliconFlow publishes an OpenAI-compatible chat endpoint and a dynamic model catalog. Do not | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Update the endpoint status in this audit record.
This section says that
https://open.bigmodel.cn/api/coding/paas/v4has no registry entry and remains deferred.src/providers/registry.tsnow addszhipu-bigmodel-codingfor that exact endpoint.Replace the deferred-state statements with the implemented outcome. Keep the original audit rationale if it is useful for history.
🤖 Prompt for AI Agents