@jsonstudio/llms 0.6.2172 → 0.6.3214

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 (524) hide show
  1. package/README.md +2 -0
  2. package/dist/conversion/args-mapping.js +8 -0
  3. package/dist/conversion/bridge-actions.js +367 -0
  4. package/dist/conversion/bridge-id-utils.js +13 -0
  5. package/dist/conversion/{shared/bridge-instructions.js → bridge-instructions.js} +2 -1
  6. package/dist/conversion/{shared/bridge-message-utils.d.ts → bridge-message-utils.d.ts} +1 -1
  7. package/dist/conversion/{shared/bridge-message-utils.js → bridge-message-utils.js} +5 -150
  8. package/dist/conversion/{shared/bridge-metadata.d.ts → bridge-metadata.d.ts} +1 -0
  9. package/dist/conversion/bridge-metadata.js +5 -0
  10. package/dist/conversion/bridge-policies.js +11 -0
  11. package/dist/conversion/codecs/gemini-openai-codec.js +27 -8
  12. package/dist/conversion/codecs/responses-openai-codec.js +1 -1
  13. package/dist/conversion/{shared/compaction-detect.d.ts → compaction-detect.d.ts} +1 -1
  14. package/dist/conversion/compaction-detect.js +4 -0
  15. package/dist/conversion/compat/actions/apply-patch-fixer.js +2 -2
  16. package/dist/conversion/compat/actions/deepseek-web-response.d.ts +0 -1
  17. package/dist/conversion/compat/actions/deepseek-web-response.js +15 -405
  18. package/dist/conversion/compat/actions/harvest-tool-calls-from-text.js +1 -1
  19. package/dist/conversion/compat/actions/lmstudio-responses-fc-ids.js +1 -1
  20. package/dist/conversion/compat/actions/qwen-transform.js +74 -2
  21. package/dist/conversion/compat/actions/snapshot.js +1 -1
  22. package/dist/conversion/compat/antigravity-session-signature.js +71 -1
  23. package/dist/conversion/compat/profiles/chat-deepseek-web.json +0 -22
  24. package/dist/conversion/compat/profiles/chat-gemini-cli.json +0 -7
  25. package/dist/conversion/compat/profiles/chat-gemini.json +0 -6
  26. package/dist/conversion/compat/profiles/chat-glm.json +251 -72
  27. package/dist/conversion/compat/profiles/chat-iflow.json +174 -39
  28. package/dist/conversion/compat/profiles/chat-lmstudio.json +43 -14
  29. package/dist/conversion/hub/core/detour-registry.d.ts +2 -0
  30. package/dist/conversion/hub/core/hub-context.d.ts +3 -1
  31. package/dist/conversion/hub/core/index.d.ts +1 -0
  32. package/dist/conversion/hub/core/stage-driver.js +2 -0
  33. package/dist/conversion/hub/format-adapters/anthropic-format-adapter.js +15 -4
  34. package/dist/conversion/hub/format-adapters/chat-format-adapter.js +15 -4
  35. package/dist/conversion/hub/format-adapters/gemini-format-adapter.js +15 -4
  36. package/dist/conversion/hub/format-adapters/responses-format-adapter.js +15 -4
  37. package/dist/conversion/hub/hub-feature.js +3 -2
  38. package/dist/conversion/hub/node-support.js +9 -4
  39. package/dist/conversion/hub/operation-table/operation-table-runner.js +12 -8
  40. package/dist/conversion/hub/operation-table/semantic-mappers/anthropic-mapper.js +3 -3
  41. package/dist/conversion/hub/operation-table/semantic-mappers/chat-mapper.js +16 -13
  42. package/dist/conversion/hub/operation-table/semantic-mappers/gemini-mapper.js +6 -10
  43. package/dist/conversion/hub/operation-table/semantic-mappers/responses-mapper.js +21 -73
  44. package/dist/conversion/hub/ops/operations.js +2 -121
  45. package/dist/conversion/hub/pipeline/compat/compat-engine.js +6 -0
  46. package/dist/conversion/hub/pipeline/compat/compat-pipeline-executor.d.ts +1 -1
  47. package/dist/conversion/hub/pipeline/compat/compat-pipeline-executor.js +33 -1042
  48. package/dist/conversion/hub/pipeline/compat/compat-profile-resolver.js +2 -0
  49. package/dist/conversion/hub/pipeline/compat/compat-profile-store.js +2 -0
  50. package/dist/conversion/hub/pipeline/compat/compat-types.d.ts +14 -17
  51. package/dist/conversion/hub/pipeline/compat/native-adapter-context.d.ts +3 -0
  52. package/dist/conversion/hub/pipeline/compat/native-adapter-context.js +39 -0
  53. package/dist/conversion/hub/pipeline/hub-pipeline.d.ts +1 -0
  54. package/dist/conversion/hub/pipeline/hub-pipeline.js +165 -265
  55. package/dist/conversion/hub/pipeline/session-identifiers.js +6 -196
  56. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage1_format_parse/index.d.ts +1 -2
  57. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage1_format_parse/index.js +37 -1
  58. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage2_semantic_map/index.d.ts +1 -1
  59. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage2_semantic_map/index.js +69 -81
  60. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage2_semantic_map/semantic-lift.d.ts +14 -0
  61. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage2_semantic_map/semantic-lift.js +24 -0
  62. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/archive/shell-like-tool-call-normalization-fallback.d.ts +2 -0
  63. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/archive/shell-like-tool-call-normalization-fallback.js +157 -0
  64. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/context-capture-orchestration.d.ts +16 -0
  65. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/context-capture-orchestration.js +29 -0
  66. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/context-factories.js +3 -1
  67. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/index.d.ts +2 -15
  68. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/index.js +8 -595
  69. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/responses-context-snapshot.d.ts +8 -0
  70. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/responses-context-snapshot.js +28 -0
  71. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/tool-output-diagnostics.d.ts +2 -0
  72. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/tool-output-diagnostics.js +4 -0
  73. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/tool-output-snapshot.d.ts +10 -0
  74. package/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/tool-output-snapshot.js +12 -0
  75. package/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage1_semantic_map/context-merge.d.ts +3 -0
  76. package/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage1_semantic_map/context-merge.js +30 -0
  77. package/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage1_semantic_map/index.js +9 -129
  78. package/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage2_format_build/index.d.ts +1 -4
  79. package/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage2_format_build/index.js +9 -26
  80. package/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage3_compat/index.js +32 -14
  81. package/dist/conversion/hub/pipeline/stages/req_process/req_process_stage1_tool_governance/index.d.ts +2 -2
  82. package/dist/conversion/hub/pipeline/stages/req_process/req_process_stage1_tool_governance/index.js +48 -8
  83. package/dist/conversion/hub/pipeline/stages/req_process/req_process_stage2_route_select/index.js +20 -3
  84. package/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage1_sse_decode/index.js +11 -199
  85. package/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage1_sse_decode/stream-json-sniffer.d.ts +3 -0
  86. package/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage1_sse_decode/stream-json-sniffer.js +81 -0
  87. package/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage2_format_parse/index.d.ts +1 -2
  88. package/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage2_format_parse/index.js +36 -1
  89. package/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage3_semantic_map/index.js +3 -1
  90. package/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/chat-process-semantics-bridge.d.ts +6 -0
  91. package/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/chat-process-semantics-bridge.js +17 -0
  92. package/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/client-remap-protocol-switch.d.ts +9 -0
  93. package/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/client-remap-protocol-switch.js +28 -0
  94. package/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/index.d.ts +1 -2
  95. package/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/index.js +14 -102
  96. package/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage2_sse_stream/index.js +3 -1
  97. package/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage1_tool_governance/index.js +54 -39
  98. package/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage2_finalize/index.js +18 -5
  99. package/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage3_servertool_orchestration/index.d.ts +11 -1
  100. package/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage3_servertool_orchestration/index.js +10 -32
  101. package/dist/conversion/hub/pipeline/stages/utils.js +17 -1
  102. package/dist/conversion/hub/pipeline/target-utils.js +14 -91
  103. package/dist/conversion/hub/pipelines/inbound.js +3 -1
  104. package/dist/conversion/hub/pipelines/outbound.js +2 -0
  105. package/dist/conversion/hub/policy/policy-engine.js +9 -3
  106. package/dist/conversion/hub/policy/protocol-spec.js +21 -149
  107. package/dist/conversion/hub/process/chat-process-anthropic-alias.d.ts +2 -0
  108. package/dist/conversion/hub/process/chat-process-anthropic-alias.js +36 -0
  109. package/dist/conversion/hub/process/chat-process-clock-directive-parser.d.ts +5 -0
  110. package/dist/conversion/hub/process/chat-process-clock-directive-parser.js +48 -0
  111. package/dist/conversion/hub/process/chat-process-clock-directives.d.ts +24 -0
  112. package/dist/conversion/hub/process/chat-process-clock-directives.js +98 -0
  113. package/dist/conversion/hub/process/chat-process-clock-reminder-directives.d.ts +8 -0
  114. package/dist/conversion/hub/process/chat-process-clock-reminder-directives.js +42 -0
  115. package/dist/conversion/hub/process/chat-process-clock-reminder-finalize.d.ts +14 -0
  116. package/dist/conversion/hub/process/chat-process-clock-reminder-finalize.js +10 -0
  117. package/dist/conversion/hub/process/chat-process-clock-reminder-messages.d.ts +5 -0
  118. package/dist/conversion/hub/process/chat-process-clock-reminder-messages.js +10 -0
  119. package/dist/conversion/hub/process/chat-process-clock-reminder-orchestration.d.ts +30 -0
  120. package/dist/conversion/hub/process/chat-process-clock-reminder-orchestration.js +68 -0
  121. package/dist/conversion/hub/process/chat-process-clock-reminder-time-tag.d.ts +9 -0
  122. package/dist/conversion/hub/process/chat-process-clock-reminder-time-tag.js +18 -0
  123. package/dist/conversion/hub/process/chat-process-clock-reminders.d.ts +2 -0
  124. package/dist/conversion/hub/process/chat-process-clock-reminders.js +104 -0
  125. package/dist/conversion/hub/process/chat-process-clock-tool-schemas.d.ts +3 -0
  126. package/dist/conversion/hub/process/chat-process-clock-tool-schemas.js +233 -0
  127. package/dist/conversion/hub/process/chat-process-clock-tools.d.ts +6 -0
  128. package/dist/conversion/hub/process/chat-process-clock-tools.js +41 -0
  129. package/dist/conversion/hub/process/chat-process-continue-execution.d.ts +11 -0
  130. package/dist/conversion/hub/process/chat-process-continue-execution.js +82 -0
  131. package/dist/conversion/hub/process/chat-process-governance-context.d.ts +15 -0
  132. package/dist/conversion/hub/process/chat-process-governance-context.js +7 -0
  133. package/dist/conversion/hub/process/chat-process-governance-finalize.d.ts +16 -0
  134. package/dist/conversion/hub/process/chat-process-governance-finalize.js +11 -0
  135. package/dist/conversion/hub/process/chat-process-governance-orchestration.d.ts +9 -0
  136. package/dist/conversion/hub/process/chat-process-governance-orchestration.js +47 -0
  137. package/dist/conversion/hub/process/chat-process-governed-control-ops.d.ts +8 -0
  138. package/dist/conversion/hub/process/chat-process-governed-control-ops.js +5 -0
  139. package/dist/conversion/hub/process/chat-process-governed-filter-call.d.ts +12 -0
  140. package/dist/conversion/hub/process/chat-process-governed-filter-call.js +18 -0
  141. package/dist/conversion/hub/process/chat-process-governed-merge.d.ts +8 -0
  142. package/dist/conversion/hub/process/chat-process-governed-merge.js +11 -0
  143. package/dist/conversion/hub/process/chat-process-media.d.ts +3 -0
  144. package/dist/conversion/hub/process/chat-process-media.js +18 -0
  145. package/dist/conversion/hub/process/chat-process-node-result.d.ts +23 -0
  146. package/dist/conversion/hub/process/chat-process-node-result.js +24 -0
  147. package/dist/conversion/hub/process/chat-process-pending-tool-sync.d.ts +14 -0
  148. package/dist/conversion/hub/process/chat-process-pending-tool-sync.js +52 -0
  149. package/dist/conversion/hub/process/chat-process-post-governed-normalization.d.ts +8 -0
  150. package/dist/conversion/hub/process/chat-process-post-governed-normalization.js +16 -0
  151. package/dist/conversion/hub/process/chat-process-review.d.ts +2 -0
  152. package/dist/conversion/hub/process/chat-process-review.js +8 -0
  153. package/dist/conversion/hub/process/chat-process-servertool-orchestration.d.ts +8 -0
  154. package/dist/conversion/hub/process/chat-process-servertool-orchestration.js +22 -0
  155. package/dist/conversion/hub/process/chat-process-tool-normalization.d.ts +2 -0
  156. package/dist/conversion/hub/process/chat-process-tool-normalization.js +4 -0
  157. package/dist/conversion/hub/process/chat-process-web-search-intent.d.ts +12 -0
  158. package/dist/conversion/hub/process/chat-process-web-search-intent.js +13 -0
  159. package/dist/conversion/hub/process/chat-process-web-search-tool-schema.d.ts +3 -0
  160. package/dist/conversion/hub/process/chat-process-web-search-tool-schema.js +4 -0
  161. package/dist/conversion/hub/process/chat-process-web-search.d.ts +8 -0
  162. package/dist/conversion/hub/process/chat-process-web-search.js +26 -0
  163. package/dist/conversion/hub/process/chat-process.d.ts +2 -19
  164. package/dist/conversion/hub/process/chat-process.js +12 -1701
  165. package/dist/conversion/hub/process/client-inject-readiness.d.ts +1 -0
  166. package/dist/conversion/hub/process/client-inject-readiness.js +4 -0
  167. package/dist/conversion/hub/registry.js +5 -2
  168. package/dist/conversion/hub/response/chat-response-utils.js +5 -86
  169. package/dist/conversion/hub/response/provider-response.d.ts +9 -0
  170. package/dist/conversion/hub/response/provider-response.js +20 -26
  171. package/dist/conversion/hub/response/response-mappers.js +25 -27
  172. package/dist/conversion/hub/response/response-runtime.js +30 -98
  173. package/dist/conversion/hub/semantic-mappers/anthropic-mapper.d.ts +1 -0
  174. package/dist/conversion/hub/semantic-mappers/anthropic-mapper.js +1 -0
  175. package/dist/conversion/hub/semantic-mappers/chat-mapper.d.ts +1 -0
  176. package/dist/conversion/hub/semantic-mappers/chat-mapper.js +1 -0
  177. package/dist/conversion/hub/semantic-mappers/gemini-mapper.d.ts +1 -0
  178. package/dist/conversion/hub/semantic-mappers/gemini-mapper.js +1 -0
  179. package/dist/conversion/hub/semantic-mappers/responses-mapper.d.ts +1 -0
  180. package/dist/conversion/hub/semantic-mappers/responses-mapper.js +1 -0
  181. package/dist/conversion/hub/snapshot-recorder.js +11 -4
  182. package/dist/conversion/hub/standardized-bridge.js +11 -288
  183. package/dist/conversion/hub/tool-governance/engine.d.ts +8 -0
  184. package/dist/conversion/hub/tool-governance/engine.js +25 -63
  185. package/dist/conversion/hub/tool-governance/rules.js +73 -69
  186. package/dist/conversion/hub/tool-session-compat.d.ts +2 -2
  187. package/dist/conversion/hub/tool-session-compat.js +17 -231
  188. package/dist/conversion/hub/tool-surface/tool-surface-engine.js +6 -4
  189. package/dist/conversion/index.d.ts +1 -2
  190. package/dist/conversion/index.js +1 -2
  191. package/dist/conversion/jsonish.js +20 -0
  192. package/dist/conversion/mcp-injection.js +7 -0
  193. package/dist/conversion/media.js +4 -0
  194. package/dist/conversion/{shared/metadata-passthrough.d.ts → metadata-passthrough.d.ts} +1 -1
  195. package/dist/conversion/metadata-passthrough.js +20 -0
  196. package/dist/conversion/payload-budget.js +47 -0
  197. package/dist/conversion/protocol-field-allowlists.d.ts +7 -0
  198. package/dist/conversion/protocol-field-allowlists.js +9 -0
  199. package/dist/conversion/{shared/protocol-state.d.ts → protocol-state.d.ts} +2 -2
  200. package/dist/conversion/protocol-state.js +27 -0
  201. package/dist/conversion/{shared/errors.d.ts → provider-protocol-error.d.ts} +0 -3
  202. package/dist/conversion/provider-protocol-error.js +25 -0
  203. package/dist/conversion/responses/responses-host-policy.js +2 -12
  204. package/dist/conversion/responses/responses-openai-bridge/response-payload.js +14 -87
  205. package/dist/conversion/responses/responses-openai-bridge/types.d.ts +2 -1
  206. package/dist/conversion/responses/responses-openai-bridge.d.ts +1 -1
  207. package/dist/conversion/responses/responses-openai-bridge.js +62 -62
  208. package/dist/conversion/{shared/runtime-metadata.d.ts → runtime-metadata.d.ts} +1 -1
  209. package/dist/conversion/runtime-metadata.js +31 -0
  210. package/dist/conversion/shared/anthropic-message-utils.js +170 -21
  211. package/dist/conversion/shared/chat-envelope-validator.js +2 -126
  212. package/dist/conversion/shared/chat-output-normalizer.js +2 -54
  213. package/dist/conversion/shared/chat-request-filters.d.ts +3 -4
  214. package/dist/conversion/shared/chat-request-filters.js +22 -78
  215. package/dist/conversion/shared/gemini-tool-utils.d.ts +1 -1
  216. package/dist/conversion/shared/gemini-tool-utils.js +9 -524
  217. package/dist/conversion/shared/openai-finalizer.js +3 -1
  218. package/dist/conversion/shared/openai-message-normalize.js +13 -285
  219. package/dist/conversion/shared/output-content-normalizer.js +9 -112
  220. package/dist/conversion/shared/reasoning-mapping.js +2 -6
  221. package/dist/conversion/shared/reasoning-normalizer.js +10 -1
  222. package/dist/conversion/shared/reasoning-tool-normalizer.js +14 -126
  223. package/dist/conversion/shared/reasoning-tool-parser.js +4 -87
  224. package/dist/conversion/shared/reasoning-utils.js +7 -8
  225. package/dist/conversion/shared/responses-conversation-store.js +5 -83
  226. package/dist/conversion/shared/responses-output-builder.js +63 -55
  227. package/dist/conversion/shared/responses-reasoning-registry.d.ts +14 -2
  228. package/dist/conversion/shared/responses-reasoning-registry.js +41 -7
  229. package/dist/conversion/shared/responses-request-adapter.d.ts +7 -1
  230. package/dist/conversion/shared/responses-request-adapter.js +14 -1
  231. package/dist/conversion/shared/responses-response-utils.js +103 -14
  232. package/dist/conversion/shared/responses-tool-utils.d.ts +1 -0
  233. package/dist/conversion/shared/responses-tool-utils.js +91 -15
  234. package/dist/conversion/shared/streaming-text-extractor.js +2 -7
  235. package/dist/conversion/shared/text-markup-normalizer/normalize.d.ts +2 -2
  236. package/dist/conversion/shared/text-markup-normalizer/normalize.js +43 -17
  237. package/dist/conversion/shared/text-markup-normalizer.d.ts +3 -2
  238. package/dist/conversion/shared/text-markup-normalizer.js +2 -1
  239. package/dist/conversion/shared/thought-signature-validator.js +3 -2
  240. package/dist/conversion/shared/tool-argument-repairer.js +2 -2
  241. package/dist/conversion/shared/tool-call-id-manager.js +5 -7
  242. package/dist/conversion/shared/tool-call-utils.js +3 -45
  243. package/dist/conversion/shared/tool-filter-pipeline.js +5 -100
  244. package/dist/conversion/shared/tool-governor.d.ts +6 -0
  245. package/dist/conversion/shared/tool-governor.js +45 -127
  246. package/dist/conversion/shared/tool-harvester.js +2 -8
  247. package/dist/conversion/shared/tool-mapping.d.ts +1 -1
  248. package/dist/conversion/shared/tool-mapping.js +2 -5
  249. package/dist/conversion/shared/tooling.d.ts +0 -4
  250. package/dist/conversion/shared/tooling.js +18 -0
  251. package/dist/conversion/{shared/snapshot-utils.d.ts → snapshot-utils.d.ts} +11 -0
  252. package/dist/conversion/{shared/snapshot-utils.js → snapshot-utils.js} +14 -23
  253. package/dist/conversion/{shared → types}/bridge-message-types.d.ts +2 -0
  254. package/dist/conversion/types/text-markup-normalizer.d.ts +13 -0
  255. package/dist/filters/special/request-tools-normalize.js +1 -1
  256. package/dist/filters/special/response-tool-text-canonicalize.js +2 -2
  257. package/dist/native/router_hotpath_napi.node +0 -0
  258. package/dist/quota/quota-manager.js +31 -59
  259. package/dist/quota/quota-state.js +14 -7
  260. package/dist/router/virtual-router/bootstrap/profile-builder.d.ts +1 -0
  261. package/dist/router/virtual-router/bootstrap/profile-builder.js +13 -0
  262. package/dist/router/virtual-router/bootstrap/provider-normalization.d.ts +2 -0
  263. package/dist/router/virtual-router/bootstrap/provider-normalization.js +4 -1
  264. package/dist/router/virtual-router/bootstrap/streaming-helpers.d.ts +7 -0
  265. package/dist/router/virtual-router/bootstrap/streaming-helpers.js +44 -0
  266. package/dist/router/virtual-router/bootstrap.js +2 -0
  267. package/dist/router/virtual-router/engine/provider-key/parse.d.ts +1 -6
  268. package/dist/router/virtual-router/engine/provider-key/parse.js +1 -43
  269. package/dist/router/virtual-router/engine/routing-state/store.d.ts +1 -2
  270. package/dist/router/virtual-router/engine/routing-state/store.js +50 -14
  271. package/dist/router/virtual-router/engine-legacy/config.d.ts +11 -0
  272. package/dist/router/virtual-router/engine-legacy/config.js +108 -0
  273. package/dist/router/virtual-router/engine-legacy/direct-model.d.ts +10 -0
  274. package/dist/router/virtual-router/engine-legacy/direct-model.js +38 -0
  275. package/dist/router/virtual-router/engine-legacy/health.d.ts +13 -0
  276. package/dist/router/virtual-router/engine-legacy/health.js +104 -0
  277. package/dist/router/virtual-router/engine-legacy/helpers.d.ts +16 -0
  278. package/dist/router/virtual-router/engine-legacy/helpers.js +226 -0
  279. package/dist/router/virtual-router/engine-legacy/route-finalize.d.ts +9 -0
  280. package/dist/router/virtual-router/engine-legacy/route-finalize.js +84 -0
  281. package/dist/router/virtual-router/engine-legacy/route-selection.d.ts +17 -0
  282. package/dist/router/virtual-router/engine-legacy/route-selection.js +205 -0
  283. package/dist/router/virtual-router/engine-legacy/route-state-allowlist.d.ts +3 -0
  284. package/dist/router/virtual-router/engine-legacy/route-state-allowlist.js +36 -0
  285. package/dist/router/virtual-router/engine-legacy/route-state.d.ts +12 -0
  286. package/dist/router/virtual-router/engine-legacy/route-state.js +386 -0
  287. package/dist/router/virtual-router/engine-legacy/route-utils.d.ts +19 -0
  288. package/dist/router/virtual-router/engine-legacy/route-utils.js +212 -0
  289. package/dist/router/virtual-router/engine-legacy/routing.d.ts +8 -0
  290. package/dist/router/virtual-router/engine-legacy/routing.js +8 -0
  291. package/dist/router/virtual-router/engine-legacy/selection-core.d.ts +28 -0
  292. package/dist/router/virtual-router/engine-legacy/selection-core.js +112 -0
  293. package/dist/router/virtual-router/engine-legacy/selection-state.d.ts +16 -0
  294. package/dist/router/virtual-router/engine-legacy/selection-state.js +187 -0
  295. package/dist/router/virtual-router/engine-legacy/state-accessors.d.ts +21 -0
  296. package/dist/router/virtual-router/engine-legacy/state-accessors.js +118 -0
  297. package/dist/router/virtual-router/engine-legacy.d.ts +123 -0
  298. package/dist/router/virtual-router/engine-legacy.js +194 -0
  299. package/dist/router/virtual-router/engine-logging.d.ts +2 -0
  300. package/dist/router/virtual-router/engine-logging.js +11 -5
  301. package/dist/router/virtual-router/engine-selection/alias-selection.js +45 -83
  302. package/dist/router/virtual-router/engine-selection/key-parsing.js +9 -26
  303. package/dist/router/virtual-router/engine-selection/native-chat-process-clock-directive-parser.d.ts +20 -0
  304. package/dist/router/virtual-router/engine-selection/native-chat-process-clock-directive-parser.js +163 -0
  305. package/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-directives.d.ts +7 -0
  306. package/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-directives.js +103 -0
  307. package/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-orchestration-semantics.d.ts +10 -0
  308. package/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-orchestration-semantics.js +110 -0
  309. package/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-semantics.d.ts +8 -0
  310. package/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-semantics.js +281 -0
  311. package/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-time-tag-semantics.d.ts +1 -0
  312. package/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-time-tag-semantics.js +25 -0
  313. package/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminders-semantics.d.ts +4 -0
  314. package/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminders-semantics.js +44 -0
  315. package/dist/router/virtual-router/engine-selection/native-chat-process-clock-tool-schema-semantics.d.ts +2 -0
  316. package/dist/router/virtual-router/engine-selection/native-chat-process-clock-tool-schema-semantics.js +62 -0
  317. package/dist/router/virtual-router/engine-selection/native-chat-process-governance-semantics.d.ts +40 -0
  318. package/dist/router/virtual-router/engine-selection/native-chat-process-governance-semantics.js +484 -0
  319. package/dist/router/virtual-router/engine-selection/native-chat-process-governed-filter-semantics.d.ts +9 -0
  320. package/dist/router/virtual-router/engine-selection/native-chat-process-governed-filter-semantics.js +64 -0
  321. package/dist/router/virtual-router/engine-selection/native-chat-process-node-result-semantics.d.ts +5 -0
  322. package/dist/router/virtual-router/engine-selection/native-chat-process-node-result-semantics.js +163 -0
  323. package/dist/router/virtual-router/engine-selection/native-chat-process-post-governed-normalization-semantics.d.ts +1 -0
  324. package/dist/router/virtual-router/engine-selection/native-chat-process-post-governed-normalization-semantics.js +49 -0
  325. package/dist/router/virtual-router/engine-selection/native-chat-process-servertool-orchestration-semantics.d.ts +30 -0
  326. package/dist/router/virtual-router/engine-selection/native-chat-process-servertool-orchestration-semantics.js +446 -0
  327. package/dist/router/virtual-router/engine-selection/native-chat-process-web-search-intent-semantics.d.ts +1 -0
  328. package/dist/router/virtual-router/engine-selection/native-chat-process-web-search-intent-semantics.js +49 -0
  329. package/dist/router/virtual-router/engine-selection/native-chat-request-filter-semantics.d.ts +1 -0
  330. package/dist/router/virtual-router/engine-selection/native-chat-request-filter-semantics.js +54 -0
  331. package/dist/router/virtual-router/engine-selection/native-hub-bridge-action-semantics.d.ts +134 -0
  332. package/dist/router/virtual-router/engine-selection/native-hub-bridge-action-semantics.js +729 -0
  333. package/dist/router/virtual-router/engine-selection/native-hub-bridge-policy-semantics.d.ts +72 -0
  334. package/dist/router/virtual-router/engine-selection/native-hub-bridge-policy-semantics.js +405 -0
  335. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-edge-stage-semantics.d.ts +18 -0
  336. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-edge-stage-semantics.js +317 -0
  337. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-governance-semantics.d.ts +22 -0
  338. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-governance-semantics.js +154 -0
  339. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-inbound-outbound-semantics.d.ts +22 -0
  340. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-inbound-outbound-semantics.js +426 -0
  341. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-orchestration-semantics.d.ts +57 -0
  342. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-orchestration-semantics.js +705 -0
  343. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-inbound-semantics.d.ts +46 -0
  344. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-inbound-semantics.js +503 -0
  345. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-outbound-semantics.d.ts +146 -0
  346. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-outbound-semantics.js +570 -0
  347. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-process-semantics.d.ts +25 -0
  348. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-process-semantics.js +148 -0
  349. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-resp-semantics.d.ts +25 -0
  350. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-resp-semantics.js +637 -0
  351. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-session-identifiers-semantics.d.ts +11 -0
  352. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-session-identifiers-semantics.js +207 -0
  353. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-target-semantics.d.ts +3 -0
  354. package/dist/router/virtual-router/engine-selection/native-hub-pipeline-target-semantics.js +128 -0
  355. package/dist/router/virtual-router/engine-selection/native-router-hotpath-analysis.d.ts +57 -0
  356. package/dist/router/virtual-router/engine-selection/native-router-hotpath-analysis.js +217 -0
  357. package/dist/router/virtual-router/engine-selection/native-router-hotpath-loader.d.ts +5 -0
  358. package/dist/router/virtual-router/engine-selection/native-router-hotpath-loader.js +320 -0
  359. package/dist/router/virtual-router/engine-selection/native-router-hotpath-policy.d.ts +5 -0
  360. package/dist/router/virtual-router/engine-selection/native-router-hotpath-policy.js +18 -0
  361. package/dist/router/virtual-router/engine-selection/native-router-hotpath-quota-buckets.d.ts +25 -0
  362. package/dist/router/virtual-router/engine-selection/native-router-hotpath-quota-buckets.js +85 -0
  363. package/dist/router/virtual-router/engine-selection/native-router-hotpath.d.ts +59 -0
  364. package/dist/router/virtual-router/engine-selection/native-router-hotpath.js +117 -0
  365. package/dist/router/virtual-router/engine-selection/native-shared-conversion-semantics.d.ts +151 -0
  366. package/dist/router/virtual-router/engine-selection/native-shared-conversion-semantics.js +1371 -0
  367. package/dist/router/virtual-router/engine-selection/native-snapshot-hooks.d.ts +2 -0
  368. package/dist/router/virtual-router/engine-selection/native-snapshot-hooks.js +69 -0
  369. package/dist/router/virtual-router/engine-selection/native-virtual-router-alias-selection-semantics.d.ts +16 -0
  370. package/dist/router/virtual-router/engine-selection/native-virtual-router-alias-selection-semantics.js +96 -0
  371. package/dist/router/virtual-router/engine-selection/native-virtual-router-engine-proxy.d.ts +16 -0
  372. package/dist/router/virtual-router/engine-selection/native-virtual-router-engine-proxy.js +14 -0
  373. package/dist/router/virtual-router/engine-selection/native-virtual-router-routing-instructions-semantics.d.ts +2 -0
  374. package/dist/router/virtual-router/engine-selection/native-virtual-router-routing-instructions-semantics.js +86 -0
  375. package/dist/router/virtual-router/engine-selection/native-virtual-router-stop-message-actions-semantics.d.ts +6 -0
  376. package/dist/router/virtual-router/engine-selection/native-virtual-router-stop-message-actions-semantics.js +85 -0
  377. package/dist/router/virtual-router/engine-selection/native-virtual-router-stop-message-semantics.d.ts +9 -0
  378. package/dist/router/virtual-router/engine-selection/native-virtual-router-stop-message-semantics.js +70 -0
  379. package/dist/router/virtual-router/engine-selection/native-virtual-router-stop-message-state-semantics.d.ts +2 -0
  380. package/dist/router/virtual-router/engine-selection/native-virtual-router-stop-message-state-semantics.js +76 -0
  381. package/dist/router/virtual-router/engine-selection/route-utils.js +1 -1
  382. package/dist/router/virtual-router/engine-selection/tier-selection-antigravity-session-lease.d.ts +10 -0
  383. package/dist/router/virtual-router/engine-selection/tier-selection-antigravity-session-lease.js +231 -0
  384. package/dist/router/virtual-router/engine-selection/tier-selection-antigravity-target-split.d.ts +4 -0
  385. package/dist/router/virtual-router/engine-selection/tier-selection-antigravity-target-split.js +43 -0
  386. package/dist/router/virtual-router/engine-selection/tier-selection-quota-integration.d.ts +27 -0
  387. package/dist/router/virtual-router/engine-selection/tier-selection-quota-integration.js +216 -0
  388. package/dist/router/virtual-router/engine-selection/tier-selection-select.d.ts +1 -1
  389. package/dist/router/virtual-router/engine-selection/tier-selection-select.js +128 -129
  390. package/dist/router/virtual-router/engine-selection/tier-selection.js +2 -265
  391. package/dist/router/virtual-router/engine.d.ts +22 -105
  392. package/dist/router/virtual-router/engine.js +274 -1632
  393. package/dist/router/virtual-router/features.js +2 -2
  394. package/dist/router/virtual-router/load-balancer.d.ts +8 -0
  395. package/dist/router/virtual-router/load-balancer.js +65 -2
  396. package/dist/router/virtual-router/provider-registry.js +2 -0
  397. package/dist/router/virtual-router/routing-instructions/clean.d.ts +3 -0
  398. package/dist/router/virtual-router/routing-instructions/clean.js +34 -0
  399. package/dist/router/virtual-router/routing-instructions/parse.d.ts +18 -0
  400. package/dist/router/virtual-router/routing-instructions/parse.js +377 -0
  401. package/dist/router/virtual-router/routing-instructions/state.d.ts +4 -0
  402. package/dist/router/virtual-router/routing-instructions/state.js +245 -0
  403. package/dist/router/virtual-router/routing-instructions/types.d.ts +70 -0
  404. package/dist/router/virtual-router/routing-instructions/types.js +2 -0
  405. package/dist/router/virtual-router/routing-instructions.d.ts +5 -91
  406. package/dist/router/virtual-router/routing-instructions.js +4 -628
  407. package/dist/router/virtual-router/routing-stop-message-actions.js +91 -112
  408. package/dist/router/virtual-router/routing-stop-message-parser.js +9 -132
  409. package/dist/router/virtual-router/routing-stop-message-state-codec.d.ts +1 -0
  410. package/dist/router/virtual-router/routing-stop-message-state-codec.js +58 -71
  411. package/dist/router/virtual-router/sticky-session-store.d.ts +4 -0
  412. package/dist/router/virtual-router/sticky-session-store.js +23 -83
  413. package/dist/router/virtual-router/stop-message-file-resolver.d.ts +1 -0
  414. package/dist/router/virtual-router/stop-message-file-resolver.js +10 -0
  415. package/dist/router/virtual-router/stop-message-state-sync.d.ts +1 -1
  416. package/dist/router/virtual-router/stop-message-state-sync.js +3 -7
  417. package/dist/router/virtual-router/token-counter.js +0 -9
  418. package/dist/router/virtual-router/tool-signals.js +21 -3
  419. package/dist/router/virtual-router/types.d.ts +13 -7
  420. package/dist/servertool/clock/config.js +23 -51
  421. package/dist/servertool/clock/io.js +1 -0
  422. package/dist/servertool/clock/session-scope.d.ts +2 -2
  423. package/dist/servertool/clock/session-scope.js +29 -40
  424. package/dist/servertool/engine.d.ts +9 -0
  425. package/dist/servertool/engine.js +267 -79
  426. package/dist/servertool/handlers/antigravity-thought-signature-bootstrap.js +3 -3
  427. package/dist/servertool/handlers/clock-auto.js +1 -1
  428. package/dist/servertool/handlers/clock.js +2 -2
  429. package/dist/servertool/handlers/compaction-detect.d.ts +1 -1
  430. package/dist/servertool/handlers/compaction-detect.js +1 -1
  431. package/dist/servertool/handlers/continue-execution.js +8 -4
  432. package/dist/servertool/handlers/followup-request-builder.js +18 -1
  433. package/dist/servertool/handlers/gemini-empty-reply-continue.js +8 -2
  434. package/dist/servertool/handlers/iflow-model-error-retry.js +1 -1
  435. package/dist/servertool/handlers/recursive-detection-guard.js +1 -1
  436. package/dist/servertool/handlers/review.d.ts +1 -0
  437. package/dist/servertool/handlers/review.js +180 -0
  438. package/dist/servertool/handlers/stop-message-auto/blocked-report.js +59 -1
  439. package/dist/servertool/handlers/stop-message-auto/iflow-followup.d.ts +23 -2
  440. package/dist/servertool/handlers/stop-message-auto/iflow-followup.js +398 -90
  441. package/dist/servertool/handlers/stop-message-auto/routing-state.d.ts +5 -15
  442. package/dist/servertool/handlers/stop-message-auto/routing-state.js +29 -55
  443. package/dist/servertool/handlers/stop-message-auto/runtime-utils.d.ts +6 -0
  444. package/dist/servertool/handlers/stop-message-auto/runtime-utils.js +36 -62
  445. package/dist/servertool/handlers/stop-message-auto.js +393 -77
  446. package/dist/servertool/handlers/vision.js +1 -1
  447. package/dist/servertool/handlers/web-search.js +1 -1
  448. package/dist/servertool/reenter-backend.js +1 -1
  449. package/dist/servertool/server-side-tools.d.ts +1 -0
  450. package/dist/servertool/server-side-tools.js +92 -54
  451. package/dist/servertool/stop-gateway-context.js +1 -1
  452. package/dist/servertool/stop-message-compare-context.js +1 -1
  453. package/dist/servertool/types.d.ts +17 -0
  454. package/dist/sse/json-to-sse/event-generators/responses.d.ts +4 -0
  455. package/dist/sse/json-to-sse/event-generators/responses.js +95 -1
  456. package/dist/sse/json-to-sse/sequencers/responses-sequencer.js +6 -4
  457. package/dist/sse/sse-to-json/builders/response-builder.d.ts +8 -0
  458. package/dist/sse/sse-to-json/builders/response-builder.js +162 -4
  459. package/dist/sse/sse-to-json/responses-sse-to-json-converter.js +2 -0
  460. package/dist/sse/types/responses-types.d.ts +6 -2
  461. package/dist/tools/apply-patch/patch-text/normalize.js +11 -0
  462. package/dist/tools/apply-patch/structured/coercion.js +5 -0
  463. package/dist/tools/args-json.js +29 -0
  464. package/dist/tools/exec-command/validator.d.ts +4 -1
  465. package/dist/tools/exec-command/validator.js +87 -3
  466. package/dist/tools/tool-registry.d.ts +7 -1
  467. package/dist/tools/tool-registry.js +3 -2
  468. package/package.json +121 -10
  469. package/dist/conversion/shared/args-mapping.js +0 -221
  470. package/dist/conversion/shared/bridge-actions.js +0 -881
  471. package/dist/conversion/shared/bridge-id-utils.js +0 -79
  472. package/dist/conversion/shared/bridge-metadata.js +0 -1
  473. package/dist/conversion/shared/bridge-policies.js +0 -195
  474. package/dist/conversion/shared/compaction-detect.js +0 -59
  475. package/dist/conversion/shared/errors.js +0 -31
  476. package/dist/conversion/shared/jsonish.js +0 -177
  477. package/dist/conversion/shared/mcp-injection.js +0 -173
  478. package/dist/conversion/shared/media.js +0 -9
  479. package/dist/conversion/shared/metadata-passthrough.js +0 -57
  480. package/dist/conversion/shared/payload-budget.js +0 -248
  481. package/dist/conversion/shared/protocol-field-allowlists.d.ts +0 -7
  482. package/dist/conversion/shared/protocol-field-allowlists.js +0 -149
  483. package/dist/conversion/shared/protocol-state.js +0 -23
  484. package/dist/conversion/shared/runtime-metadata.js +0 -23
  485. package/dist/conversion/shared/snapshot-hooks.d.ts +0 -11
  486. package/dist/conversion/shared/snapshot-hooks.js +0 -503
  487. package/dist/conversion/shared/text-markup-normalizer/extractors-apply-patch.d.ts +0 -2
  488. package/dist/conversion/shared/text-markup-normalizer/extractors-apply-patch.js +0 -129
  489. package/dist/conversion/shared/text-markup-normalizer/extractors-json.d.ts +0 -4
  490. package/dist/conversion/shared/text-markup-normalizer/extractors-json.js +0 -637
  491. package/dist/conversion/shared/text-markup-normalizer/extractors-shared.d.ts +0 -21
  492. package/dist/conversion/shared/text-markup-normalizer/extractors-shared.js +0 -177
  493. package/dist/conversion/shared/text-markup-normalizer/extractors-transcript.d.ts +0 -5
  494. package/dist/conversion/shared/text-markup-normalizer/extractors-transcript.js +0 -385
  495. package/dist/conversion/shared/text-markup-normalizer/extractors-xml.d.ts +0 -10
  496. package/dist/conversion/shared/text-markup-normalizer/extractors-xml.js +0 -602
  497. package/dist/conversion/shared/text-markup-normalizer/extractors.d.ts +0 -5
  498. package/dist/conversion/shared/text-markup-normalizer/extractors.js +0 -4
  499. package/dist/conversion/shared/tool-canonicalizer.d.ts +0 -2
  500. package/dist/conversion/shared/tool-canonicalizer.js +0 -42
  501. package/dist/servertool/handlers/stop-message-stage-policy/bd-runtime.d.ts +0 -18
  502. package/dist/servertool/handlers/stop-message-stage-policy/bd-runtime.js +0 -398
  503. package/dist/servertool/handlers/stop-message-stage-policy/decision.d.ts +0 -9
  504. package/dist/servertool/handlers/stop-message-stage-policy/decision.js +0 -127
  505. package/dist/servertool/handlers/stop-message-stage-policy/observation.d.ts +0 -2
  506. package/dist/servertool/handlers/stop-message-stage-policy/observation.js +0 -179
  507. package/dist/servertool/handlers/stop-message-stage-policy/templates.d.ts +0 -4
  508. package/dist/servertool/handlers/stop-message-stage-policy/templates.js +0 -96
  509. package/dist/servertool/handlers/stop-message-stage-policy/text-utils.d.ts +0 -9
  510. package/dist/servertool/handlers/stop-message-stage-policy/text-utils.js +0 -89
  511. package/dist/servertool/handlers/stop-message-stage-policy/types.d.ts +0 -59
  512. package/dist/servertool/handlers/stop-message-stage-policy.d.ts +0 -3
  513. package/dist/servertool/handlers/stop-message-stage-policy.js +0 -2
  514. /package/dist/conversion/{shared/args-mapping.d.ts → args-mapping.d.ts} +0 -0
  515. /package/dist/conversion/{shared/bridge-actions.d.ts → bridge-actions.d.ts} +0 -0
  516. /package/dist/conversion/{shared/bridge-id-utils.d.ts → bridge-id-utils.d.ts} +0 -0
  517. /package/dist/conversion/{shared/bridge-instructions.d.ts → bridge-instructions.d.ts} +0 -0
  518. /package/dist/conversion/{shared/bridge-policies.d.ts → bridge-policies.d.ts} +0 -0
  519. /package/dist/conversion/{shared/jsonish.d.ts → jsonish.d.ts} +0 -0
  520. /package/dist/conversion/{shared/mcp-injection.d.ts → mcp-injection.d.ts} +0 -0
  521. /package/dist/conversion/{shared/media.d.ts → media.d.ts} +0 -0
  522. /package/dist/conversion/{shared/payload-budget.d.ts → payload-budget.d.ts} +0 -0
  523. /package/dist/conversion/{shared → types}/bridge-message-types.js +0 -0
  524. /package/dist/{servertool/handlers/stop-message-stage-policy/types.js → conversion/types/text-markup-normalizer.js} +0 -0
@@ -0,0 +1 @@
1
+ export declare function isClientInjectReady(metadata: Record<string, unknown>): boolean;
@@ -0,0 +1,4 @@
1
+ import { resolveClientInjectReadyWithNative } from '../../../router/virtual-router/engine-selection/native-hub-pipeline-req-inbound-semantics.js';
2
+ export function isClientInjectReady(metadata) {
3
+ return resolveClientInjectReadyWithNative(metadata);
4
+ }
@@ -6,6 +6,7 @@ import { AnthropicSemanticMapper } from './semantic-mappers/anthropic-mapper.js'
6
6
  import { ResponsesSemanticMapper } from './semantic-mappers/responses-mapper.js';
7
7
  import { GeminiSemanticMapper } from './semantic-mappers/gemini-mapper.js';
8
8
  import { GeminiFormatAdapter } from './format-adapters/gemini-format-adapter.js';
9
+ import { normalizeProviderProtocolTokenWithNative } from '../../router/virtual-router/engine-selection/native-hub-pipeline-req-inbound-semantics.js';
9
10
  export const HUB_PROTOCOL_REGISTRY = {
10
11
  'openai-chat': {
11
12
  protocol: 'openai-chat',
@@ -87,9 +88,11 @@ function instantiateOutbound(factory) {
87
88
  };
88
89
  }
89
90
  export function createProtocolPlans(protocol) {
90
- const definition = HUB_PROTOCOL_REGISTRY[protocol];
91
+ const normalizedProtocol = normalizeProviderProtocolTokenWithNative(protocol);
92
+ const protocolKey = normalizedProtocol ?? protocol;
93
+ const definition = HUB_PROTOCOL_REGISTRY[protocolKey];
91
94
  if (!definition) {
92
- throw new Error(`Unknown hub protocol: ${protocol}`);
95
+ throw new Error(`Unknown hub protocol: ${protocolKey}`);
93
96
  }
94
97
  return {
95
98
  inbound: instantiateInbound(definition.inbound),
@@ -1,89 +1,8 @@
1
- function extractMessageContent(message) {
2
- const content = (message && typeof message === 'object') ? message.content : undefined;
3
- if (Array.isArray(content)) {
4
- return content
5
- .map((part) => {
6
- if (!part)
7
- return '';
8
- if (typeof part === 'string')
9
- return part;
10
- if (typeof part.text === 'string')
11
- return part.text;
12
- if (typeof part.content === 'string')
13
- return part.content;
14
- return '';
15
- })
16
- .filter(Boolean)
17
- .join('\n');
18
- }
19
- if (typeof content === 'string')
20
- return content;
21
- return '';
22
- }
23
- function mapToolCalls(toolCalls) {
24
- if (!Array.isArray(toolCalls))
25
- return undefined;
26
- return toolCalls
27
- .map((tc) => {
28
- if (!tc || typeof tc !== 'object')
29
- return null;
30
- const fn = tc.function || {};
31
- if (typeof fn?.name !== 'string')
32
- return null;
33
- const args = typeof fn?.arguments === 'string' ? fn.arguments : (() => {
34
- try {
35
- return JSON.stringify(fn?.arguments ?? {});
36
- }
37
- catch {
38
- return '{}';
39
- }
40
- })();
41
- return {
42
- id: typeof tc.id === 'string' ? tc.id : `call_${Math.random().toString(36).slice(2, 10)}`,
43
- type: 'function',
44
- function: {
45
- name: fn.name,
46
- arguments: args
47
- }
48
- };
49
- })
50
- .filter(Boolean);
51
- }
1
+ import { buildProcessedRequestFromChatResponseWithNative } from '../../../router/virtual-router/engine-selection/native-chat-process-node-result-semantics.js';
52
2
  export function buildProcessedRequestFromChatResponse(chatResponse, options) {
53
3
  const streamingEnabled = options?.stream === true;
54
- const firstChoice = Array.isArray(chatResponse?.choices) ? chatResponse.choices[0] : null;
55
- const msg = firstChoice?.message || {};
56
- const content = extractMessageContent(msg);
57
- const toolCalls = mapToolCalls(msg?.tool_calls);
58
- const assistantMessage = {
59
- role: 'assistant',
60
- content,
61
- tool_calls: toolCalls
62
- };
63
- const processedRequest = {
64
- model: typeof chatResponse?.model === 'string' ? chatResponse.model : 'unknown',
65
- messages: [assistantMessage],
66
- tools: undefined,
67
- parameters: {},
68
- metadata: {
69
- originalEndpoint: 'openai-chat',
70
- ...(streamingEnabled ? { stream: true } : {})
71
- },
72
- processed: {
73
- timestamp: Date.now(),
74
- appliedRules: ['response-pipeline'],
75
- status: 'success'
76
- },
77
- processingMetadata: {
78
- streaming: {
79
- enabled: streamingEnabled,
80
- chunkCount: 0,
81
- totalTokens: typeof chatResponse?.usage?.completion_tokens === 'number'
82
- ? chatResponse.usage.completion_tokens
83
- : 0
84
- },
85
- context: {}
86
- }
87
- };
88
- return processedRequest;
4
+ const payload = chatResponse && typeof chatResponse === 'object' && !Array.isArray(chatResponse)
5
+ ? chatResponse
6
+ : { choices: [] };
7
+ return buildProcessedRequestFromChatResponseWithNative(payload, streamingEnabled);
89
8
  }
@@ -32,6 +32,15 @@ export interface ProviderResponseConversionOptions {
32
32
  body: JsonObject;
33
33
  metadata?: JsonObject;
34
34
  }) => Promise<ProviderResponseConversionResult>;
35
+ clientInjectDispatch?: (options: {
36
+ entryEndpoint: string;
37
+ requestId: string;
38
+ body?: JsonObject;
39
+ metadata?: JsonObject;
40
+ }) => Promise<{
41
+ ok: boolean;
42
+ reason?: string;
43
+ }>;
35
44
  }
36
45
  export interface ProviderResponseConversionResult {
37
46
  body?: JsonObject;
@@ -15,9 +15,10 @@ import { runRespProcessStage3ServerToolOrchestration } from '../pipeline/stages/
15
15
  import { runRespOutboundStage1ClientRemap } from '../pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/index.js';
16
16
  import { runRespOutboundStage2SseStream } from '../pipeline/stages/resp_outbound/resp_outbound_stage2_sse_stream/index.js';
17
17
  import { recordResponsesResponse } from '../../shared/responses-conversation-store.js';
18
- import { ProviderProtocolError } from '../../shared/errors.js';
19
- import { readRuntimeMetadata } from '../../shared/runtime-metadata.js';
18
+ import { ProviderProtocolError } from '../../provider-protocol-error.js';
19
+ import { readRuntimeMetadata } from '../../runtime-metadata.js';
20
20
  import { commitClockReservation, resolveClockConfig } from '../../../servertool/clock/task-store.js';
21
+ import { detectProviderResponseShapeWithNative } from '../../../router/virtual-router/engine-selection/native-chat-process-servertool-orchestration-semantics.js';
21
22
  const PROVIDER_RESPONSE_REGISTRY = {
22
23
  'openai-chat': {
23
24
  createFormatAdapter: () => new ChatFormatAdapter(),
@@ -103,21 +104,6 @@ async function maybeCommitClockReservationFromContext(context) {
103
104
  // best-effort: never break response conversion due to clock persistence errors
104
105
  }
105
106
  }
106
- function detectProviderResponseShape(payload) {
107
- if (!isJsonRecord(payload))
108
- return 'unknown';
109
- const obj = payload;
110
- if (Array.isArray(obj.choices))
111
- return 'openai-chat';
112
- if (Array.isArray(obj.output) || obj.object === 'response')
113
- return 'openai-responses';
114
- if (typeof obj.type === 'string' && String(obj.type).toLowerCase() === 'message' && Array.isArray(obj.content)) {
115
- return 'anthropic-messages';
116
- }
117
- if (Array.isArray(obj.candidates))
118
- return 'gemini-chat';
119
- return 'unknown';
120
- }
121
107
  function inferProviderTypeFromProtocol(protocol) {
122
108
  const p = typeof protocol === 'string' ? protocol.trim().toLowerCase() : '';
123
109
  if (!p)
@@ -150,7 +136,7 @@ async function coerceClientPayloadToCanonicalChatCompletionOrThrow(options) {
150
136
  if (isCanonicalChatCompletion(options.payload)) {
151
137
  return options.payload;
152
138
  }
153
- const detected = detectProviderResponseShape(options.payload);
139
+ const detected = detectProviderResponseShapeWithNative(options.payload);
154
140
  if (detected === 'unknown') {
155
141
  const protocol = options.adapterContext?.providerProtocol;
156
142
  throw new ProviderProtocolError(`[hub_response] Non-canonical response payload at ${options.scope}`, {
@@ -274,8 +260,11 @@ function applyModelOverride(payload, model) {
274
260
  /* ignore */
275
261
  }
276
262
  }
277
- function resolveChatReasoningMode(_entryEndpoint) {
278
- // 当前保持默认策略:保留 reasoning_content 字段,不做额外拼接或删除。
263
+ function resolveChatReasoningMode(entryEndpoint) {
264
+ const lowered = (entryEndpoint || '').toLowerCase();
265
+ if (lowered.includes('/v1/chat/completions')) {
266
+ return 'keep';
267
+ }
279
268
  return 'keep';
280
269
  }
281
270
  export async function convertProviderResponse(options) {
@@ -309,19 +298,17 @@ export async function convertProviderResponse(options) {
309
298
  stageRecorder: options.stageRecorder
310
299
  });
311
300
  stripInternalPolicyDebugFields(compatPayload);
312
- const formatAdapter = plan.createFormatAdapter();
313
301
  const mapper = plan.createMapper();
314
302
  const formatEnvelope = await runRespInboundStage2FormatParse({
315
303
  adapterContext: options.context,
316
304
  payload: compatPayload,
317
- formatAdapter,
318
305
  stageRecorder: options.stageRecorder
319
306
  });
320
307
  // Phase 2 (shadow): response tool surface mismatch detection (provider inbound).
321
308
  // Only records diffs; does not rewrite payload.
322
309
  try {
323
310
  if (options.stageRecorder && isToolSurfaceShadowEnabled()) {
324
- const detected = detectProviderResponseShape(formatEnvelope.payload);
311
+ const detected = detectProviderResponseShapeWithNative(formatEnvelope.payload);
325
312
  if (detected !== 'unknown' && detected !== options.providerProtocol) {
326
313
  const summary = summarizeToolCallsFromProviderResponse(formatEnvelope.payload);
327
314
  options.stageRecorder.record('hub_toolsurface.shadow.provider_inbound', {
@@ -371,7 +358,8 @@ export async function convertProviderResponse(options) {
371
358
  providerProtocol: options.providerProtocol,
372
359
  stageRecorder: options.stageRecorder,
373
360
  providerInvoker: options.providerInvoker,
374
- reenterPipeline: options.reenterPipeline
361
+ reenterPipeline: options.reenterPipeline,
362
+ clientInjectDispatch: options.clientInjectDispatch
375
363
  });
376
364
  let effectiveChatResponse = orchestration.payload;
377
365
  // Hard gate: response-side chat_process requires an OpenAI-chat-like surface (choices[].message).
@@ -423,7 +411,7 @@ export async function convertProviderResponse(options) {
423
411
  // Phase 2 (shadow): response tool surface mismatch detection (client outbound).
424
412
  try {
425
413
  if (options.stageRecorder && isToolSurfaceShadowEnabled()) {
426
- const detected = detectProviderResponseShape(clientPayload);
414
+ const detected = detectProviderResponseShapeWithNative(clientPayload);
427
415
  if (detected !== 'unknown' && detected !== clientProtocol) {
428
416
  const summary = summarizeToolCallsFromProviderResponse(clientPayload);
429
417
  options.stageRecorder.record('hub_toolsurface.shadow.client_outbound', {
@@ -464,7 +452,13 @@ export async function convertProviderResponse(options) {
464
452
  // Commit scheduled-task delivery only after a successful client payload/stream is prepared.
465
453
  await maybeCommitClockReservationFromContext(options.context);
466
454
  if (outbound.stream) {
467
- return { __sse_responses: outbound.stream, format: clientProtocol };
455
+ const usage = clientPayload && typeof clientPayload === 'object' && !Array.isArray(clientPayload)
456
+ ? clientPayload.usage
457
+ : undefined;
458
+ const body = usage !== undefined
459
+ ? { usage }
460
+ : undefined;
461
+ return { __sse_responses: outbound.stream, body, format: clientProtocol };
468
462
  }
469
463
  return { body: clientPayload, format: clientProtocol };
470
464
  }
@@ -1,9 +1,32 @@
1
1
  import { buildOpenAIChatFromGeminiResponse } from '../../codecs/gemini-openai-codec.js';
2
2
  import { buildChatResponseFromResponses } from '../../shared/responses-response-utils.js';
3
3
  import { buildOpenAIChatFromAnthropicMessage } from './response-runtime.js';
4
+ import { resolveAliasMapFromRespSemanticsWithNative } from '../../../router/virtual-router/engine-selection/native-hub-pipeline-resp-semantics.js';
5
+ function injectResponsesReasoningExtension(payload) {
6
+ if (payload.__responses_reasoning) {
7
+ return;
8
+ }
9
+ const choices = Array.isArray(payload.choices) ? payload.choices : [];
10
+ const primary = choices[0] && typeof choices[0] === 'object' ? choices[0] : undefined;
11
+ const message = primary && typeof primary.message === 'object' ? primary.message : undefined;
12
+ if (!message)
13
+ return;
14
+ const reasoningText = typeof message.reasoning_content === 'string' && message.reasoning_content.trim().length
15
+ ? String(message.reasoning_content).trim()
16
+ : undefined;
17
+ if (!reasoningText)
18
+ return;
19
+ payload.__responses_reasoning = {
20
+ content: [{ type: 'reasoning_text', text: reasoningText }]
21
+ };
22
+ }
4
23
  export class OpenAIChatResponseMapper {
5
24
  toChatCompletion(format, _ctx) {
6
- return (format.payload ?? {});
25
+ const payload = (format.payload ?? {});
26
+ if (payload && typeof payload === 'object') {
27
+ injectResponsesReasoningExtension(payload);
28
+ }
29
+ return payload;
7
30
  }
8
31
  }
9
32
  export class ResponsesResponseMapper {
@@ -13,7 +36,7 @@ export class ResponsesResponseMapper {
13
36
  }
14
37
  export class AnthropicResponseMapper {
15
38
  toChatCompletion(format, _ctx, options) {
16
- const aliasMap = extractToolNameAliasMapFromSemantics(options?.requestSemantics);
39
+ const aliasMap = resolveAliasMapFromRespSemanticsWithNative(options?.requestSemantics);
17
40
  return buildOpenAIChatFromAnthropicMessage(format.payload ?? {}, { aliasMap });
18
41
  }
19
42
  }
@@ -22,28 +45,3 @@ export class GeminiResponseMapper {
22
45
  return buildOpenAIChatFromGeminiResponse(format.payload ?? {});
23
46
  }
24
47
  }
25
- function extractToolNameAliasMapFromSemantics(semantics) {
26
- if (!semantics || typeof semantics !== 'object' || Array.isArray(semantics)) {
27
- return undefined;
28
- }
29
- const toolsNode = semantics.tools;
30
- const candidate = toolsNode && typeof toolsNode === 'object' && !Array.isArray(toolsNode)
31
- ? toolsNode.toolNameAliasMap
32
- : undefined;
33
- if (!candidate || typeof candidate !== 'object' || Array.isArray(candidate)) {
34
- return undefined;
35
- }
36
- const normalized = {};
37
- for (const [key, value] of Object.entries(candidate)) {
38
- if (typeof key !== 'string' || typeof value !== 'string') {
39
- continue;
40
- }
41
- const trimmedKey = key.trim();
42
- const trimmedValue = value.trim();
43
- if (!trimmedKey.length || !trimmedValue.length) {
44
- continue;
45
- }
46
- normalized[trimmedKey] = trimmedValue;
47
- }
48
- return Object.keys(normalized).length ? normalized : undefined;
49
- }
@@ -1,8 +1,9 @@
1
1
  import { extractToolCallsFromReasoningText } from '../../shared/reasoning-tool-parser.js';
2
2
  import { deriveToolCallKey } from '../../shared/tool-call-utils.js';
3
- import { createBridgeActionState, runBridgeActionPipeline } from '../../shared/bridge-actions.js';
4
- import { resolveBridgePolicy, resolvePolicyActions } from '../../shared/bridge-policies.js';
3
+ import { createBridgeActionState, runBridgeActionPipeline } from '../../bridge-actions.js';
4
+ import { resolveBridgePolicy, resolvePolicyActions } from '../../bridge-policies.js';
5
5
  import { normalizeAnthropicToolName } from '../../shared/anthropic-message-utils.js';
6
+ import { buildAnthropicResponseFromChatWithNative } from '../../../router/virtual-router/engine-selection/native-hub-pipeline-resp-semantics.js';
6
7
  import { registerResponsesReasoning, consumeResponsesReasoning, registerResponsesOutputTextMeta, consumeResponsesOutputTextMeta, consumeResponsesPayloadSnapshot, registerResponsesPayloadSnapshot, consumeResponsesPassthrough, registerResponsesPassthrough } from '../../shared/responses-reasoning-registry.js';
7
8
  function flattenAnthropicContent(content) {
8
9
  if (typeof content === 'string')
@@ -152,7 +153,20 @@ export function buildOpenAIChatFromAnthropicMessage(payload, options) {
152
153
  continue;
153
154
  const kind = String(part.type || '').toLowerCase();
154
155
  if (kind === 'text' && typeof part.text === 'string') {
155
- textParts.push(part.text);
156
+ const rawText = part.text;
157
+ if (/<\s*(tool_call|function_call)\b|\[\s*(tool_call|function_call)\b/i.test(rawText)) {
158
+ const { cleanedText, toolCalls: inferred } = extractToolCallsFromReasoningText(rawText, { idPrefix: 'anthropic_text' });
159
+ const trimmed = cleanedText.trim();
160
+ if (trimmed.length) {
161
+ textParts.push(trimmed);
162
+ }
163
+ if (Array.isArray(inferred) && inferred.length) {
164
+ inferredToolCalls.push(...inferred);
165
+ }
166
+ }
167
+ else {
168
+ textParts.push(rawText);
169
+ }
156
170
  }
157
171
  else if (kind === 'tool_use') {
158
172
  const rawName = typeof part.name === 'string'
@@ -277,10 +291,18 @@ export function buildOpenAIChatFromAnthropicMessage(payload, options) {
277
291
  ? payload['usage']
278
292
  : undefined
279
293
  };
294
+ const localReasoning = reasoningParts.length
295
+ ? {
296
+ content: reasoningParts.map((text) => ({ type: 'reasoning_text', text }))
297
+ }
298
+ : undefined;
280
299
  const preserved = consumeResponsesReasoning(chatResponse.id);
281
- if (preserved && preserved.length) {
300
+ if (preserved) {
282
301
  chatResponse.__responses_reasoning = preserved;
283
302
  }
303
+ else if (localReasoning) {
304
+ chatResponse.__responses_reasoning = localReasoning;
305
+ }
284
306
  const preservedOutputMeta = consumeResponsesOutputTextMeta(chatResponse.id);
285
307
  if (preservedOutputMeta) {
286
308
  chatResponse.__responses_output_text_meta = preservedOutputMeta;
@@ -288,6 +310,7 @@ export function buildOpenAIChatFromAnthropicMessage(payload, options) {
288
310
  const payloadSnapshot = consumeResponsesPayloadSnapshot(chatResponse.id);
289
311
  if (payloadSnapshot) {
290
312
  registerResponsesPayloadSnapshot(chatResponse.id, payloadSnapshot);
313
+ chatResponse.__responses_payload_snapshot = payloadSnapshot;
291
314
  if (typeof chatResponse.request_id !== 'string') {
292
315
  chatResponse.request_id = chatResponse.id;
293
316
  }
@@ -295,6 +318,7 @@ export function buildOpenAIChatFromAnthropicMessage(payload, options) {
295
318
  const passthroughPayload = consumeResponsesPassthrough(chatResponse.id);
296
319
  if (passthroughPayload) {
297
320
  registerResponsesPassthrough(chatResponse.id, passthroughPayload);
321
+ chatResponse.__responses_passthrough = passthroughPayload;
298
322
  if (typeof chatResponse.request_id !== 'string') {
299
323
  chatResponse.request_id = chatResponse.id;
300
324
  }
@@ -348,7 +372,6 @@ export function buildAnthropicResponseFromChat(chatResponse, options) {
348
372
  const choice = Array.isArray(chatResponse?.choices) ? chatResponse.choices[0] : undefined;
349
373
  const message = choice && typeof choice === 'object' ? choice.message : undefined;
350
374
  const aliasMap = options?.aliasMap;
351
- const outboundAliasSerializer = createToolAliasSerializer(aliasMap);
352
375
  if (message) {
353
376
  try {
354
377
  const bridgePolicy = resolveBridgePolicy({ protocol: 'anthropic-messages' });
@@ -371,99 +394,8 @@ export function buildAnthropicResponseFromChat(chatResponse, options) {
371
394
  // ignore policy failures
372
395
  }
373
396
  }
374
- const text = flattenAnthropicContent(message?.content);
375
- const toolCalls = Array.isArray(message?.tool_calls) ? message.tool_calls : [];
376
- const contentBlocks = [];
377
- const reasoningRaw = message?.reasoning_content ?? message?.reasoning;
378
- const reasoningText = typeof reasoningRaw === 'string'
379
- ? reasoningRaw.trim()
380
- : flattenAnthropicContent(reasoningRaw).trim();
381
- if (reasoningText) {
382
- contentBlocks.push({ type: 'thinking', text: reasoningText });
383
- }
384
- if (text && text.trim().length) {
385
- contentBlocks.push({ type: 'text', text });
386
- }
387
- for (const call of toolCalls) {
388
- if (!call || typeof call !== 'object')
389
- continue;
390
- const fn = call.function || {};
391
- if (typeof fn?.name !== 'string')
392
- continue;
393
- const canonicalName = normalizeAnthropicToolName(fn.name) ?? fn.name;
394
- const serializedName = outboundAliasSerializer(canonicalName || fn.name);
395
- let parsedArgs = {};
396
- const args = fn.arguments;
397
- if (typeof args === 'string') {
398
- try {
399
- parsedArgs = JSON.parse(args);
400
- }
401
- catch {
402
- parsedArgs = { _raw: args };
403
- }
404
- }
405
- else {
406
- parsedArgs = args ?? {};
407
- }
408
- if ((canonicalName || '').trim() === 'shell_command') {
409
- parsedArgs = mapShellCommandArgsForAnthropic(parsedArgs);
410
- }
411
- contentBlocks.push({
412
- type: 'tool_use',
413
- id: sanitizeAnthropicToolUseId(call.id),
414
- name: serializedName,
415
- input: parsedArgs
416
- });
417
- }
418
- const toolResults = extractToolResultBlocks(chatResponse);
419
- for (const block of toolResults) {
420
- const sanitized = {
421
- type: 'tool_result',
422
- tool_use_id: block.tool_use_id,
423
- content: block.content ?? ''
424
- };
425
- if (typeof block.is_error === 'boolean') {
426
- sanitized.is_error = block.is_error;
427
- }
428
- contentBlocks.push(sanitized);
429
- }
430
- const usage = chatResponse?.usage;
431
- const usageInputTokens = usage && typeof usage === 'object'
432
- ? coerceNonNegativeNumber(usage.input_tokens, usage.prompt_tokens)
433
- : undefined;
434
- const usageOutputTokens = usage && typeof usage === 'object'
435
- ? coerceNonNegativeNumber(usage.output_tokens, usage.completion_tokens)
436
- : undefined;
437
- const stopReason = typeof choice?.finish_reason === 'string'
438
- ? choice.finish_reason
439
- : undefined;
440
- const stopReasonMapped = (() => {
441
- switch (stopReason) {
442
- case 'tool_calls': return 'tool_use';
443
- case 'length': return 'max_tokens';
444
- case 'content_filter': return 'stop_sequence';
445
- default: return 'end_turn';
446
- }
447
- })();
448
- const canonicalId = typeof chatResponse.request_id === 'string'
449
- ? chatResponse.request_id
450
- : (typeof chatResponse.id === 'string' ? chatResponse.id : `resp_${Date.now()}`);
451
- const raw = {
452
- id: canonicalId,
453
- type: 'message',
454
- role: 'assistant',
455
- content: contentBlocks,
456
- model: typeof chatResponse.model === 'string' ? chatResponse.model : 'unknown',
457
- stop_reason: stopReasonMapped,
458
- usage: usage && typeof usage === 'object'
459
- ? {
460
- input_tokens: usageInputTokens ?? 0,
461
- output_tokens: usageOutputTokens ?? 0
462
- }
463
- : undefined
464
- };
465
- const sanitized = sanitizeAnthropicMessage(raw);
466
- if (Array.isArray(chatResponse?.__responses_reasoning)) {
397
+ const sanitized = buildAnthropicResponseFromChatWithNative(chatResponse, aliasMap);
398
+ if (chatResponse?.__responses_reasoning) {
467
399
  registerResponsesReasoning(sanitized.id, chatResponse.__responses_reasoning);
468
400
  }
469
401
  if (chatResponse?.__responses_output_text_meta) {
@@ -1 +1,2 @@
1
1
  export { AnthropicSemanticMapper } from '../operation-table/semantic-mappers/anthropic-mapper.js';
2
+ export { buildAnthropicToolAliasMapWithNative } from '../../../router/virtual-router/engine-selection/native-chat-process-governance-semantics.js';
@@ -1 +1,2 @@
1
1
  export { AnthropicSemanticMapper } from '../operation-table/semantic-mappers/anthropic-mapper.js';
2
+ export { buildAnthropicToolAliasMapWithNative } from '../../../router/virtual-router/engine-selection/native-chat-process-governance-semantics.js';
@@ -1 +1,2 @@
1
1
  export { ChatSemanticMapper, maybeAugmentApplyPatchErrorContent } from '../operation-table/semantic-mappers/chat-mapper.js';
2
+ export { mapReqInboundBridgeToolsToChatWithNative } from '../../../router/virtual-router/engine-selection/native-hub-pipeline-req-inbound-semantics.js';
@@ -1 +1,2 @@
1
1
  export { ChatSemanticMapper, maybeAugmentApplyPatchErrorContent } from '../operation-table/semantic-mappers/chat-mapper.js';
2
+ export { mapReqInboundBridgeToolsToChatWithNative } from '../../../router/virtual-router/engine-selection/native-hub-pipeline-req-inbound-semantics.js';
@@ -1 +1,2 @@
1
1
  export { GeminiSemanticMapper } from '../operation-table/semantic-mappers/gemini-mapper.js';
2
+ export { applyClaudeThinkingToolSchemaCompatWithNative } from '../../../router/virtual-router/engine-selection/native-hub-pipeline-req-outbound-semantics.js';
@@ -1 +1,2 @@
1
1
  export { GeminiSemanticMapper } from '../operation-table/semantic-mappers/gemini-mapper.js';
2
+ export { applyClaudeThinkingToolSchemaCompatWithNative } from '../../../router/virtual-router/engine-selection/native-hub-pipeline-req-outbound-semantics.js';
@@ -1 +1,2 @@
1
1
  export { ResponsesSemanticMapper } from '../operation-table/semantic-mappers/responses-mapper.js';
2
+ export { normalizeProviderProtocolTokenWithNative } from '../../../router/virtual-router/engine-selection/native-hub-pipeline-req-inbound-semantics.js';
@@ -1 +1,2 @@
1
1
  export { ResponsesSemanticMapper } from '../operation-table/semantic-mappers/responses-mapper.js';
2
+ export { normalizeProviderProtocolTokenWithNative } from '../../../router/virtual-router/engine-selection/native-hub-pipeline-req-inbound-semantics.js';
@@ -1,5 +1,6 @@
1
- import { createSnapshotWriter } from '../shared/snapshot-utils.js';
1
+ import { createSnapshotWriter } from '../snapshot-utils.js';
2
2
  import { jsonClone } from './types/json.js';
3
+ import { parseLenientJsonishWithNative } from '../../router/virtual-router/engine-selection/native-shared-conversion-semantics.js';
3
4
  export class SnapshotStageRecorder {
4
5
  options;
5
6
  writer;
@@ -85,9 +86,6 @@ function buildOpenAIChatSnapshot(envelope) {
85
86
  return snapshot;
86
87
  }
87
88
  function buildMetaSnapshot(metadata) {
88
- if (!metadata || typeof metadata !== 'object') {
89
- return undefined;
90
- }
91
89
  const meta = {};
92
90
  if (metadata.context) {
93
91
  meta.context = jsonClone(metadata.context);
@@ -111,6 +109,15 @@ function buildMetaSnapshot(metadata) {
111
109
  return Object.keys(meta).length ? meta : undefined;
112
110
  }
113
111
  function cloneJson(payload) {
112
+ try {
113
+ const nativeCloned = parseLenientJsonishWithNative(payload);
114
+ if (nativeCloned && typeof nativeCloned === 'object' && !Array.isArray(nativeCloned)) {
115
+ return nativeCloned;
116
+ }
117
+ }
118
+ catch {
119
+ // native clone is best-effort
120
+ }
114
121
  try {
115
122
  return JSON.parse(JSON.stringify(payload));
116
123
  }