@cognipeer/agent-sdk 0.20.0 → 0.22.0
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/LICENSE +21 -0
- package/README.md +23 -2
- package/dist/index.cjs +17276 -15538
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +336 -22
- package/dist/index.d.ts +336 -22
- package/dist/index.mjs +17276 -15538
- package/dist/index.mjs.map +1 -1
- package/dist/{model-rules--welxWDw.d.cts → model-rules-D6teB4rU.d.cts} +136 -16
- package/dist/{model-rules--welxWDw.d.ts → model-rules-D6teB4rU.d.ts} +136 -16
- package/dist/model-rules.cjs +283 -10
- package/dist/model-rules.cjs.map +1 -1
- package/dist/model-rules.d.cts +1 -1
- package/dist/model-rules.d.ts +1 -1
- package/dist/model-rules.json +268 -9
- package/dist/model-rules.mjs +283 -10
- package/dist/model-rules.mjs.map +1 -1
- package/package.json +8 -3
package/dist/model-rules.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/models/model-rules.json","../src/models/rules.ts"],"names":[],"mappings":"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","file":"model-rules.mjs","sourcesContent":["{\n \"version\": 1,\n \"effortLadder\": [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"budgets\": {\n \"minimal\": 1024,\n \"low\": 2048,\n \"medium\": 8192,\n \"high\": 16384,\n \"xhigh\": 24576,\n \"max\": 32768\n },\n \"geminiBudgets\": {\n \"minimal\": 512,\n \"low\": 1024,\n \"medium\": 4096,\n \"high\": 12000,\n \"xhigh\": 24576,\n \"max\": 24576\n },\n \"rules\": [\n {\n \"id\": \"openai-chat-models\",\n \"family\": \"openai\",\n \"match\": \"^(?:chatgpt|gpt-[\\\\d.]+[a-z0-9.-]*?-chat)\",\n \"reasoning\": {\n \"style\": \"none\",\n \"efforts\": [],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_completion_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Chat-tuned *-chat variants are not reasoning models: ordinary sampling, no reasoning field.\"\n },\n {\n \"id\": \"openai-gpt-6-plus\",\n \"family\": \"openai\",\n \"match\": \"^gpt-?(?:[6-9]|(?!35(?!\\\\d))[1-9]\\\\d+)(?:[.-]|$)\",\n \"reasoning\": {\n \"style\": \"effort\",\n \"efforts\": [\n \"none\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\"\n ],\n \"off\": \"none\",\n \"responsesEfforts\": [\n \"none\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ]\n },\n \"sampling\": {\n \"temperature\": \"default-only\",\n \"topP\": false,\n \"topK\": false,\n \"penalties\": false,\n \"logprobs\": false\n },\n \"maxTokensParam\": \"max_completion_tokens\",\n \"chatTools\": {\n \"reasoning\": \"force-none\"\n },\n \"source\": \"verified-2026-10-14\",\n \"note\": \"gpt-N, N>=6. Chat Completions takes none/low/medium/high/xhigh (minimal and max are 400s); Responses also takes max. Function tools with an effort other than none are a 400 on Chat Completions and the default effort is not none, so none is sent explicitly. Rejects max_tokens, temperature != 1, top_p, penalties, logprobs.\"\n },\n {\n \"id\": \"openai-gpt-5x\",\n \"family\": \"openai\",\n \"match\": \"^gpt-?5\\\\.[1-9]\",\n \"reasoning\": {\n \"style\": \"effort\",\n \"efforts\": [\n \"none\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\"\n ],\n \"off\": \"none\",\n \"responsesEfforts\": [\n \"none\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ]\n },\n \"sampling\": {\n \"temperature\": \"default-only\",\n \"topP\": false,\n \"topK\": false,\n \"penalties\": false,\n \"logprobs\": false\n },\n \"maxTokensParam\": \"max_completion_tokens\",\n \"chatTools\": {\n \"reasoning\": \"force-none\"\n },\n \"source\": \"verified-2026-10-14\",\n \"note\": \"gpt-5.1 and newer 5.x. Same wire rules as gpt-6: no minimal/max on Chat Completions (Responses takes max), function tools need reasoning_effort none on Chat Completions.\"\n },\n {\n \"id\": \"openai-gpt-5-base\",\n \"family\": \"openai\",\n \"match\": \"^gpt-?5(?![.\\\\d])\",\n \"reasoning\": {\n \"style\": \"effort\",\n \"efforts\": [\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"default-only\",\n \"topP\": false,\n \"topK\": false,\n \"penalties\": false,\n \"logprobs\": false\n },\n \"maxTokensParam\": \"max_completion_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"gpt-5, -mini, -nano, -codex: minimal/low/medium/high, reasoning cannot be turned off (none maps to minimal).\"\n },\n {\n \"id\": \"openai-o-series\",\n \"family\": \"openai\",\n \"match\": \"^o[1-9]\\\\d?(?![a-z0-9])\",\n \"reasoning\": {\n \"style\": \"effort\",\n \"efforts\": [\n \"low\",\n \"medium\",\n \"high\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"default-only\",\n \"topP\": false,\n \"topK\": false,\n \"penalties\": false,\n \"logprobs\": false\n },\n \"maxTokensParam\": \"max_completion_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"o1/o3/o4 family: low/medium/high, no sampling overrides.\"\n },\n {\n \"id\": \"openai-gpt-oss\",\n \"family\": \"openai\",\n \"match\": \"^gpt-?oss\",\n \"reasoning\": {\n \"style\": \"effort\",\n \"efforts\": [\n \"low\",\n \"medium\",\n \"high\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Open-weight gpt-oss: low/medium/high; sampling and max_tokens behave like an ordinary chat model.\"\n },\n {\n \"id\": \"openai-legacy-gpt\",\n \"family\": \"openai\",\n \"match\": \"^(?:gpt-?(?:[0-4]|35)(?![0-9])|text-|davinci|babbage)\",\n \"reasoning\": {\n \"style\": \"none\",\n \"efforts\": [],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"gpt-4o, gpt-4.1, gpt-3.5 and older: no reasoning, ordinary sampling.\"\n },\n {\n \"id\": \"openai-compatible-toggle\",\n \"family\": \"openai\",\n \"match\": \"^(?:deepseek-(?:r\\\\d|reasoner)|qwq|qwen-?3)\",\n \"reasoning\": {\n \"style\": \"toggle\",\n \"efforts\": [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": \"none\"\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"DeepSeek R/reasoner, QwQ, Qwen3: on/off style hosts. The effort is forwarded as-is (including none, which switches thinking off on thinking-by-default models).\"\n },\n {\n \"id\": \"openai-default\",\n \"family\": \"openai\",\n \"match\": \".*\",\n \"reasoning\": {\n \"style\": \"effort\",\n \"efforts\": [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": \"none\"\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Permissive default for unknown OpenAI-wire models: pass what the caller asked; the provider learns from 400s.\"\n },\n {\n \"id\": \"claude-haiku-5\",\n \"family\": \"anthropic\",\n \"match\": \"^claude-(?:haiku-5|5(?:-\\\\d+)?-haiku)(?!\\\\d)\",\n \"reasoning\": {\n \"style\": \"adaptive\",\n \"efforts\": [\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": \"disabled\"\n },\n \"sampling\": {\n \"temperature\": \"unsupported\",\n \"topP\": false,\n \"topK\": false,\n \"penalties\": false,\n \"logprobs\": false\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"verified-2026-10-14\",\n \"note\": \"Claude Haiku 5.x: thinking:{type:adaptive} + output_config.effort; thinking:{type:enabled,budget_tokens} is rejected. Off = thinking:{type:disabled}. Sampling params are rejected.\"\n },\n {\n \"id\": \"claude-sonnet-5\",\n \"family\": \"anthropic\",\n \"match\": \"^claude-(?:sonnet-5|5(?:-\\\\d+)?-sonnet)(?!\\\\d)\",\n \"reasoning\": {\n \"style\": \"adaptive\",\n \"efforts\": [\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": \"between_tools\"\n },\n \"sampling\": {\n \"temperature\": \"unsupported\",\n \"topP\": false,\n \"topK\": false,\n \"penalties\": false,\n \"logprobs\": false\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"verified-2026-10-14\",\n \"note\": \"Claude Sonnet 5.x: adaptive + output_config.effort. thinking:{type:disabled} is rejected; off = thinking:{type:between_tools}. Sampling params are rejected.\"\n },\n {\n \"id\": \"claude-opus-5\",\n \"family\": \"anthropic\",\n \"match\": \"^claude-(?:opus-5|5(?:-\\\\d+)?-opus)(?!\\\\d)\",\n \"reasoning\": {\n \"style\": \"adaptive\",\n \"efforts\": [\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"unsupported\",\n \"topP\": false,\n \"topK\": false,\n \"penalties\": false,\n \"logprobs\": false\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"verified-2026-10-14\",\n \"note\": \"Claude Opus 5.x: adaptive + output_config.effort; thinking cannot be turned off (none maps to the lowest effort). Sampling params are rejected.\"\n },\n {\n \"id\": \"claude-fable\",\n \"family\": \"anthropic\",\n \"match\": \"^claude-fable\",\n \"reasoning\": {\n \"style\": \"adaptive\",\n \"efforts\": [\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"unsupported\",\n \"topP\": false,\n \"topK\": false,\n \"penalties\": false,\n \"logprobs\": false\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Claude Fable line: treated like the 5.x adaptive models.\"\n },\n {\n \"id\": \"claude-4-7\",\n \"family\": \"anthropic\",\n \"match\": \"^claude-(?:(?:opus|sonnet|haiku)-4[-.]7|4[-.]7-(?:opus|sonnet|haiku))(?!\\\\d)\",\n \"reasoning\": {\n \"style\": \"adaptive\",\n \"efforts\": [\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": \"disabled\"\n },\n \"sampling\": {\n \"temperature\": \"thinking-requires-1\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Claude 4.7: adaptive thinking, low/medium/high/xhigh/max.\"\n },\n {\n \"id\": \"claude-4-6\",\n \"family\": \"anthropic\",\n \"match\": \"^claude-(?:(?:opus|sonnet|haiku)-4[-.]6|4[-.]6-(?:opus|sonnet|haiku))(?!\\\\d)\",\n \"reasoning\": {\n \"style\": \"adaptive\",\n \"efforts\": [\n \"low\",\n \"medium\",\n \"high\",\n \"max\"\n ],\n \"off\": \"disabled\"\n },\n \"sampling\": {\n \"temperature\": \"thinking-requires-1\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Claude 4.6: adaptive thinking, low/medium/high/max (no xhigh).\"\n },\n {\n \"id\": \"claude-legacy-budget\",\n \"family\": \"anthropic\",\n \"match\": \"^claude-(?:3|4-|(?:opus|sonnet|haiku)-4)\",\n \"reasoning\": {\n \"style\": \"budget\",\n \"efforts\": [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"thinking-requires-1\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Claude 3.7 and 4.0-4.5: thinking:{type:enabled,budget_tokens}; every effort maps to a budget; sampling overrides are not allowed while thinking.\"\n },\n {\n \"id\": \"anthropic-default\",\n \"family\": \"anthropic\",\n \"match\": \".*\",\n \"reasoning\": {\n \"style\": \"budget\",\n \"efforts\": [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"thinking-requires-1\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Permissive default for unknown Anthropic-wire models: budget style (the long-standing form); the provider flips the thinking form when the API says so.\"\n },\n {\n \"id\": \"gemini-budget\",\n \"family\": \"gemini\",\n \"match\": \"^gemini\",\n \"reasoning\": {\n \"style\": \"budget\",\n \"efforts\": [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": \"none\"\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Gemini 2.5-style thinkingBudget; effort maps to a token budget, none = budget 0.\"\n },\n {\n \"id\": \"gemini-default\",\n \"family\": \"gemini\",\n \"match\": \".*\",\n \"reasoning\": {\n \"style\": \"budget\",\n \"efforts\": [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": \"none\"\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Permissive default for unknown Gemini-wire models.\"\n },\n {\n \"id\": \"other-default\",\n \"family\": \"other\",\n \"match\": \".*\",\n \"reasoning\": {\n \"style\": \"effort\",\n \"efforts\": [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": \"none\"\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Permissive default for model families the SDK has no rules for.\"\n }\n ]\n}\n","// Per-model request rules. One JSON file (model-rules.json, shipped in the\n// package and importable as \"@cognipeer/agent-sdk/model-rules.json\") describes\n// what every model family accepts; everything in the SDK that used to be a\n// hardcoded model-name check reads it through the functions below.\n\nimport rulesJson from \"./model-rules.json\";\nimport type { ReasoningEffort } from \"../providers/types.js\";\n\nexport type { ReasoningEffort };\n\nexport type RuleFamily = \"openai\" | \"anthropic\" | \"gemini\" | \"other\";\nexport type ReasoningStyle = \"effort\" | \"adaptive\" | \"budget\" | \"toggle\" | \"none\";\n/** How \"reasoning off\" is spelled on the wire (`none` = the effort value itself). */\nexport type OffMechanism = \"none\" | \"disabled\" | \"between_tools\";\nexport type TemperatureRule = \"any\" | \"default-only\" | \"unsupported\" | \"thinking-requires-1\";\nexport type MaxTokensParam = \"max_tokens\" | \"max_completion_tokens\";\nexport type RuleSource = \"verified-2026-10-14\" | \"docs\" | \"learned\";\n\nexport type ModelRule = {\n id: string;\n family: RuleFamily;\n /** Case-insensitive regex tested against the normalised candidate ids. */\n match: string;\n reasoning: {\n style: ReasoningStyle;\n /** Effort values the wire accepts (Chat Completions / Messages). Empty = no reasoning control. */\n efforts: ReasoningEffort[];\n /** Efforts the OpenAI Responses endpoint accepts, when they differ from `efforts`. */\n responsesEfforts?: ReasoningEffort[];\n off: OffMechanism | null;\n };\n sampling: {\n temperature: TemperatureRule;\n topP: boolean;\n topK: boolean;\n penalties: boolean;\n logprobs: boolean;\n };\n maxTokensParam: MaxTokensParam;\n chatTools: { reasoning: \"any\" | \"force-none\" };\n /** Request fields to leave out, learned from a provider 400 (not used in the shipped JSON). */\n dropParams?: string[];\n source: RuleSource;\n note: string;\n};\n\nexport type ModelRules = {\n version: number;\n effortLadder: ReasoningEffort[];\n /** Thinking-token budgets for budget-style engines (Anthropic 3.7/4.x, Bedrock). */\n budgets: Record<Exclude<ReasoningEffort, \"none\">, number>;\n geminiBudgets: Record<Exclude<ReasoningEffort, \"none\">, number>;\n rules: ModelRule[];\n};\n\n/** A sparse override merged over a rule (what a provider 400 teaches us). */\nexport type RulePatch = {\n reasoning?: Partial<ModelRule[\"reasoning\"]>;\n sampling?: Partial<ModelRule[\"sampling\"]>;\n maxTokensParam?: MaxTokensParam;\n chatTools?: Partial<ModelRule[\"chatTools\"]>;\n dropParams?: string[];\n};\n\nexport type ResolvedModelRule = ModelRule & {\n /** Id of the rule that matched (e.g. `openai-gpt-6-plus`). */\n matchedRuleId: string;\n /** True when only the family's permissive default matched: the model is not in the JSON. */\n isDefault: boolean;\n /** True when a learned adjustment is merged into this rule. */\n learned: boolean;\n};\n\nexport const MODEL_RULES: ModelRules = rulesJson as unknown as ModelRules;\n\nconst LADDER = MODEL_RULES.effortLadder;\nconst compiled = new Map<string, RegExp>();\n\nfunction regexFor(rule: ModelRule): RegExp {\n let re = compiled.get(rule.id);\n if (!re) {\n re = new RegExp(rule.match, \"i\");\n compiled.set(rule.id, re);\n }\n return re;\n}\n\n// Region / cross-region inference prefixes and vendor namespaces used by\n// gateways and Bedrock (`global.openai.gpt-6-luna`, `us.anthropic.claude-...`).\nconst GATEWAY_PREFIX = /^(?:(?:global|us|eu|apac|jp|au|ca|us-gov)\\.)?(?:(?:openai|anthropic|google|meta|amazon|deepseek|qwen|mistral|cohere|ai21)\\.)?/;\n\n/** Normalised ids a rule is matched against: lowercase, last path segment, gateway prefixes stripped. */\nexport function modelIdCandidates(model: string | undefined): string[] {\n if (!model) return [];\n const lower = String(model).trim().toLowerCase();\n const last = lower.split(\"/\").pop() ?? lower;\n const out: string[] = [];\n for (const id of [lower, last]) {\n for (const c of [id, id.replace(GATEWAY_PREFIX, \"\")]) {\n if (c && !out.includes(c)) out.push(c);\n }\n }\n return out;\n}\n\nconst OPENAI_WIRE = new Set([\"openai\", \"azure\", \"openai-compatible\", \"together\", \"openrouter\", \"groq\", \"fireworks\", \"ollama\", \"vllm\", \"litellm\", \"mistral\", \"deepseek\", \"xai\", \"jev\"]);\n\n/** Families to search for a provider, most specific first; the first is also the default family. */\nfunction familiesFor(provider: string | undefined): RuleFamily[] {\n const p = (provider ?? \"\").toLowerCase();\n if (OPENAI_WIRE.has(p)) return [\"openai\"];\n if (p === \"anthropic\") return [\"anthropic\"];\n if (p === \"bedrock\") return [\"anthropic\", \"openai\", \"other\"];\n if (p === \"vertex\" || p === \"gemini\" || p === \"google\") return [\"gemini\", \"anthropic\"];\n return [\"openai\", \"anthropic\", \"gemini\", \"other\"];\n}\n\nfunction matchRule(family: RuleFamily, ids: string[], allowDefault: boolean): ModelRule | undefined {\n for (const rule of MODEL_RULES.rules) {\n if (rule.family !== family) continue;\n if (rule.match === \".*\") {\n if (allowDefault) return rule;\n continue;\n }\n const re = regexFor(rule);\n if (ids.some((id) => re.test(id))) return rule;\n }\n return undefined;\n}\n\nexport function mergeRulePatch<T extends RulePatch>(base: T, patch: RulePatch | undefined): T {\n if (!patch) return base;\n const out: any = { ...base };\n if (patch.reasoning) out.reasoning = { ...(base.reasoning ?? {}), ...patch.reasoning };\n if (patch.sampling) out.sampling = { ...(base.sampling ?? {}), ...patch.sampling };\n if (patch.chatTools) out.chatTools = { ...(base.chatTools ?? {}), ...patch.chatTools };\n if (patch.maxTokensParam) out.maxTokensParam = patch.maxTokensParam;\n if (patch.dropParams) out.dropParams = [...new Set([...(base.dropParams ?? []), ...patch.dropParams])];\n return out;\n}\n\n// ─── Learned adjustments ─────────────────────────────────────────────────────\n// Bounded, in-process: what provider 400s taught us per (provider, model id).\n\nconst LEARNED_MAX = 500;\ntype LearnedEntry = { provider: string; model: string; scope?: string; patch: RulePatch };\nconst learned = new Map<string, LearnedEntry>();\n\n// `scope` separates deployments that share a model id but not a backend (an\n// Azure resource or openai-compatible endpoint: the id is a user-chosen name).\nfunction learnedKey(provider: string | undefined, model: string | undefined, scope?: string): string {\n return `${(provider ?? \"\").toLowerCase()}@${scope ?? \"\"}::${(model ?? \"\").trim().toLowerCase()}`;\n}\n\n/** Records (merges) a learned patch; the oldest entry is evicted past 500. */\nexport function rememberModelRulePatch(provider: string, model: string, patch: RulePatch, scope?: string): void {\n const key = learnedKey(provider, model, scope);\n const merged = mergeRulePatch<RulePatch>(learned.get(key)?.patch ?? {}, patch);\n learned.delete(key);\n learned.set(key, { provider: provider.toLowerCase(), model: model.trim().toLowerCase(), scope, patch: merged });\n if (learned.size > LEARNED_MAX) learned.delete(learned.keys().next().value as string);\n}\n\nexport function getLearnedModelRulePatch(provider: string, model: string, scope?: string): RulePatch | undefined {\n return learned.get(learnedKey(provider, model, scope))?.patch;\n}\n\n/** Snapshot of everything learned so far (hosts can persist it and re-seed with `rememberModelRulePatch`). */\nexport function listLearnedModelRules(): Array<{ provider: string; model: string; scope?: string; patch: RulePatch }> {\n return [...learned.values()].map((e) => ({ ...e }));\n}\n\nexport function clearLearnedModelRules(): void {\n learned.clear();\n}\n\n/**\n * Finds the rule for a model: the first matching rule of the provider's family\n * (or families, for gateways such as Bedrock), else the family's permissive\n * default. Learned adjustments for (provider, model) are merged in; `patch`\n * lets a caller layer one more override on top (used by the retry loop).\n */\nexport function resolveModelRule(opts: { provider?: string; model?: string; patch?: RulePatch; scope?: string }): ResolvedModelRule {\n const families = familiesFor(opts.provider);\n const ids = modelIdCandidates(opts.model);\n let rule: ModelRule | undefined;\n for (const family of families) {\n rule = matchRule(family, ids, false);\n if (rule) break;\n }\n let isDefault = false;\n if (!rule) {\n isDefault = true;\n rule = matchRule(families[0], ids, true) ?? MODEL_RULES.rules[MODEL_RULES.rules.length - 1];\n }\n let effective: ModelRule = rule;\n const known = opts.model ? learned.get(learnedKey(opts.provider, opts.model, opts.scope))?.patch : undefined;\n if (known) effective = mergeRulePatch(effective, known);\n if (opts.patch) effective = mergeRulePatch(effective, opts.patch);\n return { ...effective, matchedRuleId: rule.id, isDefault, learned: !!known };\n}\n\nexport type EffortMapping = {\n /** The effort value to put on the wire. */\n effort?: ReasoningEffort;\n /** The off mechanism to use instead (`disabled` / `between_tools`). */\n off?: Exclude<OffMechanism, \"none\">;\n /** False only when the requested value goes through untouched. */\n mapped: boolean;\n};\n\n/**\n * Maps a requested effort onto what the rule accepts. A supported value passes;\n * an unsupported one goes to the nearest LOWER supported value (nearest higher\n * if nothing lower exists). `none` uses the rule's off mechanism, else the\n * lowest supported value. A requested non-`none` effort never maps to `none`\n * (asking for \"minimal\" must not switch thinking off). A rule without reasoning\n * control returns `{ mapped: true }` with no value.\n */\nexport function mapReasoningEffort(rule: ModelRule, effort: ReasoningEffort, endpoint: \"chat\" | \"responses\" = \"chat\"): EffortMapping {\n const efforts = (endpoint === \"responses\" && rule.reasoning.responsesEfforts) || rule.reasoning.efforts;\n if (rule.reasoning.style === \"none\" || efforts.length === 0) return { mapped: true };\n const supported = LADDER.filter((e) => efforts.includes(e));\n if (supported.includes(effort)) return { effort, mapped: false };\n if (effort === \"none\") {\n const off = rule.reasoning.off;\n if (off && off !== \"none\") return { off, mapped: true };\n const lowest = supported.find((e) => e !== \"none\");\n return lowest ? { effort: lowest, mapped: true } : { mapped: true };\n }\n const at = LADDER.indexOf(effort);\n if (at < 0) return { mapped: true };\n for (let i = at - 1; i >= 1; i--) if (supported.includes(LADDER[i])) return { effort: LADDER[i], mapped: true };\n for (let i = at + 1; i < LADDER.length; i++) if (supported.includes(LADDER[i])) return { effort: LADDER[i], mapped: true };\n return supported.includes(\"none\") ? { effort: \"none\", mapped: true } : { mapped: true };\n}\n\nexport type SamplingField = \"temperature\" | \"topP\" | \"topK\" | \"presencePenalty\" | \"frequencyPenalty\" | \"logprobs\";\n\n/** Whether the rule lets a sampling field through. `thinkingOn` matters for `thinking-requires-1`. */\nexport function allowsSampling(rule: ModelRule, field: SamplingField, value?: unknown, thinkingOn = false): boolean {\n const s = rule.sampling;\n switch (field) {\n case \"temperature\":\n switch (s.temperature) {\n case \"any\": return true;\n case \"unsupported\": return false;\n // The default is what the server applies anyway, so it is never sent.\n case \"default-only\": return false;\n case \"thinking-requires-1\": return !thinkingOn || value === 1;\n }\n return true;\n // Anthropic's thinking restriction covers top_p / top_k as well as temperature.\n case \"topP\": return s.topP && !(thinkingOn && s.temperature === \"thinking-requires-1\");\n case \"topK\": return s.topK && !(thinkingOn && s.temperature === \"thinking-requires-1\");\n case \"presencePenalty\":\n case \"frequencyPenalty\": return s.penalties;\n case \"logprobs\": return s.logprobs;\n }\n}\n\n/** Removes `rule.dropParams` (top-level keys) from a request body. */\nexport function applyDropParams(body: Record<string, any>, rule: ModelRule): void {\n for (const p of rule.dropParams ?? []) {\n const dot = p.indexOf(\".\");\n if (dot < 0) delete body[p];\n else if (body[p.slice(0, dot)] && typeof body[p.slice(0, dot)] === \"object\") delete body[p.slice(0, dot)][p.slice(dot + 1)];\n }\n}\n\n/** Token budget for a budget-style engine; 0 for `none`. */\nexport function effortBudget(effort: ReasoningEffort, table: \"anthropic\" | \"gemini\" = \"anthropic\"): number {\n if (effort === \"none\") return 0;\n return (table === \"gemini\" ? MODEL_RULES.geminiBudgets : MODEL_RULES.budgets)[effort] ?? 0;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/models/model-rules.json","../src/models/rules.ts"],"names":[],"mappings":"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","file":"model-rules.mjs","sourcesContent":["{\n \"version\": 1,\n \"effortLadder\": [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"budgets\": {\n \"minimal\": 1024,\n \"low\": 2048,\n \"medium\": 8192,\n \"high\": 16384,\n \"xhigh\": 24576,\n \"max\": 32768\n },\n \"adaptiveMaxTokens\": {\n \"minimal\": 4096,\n \"low\": 8192,\n \"medium\": 16384,\n \"high\": 32768,\n \"xhigh\": 64000,\n \"max\": 64000\n },\n \"geminiBudgets\": {\n \"minimal\": 512,\n \"low\": 1024,\n \"medium\": 4096,\n \"high\": 12000,\n \"xhigh\": 24576,\n \"max\": 24576\n },\n \"rules\": [\n {\n \"id\": \"openai-chat-models\",\n \"family\": \"openai\",\n \"match\": \"^(?:chatgpt|gpt-[\\\\d.]+[a-z0-9.-]*?-chat)\",\n \"reasoning\": {\n \"style\": \"none\",\n \"efforts\": [],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_completion_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Chat-tuned *-chat variants are not reasoning models: ordinary sampling, no reasoning field.\"\n },\n {\n \"id\": \"openai-gpt-6-plus\",\n \"family\": \"openai\",\n \"match\": \"^gpt-?(?:[6-9]|(?!35(?!\\\\d))[1-9]\\\\d+)(?:[.-]|$)\",\n \"reasoning\": {\n \"style\": \"effort\",\n \"efforts\": [\n \"none\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\"\n ],\n \"off\": \"none\",\n \"responsesEfforts\": [\n \"none\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ]\n },\n \"sampling\": {\n \"temperature\": \"default-only\",\n \"topP\": false,\n \"topK\": false,\n \"penalties\": false,\n \"logprobs\": false\n },\n \"maxTokensParam\": \"max_completion_tokens\",\n \"chatTools\": {\n \"reasoning\": \"force-none\"\n },\n \"source\": \"verified-2026-10-14\",\n \"note\": \"gpt-N, N>=6. Chat Completions takes none/low/medium/high/xhigh (minimal and max are 400s); Responses also takes max. Function tools with an effort other than none are a 400 on Chat Completions and the default effort is not none, so none is sent explicitly. Rejects max_tokens, temperature != 1, top_p, penalties, logprobs.\"\n },\n {\n \"id\": \"openai-gpt-5x\",\n \"family\": \"openai\",\n \"match\": \"^gpt-?5\\\\.[1-9]\",\n \"reasoning\": {\n \"style\": \"effort\",\n \"efforts\": [\n \"none\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\"\n ],\n \"off\": \"none\",\n \"responsesEfforts\": [\n \"none\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ]\n },\n \"sampling\": {\n \"temperature\": \"default-only\",\n \"topP\": false,\n \"topK\": false,\n \"penalties\": false,\n \"logprobs\": false\n },\n \"maxTokensParam\": \"max_completion_tokens\",\n \"chatTools\": {\n \"reasoning\": \"force-none\"\n },\n \"source\": \"verified-2026-10-14\",\n \"note\": \"gpt-5.1 and newer 5.x. Same wire rules as gpt-6: no minimal/max on Chat Completions (Responses takes max), function tools need reasoning_effort none on Chat Completions.\"\n },\n {\n \"id\": \"openai-gpt-5-base\",\n \"family\": \"openai\",\n \"match\": \"^gpt-?5(?![.\\\\d])\",\n \"reasoning\": {\n \"style\": \"effort\",\n \"efforts\": [\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"default-only\",\n \"topP\": false,\n \"topK\": false,\n \"penalties\": false,\n \"logprobs\": false\n },\n \"maxTokensParam\": \"max_completion_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"gpt-5, -mini, -nano, -codex: minimal/low/medium/high, reasoning cannot be turned off (none maps to minimal).\"\n },\n {\n \"id\": \"openai-o-series\",\n \"family\": \"openai\",\n \"match\": \"^o[1-9]\\\\d?(?![a-z0-9])\",\n \"reasoning\": {\n \"style\": \"effort\",\n \"efforts\": [\n \"low\",\n \"medium\",\n \"high\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"default-only\",\n \"topP\": false,\n \"topK\": false,\n \"penalties\": false,\n \"logprobs\": false\n },\n \"maxTokensParam\": \"max_completion_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"o1/o3/o4 family: low/medium/high, no sampling overrides.\"\n },\n {\n \"id\": \"openai-gpt-oss\",\n \"family\": \"openai\",\n \"match\": \"^gpt-?oss\",\n \"reasoning\": {\n \"style\": \"effort\",\n \"efforts\": [\n \"low\",\n \"medium\",\n \"high\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Open-weight gpt-oss: low/medium/high; sampling and max_tokens behave like an ordinary chat model.\"\n },\n {\n \"id\": \"openai-legacy-gpt\",\n \"family\": \"openai\",\n \"match\": \"^(?:gpt-?(?:[0-4]|35)(?![0-9])|text-|davinci|babbage)\",\n \"reasoning\": {\n \"style\": \"none\",\n \"efforts\": [],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"gpt-4o, gpt-4.1, gpt-3.5 and older: no reasoning, ordinary sampling.\"\n },\n {\n \"id\": \"openai-compatible-toggle\",\n \"family\": \"openai\",\n \"match\": \"^(?:deepseek-(?:r\\\\d|reasoner)|qwq|qwen-?3)\",\n \"reasoning\": {\n \"style\": \"toggle\",\n \"efforts\": [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": \"none\"\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"DeepSeek R/reasoner, QwQ, Qwen3: on/off style hosts. The effort is forwarded as-is (including none, which switches thinking off on thinking-by-default models).\"\n },\n {\n \"id\": \"openai-default\",\n \"family\": \"openai\",\n \"match\": \".*\",\n \"reasoning\": {\n \"style\": \"effort\",\n \"efforts\": [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": \"none\"\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Permissive default for unknown OpenAI-wire models: pass what the caller asked; the provider learns from 400s.\"\n },\n {\n \"id\": \"claude-haiku-5\",\n \"family\": \"anthropic\",\n \"match\": \"^claude-(?:haiku-5|5(?:-\\\\d+)?-haiku)(?!\\\\d)\",\n \"reasoning\": {\n \"style\": \"adaptive\",\n \"efforts\": [\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": \"disabled\",\n \"defaultOn\": true\n },\n \"sampling\": {\n \"temperature\": \"unsupported\",\n \"topP\": false,\n \"topK\": false,\n \"penalties\": false,\n \"logprobs\": false\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"verified-2026-10-14\",\n \"note\": \"Claude Haiku 5.x: thinking:{type:adaptive} + output_config.effort; thinking:{type:enabled,budget_tokens} is rejected. Off = thinking:{type:disabled}. Sampling params are rejected. Thinks by default with display omitted (empty text): includeThoughts alone sends adaptive + display summarized.\"\n },\n {\n \"id\": \"claude-sonnet-5\",\n \"family\": \"anthropic\",\n \"match\": \"^claude-(?:sonnet-5|5(?:-\\\\d+)?-sonnet)(?!\\\\d)\",\n \"reasoning\": {\n \"style\": \"adaptive\",\n \"efforts\": [\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": \"between_tools\",\n \"defaultOn\": true\n },\n \"sampling\": {\n \"temperature\": \"unsupported\",\n \"topP\": false,\n \"topK\": false,\n \"penalties\": false,\n \"logprobs\": false\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"verified-2026-10-14\",\n \"note\": \"Claude Sonnet 5.x: adaptive + output_config.effort. thinking:{type:disabled} is rejected; off = thinking:{type:between_tools}. Sampling params are rejected. Thinks by default with display omitted (empty text): includeThoughts alone sends adaptive + display summarized.\"\n },\n {\n \"id\": \"claude-opus-5\",\n \"family\": \"anthropic\",\n \"match\": \"^claude-(?:opus-5|5(?:-\\\\d+)?-opus)(?!\\\\d)\",\n \"reasoning\": {\n \"style\": \"adaptive\",\n \"efforts\": [\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": null,\n \"defaultOn\": true\n },\n \"sampling\": {\n \"temperature\": \"unsupported\",\n \"topP\": false,\n \"topK\": false,\n \"penalties\": false,\n \"logprobs\": false\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"verified-2026-10-14\",\n \"note\": \"Claude Opus 5.x: adaptive + output_config.effort; thinking cannot be turned off (none maps to the lowest effort). Sampling params are rejected. Thinks by default with display omitted (empty text): includeThoughts alone sends adaptive + display summarized.\"\n },\n {\n \"id\": \"claude-fable\",\n \"family\": \"anthropic\",\n \"match\": \"^claude-(?:fable|mythos-5)\",\n \"reasoning\": {\n \"style\": \"adaptive\",\n \"efforts\": [\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": null,\n \"defaultOn\": true\n },\n \"sampling\": {\n \"temperature\": \"unsupported\",\n \"topP\": false,\n \"topK\": false,\n \"penalties\": false,\n \"logprobs\": false\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Claude Fable and Mythos 5 lines (5, 5.1): thinking is always on (disabled and budget_tokens are 400s), so treated like the 5.x adaptive models: effort low..max, sampling params rejected, display omitted by default (includeThoughts alone sends adaptive + display summarized).\"\n },\n {\n \"id\": \"claude-mythos-preview\",\n \"family\": \"anthropic\",\n \"match\": \"^claude-mythos-preview\",\n \"reasoning\": {\n \"style\": \"budget\",\n \"efforts\": [\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"thinking-requires-1\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Claude Mythos Preview: the one 4.7+ model that still takes extended thinking (budget_tokens). Thinking cannot be disabled (type disabled is a 400) and defaults to adaptive when a request says nothing, so effort none sends no thinking field at all.\"\n },\n {\n \"id\": \"claude-4-7\",\n \"family\": \"anthropic\",\n \"match\": \"^claude-(?:(?:opus|sonnet|haiku)-4[-.]7|4[-.]7-(?:opus|sonnet|haiku))(?!\\\\d)\",\n \"reasoning\": {\n \"style\": \"adaptive\",\n \"efforts\": [\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": \"disabled\"\n },\n \"sampling\": {\n \"temperature\": \"thinking-requires-1\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Claude 4.7: adaptive thinking, low/medium/high/xhigh/max.\"\n },\n {\n \"id\": \"claude-4-6\",\n \"family\": \"anthropic\",\n \"match\": \"^claude-(?:(?:opus|sonnet|haiku)-4[-.]6|4[-.]6-(?:opus|sonnet|haiku))(?!\\\\d)\",\n \"reasoning\": {\n \"style\": \"adaptive\",\n \"efforts\": [\n \"low\",\n \"medium\",\n \"high\",\n \"max\"\n ],\n \"off\": \"disabled\"\n },\n \"sampling\": {\n \"temperature\": \"thinking-requires-1\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Claude 4.6: adaptive thinking, low/medium/high/max (no xhigh).\"\n },\n {\n \"id\": \"claude-legacy-budget\",\n \"family\": \"anthropic\",\n \"match\": \"^claude-(?:3|4-|(?:opus|sonnet|haiku)-4)\",\n \"reasoning\": {\n \"style\": \"budget\",\n \"efforts\": [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"thinking-requires-1\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Claude 3.7 and 4.0-4.5: thinking:{type:enabled,budget_tokens}; every effort maps to a budget; sampling overrides are not allowed while thinking.\"\n },\n {\n \"id\": \"anthropic-default\",\n \"family\": \"anthropic\",\n \"match\": \".*\",\n \"reasoning\": {\n \"style\": \"budget\",\n \"efforts\": [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"thinking-requires-1\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Permissive default for unknown Anthropic-wire models: budget style (the long-standing form); the provider flips the thinking form when the API says so.\"\n },\n {\n \"id\": \"gemini-3-pro-image\",\n \"family\": \"gemini\",\n \"match\": \"^gemini-3(?:\\\\.\\\\d+)?-pro-image\",\n \"reasoning\": {\n \"style\": \"level\",\n \"efforts\": [\n \"high\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Gemini 3 Pro Image accepts only thinkingLevel high. thinkingLevel replaces thinkingBudget (a request with both is a 400); thinking cannot be switched off, so effort none maps to the lowest level the model accepts.\"\n },\n {\n \"id\": \"gemini-3-image\",\n \"family\": \"gemini\",\n \"match\": \"^gemini-3(?:\\\\.\\\\d+)?-.*image\",\n \"reasoning\": {\n \"style\": \"level\",\n \"efforts\": [\n \"minimal\",\n \"high\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Gemini 3.x Flash / Flash-Lite image models accept thinkingLevel minimal or high. thinkingLevel replaces thinkingBudget (a request with both is a 400); thinking cannot be switched off, so effort none maps to the lowest level the model accepts.\"\n },\n {\n \"id\": \"gemini-3-pro\",\n \"family\": \"gemini\",\n \"match\": \"^gemini-3(?:\\\\.0)?-pro\",\n \"reasoning\": {\n \"style\": \"level\",\n \"efforts\": [\n \"low\",\n \"high\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Gemini 3 Pro accepts thinkingLevel low or high (no minimal, no medium; default high). thinkingLevel replaces thinkingBudget (a request with both is a 400); thinking cannot be switched off, so effort none maps to the lowest level the model accepts.\"\n },\n {\n \"id\": \"gemini-3x-pro\",\n \"family\": \"gemini\",\n \"match\": \"^gemini-3\\\\.\\\\d+-pro\",\n \"reasoning\": {\n \"style\": \"level\",\n \"efforts\": [\n \"low\",\n \"medium\",\n \"high\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Gemini 3.x Pro (3.1 and later) accepts thinkingLevel low, medium or high (no minimal; default high). thinkingLevel replaces thinkingBudget (a request with both is a 400); thinking cannot be switched off, so effort none maps to the lowest level the model accepts.\"\n },\n {\n \"id\": \"gemini-3x-flash-no-minimal\",\n \"family\": \"gemini\",\n \"match\": \"^gemini-3\\\\.[78]-flash\",\n \"reasoning\": {\n \"style\": \"level\",\n \"efforts\": [\n \"low\",\n \"medium\",\n \"high\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Gemini 3.7 / 3.8 Flash accept thinkingLevel low, medium or high (no minimal). thinkingLevel replaces thinkingBudget (a request with both is a 400); thinking cannot be switched off, so effort none maps to the lowest level the model accepts.\"\n },\n {\n \"id\": \"gemini-3-level\",\n \"family\": \"gemini\",\n \"match\": \"^gemini-3\",\n \"reasoning\": {\n \"style\": \"level\",\n \"efforts\": [\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Gemini 3 Flash / Flash-Lite and other gemini-3 models accept thinkingLevel minimal, low, medium or high. thinkingLevel replaces thinkingBudget (a request with both is a 400); thinking cannot be switched off, so effort none maps to the lowest level the model accepts.\"\n },\n {\n \"id\": \"gemini-4-level\",\n \"family\": \"gemini\",\n \"match\": \"^gemini-[4-9]\",\n \"reasoning\": {\n \"style\": \"level\",\n \"efforts\": [\n \"low\",\n \"medium\",\n \"high\"\n ],\n \"off\": null\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Gemini 4 and later accept thinkingLevel low, medium or high; MINIMAL is not supported on Gemini 4 models. Setting thinkingBudget on Gemini 4 returns a 400 INVALID_ARGUMENT, so no budget is ever derived (a numeric budgetTokens picks the nearest level; only an explicit providerExtras.thinkingBudget sends one); thinking cannot be switched off, so effort none maps to the lowest level.\"\n },\n {\n \"id\": \"gemini-2.5-pro\",\n \"family\": \"gemini\",\n \"match\": \"^gemini-2\\\\.5-pro\",\n \"reasoning\": {\n \"style\": \"budget\",\n \"efforts\": [\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": null,\n \"minBudget\": 128\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Gemini 2.5 Pro: thinkingBudget 128-32768 and thinking cannot be turned off, so effort none maps to minBudget (128) instead of 0.\"\n },\n {\n \"id\": \"gemini-budget\",\n \"family\": \"gemini\",\n \"match\": \"^gemini\",\n \"reasoning\": {\n \"style\": \"budget\",\n \"efforts\": [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": \"none\"\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Gemini 2.5-style thinkingBudget; effort maps to a token budget, none = budget 0.\"\n },\n {\n \"id\": \"gemini-default\",\n \"family\": \"gemini\",\n \"match\": \".*\",\n \"reasoning\": {\n \"style\": \"budget\",\n \"efforts\": [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": \"none\"\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Permissive default for unknown Gemini-wire models.\"\n },\n {\n \"id\": \"other-default\",\n \"family\": \"other\",\n \"match\": \".*\",\n \"reasoning\": {\n \"style\": \"effort\",\n \"efforts\": [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\"\n ],\n \"off\": \"none\"\n },\n \"sampling\": {\n \"temperature\": \"any\",\n \"topP\": true,\n \"topK\": true,\n \"penalties\": true,\n \"logprobs\": true\n },\n \"maxTokensParam\": \"max_tokens\",\n \"chatTools\": {\n \"reasoning\": \"any\"\n },\n \"source\": \"docs\",\n \"note\": \"Permissive default for model families the SDK has no rules for.\"\n }\n ]\n}\n","// Per-model request rules. One JSON file (model-rules.json, shipped in the\n// package and importable as \"@cognipeer/agent-sdk/model-rules.json\") describes\n// what every model family accepts; everything in the SDK that used to be a\n// hardcoded model-name check reads it through the functions below.\n\nimport rulesJson from \"./model-rules.json\";\nimport type { ReasoningEffort } from \"../providers/types.js\";\n\nexport type { ReasoningEffort };\n\nexport type RuleFamily = \"openai\" | \"anthropic\" | \"gemini\" | \"other\";\n/** `level` = a discrete thinking level instead of a token budget (Gemini 3 `thinkingConfig.thinkingLevel`). */\nexport type ReasoningStyle = \"effort\" | \"adaptive\" | \"budget\" | \"toggle\" | \"level\" | \"none\";\n/** How \"reasoning off\" is spelled on the wire (`none` = the effort value itself). */\nexport type OffMechanism = \"none\" | \"disabled\" | \"between_tools\";\nexport type TemperatureRule = \"any\" | \"default-only\" | \"unsupported\" | \"thinking-requires-1\";\nexport type MaxTokensParam = \"max_tokens\" | \"max_completion_tokens\";\nexport type RuleSource = \"verified-2026-10-14\" | \"docs\" | \"learned\";\n\nexport type ModelRule = {\n id: string;\n family: RuleFamily;\n /** Case-insensitive regex tested against the normalised candidate ids. */\n match: string;\n reasoning: {\n style: ReasoningStyle;\n /** Effort values the wire accepts (Chat Completions / Messages). Empty = no reasoning control. */\n efforts: ReasoningEffort[];\n /** Efforts the OpenAI Responses endpoint accepts, when they differ from `efforts`. */\n responsesEfforts?: ReasoningEffort[];\n off: OffMechanism | null;\n /**\n * Budget style only: the smallest thinking budget the model accepts, used for\n * effort `none` when `efforts` has no `none` (the model cannot turn thinking off,\n * e.g. Gemini 2.5 Pro: 128).\n */\n minBudget?: number;\n /**\n * Adaptive style only: the model already thinks when a request carries no\n * `thinking` field (Claude 5.x), but returns the thinking text empty because\n * `display` defaults to \"omitted\". `includeThoughts: true` without any effort or\n * budget then sends `thinking: { type: \"adaptive\", display: \"summarized\" }` alone\n * (no `output_config`, no `max_tokens` raise). Unset: thinking is opt-in, and\n * `includeThoughts` alone sends nothing.\n */\n defaultOn?: boolean;\n };\n sampling: {\n temperature: TemperatureRule;\n topP: boolean;\n topK: boolean;\n penalties: boolean;\n logprobs: boolean;\n };\n maxTokensParam: MaxTokensParam;\n chatTools: { reasoning: \"any\" | \"force-none\" };\n /** Request fields to leave out, learned from a provider 400 (not used in the shipped JSON). */\n dropParams?: string[];\n source: RuleSource;\n note: string;\n};\n\nexport type ModelRules = {\n version: number;\n effortLadder: ReasoningEffort[];\n /** Thinking-token budgets for budget-style engines (Anthropic 3.7/4.x, Bedrock). */\n budgets: Record<Exclude<ReasoningEffort, \"none\">, number>;\n /** `max_tokens` floor per effort for adaptive thinking, where thinking and the answer share the cap. */\n adaptiveMaxTokens: Record<Exclude<ReasoningEffort, \"none\">, number>;\n geminiBudgets: Record<Exclude<ReasoningEffort, \"none\">, number>;\n rules: ModelRule[];\n};\n\n/** A sparse override merged over a rule (what a provider 400 teaches us). */\nexport type RulePatch = {\n reasoning?: Partial<ModelRule[\"reasoning\"]>;\n sampling?: Partial<ModelRule[\"sampling\"]>;\n maxTokensParam?: MaxTokensParam;\n chatTools?: Partial<ModelRule[\"chatTools\"]>;\n dropParams?: string[];\n};\n\nexport type ResolvedModelRule = ModelRule & {\n /** Id of the rule that matched (e.g. `openai-gpt-6-plus`). */\n matchedRuleId: string;\n /** True when only the family's permissive default matched: the model is not in the JSON. */\n isDefault: boolean;\n /** True when a learned adjustment is merged into this rule. */\n learned: boolean;\n};\n\nexport const MODEL_RULES: ModelRules = rulesJson as unknown as ModelRules;\n\nconst LADDER = MODEL_RULES.effortLadder;\nconst compiled = new Map<string, RegExp>();\n\nfunction regexFor(rule: ModelRule): RegExp {\n let re = compiled.get(rule.id);\n if (!re) {\n re = new RegExp(rule.match, \"i\");\n compiled.set(rule.id, re);\n }\n return re;\n}\n\n// Region / cross-region inference prefixes and vendor namespaces used by\n// gateways and Bedrock (`global.openai.gpt-6-luna`, `us.anthropic.claude-...`).\nconst GATEWAY_PREFIX = /^(?:(?:global|us|eu|apac|jp|au|ca|us-gov)\\.)?(?:(?:openai|anthropic|google|meta|amazon|deepseek|qwen|mistral|cohere|ai21)\\.)?/;\n\n/** Normalised ids a rule is matched against: lowercase, last path segment, gateway prefixes stripped. */\nexport function modelIdCandidates(model: string | undefined): string[] {\n if (!model) return [];\n const lower = String(model).trim().toLowerCase();\n const last = lower.split(\"/\").pop() ?? lower;\n const out: string[] = [];\n for (const id of [lower, last]) {\n for (const c of [id, id.replace(GATEWAY_PREFIX, \"\")]) {\n if (c && !out.includes(c)) out.push(c);\n }\n }\n return out;\n}\n\nconst OPENAI_WIRE = new Set([\"openai\", \"azure\", \"openai-compatible\", \"together\", \"openrouter\", \"groq\", \"fireworks\", \"ollama\", \"vllm\", \"litellm\", \"mistral\", \"deepseek\", \"xai\", \"jev\"]);\n\n/** Families to search for a provider, most specific first; the first is also the default family. */\nfunction familiesFor(provider: string | undefined): RuleFamily[] {\n const p = (provider ?? \"\").toLowerCase();\n if (OPENAI_WIRE.has(p)) return [\"openai\"];\n if (p === \"anthropic\") return [\"anthropic\"];\n if (p === \"bedrock\") return [\"anthropic\", \"openai\", \"other\"];\n if (p === \"vertex\" || p === \"gemini\" || p === \"google\") return [\"gemini\", \"anthropic\"];\n return [\"openai\", \"anthropic\", \"gemini\", \"other\"];\n}\n\nfunction matchRule(family: RuleFamily, ids: string[], allowDefault: boolean): ModelRule | undefined {\n for (const rule of MODEL_RULES.rules) {\n if (rule.family !== family) continue;\n if (rule.match === \".*\") {\n if (allowDefault) return rule;\n continue;\n }\n const re = regexFor(rule);\n if (ids.some((id) => re.test(id))) return rule;\n }\n return undefined;\n}\n\nexport function mergeRulePatch<T extends RulePatch>(base: T, patch: RulePatch | undefined): T {\n if (!patch) return base;\n const out: any = { ...base };\n if (patch.reasoning) out.reasoning = { ...(base.reasoning ?? {}), ...patch.reasoning };\n if (patch.sampling) out.sampling = { ...(base.sampling ?? {}), ...patch.sampling };\n if (patch.chatTools) out.chatTools = { ...(base.chatTools ?? {}), ...patch.chatTools };\n if (patch.maxTokensParam) out.maxTokensParam = patch.maxTokensParam;\n if (patch.dropParams) out.dropParams = [...new Set([...(base.dropParams ?? []), ...patch.dropParams])];\n return out;\n}\n\n// ─── Learned adjustments ─────────────────────────────────────────────────────\n// Bounded, in-process: what provider 400s taught us per (provider, model id).\n\nconst LEARNED_MAX = 500;\ntype LearnedEntry = { provider: string; model: string; scope?: string; patch: RulePatch };\nconst learned = new Map<string, LearnedEntry>();\n\n// `scope` separates deployments that share a model id but not a backend (an\n// Azure resource or openai-compatible endpoint: the id is a user-chosen name).\nfunction learnedKey(provider: string | undefined, model: string | undefined, scope?: string): string {\n return `${(provider ?? \"\").toLowerCase()}@${scope ?? \"\"}::${(model ?? \"\").trim().toLowerCase()}`;\n}\n\n/** Records (merges) a learned patch; the oldest entry is evicted past 500. */\nexport function rememberModelRulePatch(provider: string, model: string, patch: RulePatch, scope?: string): void {\n const key = learnedKey(provider, model, scope);\n const merged = mergeRulePatch<RulePatch>(learned.get(key)?.patch ?? {}, patch);\n learned.delete(key);\n learned.set(key, { provider: provider.toLowerCase(), model: model.trim().toLowerCase(), scope, patch: merged });\n if (learned.size > LEARNED_MAX) learned.delete(learned.keys().next().value as string);\n}\n\nexport function getLearnedModelRulePatch(provider: string, model: string, scope?: string): RulePatch | undefined {\n return learned.get(learnedKey(provider, model, scope))?.patch;\n}\n\n/** Snapshot of everything learned so far (hosts can persist it and re-seed with `rememberModelRulePatch`). */\nexport function listLearnedModelRules(): Array<{ provider: string; model: string; scope?: string; patch: RulePatch }> {\n return [...learned.values()].map((e) => ({ ...e }));\n}\n\nexport function clearLearnedModelRules(): void {\n learned.clear();\n}\n\n/** `anthropic.claude...` behind any geography prefix, in a bare id or at the end of an ARN. */\nconst BEDROCK_CLAUDE = /(?:^|[./])anthropic\\.claude/;\n\n/**\n * True when a model id names a Claude model: `claude-...`, `anthropic.claude-...`, a\n * region-prefixed profile (`us.`, `eu.`, `apac.`, `global.`, ...), or an ARN ending in\n * one. The vendor namespace is what is tested, not a list of geography prefixes: AWS\n * adds prefixes over time (its docs list `in` next to `us`, `eu` and `apac`), and a\n * Claude profile must not read as \"another family\" just because its prefix is new.\n */\nexport function isClaudeModelId(model: string | undefined): boolean {\n const id = String(model ?? \"\").trim().toLowerCase();\n if (!id) return false;\n return BEDROCK_CLAUDE.test(id) || modelIdCandidates(id).some((c) => c.startsWith(\"claude\"));\n}\n\n/**\n * Whether a Bedrock model id is Claude (`claude`), another family (`other`: Nova,\n * Llama, gpt-oss, Mistral, ...) or does not say (`unknown`): no id, or an ARN whose\n * last segment has no `vendor.model` form, such as an application inference\n * profile's opaque id. Anything not `other` may be Claude.\n */\nexport function bedrockModelFamily(model: string | undefined): \"claude\" | \"other\" | \"unknown\" {\n const id = String(model ?? \"\").trim().toLowerCase();\n if (!id) return \"unknown\";\n if (isClaudeModelId(id)) return \"claude\";\n if (id.startsWith(\"arn:\") && !(id.split(\"/\").pop() ?? \"\").includes(\".\")) return \"unknown\";\n return \"other\";\n}\n\n/**\n * Finds the rule for a model: the first matching rule of the provider's family\n * (or families, for gateways such as Bedrock), else the family's permissive\n * default. A Bedrock id that is not Claude has no Anthropic default to fall back\n * on: it gets the generic `other` one. Learned adjustments for (provider, model)\n * are merged in; `patch` lets a caller layer one more override on top (used by the\n * retry loop).\n */\nexport function resolveModelRule(opts: { provider?: string; model?: string; patch?: RulePatch; scope?: string }): ResolvedModelRule {\n const families = familiesFor(opts.provider);\n const ids = modelIdCandidates(opts.model);\n let rule: ModelRule | undefined;\n for (const family of families) {\n rule = matchRule(family, ids, false);\n if (rule) break;\n }\n let isDefault = false;\n if (!rule) {\n isDefault = true;\n const notClaude = (opts.provider ?? \"\").toLowerCase() === \"bedrock\" && bedrockModelFamily(opts.model) === \"other\";\n rule = matchRule(notClaude ? \"other\" : families[0], ids, true) ?? MODEL_RULES.rules[MODEL_RULES.rules.length - 1];\n }\n let effective: ModelRule = rule;\n const known = opts.model ? learned.get(learnedKey(opts.provider, opts.model, opts.scope))?.patch : undefined;\n if (known) effective = mergeRulePatch(effective, known);\n if (opts.patch) effective = mergeRulePatch(effective, opts.patch);\n return { ...effective, matchedRuleId: rule.id, isDefault, learned: !!known };\n}\n\nexport type EffortMapping = {\n /** The effort value to put on the wire. */\n effort?: ReasoningEffort;\n /** The off mechanism to use instead (`disabled` / `between_tools`). */\n off?: Exclude<OffMechanism, \"none\">;\n /** False only when the requested value goes through untouched. */\n mapped: boolean;\n};\n\n/**\n * Maps a requested effort onto what the rule accepts. A supported value passes;\n * an unsupported one goes to the nearest LOWER supported value (nearest higher\n * if nothing lower exists). `none` uses the rule's off mechanism, else the\n * lowest supported value. A requested non-`none` effort never maps to `none`\n * (asking for \"minimal\" must not switch thinking off). A rule without reasoning\n * control returns `{ mapped: true }` with no value.\n */\nexport function mapReasoningEffort(rule: ModelRule, effort: ReasoningEffort, endpoint: \"chat\" | \"responses\" = \"chat\"): EffortMapping {\n const efforts = (endpoint === \"responses\" && rule.reasoning.responsesEfforts) || rule.reasoning.efforts;\n if (rule.reasoning.style === \"none\" || efforts.length === 0) return { mapped: true };\n const supported = LADDER.filter((e) => efforts.includes(e));\n if (supported.includes(effort)) return { effort, mapped: false };\n if (effort === \"none\") {\n const off = rule.reasoning.off;\n if (off && off !== \"none\") return { off, mapped: true };\n const lowest = supported.find((e) => e !== \"none\");\n return lowest ? { effort: lowest, mapped: true } : { mapped: true };\n }\n const at = LADDER.indexOf(effort);\n if (at < 0) return { mapped: true };\n for (let i = at - 1; i >= 1; i--) if (supported.includes(LADDER[i])) return { effort: LADDER[i], mapped: true };\n for (let i = at + 1; i < LADDER.length; i++) if (supported.includes(LADDER[i])) return { effort: LADDER[i], mapped: true };\n return supported.includes(\"none\") ? { effort: \"none\", mapped: true } : { mapped: true };\n}\n\nexport type SamplingField = \"temperature\" | \"topP\" | \"topK\" | \"presencePenalty\" | \"frequencyPenalty\" | \"logprobs\";\n\n/** Whether the rule lets a sampling field through. `thinkingOn` matters for `thinking-requires-1`. */\nexport function allowsSampling(rule: ModelRule, field: SamplingField, value?: unknown, thinkingOn = false): boolean {\n const s = rule.sampling;\n switch (field) {\n case \"temperature\":\n switch (s.temperature) {\n case \"any\": return true;\n case \"unsupported\": return false;\n // The default is what the server applies anyway, so it is never sent.\n case \"default-only\": return false;\n case \"thinking-requires-1\": return !thinkingOn || value === 1;\n }\n return true;\n // Anthropic's thinking restriction covers top_p / top_k as well as temperature.\n case \"topP\": return s.topP && !(thinkingOn && s.temperature === \"thinking-requires-1\");\n case \"topK\": return s.topK && !(thinkingOn && s.temperature === \"thinking-requires-1\");\n case \"presencePenalty\":\n case \"frequencyPenalty\": return s.penalties;\n case \"logprobs\": return s.logprobs;\n }\n}\n\n/** Removes `rule.dropParams` (top-level keys) from a request body. */\nexport function applyDropParams(body: Record<string, any>, rule: ModelRule): void {\n for (const p of rule.dropParams ?? []) {\n const dot = p.indexOf(\".\");\n if (dot < 0) delete body[p];\n else if (body[p.slice(0, dot)] && typeof body[p.slice(0, dot)] === \"object\") delete body[p.slice(0, dot)][p.slice(dot + 1)];\n }\n}\n\n/** Token budget for a budget-style engine; 0 for `none`. */\nexport function effortBudget(effort: ReasoningEffort, table: \"anthropic\" | \"gemini\" = \"anthropic\"): number {\n if (effort === \"none\") return 0;\n return (table === \"gemini\" ? MODEL_RULES.geminiBudgets : MODEL_RULES.budgets)[effort] ?? 0;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cognipeer/agent-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "Composable lightweight smart agent core (no LangGraph) with pluggable model adapters.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -54,7 +54,12 @@
|
|
|
54
54
|
"anthropic",
|
|
55
55
|
"sdk",
|
|
56
56
|
"typescript",
|
|
57
|
-
"cognipeer"
|
|
57
|
+
"cognipeer",
|
|
58
|
+
"ai-agent",
|
|
59
|
+
"agents",
|
|
60
|
+
"tool-calling",
|
|
61
|
+
"mcp",
|
|
62
|
+
"multi-agent"
|
|
58
63
|
],
|
|
59
64
|
"author": "cognipeer",
|
|
60
65
|
"repository": {
|
|
@@ -64,7 +69,7 @@
|
|
|
64
69
|
"bugs": {
|
|
65
70
|
"url": "https://github.com/Cognipeer/agent-sdk/issues"
|
|
66
71
|
},
|
|
67
|
-
"homepage": "https://
|
|
72
|
+
"homepage": "https://docs.cognipeer.com/agent-sdk/",
|
|
68
73
|
"peerDependencies": {
|
|
69
74
|
"@langchain/core": "^0.3.0 || ^1.0.0",
|
|
70
75
|
"@langchain/openai": "^0.3.0 || ^1.0.0",
|