@jsonstudio/rcc 0.89.333 → 0.89.548

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 (191) hide show
  1. package/dist/build-info.js +3 -3
  2. package/dist/build-info.js.map +1 -1
  3. package/dist/cli.js +110 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/token-daemon.d.ts +2 -0
  6. package/dist/commands/token-daemon.js +183 -0
  7. package/dist/commands/token-daemon.js.map +1 -0
  8. package/dist/index.js +20 -3
  9. package/dist/index.js.map +1 -1
  10. package/dist/modules/llmswitch/bridge.d.ts +1 -1
  11. package/dist/modules/llmswitch/bridge.js +3 -2
  12. package/dist/modules/llmswitch/bridge.js.map +1 -1
  13. package/dist/modules/pipeline/utils/colored-logger.js +3 -1
  14. package/dist/modules/pipeline/utils/colored-logger.js.map +1 -1
  15. package/dist/providers/auth/gemini-cli-userinfo-helper.js +12 -2
  16. package/dist/providers/auth/gemini-cli-userinfo-helper.js.map +1 -1
  17. package/dist/providers/auth/oauth-lifecycle.js +337 -25
  18. package/dist/providers/auth/oauth-lifecycle.js.map +1 -1
  19. package/dist/providers/core/config/oauth-flows.d.ts +23 -0
  20. package/dist/providers/core/config/oauth-flows.js +92 -5
  21. package/dist/providers/core/config/oauth-flows.js.map +1 -1
  22. package/dist/providers/core/config/provider-oauth-configs.js +9 -3
  23. package/dist/providers/core/config/provider-oauth-configs.js.map +1 -1
  24. package/dist/providers/core/config/service-profiles.js +18 -10
  25. package/dist/providers/core/config/service-profiles.js.map +1 -1
  26. package/dist/providers/core/runtime/base-provider.d.ts +2 -0
  27. package/dist/providers/core/runtime/base-provider.js +35 -1
  28. package/dist/providers/core/runtime/base-provider.js.map +1 -1
  29. package/dist/providers/core/runtime/gemini-cli-http-provider.js +87 -20
  30. package/dist/providers/core/runtime/gemini-cli-http-provider.js.map +1 -1
  31. package/dist/providers/core/runtime/http-request-executor.d.ts +1 -0
  32. package/dist/providers/core/runtime/http-request-executor.js +75 -1
  33. package/dist/providers/core/runtime/http-request-executor.js.map +1 -1
  34. package/dist/providers/core/runtime/http-transport-provider.d.ts +2 -0
  35. package/dist/providers/core/runtime/http-transport-provider.js +60 -2
  36. package/dist/providers/core/runtime/http-transport-provider.js.map +1 -1
  37. package/dist/providers/core/runtime/iflow-http-provider.d.ts +4 -0
  38. package/dist/providers/core/runtime/iflow-http-provider.js +28 -0
  39. package/dist/providers/core/runtime/iflow-http-provider.js.map +1 -1
  40. package/dist/providers/core/runtime/rate-limit-manager.d.ts +30 -0
  41. package/dist/providers/core/runtime/rate-limit-manager.js +136 -0
  42. package/dist/providers/core/runtime/rate-limit-manager.js.map +1 -0
  43. package/dist/providers/core/runtime/responses-provider.js +8 -3
  44. package/dist/providers/core/runtime/responses-provider.js.map +1 -1
  45. package/dist/providers/core/runtime/vision-debug-utils.d.ts +13 -0
  46. package/dist/providers/core/runtime/vision-debug-utils.js +114 -0
  47. package/dist/providers/core/runtime/vision-debug-utils.js.map +1 -0
  48. package/dist/providers/core/strategies/oauth-auth-code-flow.js +75 -26
  49. package/dist/providers/core/strategies/oauth-auth-code-flow.js.map +1 -1
  50. package/dist/providers/core/utils/http-client.js +2 -1
  51. package/dist/providers/core/utils/http-client.js.map +1 -1
  52. package/dist/providers/core/utils/provider-error-reporter.js +31 -5
  53. package/dist/providers/core/utils/provider-error-reporter.js.map +1 -1
  54. package/dist/providers/core/utils/provider-type-utils.js +1 -1
  55. package/dist/providers/core/utils/provider-type-utils.js.map +1 -1
  56. package/dist/providers/core/utils/snapshot-writer.d.ts +1 -1
  57. package/dist/providers/core/utils/snapshot-writer.js.map +1 -1
  58. package/dist/server/handlers/sse-dispatcher.js +22 -2
  59. package/dist/server/handlers/sse-dispatcher.js.map +1 -1
  60. package/dist/server/runtime/http-server/index.d.ts +9 -0
  61. package/dist/server/runtime/http-server/index.js +512 -144
  62. package/dist/server/runtime/http-server/index.js.map +1 -1
  63. package/dist/server/runtime/http-server/provider-utils.js +1 -1
  64. package/dist/server/runtime/http-server/provider-utils.js.map +1 -1
  65. package/dist/server/runtime/http-server/request-executor.d.ts +10 -0
  66. package/dist/server/runtime/http-server/request-executor.js +553 -159
  67. package/dist/server/runtime/http-server/request-executor.js.map +1 -1
  68. package/dist/server/runtime/http-server/routes.d.ts +5 -0
  69. package/dist/server/runtime/http-server/routes.js +29 -0
  70. package/dist/server/runtime/http-server/routes.js.map +1 -1
  71. package/dist/server/runtime/http-server/runtime-manager.js +33 -0
  72. package/dist/server/runtime/http-server/runtime-manager.js.map +1 -1
  73. package/dist/server/utils/utf8-chunk-buffer.d.ts +43 -0
  74. package/dist/server/utils/utf8-chunk-buffer.js +132 -0
  75. package/dist/server/utils/utf8-chunk-buffer.js.map +1 -0
  76. package/dist/token-daemon/history-store.d.ts +75 -0
  77. package/dist/token-daemon/history-store.js +207 -0
  78. package/dist/token-daemon/history-store.js.map +1 -0
  79. package/dist/token-daemon/index.d.ts +7 -0
  80. package/dist/token-daemon/index.js +336 -0
  81. package/dist/token-daemon/index.js.map +1 -0
  82. package/dist/token-daemon/server-utils.d.ts +33 -0
  83. package/dist/token-daemon/server-utils.js +155 -0
  84. package/dist/token-daemon/server-utils.js.map +1 -0
  85. package/dist/token-daemon/token-daemon.d.ts +23 -0
  86. package/dist/token-daemon/token-daemon.js +249 -0
  87. package/dist/token-daemon/token-daemon.js.map +1 -0
  88. package/dist/token-daemon/token-types.d.ts +44 -0
  89. package/dist/token-daemon/token-types.js +18 -0
  90. package/dist/token-daemon/token-types.js.map +1 -0
  91. package/dist/token-daemon/token-utils.d.ts +17 -0
  92. package/dist/token-daemon/token-utils.js +153 -0
  93. package/dist/token-daemon/token-utils.js.map +1 -0
  94. package/dist/token-portal/local-token-portal.d.ts +1 -0
  95. package/dist/token-portal/local-token-portal.js +89 -0
  96. package/dist/token-portal/local-token-portal.js.map +1 -0
  97. package/dist/token-portal/render.d.ts +10 -0
  98. package/dist/token-portal/render.js +56 -0
  99. package/dist/token-portal/render.js.map +1 -0
  100. package/dist/tools/semantic-replay.js +7 -6
  101. package/dist/tools/semantic-replay.js.map +1 -1
  102. package/dist/utils/error-handler-registry.d.ts +36 -0
  103. package/dist/utils/error-handler-registry.js +93 -7
  104. package/dist/utils/error-handler-registry.js.map +1 -1
  105. package/node_modules/@jsonstudio/llms/README.md +2 -0
  106. package/node_modules/@jsonstudio/llms/dist/conversion/codecs/gemini-openai-codec.js +137 -5
  107. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/gemini-web-search.d.ts +17 -0
  108. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/gemini-web-search.js +68 -0
  109. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-image-content.d.ts +2 -0
  110. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-image-content.js +83 -0
  111. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-vision-prompt.d.ts +11 -0
  112. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-vision-prompt.js +177 -0
  113. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-web-search.d.ts +2 -0
  114. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-web-search.js +63 -0
  115. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/universal-shape-filter.js +11 -0
  116. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-gemini.json +17 -0
  117. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-glm.json +190 -181
  118. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-iflow.json +195 -195
  119. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-lmstudio.json +43 -43
  120. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-qwen.json +20 -20
  121. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/responses-c4m.json +42 -42
  122. package/node_modules/@jsonstudio/llms/dist/conversion/config/sample-config.json +1 -1
  123. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-pipeline-executor.js +24 -0
  124. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-types.d.ts +8 -0
  125. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline.js +39 -4
  126. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/target-utils.js +6 -0
  127. package/node_modules/@jsonstudio/llms/dist/conversion/hub/process/chat-process.js +213 -1
  128. package/node_modules/@jsonstudio/llms/dist/conversion/hub/response/provider-response.d.ts +34 -0
  129. package/node_modules/@jsonstudio/llms/dist/conversion/hub/response/provider-response.js +84 -24
  130. package/node_modules/@jsonstudio/llms/dist/conversion/hub/response/server-side-tools.d.ts +26 -0
  131. package/node_modules/@jsonstudio/llms/dist/conversion/hub/response/server-side-tools.js +383 -0
  132. package/node_modules/@jsonstudio/llms/dist/conversion/hub/semantic-mappers/gemini-mapper.js +241 -14
  133. package/node_modules/@jsonstudio/llms/dist/conversion/hub/semantic-mappers/responses-mapper.js +17 -1
  134. package/node_modules/@jsonstudio/llms/dist/conversion/hub/standardized-bridge.js +14 -0
  135. package/node_modules/@jsonstudio/llms/dist/conversion/hub/types/standardized.d.ts +1 -0
  136. package/node_modules/@jsonstudio/llms/dist/conversion/responses/responses-openai-bridge.js +82 -3
  137. package/node_modules/@jsonstudio/llms/dist/conversion/shared/anthropic-message-utils.js +92 -3
  138. package/node_modules/@jsonstudio/llms/dist/conversion/shared/bridge-message-utils.js +137 -10
  139. package/node_modules/@jsonstudio/llms/dist/conversion/shared/responses-output-builder.js +43 -2
  140. package/node_modules/@jsonstudio/llms/dist/conversion/shared/snapshot-utils.js +17 -47
  141. package/node_modules/@jsonstudio/llms/dist/conversion/shared/tool-filter-pipeline.js +1 -0
  142. package/node_modules/@jsonstudio/llms/dist/conversion/shared/tool-mapping.js +25 -2
  143. package/node_modules/@jsonstudio/llms/dist/index.d.ts +1 -0
  144. package/node_modules/@jsonstudio/llms/dist/index.js +1 -0
  145. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/bootstrap.js +308 -43
  146. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/classifier.js +11 -17
  147. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/context-advisor.d.ts +0 -2
  148. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/context-advisor.js +0 -12
  149. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine.d.ts +17 -2
  150. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine.js +332 -95
  151. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/features.js +1 -1
  152. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/message-utils.js +36 -24
  153. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/provider-registry.js +2 -1
  154. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/token-counter.js +14 -3
  155. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/types.d.ts +66 -2
  156. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/types.js +2 -1
  157. package/node_modules/@jsonstudio/llms/dist/servertool/engine.d.ts +27 -0
  158. package/node_modules/@jsonstudio/llms/dist/servertool/engine.js +60 -0
  159. package/node_modules/@jsonstudio/llms/dist/servertool/flow-types.d.ts +40 -0
  160. package/node_modules/@jsonstudio/llms/dist/servertool/flow-types.js +1 -0
  161. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/vision.d.ts +1 -0
  162. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/vision.js +194 -0
  163. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/web-search.d.ts +1 -0
  164. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/web-search.js +638 -0
  165. package/node_modules/@jsonstudio/llms/dist/servertool/orchestration-types.d.ts +33 -0
  166. package/node_modules/@jsonstudio/llms/dist/servertool/orchestration-types.js +1 -0
  167. package/node_modules/@jsonstudio/llms/dist/servertool/registry.d.ts +18 -0
  168. package/node_modules/@jsonstudio/llms/dist/servertool/registry.js +27 -0
  169. package/node_modules/@jsonstudio/llms/dist/servertool/server-side-tools.d.ts +8 -0
  170. package/node_modules/@jsonstudio/llms/dist/servertool/server-side-tools.js +208 -0
  171. package/node_modules/@jsonstudio/llms/dist/servertool/types.d.ts +88 -0
  172. package/node_modules/@jsonstudio/llms/dist/servertool/types.js +1 -0
  173. package/node_modules/@jsonstudio/llms/dist/servertool/vision-tool.d.ts +2 -0
  174. package/node_modules/@jsonstudio/llms/dist/servertool/vision-tool.js +185 -0
  175. package/node_modules/@jsonstudio/llms/dist/sse/json-to-sse/event-generators/responses.js +15 -3
  176. package/node_modules/@jsonstudio/llms/dist/sse/sse-to-json/builders/response-builder.js +6 -3
  177. package/node_modules/@jsonstudio/llms/dist/sse/sse-to-json/gemini-sse-to-json-converter.js +27 -1
  178. package/node_modules/@jsonstudio/llms/dist/sse/types/gemini-types.d.ts +20 -1
  179. package/node_modules/@jsonstudio/llms/dist/sse/types/responses-types.js +1 -1
  180. package/node_modules/@jsonstudio/llms/dist/telemetry/stats-center.d.ts +73 -0
  181. package/node_modules/@jsonstudio/llms/dist/telemetry/stats-center.js +280 -0
  182. package/node_modules/@jsonstudio/llms/package.json +1 -1
  183. package/package.json +3 -2
  184. package/scripts/pack-mode.mjs +2 -1
  185. package/scripts/publish-rcc.mjs +20 -4
  186. package/scripts/test-iflow-web-search.mjs +141 -0
  187. package/scripts/test-iflow.mjs +93 -1
  188. package/scripts/tests/virtual-router-health.mjs +141 -6
  189. package/dist/tools/replay-request.d.ts +0 -0
  190. package/dist/tools/replay-request.js +0 -2
  191. package/dist/tools/replay-request.js.map +0 -1
@@ -1,191 +1,200 @@
1
1
  {
2
- "id": "chat:glm",
3
- "protocol": "openai-chat",
4
- "request": {
5
- "mappings": [
6
- { "action": "snapshot", "phase": "compat-pre" },
7
- { "action": "dto_unwrap" },
8
- {
9
- "action": "rename",
10
- "from": "response_format",
11
- "to": "metadata.generation.response_format"
2
+ "id": "chat:glm",
3
+ "protocol": "openai-chat",
4
+ "request": {
5
+ "mappings": [
6
+ { "action": "snapshot", "phase": "compat-pre" },
7
+ { "action": "dto_unwrap" },
8
+ {
9
+ "action": "glm_image_content"
10
+ },
11
+ {
12
+ "action": "glm_vision_prompt"
13
+ },
14
+ {
15
+ "action": "rename",
16
+ "from": "response_format",
17
+ "to": "metadata.generation.response_format"
18
+ },
19
+ {
20
+ "action": "remove",
21
+ "path": "metadata.clientModelId"
22
+ },
23
+ {
24
+ "action": "shape_filter",
25
+ "target": "request",
26
+ "config": {
27
+ "request": {
28
+ "allowTopLevel": [
29
+ "model", "messages", "stream", "thinking", "do_sample", "temperature", "top_p",
30
+ "max_tokens", "tools", "tool_choice", "stop", "response_format", "web_search"
31
+ ],
32
+ "messages": {
33
+ "allowedRoles": ["system", "user", "assistant", "tool"],
34
+ "assistantWithToolCallsContentNull": true,
35
+ "toolContentStringify": false
12
36
  },
13
- {
14
- "action": "remove",
15
- "path": "metadata.clientModelId"
37
+ "messagesRules": [],
38
+ "tools": {
39
+ "normalize": false,
40
+ "forceToolChoiceAuto": true
16
41
  },
17
- {
18
- "action": "shape_filter",
19
- "target": "request",
20
- "config": {
21
- "request": {
22
- "allowTopLevel": [
23
- "model", "messages", "stream", "thinking", "do_sample", "temperature", "top_p",
24
- "max_tokens", "tools", "tool_choice", "stop", "response_format"
25
- ],
26
- "messages": {
27
- "allowedRoles": ["system", "user", "assistant", "tool"],
28
- "assistantWithToolCallsContentNull": true,
29
- "toolContentStringify": false
30
- },
31
- "messagesRules": [],
32
- "tools": {
33
- "normalize": false,
34
- "forceToolChoiceAuto": true
35
- },
36
- "assistantToolCalls": { "functionArgumentsType": "string" }
37
- },
38
- "response": {
39
- "allowTopLevel": [
40
- "id", "request_id", "created", "model",
41
- "choices", "usage", "video_result", "web_search", "content_filter",
42
- "required_action", "output", "output_text", "status"
43
- ],
44
- "choices": {
45
- "required": true,
46
- "message": {
47
- "allow": ["role", "content", "reasoning_content", "audio", "tool_calls"],
48
- "roleDefault": "assistant",
49
- "contentNullWhenToolCalls": true,
50
- "tool_calls": { "function": { "nameRequired": true, "argumentsType": "string" } }
51
- },
52
- "finish_reason": ["stop", "tool_calls", "length", "sensitive", "network_error"]
53
- },
54
- "usage": { "allow": ["prompt_tokens", "completion_tokens", "prompt_tokens_details", "total_tokens"] }
55
- }
56
- }
42
+ "assistantToolCalls": { "functionArgumentsType": "string" }
43
+ },
44
+ "response": {
45
+ "allowTopLevel": [
46
+ "id", "request_id", "created", "model",
47
+ "choices", "usage", "video_result", "web_search", "content_filter",
48
+ "required_action", "output", "output_text", "status"
49
+ ],
50
+ "choices": {
51
+ "required": true,
52
+ "message": {
53
+ "allow": ["role", "content", "reasoning_content", "audio", "tool_calls"],
54
+ "roleDefault": "assistant",
55
+ "contentNullWhenToolCalls": true,
56
+ "tool_calls": { "function": { "nameRequired": true, "argumentsType": "string" } }
57
+ },
58
+ "finish_reason": ["stop", "tool_calls", "length", "sensitive", "network_error"]
57
59
  },
58
- {
59
- "action": "apply_rules",
60
- "config": {
61
- "tools": {
62
- "function": {
63
- "removeKeys": ["strict", "json_schema"]
64
- }
65
- },
66
- "messages": {
67
- "assistantToolCalls": {
68
- "function": {
69
- "removeKeys": ["strict"]
70
- }
71
- }
72
- },
73
- "topLevel": {
74
- "conditional": [
75
- { "when": { "tools": "empty" }, "remove": ["tool_choice"] }
76
- ]
77
- }
78
- }
79
- },
80
- {
81
- "action": "field_map",
82
- "direction": "incoming",
83
- "config": [
84
- { "sourcePath": "usage.prompt_tokens", "targetPath": "usage.input_tokens", "type": "number" },
85
- { "sourcePath": "usage.completion_tokens", "targetPath": "usage.output_tokens", "type": "number" },
86
- { "sourcePath": "created", "targetPath": "created_at", "type": "number" },
87
- { "sourcePath": "request_id", "targetPath": "request_id", "type": "string" },
88
- { "sourcePath": "model", "targetPath": "model", "type": "string", "transform": "normalizeModelName" },
89
- {
90
- "sourcePath": "choices[*].message.tool_calls[*].function.arguments",
91
- "targetPath": "choices[*].message.tool_calls[*].function.arguments",
92
- "type": "string"
93
- }
94
- ]
95
- },
96
- { "action": "tool_schema_sanitize", "mode": "glm_shell" },
97
- {
98
- "action": "auto_thinking",
99
- "config": {
100
- "modelPrefixes": ["glm-4.7", "glm-4.6", "glm-4.5", "glm-z1"],
101
- "excludePrefixes": ["glm-4.6v"]
102
- }
103
- },
104
- { "action": "snapshot", "phase": "compat-post" },
105
- { "action": "dto_rewrap" }
60
+ "usage": { "allow": ["prompt_tokens", "completion_tokens", "prompt_tokens_details", "total_tokens"] }
61
+ }
62
+ }
63
+ },
64
+ {
65
+ "action": "apply_rules",
66
+ "config": {
67
+ "tools": {
68
+ "function": {
69
+ "removeKeys": ["strict", "json_schema"]
70
+ }
71
+ },
72
+ "messages": {
73
+ "assistantToolCalls": {
74
+ "function": {
75
+ "removeKeys": ["strict"]
76
+ }
77
+ }
78
+ },
79
+ "topLevel": {
80
+ "conditional": [
81
+ { "when": { "tools": "empty" }, "remove": ["tool_choice"] }
82
+ ]
83
+ }
84
+ }
85
+ },
86
+ {
87
+ "action": "field_map",
88
+ "direction": "incoming",
89
+ "config": [
90
+ { "sourcePath": "usage.prompt_tokens", "targetPath": "usage.input_tokens", "type": "number" },
91
+ { "sourcePath": "usage.completion_tokens", "targetPath": "usage.output_tokens", "type": "number" },
92
+ { "sourcePath": "created", "targetPath": "created_at", "type": "number" },
93
+ { "sourcePath": "request_id", "targetPath": "request_id", "type": "string" },
94
+ { "sourcePath": "model", "targetPath": "model", "type": "string", "transform": "normalizeModelName" },
95
+ {
96
+ "sourcePath": "choices[*].message.tool_calls[*].function.arguments",
97
+ "targetPath": "choices[*].message.tool_calls[*].function.arguments",
98
+ "type": "string"
99
+ }
106
100
  ]
107
- },
108
- "response": {
109
- "mappings": [
110
- { "action": "snapshot", "phase": "compat-pre" },
111
- { "action": "dto_unwrap" },
112
- {
113
- "action": "resp_blacklist",
114
- "config": {
115
- "paths": ["usage.prompt_tokens_details.cached_tokens"],
116
- "keepCritical": true
117
- }
101
+ },
102
+ { "action": "tool_schema_sanitize", "mode": "glm_shell" },
103
+ {
104
+ "action": "glm_web_search_request"
105
+ },
106
+ {
107
+ "action": "auto_thinking",
108
+ "config": {
109
+ "modelPrefixes": ["glm-4.7", "glm-4.6", "glm-4.5", "glm-z1"],
110
+ "excludePrefixes": ["glm-4.6v"]
111
+ }
112
+ },
113
+ { "action": "snapshot", "phase": "compat-post" },
114
+ { "action": "dto_rewrap" }
115
+ ]
116
+ },
117
+ "response": {
118
+ "mappings": [
119
+ { "action": "snapshot", "phase": "compat-pre" },
120
+ { "action": "dto_unwrap" },
121
+ {
122
+ "action": "resp_blacklist",
123
+ "config": {
124
+ "paths": ["usage.prompt_tokens_details.cached_tokens"],
125
+ "keepCritical": true
126
+ }
127
+ },
128
+ {
129
+ "action": "shape_filter",
130
+ "target": "response",
131
+ "config": {
132
+ "request": {
133
+ "allowTopLevel": [
134
+ "model", "messages", "stream", "thinking", "do_sample", "temperature", "top_p",
135
+ "max_tokens", "tools", "tool_choice", "stop", "response_format"
136
+ ],
137
+ "messages": {
138
+ "allowedRoles": ["system", "user", "assistant", "tool"],
139
+ "assistantWithToolCallsContentNull": true,
140
+ "toolContentStringify": false
118
141
  },
119
- {
120
- "action": "shape_filter",
121
- "target": "response",
122
- "config": {
123
- "request": {
124
- "allowTopLevel": [
125
- "model", "messages", "stream", "thinking", "do_sample", "temperature", "top_p",
126
- "max_tokens", "tools", "tool_choice", "stop", "response_format"
127
- ],
128
- "messages": {
129
- "allowedRoles": ["system", "user", "assistant", "tool"],
130
- "assistantWithToolCallsContentNull": true,
131
- "toolContentStringify": false
132
- },
133
- "messagesRules": [],
134
- "tools": {
135
- "normalize": false,
136
- "forceToolChoiceAuto": true
137
- },
138
- "assistantToolCalls": { "functionArgumentsType": "string" }
139
- },
140
- "response": {
141
- "allowTopLevel": [
142
- "id", "request_id", "created", "model",
143
- "choices", "usage", "video_result", "web_search", "content_filter",
144
- "required_action", "output", "output_text", "status"
145
- ],
146
- "choices": {
147
- "required": true,
148
- "message": {
149
- "allow": ["role", "content", "reasoning_content", "audio", "tool_calls"],
150
- "roleDefault": "assistant",
151
- "contentNullWhenToolCalls": true,
152
- "tool_calls": { "function": { "nameRequired": true, "argumentsType": "string" } }
153
- },
154
- "finish_reason": ["stop", "tool_calls", "length", "sensitive", "network_error"]
155
- },
156
- "usage": { "allow": ["prompt_tokens", "completion_tokens", "prompt_tokens_details", "total_tokens"] }
157
- }
158
- }
142
+ "messagesRules": [],
143
+ "tools": {
144
+ "normalize": false,
145
+ "forceToolChoiceAuto": true
159
146
  },
160
- {
161
- "action": "field_map",
162
- "direction": "outgoing",
163
- "config": [
164
- { "sourcePath": "usage.input_tokens", "targetPath": "usage.prompt_tokens", "type": "number" },
165
- { "sourcePath": "usage.output_tokens", "targetPath": "usage.completion_tokens", "type": "number" },
166
- { "sourcePath": "usage.total_input_tokens", "targetPath": "usage.prompt_tokens", "type": "number" },
167
- { "sourcePath": "usage.total_output_tokens", "targetPath": "usage.completion_tokens", "type": "number" },
168
- { "sourcePath": "created_at", "targetPath": "created", "type": "number" },
169
- { "sourcePath": "request_id", "targetPath": "request_id", "type": "string" },
170
- {
171
- "sourcePath": "choices[*].finish_reason",
172
- "targetPath": "choices[*].finish_reason",
173
- "type": "string",
174
- "transform": "normalizeFinishReason"
175
- },
176
- {
177
- "sourcePath": "choices[*].message.tool_calls[*].function.arguments",
178
- "targetPath": "choices[*].message.tool_calls[*].function.arguments",
179
- "type": "string"
180
- }
181
- ]
147
+ "assistantToolCalls": { "functionArgumentsType": "string" }
148
+ },
149
+ "response": {
150
+ "allowTopLevel": [
151
+ "id", "request_id", "created", "model",
152
+ "choices", "usage", "video_result", "web_search", "content_filter",
153
+ "required_action", "output", "output_text", "status"
154
+ ],
155
+ "choices": {
156
+ "required": true,
157
+ "message": {
158
+ "allow": ["role", "content", "reasoning_content", "audio", "tool_calls"],
159
+ "roleDefault": "assistant",
160
+ "contentNullWhenToolCalls": true,
161
+ "tool_calls": { "function": { "nameRequired": true, "argumentsType": "string" } }
162
+ },
163
+ "finish_reason": ["stop", "tool_calls", "length", "sensitive", "network_error"]
182
164
  },
183
- { "action": "tool_schema_sanitize", "mode": "glm_shell" },
184
- { "action": "response_normalize" },
185
- { "action": "extract_glm_tool_markup" },
186
- { "action": "response_validate" },
187
- { "action": "snapshot", "phase": "compat-post" },
188
- { "action": "dto_rewrap" }
165
+ "usage": { "allow": ["prompt_tokens", "completion_tokens", "prompt_tokens_details", "total_tokens"] }
166
+ }
167
+ }
168
+ },
169
+ {
170
+ "action": "field_map",
171
+ "direction": "outgoing",
172
+ "config": [
173
+ { "sourcePath": "usage.input_tokens", "targetPath": "usage.prompt_tokens", "type": "number" },
174
+ { "sourcePath": "usage.output_tokens", "targetPath": "usage.completion_tokens", "type": "number" },
175
+ { "sourcePath": "usage.total_input_tokens", "targetPath": "usage.prompt_tokens", "type": "number" },
176
+ { "sourcePath": "usage.total_output_tokens", "targetPath": "usage.completion_tokens", "type": "number" },
177
+ { "sourcePath": "created_at", "targetPath": "created", "type": "number" },
178
+ { "sourcePath": "request_id", "targetPath": "request_id", "type": "string" },
179
+ {
180
+ "sourcePath": "choices[*].finish_reason",
181
+ "targetPath": "choices[*].finish_reason",
182
+ "type": "string",
183
+ "transform": "normalizeFinishReason"
184
+ },
185
+ {
186
+ "sourcePath": "choices[*].message.tool_calls[*].function.arguments",
187
+ "targetPath": "choices[*].message.tool_calls[*].function.arguments",
188
+ "type": "string"
189
+ }
189
190
  ]
190
- }
191
+ },
192
+ { "action": "tool_schema_sanitize", "mode": "glm_shell" },
193
+ { "action": "response_normalize" },
194
+ { "action": "extract_glm_tool_markup" },
195
+ { "action": "response_validate" },
196
+ { "action": "snapshot", "phase": "compat-post" },
197
+ { "action": "dto_rewrap" }
198
+ ]
199
+ }
191
200
  }