backend-manager 5.0.165 → 5.0.166

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -14,6 +14,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
14
14
  - `Fixed` for any bug fixes.
15
15
  - `Security` in case of vulnerabilities.
16
16
 
17
+ # [5.0.166] - 2026-03-20
18
+ ### Added
19
+ - `reasoning: true` feature flag to GPT-5.x and o-series models in MODEL_TABLE
20
+ - New GPT-5.4-mini and GPT-5.4-nano model entries with pricing
21
+
22
+ ### Changed
23
+ - Reasoning parameter is now conditionally included in API requests only when the model supports it
24
+ - `resolveReasoning()` validates model support and warns when reasoning is requested for unsupported models
25
+
17
26
  # [5.0.165] - 2026-03-20
18
27
  ### Changed
19
28
  - Serve command now reads hosting port from `firebase.json` emulator config before falling back to default 5000
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "backend-manager",
3
- "version": "5.0.165",
3
+ "version": "5.0.166",
4
4
  "description": "Quick tools for developing Firebase functions",
5
5
  "main": "src/manager/index.js",
6
6
  "bin": {
@@ -22,6 +22,7 @@ const MODEL_TABLE = {
22
22
  features: {
23
23
  json: true,
24
24
  temperature: false,
25
+ reasoning: true,
25
26
  },
26
27
  },
27
28
  'gpt-5.2': {
@@ -31,6 +32,7 @@ const MODEL_TABLE = {
31
32
  features: {
32
33
  json: true,
33
34
  temperature: false,
35
+ reasoning: true,
34
36
  },
35
37
  },
36
38
  'gpt-5.1': {
@@ -40,6 +42,7 @@ const MODEL_TABLE = {
40
42
  features: {
41
43
  json: true,
42
44
  temperature: false,
45
+ reasoning: true,
43
46
  },
44
47
  },
45
48
  'gpt-5': {
@@ -49,6 +52,7 @@ const MODEL_TABLE = {
49
52
  features: {
50
53
  json: true,
51
54
  temperature: false,
55
+ reasoning: true,
52
56
  },
53
57
  },
54
58
  'gpt-5-mini': {
@@ -58,6 +62,7 @@ const MODEL_TABLE = {
58
62
  features: {
59
63
  json: true,
60
64
  temperature: false,
65
+ reasoning: true,
61
66
  },
62
67
  },
63
68
  'gpt-5-nano': {
@@ -67,6 +72,29 @@ const MODEL_TABLE = {
67
72
  features: {
68
73
  json: true,
69
74
  temperature: false,
75
+ reasoning: true,
76
+ },
77
+ },
78
+ // Mar 20, 2026
79
+ // GPT-5.4 mini/nano family
80
+ 'gpt-5.4-mini': {
81
+ input: 0.75,
82
+ output: 4.50,
83
+ provider: 'openai',
84
+ features: {
85
+ json: true,
86
+ temperature: false,
87
+ reasoning: true,
88
+ },
89
+ },
90
+ 'gpt-5.4-nano': {
91
+ input: 0.20,
92
+ output: 1.25,
93
+ provider: 'openai',
94
+ features: {
95
+ json: true,
96
+ temperature: false,
97
+ reasoning: true,
70
98
  },
71
99
  },
72
100
  // GPT-4.5
@@ -127,6 +155,7 @@ const MODEL_TABLE = {
127
155
  provider: 'openai',
128
156
  features: {
129
157
  json: true,
158
+ reasoning: true,
130
159
  },
131
160
  },
132
161
  'o3-pro': {
@@ -135,6 +164,7 @@ const MODEL_TABLE = {
135
164
  provider: 'openai',
136
165
  features: {
137
166
  json: true,
167
+ reasoning: true,
138
168
  },
139
169
  },
140
170
  'o3': {
@@ -143,6 +173,7 @@ const MODEL_TABLE = {
143
173
  provider: 'openai',
144
174
  features: {
145
175
  json: true,
176
+ reasoning: true,
146
177
  },
147
178
  },
148
179
  'o3-mini': {
@@ -151,6 +182,7 @@ const MODEL_TABLE = {
151
182
  provider: 'openai',
152
183
  features: {
153
184
  json: true,
185
+ reasoning: true,
154
186
  },
155
187
  },
156
188
  'o1-pro': {
@@ -159,6 +191,7 @@ const MODEL_TABLE = {
159
191
  provider: 'openai',
160
192
  features: {
161
193
  json: true,
194
+ reasoning: true,
162
195
  },
163
196
  },
164
197
  'o1': {
@@ -167,6 +200,7 @@ const MODEL_TABLE = {
167
200
  provider: 'openai',
168
201
  features: {
169
202
  json: true,
203
+ reasoning: true,
170
204
  },
171
205
  },
172
206
  'o1-preview': {
@@ -175,6 +209,7 @@ const MODEL_TABLE = {
175
209
  provider: 'openai',
176
210
  features: {
177
211
  json: true,
212
+ reasoning: true,
178
213
  },
179
214
  },
180
215
  'o1-mini': {
@@ -183,6 +218,7 @@ const MODEL_TABLE = {
183
218
  provider: 'openai',
184
219
  features: {
185
220
  json: true,
221
+ reasoning: true,
186
222
  },
187
223
  },
188
224
  'gpt-4-turbo': {
@@ -794,13 +830,18 @@ function makeRequest(mode, options, self, prompt, message, user, _log) {
794
830
  user: user,
795
831
  max_output_tokens: options.maxTokens,
796
832
  text: resolveFormatting(options),
797
- reasoning: resolveReasoning(options),
798
833
  }
799
834
 
800
835
  // Only include temperature if the model supports it
801
836
  if (modelConfig.features?.temperature !== false) {
802
837
  request.body.temperature = options.temperature;
803
838
  }
839
+
840
+ // Only include reasoning if the model supports it
841
+ const reasoning = resolveReasoning(options);
842
+ if (reasoning) {
843
+ request.body.reasoning = reasoning;
844
+ }
804
845
  }
805
846
 
806
847
  // Request
@@ -861,16 +902,22 @@ function resolveFormatting(options) {
861
902
  }
862
903
 
863
904
  function resolveReasoning(options) {
864
- // If reasoning is set, return reasoning format
865
- if (options.reasoning) {
866
- return {
867
- effort: options.reasoning.effort || 'medium',
868
- // summary: options.reasoning.summary || 'concise',
869
- };
905
+ // If reasoning is not requested, return undefined
906
+ if (!options.reasoning) {
907
+ return undefined;
870
908
  }
871
909
 
872
- // Other, return undefined
873
- return undefined;
910
+ // Check if the model supports reasoning
911
+ const modelConfig = getModelConfig(options.model);
912
+ if (!modelConfig.features?.reasoning) {
913
+ console.warn(`Reasoning not supported for model: ${options.model}, ignoring reasoning option`);
914
+ return undefined;
915
+ }
916
+
917
+ return {
918
+ effort: options.reasoning.effort || 'medium',
919
+ // summary: options.reasoning.summary || 'concise',
920
+ };
874
921
  }
875
922
 
876
923
  module.exports = OpenAI;