@jsonstudio/rcc 0.89.552 → 0.89.611

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 (70) hide show
  1. package/dist/build-info.js +2 -2
  2. package/dist/modules/llmswitch/bridge.d.ts +43 -0
  3. package/dist/modules/llmswitch/bridge.js +103 -0
  4. package/dist/modules/llmswitch/bridge.js.map +1 -1
  5. package/dist/monitoring/semantic-config-loader.js +3 -1
  6. package/dist/monitoring/semantic-config-loader.js.map +1 -1
  7. package/dist/providers/core/runtime/http-transport-provider.d.ts +3 -0
  8. package/dist/providers/core/runtime/http-transport-provider.js +70 -4
  9. package/dist/providers/core/runtime/http-transport-provider.js.map +1 -1
  10. package/dist/providers/core/runtime/responses-provider.d.ts +2 -2
  11. package/dist/providers/core/runtime/responses-provider.js +33 -28
  12. package/dist/providers/core/runtime/responses-provider.js.map +1 -1
  13. package/dist/providers/core/utils/provider-error-reporter.js +7 -7
  14. package/dist/providers/core/utils/provider-error-reporter.js.map +1 -1
  15. package/dist/providers/core/utils/snapshot-writer.js +6 -2
  16. package/dist/providers/core/utils/snapshot-writer.js.map +1 -1
  17. package/dist/server/runtime/http-server/index.js +59 -47
  18. package/dist/server/runtime/http-server/index.js.map +1 -1
  19. package/dist/server/runtime/http-server/llmswitch-loader.d.ts +0 -1
  20. package/dist/server/runtime/http-server/llmswitch-loader.js +17 -21
  21. package/dist/server/runtime/http-server/llmswitch-loader.js.map +1 -1
  22. package/dist/server/runtime/http-server/request-executor.d.ts +6 -0
  23. package/dist/server/runtime/http-server/request-executor.js +113 -37
  24. package/dist/server/runtime/http-server/request-executor.js.map +1 -1
  25. package/node_modules/@jsonstudio/llms/dist/conversion/codecs/gemini-openai-codec.js +15 -1
  26. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/iflow-web-search.d.ts +18 -0
  27. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/iflow-web-search.js +87 -0
  28. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-gemini.json +14 -15
  29. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-glm.json +194 -190
  30. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-iflow.json +199 -195
  31. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-lmstudio.json +43 -43
  32. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-qwen.json +20 -20
  33. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/responses-c4m.json +42 -42
  34. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-pipeline-executor.js +6 -0
  35. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-types.d.ts +2 -0
  36. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline.js +5 -1
  37. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/session-identifiers.d.ts +9 -0
  38. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/session-identifiers.js +76 -0
  39. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage1_sse_decode/index.js +31 -2
  40. package/node_modules/@jsonstudio/llms/dist/conversion/hub/process/chat-process.js +89 -25
  41. package/node_modules/@jsonstudio/llms/dist/conversion/responses/responses-openai-bridge.js +75 -4
  42. package/node_modules/@jsonstudio/llms/dist/conversion/shared/anthropic-message-utils.js +41 -6
  43. package/node_modules/@jsonstudio/llms/dist/conversion/shared/errors.d.ts +20 -0
  44. package/node_modules/@jsonstudio/llms/dist/conversion/shared/errors.js +28 -0
  45. package/node_modules/@jsonstudio/llms/dist/conversion/shared/responses-conversation-store.js +30 -3
  46. package/node_modules/@jsonstudio/llms/dist/conversion/shared/responses-output-builder.js +68 -6
  47. package/node_modules/@jsonstudio/llms/dist/filters/special/request-toolcalls-stringify.d.ts +13 -0
  48. package/node_modules/@jsonstudio/llms/dist/filters/special/request-toolcalls-stringify.js +103 -3
  49. package/node_modules/@jsonstudio/llms/dist/filters/special/response-tool-text-canonicalize.d.ts +16 -0
  50. package/node_modules/@jsonstudio/llms/dist/filters/special/response-tool-text-canonicalize.js +27 -3
  51. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/classifier.js +4 -2
  52. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine.d.ts +30 -0
  53. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine.js +618 -42
  54. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/health-manager.d.ts +23 -0
  55. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/health-manager.js +14 -0
  56. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/provider-registry.d.ts +15 -0
  57. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/provider-registry.js +40 -0
  58. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/routing-instructions.d.ts +34 -0
  59. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/routing-instructions.js +393 -0
  60. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/sticky-session-store.d.ts +3 -0
  61. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/sticky-session-store.js +110 -0
  62. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/tool-signals.js +0 -22
  63. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/types.d.ts +41 -0
  64. package/node_modules/@jsonstudio/llms/dist/servertool/engine.js +42 -1
  65. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/web-search.js +157 -4
  66. package/node_modules/@jsonstudio/llms/dist/servertool/types.d.ts +6 -0
  67. package/node_modules/@jsonstudio/llms/package.json +1 -1
  68. package/package.json +8 -5
  69. package/scripts/mock-provider/run-regressions.mjs +38 -2
  70. package/scripts/verify-apply-patch.mjs +132 -0
@@ -1,204 +1,208 @@
1
1
  {
2
- "id": "chat:iflow",
3
- "protocol": "openai-chat",
4
- "request": {
5
- "mappings": [
6
- { "action": "snapshot", "phase": "compat-pre" },
7
- { "action": "dto_unwrap" },
8
- {
9
- "action": "remove",
10
- "path": "metadata.toolCallIdStyle"
11
- },
12
- {
13
- "action": "remove",
14
- "path": "metadata.clientModelId"
15
- },
16
- {
17
- "action": "remove",
18
- "path": "metadata.providerHint"
19
- },
20
- {
21
- "action": "shape_filter",
22
- "target": "request",
23
- "config": {
24
- "request": {
25
- "allowTopLevel": [
26
- "model",
27
- "messages",
28
- "stream",
29
- "thinking",
30
- "do_sample",
31
- "temperature",
32
- "top_p",
33
- "max_tokens",
34
- "tools",
35
- "tool_choice",
36
- "stop",
37
- "response_format"
38
- ],
39
- "messages": {
40
- "allowedRoles": ["system", "user", "assistant", "tool"],
41
- "assistantWithToolCallsContentNull": true,
42
- "toolContentStringify": false
2
+ "id": "chat:iflow",
3
+ "protocol": "openai-chat",
4
+ "request": {
5
+ "mappings": [
6
+ { "action": "snapshot", "phase": "compat-pre" },
7
+ { "action": "dto_unwrap" },
8
+ {
9
+ "action": "remove",
10
+ "path": "metadata.toolCallIdStyle"
43
11
  },
44
- "messagesRules": [],
45
- "tools": {
46
- "normalize": false,
47
- "forceToolChoiceAuto": true
12
+ {
13
+ "action": "remove",
14
+ "path": "metadata.clientModelId"
48
15
  },
49
- "assistantToolCalls": { "functionArgumentsType": "string" }
50
- },
51
- "response": {
52
- "allowTopLevel": [
53
- "id",
54
- "request_id",
55
- "created",
56
- "model",
57
- "choices",
58
- "usage",
59
- "video_result",
60
- "web_search",
61
- "content_filter",
62
- "required_action",
63
- "output",
64
- "output_text",
65
- "status"
66
- ],
67
- "choices": {
68
- "required": true,
69
- "message": {
70
- "allow": ["role", "content", "reasoning_content", "audio", "tool_calls"],
71
- "roleDefault": "assistant",
72
- "contentNullWhenToolCalls": true,
73
- "tool_calls": { "function": { "nameRequired": true, "argumentsType": "string" } }
74
- },
75
- "finish_reason": ["stop", "tool_calls", "length", "sensitive", "network_error"]
16
+ {
17
+ "action": "remove",
18
+ "path": "metadata.providerHint"
76
19
  },
77
- "usage": {
78
- "allow": ["prompt_tokens", "completion_tokens", "prompt_tokens_details", "total_tokens"]
79
- }
80
- }
81
- }
82
- },
83
- {
84
- "action": "field_map",
85
- "direction": "incoming",
86
- "config": [
87
- { "sourcePath": "usage.prompt_tokens", "targetPath": "usage.input_tokens", "type": "number" },
88
- { "sourcePath": "usage.completion_tokens", "targetPath": "usage.output_tokens", "type": "number" },
89
- { "sourcePath": "created", "targetPath": "created_at", "type": "number" },
90
- { "sourcePath": "request_id", "targetPath": "request_id", "type": "string" },
91
- {
92
- "sourcePath": "model",
93
- "targetPath": "model",
94
- "type": "string",
95
- "transform": "normalizeModelName"
96
- },
97
- {
98
- "sourcePath": "choices[*].message.tool_calls[*].function.arguments",
99
- "targetPath": "choices[*].message.tool_calls[*].function.arguments",
100
- "type": "string"
101
- }
102
- ]
103
- },
104
- { "action": "tool_schema_sanitize", "mode": "glm_shell" },
105
- { "action": "snapshot", "phase": "compat-post" },
106
- { "action": "dto_rewrap" }
107
- ]
108
- },
109
- "response": {
110
- "mappings": [
111
- { "action": "snapshot", "phase": "compat-pre" },
112
- { "action": "dto_unwrap" },
113
- {
114
- "action": "shape_filter",
115
- "target": "response",
116
- "config": {
117
- "request": {
118
- "allowTopLevel": [
119
- "model",
120
- "messages",
121
- "stream",
122
- "thinking",
123
- "do_sample",
124
- "temperature",
125
- "top_p",
126
- "max_tokens",
127
- "tools",
128
- "tool_choice",
129
- "stop",
130
- "response_format"
131
- ],
132
- "messages": {
133
- "allowedRoles": ["system", "user", "assistant", "tool"],
134
- "assistantWithToolCallsContentNull": true,
135
- "toolContentStringify": false
20
+ {
21
+ "action": "shape_filter",
22
+ "target": "request",
23
+ "config": {
24
+ "request": {
25
+ "allowTopLevel": [
26
+ "model",
27
+ "messages",
28
+ "stream",
29
+ "thinking",
30
+ "do_sample",
31
+ "temperature",
32
+ "top_p",
33
+ "max_tokens",
34
+ "tools",
35
+ "tool_choice",
36
+ "stop",
37
+ "response_format",
38
+ "web_search"
39
+ ],
40
+ "messages": {
41
+ "allowedRoles": ["system", "user", "assistant", "tool"],
42
+ "assistantWithToolCallsContentNull": true,
43
+ "toolContentStringify": false
44
+ },
45
+ "messagesRules": [],
46
+ "tools": {
47
+ "normalize": false,
48
+ "forceToolChoiceAuto": true
49
+ },
50
+ "assistantToolCalls": { "functionArgumentsType": "string" }
51
+ },
52
+ "response": {
53
+ "allowTopLevel": [
54
+ "id",
55
+ "request_id",
56
+ "created",
57
+ "model",
58
+ "choices",
59
+ "usage",
60
+ "video_result",
61
+ "web_search",
62
+ "content_filter",
63
+ "required_action",
64
+ "output",
65
+ "output_text",
66
+ "status"
67
+ ],
68
+ "choices": {
69
+ "required": true,
70
+ "message": {
71
+ "allow": ["role", "content", "reasoning_content", "audio", "tool_calls"],
72
+ "roleDefault": "assistant",
73
+ "contentNullWhenToolCalls": true,
74
+ "tool_calls": { "function": { "nameRequired": true, "argumentsType": "string" } }
75
+ },
76
+ "finish_reason": ["stop", "tool_calls", "length", "sensitive", "network_error"]
77
+ },
78
+ "usage": {
79
+ "allow": ["prompt_tokens", "completion_tokens", "prompt_tokens_details", "total_tokens"]
80
+ }
81
+ }
82
+ }
83
+ },
84
+ {
85
+ "action": "field_map",
86
+ "direction": "incoming",
87
+ "config": [
88
+ { "sourcePath": "usage.prompt_tokens", "targetPath": "usage.input_tokens", "type": "number" },
89
+ { "sourcePath": "usage.completion_tokens", "targetPath": "usage.output_tokens", "type": "number" },
90
+ { "sourcePath": "created", "targetPath": "created_at", "type": "number" },
91
+ { "sourcePath": "request_id", "targetPath": "request_id", "type": "string" },
92
+ {
93
+ "sourcePath": "model",
94
+ "targetPath": "model",
95
+ "type": "string",
96
+ "transform": "normalizeModelName"
97
+ },
98
+ {
99
+ "sourcePath": "choices[*].message.tool_calls[*].function.arguments",
100
+ "targetPath": "choices[*].message.tool_calls[*].function.arguments",
101
+ "type": "string"
102
+ }
103
+ ]
136
104
  },
137
- "messagesRules": [],
138
- "tools": {
139
- "normalize": false,
140
- "forceToolChoiceAuto": true
105
+ { "action": "tool_schema_sanitize", "mode": "glm_shell" },
106
+ {
107
+ "action": "iflow_web_search_request"
108
+ },
109
+ { "action": "snapshot", "phase": "compat-post" },
110
+ { "action": "dto_rewrap" }
111
+ ]
112
+ },
113
+ "response": {
114
+ "mappings": [
115
+ { "action": "snapshot", "phase": "compat-pre" },
116
+ { "action": "dto_unwrap" },
117
+ {
118
+ "action": "shape_filter",
119
+ "target": "response",
120
+ "config": {
121
+ "request": {
122
+ "allowTopLevel": [
123
+ "model",
124
+ "messages",
125
+ "stream",
126
+ "thinking",
127
+ "do_sample",
128
+ "temperature",
129
+ "top_p",
130
+ "max_tokens",
131
+ "tools",
132
+ "tool_choice",
133
+ "stop",
134
+ "response_format"
135
+ ],
136
+ "messages": {
137
+ "allowedRoles": ["system", "user", "assistant", "tool"],
138
+ "assistantWithToolCallsContentNull": true,
139
+ "toolContentStringify": false
140
+ },
141
+ "messagesRules": [],
142
+ "tools": {
143
+ "normalize": false,
144
+ "forceToolChoiceAuto": true
145
+ },
146
+ "assistantToolCalls": { "functionArgumentsType": "string" }
147
+ },
148
+ "response": {
149
+ "allowTopLevel": [
150
+ "id",
151
+ "request_id",
152
+ "created",
153
+ "model",
154
+ "choices",
155
+ "usage",
156
+ "video_result",
157
+ "web_search",
158
+ "content_filter",
159
+ "required_action",
160
+ "output",
161
+ "output_text",
162
+ "status"
163
+ ],
164
+ "choices": {
165
+ "required": true,
166
+ "message": {
167
+ "allow": ["role", "content", "reasoning_content", "audio", "tool_calls"],
168
+ "roleDefault": "assistant",
169
+ "contentNullWhenToolCalls": true,
170
+ "tool_calls": { "function": { "nameRequired": true, "argumentsType": "string" } }
171
+ },
172
+ "finish_reason": ["stop", "tool_calls", "length", "sensitive", "network_error"]
173
+ },
174
+ "usage": {
175
+ "allow": ["prompt_tokens", "completion_tokens", "prompt_tokens_details", "total_tokens"]
176
+ }
177
+ }
178
+ }
141
179
  },
142
- "assistantToolCalls": { "functionArgumentsType": "string" }
143
- },
144
- "response": {
145
- "allowTopLevel": [
146
- "id",
147
- "request_id",
148
- "created",
149
- "model",
150
- "choices",
151
- "usage",
152
- "video_result",
153
- "web_search",
154
- "content_filter",
155
- "required_action",
156
- "output",
157
- "output_text",
158
- "status"
159
- ],
160
- "choices": {
161
- "required": true,
162
- "message": {
163
- "allow": ["role", "content", "reasoning_content", "audio", "tool_calls"],
164
- "roleDefault": "assistant",
165
- "contentNullWhenToolCalls": true,
166
- "tool_calls": { "function": { "nameRequired": true, "argumentsType": "string" } }
167
- },
168
- "finish_reason": ["stop", "tool_calls", "length", "sensitive", "network_error"]
180
+ {
181
+ "action": "field_map",
182
+ "direction": "outgoing",
183
+ "config": [
184
+ { "sourcePath": "usage.input_tokens", "targetPath": "usage.prompt_tokens", "type": "number" },
185
+ { "sourcePath": "usage.output_tokens", "targetPath": "usage.completion_tokens", "type": "number" },
186
+ { "sourcePath": "usage.total_input_tokens", "targetPath": "usage.prompt_tokens", "type": "number" },
187
+ { "sourcePath": "usage.total_output_tokens", "targetPath": "usage.completion_tokens", "type": "number" },
188
+ { "sourcePath": "created_at", "targetPath": "created", "type": "number" },
189
+ { "sourcePath": "request_id", "targetPath": "request_id", "type": "string" },
190
+ {
191
+ "sourcePath": "choices[*].finish_reason",
192
+ "targetPath": "choices[*].finish_reason",
193
+ "type": "string",
194
+ "transform": "normalizeFinishReason"
195
+ },
196
+ {
197
+ "sourcePath": "choices[*].message.tool_calls[*].function.arguments",
198
+ "targetPath": "choices[*].message.tool_calls[*].function.arguments",
199
+ "type": "string"
200
+ }
201
+ ]
169
202
  },
170
- "usage": {
171
- "allow": ["prompt_tokens", "completion_tokens", "prompt_tokens_details", "total_tokens"]
172
- }
173
- }
174
- }
175
- },
176
- {
177
- "action": "field_map",
178
- "direction": "outgoing",
179
- "config": [
180
- { "sourcePath": "usage.input_tokens", "targetPath": "usage.prompt_tokens", "type": "number" },
181
- { "sourcePath": "usage.output_tokens", "targetPath": "usage.completion_tokens", "type": "number" },
182
- { "sourcePath": "usage.total_input_tokens", "targetPath": "usage.prompt_tokens", "type": "number" },
183
- { "sourcePath": "usage.total_output_tokens", "targetPath": "usage.completion_tokens", "type": "number" },
184
- { "sourcePath": "created_at", "targetPath": "created", "type": "number" },
185
- { "sourcePath": "request_id", "targetPath": "request_id", "type": "string" },
186
- {
187
- "sourcePath": "choices[*].finish_reason",
188
- "targetPath": "choices[*].finish_reason",
189
- "type": "string",
190
- "transform": "normalizeFinishReason"
191
- },
192
- {
193
- "sourcePath": "choices[*].message.tool_calls[*].function.arguments",
194
- "targetPath": "choices[*].message.tool_calls[*].function.arguments",
195
- "type": "string"
196
- }
203
+ { "action": "tool_schema_sanitize", "mode": "glm_shell" },
204
+ { "action": "snapshot", "phase": "compat-post" },
205
+ { "action": "dto_rewrap" }
197
206
  ]
198
- },
199
- { "action": "tool_schema_sanitize", "mode": "glm_shell" },
200
- { "action": "snapshot", "phase": "compat-post" },
201
- { "action": "dto_rewrap" }
202
- ]
203
- }
207
+ }
204
208
  }
@@ -1,45 +1,45 @@
1
1
  {
2
- "id": "chat:lmstudio",
3
- "protocol": "openai-chat",
4
- "request": {
5
- "mappings": [
6
- { "action": "snapshot", "phase": "compat-pre" },
7
- { "action": "dto_unwrap" },
8
- {
9
- "action": "normalize_tool_choice",
10
- "path": "tool_choice",
11
- "objectReplacement": "required"
12
- },
13
- { "action": "snapshot", "phase": "compat-post" },
14
- { "action": "dto_rewrap" }
15
- ]
16
- },
17
- "response": {
18
- "mappings": [
19
- { "action": "snapshot", "phase": "compat-pre" },
20
- { "action": "dto_unwrap" },
21
- {
22
- "action": "set_default",
23
- "path": "object",
24
- "value": "chat.completion"
25
- },
26
- {
27
- "action": "set_default",
28
- "path": "id",
29
- "valueSource": "chat_completion_id"
30
- },
31
- {
32
- "action": "set_default",
33
- "path": "created",
34
- "valueSource": "timestamp_seconds"
35
- },
36
- {
37
- "action": "set_default",
38
- "path": "model",
39
- "value": "unknown"
40
- },
41
- { "action": "snapshot", "phase": "compat-post" },
42
- { "action": "dto_rewrap" }
43
- ]
44
- }
2
+ "id": "chat:lmstudio",
3
+ "protocol": "openai-chat",
4
+ "request": {
5
+ "mappings": [
6
+ { "action": "snapshot", "phase": "compat-pre" },
7
+ { "action": "dto_unwrap" },
8
+ {
9
+ "action": "normalize_tool_choice",
10
+ "path": "tool_choice",
11
+ "objectReplacement": "required"
12
+ },
13
+ { "action": "snapshot", "phase": "compat-post" },
14
+ { "action": "dto_rewrap" }
15
+ ]
16
+ },
17
+ "response": {
18
+ "mappings": [
19
+ { "action": "snapshot", "phase": "compat-pre" },
20
+ { "action": "dto_unwrap" },
21
+ {
22
+ "action": "set_default",
23
+ "path": "object",
24
+ "value": "chat.completion"
25
+ },
26
+ {
27
+ "action": "set_default",
28
+ "path": "id",
29
+ "valueSource": "chat_completion_id"
30
+ },
31
+ {
32
+ "action": "set_default",
33
+ "path": "created",
34
+ "valueSource": "timestamp_seconds"
35
+ },
36
+ {
37
+ "action": "set_default",
38
+ "path": "model",
39
+ "value": "unknown"
40
+ },
41
+ { "action": "snapshot", "phase": "compat-post" },
42
+ { "action": "dto_rewrap" }
43
+ ]
44
+ }
45
45
  }
@@ -1,22 +1,22 @@
1
1
  {
2
- "id": "chat:qwen",
3
- "protocol": "openai-chat",
4
- "request": {
5
- "mappings": [
6
- { "action": "snapshot", "phase": "compat-pre" },
7
- { "action": "dto_unwrap" },
8
- { "action": "qwen_request_transform" },
9
- { "action": "snapshot", "phase": "compat-post" },
10
- { "action": "dto_rewrap" }
11
- ]
12
- },
13
- "response": {
14
- "mappings": [
15
- { "action": "snapshot", "phase": "compat-pre" },
16
- { "action": "dto_unwrap" },
17
- { "action": "qwen_response_transform" },
18
- { "action": "snapshot", "phase": "compat-post" },
19
- { "action": "dto_rewrap" }
20
- ]
21
- }
2
+ "id": "chat:qwen",
3
+ "protocol": "openai-chat",
4
+ "request": {
5
+ "mappings": [
6
+ { "action": "snapshot", "phase": "compat-pre" },
7
+ { "action": "dto_unwrap" },
8
+ { "action": "qwen_request_transform" },
9
+ { "action": "snapshot", "phase": "compat-post" },
10
+ { "action": "dto_rewrap" }
11
+ ]
12
+ },
13
+ "response": {
14
+ "mappings": [
15
+ { "action": "snapshot", "phase": "compat-pre" },
16
+ { "action": "dto_unwrap" },
17
+ { "action": "qwen_response_transform" },
18
+ { "action": "snapshot", "phase": "compat-post" },
19
+ { "action": "dto_rewrap" }
20
+ ]
21
+ }
22
22
  }
@@ -1,45 +1,45 @@
1
1
  {
2
- "id": "responses:c4m",
3
- "protocol": "openai-responses",
4
- "request": {
5
- "mappings": [
6
- {
7
- "action": "remove",
8
- "path": "max_tokens"
9
- },
10
- {
11
- "action": "remove",
12
- "path": "maxTokens"
13
- },
14
- {
15
- "action": "remove",
16
- "path": "max_output_tokens"
17
- },
18
- {
19
- "action": "remove",
20
- "path": "maxOutputTokens"
21
- },
22
- {
23
- "action": "inject_instruction",
24
- "sourcePath": "instructions",
25
- "targetPath": "input",
26
- "role": "system",
27
- "contentType": "input_text",
28
- "stripHtml": true,
29
- "maxLengthEnv": [
30
- "ROUTECODEX_C4M_INSTRUCTIONS_MAX",
31
- "RCC_C4M_INSTRUCTIONS_MAX",
32
- "ROUTECODEX_COMPAT_INSTRUCTIONS_MAX"
2
+ "id": "responses:c4m",
3
+ "protocol": "openai-responses",
4
+ "request": {
5
+ "mappings": [
6
+ {
7
+ "action": "remove",
8
+ "path": "max_tokens"
9
+ },
10
+ {
11
+ "action": "remove",
12
+ "path": "maxTokens"
13
+ },
14
+ {
15
+ "action": "remove",
16
+ "path": "max_output_tokens"
17
+ },
18
+ {
19
+ "action": "remove",
20
+ "path": "maxOutputTokens"
21
+ },
22
+ {
23
+ "action": "inject_instruction",
24
+ "sourcePath": "instructions",
25
+ "targetPath": "input",
26
+ "role": "system",
27
+ "contentType": "input_text",
28
+ "stripHtml": true,
29
+ "maxLengthEnv": [
30
+ "ROUTECODEX_C4M_INSTRUCTIONS_MAX",
31
+ "RCC_C4M_INSTRUCTIONS_MAX",
32
+ "ROUTECODEX_COMPAT_INSTRUCTIONS_MAX"
33
+ ]
34
+ }
33
35
  ]
34
- }
35
- ]
36
- },
37
- "response": {
38
- "filters": [
39
- {
40
- "action": "rate_limit_text",
41
- "needle": "The Codex-For.ME service is available, but you have reached the request limit"
42
- }
43
- ]
44
- }
36
+ },
37
+ "response": {
38
+ "filters": [
39
+ {
40
+ "action": "rate_limit_text",
41
+ "needle": "The Codex-For.ME service is available, but you have reached the request limit"
42
+ }
43
+ ]
44
+ }
45
45
  }