@pentoshi/clai 4.2.2 → 4.4.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.
Files changed (204) hide show
  1. package/README.md +15 -17
  2. package/dist/agent/compaction-summary.d.ts +1 -1
  3. package/dist/agent/compaction-summary.js +1 -1
  4. package/dist/agent/compaction-summary.js.map +1 -1
  5. package/dist/agent/runner.js +12 -13
  6. package/dist/agent/runner.js.map +1 -1
  7. package/dist/agent/tool-output-formatting.d.ts +6 -0
  8. package/dist/agent/tool-output-formatting.js +126 -40
  9. package/dist/agent/tool-output-formatting.js.map +1 -1
  10. package/dist/app/adapters/agent-event-adapter.d.ts +4 -0
  11. package/dist/app/adapters/agent-event-adapter.js +28 -3
  12. package/dist/app/adapters/agent-event-adapter.js.map +1 -1
  13. package/dist/app/commands/catalog.js +8 -26
  14. package/dist/app/commands/catalog.js.map +1 -1
  15. package/dist/app/commands/registry.js +0 -1
  16. package/dist/app/commands/registry.js.map +1 -1
  17. package/dist/app/controllers/session-controller.d.ts +3 -0
  18. package/dist/app/controllers/session-controller.js +18 -25
  19. package/dist/app/controllers/session-controller.js.map +1 -1
  20. package/dist/app/controllers/session-persistence.d.ts +4 -1
  21. package/dist/app/controllers/session-persistence.js +23 -5
  22. package/dist/app/controllers/session-persistence.js.map +1 -1
  23. package/dist/app/controllers/session-responder.d.ts +1 -0
  24. package/dist/app/controllers/session-responder.js +8 -0
  25. package/dist/app/controllers/session-responder.js.map +1 -1
  26. package/dist/app/controllers/session-usage-ledger.d.ts +63 -0
  27. package/dist/app/controllers/session-usage-ledger.js +232 -0
  28. package/dist/app/controllers/session-usage-ledger.js.map +1 -0
  29. package/dist/app/events/app-event.d.ts +2 -0
  30. package/dist/app/events/app-event.js.map +1 -1
  31. package/dist/classic/app/ClassicApp.js +2 -1
  32. package/dist/classic/app/ClassicApp.js.map +1 -1
  33. package/dist/classic/app/use-feed.js +2 -1
  34. package/dist/classic/app/use-feed.js.map +1 -1
  35. package/dist/classic/chrome/toast-rows.d.ts +1 -0
  36. package/dist/classic/chrome/toast-rows.js +18 -0
  37. package/dist/classic/chrome/toast-rows.js.map +1 -1
  38. package/dist/commands/providers.js +0 -4
  39. package/dist/commands/providers.js.map +1 -1
  40. package/dist/index.js +6 -4
  41. package/dist/index.js.map +1 -1
  42. package/dist/llm/adapters/openai-tools.d.ts +1 -0
  43. package/dist/llm/adapters/openai-tools.js +4 -1
  44. package/dist/llm/adapters/openai-tools.js.map +1 -1
  45. package/dist/llm/agentrouter.js +2 -0
  46. package/dist/llm/agentrouter.js.map +1 -1
  47. package/dist/llm/aws-mantle.js +2 -0
  48. package/dist/llm/aws-mantle.js.map +1 -1
  49. package/dist/llm/bynara.js +2 -0
  50. package/dist/llm/bynara.js.map +1 -1
  51. package/dist/llm/capabilities.d.ts +19 -0
  52. package/dist/llm/capabilities.js +165 -79
  53. package/dist/llm/capabilities.js.map +1 -1
  54. package/dist/llm/catalog-facts.d.ts +23 -0
  55. package/dist/llm/catalog-facts.js +253 -0
  56. package/dist/llm/catalog-facts.js.map +1 -0
  57. package/dist/llm/catalog-prefetch.d.ts +5 -0
  58. package/dist/llm/catalog-prefetch.js +38 -0
  59. package/dist/llm/catalog-prefetch.js.map +1 -0
  60. package/dist/llm/context-windows.d.ts +2 -0
  61. package/dist/llm/context-windows.js +20 -6
  62. package/dist/llm/context-windows.js.map +1 -1
  63. package/dist/llm/custom-profile-resolver.d.ts +5 -0
  64. package/dist/llm/custom-profile-resolver.js +8 -0
  65. package/dist/llm/custom-profile-resolver.js.map +1 -0
  66. package/dist/llm/custom-provider-profile.d.ts +7 -2
  67. package/dist/llm/custom-provider-profile.js +40 -10
  68. package/dist/llm/custom-provider-profile.js.map +1 -1
  69. package/dist/llm/custom-providers.js +2 -0
  70. package/dist/llm/custom-providers.js.map +1 -1
  71. package/dist/llm/effort-fallback.js +3 -0
  72. package/dist/llm/effort-fallback.js.map +1 -1
  73. package/dist/llm/fireworks.js +2 -0
  74. package/dist/llm/fireworks.js.map +1 -1
  75. package/dist/llm/free.js +2 -0
  76. package/dist/llm/free.js.map +1 -1
  77. package/dist/llm/hetzner.js +2 -0
  78. package/dist/llm/hetzner.js.map +1 -1
  79. package/dist/llm/http.d.ts +21 -2
  80. package/dist/llm/http.js +133 -141
  81. package/dist/llm/http.js.map +1 -1
  82. package/dist/llm/key-rotation.d.ts +1 -0
  83. package/dist/llm/key-rotation.js +8 -0
  84. package/dist/llm/key-rotation.js.map +1 -1
  85. package/dist/llm/learned-capabilities.d.ts +22 -0
  86. package/dist/llm/learned-capabilities.js +147 -0
  87. package/dist/llm/learned-capabilities.js.map +1 -0
  88. package/dist/llm/lightning.js +2 -0
  89. package/dist/llm/lightning.js.map +1 -1
  90. package/dist/llm/modal.js +2 -0
  91. package/dist/llm/modal.js.map +1 -1
  92. package/dist/llm/model-families.d.ts +20 -0
  93. package/dist/llm/model-families.js +227 -19
  94. package/dist/llm/model-families.js.map +1 -1
  95. package/dist/llm/nvidia.js +2 -0
  96. package/dist/llm/nvidia.js.map +1 -1
  97. package/dist/llm/openai.js +2 -0
  98. package/dist/llm/openai.js.map +1 -1
  99. package/dist/llm/openrouter.js +2 -0
  100. package/dist/llm/openrouter.js.map +1 -1
  101. package/dist/llm/orcarouter.js +2 -0
  102. package/dist/llm/orcarouter.js.map +1 -1
  103. package/dist/llm/provider-model-layers.d.ts +3 -0
  104. package/dist/llm/provider-model-layers.js +522 -0
  105. package/dist/llm/provider-model-layers.js.map +1 -0
  106. package/dist/llm/provider-profile-layers.d.ts +4 -1
  107. package/dist/llm/provider-profile-layers.js +22 -536
  108. package/dist/llm/provider-profile-layers.js.map +1 -1
  109. package/dist/llm/provider-profile.d.ts +14 -1
  110. package/dist/llm/provider-profile.js +23 -0
  111. package/dist/llm/provider-profile.js.map +1 -1
  112. package/dist/llm/provider-profiles.d.ts +5 -1
  113. package/dist/llm/provider-profiles.js +178 -5
  114. package/dist/llm/provider-profiles.js.map +1 -1
  115. package/dist/llm/provider.js +0 -15
  116. package/dist/llm/provider.js.map +1 -1
  117. package/dist/llm/qwen-cloud.js +2 -0
  118. package/dist/llm/qwen-cloud.js.map +1 -1
  119. package/dist/llm/reasoning-artifacts.d.ts +1 -0
  120. package/dist/llm/reasoning-artifacts.js +7 -5
  121. package/dist/llm/reasoning-artifacts.js.map +1 -1
  122. package/dist/llm/reasoning-controls.d.ts +16 -0
  123. package/dist/llm/reasoning-controls.js +210 -0
  124. package/dist/llm/reasoning-controls.js.map +1 -0
  125. package/dist/llm/reasoning-errors.d.ts +4 -0
  126. package/dist/llm/reasoning-errors.js +45 -0
  127. package/dist/llm/reasoning-errors.js.map +1 -0
  128. package/dist/llm/request-plan.d.ts +8 -6
  129. package/dist/llm/request-plan.js +47 -13
  130. package/dist/llm/request-plan.js.map +1 -1
  131. package/dist/llm/route-dialect-registry.d.ts +8 -0
  132. package/dist/llm/route-dialect-registry.js +33 -0
  133. package/dist/llm/route-dialect-registry.js.map +1 -0
  134. package/dist/llm/route-vocabulary.d.ts +2 -0
  135. package/dist/llm/route-vocabulary.js +23 -0
  136. package/dist/llm/route-vocabulary.js.map +1 -0
  137. package/dist/llm/router.d.ts +2 -0
  138. package/dist/llm/router.js +70 -20
  139. package/dist/llm/router.js.map +1 -1
  140. package/dist/llm/stream-terminal.js +2 -1
  141. package/dist/llm/stream-terminal.js.map +1 -1
  142. package/dist/llm/tokenrouter.js +2 -0
  143. package/dist/llm/tokenrouter.js.map +1 -1
  144. package/dist/store/config.d.ts +11 -0
  145. package/dist/store/config.js +21 -3
  146. package/dist/store/config.js.map +1 -1
  147. package/dist/store/history.d.ts +1 -0
  148. package/dist/store/history.js +7 -0
  149. package/dist/store/history.js.map +1 -1
  150. package/dist/store/keys.d.ts +1 -1
  151. package/dist/store/keys.js +1 -1
  152. package/dist/store/scope.d.ts +8 -0
  153. package/dist/store/scope.js +138 -1
  154. package/dist/store/scope.js.map +1 -1
  155. package/dist/store/session-workspace.d.ts +1 -0
  156. package/dist/store/session-workspace.js +21 -1
  157. package/dist/store/session-workspace.js.map +1 -1
  158. package/dist/tools/definitions.js +5 -10
  159. package/dist/tools/definitions.js.map +1 -1
  160. package/dist/tools/interactive-session-tools.js +5 -5
  161. package/dist/tools/interactive-session-tools.js.map +1 -1
  162. package/dist/tools/output-selection.js +47 -3
  163. package/dist/tools/output-selection.js.map +1 -1
  164. package/dist/tools/registry.js +2 -2
  165. package/dist/tools/registry.js.map +1 -1
  166. package/dist/tools/web/content-encoding.d.ts +6 -0
  167. package/dist/tools/web/content-encoding.js +57 -0
  168. package/dist/tools/web/content-encoding.js.map +1 -0
  169. package/dist/tools/web/fetch-core.js +23 -1
  170. package/dist/tools/web/fetch-core.js.map +1 -1
  171. package/dist/tui-v2/components/picker/picker.js +1 -1
  172. package/dist/tui-v2/components/picker/picker.js.map +1 -1
  173. package/dist/types.d.ts +2 -1
  174. package/dist/types.js +0 -2
  175. package/dist/types.js.map +1 -1
  176. package/dist/ui-core/bootstrap/composition-root.js +8 -2
  177. package/dist/ui-core/bootstrap/composition-root.js.map +1 -1
  178. package/dist/ui-core/commands/command-handlers.js +3 -3
  179. package/dist/ui-core/commands/command-handlers.js.map +1 -1
  180. package/dist/ui-core/commands/config-commands.js +17 -14
  181. package/dist/ui-core/commands/config-commands.js.map +1 -1
  182. package/dist/ui-core/commands/picker-commands.js +34 -11
  183. package/dist/ui-core/commands/picker-commands.js.map +1 -1
  184. package/dist/ui-core/commands/session-commands.d.ts +3 -3
  185. package/dist/ui-core/commands/session-commands.js +64 -17
  186. package/dist/ui-core/commands/session-commands.js.map +1 -1
  187. package/dist/ui-core/rendering/format-help.js +2 -2
  188. package/dist/ui-core/rendering/format-help.js.map +1 -1
  189. package/dist/ui-core/rendering/format-usage.d.ts +6 -0
  190. package/dist/ui-core/rendering/format-usage.js +116 -0
  191. package/dist/ui-core/rendering/format-usage.js.map +1 -0
  192. package/dist/ui-core/state/transcript-reducer.js +78 -19
  193. package/dist/ui-core/state/transcript-reducer.js.map +1 -1
  194. package/dist/ui-core/state/transcript-types.d.ts +1 -0
  195. package/dist/ui-core/state/transcript-types.js.map +1 -1
  196. package/dist/version.generated.d.ts +2 -2
  197. package/dist/version.generated.js +2 -2
  198. package/package.json +1 -2
  199. package/dist/llm/groq.d.ts +0 -24
  200. package/dist/llm/groq.js +0 -155
  201. package/dist/llm/groq.js.map +0 -1
  202. package/dist/llm/kimchi.d.ts +0 -2
  203. package/dist/llm/kimchi.js +0 -96
  204. package/dist/llm/kimchi.js.map +0 -1
@@ -0,0 +1,522 @@
1
+ import { classifyBynaraModel, classifyNvidiaModel } from "./model-families.js";
2
+ import { codeFact, deepseekV4DefaultOn, kimiConfigurableLayer, kimiMandatoryLayer, kimiNoPreservationLayer, providerDoc, } from "./provider-profile-layers.js";
3
+ function nvidiaModelLayer(model) {
4
+ switch (classifyNvidiaModel(model)) {
5
+ case "kimi-thinking":
6
+ return {
7
+ evidence: codeFact("nim-kimi-thinking"),
8
+ reasoning: {
9
+ generation: "default-on",
10
+ control: {
11
+ dialect: "kimi-template-thinking",
12
+ status: "supported",
13
+ evidence: codeFact("nim-kimi-thinking"),
14
+ },
15
+ disable: "supported",
16
+ disableForm: "template-thinking-false",
17
+ replayScope: "tool-turn",
18
+ },
19
+ };
20
+ case "deepseek-v4":
21
+ return {
22
+ evidence: codeFact("nim-deepseek-v4"),
23
+ reasoning: {
24
+ generation: "default-on",
25
+ control: {
26
+ dialect: "chat-template-thinking",
27
+ status: "supported",
28
+ evidence: codeFact("nim-deepseek-v4"),
29
+ },
30
+ acceptedEfforts: ["none", "high"],
31
+ disable: "supported",
32
+ disableForm: "template-thinking-false",
33
+ replayScope: "tool-turn",
34
+ outputShapes: ["reasoning-content"],
35
+ },
36
+ };
37
+ case "thinking":
38
+ return {
39
+ evidence: codeFact("nim-chat-template-thinking"),
40
+ reasoning: {
41
+ generation: "default-on",
42
+ control: {
43
+ dialect: "chat-template-thinking",
44
+ status: "supported",
45
+ evidence: codeFact("nim-chat-template-thinking"),
46
+ },
47
+ disable: "supported",
48
+ disableForm: "template-thinking-false",
49
+ },
50
+ };
51
+ case "nemotron-3":
52
+ return {
53
+ evidence: codeFact("nim-nemotron-3"),
54
+ reasoning: {
55
+ control: {
56
+ dialect: "nemotron-reasoning-budget",
57
+ status: "supported",
58
+ evidence: codeFact("nim-nemotron-3"),
59
+ },
60
+ disable: "supported",
61
+ disableForm: "template-enable-thinking-false",
62
+ },
63
+ };
64
+ case "glm-thinking":
65
+ return {
66
+ evidence: codeFact("nim-glm-thinking"),
67
+ reasoning: {
68
+ control: {
69
+ dialect: "glm-enable-thinking",
70
+ status: "supported",
71
+ evidence: codeFact("nim-glm-thinking"),
72
+ },
73
+ disable: "supported",
74
+ disableForm: "template-enable-thinking-false",
75
+ },
76
+ };
77
+ case "enable-thinking":
78
+ return {
79
+ evidence: codeFact("nim-gemma-enable-thinking"),
80
+ reasoning: {
81
+ control: {
82
+ dialect: "glm-enable-thinking",
83
+ status: "supported",
84
+ evidence: codeFact("nim-gemma-enable-thinking"),
85
+ },
86
+ disable: "supported",
87
+ disableForm: "template-enable-thinking-false",
88
+ },
89
+ };
90
+ case "effort-only":
91
+ if (/gpt-oss/i.test(model)) {
92
+ return {
93
+ evidence: codeFact("nim-gpt-oss-effort"),
94
+ reasoning: {
95
+ generation: "default-on",
96
+ control: {
97
+ dialect: "openai-effort",
98
+ status: "supported",
99
+ evidence: codeFact("nim-gpt-oss-effort"),
100
+ },
101
+ acceptedEfforts: ["low", "medium", "high"],
102
+ disable: "unsupported",
103
+ disableForm: "effort-minimal-floor",
104
+ },
105
+ };
106
+ }
107
+ return {
108
+ evidence: codeFact("nim-effort-only"),
109
+ reasoning: {
110
+ generation: "default-on",
111
+ control: {
112
+ dialect: "openai-effort",
113
+ status: "supported",
114
+ evidence: codeFact("nim-effort-only"),
115
+ },
116
+ acceptedEfforts: ["none", "low", "medium", "high"],
117
+ disable: "supported",
118
+ disableForm: "effort-none",
119
+ },
120
+ };
121
+ default:
122
+ return {
123
+ evidence: codeFact("nim-no-thinking-knob"),
124
+ reasoning: {
125
+ generation: "unknown",
126
+ control: {
127
+ dialect: "none",
128
+ status: "unsupported",
129
+ evidence: codeFact("nim-no-thinking-knob"),
130
+ },
131
+ },
132
+ };
133
+ }
134
+ }
135
+ function bynaraModelLayer(model) {
136
+ if (LING_PATTERN.test(model))
137
+ return LING_NO_REASONING;
138
+ if (QWEN3_MAX_PATTERN.test(model))
139
+ return QWEN3_MAX_GATEWAY_EFFORTS;
140
+ switch (classifyBynaraModel(model)) {
141
+ case "kimi":
142
+ return {
143
+ evidence: codeFact("bynara-kimi"),
144
+ reasoning: {
145
+ generation: "default-on",
146
+ control: {
147
+ dialect: "kimi-template-thinking",
148
+ status: "supported",
149
+ evidence: codeFact("bynara-kimi"),
150
+ },
151
+ acceptedEfforts: ["low", "high"],
152
+ disable: "supported",
153
+ disableForm: "template-thinking-false",
154
+ replayScope: "tool-turn",
155
+ },
156
+ };
157
+ case "deepseek":
158
+ case "agnes":
159
+ return {
160
+ evidence: codeFact("bynara-effort"),
161
+ reasoning: {
162
+ generation: "default-on",
163
+ control: {
164
+ dialect: "openai-effort",
165
+ status: "supported",
166
+ evidence: codeFact("bynara-effort"),
167
+ },
168
+ acceptedEfforts: ["none", "low", "medium", "high"],
169
+ disable: "supported",
170
+ disableForm: "effort-none",
171
+ },
172
+ };
173
+ case "stepfun":
174
+ return {
175
+ evidence: codeFact("bynara-stepfun"),
176
+ reasoning: {
177
+ control: {
178
+ dialect: "openai-effort",
179
+ status: "supported",
180
+ evidence: codeFact("bynara-stepfun"),
181
+ },
182
+ acceptedEfforts: ["low", "medium", "high"],
183
+ disable: "unsupported",
184
+ disableForm: "none-documented",
185
+ },
186
+ };
187
+ default:
188
+ return undefined;
189
+ }
190
+ }
191
+ function agentrouterModelLayer(model) {
192
+ const m = model.toLowerCase();
193
+ if (/(?:^|\/)gpt-5|(?:^|\/)o[134](?:\b|-)/.test(m)) {
194
+ return {
195
+ evidence: codeFact("agentrouter-gpt-effort"),
196
+ reasoning: {
197
+ generation: "default-on",
198
+ control: {
199
+ dialect: "openai-effort",
200
+ status: "supported",
201
+ evidence: codeFact("agentrouter-gpt-effort"),
202
+ },
203
+ acceptedEfforts: ["minimal", "low", "medium", "high"],
204
+ disable: "unsupported",
205
+ disableForm: "effort-minimal-floor",
206
+ },
207
+ };
208
+ }
209
+ if (/glm/.test(m)) {
210
+ return {
211
+ evidence: codeFact("agentrouter-glm-disabled"),
212
+ reasoning: {
213
+ generation: "default-on",
214
+ control: {
215
+ dialect: "deepseek-thinking",
216
+ status: "supported",
217
+ evidence: codeFact("agentrouter-glm-disabled"),
218
+ },
219
+ disable: "supported",
220
+ disableForm: "thinking-disabled",
221
+ },
222
+ };
223
+ }
224
+ if (/claude/.test(m)) {
225
+ return {
226
+ evidence: codeFact("agentrouter-claude-effort"),
227
+ reasoning: {
228
+ generation: "optional",
229
+ control: {
230
+ dialect: "openai-effort",
231
+ status: "supported",
232
+ evidence: codeFact("agentrouter-claude-effort"),
233
+ },
234
+ acceptedEfforts: ["low", "medium", "high"],
235
+ disable: "supported",
236
+ disableForm: "omit-control",
237
+ },
238
+ };
239
+ }
240
+ return undefined;
241
+ }
242
+ const OPENROUTER_REASONING_PATTERN = /:thinking|deepseek-v4|deepseek-r1|qwen3|kimi-k[23]|claude-(?:opus|sonnet|haiku)-4|gpt-5|(?:^|\/)o[134]|grok.*reasoner/i;
243
+ function openrouterModelLayer(model) {
244
+ if (/kimi-k3|kimi-k2\.7/.test(model))
245
+ return kimiMandatoryLayer;
246
+ if (/kimi-k2\.6/.test(model))
247
+ return kimiConfigurableLayer;
248
+ if (/kimi-k2\.5|kimi-k2(?:\b|-)/.test(model))
249
+ return kimiNoPreservationLayer;
250
+ if (!OPENROUTER_REASONING_PATTERN.test(model))
251
+ return undefined;
252
+ return {
253
+ evidence: providerDoc("openrouter-reasoning"),
254
+ reasoning: {
255
+ generation: "default-on",
256
+ control: {
257
+ dialect: "openai-nested-reasoning",
258
+ status: "supported",
259
+ evidence: providerDoc("openrouter-reasoning"),
260
+ },
261
+ acceptedEfforts: ["low", "medium", "high"],
262
+ replayScope: "tool-turn",
263
+ outputShapes: ["reasoning-content", "structured-details"],
264
+ },
265
+ };
266
+ }
267
+ const QWEN3_MAX_GATEWAY_EFFORTS = {
268
+ evidence: providerDoc("qwen3-max-gateway-serves-low-medium-only"),
269
+ reasoning: {
270
+ acceptedEfforts: ["low", "medium"],
271
+ control: {
272
+ dialect: "openai-effort",
273
+ status: "supported",
274
+ evidence: providerDoc("qwen3-max-gateway-serves-low-medium-only"),
275
+ },
276
+ },
277
+ };
278
+ const QWEN3_MAX_PATTERN = /qwen-?3\.?8-?max/i;
279
+ const LING_PATTERN = /(?:^|[-/])ling-?3(?:[.-]|$)/i;
280
+ const LING_NO_REASONING = {
281
+ evidence: providerDoc("ling-3-returns-no-reasoning-content"),
282
+ reasoning: {
283
+ generation: "none",
284
+ control: {
285
+ dialect: "none",
286
+ status: "unsupported",
287
+ evidence: providerDoc("ling-3-returns-no-reasoning-content"),
288
+ },
289
+ disable: "supported",
290
+ disableForm: "omit-control",
291
+ },
292
+ };
293
+ const MODEL_RULES = {
294
+ anthropic: [
295
+ {
296
+ pattern: /claude-(?:opus|sonnet|haiku)-(?:3-7|4|5)|claude-3-7/i,
297
+ layer: {
298
+ evidence: providerDoc("anthropic-extended-thinking"),
299
+ reasoning: { generation: "optional" },
300
+ },
301
+ },
302
+ {
303
+ pattern: /claude/i,
304
+ layer: {
305
+ evidence: providerDoc("anthropic-no-thinking"),
306
+ reasoning: {
307
+ generation: "none",
308
+ control: {
309
+ dialect: "none",
310
+ status: "unsupported",
311
+ evidence: providerDoc("anthropic-no-thinking"),
312
+ },
313
+ },
314
+ },
315
+ },
316
+ ],
317
+ gemini: [
318
+ {
319
+ pattern: /gemini-3(?:\.\d+)?-pro/i,
320
+ layer: {
321
+ evidence: codeFact("gemini-3-thinking-level-pro-has-no-minimal"),
322
+ reasoning: {
323
+ generation: "optional",
324
+ acceptedEfforts: ["low", "medium", "high"],
325
+ },
326
+ },
327
+ },
328
+ {
329
+ pattern: /gemini-3(?:[.-]|$)/i,
330
+ layer: {
331
+ evidence: codeFact("gemini-3-thinking-level"),
332
+ reasoning: {
333
+ generation: "optional",
334
+ acceptedEfforts: ["minimal", "low", "medium", "high"],
335
+ },
336
+ },
337
+ },
338
+ {
339
+ pattern: /gemini-2\.5-(?:flash|flash-lite)/i,
340
+ layer: {
341
+ evidence: codeFact("gemini-2p5-thinking-budget"),
342
+ reasoning: {
343
+ generation: "optional",
344
+ acceptedEfforts: ["low", "medium", "high"],
345
+ disable: "supported",
346
+ disableForm: "thinking-budget-zero",
347
+ },
348
+ },
349
+ },
350
+ {
351
+ pattern: /gemini-2\.5/i,
352
+ layer: {
353
+ evidence: codeFact("gemini-2p5-pro-cannot-disable-thinking"),
354
+ reasoning: {
355
+ generation: "mandatory",
356
+ acceptedEfforts: ["low", "medium", "high"],
357
+ disable: "unsupported",
358
+ },
359
+ },
360
+ },
361
+ {
362
+ pattern: /gemini/i,
363
+ layer: {
364
+ evidence: codeFact("gemini-pre-2p5-has-no-thinking-config"),
365
+ reasoning: {
366
+ generation: "none",
367
+ control: {
368
+ dialect: "none",
369
+ status: "unsupported",
370
+ evidence: codeFact("gemini-pre-2p5-has-no-thinking-config"),
371
+ },
372
+ },
373
+ },
374
+ },
375
+ ],
376
+ ollama: [
377
+ {
378
+ pattern: /deepseek-r1|qwen3|qwq/i,
379
+ layer: {
380
+ evidence: codeFact("ollama-think-supported-families"),
381
+ reasoning: {
382
+ generation: "default-on",
383
+ control: {
384
+ dialect: "ollama-think",
385
+ status: "supported",
386
+ evidence: codeFact("ollama-think-supported-families"),
387
+ },
388
+ disable: "supported",
389
+ disableForm: "omit-control",
390
+ },
391
+ },
392
+ },
393
+ ],
394
+ openai: [
395
+ {
396
+ pattern: /gpt-5|(?:^|\/)o[134]/i,
397
+ layer: {
398
+ evidence: providerDoc("openai-reasoning-models"),
399
+ reasoning: {
400
+ generation: "optional",
401
+ acceptedEfforts: ["minimal", "low", "medium", "high"],
402
+ disable: "unsupported",
403
+ disableForm: "effort-minimal-floor",
404
+ },
405
+ },
406
+ },
407
+ {
408
+ pattern: /gpt-4o|gpt-4\.1|gpt-4-turbo/i,
409
+ layer: {
410
+ evidence: providerDoc("openai-non-reasoning"),
411
+ reasoning: {
412
+ generation: "none",
413
+ control: {
414
+ dialect: "none",
415
+ status: "unsupported",
416
+ evidence: providerDoc("openai-non-reasoning"),
417
+ },
418
+ },
419
+ },
420
+ },
421
+ ],
422
+ fireworks: [
423
+ {
424
+ pattern: /deepseek-v4/i,
425
+ layer: {
426
+ evidence: providerDoc("fireworks-deepseek-v4"),
427
+ reasoning: {
428
+ generation: "default-on",
429
+ acceptedEfforts: ["none", "high", "max"],
430
+ disable: "supported",
431
+ disableForm: "effort-none",
432
+ replayScope: "tool-turn",
433
+ outputShapes: ["reasoning-content"],
434
+ },
435
+ },
436
+ },
437
+ {
438
+ pattern: /kimi-k3|kimi-k2\.7/i,
439
+ layer: kimiMandatoryLayer,
440
+ },
441
+ {
442
+ pattern: /kimi-k2\.6/i,
443
+ layer: kimiConfigurableLayer,
444
+ },
445
+ {
446
+ pattern: /kimi/i,
447
+ layer: kimiNoPreservationLayer,
448
+ },
449
+ ],
450
+ "qwen-cloud": [
451
+ {
452
+ pattern: /qwen3/i,
453
+ layer: {
454
+ evidence: providerDoc("alibaba-qwen3-thinking"),
455
+ reasoning: { generation: "default-on" },
456
+ },
457
+ },
458
+ ],
459
+ hetzner: [
460
+ {
461
+ pattern: /qwen/i,
462
+ layer: {
463
+ evidence: codeFact("hetzner-qwen-thinking"),
464
+ reasoning: {
465
+ generation: "default-on",
466
+ control: {
467
+ dialect: "glm-enable-thinking",
468
+ status: "supported",
469
+ evidence: codeFact("hetzner-qwen-thinking"),
470
+ },
471
+ disable: "supported",
472
+ disableForm: "template-enable-thinking-false",
473
+ },
474
+ },
475
+ },
476
+ ],
477
+ tokenrouter: [
478
+ { pattern: QWEN3_MAX_PATTERN, layer: QWEN3_MAX_GATEWAY_EFFORTS },
479
+ { pattern: /kimi-k3|kimi-k2\.7/i, layer: kimiMandatoryLayer },
480
+ { pattern: /kimi-k2\.6/i, layer: kimiConfigurableLayer },
481
+ { pattern: /kimi/i, layer: kimiNoPreservationLayer },
482
+ { pattern: /deepseek/i, layer: deepseekV4DefaultOn },
483
+ ],
484
+ orcarouter: [
485
+ { pattern: /kimi-k3|kimi-k2\.7/i, layer: kimiMandatoryLayer },
486
+ { pattern: /kimi-k2\.6/i, layer: kimiConfigurableLayer },
487
+ { pattern: /kimi/i, layer: kimiNoPreservationLayer },
488
+ { pattern: /deepseek/i, layer: deepseekV4DefaultOn },
489
+ ],
490
+ modal: [
491
+ { pattern: /kimi-k3|kimi-k2\.7/i, layer: kimiMandatoryLayer },
492
+ { pattern: /kimi-k2\.6/i, layer: kimiConfigurableLayer },
493
+ { pattern: /kimi/i, layer: kimiNoPreservationLayer },
494
+ { pattern: /deepseek/i, layer: deepseekV4DefaultOn },
495
+ ],
496
+ lightning: [
497
+ { pattern: /kimi-k3|kimi-k2\.7/i, layer: kimiMandatoryLayer },
498
+ { pattern: /kimi-k2\.6/i, layer: kimiConfigurableLayer },
499
+ { pattern: /kimi/i, layer: kimiNoPreservationLayer },
500
+ { pattern: /deepseek/i, layer: deepseekV4DefaultOn },
501
+ ],
502
+ free: [{ pattern: /deepseek/i, layer: deepseekV4DefaultOn }],
503
+ openrouter: [],
504
+ };
505
+ const AWS_MANTLE_ANTHROPIC_MODEL = /(?:^|[./-])(?:anthropic|claude)(?:[./-]|$)/i;
506
+ export function modelLayerFor(provider, model) {
507
+ if (provider === "nvidia")
508
+ return nvidiaModelLayer(model);
509
+ if (provider === "bynara")
510
+ return bynaraModelLayer(model);
511
+ if (provider === "agentrouter")
512
+ return agentrouterModelLayer(model);
513
+ if (provider === "openrouter")
514
+ return openrouterModelLayer(model);
515
+ if (provider === "aws-mantle") {
516
+ return AWS_MANTLE_ANTHROPIC_MODEL.test(model)
517
+ ? MODEL_RULES.anthropic?.find((rule) => rule.pattern.test(model))?.layer
518
+ : nvidiaModelLayer(model);
519
+ }
520
+ return MODEL_RULES[provider]?.find((rule) => rule.pattern.test(model))?.layer;
521
+ }
522
+ //# sourceMappingURL=provider-model-layers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-model-layers.js","sourceRoot":"","sources":["../../src/llm/provider-model-layers.ts"],"names":[],"mappings":"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"}
@@ -4,4 +4,7 @@ export declare const codeFact: (detail?: string) => ProfileEvidence;
4
4
  export declare const providerDoc: (detail: string) => ProfileEvidence;
5
5
  export declare const viaGateway: (detail: string) => ProfileEvidence;
6
6
  export declare const FAMILY_LAYERS: Partial<Record<ProviderId, ProviderProfileLayer>>;
7
- export declare function modelLayerFor(provider: ProviderId, model: string): ProviderProfileLayer | undefined;
7
+ export declare const kimiMandatoryLayer: ProviderProfileLayer;
8
+ export declare const kimiConfigurableLayer: ProviderProfileLayer;
9
+ export declare const kimiNoPreservationLayer: ProviderProfileLayer;
10
+ export declare const deepseekV4DefaultOn: ProviderProfileLayer;