@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,23 +0,0 @@
1
- import { isJsonObject, jsonClone } from '../hub/types/json.js';
2
- export function readRuntimeMetadata(carrier) {
3
- if (!carrier || typeof carrier !== 'object') {
4
- return undefined;
5
- }
6
- const candidate = carrier.__rt;
7
- return candidate && isJsonObject(candidate) ? candidate : undefined;
8
- }
9
- export function ensureRuntimeMetadata(carrier) {
10
- if (!carrier || typeof carrier !== 'object') {
11
- throw new Error('ensureRuntimeMetadata requires object carrier');
12
- }
13
- const existing = readRuntimeMetadata(carrier);
14
- if (existing) {
15
- return existing;
16
- }
17
- carrier.__rt = {};
18
- return carrier.__rt;
19
- }
20
- export function cloneRuntimeMetadata(carrier) {
21
- const rt = readRuntimeMetadata(carrier);
22
- return rt ? jsonClone(rt) : undefined;
23
- }
@@ -1,11 +0,0 @@
1
- export interface SnapshotHookOptions {
2
- endpoint: string;
3
- stage: string;
4
- requestId: string;
5
- data: unknown;
6
- verbosity?: 'minimal' | 'verbose';
7
- channel?: string;
8
- providerKey?: string;
9
- groupRequestId?: string;
10
- }
11
- export declare function writeSnapshotViaHooks(options: SnapshotHookOptions): Promise<void>;
@@ -1,503 +0,0 @@
1
- import fs from 'node:fs/promises';
2
- import path from 'node:path';
3
- import os from 'node:os';
4
- const DEFAULT_SNAPSHOT_ROOT = path.join(os.homedir(), '.routecodex', 'codex-samples');
5
- const DEFAULT_ERRORSAMPLES_ROOT = path.join(os.homedir(), '.routecodex', 'errorsamples');
6
- const PENDING_PROVIDER_DIR = '__pending__';
7
- const POLICY_VIOLATIONS_DIR = '__policy_violations__';
8
- function resolveSnapshotRoot() {
9
- const envOverride = process.env.RCC_SNAPSHOT_DIR ||
10
- process.env.ROUTECODEX_SNAPSHOT_DIR;
11
- if (envOverride && envOverride.trim()) {
12
- return path.resolve(envOverride.trim());
13
- }
14
- return DEFAULT_SNAPSHOT_ROOT;
15
- }
16
- function resolveErrorsamplesRoot() {
17
- const envOverride = process.env.ROUTECODEX_ERRORSAMPLES_DIR ||
18
- process.env.ROUTECODEX_ERROR_SAMPLES_DIR;
19
- if (envOverride && String(envOverride).trim()) {
20
- return path.resolve(String(envOverride).trim());
21
- }
22
- return DEFAULT_ERRORSAMPLES_ROOT;
23
- }
24
- function safeErrorsampleName(name) {
25
- return String(name || 'sample').replace(/[^\w.-]/g, '_');
26
- }
27
- async function cleanupZeroByteJsonFiles(dir) {
28
- let entries = [];
29
- try {
30
- entries = await fs.readdir(dir);
31
- }
32
- catch {
33
- return;
34
- }
35
- const candidates = entries.filter((name) => name.endsWith('.json'));
36
- if (candidates.length === 0) {
37
- return;
38
- }
39
- await Promise.allSettled(candidates.map(async (name) => {
40
- const full = path.join(dir, name);
41
- try {
42
- const st = await fs.stat(full);
43
- if (!st.isFile() || st.size > 0) {
44
- return;
45
- }
46
- await fs.unlink(full);
47
- }
48
- catch {
49
- // ignore cleanup failures
50
- }
51
- }));
52
- }
53
- async function writeUniqueErrorsampleFile(dir, baseName, contents) {
54
- const parsed = path.parse(baseName);
55
- const ext = parsed.ext || '.json';
56
- const stem = parsed.name || 'sample';
57
- const tmpDir = path.join(dir, '_tmp');
58
- try {
59
- await fs.mkdir(tmpDir, { recursive: true });
60
- }
61
- catch {
62
- // ignore; fallback to direct writes
63
- }
64
- for (let i = 0; i < 32; i += 1) {
65
- const suffix = `${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
66
- const fileName = `${stem}_${suffix}${ext}`;
67
- try {
68
- const dest = path.join(dir, fileName);
69
- const tmp = path.join(tmpDir, `${fileName}.tmp`);
70
- await fs.writeFile(tmp, contents, { encoding: 'utf-8', flag: 'wx' });
71
- await fs.rename(tmp, dest);
72
- return;
73
- }
74
- catch (error) {
75
- if (toErrorCode(error) === 'EEXIST') {
76
- continue;
77
- }
78
- throw error;
79
- }
80
- }
81
- // last resort (best-effort overwrite into a timestamped file)
82
- const fallback = `${stem}_${Date.now()}_${Math.random().toString(36).slice(2, 8)}${ext}`;
83
- await fs.writeFile(path.join(dir, fallback), contents, { encoding: 'utf-8' });
84
- }
85
- function resolveSnapshotFolder(endpoint) {
86
- const lowered = (endpoint || '').trim().toLowerCase();
87
- if (lowered.includes('/v1/responses') || lowered.includes('/responses.submit')) {
88
- return 'openai-responses';
89
- }
90
- if (lowered.includes('/v1/messages')) {
91
- return 'anthropic-messages';
92
- }
93
- return 'openai-chat';
94
- }
95
- function sanitizeToken(value, fallback) {
96
- if (typeof value !== 'string') {
97
- return fallback;
98
- }
99
- const trimmed = value.trim();
100
- if (!trimmed) {
101
- return fallback;
102
- }
103
- return trimmed.replace(/[^A-Za-z0-9_.-]/g, '_') || fallback;
104
- }
105
- function channelSuffix(channel) {
106
- if (!channel) {
107
- return '';
108
- }
109
- const token = sanitizeToken(channel, '');
110
- return token ? `_${token}` : '';
111
- }
112
- function readStringField(value) {
113
- return typeof value === 'string' && value.trim().length ? value.trim() : undefined;
114
- }
115
- function extractNestedProviderKey(value) {
116
- if (!value || typeof value !== 'object') {
117
- return undefined;
118
- }
119
- const obj = value;
120
- const direct = readStringField(obj.providerKey) ||
121
- readStringField(obj.providerId) ||
122
- readStringField(obj.profileId);
123
- if (direct) {
124
- return direct;
125
- }
126
- const target = obj.target;
127
- if (target && typeof target === 'object') {
128
- const tk = readStringField(target.providerKey);
129
- if (tk) {
130
- return tk;
131
- }
132
- }
133
- const meta = obj.meta;
134
- if (meta && typeof meta === 'object') {
135
- const m = meta;
136
- const fromMeta = readStringField(m.providerKey) ||
137
- readStringField(m.providerId);
138
- if (fromMeta) {
139
- return fromMeta;
140
- }
141
- const ctx = m.context;
142
- if (ctx && typeof ctx === 'object') {
143
- const c = ctx;
144
- const fromCtx = readStringField(c.providerKey) ||
145
- readStringField(c.providerId) ||
146
- readStringField(c.profileId);
147
- if (fromCtx) {
148
- return fromCtx;
149
- }
150
- }
151
- }
152
- return undefined;
153
- }
154
- function extractNestedGroupRequestId(value) {
155
- if (!value || typeof value !== 'object') {
156
- return undefined;
157
- }
158
- const obj = value;
159
- const direct = readStringField(obj.clientRequestId) ||
160
- readStringField(obj.groupRequestId);
161
- if (direct) {
162
- return direct;
163
- }
164
- const meta = obj.meta;
165
- if (meta && typeof meta === 'object') {
166
- const m = meta;
167
- const fromMeta = readStringField(m.clientRequestId) ||
168
- readStringField(m.groupRequestId);
169
- if (fromMeta) {
170
- return fromMeta;
171
- }
172
- const ctx = m.context;
173
- if (ctx && typeof ctx === 'object') {
174
- const c = ctx;
175
- const fromCtx = readStringField(c.clientRequestId) ||
176
- readStringField(c.groupRequestId);
177
- if (fromCtx) {
178
- return fromCtx;
179
- }
180
- }
181
- }
182
- return undefined;
183
- }
184
- function extractNestedEntryEndpoint(value) {
185
- if (!value || typeof value !== 'object') {
186
- return undefined;
187
- }
188
- const obj = value;
189
- const direct = readStringField(obj.entryEndpoint) ||
190
- readStringField(obj.entry_endpoint);
191
- if (direct) {
192
- return direct;
193
- }
194
- const meta = obj.meta;
195
- if (meta && typeof meta === 'object') {
196
- const m = meta;
197
- const fromMeta = readStringField(m.entryEndpoint) ||
198
- readStringField(m.entry_endpoint);
199
- if (fromMeta) {
200
- return fromMeta;
201
- }
202
- const ctx = m.context;
203
- if (ctx && typeof ctx === 'object') {
204
- const c = ctx;
205
- const fromCtx = readStringField(c.entryEndpoint) ||
206
- readStringField(c.entry_endpoint);
207
- if (fromCtx) {
208
- return fromCtx;
209
- }
210
- }
211
- }
212
- const metadata = obj.metadata;
213
- if (metadata && typeof metadata === 'object') {
214
- const md = metadata;
215
- const fromMetadata = readStringField(md.entryEndpoint) ||
216
- readStringField(md.entry_endpoint);
217
- if (fromMetadata) {
218
- return fromMetadata;
219
- }
220
- }
221
- const runtime = obj.runtime;
222
- if (runtime && typeof runtime === 'object') {
223
- const r = runtime;
224
- const fromRuntime = readStringField(r.entryEndpoint) ||
225
- readStringField(r.entry_endpoint);
226
- if (fromRuntime) {
227
- return fromRuntime;
228
- }
229
- }
230
- return undefined;
231
- }
232
- function toErrorCode(error) {
233
- if (!error || typeof error !== 'object') {
234
- return undefined;
235
- }
236
- const code = error.code;
237
- return typeof code === 'string' && code.trim() ? code : undefined;
238
- }
239
- function readNumberField(value) {
240
- return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
241
- }
242
- function isHubPolicyStage(stage) {
243
- return typeof stage === 'string' && stage.startsWith('hub_policy.');
244
- }
245
- function isHubToolSurfaceStage(stage) {
246
- return typeof stage === 'string' && stage.startsWith('hub_toolsurface.');
247
- }
248
- function hasPolicyViolations(value) {
249
- if (!value || typeof value !== 'object') {
250
- return false;
251
- }
252
- const obj = value;
253
- const violations = obj.violations;
254
- if (Array.isArray(violations) && violations.length > 0) {
255
- return true;
256
- }
257
- const summary = obj.summary;
258
- if (summary && typeof summary === 'object') {
259
- const total = readNumberField(summary.totalViolations);
260
- if (typeof total === 'number' && total > 0) {
261
- return true;
262
- }
263
- }
264
- return false;
265
- }
266
- function hasToolSurfaceDiff(value) {
267
- if (!value || typeof value !== 'object') {
268
- return false;
269
- }
270
- const obj = value;
271
- const diffCount = readNumberField(obj.diffCount);
272
- if (typeof diffCount === 'number' && diffCount > 0) {
273
- return true;
274
- }
275
- // Response-side tool surface mismatch detection records expected/detected protocol
276
- // without a numeric diffCount; treat any protocol mismatch as a diff.
277
- const expected = readStringField(obj.expectedProtocol);
278
- const detected = readStringField(obj.detectedProtocol);
279
- if (expected && detected && expected !== detected) {
280
- return true;
281
- }
282
- return false;
283
- }
284
- function hasPolicyEnforcementChanges(value) {
285
- if (!value || typeof value !== 'object') {
286
- return false;
287
- }
288
- const obj = value;
289
- const removed = obj.removedTopLevelKeys;
290
- if (Array.isArray(removed) && removed.length > 0) {
291
- return true;
292
- }
293
- const flattened = obj.flattenedWrappers;
294
- if (Array.isArray(flattened) && flattened.length > 0) {
295
- return true;
296
- }
297
- return false;
298
- }
299
- async function writeUniqueFile(dir, baseName, contents) {
300
- const parsed = path.parse(baseName);
301
- const ext = parsed.ext || '.json';
302
- const stem = parsed.name || 'snapshot';
303
- const tmpPrefix = `.__tmp_${stem}_${process.pid}_${Date.now()}`;
304
- for (let i = 0; i < 64; i += 1) {
305
- const name = i === 0 ? `${stem}${ext}` : `${stem}_${i}${ext}`;
306
- try {
307
- const dest = path.join(dir, name);
308
- const tmp = path.join(dir, `${tmpPrefix}_${Math.random().toString(36).slice(2, 8)}${ext}`);
309
- await fs.writeFile(tmp, contents, { encoding: 'utf-8', flag: 'wx' });
310
- try {
311
- await fs.link(tmp, dest);
312
- await fs.unlink(tmp).catch(() => { });
313
- return;
314
- }
315
- catch (error) {
316
- await fs.unlink(tmp).catch(() => { });
317
- if (toErrorCode(error) === 'EEXIST') {
318
- continue;
319
- }
320
- throw error;
321
- }
322
- }
323
- catch (error) {
324
- if (toErrorCode(error) === 'EEXIST') {
325
- continue;
326
- }
327
- throw error;
328
- }
329
- }
330
- const fallback = `${stem}_${Date.now()}_${Math.random().toString(36).slice(2, 8)}${ext}`;
331
- const dest = path.join(dir, fallback);
332
- const tmp = path.join(dir, `${tmpPrefix}_${Math.random().toString(36).slice(2, 8)}${ext}`);
333
- await fs.writeFile(tmp, contents, { encoding: 'utf-8', flag: 'wx' });
334
- try {
335
- await fs.link(tmp, dest);
336
- }
337
- finally {
338
- await fs.unlink(tmp).catch(() => { });
339
- }
340
- }
341
- const requestProviderIndex = globalThis
342
- .__routecodexSnapshotProviderIndex ||
343
- new Map();
344
- globalThis
345
- .__routecodexSnapshotProviderIndex = requestProviderIndex;
346
- async function mergeDirs(src, dest) {
347
- await fs.mkdir(dest, { recursive: true });
348
- let entries = [];
349
- try {
350
- entries = await fs.readdir(src);
351
- }
352
- catch {
353
- return;
354
- }
355
- for (const name of entries) {
356
- const from = path.join(src, name);
357
- const to = path.join(dest, name);
358
- try {
359
- await fs.rename(from, to);
360
- }
361
- catch (error) {
362
- if (toErrorCode(error) === 'EEXIST') {
363
- // avoid overwriting; keep both
364
- const parsed = path.parse(name);
365
- const ext = parsed.ext || '';
366
- const stem = parsed.name || 'snapshot';
367
- const suffix = `${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
368
- try {
369
- await fs.rename(from, path.join(dest, `${stem}_${suffix}${ext}`));
370
- }
371
- catch {
372
- // ignore move failure
373
- }
374
- continue;
375
- }
376
- // ignore other move failures
377
- }
378
- }
379
- try {
380
- await fs.rmdir(src);
381
- }
382
- catch {
383
- // ignore
384
- }
385
- }
386
- async function promotePendingDir(options) {
387
- if (!options.groupRequestToken || options.providerToken === PENDING_PROVIDER_DIR) {
388
- return;
389
- }
390
- const pending = path.join(options.root, options.folder, PENDING_PROVIDER_DIR, options.groupRequestToken);
391
- const dest = path.join(options.root, options.folder, options.providerToken, options.groupRequestToken);
392
- try {
393
- await fs.access(pending);
394
- }
395
- catch {
396
- return;
397
- }
398
- await fs.mkdir(path.dirname(dest), { recursive: true });
399
- try {
400
- await fs.rename(pending, dest);
401
- }
402
- catch {
403
- // if rename fails (already exists / cross-device), merge
404
- await mergeDirs(pending, dest);
405
- }
406
- }
407
- async function writeSnapshotFile(options, rootOverride) {
408
- const root = rootOverride || resolveSnapshotRoot();
409
- const folder = resolveSnapshotFolder(extractNestedEntryEndpoint(options.data) || options.endpoint);
410
- const stageToken = sanitizeToken(options.stage, 'snapshot');
411
- const groupRequestToken = sanitizeToken(options.groupRequestId ||
412
- extractNestedGroupRequestId(options.data) ||
413
- options.requestId, `req_${Date.now()}`);
414
- const providerFromOptions = readStringField(options.providerKey);
415
- const providerFromData = extractNestedProviderKey(options.data);
416
- const knownProvider = requestProviderIndex.get(groupRequestToken);
417
- const providerToken = sanitizeToken(providerFromOptions || providerFromData || knownProvider || PENDING_PROVIDER_DIR, PENDING_PROVIDER_DIR);
418
- if (!knownProvider && providerToken !== PENDING_PROVIDER_DIR) {
419
- requestProviderIndex.set(groupRequestToken, providerToken);
420
- await promotePendingDir({ root, folder, groupRequestToken, providerToken });
421
- }
422
- const dir = path.join(root, folder, providerToken, groupRequestToken);
423
- await fs.mkdir(dir, { recursive: true });
424
- // Write a stable runtime marker for this request folder (best-effort).
425
- try {
426
- const metaPath = path.join(dir, '__runtime.json');
427
- const payload = JSON.stringify({
428
- timestamp: new Date().toISOString(),
429
- versions: {
430
- routecodex: process.env.ROUTECODEX_VERSION,
431
- routecodexBuildTime: process.env.ROUTECODEX_BUILD_TIME,
432
- llmswitchCore: process.env.ROUTECODEX_LLMSWITCH_CORE_VERSION,
433
- node: process.version
434
- }
435
- }, null, 2);
436
- await fs.writeFile(metaPath, payload, { encoding: 'utf-8', flag: 'wx' }).catch(() => { });
437
- }
438
- catch {
439
- // ignore
440
- }
441
- const spacing = options.verbosity === 'minimal' ? undefined : 2;
442
- const payload = spacing !== undefined
443
- ? JSON.stringify(options.data, null, spacing)
444
- : JSON.stringify(options.data);
445
- const fileName = `${stageToken}${channelSuffix(options.channel)}.json`;
446
- await writeUniqueFile(dir, fileName, payload);
447
- }
448
- export async function writeSnapshotViaHooks(options) {
449
- const stage = sanitizeToken(options.stage, 'snapshot');
450
- // 1) Normal snapshots (always).
451
- try {
452
- await writeSnapshotFile({ ...options, stage });
453
- }
454
- catch {
455
- // snapshot writes must never block callers
456
- }
457
- // 2) Policy violations snapshots (copy-on-violation only).
458
- // This allows leaving observe mode always on without drowning normal codex-samples traffic.
459
- try {
460
- if (isHubPolicyStage(stage) &&
461
- (hasPolicyViolations(options.data) || hasPolicyEnforcementChanges(options.data))) {
462
- const base = resolveSnapshotRoot();
463
- const policyRoot = path.join(base, POLICY_VIOLATIONS_DIR);
464
- await writeSnapshotFile({ ...options, stage }, policyRoot);
465
- }
466
- }
467
- catch {
468
- // never block callers
469
- }
470
- // 3) Tool surface diffs (copy-on-diff only) → ~/.routecodex/errorsamples/tool-surface/
471
- try {
472
- if (isHubToolSurfaceStage(stage) && hasToolSurfaceDiff(options.data)) {
473
- const root = resolveErrorsamplesRoot();
474
- const dir = path.join(root, safeErrorsampleName('tool-surface'));
475
- await fs.mkdir(dir, { recursive: true });
476
- // Best-effort cleanup: when the process exits abruptly, an in-flight async
477
- // write can leave behind 0-byte placeholder files. Keep the observable
478
- // directory clean so operators can tail it.
479
- await cleanupZeroByteJsonFiles(dir);
480
- const stamp = new Date().toISOString();
481
- const payload = {
482
- kind: 'hub_toolsurface_diff',
483
- timestamp: stamp,
484
- endpoint: options.endpoint,
485
- stage,
486
- requestId: options.requestId,
487
- providerKey: options.providerKey,
488
- groupRequestId: options.groupRequestId,
489
- runtime: {
490
- routecodexVersion: process.env.ROUTECODEX_VERSION,
491
- routecodexBuildTime: process.env.ROUTECODEX_BUILD_TIME,
492
- llmswitchCore: process.env.ROUTECODEX_LLMSWITCH_CORE_VERSION,
493
- node: process.version
494
- },
495
- observation: options.data
496
- };
497
- await writeUniqueErrorsampleFile(dir, `${safeErrorsampleName(stage)}.json`, JSON.stringify(payload, null, 2));
498
- }
499
- }
500
- catch {
501
- // never block callers
502
- }
503
- }
@@ -1,2 +0,0 @@
1
- import { type ToolCallLite } from './extractors-shared.js';
2
- export declare function extractApplyPatchCallsFromText(text: string): ToolCallLite[] | null;
@@ -1,129 +0,0 @@
1
- import { isStructuredApplyPatchPayload } from '../../../tools/apply-patch-structured.js';
2
- import { genToolCallId } from './extractors-shared.js';
3
- function extractStructuredApplyPatchPayloads(text) {
4
- const payloads = [];
5
- try {
6
- const fenceRe = /```(?:json|apply_patch|toon)?\s*([\s\S]*?)\s*```/gi;
7
- let fm;
8
- while ((fm = fenceRe.exec(text)) !== null) {
9
- const body = fm[1] || '';
10
- try {
11
- const parsed = JSON.parse(body);
12
- if (isStructuredApplyPatchPayload(parsed)) {
13
- payloads.push(parsed);
14
- }
15
- }
16
- catch {
17
- /* ignore invalid JSON */
18
- }
19
- }
20
- if (!payloads.length && typeof text === 'string' && text.includes('"changes"')) {
21
- try {
22
- const parsed = JSON.parse(text);
23
- if (isStructuredApplyPatchPayload(parsed)) {
24
- payloads.push(parsed);
25
- }
26
- }
27
- catch {
28
- /* ignore */
29
- }
30
- }
31
- }
32
- catch {
33
- /* ignore */
34
- }
35
- return payloads;
36
- }
37
- function normalizeRawApplyPatchBlock(raw) {
38
- try {
39
- const lines = String(raw || '')
40
- .split(/\r?\n/)
41
- .map((line) => line.replace(/\r/g, ''));
42
- while (lines.length > 0 && !lines[0].trim()) {
43
- lines.shift();
44
- }
45
- while (lines.length > 0 && !lines[lines.length - 1].trim()) {
46
- lines.pop();
47
- }
48
- if (!lines.length)
49
- return '';
50
- const indents = lines
51
- .filter((line) => line.trim().length > 0)
52
- .map((line) => {
53
- const m = line.match(/^[ \t]*/);
54
- return m ? m[0].length : 0;
55
- });
56
- const minIndent = indents.length ? Math.min(...indents) : 0;
57
- if (minIndent <= 0) {
58
- return lines.join('\n').trim();
59
- }
60
- return lines
61
- .map((line) => line.replace(new RegExp(`^[ \\t]{0,${minIndent}}`), ''))
62
- .join('\n')
63
- .trim();
64
- }
65
- catch {
66
- return String(raw || '').trim();
67
- }
68
- }
69
- function extractRawApplyPatchBlocks(text) {
70
- const out = [];
71
- try {
72
- if (typeof text !== 'string' || !text)
73
- return out;
74
- const seen = new Set();
75
- const blockRe = /\*\*\*\s*Begin Patch(?:\s*\*\*\*)?[\s\S]*?\*\*\*\s*End Patch(?:\s*\*\*\*)?/gi;
76
- let m;
77
- while ((m = blockRe.exec(text)) !== null) {
78
- const normalized = normalizeRawApplyPatchBlock(String(m[0] || ''));
79
- if (!normalized)
80
- continue;
81
- // Avoid turning incidental prose into apply_patch.
82
- if (!/\*\*\*\s*(?:Add|Update|Delete)\s+File:/i.test(normalized))
83
- continue;
84
- if (seen.has(normalized))
85
- continue;
86
- seen.add(normalized);
87
- out.push(normalized);
88
- }
89
- }
90
- catch {
91
- /* ignore */
92
- }
93
- return out;
94
- }
95
- export function extractApplyPatchCallsFromText(text) {
96
- try {
97
- if (typeof text !== 'string' || !text)
98
- return null;
99
- const payloads = extractStructuredApplyPatchPayloads(text);
100
- const patchBlocks = extractRawApplyPatchBlocks(text);
101
- if (!payloads.length && !patchBlocks.length)
102
- return null;
103
- const out = [];
104
- for (const payload of payloads) {
105
- let argsStr = '{}';
106
- try {
107
- argsStr = JSON.stringify(payload);
108
- }
109
- catch {
110
- argsStr = '{"changes":[]}';
111
- }
112
- out.push({ id: genToolCallId(), name: 'apply_patch', args: argsStr });
113
- }
114
- for (const patch of patchBlocks) {
115
- let argsStr = '{}';
116
- try {
117
- argsStr = JSON.stringify({ patch, input: patch });
118
- }
119
- catch {
120
- argsStr = '{"patch":""}';
121
- }
122
- out.push({ id: genToolCallId(), name: 'apply_patch', args: argsStr });
123
- }
124
- return out;
125
- }
126
- catch {
127
- return null;
128
- }
129
- }
@@ -1,4 +0,0 @@
1
- import { type TextMarkupNormalizeOptions, type ToolCallLite } from './extractors-shared.js';
2
- export declare function tryParseJsonWithModelRepairs(raw: string): unknown | null;
3
- export declare function salvageToolArgsFromRawText(toolName: string, rawArgs: string): Record<string, unknown> | null;
4
- export declare function extractJsonToolCallsFromText(text: string, options?: TextMarkupNormalizeOptions): ToolCallLite[] | null;