@jsonstudio/rcc 0.90.352 → 0.90.367

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 (1071) hide show
  1. package/dist/build-info.js +2 -2
  2. package/dist/cli/commands/codex.js +37 -7
  3. package/dist/cli/commands/codex.js.map +1 -1
  4. package/dist/cli/commands/launcher/types.d.ts +1 -0
  5. package/dist/cli/commands/launcher-kernel.js +69 -90
  6. package/dist/cli/commands/launcher-kernel.js.map +1 -1
  7. package/dist/modules/llmswitch/bridge/module-loader.js +2 -2
  8. package/dist/modules/llmswitch/bridge/module-loader.js.map +1 -1
  9. package/dist/modules/llmswitch/bridge/quota-manager.js +1 -1
  10. package/dist/modules/llmswitch/bridge/quota-manager.js.map +1 -1
  11. package/dist/modules/llmswitch/bridge/runtime-integrations.d.ts +1 -1
  12. package/dist/modules/llmswitch/bridge/runtime-integrations.js.map +1 -1
  13. package/dist/modules/llmswitch/bridge.d.ts +5 -5
  14. package/dist/modules/llmswitch/bridge.js.map +1 -1
  15. package/dist/modules/llmswitch/core-loader.js +35 -24
  16. package/dist/modules/llmswitch/core-loader.js.map +1 -1
  17. package/dist/server/runtime/http-server/executor/provider-response-converter.js +133 -2
  18. package/dist/server/runtime/http-server/executor/provider-response-converter.js.map +1 -1
  19. package/dist/server/runtime/http-server/executor-response.js +62 -1
  20. package/dist/server/runtime/http-server/executor-response.js.map +1 -1
  21. package/dist/server/runtime/http-server/session-client-route-utils.js +38 -5
  22. package/dist/server/runtime/http-server/session-client-route-utils.js.map +1 -1
  23. package/package.json +7 -8
  24. package/scripts/analyze-thinking-keywords.mjs +1 -1
  25. package/scripts/ensure-llmswitch-mode.mjs +5 -63
  26. package/scripts/install-global.sh +0 -46
  27. package/scripts/install-release.sh +4 -38
  28. package/scripts/install-verify.mjs +6 -25
  29. package/scripts/pack-mode.mjs +16 -39
  30. package/scripts/pack-rcc.mjs +4 -63
  31. package/scripts/publish-rcc.mjs +4 -59
  32. package/scripts/snapshot-inspect.mjs +24 -5
  33. package/scripts/tests/blackbox-rcc-vs-routecodex-antigravity.mjs +2 -2
  34. package/scripts/vendor-core.mjs +30 -9
  35. package/vendor/llmswitch-core/README.md +271 -0
  36. package/vendor/llmswitch-core/dist/bridge/routecodex-adapter.d.ts +74 -0
  37. package/vendor/llmswitch-core/dist/bridge/routecodex-adapter.js +229 -0
  38. package/vendor/llmswitch-core/dist/config-unified/enhanced-path-resolver.d.ts +5 -0
  39. package/vendor/llmswitch-core/dist/config-unified/enhanced-path-resolver.js +46 -0
  40. package/vendor/llmswitch-core/dist/config-unified/unified-config.d.ts +26 -0
  41. package/vendor/llmswitch-core/dist/config-unified/unified-config.js +231 -0
  42. package/vendor/llmswitch-core/dist/conversion/args-mapping.d.ts +18 -0
  43. package/vendor/llmswitch-core/dist/conversion/args-mapping.js +8 -0
  44. package/vendor/llmswitch-core/dist/conversion/bridge-actions.d.ts +39 -0
  45. package/vendor/llmswitch-core/dist/conversion/bridge-actions.js +82 -0
  46. package/vendor/llmswitch-core/dist/conversion/bridge-id-utils.d.ts +9 -0
  47. package/vendor/llmswitch-core/dist/conversion/bridge-id-utils.js +13 -0
  48. package/vendor/llmswitch-core/dist/conversion/bridge-instructions.d.ts +1 -0
  49. package/vendor/llmswitch-core/dist/conversion/bridge-instructions.js +17 -0
  50. package/vendor/llmswitch-core/dist/conversion/bridge-message-utils.d.ts +23 -0
  51. package/vendor/llmswitch-core/dist/conversion/bridge-message-utils.js +45 -0
  52. package/vendor/llmswitch-core/dist/conversion/bridge-metadata.d.ts +2 -0
  53. package/vendor/llmswitch-core/dist/conversion/bridge-metadata.js +5 -0
  54. package/vendor/llmswitch-core/dist/conversion/bridge-policies.d.ts +18 -0
  55. package/vendor/llmswitch-core/dist/conversion/bridge-policies.js +11 -0
  56. package/vendor/llmswitch-core/dist/conversion/codec-registry.d.ts +10 -0
  57. package/vendor/llmswitch-core/dist/conversion/codec-registry.js +37 -0
  58. package/vendor/llmswitch-core/dist/conversion/codecs/anthropic-openai-codec.d.ts +22 -0
  59. package/vendor/llmswitch-core/dist/conversion/codecs/anthropic-openai-codec.js +52 -0
  60. package/vendor/llmswitch-core/dist/conversion/codecs/gemini-openai-codec.d.ts +17 -0
  61. package/vendor/llmswitch-core/dist/conversion/codecs/gemini-openai-codec.js +85 -0
  62. package/vendor/llmswitch-core/dist/conversion/codecs/openai-openai-codec.d.ts +12 -0
  63. package/vendor/llmswitch-core/dist/conversion/codecs/openai-openai-codec.js +54 -0
  64. package/vendor/llmswitch-core/dist/conversion/codecs/responses-openai-codec.d.ts +12 -0
  65. package/vendor/llmswitch-core/dist/conversion/codecs/responses-openai-codec.js +66 -0
  66. package/vendor/llmswitch-core/dist/conversion/compaction-detect.d.ts +2 -0
  67. package/vendor/llmswitch-core/dist/conversion/compaction-detect.js +4 -0
  68. package/vendor/llmswitch-core/dist/conversion/compat/actions/anthropic-claude-code-system-prompt.d.ts +4 -0
  69. package/vendor/llmswitch-core/dist/conversion/compat/actions/anthropic-claude-code-system-prompt.js +42 -0
  70. package/vendor/llmswitch-core/dist/conversion/compat/actions/anthropic-claude-code-user-id.d.ts +3 -0
  71. package/vendor/llmswitch-core/dist/conversion/compat/actions/anthropic-claude-code-user-id.js +30 -0
  72. package/vendor/llmswitch-core/dist/conversion/compat/actions/antigravity-thought-signature-cache.d.ts +3 -0
  73. package/vendor/llmswitch-core/dist/conversion/compat/actions/antigravity-thought-signature-cache.js +8 -0
  74. package/vendor/llmswitch-core/dist/conversion/compat/actions/antigravity-thought-signature-prepare.d.ts +3 -0
  75. package/vendor/llmswitch-core/dist/conversion/compat/actions/antigravity-thought-signature-prepare.js +26 -0
  76. package/vendor/llmswitch-core/dist/conversion/compat/actions/apply-patch-fixer.d.ts +1 -0
  77. package/vendor/llmswitch-core/dist/conversion/compat/actions/apply-patch-fixer.js +30 -0
  78. package/vendor/llmswitch-core/dist/conversion/compat/actions/auto-thinking.d.ts +6 -0
  79. package/vendor/llmswitch-core/dist/conversion/compat/actions/auto-thinking.js +26 -0
  80. package/vendor/llmswitch-core/dist/conversion/compat/actions/claude-thinking-tools.d.ts +2 -0
  81. package/vendor/llmswitch-core/dist/conversion/compat/actions/claude-thinking-tools.js +4 -0
  82. package/vendor/llmswitch-core/dist/conversion/compat/actions/deepseek-web-request.d.ts +3 -0
  83. package/vendor/llmswitch-core/dist/conversion/compat/actions/deepseek-web-request.js +62 -0
  84. package/vendor/llmswitch-core/dist/conversion/compat/actions/deepseek-web-response.d.ts +12 -0
  85. package/vendor/llmswitch-core/dist/conversion/compat/actions/deepseek-web-response.js +114 -0
  86. package/vendor/llmswitch-core/dist/conversion/compat/actions/field-mapping.d.ts +14 -0
  87. package/vendor/llmswitch-core/dist/conversion/compat/actions/field-mapping.js +155 -0
  88. package/vendor/llmswitch-core/dist/conversion/compat/actions/gemini-cli-request.d.ts +5 -0
  89. package/vendor/llmswitch-core/dist/conversion/compat/actions/gemini-cli-request.js +27 -0
  90. package/vendor/llmswitch-core/dist/conversion/compat/actions/gemini-web-search.d.ts +3 -0
  91. package/vendor/llmswitch-core/dist/conversion/compat/actions/gemini-web-search.js +24 -0
  92. package/vendor/llmswitch-core/dist/conversion/compat/actions/glm-history-image-trim.d.ts +2 -0
  93. package/vendor/llmswitch-core/dist/conversion/compat/actions/glm-history-image-trim.js +54 -0
  94. package/vendor/llmswitch-core/dist/conversion/compat/actions/glm-image-content.d.ts +2 -0
  95. package/vendor/llmswitch-core/dist/conversion/compat/actions/glm-image-content.js +54 -0
  96. package/vendor/llmswitch-core/dist/conversion/compat/actions/glm-native-compat.d.ts +6 -0
  97. package/vendor/llmswitch-core/dist/conversion/compat/actions/glm-native-compat.js +34 -0
  98. package/vendor/llmswitch-core/dist/conversion/compat/actions/glm-tool-extraction.d.ts +3 -0
  99. package/vendor/llmswitch-core/dist/conversion/compat/actions/glm-tool-extraction.js +35 -0
  100. package/vendor/llmswitch-core/dist/conversion/compat/actions/glm-vision-prompt.d.ts +11 -0
  101. package/vendor/llmswitch-core/dist/conversion/compat/actions/glm-vision-prompt.js +104 -0
  102. package/vendor/llmswitch-core/dist/conversion/compat/actions/glm-web-search.d.ts +2 -0
  103. package/vendor/llmswitch-core/dist/conversion/compat/actions/glm-web-search.js +30 -0
  104. package/vendor/llmswitch-core/dist/conversion/compat/actions/harvest-tool-calls-from-text.d.ts +15 -0
  105. package/vendor/llmswitch-core/dist/conversion/compat/actions/harvest-tool-calls-from-text.js +124 -0
  106. package/vendor/llmswitch-core/dist/conversion/compat/actions/iflow-kimi-cli-defaults.d.ts +10 -0
  107. package/vendor/llmswitch-core/dist/conversion/compat/actions/iflow-kimi-cli-defaults.js +31 -0
  108. package/vendor/llmswitch-core/dist/conversion/compat/actions/iflow-kimi-history-media-placeholder.d.ts +7 -0
  109. package/vendor/llmswitch-core/dist/conversion/compat/actions/iflow-kimi-history-media-placeholder.js +25 -0
  110. package/vendor/llmswitch-core/dist/conversion/compat/actions/iflow-kimi-thinking-reasoning-fill.d.ts +12 -0
  111. package/vendor/llmswitch-core/dist/conversion/compat/actions/iflow-kimi-thinking-reasoning-fill.js +46 -0
  112. package/vendor/llmswitch-core/dist/conversion/compat/actions/iflow-native-compat.d.ts +6 -0
  113. package/vendor/llmswitch-core/dist/conversion/compat/actions/iflow-native-compat.js +36 -0
  114. package/vendor/llmswitch-core/dist/conversion/compat/actions/iflow-response-body-unwrap.d.ts +9 -0
  115. package/vendor/llmswitch-core/dist/conversion/compat/actions/iflow-response-body-unwrap.js +25 -0
  116. package/vendor/llmswitch-core/dist/conversion/compat/actions/iflow-tool-text-fallback.d.ts +5 -0
  117. package/vendor/llmswitch-core/dist/conversion/compat/actions/iflow-tool-text-fallback.js +29 -0
  118. package/vendor/llmswitch-core/dist/conversion/compat/actions/iflow-web-search.d.ts +18 -0
  119. package/vendor/llmswitch-core/dist/conversion/compat/actions/iflow-web-search.js +49 -0
  120. package/vendor/llmswitch-core/dist/conversion/compat/actions/index.d.ts +2 -0
  121. package/vendor/llmswitch-core/dist/conversion/compat/actions/index.js +2 -0
  122. package/vendor/llmswitch-core/dist/conversion/compat/actions/lmstudio-responses-fc-ids.d.ts +2 -0
  123. package/vendor/llmswitch-core/dist/conversion/compat/actions/lmstudio-responses-fc-ids.js +4 -0
  124. package/vendor/llmswitch-core/dist/conversion/compat/actions/lmstudio-responses-input-stringify.d.ts +14 -0
  125. package/vendor/llmswitch-core/dist/conversion/compat/actions/lmstudio-responses-input-stringify.js +125 -0
  126. package/vendor/llmswitch-core/dist/conversion/compat/actions/normalize-tool-call-ids.d.ts +2 -0
  127. package/vendor/llmswitch-core/dist/conversion/compat/actions/normalize-tool-call-ids.js +10 -0
  128. package/vendor/llmswitch-core/dist/conversion/compat/actions/qwen-transform.d.ts +4 -0
  129. package/vendor/llmswitch-core/dist/conversion/compat/actions/qwen-transform.js +40 -0
  130. package/vendor/llmswitch-core/dist/conversion/compat/actions/request-rules.d.ts +24 -0
  131. package/vendor/llmswitch-core/dist/conversion/compat/actions/request-rules.js +4 -0
  132. package/vendor/llmswitch-core/dist/conversion/compat/actions/response-blacklist.d.ts +10 -0
  133. package/vendor/llmswitch-core/dist/conversion/compat/actions/response-blacklist.js +10 -0
  134. package/vendor/llmswitch-core/dist/conversion/compat/actions/response-normalize.d.ts +5 -0
  135. package/vendor/llmswitch-core/dist/conversion/compat/actions/response-normalize.js +4 -0
  136. package/vendor/llmswitch-core/dist/conversion/compat/actions/response-validate.d.ts +5 -0
  137. package/vendor/llmswitch-core/dist/conversion/compat/actions/response-validate.js +4 -0
  138. package/vendor/llmswitch-core/dist/conversion/compat/actions/snapshot.d.ts +8 -0
  139. package/vendor/llmswitch-core/dist/conversion/compat/actions/snapshot.js +21 -0
  140. package/vendor/llmswitch-core/dist/conversion/compat/actions/strip-orphan-function-calls-tag.d.ts +2 -0
  141. package/vendor/llmswitch-core/dist/conversion/compat/actions/strip-orphan-function-calls-tag.js +4 -0
  142. package/vendor/llmswitch-core/dist/conversion/compat/actions/tool-schema.d.ts +6 -0
  143. package/vendor/llmswitch-core/dist/conversion/compat/actions/tool-schema.js +91 -0
  144. package/vendor/llmswitch-core/dist/conversion/compat/actions/tool-text-request-guidance.d.ts +9 -0
  145. package/vendor/llmswitch-core/dist/conversion/compat/actions/tool-text-request-guidance.js +7 -0
  146. package/vendor/llmswitch-core/dist/conversion/compat/actions/universal-shape-filter.d.ts +57 -0
  147. package/vendor/llmswitch-core/dist/conversion/compat/actions/universal-shape-filter.js +14 -0
  148. package/vendor/llmswitch-core/dist/conversion/compat/antigravity-session-signature.d.ts +86 -0
  149. package/vendor/llmswitch-core/dist/conversion/compat/antigravity-session-signature.js +1143 -0
  150. package/vendor/llmswitch-core/dist/conversion/compat/profiles/anthropic-claude-code.json +17 -0
  151. package/vendor/llmswitch-core/dist/conversion/compat/profiles/chat-claude-code.json +18 -0
  152. package/vendor/llmswitch-core/dist/conversion/compat/profiles/chat-deepseek-web.json +47 -0
  153. package/vendor/llmswitch-core/dist/conversion/compat/profiles/chat-gemini-cli.json +23 -0
  154. package/vendor/llmswitch-core/dist/conversion/compat/profiles/chat-gemini.json +31 -0
  155. package/vendor/llmswitch-core/dist/conversion/compat/profiles/chat-glm.json +405 -0
  156. package/vendor/llmswitch-core/dist/conversion/compat/profiles/chat-iflow.json +353 -0
  157. package/vendor/llmswitch-core/dist/conversion/compat/profiles/chat-lmstudio.json +80 -0
  158. package/vendor/llmswitch-core/dist/conversion/compat/profiles/chat-qwen.json +22 -0
  159. package/vendor/llmswitch-core/dist/conversion/compat/profiles/responses-c4m.json +45 -0
  160. package/vendor/llmswitch-core/dist/conversion/compat/profiles/responses-crs.json +15 -0
  161. package/vendor/llmswitch-core/dist/conversion/compat/profiles/responses-output2choices-test.json +12 -0
  162. package/vendor/llmswitch-core/dist/conversion/config/config-manager.d.ts +212 -0
  163. package/vendor/llmswitch-core/dist/conversion/config/config-manager.js +310 -0
  164. package/vendor/llmswitch-core/dist/conversion/config/sample-config.json +314 -0
  165. package/vendor/llmswitch-core/dist/conversion/config/version-switch.json +150 -0
  166. package/vendor/llmswitch-core/dist/conversion/hub/config/types.d.ts +26 -0
  167. package/vendor/llmswitch-core/dist/conversion/hub/config/types.js +1 -0
  168. package/vendor/llmswitch-core/dist/conversion/hub/core/detour-registry.d.ts +11 -0
  169. package/vendor/llmswitch-core/dist/conversion/hub/core/detour-registry.js +23 -0
  170. package/vendor/llmswitch-core/dist/conversion/hub/core/hub-context.d.ts +23 -0
  171. package/vendor/llmswitch-core/dist/conversion/hub/core/hub-context.js +1 -0
  172. package/vendor/llmswitch-core/dist/conversion/hub/core/index.d.ts +4 -0
  173. package/vendor/llmswitch-core/dist/conversion/hub/core/index.js +3 -0
  174. package/vendor/llmswitch-core/dist/conversion/hub/core/stage-driver.d.ts +30 -0
  175. package/vendor/llmswitch-core/dist/conversion/hub/core/stage-driver.js +33 -0
  176. package/vendor/llmswitch-core/dist/conversion/hub/format-adapters/anthropic-format-adapter.d.ts +16 -0
  177. package/vendor/llmswitch-core/dist/conversion/hub/format-adapters/anthropic-format-adapter.js +42 -0
  178. package/vendor/llmswitch-core/dist/conversion/hub/format-adapters/chat-format-adapter.d.ts +17 -0
  179. package/vendor/llmswitch-core/dist/conversion/hub/format-adapters/chat-format-adapter.js +42 -0
  180. package/vendor/llmswitch-core/dist/conversion/hub/format-adapters/gemini-format-adapter.d.ts +16 -0
  181. package/vendor/llmswitch-core/dist/conversion/hub/format-adapters/gemini-format-adapter.js +42 -0
  182. package/vendor/llmswitch-core/dist/conversion/hub/format-adapters/index.d.ts +21 -0
  183. package/vendor/llmswitch-core/dist/conversion/hub/format-adapters/index.js +4 -0
  184. package/vendor/llmswitch-core/dist/conversion/hub/format-adapters/responses-format-adapter.d.ts +19 -0
  185. package/vendor/llmswitch-core/dist/conversion/hub/format-adapters/responses-format-adapter.js +42 -0
  186. package/vendor/llmswitch-core/dist/conversion/hub/hub-feature.d.ts +1 -0
  187. package/vendor/llmswitch-core/dist/conversion/hub/hub-feature.js +26 -0
  188. package/vendor/llmswitch-core/dist/conversion/hub/node-support.d.ts +19 -0
  189. package/vendor/llmswitch-core/dist/conversion/hub/node-support.js +136 -0
  190. package/vendor/llmswitch-core/dist/conversion/hub/operation-table/operation-table-runner.d.ts +18 -0
  191. package/vendor/llmswitch-core/dist/conversion/hub/operation-table/operation-table-runner.js +162 -0
  192. package/vendor/llmswitch-core/dist/conversion/hub/operation-table/semantic-mappers/anthropic-mapper.d.ts +8 -0
  193. package/vendor/llmswitch-core/dist/conversion/hub/operation-table/semantic-mappers/anthropic-mapper.js +503 -0
  194. package/vendor/llmswitch-core/dist/conversion/hub/operation-table/semantic-mappers/archive/chat-mapper.archive.d.ts +8 -0
  195. package/vendor/llmswitch-core/dist/conversion/hub/operation-table/semantic-mappers/archive/chat-mapper.archive.js +409 -0
  196. package/vendor/llmswitch-core/dist/conversion/hub/operation-table/semantic-mappers/chat-mapper.d.ts +8 -0
  197. package/vendor/llmswitch-core/dist/conversion/hub/operation-table/semantic-mappers/chat-mapper.js +350 -0
  198. package/vendor/llmswitch-core/dist/conversion/hub/operation-table/semantic-mappers/gemini-mapper.d.ts +7 -0
  199. package/vendor/llmswitch-core/dist/conversion/hub/operation-table/semantic-mappers/gemini-mapper.js +1540 -0
  200. package/vendor/llmswitch-core/dist/conversion/hub/operation-table/semantic-mappers/responses-mapper.d.ts +21 -0
  201. package/vendor/llmswitch-core/dist/conversion/hub/operation-table/semantic-mappers/responses-mapper.js +491 -0
  202. package/vendor/llmswitch-core/dist/conversion/hub/ops/operations.d.ts +19 -0
  203. package/vendor/llmswitch-core/dist/conversion/hub/ops/operations.js +7 -0
  204. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/compat/compat-engine.d.ts +9 -0
  205. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/compat/compat-engine.js +13 -0
  206. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/compat/compat-pipeline-executor.d.ts +9 -0
  207. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/compat/compat-pipeline-executor.js +46 -0
  208. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/compat/compat-profile-resolver.d.ts +2 -0
  209. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/compat/compat-profile-resolver.js +14 -0
  210. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/compat/compat-profile-store.d.ts +2 -0
  211. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/compat/compat-profile-store.js +94 -0
  212. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/compat/compat-types.d.ts +175 -0
  213. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/compat/compat-types.js +1 -0
  214. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/compat/native-adapter-context.d.ts +3 -0
  215. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/compat/native-adapter-context.js +40 -0
  216. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/hub-pipeline.d.ts +111 -0
  217. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/hub-pipeline.js +1927 -0
  218. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/hub-stage-timing.d.ts +8 -0
  219. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/hub-stage-timing.js +211 -0
  220. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/session-identifiers.d.ts +9 -0
  221. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/session-identifiers.js +16 -0
  222. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage1_format_parse/index.d.ts +10 -0
  223. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage1_format_parse/index.js +236 -0
  224. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage2_semantic_map/index.d.ts +24 -0
  225. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage2_semantic_map/index.js +132 -0
  226. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage2_semantic_map/semantic-lift.d.ts +14 -0
  227. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage2_semantic_map/semantic-lift.js +24 -0
  228. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/archive/shell-like-tool-call-normalization-fallback.d.ts +2 -0
  229. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/archive/shell-like-tool-call-normalization-fallback.js +157 -0
  230. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/context-capture-orchestration.d.ts +16 -0
  231. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/context-capture-orchestration.js +29 -0
  232. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/context-factories.d.ts +5 -0
  233. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/context-factories.js +19 -0
  234. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/index.d.ts +6 -0
  235. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/index.js +22 -0
  236. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/responses-context-snapshot.d.ts +8 -0
  237. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/responses-context-snapshot.js +28 -0
  238. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/tool-output-diagnostics.d.ts +2 -0
  239. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/tool-output-diagnostics.js +4 -0
  240. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/tool-output-snapshot.d.ts +10 -0
  241. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/tool-output-snapshot.js +12 -0
  242. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage1_semantic_map/context-merge.d.ts +3 -0
  243. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage1_semantic_map/context-merge.js +30 -0
  244. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage1_semantic_map/index.d.ts +18 -0
  245. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage1_semantic_map/index.js +84 -0
  246. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage2_format_build/index.d.ts +8 -0
  247. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage2_format_build/index.js +12 -0
  248. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage3_compat/index.d.ts +14 -0
  249. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage3_compat/index.js +45 -0
  250. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_process/req_process_stage1_tool_governance/index.d.ts +16 -0
  251. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_process/req_process_stage1_tool_governance/index.js +62 -0
  252. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_process/req_process_stage2_route_select/index.d.ts +17 -0
  253. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/req_process/req_process_stage2_route_select/index.js +35 -0
  254. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage1_sse_decode/index.d.ts +17 -0
  255. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage1_sse_decode/index.js +243 -0
  256. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage1_sse_decode/stream-json-sniffer.d.ts +3 -0
  257. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage1_sse_decode/stream-json-sniffer.js +81 -0
  258. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage2_format_parse/index.d.ts +10 -0
  259. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage2_format_parse/index.js +50 -0
  260. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage3_semantic_map/index.d.ts +13 -0
  261. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage3_semantic_map/index.js +25 -0
  262. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/chat-process-semantics-bridge.d.ts +6 -0
  263. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/chat-process-semantics-bridge.js +17 -0
  264. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/client-remap-protocol-switch.d.ts +9 -0
  265. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/client-remap-protocol-switch.js +103 -0
  266. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/index.d.ts +13 -0
  267. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/index.js +30 -0
  268. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage2_sse_stream/index.d.ts +17 -0
  269. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage2_sse_stream/index.js +35 -0
  270. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage1_tool_governance/index.d.ts +16 -0
  271. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage1_tool_governance/index.js +52 -0
  272. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage2_finalize/index.d.ts +19 -0
  273. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage2_finalize/index.js +40 -0
  274. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage3_servertool_orchestration/index.d.ts +44 -0
  275. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage3_servertool_orchestration/index.js +88 -0
  276. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/utils.d.ts +2 -0
  277. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/stages/utils.js +27 -0
  278. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/target-utils.d.ts +5 -0
  279. package/vendor/llmswitch-core/dist/conversion/hub/pipeline/target-utils.js +26 -0
  280. package/vendor/llmswitch-core/dist/conversion/hub/pipelines/inbound.d.ts +22 -0
  281. package/vendor/llmswitch-core/dist/conversion/hub/pipelines/inbound.js +66 -0
  282. package/vendor/llmswitch-core/dist/conversion/hub/pipelines/outbound.d.ts +22 -0
  283. package/vendor/llmswitch-core/dist/conversion/hub/pipelines/outbound.js +59 -0
  284. package/vendor/llmswitch-core/dist/conversion/hub/policy/policy-engine.d.ts +48 -0
  285. package/vendor/llmswitch-core/dist/conversion/hub/policy/policy-engine.js +269 -0
  286. package/vendor/llmswitch-core/dist/conversion/hub/policy/protocol-spec.d.ts +75 -0
  287. package/vendor/llmswitch-core/dist/conversion/hub/policy/protocol-spec.js +27 -0
  288. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-anthropic-alias.d.ts +2 -0
  289. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-anthropic-alias.js +36 -0
  290. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-directive-parser.d.ts +5 -0
  291. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-directive-parser.js +56 -0
  292. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-directives.d.ts +24 -0
  293. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-directives.js +98 -0
  294. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-reminder-directives.d.ts +8 -0
  295. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-reminder-directives.js +42 -0
  296. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-reminder-finalize.d.ts +14 -0
  297. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-reminder-finalize.js +10 -0
  298. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-reminder-messages.d.ts +5 -0
  299. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-reminder-messages.js +10 -0
  300. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-reminder-orchestration.d.ts +30 -0
  301. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-reminder-orchestration.js +68 -0
  302. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-reminder-time-tag.d.ts +9 -0
  303. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-reminder-time-tag.js +18 -0
  304. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-reminders.d.ts +2 -0
  305. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-reminders.js +104 -0
  306. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-tool-schemas.d.ts +3 -0
  307. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-tool-schemas.js +280 -0
  308. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-tools.d.ts +6 -0
  309. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-clock-tools.js +41 -0
  310. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-continue-execution.d.ts +11 -0
  311. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-continue-execution.js +83 -0
  312. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-governance-context.d.ts +15 -0
  313. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-governance-context.js +7 -0
  314. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-governance-finalize.d.ts +16 -0
  315. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-governance-finalize.js +11 -0
  316. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-governance-orchestration.d.ts +9 -0
  317. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-governance-orchestration.js +49 -0
  318. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-governed-control-ops.d.ts +8 -0
  319. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-governed-control-ops.js +5 -0
  320. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-governed-filter-call.d.ts +12 -0
  321. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-governed-filter-call.js +18 -0
  322. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-governed-merge.d.ts +8 -0
  323. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-governed-merge.js +11 -0
  324. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-media.d.ts +5 -0
  325. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-media.js +108 -0
  326. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-node-result.d.ts +23 -0
  327. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-node-result.js +24 -0
  328. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-pending-tool-sync.d.ts +14 -0
  329. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-pending-tool-sync.js +52 -0
  330. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-post-governed-normalization.d.ts +8 -0
  331. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-post-governed-normalization.js +16 -0
  332. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-review.d.ts +2 -0
  333. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-review.js +8 -0
  334. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-servertool-orchestration.d.ts +8 -0
  335. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-servertool-orchestration.js +22 -0
  336. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-session-usage.d.ts +7 -0
  337. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-session-usage.js +147 -0
  338. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-tool-normalization.d.ts +2 -0
  339. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-tool-normalization.js +4 -0
  340. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-web-search-intent.d.ts +12 -0
  341. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-web-search-intent.js +13 -0
  342. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-web-search-tool-schema.d.ts +3 -0
  343. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-web-search-tool-schema.js +4 -0
  344. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-web-search.d.ts +8 -0
  345. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process-web-search.js +26 -0
  346. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process.d.ts +15 -0
  347. package/vendor/llmswitch-core/dist/conversion/hub/process/chat-process.js +27 -0
  348. package/vendor/llmswitch-core/dist/conversion/hub/process/client-inject-readiness.d.ts +1 -0
  349. package/vendor/llmswitch-core/dist/conversion/hub/process/client-inject-readiness.js +4 -0
  350. package/vendor/llmswitch-core/dist/conversion/hub/registry.d.ts +28 -0
  351. package/vendor/llmswitch-core/dist/conversion/hub/registry.js +101 -0
  352. package/vendor/llmswitch-core/dist/conversion/hub/response/chat-response-utils.d.ts +6 -0
  353. package/vendor/llmswitch-core/dist/conversion/hub/response/chat-response-utils.js +8 -0
  354. package/vendor/llmswitch-core/dist/conversion/hub/response/provider-response.d.ts +51 -0
  355. package/vendor/llmswitch-core/dist/conversion/hub/response/provider-response.js +529 -0
  356. package/vendor/llmswitch-core/dist/conversion/hub/response/response-mappers.d.ts +24 -0
  357. package/vendor/llmswitch-core/dist/conversion/hub/response/response-mappers.js +73 -0
  358. package/vendor/llmswitch-core/dist/conversion/hub/response/response-runtime.d.ts +9 -0
  359. package/vendor/llmswitch-core/dist/conversion/hub/response/response-runtime.js +758 -0
  360. package/vendor/llmswitch-core/dist/conversion/hub/semantic-mappers/anthropic-mapper.d.ts +2 -0
  361. package/vendor/llmswitch-core/dist/conversion/hub/semantic-mappers/anthropic-mapper.js +2 -0
  362. package/vendor/llmswitch-core/dist/conversion/hub/semantic-mappers/chat-mapper.d.ts +2 -0
  363. package/vendor/llmswitch-core/dist/conversion/hub/semantic-mappers/chat-mapper.js +2 -0
  364. package/vendor/llmswitch-core/dist/conversion/hub/semantic-mappers/gemini-mapper.d.ts +2 -0
  365. package/vendor/llmswitch-core/dist/conversion/hub/semantic-mappers/gemini-mapper.js +2 -0
  366. package/vendor/llmswitch-core/dist/conversion/hub/semantic-mappers/index.d.ts +4 -0
  367. package/vendor/llmswitch-core/dist/conversion/hub/semantic-mappers/index.js +4 -0
  368. package/vendor/llmswitch-core/dist/conversion/hub/semantic-mappers/responses-mapper.d.ts +2 -0
  369. package/vendor/llmswitch-core/dist/conversion/hub/semantic-mappers/responses-mapper.js +2 -0
  370. package/vendor/llmswitch-core/dist/conversion/hub/snapshot-recorder.d.ts +13 -0
  371. package/vendor/llmswitch-core/dist/conversion/hub/snapshot-recorder.js +38 -0
  372. package/vendor/llmswitch-core/dist/conversion/hub/standardized-bridge.d.ts +12 -0
  373. package/vendor/llmswitch-core/dist/conversion/hub/standardized-bridge.js +16 -0
  374. package/vendor/llmswitch-core/dist/conversion/hub/tool-governance/engine.d.ts +24 -0
  375. package/vendor/llmswitch-core/dist/conversion/hub/tool-governance/engine.js +118 -0
  376. package/vendor/llmswitch-core/dist/conversion/hub/tool-governance/index.d.ts +3 -0
  377. package/vendor/llmswitch-core/dist/conversion/hub/tool-governance/index.js +2 -0
  378. package/vendor/llmswitch-core/dist/conversion/hub/tool-governance/rules.d.ts +2 -0
  379. package/vendor/llmswitch-core/dist/conversion/hub/tool-governance/rules.js +80 -0
  380. package/vendor/llmswitch-core/dist/conversion/hub/tool-governance/types.d.ts +38 -0
  381. package/vendor/llmswitch-core/dist/conversion/hub/tool-governance/types.js +1 -0
  382. package/vendor/llmswitch-core/dist/conversion/hub/tool-session-compat.d.ts +26 -0
  383. package/vendor/llmswitch-core/dist/conversion/hub/tool-session-compat.js +86 -0
  384. package/vendor/llmswitch-core/dist/conversion/hub/tool-surface/tool-surface-engine.d.ts +18 -0
  385. package/vendor/llmswitch-core/dist/conversion/hub/tool-surface/tool-surface-engine.js +574 -0
  386. package/vendor/llmswitch-core/dist/conversion/hub/types/chat-envelope.d.ts +79 -0
  387. package/vendor/llmswitch-core/dist/conversion/hub/types/chat-envelope.js +1 -0
  388. package/vendor/llmswitch-core/dist/conversion/hub/types/chat-schema.d.ts +112 -0
  389. package/vendor/llmswitch-core/dist/conversion/hub/types/chat-schema.js +1 -0
  390. package/vendor/llmswitch-core/dist/conversion/hub/types/errors.d.ts +5 -0
  391. package/vendor/llmswitch-core/dist/conversion/hub/types/errors.js +13 -0
  392. package/vendor/llmswitch-core/dist/conversion/hub/types/format-envelope.d.ts +7 -0
  393. package/vendor/llmswitch-core/dist/conversion/hub/types/format-envelope.js +1 -0
  394. package/vendor/llmswitch-core/dist/conversion/hub/types/index.d.ts +6 -0
  395. package/vendor/llmswitch-core/dist/conversion/hub/types/index.js +6 -0
  396. package/vendor/llmswitch-core/dist/conversion/hub/types/json.d.ts +9 -0
  397. package/vendor/llmswitch-core/dist/conversion/hub/types/json.js +9 -0
  398. package/vendor/llmswitch-core/dist/conversion/hub/types/node.d.ts +31 -0
  399. package/vendor/llmswitch-core/dist/conversion/hub/types/node.js +1 -0
  400. package/vendor/llmswitch-core/dist/conversion/hub/types/standardized.d.ts +99 -0
  401. package/vendor/llmswitch-core/dist/conversion/hub/types/standardized.js +1 -0
  402. package/vendor/llmswitch-core/dist/conversion/index.d.ts +33 -0
  403. package/vendor/llmswitch-core/dist/conversion/index.js +33 -0
  404. package/vendor/llmswitch-core/dist/conversion/jsonish.d.ts +3 -0
  405. package/vendor/llmswitch-core/dist/conversion/jsonish.js +20 -0
  406. package/vendor/llmswitch-core/dist/conversion/mcp-injection.d.ts +2 -0
  407. package/vendor/llmswitch-core/dist/conversion/mcp-injection.js +7 -0
  408. package/vendor/llmswitch-core/dist/conversion/media.d.ts +1 -0
  409. package/vendor/llmswitch-core/dist/conversion/media.js +4 -0
  410. package/vendor/llmswitch-core/dist/conversion/metadata-passthrough.d.ts +11 -0
  411. package/vendor/llmswitch-core/dist/conversion/metadata-passthrough.js +20 -0
  412. package/vendor/llmswitch-core/dist/conversion/payload-budget.d.ts +13 -0
  413. package/vendor/llmswitch-core/dist/conversion/payload-budget.js +47 -0
  414. package/vendor/llmswitch-core/dist/conversion/pipeline/codecs/v2/anthropic-openai-pipeline.d.ts +11 -0
  415. package/vendor/llmswitch-core/dist/conversion/pipeline/codecs/v2/anthropic-openai-pipeline.js +104 -0
  416. package/vendor/llmswitch-core/dist/conversion/pipeline/codecs/v2/openai-openai-pipeline.d.ts +15 -0
  417. package/vendor/llmswitch-core/dist/conversion/pipeline/codecs/v2/openai-openai-pipeline.js +176 -0
  418. package/vendor/llmswitch-core/dist/conversion/pipeline/codecs/v2/responses-openai-pipeline.d.ts +12 -0
  419. package/vendor/llmswitch-core/dist/conversion/pipeline/codecs/v2/responses-openai-pipeline.js +212 -0
  420. package/vendor/llmswitch-core/dist/conversion/pipeline/codecs/v2/shared/openai-chat-helpers.d.ts +13 -0
  421. package/vendor/llmswitch-core/dist/conversion/pipeline/codecs/v2/shared/openai-chat-helpers.js +34 -0
  422. package/vendor/llmswitch-core/dist/conversion/pipeline/hooks/adapter-context.d.ts +7 -0
  423. package/vendor/llmswitch-core/dist/conversion/pipeline/hooks/adapter-context.js +18 -0
  424. package/vendor/llmswitch-core/dist/conversion/pipeline/hooks/protocol-hooks.d.ts +67 -0
  425. package/vendor/llmswitch-core/dist/conversion/pipeline/hooks/protocol-hooks.js +1 -0
  426. package/vendor/llmswitch-core/dist/conversion/pipeline/index.d.ts +35 -0
  427. package/vendor/llmswitch-core/dist/conversion/pipeline/index.js +103 -0
  428. package/vendor/llmswitch-core/dist/conversion/pipeline/meta/meta-bag.d.ts +20 -0
  429. package/vendor/llmswitch-core/dist/conversion/pipeline/meta/meta-bag.js +81 -0
  430. package/vendor/llmswitch-core/dist/conversion/pipeline/schema/canonical-chat.d.ts +18 -0
  431. package/vendor/llmswitch-core/dist/conversion/pipeline/schema/canonical-chat.js +1 -0
  432. package/vendor/llmswitch-core/dist/conversion/pipeline/schema/index.d.ts +1 -0
  433. package/vendor/llmswitch-core/dist/conversion/pipeline/schema/index.js +1 -0
  434. package/vendor/llmswitch-core/dist/conversion/protocol-field-allowlists.d.ts +7 -0
  435. package/vendor/llmswitch-core/dist/conversion/protocol-field-allowlists.js +9 -0
  436. package/vendor/llmswitch-core/dist/conversion/protocol-state.d.ts +4 -0
  437. package/vendor/llmswitch-core/dist/conversion/protocol-state.js +27 -0
  438. package/vendor/llmswitch-core/dist/conversion/provider-protocol-error.d.ts +17 -0
  439. package/vendor/llmswitch-core/dist/conversion/provider-protocol-error.js +25 -0
  440. package/vendor/llmswitch-core/dist/conversion/responses/responses-host-policy.d.ts +6 -0
  441. package/vendor/llmswitch-core/dist/conversion/responses/responses-host-policy.js +4 -0
  442. package/vendor/llmswitch-core/dist/conversion/responses/responses-openai-bridge/response-payload.d.ts +3 -0
  443. package/vendor/llmswitch-core/dist/conversion/responses/responses-openai-bridge/response-payload.js +190 -0
  444. package/vendor/llmswitch-core/dist/conversion/responses/responses-openai-bridge/types.d.ts +35 -0
  445. package/vendor/llmswitch-core/dist/conversion/responses/responses-openai-bridge/types.js +1 -0
  446. package/vendor/llmswitch-core/dist/conversion/responses/responses-openai-bridge.d.ts +15 -0
  447. package/vendor/llmswitch-core/dist/conversion/responses/responses-openai-bridge.js +475 -0
  448. package/vendor/llmswitch-core/dist/conversion/runtime-metadata.d.ts +7 -0
  449. package/vendor/llmswitch-core/dist/conversion/runtime-metadata.js +31 -0
  450. package/vendor/llmswitch-core/dist/conversion/schema-validator.d.ts +7 -0
  451. package/vendor/llmswitch-core/dist/conversion/schema-validator.js +67 -0
  452. package/vendor/llmswitch-core/dist/conversion/shared/anthropic-message-utils.d.ts +22 -0
  453. package/vendor/llmswitch-core/dist/conversion/shared/anthropic-message-utils.js +1416 -0
  454. package/vendor/llmswitch-core/dist/conversion/shared/chat-envelope-validator.d.ts +8 -0
  455. package/vendor/llmswitch-core/dist/conversion/shared/chat-envelope-validator.js +4 -0
  456. package/vendor/llmswitch-core/dist/conversion/shared/chat-output-normalizer.d.ts +4 -0
  457. package/vendor/llmswitch-core/dist/conversion/shared/chat-output-normalizer.js +10 -0
  458. package/vendor/llmswitch-core/dist/conversion/shared/chat-request-filters.d.ts +8 -0
  459. package/vendor/llmswitch-core/dist/conversion/shared/chat-request-filters.js +63 -0
  460. package/vendor/llmswitch-core/dist/conversion/shared/gemini-tool-utils.d.ts +7 -0
  461. package/vendor/llmswitch-core/dist/conversion/shared/gemini-tool-utils.js +20 -0
  462. package/vendor/llmswitch-core/dist/conversion/shared/openai-finalizer.d.ts +8 -0
  463. package/vendor/llmswitch-core/dist/conversion/shared/openai-finalizer.js +22 -0
  464. package/vendor/llmswitch-core/dist/conversion/shared/openai-message-normalize.d.ts +1 -0
  465. package/vendor/llmswitch-core/dist/conversion/shared/openai-message-normalize.js +151 -0
  466. package/vendor/llmswitch-core/dist/conversion/shared/output-content-normalizer.d.ts +12 -0
  467. package/vendor/llmswitch-core/dist/conversion/shared/output-content-normalizer.js +26 -0
  468. package/vendor/llmswitch-core/dist/conversion/shared/reasoning-mapping.d.ts +5 -0
  469. package/vendor/llmswitch-core/dist/conversion/shared/reasoning-mapping.js +7 -0
  470. package/vendor/llmswitch-core/dist/conversion/shared/reasoning-normalizer.d.ts +25 -0
  471. package/vendor/llmswitch-core/dist/conversion/shared/reasoning-normalizer.js +114 -0
  472. package/vendor/llmswitch-core/dist/conversion/shared/reasoning-tool-normalizer.d.ts +12 -0
  473. package/vendor/llmswitch-core/dist/conversion/shared/reasoning-tool-normalizer.js +22 -0
  474. package/vendor/llmswitch-core/dist/conversion/shared/reasoning-tool-parser.d.ts +10 -0
  475. package/vendor/llmswitch-core/dist/conversion/shared/reasoning-tool-parser.js +11 -0
  476. package/vendor/llmswitch-core/dist/conversion/shared/reasoning-utils.d.ts +2 -0
  477. package/vendor/llmswitch-core/dist/conversion/shared/reasoning-utils.js +19 -0
  478. package/vendor/llmswitch-core/dist/conversion/shared/responses-conversation-store.d.ts +35 -0
  479. package/vendor/llmswitch-core/dist/conversion/shared/responses-conversation-store.js +195 -0
  480. package/vendor/llmswitch-core/dist/conversion/shared/responses-output-builder.d.ts +13 -0
  481. package/vendor/llmswitch-core/dist/conversion/shared/responses-output-builder.js +32 -0
  482. package/vendor/llmswitch-core/dist/conversion/shared/responses-reasoning-registry.d.ts +24 -0
  483. package/vendor/llmswitch-core/dist/conversion/shared/responses-reasoning-registry.js +185 -0
  484. package/vendor/llmswitch-core/dist/conversion/shared/responses-request-adapter.d.ts +7 -0
  485. package/vendor/llmswitch-core/dist/conversion/shared/responses-request-adapter.js +14 -0
  486. package/vendor/llmswitch-core/dist/conversion/shared/responses-response-utils.d.ts +3 -0
  487. package/vendor/llmswitch-core/dist/conversion/shared/responses-response-utils.js +254 -0
  488. package/vendor/llmswitch-core/dist/conversion/shared/responses-tool-utils.d.ts +14 -0
  489. package/vendor/llmswitch-core/dist/conversion/shared/responses-tool-utils.js +102 -0
  490. package/vendor/llmswitch-core/dist/conversion/shared/streaming-text-extractor.d.ts +19 -0
  491. package/vendor/llmswitch-core/dist/conversion/shared/streaming-text-extractor.js +39 -0
  492. package/vendor/llmswitch-core/dist/conversion/shared/text-markup-normalizer/normalize.d.ts +2 -0
  493. package/vendor/llmswitch-core/dist/conversion/shared/text-markup-normalizer/normalize.js +116 -0
  494. package/vendor/llmswitch-core/dist/conversion/shared/text-markup-normalizer.d.ts +4 -0
  495. package/vendor/llmswitch-core/dist/conversion/shared/text-markup-normalizer.js +3 -0
  496. package/vendor/llmswitch-core/dist/conversion/shared/thought-signature-validator.d.ts +52 -0
  497. package/vendor/llmswitch-core/dist/conversion/shared/thought-signature-validator.js +58 -0
  498. package/vendor/llmswitch-core/dist/conversion/shared/tool-argument-repairer.d.ts +39 -0
  499. package/vendor/llmswitch-core/dist/conversion/shared/tool-argument-repairer.js +53 -0
  500. package/vendor/llmswitch-core/dist/conversion/shared/tool-call-id-manager.d.ts +109 -0
  501. package/vendor/llmswitch-core/dist/conversion/shared/tool-call-id-manager.js +202 -0
  502. package/vendor/llmswitch-core/dist/conversion/shared/tool-call-utils.d.ts +11 -0
  503. package/vendor/llmswitch-core/dist/conversion/shared/tool-call-utils.js +14 -0
  504. package/vendor/llmswitch-core/dist/conversion/shared/tool-filter-pipeline.d.ts +21 -0
  505. package/vendor/llmswitch-core/dist/conversion/shared/tool-filter-pipeline.js +171 -0
  506. package/vendor/llmswitch-core/dist/conversion/shared/tool-governor.d.ts +29 -0
  507. package/vendor/llmswitch-core/dist/conversion/shared/tool-governor.js +694 -0
  508. package/vendor/llmswitch-core/dist/conversion/shared/tool-harvester.d.ts +31 -0
  509. package/vendor/llmswitch-core/dist/conversion/shared/tool-harvester.js +23 -0
  510. package/vendor/llmswitch-core/dist/conversion/shared/tool-mapping.d.ts +19 -0
  511. package/vendor/llmswitch-core/dist/conversion/shared/tool-mapping.js +65 -0
  512. package/vendor/llmswitch-core/dist/conversion/shared/tooling.d.ts +29 -0
  513. package/vendor/llmswitch-core/dist/conversion/shared/tooling.js +57 -0
  514. package/vendor/llmswitch-core/dist/conversion/snapshot-utils.d.ts +31 -0
  515. package/vendor/llmswitch-core/dist/conversion/snapshot-utils.js +49 -0
  516. package/vendor/llmswitch-core/dist/conversion/types/bridge-message-types.d.ts +41 -0
  517. package/vendor/llmswitch-core/dist/conversion/types/bridge-message-types.js +1 -0
  518. package/vendor/llmswitch-core/dist/conversion/types/text-markup-normalizer.d.ts +13 -0
  519. package/vendor/llmswitch-core/dist/conversion/types/text-markup-normalizer.js +1 -0
  520. package/vendor/llmswitch-core/dist/conversion/types.d.ts +33 -0
  521. package/vendor/llmswitch-core/dist/conversion/types.js +1 -0
  522. package/vendor/llmswitch-core/dist/filters/builtin/add-fields-filter.d.ts +8 -0
  523. package/vendor/llmswitch-core/dist/filters/builtin/add-fields-filter.js +16 -0
  524. package/vendor/llmswitch-core/dist/filters/builtin/blacklist-filter.d.ts +8 -0
  525. package/vendor/llmswitch-core/dist/filters/builtin/blacklist-filter.js +19 -0
  526. package/vendor/llmswitch-core/dist/filters/builtin/whitelist-filter.d.ts +8 -0
  527. package/vendor/llmswitch-core/dist/filters/builtin/whitelist-filter.js +19 -0
  528. package/vendor/llmswitch-core/dist/filters/config/openai-openai.fieldmap.json +18 -0
  529. package/vendor/llmswitch-core/dist/filters/engine.d.ts +16 -0
  530. package/vendor/llmswitch-core/dist/filters/engine.js +167 -0
  531. package/vendor/llmswitch-core/dist/filters/index.d.ts +18 -0
  532. package/vendor/llmswitch-core/dist/filters/index.js +22 -0
  533. package/vendor/llmswitch-core/dist/filters/special/request-tool-choice-policy.d.ts +11 -0
  534. package/vendor/llmswitch-core/dist/filters/special/request-tool-choice-policy.js +29 -0
  535. package/vendor/llmswitch-core/dist/filters/special/request-tool-list-filter.d.ts +11 -0
  536. package/vendor/llmswitch-core/dist/filters/special/request-tool-list-filter.js +322 -0
  537. package/vendor/llmswitch-core/dist/filters/special/request-toolcalls-stringify.d.ts +13 -0
  538. package/vendor/llmswitch-core/dist/filters/special/request-toolcalls-stringify.js +94 -0
  539. package/vendor/llmswitch-core/dist/filters/special/request-tools-normalize.d.ts +11 -0
  540. package/vendor/llmswitch-core/dist/filters/special/request-tools-normalize.js +114 -0
  541. package/vendor/llmswitch-core/dist/filters/special/response-finish-invariants.d.ts +11 -0
  542. package/vendor/llmswitch-core/dist/filters/special/response-finish-invariants.js +30 -0
  543. package/vendor/llmswitch-core/dist/filters/special/response-openai-to-responses-bridge.d.ts +13 -0
  544. package/vendor/llmswitch-core/dist/filters/special/response-openai-to-responses-bridge.js +24 -0
  545. package/vendor/llmswitch-core/dist/filters/special/response-tool-arguments-blacklist.d.ts +12 -0
  546. package/vendor/llmswitch-core/dist/filters/special/response-tool-arguments-blacklist.js +63 -0
  547. package/vendor/llmswitch-core/dist/filters/special/response-tool-arguments-schema-converge.d.ts +13 -0
  548. package/vendor/llmswitch-core/dist/filters/special/response-tool-arguments-schema-converge.js +63 -0
  549. package/vendor/llmswitch-core/dist/filters/special/response-tool-arguments-stringify.d.ts +9 -0
  550. package/vendor/llmswitch-core/dist/filters/special/response-tool-arguments-stringify.js +132 -0
  551. package/vendor/llmswitch-core/dist/filters/special/response-tool-arguments-whitelist.d.ts +11 -0
  552. package/vendor/llmswitch-core/dist/filters/special/response-tool-arguments-whitelist.js +56 -0
  553. package/vendor/llmswitch-core/dist/filters/special/response-tool-text-canonicalize.d.ts +13 -0
  554. package/vendor/llmswitch-core/dist/filters/special/response-tool-text-canonicalize.js +16 -0
  555. package/vendor/llmswitch-core/dist/filters/special/tool-filter-hooks.d.ts +19 -0
  556. package/vendor/llmswitch-core/dist/filters/special/tool-filter-hooks.js +394 -0
  557. package/vendor/llmswitch-core/dist/filters/special/tool-post-constraints.d.ts +31 -0
  558. package/vendor/llmswitch-core/dist/filters/special/tool-post-constraints.js +120 -0
  559. package/vendor/llmswitch-core/dist/filters/types.d.ts +68 -0
  560. package/vendor/llmswitch-core/dist/filters/types.js +3 -0
  561. package/vendor/llmswitch-core/dist/filters/utils/fieldmap-loader.d.ts +2 -0
  562. package/vendor/llmswitch-core/dist/filters/utils/fieldmap-loader.js +16 -0
  563. package/vendor/llmswitch-core/dist/filters/utils/snapshot-writer.d.ts +10 -0
  564. package/vendor/llmswitch-core/dist/filters/utils/snapshot-writer.js +85 -0
  565. package/vendor/llmswitch-core/dist/guidance/index.d.ts +3 -0
  566. package/vendor/llmswitch-core/dist/guidance/index.js +299 -0
  567. package/vendor/llmswitch-core/dist/http/sse-response.d.ts +22 -0
  568. package/vendor/llmswitch-core/dist/http/sse-response.js +103 -0
  569. package/vendor/llmswitch-core/dist/index.d.ts +11 -0
  570. package/vendor/llmswitch-core/dist/index.js +11 -0
  571. package/vendor/llmswitch-core/dist/native/router_hotpath_napi.node +0 -0
  572. package/vendor/llmswitch-core/dist/quota/apikey-reset.d.ts +17 -0
  573. package/vendor/llmswitch-core/dist/quota/apikey-reset.js +43 -0
  574. package/vendor/llmswitch-core/dist/quota/index.d.ts +2 -0
  575. package/vendor/llmswitch-core/dist/quota/index.js +1 -0
  576. package/vendor/llmswitch-core/dist/quota/quota-manager.d.ts +44 -0
  577. package/vendor/llmswitch-core/dist/quota/quota-manager.js +463 -0
  578. package/vendor/llmswitch-core/dist/quota/quota-state.d.ts +6 -0
  579. package/vendor/llmswitch-core/dist/quota/quota-state.js +191 -0
  580. package/vendor/llmswitch-core/dist/quota/types.d.ts +62 -0
  581. package/vendor/llmswitch-core/dist/quota/types.js +1 -0
  582. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/auth-utils.d.ts +6 -0
  583. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/auth-utils.js +288 -0
  584. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/claude-code-helpers.d.ts +11 -0
  585. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/claude-code-helpers.js +18 -0
  586. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/config-defaults.d.ts +5 -0
  587. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/config-defaults.js +13 -0
  588. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/config-normalizers.d.ts +4 -0
  589. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/config-normalizers.js +106 -0
  590. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/profile-builder.d.ts +8 -0
  591. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/profile-builder.js +87 -0
  592. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/provider-normalization.d.ts +44 -0
  593. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/provider-normalization.js +272 -0
  594. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/responses-helpers.d.ts +15 -0
  595. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/responses-helpers.js +65 -0
  596. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/routing-config.d.ts +24 -0
  597. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/routing-config.js +346 -0
  598. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/streaming-helpers.d.ts +19 -0
  599. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/streaming-helpers.js +172 -0
  600. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/utils.d.ts +5 -0
  601. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/utils.js +41 -0
  602. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/web-search-config.d.ts +4 -0
  603. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap/web-search-config.js +156 -0
  604. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap.d.ts +2 -0
  605. package/vendor/llmswitch-core/dist/router/virtual-router/bootstrap.js +329 -0
  606. package/vendor/llmswitch-core/dist/router/virtual-router/classifier.d.ts +10 -0
  607. package/vendor/llmswitch-core/dist/router/virtual-router/classifier.js +187 -0
  608. package/vendor/llmswitch-core/dist/router/virtual-router/context-advisor.d.ts +23 -0
  609. package/vendor/llmswitch-core/dist/router/virtual-router/context-advisor.js +67 -0
  610. package/vendor/llmswitch-core/dist/router/virtual-router/context-weighted.d.ts +31 -0
  611. package/vendor/llmswitch-core/dist/router/virtual-router/context-weighted.js +54 -0
  612. package/vendor/llmswitch-core/dist/router/virtual-router/default-thinking-keywords.d.ts +1 -0
  613. package/vendor/llmswitch-core/dist/router/virtual-router/default-thinking-keywords.js +13 -0
  614. package/vendor/llmswitch-core/dist/router/virtual-router/engine/antigravity/alias-lease.d.ts +33 -0
  615. package/vendor/llmswitch-core/dist/router/virtual-router/engine/antigravity/alias-lease.js +257 -0
  616. package/vendor/llmswitch-core/dist/router/virtual-router/engine/cooldown-manager.d.ts +34 -0
  617. package/vendor/llmswitch-core/dist/router/virtual-router/engine/cooldown-manager.js +118 -0
  618. package/vendor/llmswitch-core/dist/router/virtual-router/engine/health/index.d.ts +23 -0
  619. package/vendor/llmswitch-core/dist/router/virtual-router/engine/health/index.js +724 -0
  620. package/vendor/llmswitch-core/dist/router/virtual-router/engine/provider-key/parse.d.ts +1 -0
  621. package/vendor/llmswitch-core/dist/router/virtual-router/engine/provider-key/parse.js +1 -0
  622. package/vendor/llmswitch-core/dist/router/virtual-router/engine/route-analytics.d.ts +28 -0
  623. package/vendor/llmswitch-core/dist/router/virtual-router/engine/route-analytics.js +44 -0
  624. package/vendor/llmswitch-core/dist/router/virtual-router/engine/routing-pools/index.d.ts +13 -0
  625. package/vendor/llmswitch-core/dist/router/virtual-router/engine/routing-pools/index.js +386 -0
  626. package/vendor/llmswitch-core/dist/router/virtual-router/engine/routing-state/keys.d.ts +3 -0
  627. package/vendor/llmswitch-core/dist/router/virtual-router/engine/routing-state/keys.js +30 -0
  628. package/vendor/llmswitch-core/dist/router/virtual-router/engine/routing-state/metadata.d.ts +6 -0
  629. package/vendor/llmswitch-core/dist/router/virtual-router/engine/routing-state/metadata.js +132 -0
  630. package/vendor/llmswitch-core/dist/router/virtual-router/engine/routing-state/store.d.ts +10 -0
  631. package/vendor/llmswitch-core/dist/router/virtual-router/engine/routing-state/store.js +156 -0
  632. package/vendor/llmswitch-core/dist/router/virtual-router/engine/sticky-session-manager.d.ts +29 -0
  633. package/vendor/llmswitch-core/dist/router/virtual-router/engine/sticky-session-manager.js +55 -0
  634. package/vendor/llmswitch-core/dist/router/virtual-router/engine-health.d.ts +1 -0
  635. package/vendor/llmswitch-core/dist/router/virtual-router/engine-health.js +1 -0
  636. package/vendor/llmswitch-core/dist/router/virtual-router/engine-legacy/config.d.ts +11 -0
  637. package/vendor/llmswitch-core/dist/router/virtual-router/engine-legacy/config.js +108 -0
  638. package/vendor/llmswitch-core/dist/router/virtual-router/engine-legacy/direct-model.d.ts +10 -0
  639. package/vendor/llmswitch-core/dist/router/virtual-router/engine-legacy/direct-model.js +38 -0
  640. package/vendor/llmswitch-core/dist/router/virtual-router/engine-legacy/health.d.ts +13 -0
  641. package/vendor/llmswitch-core/dist/router/virtual-router/engine-legacy/health.js +104 -0
  642. package/vendor/llmswitch-core/dist/router/virtual-router/engine-legacy/helpers.d.ts +16 -0
  643. package/vendor/llmswitch-core/dist/router/virtual-router/engine-legacy/helpers.js +226 -0
  644. package/vendor/llmswitch-core/dist/router/virtual-router/engine-legacy/route-utils.d.ts +19 -0
  645. package/vendor/llmswitch-core/dist/router/virtual-router/engine-legacy/route-utils.js +212 -0
  646. package/vendor/llmswitch-core/dist/router/virtual-router/engine-legacy/selection-core.d.ts +28 -0
  647. package/vendor/llmswitch-core/dist/router/virtual-router/engine-legacy/selection-core.js +112 -0
  648. package/vendor/llmswitch-core/dist/router/virtual-router/engine-legacy/selection-state.d.ts +16 -0
  649. package/vendor/llmswitch-core/dist/router/virtual-router/engine-legacy/selection-state.js +187 -0
  650. package/vendor/llmswitch-core/dist/router/virtual-router/engine-legacy/state-accessors.d.ts +21 -0
  651. package/vendor/llmswitch-core/dist/router/virtual-router/engine-legacy/state-accessors.js +118 -0
  652. package/vendor/llmswitch-core/dist/router/virtual-router/engine-legacy.d.ts +123 -0
  653. package/vendor/llmswitch-core/dist/router/virtual-router/engine-legacy.js +245 -0
  654. package/vendor/llmswitch-core/dist/router/virtual-router/engine-logging.d.ts +67 -0
  655. package/vendor/llmswitch-core/dist/router/virtual-router/engine-logging.js +356 -0
  656. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/alias-selection.d.ts +15 -0
  657. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/alias-selection.js +118 -0
  658. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/context-weight-multipliers.d.ts +11 -0
  659. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/context-weight-multipliers.js +23 -0
  660. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/direct-provider-model.d.ts +9 -0
  661. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/direct-provider-model.js +49 -0
  662. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/instruction-target.d.ts +6 -0
  663. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/instruction-target.js +54 -0
  664. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/key-parsing.d.ts +8 -0
  665. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/key-parsing.js +47 -0
  666. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/multimodal-capability.d.ts +3 -0
  667. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/multimodal-capability.js +26 -0
  668. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-clock-directive-parser.d.ts +24 -0
  669. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-clock-directive-parser.js +209 -0
  670. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-directives.d.ts +7 -0
  671. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-directives.js +121 -0
  672. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-orchestration-semantics.d.ts +10 -0
  673. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-orchestration-semantics.js +110 -0
  674. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-semantics.d.ts +8 -0
  675. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-semantics.js +281 -0
  676. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-time-tag-semantics.d.ts +1 -0
  677. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-time-tag-semantics.js +25 -0
  678. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminders-semantics.d.ts +4 -0
  679. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminders-semantics.js +44 -0
  680. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-clock-tool-schema-semantics.d.ts +2 -0
  681. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-clock-tool-schema-semantics.js +62 -0
  682. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-governance-semantics.d.ts +49 -0
  683. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-governance-semantics.js +552 -0
  684. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-governed-filter-semantics.d.ts +9 -0
  685. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-governed-filter-semantics.js +64 -0
  686. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-node-result-semantics.d.ts +5 -0
  687. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-node-result-semantics.js +163 -0
  688. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-post-governed-normalization-semantics.d.ts +1 -0
  689. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-post-governed-normalization-semantics.js +49 -0
  690. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-servertool-orchestration-semantics.d.ts +30 -0
  691. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-servertool-orchestration-semantics.js +446 -0
  692. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-web-search-intent-semantics.d.ts +1 -0
  693. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-process-web-search-intent-semantics.js +49 -0
  694. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-request-filter-semantics.d.ts +1 -0
  695. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-chat-request-filter-semantics.js +54 -0
  696. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-compat-action-semantics.d.ts +22 -0
  697. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-compat-action-semantics.js +559 -0
  698. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-deepseek-web-compat.d.ts +17 -0
  699. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-deepseek-web-compat.js +26 -0
  700. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-bridge-action-semantics.d.ts +276 -0
  701. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-bridge-action-semantics.js +1291 -0
  702. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-bridge-policy-semantics.d.ts +72 -0
  703. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-bridge-policy-semantics.js +405 -0
  704. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-edge-stage-semantics.d.ts +18 -0
  705. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-edge-stage-semantics.js +333 -0
  706. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-governance-semantics.d.ts +30 -0
  707. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-governance-semantics.js +202 -0
  708. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-inbound-outbound-semantics.d.ts +22 -0
  709. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-inbound-outbound-semantics.js +426 -0
  710. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-orchestration-semantics.d.ts +57 -0
  711. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-orchestration-semantics.js +705 -0
  712. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-inbound-semantics.d.ts +53 -0
  713. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-inbound-semantics.js +598 -0
  714. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-outbound-semantics.d.ts +147 -0
  715. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-outbound-semantics.js +570 -0
  716. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-process-semantics.d.ts +26 -0
  717. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-process-semantics.js +148 -0
  718. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-resp-semantics.d.ts +46 -0
  719. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-resp-semantics.js +755 -0
  720. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-semantic-mappers.d.ts +2 -0
  721. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-semantic-mappers.js +83 -0
  722. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-session-identifiers-semantics.d.ts +11 -0
  723. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-session-identifiers-semantics.js +207 -0
  724. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-target-semantics.d.ts +3 -0
  725. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-hub-pipeline-target-semantics.js +128 -0
  726. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-router-hotpath-analysis.d.ts +57 -0
  727. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-router-hotpath-analysis.js +217 -0
  728. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-router-hotpath-loader.d.ts +5 -0
  729. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-router-hotpath-loader.js +464 -0
  730. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-router-hotpath-policy.d.ts +5 -0
  731. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-router-hotpath-policy.js +18 -0
  732. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-router-hotpath-quota-buckets.d.ts +25 -0
  733. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-router-hotpath-quota-buckets.js +85 -0
  734. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-router-hotpath.d.ts +59 -0
  735. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-router-hotpath.js +117 -0
  736. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-shared-conversion-semantics.d.ts +243 -0
  737. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-shared-conversion-semantics.js +2594 -0
  738. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-snapshot-hooks.d.ts +3 -0
  739. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-snapshot-hooks.js +109 -0
  740. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-virtual-router-alias-selection-semantics.d.ts +16 -0
  741. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-virtual-router-alias-selection-semantics.js +96 -0
  742. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-virtual-router-engine-proxy.d.ts +16 -0
  743. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-virtual-router-engine-proxy.js +14 -0
  744. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-virtual-router-routing-instructions-semantics.d.ts +3 -0
  745. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-virtual-router-routing-instructions-semantics.js +123 -0
  746. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-virtual-router-stop-message-actions-semantics.d.ts +6 -0
  747. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-virtual-router-stop-message-actions-semantics.js +85 -0
  748. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-virtual-router-stop-message-semantics.d.ts +9 -0
  749. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-virtual-router-stop-message-semantics.js +70 -0
  750. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-virtual-router-stop-message-state-semantics.d.ts +2 -0
  751. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/native-virtual-router-stop-message-state-semantics.js +76 -0
  752. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/route-utils.d.ts +15 -0
  753. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/route-utils.js +248 -0
  754. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/routing-state-filter.d.ts +4 -0
  755. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/routing-state-filter.js +50 -0
  756. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/selection-deps.d.ts +58 -0
  757. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/selection-deps.js +1 -0
  758. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/sticky-pool.d.ts +11 -0
  759. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/sticky-pool.js +109 -0
  760. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/tier-load-balancing.d.ts +16 -0
  761. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/tier-load-balancing.js +120 -0
  762. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/tier-priority.d.ts +11 -0
  763. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/tier-priority.js +55 -0
  764. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/tier-selection-antigravity-session-lease.d.ts +10 -0
  765. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/tier-selection-antigravity-session-lease.js +231 -0
  766. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/tier-selection-antigravity-target-split.d.ts +4 -0
  767. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/tier-selection-antigravity-target-split.js +43 -0
  768. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/tier-selection-quota-integration.d.ts +29 -0
  769. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/tier-selection-quota-integration.js +194 -0
  770. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/tier-selection-select.d.ts +22 -0
  771. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/tier-selection-select.js +352 -0
  772. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/tier-selection.d.ts +3 -0
  773. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection/tier-selection.js +309 -0
  774. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection.d.ts +1 -0
  775. package/vendor/llmswitch-core/dist/router/virtual-router/engine-selection.js +1 -0
  776. package/vendor/llmswitch-core/dist/router/virtual-router/engine.d.ts +43 -0
  777. package/vendor/llmswitch-core/dist/router/virtual-router/engine.js +360 -0
  778. package/vendor/llmswitch-core/dist/router/virtual-router/error-center.d.ts +10 -0
  779. package/vendor/llmswitch-core/dist/router/virtual-router/error-center.js +39 -0
  780. package/vendor/llmswitch-core/dist/router/virtual-router/features.d.ts +3 -0
  781. package/vendor/llmswitch-core/dist/router/virtual-router/features.js +124 -0
  782. package/vendor/llmswitch-core/dist/router/virtual-router/health-manager.d.ts +23 -0
  783. package/vendor/llmswitch-core/dist/router/virtual-router/health-manager.js +107 -0
  784. package/vendor/llmswitch-core/dist/router/virtual-router/health-weighted.d.ts +25 -0
  785. package/vendor/llmswitch-core/dist/router/virtual-router/health-weighted.js +63 -0
  786. package/vendor/llmswitch-core/dist/router/virtual-router/load-balancer.d.ts +28 -0
  787. package/vendor/llmswitch-core/dist/router/virtual-router/load-balancer.js +160 -0
  788. package/vendor/llmswitch-core/dist/router/virtual-router/message-utils.d.ts +15 -0
  789. package/vendor/llmswitch-core/dist/router/virtual-router/message-utils.js +235 -0
  790. package/vendor/llmswitch-core/dist/router/virtual-router/pre-command-file-resolver.d.ts +2 -0
  791. package/vendor/llmswitch-core/dist/router/virtual-router/pre-command-file-resolver.js +117 -0
  792. package/vendor/llmswitch-core/dist/router/virtual-router/provider-registry.d.ts +17 -0
  793. package/vendor/llmswitch-core/dist/router/virtual-router/provider-registry.js +145 -0
  794. package/vendor/llmswitch-core/dist/router/virtual-router/routing-instructions/clean.d.ts +3 -0
  795. package/vendor/llmswitch-core/dist/router/virtual-router/routing-instructions/clean.js +34 -0
  796. package/vendor/llmswitch-core/dist/router/virtual-router/routing-instructions/parse.d.ts +6 -0
  797. package/vendor/llmswitch-core/dist/router/virtual-router/routing-instructions/parse.js +24 -0
  798. package/vendor/llmswitch-core/dist/router/virtual-router/routing-instructions/state.d.ts +4 -0
  799. package/vendor/llmswitch-core/dist/router/virtual-router/routing-instructions/state.js +284 -0
  800. package/vendor/llmswitch-core/dist/router/virtual-router/routing-instructions/types.d.ts +74 -0
  801. package/vendor/llmswitch-core/dist/router/virtual-router/routing-instructions/types.js +2 -0
  802. package/vendor/llmswitch-core/dist/router/virtual-router/routing-instructions.d.ts +5 -0
  803. package/vendor/llmswitch-core/dist/router/virtual-router/routing-instructions.js +4 -0
  804. package/vendor/llmswitch-core/dist/router/virtual-router/routing-pre-command-actions.d.ts +3 -0
  805. package/vendor/llmswitch-core/dist/router/virtual-router/routing-pre-command-actions.js +26 -0
  806. package/vendor/llmswitch-core/dist/router/virtual-router/routing-pre-command-parser.d.ts +2 -0
  807. package/vendor/llmswitch-core/dist/router/virtual-router/routing-pre-command-parser.js +85 -0
  808. package/vendor/llmswitch-core/dist/router/virtual-router/routing-pre-command-state-codec.d.ts +3 -0
  809. package/vendor/llmswitch-core/dist/router/virtual-router/routing-pre-command-state-codec.js +24 -0
  810. package/vendor/llmswitch-core/dist/router/virtual-router/routing-stop-message-actions.d.ts +2 -0
  811. package/vendor/llmswitch-core/dist/router/virtual-router/routing-stop-message-actions.js +99 -0
  812. package/vendor/llmswitch-core/dist/router/virtual-router/routing-stop-message-parser.d.ts +3 -0
  813. package/vendor/llmswitch-core/dist/router/virtual-router/routing-stop-message-parser.js +19 -0
  814. package/vendor/llmswitch-core/dist/router/virtual-router/routing-stop-message-state-codec.d.ts +7 -0
  815. package/vendor/llmswitch-core/dist/router/virtual-router/routing-stop-message-state-codec.js +121 -0
  816. package/vendor/llmswitch-core/dist/router/virtual-router/sticky-session-store.d.ts +8 -0
  817. package/vendor/llmswitch-core/dist/router/virtual-router/sticky-session-store.js +296 -0
  818. package/vendor/llmswitch-core/dist/router/virtual-router/stop-message-file-resolver.d.ts +2 -0
  819. package/vendor/llmswitch-core/dist/router/virtual-router/stop-message-file-resolver.js +76 -0
  820. package/vendor/llmswitch-core/dist/router/virtual-router/stop-message-stage-template-files.d.ts +12 -0
  821. package/vendor/llmswitch-core/dist/router/virtual-router/stop-message-stage-template-files.js +67 -0
  822. package/vendor/llmswitch-core/dist/router/virtual-router/stop-message-state-sync.d.ts +17 -0
  823. package/vendor/llmswitch-core/dist/router/virtual-router/stop-message-state-sync.js +82 -0
  824. package/vendor/llmswitch-core/dist/router/virtual-router/success-center.d.ts +10 -0
  825. package/vendor/llmswitch-core/dist/router/virtual-router/success-center.js +32 -0
  826. package/vendor/llmswitch-core/dist/router/virtual-router/token-counter.d.ts +2 -0
  827. package/vendor/llmswitch-core/dist/router/virtual-router/token-counter.js +148 -0
  828. package/vendor/llmswitch-core/dist/router/virtual-router/token-estimator.d.ts +2 -0
  829. package/vendor/llmswitch-core/dist/router/virtual-router/token-estimator.js +16 -0
  830. package/vendor/llmswitch-core/dist/router/virtual-router/token-file-scanner.d.ts +24 -0
  831. package/vendor/llmswitch-core/dist/router/virtual-router/token-file-scanner.js +117 -0
  832. package/vendor/llmswitch-core/dist/router/virtual-router/tool-signals.d.ts +19 -0
  833. package/vendor/llmswitch-core/dist/router/virtual-router/tool-signals.js +647 -0
  834. package/vendor/llmswitch-core/dist/router/virtual-router/types.d.ts +681 -0
  835. package/vendor/llmswitch-core/dist/router/virtual-router/types.js +34 -0
  836. package/vendor/llmswitch-core/dist/runtime/user-data-paths.d.ts +5 -0
  837. package/vendor/llmswitch-core/dist/runtime/user-data-paths.js +43 -0
  838. package/vendor/llmswitch-core/dist/servertool/clock/config.d.ts +17 -0
  839. package/vendor/llmswitch-core/dist/servertool/clock/config.js +48 -0
  840. package/vendor/llmswitch-core/dist/servertool/clock/daemon.d.ts +24 -0
  841. package/vendor/llmswitch-core/dist/servertool/clock/daemon.js +207 -0
  842. package/vendor/llmswitch-core/dist/servertool/clock/io.d.ts +2 -0
  843. package/vendor/llmswitch-core/dist/servertool/clock/io.js +14 -0
  844. package/vendor/llmswitch-core/dist/servertool/clock/log.d.ts +3 -0
  845. package/vendor/llmswitch-core/dist/servertool/clock/log.js +13 -0
  846. package/vendor/llmswitch-core/dist/servertool/clock/ntp.d.ts +18 -0
  847. package/vendor/llmswitch-core/dist/servertool/clock/ntp.js +318 -0
  848. package/vendor/llmswitch-core/dist/servertool/clock/paths.d.ts +5 -0
  849. package/vendor/llmswitch-core/dist/servertool/clock/paths.js +28 -0
  850. package/vendor/llmswitch-core/dist/servertool/clock/recurrence.d.ts +7 -0
  851. package/vendor/llmswitch-core/dist/servertool/clock/recurrence.js +248 -0
  852. package/vendor/llmswitch-core/dist/servertool/clock/session-scope.d.ts +3 -0
  853. package/vendor/llmswitch-core/dist/servertool/clock/session-scope.js +41 -0
  854. package/vendor/llmswitch-core/dist/servertool/clock/session-store.d.ts +3 -0
  855. package/vendor/llmswitch-core/dist/servertool/clock/session-store.js +63 -0
  856. package/vendor/llmswitch-core/dist/servertool/clock/state.d.ts +9 -0
  857. package/vendor/llmswitch-core/dist/servertool/clock/state.js +135 -0
  858. package/vendor/llmswitch-core/dist/servertool/clock/task-store.d.ts +5 -0
  859. package/vendor/llmswitch-core/dist/servertool/clock/task-store.js +4 -0
  860. package/vendor/llmswitch-core/dist/servertool/clock/tasks.d.ts +24 -0
  861. package/vendor/llmswitch-core/dist/servertool/clock/tasks.js +595 -0
  862. package/vendor/llmswitch-core/dist/servertool/clock/types.d.ts +98 -0
  863. package/vendor/llmswitch-core/dist/servertool/clock/types.js +1 -0
  864. package/vendor/llmswitch-core/dist/servertool/continue-execution/log.d.ts +3 -0
  865. package/vendor/llmswitch-core/dist/servertool/continue-execution/log.js +13 -0
  866. package/vendor/llmswitch-core/dist/servertool/engine.d.ts +38 -0
  867. package/vendor/llmswitch-core/dist/servertool/engine.js +1660 -0
  868. package/vendor/llmswitch-core/dist/servertool/followup-shadow.d.ts +16 -0
  869. package/vendor/llmswitch-core/dist/servertool/followup-shadow.js +145 -0
  870. package/vendor/llmswitch-core/dist/servertool/handlers/antigravity-thought-signature-bootstrap.d.ts +1 -0
  871. package/vendor/llmswitch-core/dist/servertool/handlers/antigravity-thought-signature-bootstrap.js +225 -0
  872. package/vendor/llmswitch-core/dist/servertool/handlers/apply-patch-guard.d.ts +1 -0
  873. package/vendor/llmswitch-core/dist/servertool/handlers/apply-patch-guard.js +5 -0
  874. package/vendor/llmswitch-core/dist/servertool/handlers/clock-auto.d.ts +1 -0
  875. package/vendor/llmswitch-core/dist/servertool/handlers/clock-auto.js +177 -0
  876. package/vendor/llmswitch-core/dist/servertool/handlers/clock.d.ts +1 -0
  877. package/vendor/llmswitch-core/dist/servertool/handlers/clock.js +544 -0
  878. package/vendor/llmswitch-core/dist/servertool/handlers/compaction-detect.d.ts +1 -0
  879. package/vendor/llmswitch-core/dist/servertool/handlers/compaction-detect.js +1 -0
  880. package/vendor/llmswitch-core/dist/servertool/handlers/continue-execution.d.ts +1 -0
  881. package/vendor/llmswitch-core/dist/servertool/handlers/continue-execution.js +110 -0
  882. package/vendor/llmswitch-core/dist/servertool/handlers/exec-command-guard.d.ts +1 -0
  883. package/vendor/llmswitch-core/dist/servertool/handlers/exec-command-guard.js +10 -0
  884. package/vendor/llmswitch-core/dist/servertool/handlers/followup-message-trimmer.d.ts +16 -0
  885. package/vendor/llmswitch-core/dist/servertool/handlers/followup-message-trimmer.js +198 -0
  886. package/vendor/llmswitch-core/dist/servertool/handlers/followup-request-builder.d.ts +25 -0
  887. package/vendor/llmswitch-core/dist/servertool/handlers/followup-request-builder.js +515 -0
  888. package/vendor/llmswitch-core/dist/servertool/handlers/followup-sanitize.d.ts +2 -0
  889. package/vendor/llmswitch-core/dist/servertool/handlers/followup-sanitize.js +7 -0
  890. package/vendor/llmswitch-core/dist/servertool/handlers/gemini-empty-reply-continue.d.ts +1 -0
  891. package/vendor/llmswitch-core/dist/servertool/handlers/gemini-empty-reply-continue.js +3 -0
  892. package/vendor/llmswitch-core/dist/servertool/handlers/iflow-model-error-retry.d.ts +1 -0
  893. package/vendor/llmswitch-core/dist/servertool/handlers/iflow-model-error-retry.js +92 -0
  894. package/vendor/llmswitch-core/dist/servertool/handlers/recursive-detection-guard.d.ts +1 -0
  895. package/vendor/llmswitch-core/dist/servertool/handlers/recursive-detection-guard.js +374 -0
  896. package/vendor/llmswitch-core/dist/servertool/handlers/review.d.ts +1 -0
  897. package/vendor/llmswitch-core/dist/servertool/handlers/review.js +181 -0
  898. package/vendor/llmswitch-core/dist/servertool/handlers/stop-message-auto/blocked-report.d.ts +16 -0
  899. package/vendor/llmswitch-core/dist/servertool/handlers/stop-message-auto/blocked-report.js +407 -0
  900. package/vendor/llmswitch-core/dist/servertool/handlers/stop-message-auto/iflow-followup.d.ts +44 -0
  901. package/vendor/llmswitch-core/dist/servertool/handlers/stop-message-auto/iflow-followup.js +816 -0
  902. package/vendor/llmswitch-core/dist/servertool/handlers/stop-message-auto/routing-state.d.ts +28 -0
  903. package/vendor/llmswitch-core/dist/servertool/handlers/stop-message-auto/routing-state.js +123 -0
  904. package/vendor/llmswitch-core/dist/servertool/handlers/stop-message-auto/runtime-utils.d.ts +81 -0
  905. package/vendor/llmswitch-core/dist/servertool/handlers/stop-message-auto/runtime-utils.js +355 -0
  906. package/vendor/llmswitch-core/dist/servertool/handlers/stop-message-auto.d.ts +1 -0
  907. package/vendor/llmswitch-core/dist/servertool/handlers/stop-message-auto.js +553 -0
  908. package/vendor/llmswitch-core/dist/servertool/handlers/vision.d.ts +7 -0
  909. package/vendor/llmswitch-core/dist/servertool/handlers/vision.js +240 -0
  910. package/vendor/llmswitch-core/dist/servertool/handlers/web-search.d.ts +7 -0
  911. package/vendor/llmswitch-core/dist/servertool/handlers/web-search.js +926 -0
  912. package/vendor/llmswitch-core/dist/servertool/log/progress-file.d.ts +14 -0
  913. package/vendor/llmswitch-core/dist/servertool/log/progress-file.js +88 -0
  914. package/vendor/llmswitch-core/dist/servertool/pending-session.d.ts +19 -0
  915. package/vendor/llmswitch-core/dist/servertool/pending-session.js +99 -0
  916. package/vendor/llmswitch-core/dist/servertool/pre-command-hooks.d.ts +17 -0
  917. package/vendor/llmswitch-core/dist/servertool/pre-command-hooks.js +491 -0
  918. package/vendor/llmswitch-core/dist/servertool/reenter-backend.d.ts +23 -0
  919. package/vendor/llmswitch-core/dist/servertool/reenter-backend.js +20 -0
  920. package/vendor/llmswitch-core/dist/servertool/registry.d.ts +35 -0
  921. package/vendor/llmswitch-core/dist/servertool/registry.js +92 -0
  922. package/vendor/llmswitch-core/dist/servertool/server-side-tools.d.ts +15 -0
  923. package/vendor/llmswitch-core/dist/servertool/server-side-tools.js +898 -0
  924. package/vendor/llmswitch-core/dist/servertool/stop-gateway-context.d.ts +14 -0
  925. package/vendor/llmswitch-core/dist/servertool/stop-gateway-context.js +167 -0
  926. package/vendor/llmswitch-core/dist/servertool/stop-message-compare-context.d.ts +24 -0
  927. package/vendor/llmswitch-core/dist/servertool/stop-message-compare-context.js +133 -0
  928. package/vendor/llmswitch-core/dist/servertool/strip-servertool-calls.d.ts +2 -0
  929. package/vendor/llmswitch-core/dist/servertool/strip-servertool-calls.js +75 -0
  930. package/vendor/llmswitch-core/dist/servertool/types.d.ts +235 -0
  931. package/vendor/llmswitch-core/dist/servertool/types.js +1 -0
  932. package/vendor/llmswitch-core/dist/sse/index.d.ts +176 -0
  933. package/vendor/llmswitch-core/dist/sse/index.js +142 -0
  934. package/vendor/llmswitch-core/dist/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +15 -0
  935. package/vendor/llmswitch-core/dist/sse/json-to-sse/anthropic-json-to-sse-converter.js +112 -0
  936. package/vendor/llmswitch-core/dist/sse/json-to-sse/chat-json-to-sse-converter.d.ts +80 -0
  937. package/vendor/llmswitch-core/dist/sse/json-to-sse/chat-json-to-sse-converter.js +300 -0
  938. package/vendor/llmswitch-core/dist/sse/json-to-sse/event-generators/chat.d.ts +55 -0
  939. package/vendor/llmswitch-core/dist/sse/json-to-sse/event-generators/chat.js +233 -0
  940. package/vendor/llmswitch-core/dist/sse/json-to-sse/event-generators/responses.d.ts +103 -0
  941. package/vendor/llmswitch-core/dist/sse/json-to-sse/event-generators/responses.js +703 -0
  942. package/vendor/llmswitch-core/dist/sse/json-to-sse/gemini-json-to-sse-converter.d.ts +15 -0
  943. package/vendor/llmswitch-core/dist/sse/json-to-sse/gemini-json-to-sse-converter.js +99 -0
  944. package/vendor/llmswitch-core/dist/sse/json-to-sse/index.d.ts +7 -0
  945. package/vendor/llmswitch-core/dist/sse/json-to-sse/index.js +9 -0
  946. package/vendor/llmswitch-core/dist/sse/json-to-sse/responses-json-to-sse-converter.d.ts +80 -0
  947. package/vendor/llmswitch-core/dist/sse/json-to-sse/responses-json-to-sse-converter.js +322 -0
  948. package/vendor/llmswitch-core/dist/sse/json-to-sse/sequencers/anthropic-sequencer.d.ts +13 -0
  949. package/vendor/llmswitch-core/dist/sse/json-to-sse/sequencers/anthropic-sequencer.js +162 -0
  950. package/vendor/llmswitch-core/dist/sse/json-to-sse/sequencers/chat-sequencer.d.ts +39 -0
  951. package/vendor/llmswitch-core/dist/sse/json-to-sse/sequencers/chat-sequencer.js +264 -0
  952. package/vendor/llmswitch-core/dist/sse/json-to-sse/sequencers/gemini-sequencer.d.ts +10 -0
  953. package/vendor/llmswitch-core/dist/sse/json-to-sse/sequencers/gemini-sequencer.js +95 -0
  954. package/vendor/llmswitch-core/dist/sse/json-to-sse/sequencers/responses-sequencer.d.ts +40 -0
  955. package/vendor/llmswitch-core/dist/sse/json-to-sse/sequencers/responses-sequencer.js +293 -0
  956. package/vendor/llmswitch-core/dist/sse/registry/sse-codec-registry.d.ts +32 -0
  957. package/vendor/llmswitch-core/dist/sse/registry/sse-codec-registry.js +135 -0
  958. package/vendor/llmswitch-core/dist/sse/shared/chat-serializer.d.ts +4 -0
  959. package/vendor/llmswitch-core/dist/sse/shared/chat-serializer.js +40 -0
  960. package/vendor/llmswitch-core/dist/sse/shared/constants.d.ts +272 -0
  961. package/vendor/llmswitch-core/dist/sse/shared/constants.js +321 -0
  962. package/vendor/llmswitch-core/dist/sse/shared/reasoning-dispatcher.d.ts +10 -0
  963. package/vendor/llmswitch-core/dist/sse/shared/reasoning-dispatcher.js +25 -0
  964. package/vendor/llmswitch-core/dist/sse/shared/responses-output-normalizer.d.ts +13 -0
  965. package/vendor/llmswitch-core/dist/sse/shared/responses-output-normalizer.js +47 -0
  966. package/vendor/llmswitch-core/dist/sse/shared/serializers/anthropic-event-serializer.d.ts +2 -0
  967. package/vendor/llmswitch-core/dist/sse/shared/serializers/anthropic-event-serializer.js +9 -0
  968. package/vendor/llmswitch-core/dist/sse/shared/serializers/base-serializer.d.ts +158 -0
  969. package/vendor/llmswitch-core/dist/sse/shared/serializers/base-serializer.js +210 -0
  970. package/vendor/llmswitch-core/dist/sse/shared/serializers/chat-event-serializer.d.ts +82 -0
  971. package/vendor/llmswitch-core/dist/sse/shared/serializers/chat-event-serializer.js +275 -0
  972. package/vendor/llmswitch-core/dist/sse/shared/serializers/gemini-event-serializer.d.ts +2 -0
  973. package/vendor/llmswitch-core/dist/sse/shared/serializers/gemini-event-serializer.js +5 -0
  974. package/vendor/llmswitch-core/dist/sse/shared/serializers/index.d.ts +42 -0
  975. package/vendor/llmswitch-core/dist/sse/shared/serializers/index.js +56 -0
  976. package/vendor/llmswitch-core/dist/sse/shared/serializers/responses-event-serializer.d.ts +131 -0
  977. package/vendor/llmswitch-core/dist/sse/shared/serializers/responses-event-serializer.js +375 -0
  978. package/vendor/llmswitch-core/dist/sse/shared/serializers/types.d.ts +51 -0
  979. package/vendor/llmswitch-core/dist/sse/shared/serializers/types.js +4 -0
  980. package/vendor/llmswitch-core/dist/sse/shared/utils.d.ts +254 -0
  981. package/vendor/llmswitch-core/dist/sse/shared/utils.js +543 -0
  982. package/vendor/llmswitch-core/dist/sse/shared/writer.d.ts +127 -0
  983. package/vendor/llmswitch-core/dist/sse/shared/writer.js +321 -0
  984. package/vendor/llmswitch-core/dist/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +20 -0
  985. package/vendor/llmswitch-core/dist/sse/sse-to-json/anthropic-sse-to-json-converter.js +204 -0
  986. package/vendor/llmswitch-core/dist/sse/sse-to-json/builders/anthropic-response-builder.d.ts +16 -0
  987. package/vendor/llmswitch-core/dist/sse/sse-to-json/builders/anthropic-response-builder.js +258 -0
  988. package/vendor/llmswitch-core/dist/sse/sse-to-json/builders/response-builder.d.ts +177 -0
  989. package/vendor/llmswitch-core/dist/sse/sse-to-json/builders/response-builder.js +1135 -0
  990. package/vendor/llmswitch-core/dist/sse/sse-to-json/chat-sse-to-json-converter.d.ts +119 -0
  991. package/vendor/llmswitch-core/dist/sse/sse-to-json/chat-sse-to-json-converter.js +850 -0
  992. package/vendor/llmswitch-core/dist/sse/sse-to-json/gemini-sse-to-json-converter.d.ts +14 -0
  993. package/vendor/llmswitch-core/dist/sse/sse-to-json/gemini-sse-to-json-converter.js +186 -0
  994. package/vendor/llmswitch-core/dist/sse/sse-to-json/index.d.ts +7 -0
  995. package/vendor/llmswitch-core/dist/sse/sse-to-json/index.js +9 -0
  996. package/vendor/llmswitch-core/dist/sse/sse-to-json/parsers/sse-parser.d.ts +73 -0
  997. package/vendor/llmswitch-core/dist/sse/sse-to-json/parsers/sse-parser.js +434 -0
  998. package/vendor/llmswitch-core/dist/sse/sse-to-json/responses-sse-to-json-converter.d.ts +61 -0
  999. package/vendor/llmswitch-core/dist/sse/sse-to-json/responses-sse-to-json-converter.js +306 -0
  1000. package/vendor/llmswitch-core/dist/sse/types/anthropic-types.d.ts +194 -0
  1001. package/vendor/llmswitch-core/dist/sse/types/anthropic-types.js +8 -0
  1002. package/vendor/llmswitch-core/dist/sse/types/chat-types.d.ts +321 -0
  1003. package/vendor/llmswitch-core/dist/sse/types/chat-types.js +33 -0
  1004. package/vendor/llmswitch-core/dist/sse/types/conversion-context.d.ts +214 -0
  1005. package/vendor/llmswitch-core/dist/sse/types/conversion-context.js +20 -0
  1006. package/vendor/llmswitch-core/dist/sse/types/core-interfaces.d.ts +94 -0
  1007. package/vendor/llmswitch-core/dist/sse/types/core-interfaces.js +5 -0
  1008. package/vendor/llmswitch-core/dist/sse/types/gemini-types.d.ts +135 -0
  1009. package/vendor/llmswitch-core/dist/sse/types/gemini-types.js +5 -0
  1010. package/vendor/llmswitch-core/dist/sse/types/index.d.ts +17 -0
  1011. package/vendor/llmswitch-core/dist/sse/types/index.js +9 -0
  1012. package/vendor/llmswitch-core/dist/sse/types/responses-types.d.ts +334 -0
  1013. package/vendor/llmswitch-core/dist/sse/types/responses-types.js +38 -0
  1014. package/vendor/llmswitch-core/dist/sse/types/sse-events.d.ts +181 -0
  1015. package/vendor/llmswitch-core/dist/sse/types/sse-events.js +150 -0
  1016. package/vendor/llmswitch-core/dist/sse/types/stream-state.d.ts +199 -0
  1017. package/vendor/llmswitch-core/dist/sse/types/stream-state.js +44 -0
  1018. package/vendor/llmswitch-core/dist/sse/types/utility-types.d.ts +234 -0
  1019. package/vendor/llmswitch-core/dist/sse/types/utility-types.js +46 -0
  1020. package/vendor/llmswitch-core/dist/telemetry/stats-center.d.ts +82 -0
  1021. package/vendor/llmswitch-core/dist/telemetry/stats-center.js +308 -0
  1022. package/vendor/llmswitch-core/dist/tools/apply-patch/args-normalizer/default-actions.d.ts +2 -0
  1023. package/vendor/llmswitch-core/dist/tools/apply-patch/args-normalizer/default-actions.js +12 -0
  1024. package/vendor/llmswitch-core/dist/tools/apply-patch/args-normalizer/extract-patch.d.ts +2 -0
  1025. package/vendor/llmswitch-core/dist/tools/apply-patch/args-normalizer/extract-patch.js +15 -0
  1026. package/vendor/llmswitch-core/dist/tools/apply-patch/args-normalizer/index.d.ts +2 -0
  1027. package/vendor/llmswitch-core/dist/tools/apply-patch/args-normalizer/index.js +164 -0
  1028. package/vendor/llmswitch-core/dist/tools/apply-patch/args-normalizer/structured-builders.d.ts +7 -0
  1029. package/vendor/llmswitch-core/dist/tools/apply-patch/args-normalizer/structured-builders.js +85 -0
  1030. package/vendor/llmswitch-core/dist/tools/apply-patch/args-normalizer/types.d.ts +54 -0
  1031. package/vendor/llmswitch-core/dist/tools/apply-patch/args-normalizer/types.js +1 -0
  1032. package/vendor/llmswitch-core/dist/tools/apply-patch/execution-capturer.d.ts +13 -0
  1033. package/vendor/llmswitch-core/dist/tools/apply-patch/execution-capturer.js +181 -0
  1034. package/vendor/llmswitch-core/dist/tools/apply-patch/json/parse-loose.d.ts +3 -0
  1035. package/vendor/llmswitch-core/dist/tools/apply-patch/json/parse-loose.js +139 -0
  1036. package/vendor/llmswitch-core/dist/tools/apply-patch/patch-text/context-diff.d.ts +1 -0
  1037. package/vendor/llmswitch-core/dist/tools/apply-patch/patch-text/context-diff.js +173 -0
  1038. package/vendor/llmswitch-core/dist/tools/apply-patch/patch-text/git-diff.d.ts +1 -0
  1039. package/vendor/llmswitch-core/dist/tools/apply-patch/patch-text/git-diff.js +138 -0
  1040. package/vendor/llmswitch-core/dist/tools/apply-patch/patch-text/looks-like-patch.d.ts +1 -0
  1041. package/vendor/llmswitch-core/dist/tools/apply-patch/patch-text/looks-like-patch.js +11 -0
  1042. package/vendor/llmswitch-core/dist/tools/apply-patch/patch-text/normalize.d.ts +3 -0
  1043. package/vendor/llmswitch-core/dist/tools/apply-patch/patch-text/normalize.js +383 -0
  1044. package/vendor/llmswitch-core/dist/tools/apply-patch/regression-capturer.d.ts +13 -0
  1045. package/vendor/llmswitch-core/dist/tools/apply-patch/regression-capturer.js +113 -0
  1046. package/vendor/llmswitch-core/dist/tools/apply-patch/structured/coercion.d.ts +3 -0
  1047. package/vendor/llmswitch-core/dist/tools/apply-patch/structured/coercion.js +103 -0
  1048. package/vendor/llmswitch-core/dist/tools/apply-patch/structured.d.ts +20 -0
  1049. package/vendor/llmswitch-core/dist/tools/apply-patch/structured.js +537 -0
  1050. package/vendor/llmswitch-core/dist/tools/apply-patch/validation/shared.d.ts +3 -0
  1051. package/vendor/llmswitch-core/dist/tools/apply-patch/validation/shared.js +6 -0
  1052. package/vendor/llmswitch-core/dist/tools/apply-patch/validator.d.ts +8 -0
  1053. package/vendor/llmswitch-core/dist/tools/apply-patch/validator.js +21 -0
  1054. package/vendor/llmswitch-core/dist/tools/apply-patch-structured.d.ts +1 -0
  1055. package/vendor/llmswitch-core/dist/tools/apply-patch-structured.js +1 -0
  1056. package/vendor/llmswitch-core/dist/tools/args-json.d.ts +1 -0
  1057. package/vendor/llmswitch-core/dist/tools/args-json.js +204 -0
  1058. package/vendor/llmswitch-core/dist/tools/exec-command/normalize.d.ts +17 -0
  1059. package/vendor/llmswitch-core/dist/tools/exec-command/normalize.js +116 -0
  1060. package/vendor/llmswitch-core/dist/tools/exec-command/regression-capturer.d.ts +11 -0
  1061. package/vendor/llmswitch-core/dist/tools/exec-command/regression-capturer.js +144 -0
  1062. package/vendor/llmswitch-core/dist/tools/exec-command/validator.d.ts +10 -0
  1063. package/vendor/llmswitch-core/dist/tools/exec-command/validator.js +238 -0
  1064. package/vendor/llmswitch-core/dist/tools/patch-regression-capturer.d.ts +1 -0
  1065. package/vendor/llmswitch-core/dist/tools/patch-regression-capturer.js +1 -0
  1066. package/vendor/llmswitch-core/dist/tools/tool-description-utils.d.ts +5 -0
  1067. package/vendor/llmswitch-core/dist/tools/tool-description-utils.js +50 -0
  1068. package/vendor/llmswitch-core/dist/tools/tool-registry.d.ts +15 -0
  1069. package/vendor/llmswitch-core/dist/tools/tool-registry.js +253 -0
  1070. package/vendor/llmswitch-core/package.json +189 -0
  1071. package/scripts/link-llmswitch.mjs +0 -56
@@ -0,0 +1,1660 @@
1
+ import { runServerSideToolEngine } from './server-side-tools.js';
2
+ import { ProviderProtocolError } from '../conversion/provider-protocol-error.js';
3
+ import { ensureRuntimeMetadata, readRuntimeMetadata } from '../conversion/runtime-metadata.js';
4
+ import { createHash } from 'node:crypto';
5
+ import { loadRoutingInstructionStateSync, saveRoutingInstructionStateSync } from '../router/virtual-router/sticky-session-store.js';
6
+ import { deserializeRoutingInstructionState, serializeRoutingInstructionState } from '../router/virtual-router/routing-instructions.js';
7
+ import { applyHubFollowupPolicyShadow } from './followup-shadow.js';
8
+ import { buildServerToolFollowupChatPayloadFromInjection, extractCapturedChatSeed } from './handlers/followup-request-builder.js';
9
+ import { findNextUndeliveredDueAtMs, listClockTasks, resolveClockConfig } from './clock/task-store.js';
10
+ import { resolveClockSessionScope } from './clock/session-scope.js';
11
+ import { savePendingServerToolInjection } from './pending-session.js';
12
+ import { appendServerToolProgressFileEvent } from './log/progress-file.js';
13
+ import { attachStopGatewayContext, inspectStopGatewaySignal } from './stop-gateway-context.js';
14
+ import { formatStopMessageCompareContext, readStopMessageCompareContext } from './stop-message-compare-context.js';
15
+ const STOP_MESSAGE_STAGE_TIMEOUT_MS = 900_000;
16
+ const STOP_MESSAGE_LOOP_WARN_THRESHOLD = 5;
17
+ const STOP_MESSAGE_LOOP_FAIL_THRESHOLD = 10;
18
+ function parseTimeoutMs(raw, fallback) {
19
+ const n = typeof raw === 'string' ? Number(raw.trim()) : typeof raw === 'number' ? raw : NaN;
20
+ if (!Number.isFinite(n) || n <= 0) {
21
+ return fallback;
22
+ }
23
+ return Math.floor(n);
24
+ }
25
+ function resolveServerToolTimeoutMs() {
26
+ return parseTimeoutMs(process.env.ROUTECODEX_SERVERTOOL_TIMEOUT_MS ||
27
+ process.env.RCC_SERVERTOOL_TIMEOUT_MS ||
28
+ process.env.LLMSWITCH_SERVERTOOL_TIMEOUT_MS, 500_000);
29
+ }
30
+ function resolveServerToolFollowupTimeoutMs(fallback) {
31
+ return parseTimeoutMs(process.env.ROUTECODEX_SERVERTOOL_FOLLOWUP_TIMEOUT_MS ||
32
+ process.env.RCC_SERVERTOOL_FOLLOWUP_TIMEOUT_MS ||
33
+ process.env.LLMSWITCH_SERVERTOOL_FOLLOWUP_TIMEOUT_MS, fallback);
34
+ }
35
+ function withTimeout(promise, timeoutMs, buildError) {
36
+ if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
37
+ return promise;
38
+ }
39
+ let timer;
40
+ return new Promise((resolve, reject) => {
41
+ timer = setTimeout(() => reject(buildError()), timeoutMs);
42
+ promise.then(resolve, reject).finally(() => {
43
+ if (timer) {
44
+ clearTimeout(timer);
45
+ timer = undefined;
46
+ }
47
+ });
48
+ });
49
+ }
50
+ class ServerToolClientDisconnectedError extends Error {
51
+ code = 'SERVERTOOL_CLIENT_DISCONNECTED';
52
+ }
53
+ function createServerToolClientDisconnectedError(options) {
54
+ const error = new ServerToolClientDisconnectedError(`[servertool] client disconnected during followup` + (options.flowId ? ` flow=${options.flowId}` : ''));
55
+ error.details = {
56
+ requestId: options.requestId,
57
+ flowId: options.flowId
58
+ };
59
+ return error;
60
+ }
61
+ function isServerToolClientDisconnectedError(error) {
62
+ return Boolean(error &&
63
+ typeof error === 'object' &&
64
+ typeof error.code === 'string' &&
65
+ error.code === 'SERVERTOOL_CLIENT_DISCONNECTED');
66
+ }
67
+ function createClientDisconnectWatcher(options) {
68
+ const interval = typeof options.pollIntervalMs === 'number' && Number.isFinite(options.pollIntervalMs) && options.pollIntervalMs > 0
69
+ ? Math.max(20, Math.floor(options.pollIntervalMs))
70
+ : 80;
71
+ let timer;
72
+ let active = true;
73
+ const cancel = () => {
74
+ active = false;
75
+ if (timer) {
76
+ clearTimeout(timer);
77
+ timer = undefined;
78
+ }
79
+ };
80
+ const promise = new Promise((_resolve, reject) => {
81
+ const check = () => {
82
+ if (!active) {
83
+ return;
84
+ }
85
+ if (isAdapterClientDisconnected(options.adapterContext)) {
86
+ cancel();
87
+ reject(createServerToolClientDisconnectedError({
88
+ requestId: options.requestId,
89
+ flowId: options.flowId
90
+ }));
91
+ return;
92
+ }
93
+ timer = setTimeout(check, interval);
94
+ timer.unref?.();
95
+ };
96
+ timer = setTimeout(check, interval);
97
+ timer.unref?.();
98
+ });
99
+ return { promise, cancel };
100
+ }
101
+ function isServerToolTimeoutError(error) {
102
+ return Boolean(error &&
103
+ typeof error === 'object' &&
104
+ typeof error.code === 'string' &&
105
+ error.code === 'SERVERTOOL_TIMEOUT');
106
+ }
107
+ function createServerToolTimeoutError(options) {
108
+ const err = new ProviderProtocolError(`[servertool] ${options.phase} timeout after ${options.timeoutMs}ms` +
109
+ (options.flowId ? ` flow=${options.flowId}` : ''), {
110
+ code: 'SERVERTOOL_TIMEOUT',
111
+ category: 'INTERNAL_ERROR',
112
+ details: {
113
+ requestId: options.requestId,
114
+ phase: options.phase,
115
+ flowId: options.flowId,
116
+ timeoutMs: options.timeoutMs,
117
+ attempt: options.attempt,
118
+ maxAttempts: options.maxAttempts
119
+ }
120
+ });
121
+ err.status = 504;
122
+ return err;
123
+ }
124
+ function createStopMessageFetchFailedError(options) {
125
+ const baseMessage = options.reason === 'loop_limit'
126
+ ? 'fetch failed: network error (stopMessage loop detected)'
127
+ : 'fetch failed: network error (stopMessage exceeded stage timeout)';
128
+ const err = new ProviderProtocolError(baseMessage, {
129
+ code: 'SERVERTOOL_TIMEOUT',
130
+ category: 'EXTERNAL_ERROR',
131
+ details: {
132
+ requestId: options.requestId,
133
+ reason: options.reason,
134
+ ...(typeof options.elapsedMs === 'number' && Number.isFinite(options.elapsedMs)
135
+ ? { elapsedMs: Math.max(0, Math.floor(options.elapsedMs)) }
136
+ : {}),
137
+ ...(typeof options.repeatCount === 'number' && Number.isFinite(options.repeatCount)
138
+ ? { repeatCount: Math.max(0, Math.floor(options.repeatCount)) }
139
+ : {}),
140
+ ...(typeof options.timeoutMs === 'number' && Number.isFinite(options.timeoutMs)
141
+ ? { timeoutMs: Math.max(0, Math.floor(options.timeoutMs)) }
142
+ : {}),
143
+ ...(typeof options.attempt === 'number' && Number.isFinite(options.attempt)
144
+ ? { attempt: Math.max(1, Math.floor(options.attempt)) }
145
+ : {}),
146
+ ...(typeof options.maxAttempts === 'number' && Number.isFinite(options.maxAttempts)
147
+ ? { maxAttempts: Math.max(1, Math.floor(options.maxAttempts)) }
148
+ : {})
149
+ }
150
+ });
151
+ err.status = 502;
152
+ return err;
153
+ }
154
+ function coerceFollowupPayloadStream(payload, stream) {
155
+ if (!payload || typeof payload !== 'object') {
156
+ return payload;
157
+ }
158
+ // ServerTool followup requests must be non-streaming to keep parsing deterministic and avoid
159
+ // provider-side SSE wrappers leaking into internal reenter calls.
160
+ if (stream === false) {
161
+ payload.stream = false;
162
+ }
163
+ return payload;
164
+ }
165
+ function hasNonEmptyText(value) {
166
+ if (typeof value === 'string') {
167
+ return value.trim().length > 0;
168
+ }
169
+ if (Array.isArray(value)) {
170
+ return value.some((entry) => hasNonEmptyText(entry));
171
+ }
172
+ if (value && typeof value === 'object' && !Array.isArray(value)) {
173
+ const record = value;
174
+ if (hasNonEmptyText(record.text))
175
+ return true;
176
+ if (hasNonEmptyText(record.output_text))
177
+ return true;
178
+ if (hasNonEmptyText(record.content))
179
+ return true;
180
+ }
181
+ return false;
182
+ }
183
+ function isEmptyClientResponsePayload(payload) {
184
+ if (!payload || typeof payload !== 'object') {
185
+ return true;
186
+ }
187
+ // If upstream returned an explicit error shape, treat as non-empty (caller should surface it).
188
+ if (Object.prototype.hasOwnProperty.call(payload, 'error')) {
189
+ return false;
190
+ }
191
+ // OpenAI Responses: requires_action (function_call output) is a meaningful response and must not be
192
+ // treated as "empty". Some auto-followup servertools (for example stop_message_flow)
193
+ // previously misclassified this as empty because there is no output_text/content yet.
194
+ const requiredAction = payload.required_action;
195
+ if (requiredAction && typeof requiredAction === 'object') {
196
+ return false;
197
+ }
198
+ const outputForResponses = Array.isArray(payload.output) ? payload.output : [];
199
+ if (outputForResponses.length > 0) {
200
+ for (const item of outputForResponses) {
201
+ if (!item || typeof item !== 'object' || Array.isArray(item))
202
+ continue;
203
+ const type = typeof item.type === 'string' ? String(item.type).trim().toLowerCase() : '';
204
+ if (type === 'function_call' || type === 'tool_call' || type === 'tool_use' || type.includes('tool')) {
205
+ return false;
206
+ }
207
+ }
208
+ }
209
+ const choices = Array.isArray(payload.choices) ? payload.choices : [];
210
+ if (choices.length > 0) {
211
+ const first = choices[0] && typeof choices[0] === 'object' && !Array.isArray(choices[0]) ? choices[0] : null;
212
+ const message = first && typeof first.message === 'object' && first.message !== null && !Array.isArray(first.message)
213
+ ? first.message
214
+ : null;
215
+ if (!message) {
216
+ return true;
217
+ }
218
+ const toolCalls = Array.isArray(message.tool_calls) ? message.tool_calls : [];
219
+ if (toolCalls.length > 0) {
220
+ return false;
221
+ }
222
+ // Support common chat shapes: content string/array, reasoning_content, etc.
223
+ if (hasNonEmptyText(message.content))
224
+ return false;
225
+ if (hasNonEmptyText(message.reasoning_content))
226
+ return false;
227
+ if (hasNonEmptyText(message.reasoning))
228
+ return false;
229
+ return true;
230
+ }
231
+ const output = Array.isArray(payload.output) ? payload.output : [];
232
+ if (output.length > 0) {
233
+ for (const item of output) {
234
+ if (!item || typeof item !== 'object' || Array.isArray(item))
235
+ continue;
236
+ const content = item.content;
237
+ if (hasNonEmptyText(content)) {
238
+ return false;
239
+ }
240
+ if (hasNonEmptyText(item.text))
241
+ return false;
242
+ if (hasNonEmptyText(item.output_text))
243
+ return false;
244
+ }
245
+ return true;
246
+ }
247
+ return true;
248
+ }
249
+ function createEmptyFollowupError(args) {
250
+ const wrapped = new ProviderProtocolError(`[servertool] Followup returned empty response for flow ${args.flowId ?? 'unknown'}`, {
251
+ code: 'SERVERTOOL_EMPTY_FOLLOWUP',
252
+ category: 'EXTERNAL_ERROR',
253
+ details: {
254
+ flowId: args.flowId,
255
+ requestId: args.requestId,
256
+ error: args.lastError instanceof Error ? args.lastError.message : undefined,
257
+ ...(args.originalResponseWasEmpty ? { originalResponseWasEmpty: true } : {})
258
+ }
259
+ });
260
+ wrapped.status = 502;
261
+ wrapped.cause = args.lastError;
262
+ return wrapped;
263
+ }
264
+ function createFollowupContractError(args) {
265
+ const wrapped = new ProviderProtocolError(`[servertool] Followup contract failed for flow ${args.flowId ?? 'unknown'}: ${args.reason}`, {
266
+ code: 'SERVERTOOL_FOLLOWUP_FAILED',
267
+ category: 'INTERNAL_ERROR',
268
+ details: {
269
+ flowId: args.flowId,
270
+ requestId: args.requestId,
271
+ reason: args.reason,
272
+ ...(args.details ?? {})
273
+ }
274
+ });
275
+ wrapped.status = 502;
276
+ wrapped.cause = args.cause;
277
+ return wrapped;
278
+ }
279
+ function isStopFinishReasonWithoutToolCalls(base) {
280
+ return inspectStopGatewaySignal(base).eligible;
281
+ }
282
+ async function shouldDisableServerToolTimeoutForClockHold(args) {
283
+ // Only relevant for stop/length responses: clock_auto may hold indefinitely.
284
+ if (!isStopFinishReasonWithoutToolCalls(args.chat)) {
285
+ return false;
286
+ }
287
+ const record = args.adapterContext;
288
+ const rt = readRuntimeMetadata(record);
289
+ const sessionId = resolveClockSessionScope(record, rt);
290
+ if (!sessionId) {
291
+ return false;
292
+ }
293
+ const clockConfig = resolveClockConfig(rt?.clock);
294
+ if (!clockConfig) {
295
+ return false;
296
+ }
297
+ // If already within due window, clock_auto won't need long hold.
298
+ try {
299
+ const tasks = await listClockTasks(sessionId, clockConfig);
300
+ const at = Date.now();
301
+ const nextDueAtMs = findNextUndeliveredDueAtMs(tasks, at);
302
+ if (!nextDueAtMs) {
303
+ return false;
304
+ }
305
+ const thresholdMs = nextDueAtMs - clockConfig.dueWindowMs;
306
+ if (thresholdMs <= at) {
307
+ return false;
308
+ }
309
+ // Only disable when the wait exceeds current timeout.
310
+ if (args.serverToolTimeoutMs > 0 && thresholdMs - at <= args.serverToolTimeoutMs) {
311
+ return false;
312
+ }
313
+ return true;
314
+ }
315
+ catch {
316
+ return false;
317
+ }
318
+ }
319
+ export async function runServerToolOrchestration(options) {
320
+ const BLUE = '\x1b[38;5;39m';
321
+ const YELLOW = '\x1b[38;5;214m';
322
+ const GOLD = '\x1b[38;5;220m';
323
+ const RESET = '\x1b[0m';
324
+ const resolveToolName = (flowId) => {
325
+ const normalized = flowId.trim();
326
+ if (!normalized)
327
+ return 'unknown';
328
+ const mapping = {
329
+ continue_execution_flow: 'continue_execution',
330
+ review_flow: 'review',
331
+ stop_message_flow: 'stop_message_auto',
332
+ apply_patch_guard: 'apply_patch_guard',
333
+ exec_command_guard: 'exec_command_guard',
334
+ iflow_model_error_retry: 'iflow_model_error_retry',
335
+ antigravity_thought_signature_bootstrap: 'antigravity_thought_signature_bootstrap',
336
+ web_search_flow: 'web_search',
337
+ vision_flow: 'vision_auto',
338
+ clock_flow: 'clock',
339
+ clock_hold_flow: 'clock_auto',
340
+ recursive_detection_guard: 'recursive_detection_guard'
341
+ };
342
+ return mapping[normalized] ?? normalized;
343
+ };
344
+ const resolveStage = (step, message) => {
345
+ const normalized = message.trim().toLowerCase();
346
+ if (normalized === 'matched' || step <= 1)
347
+ return 'match';
348
+ if (normalized.startsWith('completed') || step >= 5)
349
+ return 'final';
350
+ return 'followup';
351
+ };
352
+ const normalizeResult = (message) => {
353
+ const normalized = message.trim().toLowerCase();
354
+ if (!normalized)
355
+ return 'unknown';
356
+ const group = /^completed\s*\(([^)]+)\)/.exec(normalized);
357
+ if (group && group[1]) {
358
+ return 'completed_' + group[1].trim().replace(/[^a-z0-9]+/g, '_');
359
+ }
360
+ return normalized.replace(/[^a-z0-9]+/g, '_').replace(/^_+|_+$/g, '') || 'unknown';
361
+ };
362
+ const logStopEntry = (stage, result, extra) => {
363
+ const color = BLUE;
364
+ const viewStage = stage === 'trigger' ? 'match' : 'entry';
365
+ const source = typeof extra?.source === 'string' ? extra.source : 'unknown';
366
+ const reason = typeof extra?.reason === 'string' ? extra.reason : 'unknown';
367
+ const eligible = typeof extra?.eligible === 'boolean' ? String(extra.eligible) : 'unknown';
368
+ const flowId = typeof extra?.flowId === 'string' ? extra.flowId : '';
369
+ const brief = stage === 'entry'
370
+ ? `source=${source} reason=${reason} eligible=${eligible}`
371
+ : `result=${result} flow=${flowId || 'none'}`;
372
+ try {
373
+ // eslint-disable-next-line no-console
374
+ console.log(`${color}[servertool][stop_watch] requestId=${options.requestId} stage=${viewStage} ${brief}${RESET}`);
375
+ }
376
+ catch {
377
+ /* best-effort logging */
378
+ }
379
+ appendServerToolProgressFileEvent({
380
+ requestId: options.requestId,
381
+ flowId: 'stop_message_flow',
382
+ tool: 'stop_message_auto',
383
+ stage,
384
+ result,
385
+ message: result,
386
+ step: stage === 'entry' ? 0 : 2,
387
+ entryEndpoint: options.entryEndpoint,
388
+ providerProtocol: options.providerProtocol
389
+ });
390
+ };
391
+ const logProgress = (step, _total, message, extra) => {
392
+ const flowId = typeof extra?.flowId === 'string' ? extra.flowId.trim() : '';
393
+ const tool = resolveToolName(flowId);
394
+ const stage = resolveStage(step, message);
395
+ const result = normalizeResult(message);
396
+ const color = flowId === 'continue_execution_flow' ? GOLD : YELLOW;
397
+ try {
398
+ // eslint-disable-next-line no-console
399
+ console.log(`${color}[servertool] requestId=${options.requestId} tool=${tool} stage=${stage} result=${result}${RESET}`);
400
+ }
401
+ catch {
402
+ /* best-effort logging */
403
+ }
404
+ appendServerToolProgressFileEvent({
405
+ requestId: options.requestId,
406
+ flowId: flowId || 'none',
407
+ tool,
408
+ stage,
409
+ result,
410
+ message,
411
+ step,
412
+ entryEndpoint: options.entryEndpoint,
413
+ providerProtocol: options.providerProtocol
414
+ });
415
+ };
416
+ const logAutoHookTrace = (event) => {
417
+ const reasonToken = typeof event.reason === 'string' && event.reason.trim()
418
+ ? event.reason.trim().toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_+|_+$/g, '')
419
+ : 'unknown';
420
+ appendServerToolProgressFileEvent({
421
+ requestId: options.requestId,
422
+ flowId: event.flowId || `hook:${event.hookId}`,
423
+ tool: event.hookId,
424
+ stage: 'hook',
425
+ result: `${event.result}_${reasonToken || 'unknown'}`,
426
+ message: `${event.result} (${event.reason}) queue=${event.queue}[${event.queueIndex}/${event.queueTotal}] phase=${event.phase} priority=${event.priority}`,
427
+ step: 2,
428
+ entryEndpoint: options.entryEndpoint,
429
+ providerProtocol: options.providerProtocol
430
+ });
431
+ try {
432
+ options.stageRecorder?.record('servertool.hook', {
433
+ hookId: event.hookId,
434
+ phase: event.phase,
435
+ priority: event.priority,
436
+ result: event.result,
437
+ reason: event.reason,
438
+ queue: event.queue,
439
+ queueIndex: event.queueIndex,
440
+ queueTotal: event.queueTotal,
441
+ ...(event.flowId ? { flowId: event.flowId } : {})
442
+ });
443
+ }
444
+ catch {
445
+ // best-effort only
446
+ }
447
+ if (event.hookId === 'stop_message_auto' && event.result === 'miss') {
448
+ const compareContext = readStopMessageCompareContext(options.adapterContext);
449
+ const summary = formatStopMessageCompareContext(compareContext);
450
+ try {
451
+ // eslint-disable-next-line no-console
452
+ console.log(`${BLUE}[servertool][stop_compare] requestId=${options.requestId} stage=miss flow=none ${summary}${RESET}`);
453
+ }
454
+ catch {
455
+ // best-effort logging
456
+ }
457
+ const compareResult = compareContext
458
+ ? `${compareContext.decision}_${compareContext.reason.toLowerCase().replace(/[^a-z0-9]+/g, '_') || 'unknown'}`
459
+ : 'unknown_no_context';
460
+ appendServerToolProgressFileEvent({
461
+ requestId: options.requestId,
462
+ flowId: 'none',
463
+ tool: 'stop_message_auto',
464
+ stage: 'compare',
465
+ result: compareResult,
466
+ message: summary,
467
+ step: 2,
468
+ entryEndpoint: options.entryEndpoint,
469
+ providerProtocol: options.providerProtocol
470
+ });
471
+ }
472
+ };
473
+ const logStopCompare = (stage, flowId) => {
474
+ const compareContext = readStopMessageCompareContext(options.adapterContext);
475
+ const summary = formatStopMessageCompareContext(compareContext);
476
+ const viewStage = stage === 'trigger' ? 'match' : 'entry';
477
+ const flowToken = flowId && flowId.trim() ? flowId.trim() : 'none';
478
+ try {
479
+ // eslint-disable-next-line no-console
480
+ console.log(`${BLUE}[servertool][stop_compare] requestId=${options.requestId} stage=${viewStage} flow=${flowToken} ${summary}${RESET}`);
481
+ }
482
+ catch {
483
+ // best-effort logging
484
+ }
485
+ const compareResult = compareContext
486
+ ? `${compareContext.decision}_${compareContext.reason.toLowerCase().replace(/[^a-z0-9]+/g, '_') || 'unknown'}`
487
+ : 'unknown_no_context';
488
+ appendServerToolProgressFileEvent({
489
+ requestId: options.requestId,
490
+ flowId: flowToken,
491
+ tool: 'stop_message_auto',
492
+ stage: 'compare',
493
+ result: compareResult,
494
+ message: summary,
495
+ step: stage === 'entry' ? 1 : 3,
496
+ entryEndpoint: options.entryEndpoint,
497
+ providerProtocol: options.providerProtocol
498
+ });
499
+ try {
500
+ options.stageRecorder?.record('servertool.stop_compare', {
501
+ stage: viewStage,
502
+ flowId: flowToken,
503
+ summary,
504
+ ...(compareContext ? { compare: compareContext } : {})
505
+ });
506
+ }
507
+ catch {
508
+ // best-effort only
509
+ }
510
+ };
511
+ const stopSignal = inspectStopGatewaySignal(options.chat);
512
+ attachStopGatewayContext(options.adapterContext, stopSignal);
513
+ if (stopSignal.observed) {
514
+ logStopEntry('entry', 'observed', {
515
+ reason: stopSignal.reason,
516
+ source: stopSignal.source,
517
+ eligible: stopSignal.eligible,
518
+ ...(typeof stopSignal.choiceIndex === 'number' ? { choiceIndex: stopSignal.choiceIndex } : {}),
519
+ ...(typeof stopSignal.hasToolCalls === 'boolean' ? { hasToolCalls: stopSignal.hasToolCalls } : {})
520
+ });
521
+ }
522
+ const serverToolTimeoutMs = resolveServerToolTimeoutMs();
523
+ const shouldDisableTimeout = await shouldDisableServerToolTimeoutForClockHold({
524
+ chat: options.chat,
525
+ adapterContext: options.adapterContext,
526
+ serverToolTimeoutMs
527
+ });
528
+ const effectiveServerToolTimeoutMs = shouldDisableTimeout ? 0 : serverToolTimeoutMs;
529
+ const followupTimeoutMs = resolveServerToolFollowupTimeoutMs(serverToolTimeoutMs);
530
+ const engineOptions = {
531
+ chatResponse: options.chat,
532
+ adapterContext: options.adapterContext,
533
+ entryEndpoint: options.entryEndpoint,
534
+ requestId: options.requestId,
535
+ providerProtocol: options.providerProtocol,
536
+ providerInvoker: options.providerInvoker,
537
+ reenterPipeline: options.reenterPipeline,
538
+ clientInjectDispatch: options.clientInjectDispatch,
539
+ onAutoHookTrace: logAutoHookTrace
540
+ };
541
+ const runEngine = async (overrides) => withTimeout(runServerSideToolEngine({
542
+ ...engineOptions,
543
+ ...overrides
544
+ }), effectiveServerToolTimeoutMs, () => createServerToolTimeoutError({
545
+ requestId: options.requestId,
546
+ phase: 'engine',
547
+ timeoutMs: effectiveServerToolTimeoutMs || serverToolTimeoutMs
548
+ }));
549
+ // StopMessage owns a dedicated orchestration skeleton:
550
+ // same trigger/processing semantics as before, but isolated from the generic servertool queue.
551
+ let engineResult = await runEngine({
552
+ disableToolCallHandlers: true,
553
+ includeAutoHookIds: ['stop_message_auto']
554
+ });
555
+ if (engineResult.mode === 'passthrough' || !engineResult.execution) {
556
+ engineResult = await runEngine({
557
+ excludeAutoHookIds: ['stop_message_auto']
558
+ });
559
+ }
560
+ if (engineResult.mode === 'passthrough' || !engineResult.execution) {
561
+ const skipReason = engineResult.mode === 'passthrough' ? 'passthrough' : 'no_execution';
562
+ if (stopSignal.observed) {
563
+ logStopEntry('trigger', `skipped_${skipReason}`, {
564
+ reason: stopSignal.reason,
565
+ source: stopSignal.source,
566
+ eligible: stopSignal.eligible
567
+ });
568
+ logStopCompare('trigger');
569
+ }
570
+ try {
571
+ options.stageRecorder?.record('servertool.match', {
572
+ matched: false,
573
+ mode: engineResult.mode,
574
+ reason: skipReason
575
+ });
576
+ }
577
+ catch {
578
+ // best-effort only
579
+ }
580
+ appendServerToolProgressFileEvent({
581
+ requestId: options.requestId,
582
+ flowId: 'none',
583
+ tool: 'none',
584
+ stage: 'match',
585
+ result: 'skipped_' + skipReason,
586
+ message: 'skipped (' + skipReason + ')',
587
+ step: 0,
588
+ entryEndpoint: options.entryEndpoint,
589
+ providerProtocol: options.providerProtocol
590
+ });
591
+ return {
592
+ chat: engineResult.finalChatResponse,
593
+ executed: false
594
+ };
595
+ }
596
+ const flowId = engineResult.execution.flowId ?? 'unknown';
597
+ if (stopSignal.observed) {
598
+ logStopEntry('trigger', flowId === 'stop_message_flow' ? 'activated' : 'non_stop_flow', {
599
+ flowId,
600
+ reason: stopSignal.reason,
601
+ source: stopSignal.source,
602
+ eligible: stopSignal.eligible
603
+ });
604
+ logStopCompare('trigger', flowId);
605
+ }
606
+ try {
607
+ options.stageRecorder?.record('servertool.match', {
608
+ matched: true,
609
+ flowId,
610
+ hasFollowup: Boolean(engineResult.execution.followup)
611
+ });
612
+ }
613
+ catch {
614
+ // best-effort only
615
+ }
616
+ const totalSteps = 5;
617
+ logProgress(1, totalSteps, 'matched', { flowId });
618
+ // Mixed tools: persist servertool outputs for next request, but return remaining tool_calls to client.
619
+ if (engineResult.pendingInjection) {
620
+ const sessionId = engineResult.pendingInjection.sessionId;
621
+ if (sessionId && sessionId.trim()) {
622
+ try {
623
+ await savePendingServerToolInjection(sessionId.trim(), {
624
+ createdAtMs: Date.now(),
625
+ afterToolCallIds: engineResult.pendingInjection.afterToolCallIds,
626
+ messages: engineResult.pendingInjection.messages,
627
+ sourceRequestId: options.requestId
628
+ });
629
+ }
630
+ catch (error) {
631
+ throw createFollowupContractError({
632
+ flowId: engineResult.execution.flowId,
633
+ requestId: options.requestId,
634
+ reason: 'pending_injection_persist_failed',
635
+ cause: error,
636
+ details: {
637
+ sessionId: sessionId.trim(),
638
+ error: error instanceof Error ? error.message : String(error ?? 'unknown')
639
+ }
640
+ });
641
+ }
642
+ }
643
+ else {
644
+ throw createFollowupContractError({
645
+ flowId: engineResult.execution.flowId,
646
+ requestId: options.requestId,
647
+ reason: 'pending_injection_missing_session_id'
648
+ });
649
+ }
650
+ logProgress(5, totalSteps, 'completed (mixed tools; no reenter)', { flowId });
651
+ return {
652
+ chat: engineResult.finalChatResponse,
653
+ executed: true,
654
+ flowId: engineResult.execution.flowId
655
+ };
656
+ }
657
+ if (!engineResult.execution.followup) {
658
+ logProgress(5, totalSteps, 'completed (no followup)', { flowId });
659
+ return {
660
+ chat: engineResult.finalChatResponse,
661
+ executed: true,
662
+ flowId: engineResult.execution.flowId
663
+ };
664
+ }
665
+ const isStopMessageFlow = engineResult.execution.flowId === 'stop_message_flow';
666
+ const isClockHoldFlow = engineResult.execution.flowId === 'clock_hold_flow';
667
+ const isContinueExecutionFlow = engineResult.execution.flowId === 'continue_execution_flow';
668
+ const isReviewFlow = engineResult.execution.flowId === 'review_flow';
669
+ const isApplyPatchGuard = engineResult.execution.flowId === 'apply_patch_guard';
670
+ const isExecCommandGuard = engineResult.execution.flowId === 'exec_command_guard';
671
+ const isErrorAutoFlow = engineResult.execution.flowId === 'iflow_model_error_retry';
672
+ const applyAutoLimit = isErrorAutoFlow || isApplyPatchGuard || isExecCommandGuard;
673
+ // ServerTool followups must not inherit or inject any routeHint; always route fresh.
674
+ const preserveRouteHint = false;
675
+ const followupPlan = engineResult.execution.followup;
676
+ const followupEntryEndpoint = ('entryEndpoint' in engineResult.execution.followup
677
+ ? engineResult.execution.followup.entryEndpoint
678
+ : undefined) ||
679
+ options.entryEndpoint ||
680
+ '/v1/chat/completions';
681
+ const hasPayloadField = Boolean(followupPlan && typeof followupPlan === 'object' && !Array.isArray(followupPlan)) &&
682
+ Object.prototype.hasOwnProperty.call(followupPlan, 'payload');
683
+ const hasInjectionField = Boolean(followupPlan && typeof followupPlan === 'object' && !Array.isArray(followupPlan)) &&
684
+ Object.prototype.hasOwnProperty.call(followupPlan, 'injection');
685
+ const hasMetadataField = Boolean(followupPlan && typeof followupPlan === 'object' && !Array.isArray(followupPlan)) &&
686
+ Object.prototype.hasOwnProperty.call(followupPlan, 'metadata');
687
+ const followupPayloadExpected = hasPayloadField || hasInjectionField;
688
+ const followupPayloadRaw = (() => {
689
+ if (followupPlan &&
690
+ typeof followupPlan === 'object' &&
691
+ !Array.isArray(followupPlan) &&
692
+ hasPayloadField) {
693
+ const candidate = followupPlan.payload;
694
+ return candidate && typeof candidate === 'object' && !Array.isArray(candidate) ? candidate : null;
695
+ }
696
+ if (followupPlan &&
697
+ typeof followupPlan === 'object' &&
698
+ !Array.isArray(followupPlan) &&
699
+ hasInjectionField) {
700
+ const injection = followupPlan.injection;
701
+ if (!injection || typeof injection !== 'object' || Array.isArray(injection)) {
702
+ return null;
703
+ }
704
+ return buildServerToolFollowupChatPayloadFromInjection({
705
+ adapterContext: options.adapterContext,
706
+ chatResponse: engineResult.finalChatResponse,
707
+ injection: injection
708
+ });
709
+ }
710
+ return null;
711
+ })();
712
+ const metadataOnlyFollowup = !followupPayloadRaw &&
713
+ hasMetadataField;
714
+ if (followupPayloadExpected && !followupPayloadRaw) {
715
+ throw createFollowupContractError({
716
+ flowId: engineResult.execution.flowId,
717
+ requestId: options.requestId,
718
+ reason: 'missing_followup_payload',
719
+ details: {
720
+ entryEndpoint: followupEntryEndpoint,
721
+ hasPayloadField,
722
+ hasInjectionField,
723
+ hasMetadataField
724
+ }
725
+ });
726
+ }
727
+ if (!followupPayloadRaw && !metadataOnlyFollowup) {
728
+ throw createFollowupContractError({
729
+ flowId: engineResult.execution.flowId,
730
+ requestId: options.requestId,
731
+ reason: 'missing_followup_contract',
732
+ details: {
733
+ entryEndpoint: followupEntryEndpoint
734
+ }
735
+ });
736
+ }
737
+ const loopPayload = followupPayloadRaw ||
738
+ (engineResult.execution.flowId === 'stop_message_flow'
739
+ ? buildStopMessageLoopPayload(options.adapterContext)
740
+ : null);
741
+ const loopState = loopPayload
742
+ ? buildServerToolLoopState(options.adapterContext, engineResult.execution.flowId, loopPayload, engineResult.finalChatResponse)
743
+ : null;
744
+ const stopMessageReservation = null;
745
+ if (applyAutoLimit && loopState && typeof loopState.repeatCount === 'number' && loopState.repeatCount >= 3) {
746
+ logProgress(5, totalSteps, 'completed (auto limit hit)', { flowId });
747
+ return {
748
+ chat: engineResult.finalChatResponse,
749
+ executed: true,
750
+ flowId: engineResult.execution.flowId
751
+ };
752
+ }
753
+ let shouldInjectStopLoopWarning = false;
754
+ if (isStopMessageFlow && loopState) {
755
+ const elapsedMs = typeof loopState.startedAtMs === 'number' && Number.isFinite(loopState.startedAtMs)
756
+ ? Math.max(0, Date.now() - loopState.startedAtMs)
757
+ : 0;
758
+ if (elapsedMs >= STOP_MESSAGE_STAGE_TIMEOUT_MS) {
759
+ throw createStopMessageFetchFailedError({
760
+ requestId: options.requestId,
761
+ reason: 'stage_timeout',
762
+ elapsedMs,
763
+ timeoutMs: STOP_MESSAGE_STAGE_TIMEOUT_MS
764
+ });
765
+ }
766
+ const pairRepeatCount = typeof loopState.stopPairRepeatCount === 'number' && Number.isFinite(loopState.stopPairRepeatCount)
767
+ ? Math.max(0, Math.floor(loopState.stopPairRepeatCount))
768
+ : 0;
769
+ if (pairRepeatCount >= STOP_MESSAGE_LOOP_FAIL_THRESHOLD) {
770
+ throw createStopMessageFetchFailedError({
771
+ requestId: options.requestId,
772
+ reason: 'loop_limit',
773
+ elapsedMs,
774
+ repeatCount: pairRepeatCount
775
+ });
776
+ }
777
+ if (pairRepeatCount >= STOP_MESSAGE_LOOP_WARN_THRESHOLD && !loopState.stopPairWarned) {
778
+ loopState.stopPairWarned = true;
779
+ shouldInjectStopLoopWarning = true;
780
+ logProgress(2, totalSteps, 'loop warning armed', { flowId });
781
+ }
782
+ }
783
+ if (isAdapterClientDisconnected(options.adapterContext)) {
784
+ logProgress(5, totalSteps, 'completed (client disconnected)', { flowId });
785
+ return {
786
+ chat: engineResult.finalChatResponse,
787
+ executed: true,
788
+ flowId: engineResult.execution.flowId
789
+ };
790
+ }
791
+ const metadata = {
792
+ stream: false,
793
+ ...(engineResult.execution.followup.metadata ?? {})
794
+ };
795
+ const rt = ensureRuntimeMetadata(metadata);
796
+ rt.serverToolFollowup = true;
797
+ if (loopState) {
798
+ rt.serverToolLoopState = loopState;
799
+ }
800
+ // Followup re-enters HubPipeline at chat-process entry with a canonical "chat-like" body.
801
+ // This avoids re-running per-protocol inbound parse/semantic-map for each client protocol.
802
+ metadata.__hubEntry = 'chat_process';
803
+ // Enforce unified followup contract:
804
+ // - clear any inherited routeHint
805
+ // - do not inherit sticky target
806
+ // - record original entry endpoint for downstream formatting/debug
807
+ rt.preserveRouteHint = preserveRouteHint;
808
+ rt.disableStickyRoutes = true;
809
+ rt.serverToolOriginalEntryEndpoint =
810
+ (typeof options.entryEndpoint === 'string' && options.entryEndpoint.trim().length
811
+ ? options.entryEndpoint
812
+ : followupEntryEndpoint);
813
+ // For stateful auto-followups (e.g. stop_message_flow / clock_hold_flow / continue_execution_flow),
814
+ // keep the same providerKey/alias.
815
+ // Otherwise the followup requestId suffix would cause round-robin alias switching and compatibility drift.
816
+ if (isStopMessageFlow || isClockHoldFlow || isContinueExecutionFlow || isReviewFlow) {
817
+ const providerKeyRaw = options.adapterContext.providerKey;
818
+ const providerKey = typeof providerKeyRaw === 'string' && providerKeyRaw.trim().length ? providerKeyRaw.trim() : '';
819
+ if (providerKey) {
820
+ metadata.__shadowCompareForcedProviderKey = providerKey;
821
+ }
822
+ }
823
+ const retryEmptyFollowupOnce = true;
824
+ const maxAttempts = retryEmptyFollowupOnce ? 2 : 1;
825
+ const followupRequestId = buildFollowupRequestId(options.requestId, engineResult.execution.followup.requestIdSuffix);
826
+ const clientInjectOnlyRaw = metadata.clientInjectOnly;
827
+ const clientInjectOnly = clientInjectOnlyRaw === true ||
828
+ (typeof clientInjectOnlyRaw === 'string' && clientInjectOnlyRaw.trim().toLowerCase() === 'true');
829
+ if (clientInjectOnly) {
830
+ if (!options.clientInjectDispatch) {
831
+ const wrapped = new ProviderProtocolError('[servertool] client inject dispatcher unavailable', {
832
+ code: 'SERVERTOOL_FOLLOWUP_FAILED',
833
+ category: 'INTERNAL_ERROR',
834
+ details: {
835
+ flowId: engineResult.execution.flowId,
836
+ requestId: options.requestId,
837
+ upstreamCode: 'client_inject_failed',
838
+ reason: 'client_inject_dispatcher_unavailable'
839
+ }
840
+ });
841
+ wrapped.status = 502;
842
+ throw wrapped;
843
+ }
844
+ const disconnectWatcher = createClientDisconnectWatcher({
845
+ adapterContext: options.adapterContext,
846
+ requestId: options.requestId,
847
+ flowId: engineResult.execution.flowId
848
+ });
849
+ try {
850
+ const injectFollowupBody = isStopMessageFlow
851
+ ? {}
852
+ : (followupPayloadRaw && typeof followupPayloadRaw === 'object' && !Array.isArray(followupPayloadRaw)
853
+ ? coerceFollowupPayloadStream(followupPayloadRaw, metadata.stream === true)
854
+ : {});
855
+ if (isStopMessageFlow && shouldInjectStopLoopWarning && loopState) {
856
+ injectFollowupBody.messages = [];
857
+ appendStopMessageLoopWarning(injectFollowupBody, loopState.stopPairRepeatCount ?? STOP_MESSAGE_LOOP_WARN_THRESHOLD);
858
+ }
859
+ const dispatchResult = await withTimeout(Promise.race([
860
+ options.clientInjectDispatch({
861
+ entryEndpoint: followupEntryEndpoint,
862
+ requestId: followupRequestId,
863
+ body: injectFollowupBody,
864
+ metadata
865
+ }),
866
+ disconnectWatcher.promise
867
+ ]), followupTimeoutMs, () => createServerToolTimeoutError({
868
+ requestId: options.requestId,
869
+ phase: 'followup',
870
+ timeoutMs: followupTimeoutMs,
871
+ flowId: engineResult.execution.flowId
872
+ }));
873
+ if (!dispatchResult || dispatchResult.ok !== true) {
874
+ const wrapped = new ProviderProtocolError('[servertool.inject] client injection failed', {
875
+ code: 'SERVERTOOL_FOLLOWUP_FAILED',
876
+ details: {
877
+ flowId: engineResult.execution.flowId,
878
+ requestId: options.requestId,
879
+ upstreamCode: 'client_inject_failed',
880
+ reason: dispatchResult && typeof dispatchResult.reason === 'string' && dispatchResult.reason.trim()
881
+ ? dispatchResult.reason.trim()
882
+ : 'client_inject_not_handled'
883
+ }
884
+ });
885
+ wrapped.status = 502;
886
+ throw wrapped;
887
+ }
888
+ disconnectWatcher.cancel();
889
+ const decorated = decorateFinalChatWithServerToolContext(engineResult.finalChatResponse, engineResult.execution);
890
+ logProgress(5, totalSteps, 'completed (client inject only)', { flowId });
891
+ return {
892
+ chat: decorated,
893
+ executed: true,
894
+ flowId: engineResult.execution.flowId
895
+ };
896
+ }
897
+ catch (error) {
898
+ disconnectWatcher.cancel();
899
+ if (isServerToolClientDisconnectedError(error) || isAdapterClientDisconnected(options.adapterContext)) {
900
+ logProgress(5, totalSteps, 'completed (client disconnected)', { flowId });
901
+ return {
902
+ chat: engineResult.finalChatResponse,
903
+ executed: true,
904
+ flowId: engineResult.execution.flowId
905
+ };
906
+ }
907
+ if (isStopMessageFlow) {
908
+ disableStopMessageAfterFailedFollowup(options.adapterContext, stopMessageReservation);
909
+ logProgress(5, totalSteps, 'failed (stopMessage client inject failed; state cleared)', { flowId });
910
+ throw error;
911
+ }
912
+ throw error;
913
+ }
914
+ }
915
+ if (!options.reenterPipeline) {
916
+ const wrapped = new ProviderProtocolError('[servertool] followup requires reenter pipeline', {
917
+ code: 'SERVERTOOL_FOLLOWUP_FAILED',
918
+ category: 'INTERNAL_ERROR',
919
+ details: {
920
+ flowId: engineResult.execution.flowId,
921
+ requestId: options.requestId,
922
+ reason: 'reenter_pipeline_unavailable'
923
+ }
924
+ });
925
+ wrapped.status = 502;
926
+ throw wrapped;
927
+ }
928
+ if (!followupPayloadRaw) {
929
+ throw createFollowupContractError({
930
+ flowId: engineResult.execution.flowId,
931
+ requestId: options.requestId,
932
+ reason: 'metadata_only_followup_without_payload'
933
+ });
934
+ }
935
+ // Build followup payload for non-client-inject flows
936
+ let followupPayload = coerceFollowupPayloadStream(followupPayloadRaw, metadata.stream === true);
937
+ if (shouldInjectStopLoopWarning && loopState) {
938
+ appendStopMessageLoopWarning(followupPayload, loopState.stopPairRepeatCount ?? STOP_MESSAGE_LOOP_WARN_THRESHOLD);
939
+ }
940
+ followupPayload = applyHubFollowupPolicyShadow({
941
+ requestId: followupRequestId,
942
+ entryEndpoint: followupEntryEndpoint,
943
+ flowId: engineResult.execution.flowId,
944
+ payload: followupPayload,
945
+ stageRecorder: options.stageRecorder
946
+ });
947
+ let followup;
948
+ let lastError;
949
+ // stopMessage 是一种“状态型” servertool:一旦触发,我们需要尽量避免因 followup 失败而把状态留在可继续触发的位置,
950
+ // 否则会出现下一轮仍然自动触发 → 再次失败 → 客户端永远 502 的死循环。
951
+ //
952
+ // stop_message_flow 的计数器递增由 handler 在决定触发时处理,engine 不再提前递增。
953
+ for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
954
+ const elapsedBeforeAttempt = isStopMessageFlow && loopState && typeof loopState.startedAtMs === 'number' && Number.isFinite(loopState.startedAtMs)
955
+ ? Math.max(0, Date.now() - loopState.startedAtMs)
956
+ : 0;
957
+ if (isStopMessageFlow && elapsedBeforeAttempt >= STOP_MESSAGE_STAGE_TIMEOUT_MS) {
958
+ throw createStopMessageFetchFailedError({
959
+ requestId: options.requestId,
960
+ reason: 'stage_timeout',
961
+ elapsedMs: elapsedBeforeAttempt,
962
+ timeoutMs: STOP_MESSAGE_STAGE_TIMEOUT_MS,
963
+ attempt,
964
+ maxAttempts
965
+ });
966
+ }
967
+ const attemptTimeoutMs = isStopMessageFlow && STOP_MESSAGE_STAGE_TIMEOUT_MS > elapsedBeforeAttempt
968
+ ? Math.max(1, Math.min(followupTimeoutMs, STOP_MESSAGE_STAGE_TIMEOUT_MS - elapsedBeforeAttempt))
969
+ : followupTimeoutMs;
970
+ const disconnectWatcher = createClientDisconnectWatcher({
971
+ adapterContext: options.adapterContext,
972
+ requestId: options.requestId,
973
+ flowId: engineResult.execution.flowId
974
+ });
975
+ try {
976
+ const followupPromise = options.reenterPipeline({
977
+ entryEndpoint: followupEntryEndpoint,
978
+ requestId: followupRequestId,
979
+ body: followupPayload,
980
+ metadata
981
+ });
982
+ followup = await withTimeout(Promise.race([followupPromise, disconnectWatcher.promise]), attemptTimeoutMs, () => isStopMessageFlow
983
+ ? createStopMessageFetchFailedError({
984
+ requestId: options.requestId,
985
+ reason: 'stage_timeout',
986
+ elapsedMs: elapsedBeforeAttempt,
987
+ timeoutMs: STOP_MESSAGE_STAGE_TIMEOUT_MS,
988
+ attempt,
989
+ maxAttempts
990
+ })
991
+ : createServerToolTimeoutError({
992
+ requestId: options.requestId,
993
+ phase: 'followup',
994
+ timeoutMs: attemptTimeoutMs,
995
+ flowId: engineResult.execution.flowId,
996
+ attempt,
997
+ maxAttempts
998
+ }));
999
+ disconnectWatcher.cancel();
1000
+ if (retryEmptyFollowupOnce) {
1001
+ const body = followup && followup.body && typeof followup.body === 'object'
1002
+ ? followup.body
1003
+ : undefined;
1004
+ if (!body || isEmptyClientResponsePayload(body)) {
1005
+ followup = undefined;
1006
+ lastError = new Error('SERVERTOOL_EMPTY_FOLLOWUP');
1007
+ if (attempt < maxAttempts) {
1008
+ continue;
1009
+ }
1010
+ }
1011
+ }
1012
+ lastError = undefined;
1013
+ break;
1014
+ }
1015
+ catch (error) {
1016
+ disconnectWatcher.cancel();
1017
+ if (isServerToolClientDisconnectedError(error) || isAdapterClientDisconnected(options.adapterContext)) {
1018
+ logProgress(5, totalSteps, 'completed (client disconnected)', { flowId, attempt });
1019
+ return {
1020
+ chat: engineResult.finalChatResponse,
1021
+ executed: true,
1022
+ flowId: engineResult.execution.flowId
1023
+ };
1024
+ }
1025
+ if (isServerToolTimeoutError(error)) {
1026
+ throw error;
1027
+ }
1028
+ lastError = error;
1029
+ if (attempt >= maxAttempts) {
1030
+ if (isStopMessageFlow) {
1031
+ disableStopMessageAfterFailedFollowup(options.adapterContext, stopMessageReservation);
1032
+ logProgress(5, totalSteps, 'failed (stopMessage followup failed; state cleared)', { flowId, attempt });
1033
+ throw error;
1034
+ }
1035
+ const wrapped = new ProviderProtocolError(`[servertool] Followup failed for flow ${engineResult.execution.flowId ?? 'unknown'} ` +
1036
+ `(attempt ${attempt}/${maxAttempts})`, {
1037
+ code: 'SERVERTOOL_FOLLOWUP_FAILED',
1038
+ details: {
1039
+ flowId: engineResult.execution.flowId,
1040
+ requestId: options.requestId,
1041
+ attempt,
1042
+ maxAttempts,
1043
+ error: error instanceof Error ? error.message : String(error ?? 'unknown')
1044
+ }
1045
+ });
1046
+ wrapped.cause = error;
1047
+ throw wrapped;
1048
+ }
1049
+ }
1050
+ }
1051
+ const followupBody = followup && followup.body && typeof followup.body === 'object'
1052
+ ? followup.body
1053
+ : undefined;
1054
+ if (retryEmptyFollowupOnce && (!followupBody || isEmptyClientResponsePayload(followupBody))) {
1055
+ if (isStopMessageFlow) {
1056
+ disableStopMessageAfterFailedFollowup(options.adapterContext, stopMessageReservation);
1057
+ logProgress(5, totalSteps, 'failed (stopMessage followup empty; state cleared)', { flowId });
1058
+ throw createEmptyFollowupError({
1059
+ flowId: engineResult.execution.flowId,
1060
+ requestId: options.requestId,
1061
+ lastError,
1062
+ originalResponseWasEmpty: true
1063
+ });
1064
+ }
1065
+ throw createEmptyFollowupError({
1066
+ flowId: engineResult.execution.flowId,
1067
+ requestId: options.requestId,
1068
+ lastError
1069
+ });
1070
+ }
1071
+ // Special case: Antigravity thoughtSignature bootstrap flow.
1072
+ // - First followup performs a minimal preflight (forces clock.get) to obtain a fresh signature.
1073
+ // - If preflight succeeds, immediately replay the original captured request as a second internal hop,
1074
+ // so the client sees a single recovered response (transparent).
1075
+ if (engineResult.execution.flowId === 'antigravity_thought_signature_bootstrap' && options.reenterPipeline) {
1076
+ const preflight = followupBody;
1077
+ const preflightError = preflight && typeof preflight.error === 'object' ? preflight.error : null;
1078
+ const preflightStatus = (() => {
1079
+ if (!preflightError || typeof preflightError !== 'object' || Array.isArray(preflightError))
1080
+ return undefined;
1081
+ const statusRaw = preflightError.status ?? preflightError.statusCode;
1082
+ if (typeof statusRaw === 'number' && Number.isFinite(statusRaw))
1083
+ return Math.floor(statusRaw);
1084
+ const codeRaw = preflightError.code;
1085
+ const code = typeof codeRaw === 'string' ? codeRaw.trim() : typeof codeRaw === 'number' ? String(codeRaw) : '';
1086
+ if (code && /^HTTP_\d{3}$/i.test(code))
1087
+ return Number(code.split('_')[1]);
1088
+ if (code && /^\d{3}$/.test(code))
1089
+ return Number(code);
1090
+ return undefined;
1091
+ })();
1092
+ // One-shot guard: bootstrap preflight must surface as a real failure, otherwise the client only sees
1093
+ // the synthetic servertool wrapper response and loses the upstream error.
1094
+ if (preflightError && (preflightStatus === 429 || preflightStatus === 400)) {
1095
+ throw createFollowupContractError({
1096
+ flowId: engineResult.execution.flowId,
1097
+ requestId: options.requestId,
1098
+ reason: 'bootstrap_preflight_failed',
1099
+ details: {
1100
+ preflightStatus,
1101
+ error: typeof preflightError.message === 'string'
1102
+ ? String(preflightError.message)
1103
+ : undefined
1104
+ }
1105
+ });
1106
+ }
1107
+ const replaySeed = extractCapturedChatSeed(options.adapterContext?.capturedChatRequest);
1108
+ if (replaySeed) {
1109
+ const replayPayload = {
1110
+ ...(replaySeed.model ? { model: replaySeed.model } : {}),
1111
+ messages: Array.isArray(replaySeed.messages) ? replaySeed.messages : [],
1112
+ ...(Array.isArray(replaySeed.tools) ? { tools: replaySeed.tools } : {}),
1113
+ ...(replaySeed.parameters && typeof replaySeed.parameters === 'object' && !Array.isArray(replaySeed.parameters)
1114
+ ? { parameters: replaySeed.parameters }
1115
+ : {})
1116
+ };
1117
+ const replayLoopState = buildServerToolLoopState(options.adapterContext, engineResult.execution.flowId, replayPayload);
1118
+ const replayMetadata = { stream: false };
1119
+ const replayRt = ensureRuntimeMetadata(replayMetadata);
1120
+ replayRt.serverToolFollowup = true;
1121
+ if (replayLoopState) {
1122
+ replayRt.serverToolLoopState = replayLoopState;
1123
+ }
1124
+ replayMetadata.__hubEntry = 'chat_process';
1125
+ replayRt.preserveRouteHint = false;
1126
+ replayRt.disableStickyRoutes = true;
1127
+ replayRt.serverToolOriginalEntryEndpoint =
1128
+ (typeof options.entryEndpoint === 'string' && options.entryEndpoint.trim().length
1129
+ ? options.entryEndpoint
1130
+ : followupEntryEndpoint);
1131
+ const forcedProviderKeyRaw = options.adapterContext?.providerKey;
1132
+ const forcedProviderKey = typeof forcedProviderKeyRaw === 'string' && forcedProviderKeyRaw.trim().length ? forcedProviderKeyRaw.trim() : '';
1133
+ if (forcedProviderKey) {
1134
+ replayMetadata.__shadowCompareForcedProviderKey = forcedProviderKey;
1135
+ }
1136
+ const replayRequestId = buildFollowupRequestId(options.requestId, ':antigravity_ts_replay');
1137
+ const replayPayloadFinal = applyHubFollowupPolicyShadow({
1138
+ requestId: replayRequestId,
1139
+ entryEndpoint: followupEntryEndpoint,
1140
+ flowId: engineResult.execution.flowId,
1141
+ payload: coerceFollowupPayloadStream(replayPayload, false),
1142
+ stageRecorder: options.stageRecorder
1143
+ });
1144
+ const replayResult = await withTimeout(options.reenterPipeline({
1145
+ entryEndpoint: followupEntryEndpoint,
1146
+ requestId: replayRequestId,
1147
+ body: replayPayloadFinal,
1148
+ metadata: replayMetadata
1149
+ }), followupTimeoutMs, () => createServerToolTimeoutError({
1150
+ requestId: options.requestId,
1151
+ phase: 'followup',
1152
+ timeoutMs: followupTimeoutMs,
1153
+ flowId: engineResult.execution.flowId
1154
+ }));
1155
+ const replayBody = replayResult && replayResult.body && typeof replayResult.body === 'object'
1156
+ ? replayResult.body
1157
+ : undefined;
1158
+ const decorated = decorateFinalChatWithServerToolContext(replayBody ?? preflight ?? engineResult.finalChatResponse, engineResult.execution);
1159
+ logProgress(5, totalSteps, 'completed (bootstrap replay)', { flowId });
1160
+ return { chat: decorated, executed: true, flowId: engineResult.execution.flowId };
1161
+ }
1162
+ }
1163
+ const decorated = decorateFinalChatWithServerToolContext(followupBody ?? engineResult.finalChatResponse, engineResult.execution);
1164
+ logProgress(5, totalSteps, 'completed', { flowId });
1165
+ return {
1166
+ chat: decorated,
1167
+ executed: true,
1168
+ flowId: engineResult.execution.flowId
1169
+ };
1170
+ }
1171
+ function disableStopMessageAfterFailedFollowup(adapterContext, reservation) {
1172
+ try {
1173
+ const key = reservation && typeof reservation.stickyKey === 'string' && reservation.stickyKey.trim()
1174
+ ? reservation.stickyKey.trim()
1175
+ : resolveStickyKeyFromAdapterContext(adapterContext);
1176
+ if (!key) {
1177
+ return;
1178
+ }
1179
+ const state = loadRoutingInstructionStateSync(key);
1180
+ if (!state) {
1181
+ return;
1182
+ }
1183
+ const now = Date.now();
1184
+ state.stopMessageText = undefined;
1185
+ state.stopMessageMaxRepeats = undefined;
1186
+ state.stopMessageUsed = undefined;
1187
+ state.stopMessageSource = undefined;
1188
+ state.stopMessageUpdatedAt = now;
1189
+ state.stopMessageLastUsedAt = now;
1190
+ state.stopMessageAiSeedPrompt = undefined;
1191
+ state.stopMessageAiHistory = undefined;
1192
+ saveRoutingInstructionStateSync(key, state);
1193
+ }
1194
+ catch {
1195
+ // best-effort: do not crash the request due to state cleanup failures
1196
+ }
1197
+ }
1198
+ function resolveStickyKeyFromAdapterContext(adapterContext) {
1199
+ if (!adapterContext || typeof adapterContext !== 'object') {
1200
+ return undefined;
1201
+ }
1202
+ const record = adapterContext;
1203
+ const runtime = readRuntimeMetadata(record);
1204
+ const explicitScope = readTextFromAny(runtime?.stopMessageClientInjectSessionScope) ||
1205
+ readTextFromAny(runtime?.stopMessageClientInjectScope) ||
1206
+ readTextFromAny(record.stopMessageClientInjectSessionScope) ||
1207
+ readTextFromAny(record.stopMessageClientInjectScope);
1208
+ if (explicitScope &&
1209
+ (explicitScope.startsWith('tmux:') || explicitScope.startsWith('session:') || explicitScope.startsWith('conversation:'))) {
1210
+ return explicitScope;
1211
+ }
1212
+ const metadata = asRecord(record.metadata);
1213
+ const tmuxSessionId = readTextFromAny(record.clientTmuxSessionId) ||
1214
+ readTextFromAny(record.client_tmux_session_id) ||
1215
+ readTextFromAny(record.tmuxSessionId) ||
1216
+ readTextFromAny(record.tmux_session_id) ||
1217
+ readTextFromAny(runtime?.clientTmuxSessionId) ||
1218
+ readTextFromAny(runtime?.client_tmux_session_id) ||
1219
+ readTextFromAny(runtime?.tmuxSessionId) ||
1220
+ readTextFromAny(runtime?.tmux_session_id) ||
1221
+ readTextFromAny(metadata?.clientTmuxSessionId) ||
1222
+ readTextFromAny(metadata?.client_tmux_session_id) ||
1223
+ readTextFromAny(metadata?.tmuxSessionId) ||
1224
+ readTextFromAny(metadata?.tmux_session_id);
1225
+ if (!tmuxSessionId) {
1226
+ const sessionId = readTextFromAny(record.sessionId) ||
1227
+ readTextFromAny(record.session_id) ||
1228
+ readTextFromAny(runtime?.sessionId) ||
1229
+ readTextFromAny(runtime?.session_id) ||
1230
+ readTextFromAny(metadata?.sessionId) ||
1231
+ readTextFromAny(metadata?.session_id);
1232
+ if (sessionId) {
1233
+ return `session:${sessionId}`;
1234
+ }
1235
+ const conversationId = readTextFromAny(record.conversationId) ||
1236
+ readTextFromAny(record.conversation_id) ||
1237
+ readTextFromAny(runtime?.conversationId) ||
1238
+ readTextFromAny(runtime?.conversation_id) ||
1239
+ readTextFromAny(metadata?.conversationId) ||
1240
+ readTextFromAny(metadata?.conversation_id);
1241
+ if (conversationId) {
1242
+ return `conversation:${conversationId}`;
1243
+ }
1244
+ return undefined;
1245
+ }
1246
+ return `tmux:${tmuxSessionId}`;
1247
+ }
1248
+ function asRecord(value) {
1249
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
1250
+ return null;
1251
+ }
1252
+ return value;
1253
+ }
1254
+ function readTextFromAny(value) {
1255
+ return typeof value === 'string' && value.trim().length ? value.trim() : '';
1256
+ }
1257
+ function cloneRoutingInstructionState(state) {
1258
+ if (!state) {
1259
+ return null;
1260
+ }
1261
+ try {
1262
+ const serialized = serializeRoutingInstructionState(state);
1263
+ return deserializeRoutingInstructionState(serialized);
1264
+ }
1265
+ catch {
1266
+ return null;
1267
+ }
1268
+ }
1269
+ function resolveStopMessageSnapshot(raw) {
1270
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
1271
+ return null;
1272
+ }
1273
+ const record = raw;
1274
+ const text = typeof record.stopMessageText === 'string' ? record.stopMessageText.trim() : '';
1275
+ const maxRepeats = typeof record.stopMessageMaxRepeats === 'number' && Number.isFinite(record.stopMessageMaxRepeats)
1276
+ ? Math.max(1, Math.floor(record.stopMessageMaxRepeats))
1277
+ : 0;
1278
+ if (!text || maxRepeats <= 0) {
1279
+ return null;
1280
+ }
1281
+ const used = typeof record.stopMessageUsed === 'number' && Number.isFinite(record.stopMessageUsed)
1282
+ ? Math.max(0, Math.floor(record.stopMessageUsed))
1283
+ : 0;
1284
+ const updatedAt = typeof record.stopMessageUpdatedAt === 'number' && Number.isFinite(record.stopMessageUpdatedAt)
1285
+ ? record.stopMessageUpdatedAt
1286
+ : undefined;
1287
+ const lastUsedAt = typeof record.stopMessageLastUsedAt === 'number' && Number.isFinite(record.stopMessageLastUsedAt)
1288
+ ? record.stopMessageLastUsedAt
1289
+ : undefined;
1290
+ const source = typeof record.stopMessageSource === 'string' &&
1291
+ record.stopMessageSource.trim()
1292
+ ? record.stopMessageSource.trim()
1293
+ : undefined;
1294
+ return {
1295
+ text,
1296
+ maxRepeats,
1297
+ used,
1298
+ ...(source ? { source } : {}),
1299
+ ...(updatedAt ? { updatedAt } : {}),
1300
+ ...(lastUsedAt ? { lastUsedAt } : {})
1301
+ };
1302
+ }
1303
+ function createStopMessageState(snapshot) {
1304
+ return {
1305
+ forcedTarget: undefined,
1306
+ stickyTarget: undefined,
1307
+ allowedProviders: new Set(),
1308
+ disabledProviders: new Set(),
1309
+ disabledKeys: new Map(),
1310
+ disabledModels: new Map(),
1311
+ stopMessageSource: snapshot.source && snapshot.source.trim() ? snapshot.source.trim() : 'explicit',
1312
+ stopMessageText: snapshot.text,
1313
+ stopMessageMaxRepeats: snapshot.maxRepeats,
1314
+ stopMessageUsed: snapshot.used,
1315
+ stopMessageUpdatedAt: snapshot.updatedAt,
1316
+ stopMessageLastUsedAt: snapshot.lastUsedAt
1317
+ };
1318
+ }
1319
+ function decorateFinalChatWithServerToolContext(chat, execution) {
1320
+ if (!execution || !execution.context) {
1321
+ return chat;
1322
+ }
1323
+ // Handle continue_execution_flow: append visible summary to client response
1324
+ if (execution.flowId === 'continue_execution_flow') {
1325
+ const ctx = execution.context;
1326
+ const ce = ctx.continue_execution;
1327
+ const visibleSummary = ce && typeof ce.visibleSummary === 'string' && ce.visibleSummary.trim().length
1328
+ ? ce.visibleSummary.trim()
1329
+ : '';
1330
+ if (!visibleSummary) {
1331
+ return chat;
1332
+ }
1333
+ const cloned = JSON.parse(JSON.stringify(chat));
1334
+ const choices = Array.isArray(cloned.choices) ? cloned.choices : [];
1335
+ if (!choices.length) {
1336
+ return cloned;
1337
+ }
1338
+ const first = choices[0] && typeof choices[0] === 'object' ? choices[0] : null;
1339
+ if (!first || !first.message || typeof first.message !== 'object') {
1340
+ return cloned;
1341
+ }
1342
+ const message = first.message;
1343
+ const baseContent = typeof message.content === 'string' ? message.content : '';
1344
+ // Prepend visible summary to the content
1345
+ message.content =
1346
+ baseContent && baseContent.trim().length
1347
+ ? `${visibleSummary}\n\n${baseContent}`
1348
+ : visibleSummary;
1349
+ // Force finish_reason to 'stop' for continue_execution flow
1350
+ first.finish_reason = 'stop';
1351
+ return cloned;
1352
+ }
1353
+ // Handle web_search_flow: append original text summary
1354
+ if (execution.flowId !== 'web_search_flow') {
1355
+ return chat;
1356
+ }
1357
+ const ctx = execution.context;
1358
+ const web = ctx.web_search;
1359
+ const summary = web && typeof web.summary === 'string' && web.summary.trim().length
1360
+ ? web.summary.trim()
1361
+ : '';
1362
+ if (!summary) {
1363
+ return chat;
1364
+ }
1365
+ const engineId = web && typeof web.engineId === 'string' && web.engineId.trim().length
1366
+ ? web.engineId.trim()
1367
+ : undefined;
1368
+ const label = engineId
1369
+ ? `【web_search 原文 | engine: ${engineId}】`
1370
+ : '【web_search 原文】';
1371
+ const cloned = JSON.parse(JSON.stringify(chat));
1372
+ const choices = Array.isArray(cloned.choices) ? cloned.choices : [];
1373
+ if (!choices.length) {
1374
+ return cloned;
1375
+ }
1376
+ const first = choices[0] && typeof choices[0] === 'object' ? choices[0] : null;
1377
+ if (!first || !first.message || typeof first.message !== 'object') {
1378
+ return cloned;
1379
+ }
1380
+ const message = first.message;
1381
+ const baseContent = typeof message.content === 'string' ? message.content : '';
1382
+ const suffix = `${label}\n${summary}`;
1383
+ message.content =
1384
+ baseContent && baseContent.trim().length
1385
+ ? `${baseContent}\n\n${suffix}`
1386
+ : suffix;
1387
+ return cloned;
1388
+ }
1389
+ function resolveRouteHint(adapterContext, flowId) {
1390
+ const rawRoute = adapterContext.routeId;
1391
+ const routeId = typeof rawRoute === 'string' && rawRoute.trim() ? rawRoute.trim() : '';
1392
+ if (!routeId) {
1393
+ return undefined;
1394
+ }
1395
+ if (routeId.toLowerCase() === 'default') {
1396
+ return undefined;
1397
+ }
1398
+ if (flowId && routeId.toLowerCase() === flowId.toLowerCase()) {
1399
+ return undefined;
1400
+ }
1401
+ return routeId;
1402
+ }
1403
+ function buildServerToolLoopState(adapterContext, flowId, payload, response) {
1404
+ if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
1405
+ return null;
1406
+ }
1407
+ const trackPayload = typeof flowId === 'string' && flowId.trim() && flowId !== 'stop_message_flow';
1408
+ const payloadHash = trackPayload ? hashPayload(payload) : '__servertool_auto__';
1409
+ if (!payloadHash) {
1410
+ return null;
1411
+ }
1412
+ const previous = readServerToolLoopState(adapterContext);
1413
+ const sameFlow = previous && previous.flowId === flowId;
1414
+ const samePayload = !trackPayload || (previous && previous.payloadHash === payloadHash);
1415
+ const prevCount = previous && typeof previous.repeatCount === 'number' && Number.isFinite(previous.repeatCount)
1416
+ ? Math.max(0, Math.floor(previous.repeatCount))
1417
+ : 0;
1418
+ const repeatCount = sameFlow && samePayload ? prevCount + 1 : 1;
1419
+ const previousStartedAtMs = sameFlow && previous && typeof previous.startedAtMs === 'number' && Number.isFinite(previous.startedAtMs)
1420
+ ? Math.max(0, Math.floor(previous.startedAtMs))
1421
+ : undefined;
1422
+ const startedAtMs = previousStartedAtMs ?? Date.now();
1423
+ const base = {
1424
+ ...(flowId ? { flowId } : {}),
1425
+ payloadHash,
1426
+ repeatCount,
1427
+ startedAtMs
1428
+ };
1429
+ if (flowId === 'stop_message_flow') {
1430
+ const pairHash = hashStopMessageRequestResponsePair(payload, response);
1431
+ if (pairHash) {
1432
+ const previousPairHash = sameFlow && previous && typeof previous.stopPairHash === 'string' ? previous.stopPairHash : undefined;
1433
+ const previousPairCount = sameFlow && previous && typeof previous.stopPairRepeatCount === 'number' && Number.isFinite(previous.stopPairRepeatCount)
1434
+ ? Math.max(0, Math.floor(previous.stopPairRepeatCount))
1435
+ : 0;
1436
+ const stopPairRepeatCount = previousPairHash === pairHash ? previousPairCount + 1 : 1;
1437
+ const stopPairWarned = previousPairHash === pairHash && previous && typeof previous.stopPairWarned === 'boolean'
1438
+ ? previous.stopPairWarned
1439
+ : false;
1440
+ base.stopPairHash = pairHash;
1441
+ base.stopPairRepeatCount = stopPairRepeatCount;
1442
+ base.stopPairWarned = stopPairWarned;
1443
+ }
1444
+ }
1445
+ return base;
1446
+ }
1447
+ function resolveCapturedChatRequest(adapterContext) {
1448
+ if (!adapterContext || typeof adapterContext !== 'object') {
1449
+ return null;
1450
+ }
1451
+ const record = adapterContext;
1452
+ const direct = record.capturedChatRequest;
1453
+ if (direct && typeof direct === 'object' && !Array.isArray(direct)) {
1454
+ return direct;
1455
+ }
1456
+ return null;
1457
+ }
1458
+ function buildStopMessageLoopPayload(adapterContext) {
1459
+ const captured = resolveCapturedChatRequest(adapterContext);
1460
+ const seed = extractCapturedChatSeed(captured);
1461
+ if (!seed || !Array.isArray(seed.messages) || seed.messages.length === 0) {
1462
+ return null;
1463
+ }
1464
+ const payload = {
1465
+ messages: seed.messages
1466
+ };
1467
+ if (seed.model) {
1468
+ payload.model = seed.model;
1469
+ }
1470
+ if (Array.isArray(seed.tools) && seed.tools.length > 0) {
1471
+ payload.tools = seed.tools;
1472
+ }
1473
+ if (seed.parameters && typeof seed.parameters === 'object' && !Array.isArray(seed.parameters)) {
1474
+ payload.parameters = seed.parameters;
1475
+ }
1476
+ return payload;
1477
+ }
1478
+ function readServerToolLoopState(adapterContext) {
1479
+ if (!adapterContext || typeof adapterContext !== 'object') {
1480
+ return null;
1481
+ }
1482
+ const rt = readRuntimeMetadata(adapterContext);
1483
+ const raw = rt?.serverToolLoopState;
1484
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
1485
+ return null;
1486
+ }
1487
+ const record = raw;
1488
+ const flowId = typeof record.flowId === 'string' ? record.flowId.trim() : undefined;
1489
+ const payloadHash = typeof record.payloadHash === 'string' ? record.payloadHash.trim() : undefined;
1490
+ const repeatCount = typeof record.repeatCount === 'number' && Number.isFinite(record.repeatCount)
1491
+ ? Math.max(0, Math.floor(record.repeatCount))
1492
+ : undefined;
1493
+ const startedAtMs = typeof record.startedAtMs === 'number' && Number.isFinite(record.startedAtMs)
1494
+ ? Math.max(0, Math.floor(record.startedAtMs))
1495
+ : undefined;
1496
+ const stopPairHash = typeof record.stopPairHash === 'string' && record.stopPairHash.trim().length
1497
+ ? record.stopPairHash.trim()
1498
+ : undefined;
1499
+ const stopPairRepeatCount = typeof record.stopPairRepeatCount === 'number' && Number.isFinite(record.stopPairRepeatCount)
1500
+ ? Math.max(0, Math.floor(record.stopPairRepeatCount))
1501
+ : undefined;
1502
+ const stopPairWarned = typeof record.stopPairWarned === 'boolean' ? record.stopPairWarned : undefined;
1503
+ if (!payloadHash) {
1504
+ return null;
1505
+ }
1506
+ return {
1507
+ ...(flowId ? { flowId } : {}),
1508
+ payloadHash,
1509
+ ...(repeatCount !== undefined ? { repeatCount } : {}),
1510
+ ...(startedAtMs !== undefined ? { startedAtMs } : {}),
1511
+ ...(stopPairHash ? { stopPairHash } : {}),
1512
+ ...(stopPairRepeatCount !== undefined ? { stopPairRepeatCount } : {}),
1513
+ ...(stopPairWarned !== undefined ? { stopPairWarned } : {})
1514
+ };
1515
+ }
1516
+ function hashPayload(payload) {
1517
+ try {
1518
+ const stable = stableStringify(payload);
1519
+ return createHash('sha1').update(stable).digest('hex');
1520
+ }
1521
+ catch {
1522
+ return null;
1523
+ }
1524
+ }
1525
+ function hashStopMessageRequestResponsePair(payload, response) {
1526
+ try {
1527
+ const normalizedPayload = sanitizeLoopHashValue(payload);
1528
+ const normalizedResponse = sanitizeLoopHashValue(response ?? {});
1529
+ const stable = stableStringify({ request: normalizedPayload, response: normalizedResponse });
1530
+ return createHash('sha1').update(stable).digest('hex');
1531
+ }
1532
+ catch {
1533
+ return null;
1534
+ }
1535
+ }
1536
+ function sanitizeLoopHashValue(value) {
1537
+ if (value === null || value === undefined) {
1538
+ return value;
1539
+ }
1540
+ if (Array.isArray(value)) {
1541
+ return value.map((entry) => sanitizeLoopHashValue(entry));
1542
+ }
1543
+ if (typeof value !== 'object') {
1544
+ return value;
1545
+ }
1546
+ const record = value;
1547
+ const normalized = {};
1548
+ const volatileKeys = new Set([
1549
+ 'id',
1550
+ 'created',
1551
+ 'created_at',
1552
+ 'timestamp',
1553
+ 'request_id',
1554
+ 'requestId',
1555
+ 'trace_id',
1556
+ 'response_id',
1557
+ 'system_fingerprint'
1558
+ ]);
1559
+ for (const key of Object.keys(record)) {
1560
+ if (volatileKeys.has(key)) {
1561
+ continue;
1562
+ }
1563
+ normalized[key] = sanitizeLoopHashValue(record[key]);
1564
+ }
1565
+ return normalized;
1566
+ }
1567
+ function appendStopMessageLoopWarning(payload, repeatCountRaw) {
1568
+ if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
1569
+ return;
1570
+ }
1571
+ const messages = Array.isArray(payload.messages)
1572
+ ? payload.messages
1573
+ : null;
1574
+ if (!messages) {
1575
+ return;
1576
+ }
1577
+ const repeatCount = Number.isFinite(repeatCountRaw)
1578
+ ? Math.max(STOP_MESSAGE_LOOP_WARN_THRESHOLD, Math.floor(repeatCountRaw))
1579
+ : STOP_MESSAGE_LOOP_WARN_THRESHOLD;
1580
+ const warningText = [
1581
+ `检测到 stopMessage 请求/响应参数已连续 ${repeatCount} 轮一致。`,
1582
+ '请立即尝试跳出循环(换路径、换验证方法、或直接给结论)。',
1583
+ `若继续达到 ${STOP_MESSAGE_LOOP_FAIL_THRESHOLD} 轮一致,将返回 fetch failed 网络错误并停止自动续跑。`
1584
+ ].join('\n');
1585
+ messages.push({
1586
+ role: 'system',
1587
+ content: warningText
1588
+ });
1589
+ }
1590
+ function stableStringify(value) {
1591
+ if (value === null || typeof value !== 'object') {
1592
+ return JSON.stringify(value);
1593
+ }
1594
+ if (Array.isArray(value)) {
1595
+ return `[${value.map((entry) => stableStringify(entry)).join(',')}]`;
1596
+ }
1597
+ const record = value;
1598
+ const keys = Object.keys(record).sort();
1599
+ const entries = keys.map((key) => `${JSON.stringify(key)}:${stableStringify(record[key])}`);
1600
+ return `{${entries.join(',')}}`;
1601
+ }
1602
+ function buildFollowupRequestId(baseRequestId, suffix) {
1603
+ const requestId = typeof baseRequestId === 'string' ? baseRequestId : '';
1604
+ const suffixText = typeof suffix === 'string' ? suffix : '';
1605
+ if (!suffixText) {
1606
+ return requestId;
1607
+ }
1608
+ if (!requestId) {
1609
+ return suffixText;
1610
+ }
1611
+ const normalized = normalizeFollowupRequestId(requestId, suffixText);
1612
+ if (!normalized) {
1613
+ return suffixText;
1614
+ }
1615
+ return normalized.endsWith(suffixText) ? normalized : `${normalized}${suffixText}`;
1616
+ }
1617
+ function isAdapterClientDisconnected(adapterContext) {
1618
+ if (!adapterContext || typeof adapterContext !== 'object') {
1619
+ return false;
1620
+ }
1621
+ const state = adapterContext.clientConnectionState;
1622
+ if (state && typeof state === 'object' && !Array.isArray(state)) {
1623
+ const disconnected = state.disconnected;
1624
+ if (disconnected === true) {
1625
+ return true;
1626
+ }
1627
+ if (typeof disconnected === 'string' && disconnected.trim().toLowerCase() === 'true') {
1628
+ return true;
1629
+ }
1630
+ }
1631
+ const raw = adapterContext.clientDisconnected;
1632
+ if (raw === true) {
1633
+ return true;
1634
+ }
1635
+ if (typeof raw === 'string' && raw.trim().toLowerCase() === 'true') {
1636
+ return true;
1637
+ }
1638
+ return false;
1639
+ }
1640
+ function normalizeFollowupRequestId(requestId, suffixText) {
1641
+ if (!requestId) {
1642
+ return '';
1643
+ }
1644
+ const token = suffixText.startsWith(':') ? suffixText.slice(1) : suffixText;
1645
+ if (!token) {
1646
+ return requestId;
1647
+ }
1648
+ const delimiterIndex = requestId.indexOf(':');
1649
+ if (delimiterIndex === -1) {
1650
+ return requestId;
1651
+ }
1652
+ const base = requestId.slice(0, delimiterIndex);
1653
+ const rawSuffix = requestId.slice(delimiterIndex + 1);
1654
+ if (!rawSuffix) {
1655
+ return requestId;
1656
+ }
1657
+ const tokens = rawSuffix.split(':').filter((entry) => entry.length > 0 && entry !== token);
1658
+ const rebuilt = tokens.length > 0 ? `${base}:${tokens.join(':')}` : base;
1659
+ return rebuilt;
1660
+ }