@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
@@ -49,6 +49,9 @@ export class ResponsesResponseBuilder {
49
49
  case 'response.output_item.added':
50
50
  this.handleOutputItemStart(this.mapOutputItemAdded(event));
51
51
  break;
52
+ case 'response.output_item.done':
53
+ this.handleOutputItemDone(this.mapOutputItemDone(event));
54
+ break;
52
55
  case 'response.content_part.added':
53
56
  this.handleContentPartStart(this.mapContentPartAdded(event));
54
57
  break;
@@ -69,6 +72,18 @@ export class ResponsesResponseBuilder {
69
72
  case 'response.reasoning_image.delta':
70
73
  this.handleReasoningDelta(this.mapReasoningDelta(event));
71
74
  break;
75
+ case 'response.reasoning_summary_text.delta':
76
+ this.handleReasoningSummaryDelta(event);
77
+ break;
78
+ case 'response.reasoning_summary_text.done':
79
+ this.handleReasoningSummaryDone(event);
80
+ break;
81
+ case 'response.reasoning_summary_part.added':
82
+ this.handleReasoningSummaryPartAdded(event);
83
+ break;
84
+ case 'response.reasoning_summary_part.done':
85
+ this.handleReasoningSummaryPartDone(event);
86
+ break;
72
87
  case 'response.reasoning_text.done':
73
88
  this.handleReasoningDone(this.mapReasoningDone(event));
74
89
  break;
@@ -198,11 +213,14 @@ export class ResponsesResponseBuilder {
198
213
  contentParts: data.content_index !== undefined ? [] : [],
199
214
  currentContentIndex: 0,
200
215
  accumulatedContent: [],
216
+ summaryByIndex: new Map(),
217
+ currentSummaryIndex: 0,
201
218
  hasContentPartAdded: false,
202
219
  isTextInProgress: false,
203
220
  role: data.role,
204
221
  callId: data.call_id,
205
222
  name: data.name,
223
+ encryptedContent: typeof data.encrypted_content === 'string' ? data.encrypted_content : undefined,
206
224
  startTime: event.timestamp,
207
225
  lastEventTime: event.timestamp
208
226
  };
@@ -228,7 +246,20 @@ export class ResponsesResponseBuilder {
228
246
  status: data.status ?? item.status ?? 'in_progress',
229
247
  role: data.role ?? item.role,
230
248
  call_id: data.call_id ?? item.call_id,
231
- name: data.name ?? item.name
249
+ name: data.name ?? item.name,
250
+ encrypted_content: typeof item.encrypted_content === 'string' ? item.encrypted_content : undefined
251
+ }
252
+ };
253
+ }
254
+ mapOutputItemDone(event) {
255
+ const data = event.data;
256
+ const item = data.item || {};
257
+ return {
258
+ ...event,
259
+ type: 'output_item.done',
260
+ data: {
261
+ item_id: data.item_id ?? item.id,
262
+ item
232
263
  }
233
264
  };
234
265
  }
@@ -515,7 +546,18 @@ export class ResponsesResponseBuilder {
515
546
  if (!outputItemState) {
516
547
  throw new Error(`Output item not found: ${data.item_id}`);
517
548
  }
518
- outputItemState.accumulatedContent = data.summary || [];
549
+ outputItemState.accumulatedContent = [];
550
+ if (Array.isArray(data.summary)) {
551
+ data.summary.forEach((entry, index) => {
552
+ if (typeof entry === 'string') {
553
+ outputItemState.summaryByIndex.set(index, entry);
554
+ return;
555
+ }
556
+ if (entry && typeof entry === 'object' && typeof entry.text === 'string') {
557
+ outputItemState.summaryByIndex.set(index, entry.text);
558
+ }
559
+ });
560
+ }
519
561
  outputItemState.lastEventTime = event.timestamp;
520
562
  }
521
563
  /**
@@ -530,6 +572,86 @@ export class ResponsesResponseBuilder {
530
572
  outputItemState.accumulatedContent.push(data.delta);
531
573
  outputItemState.lastEventTime = event.timestamp;
532
574
  }
575
+ handleReasoningSummaryDelta(event) {
576
+ const data = event.data;
577
+ const outputItemState = this.outputItemBuilders.get(data.item_id);
578
+ if (!outputItemState) {
579
+ throw new Error(`Output item not found: ${data.item_id}`);
580
+ }
581
+ const index = typeof data.summary_index === 'number'
582
+ ? data.summary_index
583
+ : outputItemState.currentSummaryIndex;
584
+ const delta = typeof data.delta === 'string' ? data.delta : '';
585
+ if (!delta) {
586
+ return;
587
+ }
588
+ const previous = outputItemState.summaryByIndex.get(index) ?? '';
589
+ outputItemState.summaryByIndex.set(index, `${previous}${delta}`);
590
+ outputItemState.currentSummaryIndex = index;
591
+ outputItemState.lastEventTime = event.timestamp;
592
+ }
593
+ handleReasoningSummaryDone(event) {
594
+ const data = event.data;
595
+ const outputItemState = this.outputItemBuilders.get(data.item_id);
596
+ if (!outputItemState) {
597
+ throw new Error(`Output item not found: ${data.item_id}`);
598
+ }
599
+ const index = typeof data.summary_index === 'number'
600
+ ? data.summary_index
601
+ : outputItemState.currentSummaryIndex;
602
+ const text = typeof data.text === 'string' ? data.text : '';
603
+ if (!text) {
604
+ return;
605
+ }
606
+ outputItemState.summaryByIndex.set(index, text);
607
+ outputItemState.currentSummaryIndex = index;
608
+ outputItemState.lastEventTime = event.timestamp;
609
+ }
610
+ handleReasoningSummaryPartAdded(event) {
611
+ const data = event.data;
612
+ const outputItemState = this.outputItemBuilders.get(data.item_id);
613
+ if (!outputItemState) {
614
+ throw new Error(`Output item not found: ${data.item_id}`);
615
+ }
616
+ let index;
617
+ if (typeof data.summary_index === 'number') {
618
+ index = data.summary_index;
619
+ }
620
+ else if (outputItemState.summaryByIndex.size) {
621
+ let maxIndex = -1;
622
+ for (const key of outputItemState.summaryByIndex.keys()) {
623
+ if (key > maxIndex)
624
+ maxIndex = key;
625
+ }
626
+ index = maxIndex + 1;
627
+ }
628
+ else {
629
+ index = 0;
630
+ }
631
+ if (!outputItemState.summaryByIndex.has(index)) {
632
+ outputItemState.summaryByIndex.set(index, '');
633
+ }
634
+ outputItemState.currentSummaryIndex = index;
635
+ outputItemState.lastEventTime = event.timestamp;
636
+ }
637
+ handleReasoningSummaryPartDone(event) {
638
+ const data = event.data;
639
+ const outputItemState = this.outputItemBuilders.get(data.item_id);
640
+ if (!outputItemState) {
641
+ throw new Error(`Output item not found: ${data.item_id}`);
642
+ }
643
+ const index = typeof data.summary_index === 'number'
644
+ ? data.summary_index
645
+ : outputItemState.currentSummaryIndex;
646
+ const part = data.part && typeof data.part === 'object' ? data.part : undefined;
647
+ const text = part && typeof part.text === 'string' ? part.text : '';
648
+ if (!text) {
649
+ return;
650
+ }
651
+ outputItemState.summaryByIndex.set(index, text);
652
+ outputItemState.currentSummaryIndex = index;
653
+ outputItemState.lastEventTime = event.timestamp;
654
+ }
533
655
  mapReasoningDelta(event) {
534
656
  const data = event.data;
535
657
  return {
@@ -565,6 +687,10 @@ export class ResponsesResponseBuilder {
565
687
  if (!outputItemState) {
566
688
  throw new Error(`Output item not found: ${data.item_id}`);
567
689
  }
690
+ const text = typeof data.text === 'string' ? data.text : '';
691
+ if (text && outputItemState.accumulatedContent.length === 0) {
692
+ outputItemState.accumulatedContent.push({ type: 'reasoning_text', text });
693
+ }
568
694
  outputItemState.status = 'completed';
569
695
  outputItemState.lastEventTime = event.timestamp;
570
696
  }
@@ -580,6 +706,23 @@ export class ResponsesResponseBuilder {
580
706
  // 若为 custom_tool_call 变体(已在 start 阶段重命名为 function_call),尝试提取 name/arguments
581
707
  try {
582
708
  const item = data.item || {};
709
+ if (outputItemState.type === 'reasoning' && item && typeof item === 'object') {
710
+ if (!outputItemState.encryptedContent && typeof item.encrypted_content === 'string') {
711
+ outputItemState.encryptedContent = item.encrypted_content;
712
+ }
713
+ const summary = Array.isArray(item.summary) ? item.summary : [];
714
+ if (summary.length && outputItemState.summaryByIndex.size === 0) {
715
+ summary.forEach((entry, index) => {
716
+ if (typeof entry === 'string') {
717
+ outputItemState.summaryByIndex.set(index, entry);
718
+ return;
719
+ }
720
+ if (entry && typeof entry === 'object' && typeof entry.text === 'string') {
721
+ outputItemState.summaryByIndex.set(index, entry.text);
722
+ }
723
+ });
724
+ }
725
+ }
583
726
  if (outputItemState.type === 'function_call') {
584
727
  if (!outputItemState.name && typeof item.name === 'string')
585
728
  outputItemState.name = item.name;
@@ -775,12 +918,27 @@ export class ResponsesResponseBuilder {
775
918
  * 构建推理项
776
919
  */
777
920
  buildReasoningItem(state) {
778
- return {
921
+ const summaryEntries = state.summaryByIndex.size > 0
922
+ ? Array.from(state.summaryByIndex.entries())
923
+ .sort((a, b) => a[0] - b[0])
924
+ .map(([, text]) => text)
925
+ .filter(item => typeof item === 'string')
926
+ : (Array.isArray(state.accumulatedContent)
927
+ ? state.accumulatedContent.filter(item => typeof item === 'string')
928
+ : []);
929
+ const summaryParts = summaryEntries
930
+ .map((text) => typeof text === 'string' && text.length ? ({ type: 'summary_text', text }) : null)
931
+ .filter((entry) => Boolean(entry));
932
+ const item = {
779
933
  id: state.id,
780
934
  type: 'reasoning',
781
- summary: Array.isArray(state.accumulatedContent) ? state.accumulatedContent.filter(item => typeof item === 'string') : [],
935
+ summary: summaryParts,
782
936
  content: state.accumulatedContent.filter(item => typeof item === 'object')
783
937
  };
938
+ if (typeof state.encryptedContent === 'string' && state.encryptedContent.length) {
939
+ item.encrypted_content = state.encryptedContent;
940
+ }
941
+ return item;
784
942
  }
785
943
  /**
786
944
  * 获取构建结果
@@ -231,6 +231,8 @@ export class ResponsesSseToJsonConverterRefactored {
231
231
  break;
232
232
  case 'response.reasoning_text.delta':
233
233
  case 'response.reasoning_text.done':
234
+ case 'response.reasoning_summary_text.delta':
235
+ case 'response.reasoning_summary_text.done':
234
236
  context.eventStats.reasoningEventsCount++;
235
237
  break;
236
238
  case 'response.function_call_arguments.delta':
@@ -141,8 +141,12 @@ export interface ResponsesMessageItem {
141
141
  export interface ResponsesReasoningItem {
142
142
  id: string;
143
143
  type: 'reasoning';
144
- summary?: string[];
145
- content: ResponsesReasoningContent[];
144
+ summary?: Array<string | {
145
+ type: 'summary_text';
146
+ text: string;
147
+ }>;
148
+ content?: ResponsesReasoningContent[];
149
+ encrypted_content?: string;
146
150
  }
147
151
  export type ResponsesReasoningContent = {
148
152
  type: 'reasoning_text';
@@ -179,6 +179,16 @@ const stripConflictMarkers = (text) => {
179
179
  return text;
180
180
  }
181
181
  };
182
+ const splitInlineBeginPatchFileHeader = (text) => {
183
+ if (!text)
184
+ return text;
185
+ return text.replace(/\*\*\*\s*Begin Patch(?:\s*\*\*\*)?\s*(Create|Add|Update|Delete)\s+File:\s*([^\n]+?)(?:\s+\*\*\*)?(?=\n|$)/gi, (_m, actionRaw, pathRaw) => {
186
+ const action = String(actionRaw || '').trim().toLowerCase();
187
+ const mappedAction = action === 'create' ? 'Add' : `${action.charAt(0).toUpperCase()}${action.slice(1)}`;
188
+ const path = String(pathRaw || '').trim();
189
+ return `*** Begin Patch\n*** ${mappedAction} File: ${path}`;
190
+ });
191
+ };
182
192
  export const normalizeApplyPatchText = (raw) => {
183
193
  if (!raw)
184
194
  return raw;
@@ -189,6 +199,7 @@ export const normalizeApplyPatchText = (raw) => {
189
199
  if (!text)
190
200
  return raw;
191
201
  text = stripConflictMarkers(text);
202
+ text = splitInlineBeginPatchFileHeader(text);
192
203
  text = normalizeBeginEndMarkers(text);
193
204
  // Some models emit a GNU unified diff wrapped in apply_patch markers, e.g.:
194
205
  // *** Begin Patch ***
@@ -8,6 +8,11 @@ const resolveTopLevelFile = (record) => {
8
8
  asString(record.filename);
9
9
  if (direct)
10
10
  return direct;
11
+ // Shape fix: treat top-level target as file path when changes exist.
12
+ const target = asString(record.target);
13
+ if (target && Array.isArray(record.changes) && record.changes.length > 0) {
14
+ return target;
15
+ }
11
16
  return undefined;
12
17
  };
13
18
  const buildSingleChangePayload = (record) => {
@@ -21,6 +21,22 @@ const stripArgKeyArtifacts = (input) => {
21
21
  return input;
22
22
  }
23
23
  };
24
+ const repairArgKeyArtifactsInRawJson = (input) => {
25
+ try {
26
+ let out = String(input || '');
27
+ if (!out.includes('<arg_key') && !out.includes('<arg_value') && !out.includes('</arg_key') && !out.includes('</arg_value')) {
28
+ return out;
29
+ }
30
+ // Repair patterns like: "file</arg_key><arg_value>a.ts" -> "file":"a.ts"
31
+ out = out.replace(/"([^"]+?)\s*<\/?\s*arg_key\s*>\s*<\/?\s*arg_value\s*>([^"]*?)"/gi, '"$1":"$2"');
32
+ // Strip remaining tag artifacts after pair repair.
33
+ out = stripArgKeyArtifacts(out);
34
+ return out;
35
+ }
36
+ catch {
37
+ return input;
38
+ }
39
+ };
24
40
  const normalizeObjectKey = (rawKey) => {
25
41
  const cleaned = stripXmlLikeTags(stripArgKeyArtifacts(rawKey)).trim();
26
42
  if (!cleaned)
@@ -143,6 +159,19 @@ export function parseToolArgsJson(input) {
143
159
  return parsed;
144
160
  }
145
161
  catch {
162
+ // attempt raw string repair for arg_key/arg_value artifacts
163
+ try {
164
+ const repairedRaw = repairArgKeyArtifactsInRawJson(raw).trim();
165
+ if (repairedRaw && repairedRaw !== raw) {
166
+ const parsed = JSON.parse(repairedRaw);
167
+ repairArgKeyArtifactsInKeys(parsed);
168
+ repairArgKeyArtifactsInObject(parsed);
169
+ return parsed;
170
+ }
171
+ }
172
+ catch {
173
+ // continue
174
+ }
146
175
  // try stripping common tool-call markup artifacts and parsing again
147
176
  try {
148
177
  const stripped = stripArgKeyArtifacts(raw).trim();
@@ -4,4 +4,7 @@ export type ExecCommandValidationResult = {
4
4
  message?: string;
5
5
  normalizedArgs?: string;
6
6
  };
7
- export declare function validateExecCommandArgs(argsString: string, rawArgs: unknown): ExecCommandValidationResult;
7
+ export type ExecCommandValidationOptions = {
8
+ policyFile?: string;
9
+ };
10
+ export declare function validateExecCommandArgs(argsString: string, rawArgs: unknown, options?: ExecCommandValidationOptions): ExecCommandValidationResult;
@@ -1,5 +1,8 @@
1
1
  import { parseToolArgsJson } from '../args-json.js';
2
2
  import { normalizeExecCommandArgs } from './normalize.js';
3
+ import fs from 'node:fs';
4
+ import os from 'node:os';
5
+ import path from 'node:path';
3
6
  const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
4
7
  const toJson = (value) => {
5
8
  try {
@@ -9,6 +12,7 @@ const toJson = (value) => {
9
12
  return '{}';
10
13
  }
11
14
  };
15
+ const POLICY_CACHE = new Map();
12
16
  const GIT_RESET_HARD_PATTERN = /\bgit\s+reset\s+--hard(?:\s|$)/i;
13
17
  const GIT_CHECKOUT_PATTERN = /\bgit\s+checkout\b/i;
14
18
  const SHELL_SEPARATORS = new Set([';', '&&', '||', '|', '&']);
@@ -124,10 +128,90 @@ function evaluateGitCheckoutScope(command) {
124
128
  }
125
129
  return null;
126
130
  }
127
- function detectPolicyViolation(command) {
131
+ function resolvePolicyPath(rawPath) {
132
+ const trimmed = rawPath.trim();
133
+ if (!trimmed) {
134
+ return '';
135
+ }
136
+ if (trimmed.startsWith('~/')) {
137
+ return path.join(os.homedir(), trimmed.slice(2));
138
+ }
139
+ return path.resolve(trimmed);
140
+ }
141
+ function loadPolicyRules(policyFile) {
142
+ const resolved = typeof policyFile === 'string' ? resolvePolicyPath(policyFile) : '';
143
+ if (!resolved) {
144
+ return [];
145
+ }
146
+ try {
147
+ const stat = fs.statSync(resolved);
148
+ if (!stat.isFile()) {
149
+ return [];
150
+ }
151
+ const cached = POLICY_CACHE.get(resolved);
152
+ if (cached && cached.mtimeMs === stat.mtimeMs) {
153
+ return cached.rules;
154
+ }
155
+ const raw = fs.readFileSync(resolved, 'utf8');
156
+ const parsed = raw.trim() ? JSON.parse(raw) : {};
157
+ const rulesNode = isRecord(parsed) && Array.isArray(parsed.rules) ? parsed.rules : [];
158
+ const rules = [];
159
+ for (const item of rulesNode) {
160
+ if (!isRecord(item)) {
161
+ continue;
162
+ }
163
+ const type = typeof item.type === 'string' ? item.type.trim().toLowerCase() : '';
164
+ if (type !== 'regex') {
165
+ continue;
166
+ }
167
+ const pattern = typeof item.pattern === 'string' ? item.pattern : '';
168
+ if (!pattern.trim()) {
169
+ continue;
170
+ }
171
+ const id = typeof item.id === 'string' && item.id.trim() ? item.id.trim() : `rule_${rules.length + 1}`;
172
+ const reason = typeof item.reason === 'string' && item.reason.trim()
173
+ ? item.reason.trim()
174
+ : `policy rule "${id}" blocked this command`;
175
+ const flagsRaw = typeof item.flags === 'string' ? item.flags.trim() : '';
176
+ let regex;
177
+ try {
178
+ regex = new RegExp(pattern, flagsRaw || 'i');
179
+ }
180
+ catch {
181
+ continue;
182
+ }
183
+ rules.push({ id, regex, reason });
184
+ }
185
+ POLICY_CACHE.set(resolved, { mtimeMs: stat.mtimeMs, rules });
186
+ return rules;
187
+ }
188
+ catch {
189
+ return [];
190
+ }
191
+ }
192
+ function detectPolicyRuleViolation(command, options) {
193
+ const rules = loadPolicyRules(options?.policyFile);
194
+ if (!rules.length) {
195
+ return null;
196
+ }
197
+ for (const rule of rules) {
198
+ if (rule.regex.test(command)) {
199
+ return {
200
+ reason: 'forbidden_exec_command_policy',
201
+ message: rule.reason
202
+ };
203
+ }
204
+ }
205
+ return null;
206
+ }
207
+ function detectPolicyViolation(command, options) {
128
208
  if (!command || !command.trim()) {
129
209
  return null;
130
210
  }
211
+ const policyViolation = detectPolicyRuleViolation(command, options);
212
+ if (policyViolation) {
213
+ return policyViolation;
214
+ }
131
215
  if (GIT_RESET_HARD_PATTERN.test(command)) {
132
216
  return {
133
217
  reason: 'forbidden_git_reset_hard',
@@ -136,7 +220,7 @@ function detectPolicyViolation(command) {
136
220
  }
137
221
  return evaluateGitCheckoutScope(command);
138
222
  }
139
- export function validateExecCommandArgs(argsString, rawArgs) {
223
+ export function validateExecCommandArgs(argsString, rawArgs, options) {
140
224
  const raw = typeof argsString === 'string' ? argsString : String(argsString ?? '');
141
225
  const parsed = isRecord(rawArgs) && Object.keys(rawArgs).length > 0
142
226
  ? rawArgs
@@ -146,7 +230,7 @@ export function validateExecCommandArgs(argsString, rawArgs) {
146
230
  return { ok: false, reason: normalized.reason };
147
231
  }
148
232
  const command = typeof normalized.normalized.cmd === 'string' ? normalized.normalized.cmd : '';
149
- const violation = detectPolicyViolation(command);
233
+ const violation = detectPolicyViolation(command, options);
150
234
  if (violation) {
151
235
  return { ok: false, reason: violation.reason, message: violation.message };
152
236
  }
@@ -5,5 +5,11 @@ export interface ToolValidationResult {
5
5
  warnings?: Array<Record<string, unknown>>;
6
6
  normalizedArgs?: string;
7
7
  }
8
+ export interface ToolValidationOptions {
9
+ execCommandGuard?: {
10
+ enabled?: boolean;
11
+ policyFile?: string;
12
+ };
13
+ }
8
14
  export declare function getAllowedToolNames(): string[];
9
- export declare function validateToolCall(name: string, argsString: string): ToolValidationResult;
15
+ export declare function validateToolCall(name: string, argsString: string, options?: ToolValidationOptions): ToolValidationResult;
@@ -81,7 +81,7 @@ export function getAllowedToolNames() {
81
81
  'list_mcp_resource_templates'
82
82
  ];
83
83
  }
84
- export function validateToolCall(name, argsString) {
84
+ export function validateToolCall(name, argsString, options) {
85
85
  const normalizedName = String(name || '').trim();
86
86
  if (!normalizedName) {
87
87
  return { ok: false, reason: 'empty_tool_name' };
@@ -93,7 +93,8 @@ export function validateToolCall(name, argsString) {
93
93
  const rawArgsAny = parseToolArgsJson(typeof argsString === 'string' ? argsString : '{}');
94
94
  switch (normalizedName) {
95
95
  case 'exec_command': {
96
- const validation = validateExecCommandArgs(argsString, rawArgsAny);
96
+ const guard = options?.execCommandGuard;
97
+ const validation = validateExecCommandArgs(argsString, rawArgsAny, guard && guard.enabled ? { policyFile: guard.policyFile } : undefined);
97
98
  if (!validation.ok) {
98
99
  const reason = validation.reason || 'unknown';
99
100
  captureExecCommandRegression({