@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
@@ -1,637 +0,0 @@
1
- import { KNOWN_TOOLS, coerceCommandValueToString, filterArgsForTool, genToolCallId } from './extractors-shared.js';
2
- const DEFAULT_JSON_TOOL_NAME_ALIASES = {
3
- shell_command: 'exec_command',
4
- shell: 'exec_command',
5
- bash: 'exec_command',
6
- terminal: 'exec_command'
7
- };
8
- const DEFAULT_JSON_TOOL_ARGUMENT_ALIASES = {
9
- exec_command: {
10
- cmd: ['cmd', 'command', 'script', 'toon', 'input.command', 'input.cmd', 'input.script', 'input.toon'],
11
- command: ['cmd', 'command', 'script', 'toon', 'input.command', 'input.cmd', 'input.script', 'input.toon'],
12
- workdir: ['workdir', 'cwd', 'input.workdir', 'input.cwd']
13
- },
14
- write_stdin: {
15
- chars: ['chars', 'text', 'input', 'data', 'input.chars', 'input.text', 'input.input', 'input.data'],
16
- session_id: ['session_id', 'sessionId', 'input.session_id', 'input.sessionId']
17
- },
18
- apply_patch: {
19
- patch: ['patch', 'text', 'input', 'instructions', 'input.patch', 'input.text', 'input.input', 'input.instructions']
20
- }
21
- };
22
- function escapeControlCharsInsideJsonStrings(raw) {
23
- try {
24
- if (typeof raw !== 'string' || !raw)
25
- return null;
26
- let out = '';
27
- let changed = false;
28
- let inString = false;
29
- let escaped = false;
30
- for (let i = 0; i < raw.length; i++) {
31
- const ch = raw[i];
32
- if (inString) {
33
- if (!escaped && ch === '"') {
34
- inString = false;
35
- out += ch;
36
- continue;
37
- }
38
- if (!escaped && ch === '\\') {
39
- escaped = true;
40
- out += ch;
41
- continue;
42
- }
43
- // JSON disallows unescaped control chars inside strings; models sometimes emit raw newlines/tabs.
44
- if (!escaped) {
45
- if (ch === '\n') {
46
- out += '\\n';
47
- changed = true;
48
- continue;
49
- }
50
- if (ch === '\r') {
51
- if (raw[i + 1] === '\n') {
52
- i++;
53
- }
54
- out += '\\n';
55
- changed = true;
56
- continue;
57
- }
58
- if (ch === '\t') {
59
- out += '\\t';
60
- changed = true;
61
- continue;
62
- }
63
- const code = ch.charCodeAt(0);
64
- if (code >= 0 && code < 0x20) {
65
- out += `\\u${code.toString(16).padStart(4, '0')}`;
66
- changed = true;
67
- continue;
68
- }
69
- }
70
- out += ch;
71
- escaped = false;
72
- continue;
73
- }
74
- if (ch === '"') {
75
- inString = true;
76
- out += ch;
77
- continue;
78
- }
79
- out += ch;
80
- }
81
- return changed ? out : null;
82
- }
83
- catch {
84
- return null;
85
- }
86
- }
87
- export function tryParseJsonWithModelRepairs(raw) {
88
- try {
89
- if (typeof raw !== 'string')
90
- return null;
91
- const text = raw.trim();
92
- if (!text)
93
- return null;
94
- try {
95
- return JSON.parse(text);
96
- }
97
- catch {
98
- const repaired = escapeControlCharsInsideJsonStrings(text);
99
- if (!repaired)
100
- return null;
101
- try {
102
- return JSON.parse(repaired);
103
- }
104
- catch {
105
- return null;
106
- }
107
- }
108
- }
109
- catch {
110
- return null;
111
- }
112
- }
113
- export function salvageToolArgsFromRawText(toolName, rawArgs) {
114
- try {
115
- const lname = String(toolName || '').toLowerCase();
116
- const text = String(rawArgs || '');
117
- const out = {};
118
- const pickString = (re) => {
119
- const m = text.match(re);
120
- if (!m)
121
- return undefined;
122
- return String(m[1] ?? '');
123
- };
124
- const pickNumber = (re) => {
125
- const m = text.match(re);
126
- if (!m)
127
- return undefined;
128
- const n = Number.parseInt(String(m[1] ?? ''), 10);
129
- return Number.isFinite(n) ? n : undefined;
130
- };
131
- if (lname === 'exec_command') {
132
- const cmd = pickString(/"(?:cmd|command)"\s*:\s*"([\s\S]*?)"\s*(?:,|})/i);
133
- const workdir = pickString(/"(?:workdir|cwd)"\s*:\s*"([\s\S]*?)"\s*(?:,|})/i);
134
- const timeout = pickNumber(/"(?:timeout_ms|timeout)"\s*:\s*(\d+)\s*(?:,|})/i);
135
- if (cmd !== undefined)
136
- out.cmd = cmd;
137
- if (cmd !== undefined)
138
- out.command = cmd;
139
- if (workdir !== undefined)
140
- out.workdir = workdir;
141
- if (timeout !== undefined)
142
- out.timeout_ms = timeout;
143
- return Object.keys(out).length ? out : null;
144
- }
145
- if (lname === 'write_stdin') {
146
- const sessionId = pickNumber(/"(?:session_id|sessionId)"\s*:\s*(\d+)\s*(?:,|})/i);
147
- const chars = pickString(/"(?:chars|text|input|data)"\s*:\s*"([\s\S]*?)"\s*(?:,|})/i);
148
- if (sessionId !== undefined)
149
- out.session_id = sessionId;
150
- if (chars !== undefined)
151
- out.chars = chars;
152
- return Object.keys(out).length ? out : null;
153
- }
154
- if (lname === 'apply_patch') {
155
- const patch = pickString(/"(?:patch|text|input|instructions)"\s*:\s*"([\s\S]*?)"\s*(?:,|})/i);
156
- if (patch !== undefined)
157
- out.patch = patch;
158
- return Object.keys(out).length ? out : null;
159
- }
160
- return null;
161
- }
162
- catch {
163
- return null;
164
- }
165
- }
166
- function extractToolCallEntriesFromUnknown(value) {
167
- if (Array.isArray(value)) {
168
- return value;
169
- }
170
- if (!value || typeof value !== 'object' || Array.isArray(value)) {
171
- return [];
172
- }
173
- const rec = value;
174
- if (Array.isArray(rec.tool_calls)) {
175
- return rec.tool_calls;
176
- }
177
- if (typeof rec.tool_calls === 'string') {
178
- const nested = tryParseJsonWithModelRepairs(rec.tool_calls);
179
- return extractToolCallEntriesFromUnknown(nested);
180
- }
181
- return [];
182
- }
183
- function resolveJsonToolNameAliases(options) {
184
- const merged = { ...DEFAULT_JSON_TOOL_NAME_ALIASES };
185
- const raw = options?.jsonToolRepair?.toolNameAliases;
186
- if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
187
- return merged;
188
- }
189
- for (const [key, value] of Object.entries(raw)) {
190
- const src = String(key || '').trim().toLowerCase();
191
- const dst = String(value || '').trim().toLowerCase();
192
- if (!src || !dst)
193
- continue;
194
- merged[src] = dst;
195
- }
196
- return merged;
197
- }
198
- function resolveJsonToolArgAliases(toolName, options) {
199
- const lname = String(toolName || '').trim().toLowerCase();
200
- const merged = {};
201
- const base = DEFAULT_JSON_TOOL_ARGUMENT_ALIASES[lname];
202
- if (base && typeof base === 'object' && !Array.isArray(base)) {
203
- for (const [target, paths] of Object.entries(base)) {
204
- merged[target] = Array.isArray(paths) ? [...paths] : [];
205
- }
206
- }
207
- const customRoot = options?.jsonToolRepair?.argumentAliases;
208
- if (!customRoot || typeof customRoot !== 'object' || Array.isArray(customRoot)) {
209
- return merged;
210
- }
211
- const custom = customRoot[lname];
212
- if (!custom || typeof custom !== 'object' || Array.isArray(custom)) {
213
- return merged;
214
- }
215
- for (const [target, paths] of Object.entries(custom)) {
216
- if (!Array.isArray(paths))
217
- continue;
218
- merged[target] = paths.map((item) => String(item || '').trim()).filter((item) => item.length > 0);
219
- }
220
- return merged;
221
- }
222
- function hasNonEmptyAliasValue(value) {
223
- if (value === undefined || value === null) {
224
- return false;
225
- }
226
- if (typeof value === 'string') {
227
- return value.trim().length > 0;
228
- }
229
- return true;
230
- }
231
- function readAliasPathValue(source, path) {
232
- const trimmed = String(path || '').trim();
233
- if (!trimmed) {
234
- return undefined;
235
- }
236
- if (!trimmed.includes('.')) {
237
- return source[trimmed];
238
- }
239
- const parts = trimmed.split('.').map((part) => part.trim()).filter((part) => part.length > 0);
240
- if (!parts.length) {
241
- return undefined;
242
- }
243
- let cursor = source;
244
- for (const part of parts) {
245
- if (!cursor || typeof cursor !== 'object' || Array.isArray(cursor)) {
246
- return undefined;
247
- }
248
- cursor = cursor[part];
249
- }
250
- return cursor;
251
- }
252
- function applyJsonToolArgumentAliases(toolName, argsObj, options) {
253
- const mapping = resolveJsonToolArgAliases(toolName, options);
254
- for (const [target, candidates] of Object.entries(mapping)) {
255
- if (!Array.isArray(candidates) || candidates.length === 0) {
256
- continue;
257
- }
258
- const current = argsObj[target];
259
- if (hasNonEmptyAliasValue(current)) {
260
- continue;
261
- }
262
- for (const candidate of candidates) {
263
- const picked = readAliasPathValue(argsObj, candidate);
264
- if (!hasNonEmptyAliasValue(picked)) {
265
- continue;
266
- }
267
- argsObj[target] = picked;
268
- break;
269
- }
270
- }
271
- }
272
- function canonicalizeJsonToolName(value, options) {
273
- if (typeof value !== 'string') {
274
- return null;
275
- }
276
- let name = value.trim();
277
- if (!name) {
278
- return null;
279
- }
280
- if (name.startsWith('functions.')) {
281
- name = name.slice('functions.'.length);
282
- }
283
- const lowered = name.toLowerCase();
284
- const aliasMap = resolveJsonToolNameAliases(options);
285
- const canonical = aliasMap[lowered] ?? lowered;
286
- return KNOWN_TOOLS.has(canonical) ? canonical : null;
287
- }
288
- function coerceToolCallArgsObject(raw) {
289
- if (raw && typeof raw === 'object' && !Array.isArray(raw)) {
290
- return { ...raw };
291
- }
292
- if (typeof raw === 'string') {
293
- const parsed = tryParseJsonWithModelRepairs(raw);
294
- if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
295
- return { ...parsed };
296
- }
297
- return {};
298
- }
299
- if (Array.isArray(raw)) {
300
- const command = raw.map((entry) => String(entry ?? '')).join(' ').trim();
301
- return command ? { command } : {};
302
- }
303
- return {};
304
- }
305
- function normalizeJsonToolArgs(toolName, rawArgs, options) {
306
- const lname = String(toolName || '').toLowerCase();
307
- const argsObj = coerceToolCallArgsObject(rawArgs);
308
- applyJsonToolArgumentAliases(lname, argsObj, options);
309
- if (lname === 'exec_command') {
310
- const cmd = coerceCommandValueToString(argsObj.cmd);
311
- if (!cmd) {
312
- return null;
313
- }
314
- argsObj.cmd = cmd;
315
- argsObj.command = cmd;
316
- if (typeof argsObj.workdir === 'string') {
317
- argsObj.workdir = String(argsObj.workdir).trim();
318
- }
319
- }
320
- if (lname === 'write_stdin') {
321
- if (argsObj.chars !== undefined && argsObj.chars !== null) {
322
- argsObj.chars = String(argsObj.chars);
323
- }
324
- if (argsObj.session_id !== undefined && argsObj.session_id !== null) {
325
- const sid = Number.parseInt(String(argsObj.session_id), 10);
326
- if (Number.isFinite(sid)) {
327
- argsObj.session_id = sid;
328
- }
329
- }
330
- }
331
- if (lname === 'apply_patch') {
332
- if (typeof argsObj.patch === 'string') {
333
- argsObj.patch = String(argsObj.patch);
334
- }
335
- }
336
- const filtered = filterArgsForTool(lname, argsObj);
337
- if (lname === 'exec_command') {
338
- const cmd = typeof filtered?.cmd === 'string' ? String(filtered.cmd).trim() : '';
339
- if (!cmd) {
340
- return null;
341
- }
342
- }
343
- if (lname === 'write_stdin') {
344
- const sid = filtered?.session_id;
345
- if (sid === undefined || sid === null || String(sid).trim().length === 0) {
346
- return null;
347
- }
348
- }
349
- if (lname === 'apply_patch') {
350
- const patch = typeof filtered?.patch === 'string' ? String(filtered.patch).trim() : '';
351
- if (!patch) {
352
- return null;
353
- }
354
- }
355
- return filtered;
356
- }
357
- function normalizeJsonToolCallEntry(entry, options) {
358
- if (!entry || typeof entry !== 'object' || Array.isArray(entry)) {
359
- return null;
360
- }
361
- const rec = entry;
362
- const fn = rec.function && typeof rec.function === 'object' && !Array.isArray(rec.function)
363
- ? rec.function
364
- : undefined;
365
- const name = canonicalizeJsonToolName(rec.name ?? fn?.name, options);
366
- if (!name) {
367
- return null;
368
- }
369
- const argsSource = rec.input !== undefined
370
- ? rec.input
371
- : rec.arguments !== undefined
372
- ? rec.arguments
373
- : fn?.arguments !== undefined
374
- ? fn.arguments
375
- : fn?.input;
376
- const argsObj = normalizeJsonToolArgs(name, argsSource, options);
377
- if (!argsObj) {
378
- return null;
379
- }
380
- let args = '{}';
381
- try {
382
- args = JSON.stringify(argsObj);
383
- }
384
- catch {
385
- args = '{}';
386
- }
387
- const id = typeof rec.call_id === 'string' && rec.call_id.trim().length
388
- ? rec.call_id.trim()
389
- : typeof rec.id === 'string' && rec.id.trim().length
390
- ? rec.id.trim()
391
- : genToolCallId();
392
- return { id, name, args };
393
- }
394
- function extractBalancedJsonObjectAt(text, startIndex) {
395
- if (startIndex < 0 || startIndex >= text.length || text[startIndex] !== '{') {
396
- return null;
397
- }
398
- let depth = 0;
399
- let inString = false;
400
- let escaped = false;
401
- for (let i = startIndex; i < text.length; i += 1) {
402
- const ch = text[i] ?? '';
403
- if (inString) {
404
- if (escaped) {
405
- escaped = false;
406
- continue;
407
- }
408
- if (ch === '\\') {
409
- escaped = true;
410
- continue;
411
- }
412
- if (ch === '"') {
413
- inString = false;
414
- }
415
- continue;
416
- }
417
- if (ch === '"') {
418
- inString = true;
419
- continue;
420
- }
421
- if (ch === '{') {
422
- depth += 1;
423
- continue;
424
- }
425
- if (ch === '}') {
426
- depth -= 1;
427
- if (depth === 0) {
428
- return text.slice(startIndex, i + 1);
429
- }
430
- }
431
- }
432
- return null;
433
- }
434
- function collectEmbeddedToolCallObjects(text) {
435
- const out = [];
436
- const seen = new Set();
437
- const quoteRanges = [];
438
- {
439
- const lower = text.toLowerCase();
440
- let cursor = 0;
441
- while (cursor < lower.length) {
442
- const open = lower.indexOf('<quote>', cursor);
443
- if (open < 0)
444
- break;
445
- const close = lower.indexOf('</quote>', open + '<quote>'.length);
446
- if (close < 0)
447
- break;
448
- quoteRanges.push({ start: open, end: close + '</quote>'.length });
449
- cursor = close + '</quote>'.length;
450
- }
451
- }
452
- const isInsideQuoteRange = (index) => quoteRanges.some((range) => index >= range.start && index < range.end);
453
- for (let i = 0; i < text.length; i += 1) {
454
- if (text[i] !== '{') {
455
- continue;
456
- }
457
- if (isInsideQuoteRange(i)) {
458
- continue;
459
- }
460
- const objectText = extractBalancedJsonObjectAt(text, i);
461
- if (!objectText) {
462
- continue;
463
- }
464
- const trimmed = objectText.trim();
465
- if (trimmed.length > 0 &&
466
- /["']tool_calls["']\s*:/.test(trimmed) &&
467
- !seen.has(trimmed)) {
468
- seen.add(trimmed);
469
- out.push(trimmed);
470
- }
471
- }
472
- return out;
473
- }
474
- function decodeJsonEscapes(raw) {
475
- return String(raw || '')
476
- .replace(/\\r\\n/g, '\n')
477
- .replace(/\\n/g, '\n')
478
- .replace(/\\r/g, '\n')
479
- .replace(/\\t/g, '\t')
480
- .replace(/\\"/g, '"');
481
- }
482
- function extractPossiblyBrokenQuotedValue(text, keys) {
483
- for (const key of keys) {
484
- const re = new RegExp(`"${key}"\\s*:\\s*"`, 'ig');
485
- let match;
486
- while ((match = re.exec(text)) !== null) {
487
- const start = match.index + match[0].length;
488
- let escaped = false;
489
- for (let i = start; i < text.length; i += 1) {
490
- const ch = text[i] ?? '';
491
- if (escaped) {
492
- escaped = false;
493
- continue;
494
- }
495
- if (ch === '\\') {
496
- escaped = true;
497
- continue;
498
- }
499
- if (ch === '"') {
500
- return decodeJsonEscapes(text.slice(start, i));
501
- }
502
- }
503
- return decodeJsonEscapes(text.slice(start));
504
- }
505
- }
506
- return null;
507
- }
508
- function salvageToolCallFromBrokenJsonText(candidate, options) {
509
- const rawName = candidate.match(/"name"\s*:\s*"([^"]+)"/i)?.[1];
510
- const canonicalName = canonicalizeJsonToolName(rawName, options);
511
- if (!canonicalName) {
512
- return null;
513
- }
514
- let args = null;
515
- if (canonicalName === 'exec_command') {
516
- const cmd = extractPossiblyBrokenQuotedValue(candidate, ['cmd', 'command', 'script', 'toon']);
517
- if (cmd && cmd.trim().length) {
518
- args = { cmd, command: cmd };
519
- }
520
- }
521
- if (!args) {
522
- args = salvageToolArgsFromRawText(canonicalName, candidate);
523
- }
524
- if (!args) {
525
- return null;
526
- }
527
- const normalizedArgs = normalizeJsonToolArgs(canonicalName, args, options);
528
- if (!normalizedArgs) {
529
- return null;
530
- }
531
- return {
532
- id: genToolCallId(),
533
- name: canonicalName,
534
- args: JSON.stringify(normalizedArgs)
535
- };
536
- }
537
- export function extractJsonToolCallsFromText(text, options) {
538
- try {
539
- if (typeof text !== 'string' || !text.trim()) {
540
- return null;
541
- }
542
- const candidates = [];
543
- const seenCandidates = new Set();
544
- const addCandidate = (raw) => {
545
- const trimmed = String(raw || '').trim();
546
- if (!trimmed || seenCandidates.has(trimmed)) {
547
- return;
548
- }
549
- seenCandidates.add(trimmed);
550
- candidates.push(trimmed);
551
- const decoded = decodeJsonEscapes(trimmed).trim();
552
- if (!decoded || decoded === trimmed || seenCandidates.has(decoded)) {
553
- return;
554
- }
555
- seenCandidates.add(decoded);
556
- candidates.push(decoded);
557
- };
558
- addCandidate(text);
559
- const fenceRe = /```(?:json|tool_call|tool_calls|function_call)?\s*([\s\S]*?)\s*```/gi;
560
- let fm;
561
- while ((fm = fenceRe.exec(text)) !== null) {
562
- const body = String(fm[1] || '').trim();
563
- if (body) {
564
- addCandidate(body);
565
- }
566
- }
567
- for (const embedded of collectEmbeddedToolCallObjects(text)) {
568
- addCandidate(embedded);
569
- }
570
- const decodedText = decodeJsonEscapes(text);
571
- if (decodedText && decodedText !== text) {
572
- for (const embedded of collectEmbeddedToolCallObjects(decodedText)) {
573
- addCandidate(embedded);
574
- }
575
- }
576
- const out = [];
577
- const seen = new Set();
578
- const pushEntry = (rawEntry) => {
579
- const normalized = normalizeJsonToolCallEntry(rawEntry, options);
580
- if (!normalized) {
581
- return;
582
- }
583
- const key = `${normalized.name}:${normalized.args}`;
584
- if (seen.has(key)) {
585
- return;
586
- }
587
- seen.add(key);
588
- out.push(normalized);
589
- };
590
- for (const candidate of candidates) {
591
- const parsed = tryParseJsonWithModelRepairs(candidate);
592
- if (parsed !== null) {
593
- for (const entry of extractToolCallEntriesFromUnknown(parsed)) {
594
- pushEntry(entry);
595
- }
596
- }
597
- if (out.length > 0) {
598
- continue;
599
- }
600
- const standaloneWrapper = candidate.match(/^\s*\{\s*["']tool_calls["']\s*:\s*(\[[\s\S]*\])\s*\}\s*$/);
601
- if (standaloneWrapper?.[1]) {
602
- const wrapped = `{"tool_calls":${standaloneWrapper[1]}}`;
603
- const parsedWrapped = tryParseJsonWithModelRepairs(wrapped);
604
- if (parsedWrapped !== null) {
605
- for (const entry of extractToolCallEntriesFromUnknown(parsedWrapped)) {
606
- pushEntry(entry);
607
- }
608
- }
609
- }
610
- }
611
- // Last-resort salvage should run only when normal JSON extraction found nothing.
612
- if (out.length === 0) {
613
- for (const candidate of candidates) {
614
- const lower = candidate.toLowerCase();
615
- if (lower.includes('<quote>') && lower.includes('</quote>')) {
616
- continue;
617
- }
618
- const salvaged = salvageToolCallFromBrokenJsonText(candidate, options);
619
- if (!salvaged) {
620
- continue;
621
- }
622
- pushEntry({
623
- id: salvaged.id,
624
- name: salvaged.name,
625
- function: {
626
- name: salvaged.name,
627
- arguments: salvaged.args
628
- }
629
- });
630
- }
631
- }
632
- return out.length ? out : null;
633
- }
634
- catch {
635
- return null;
636
- }
637
- }
@@ -1,21 +0,0 @@
1
- export declare const KNOWN_TOOLS: Set<string>;
2
- export type JsonToolArgumentAliasMap = Record<string, string[]>;
3
- export type JsonToolRepairConfig = {
4
- toolNameAliases?: Record<string, string>;
5
- argumentAliases?: Record<string, JsonToolArgumentAliasMap>;
6
- };
7
- export type TextMarkupNormalizeOptions = {
8
- jsonToolRepair?: JsonToolRepairConfig;
9
- };
10
- export type ToolCallLite = {
11
- id?: string;
12
- name: string;
13
- args: string;
14
- };
15
- export declare function genToolCallId(): string;
16
- export declare function normalizeKey(raw: string): string;
17
- export declare function readDefaultWorkdirFromEnv(): string | undefined;
18
- export declare function filterArgsForTool(name: string, args: Record<string, unknown>): Record<string, unknown>;
19
- export declare function tryParseJsonValue(text: string): unknown | null;
20
- export declare function tryParsePrimitiveValue(text: string): unknown;
21
- export declare function coerceCommandValueToString(value: unknown): string;