@jsonstudio/rcc 0.90.323 → 0.90.364

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 (1311) hide show
  1. package/README.md +16 -16
  2. package/dist/build-info.js +2 -2
  3. package/dist/cli/commands/camoufox.js +2 -2
  4. package/dist/cli/commands/camoufox.js.map +1 -1
  5. package/dist/cli/commands/clean.js +4 -3
  6. package/dist/cli/commands/clean.js.map +1 -1
  7. package/dist/cli/commands/codex.js +37 -7
  8. package/dist/cli/commands/codex.js.map +1 -1
  9. package/dist/cli/commands/config.js +2 -1
  10. package/dist/cli/commands/config.js.map +1 -1
  11. package/dist/cli/commands/env.js +2 -1
  12. package/dist/cli/commands/env.js.map +1 -1
  13. package/dist/cli/commands/init/basic.js +2 -1
  14. package/dist/cli/commands/init/basic.js.map +1 -1
  15. package/dist/cli/commands/init.js +4 -3
  16. package/dist/cli/commands/init.js.map +1 -1
  17. package/dist/cli/commands/launcher/types.d.ts +1 -0
  18. package/dist/cli/commands/launcher-kernel.js +92 -103
  19. package/dist/cli/commands/launcher-kernel.js.map +1 -1
  20. package/dist/cli/commands/port.js +1 -1
  21. package/dist/cli/commands/port.js.map +1 -1
  22. package/dist/cli/commands/restart.js +3 -2
  23. package/dist/cli/commands/restart.js.map +1 -1
  24. package/dist/cli/commands/start.js +4 -3
  25. package/dist/cli/commands/start.js.map +1 -1
  26. package/dist/cli/commands/stop.js +3 -2
  27. package/dist/cli/commands/stop.js.map +1 -1
  28. package/dist/cli/config/bundled-docs.js +2 -6
  29. package/dist/cli/config/bundled-docs.js.map +1 -1
  30. package/dist/cli/config/init-config.d.ts +1 -0
  31. package/dist/cli/config/init-config.js +6 -3
  32. package/dist/cli/config/init-config.js.map +1 -1
  33. package/dist/cli/config/init-provider-catalog.js +4 -4
  34. package/dist/cli/config/init-provider-catalog.js.map +1 -1
  35. package/dist/cli/config/precommand-default-script.js +3 -9
  36. package/dist/cli/config/precommand-default-script.js.map +1 -1
  37. package/dist/cli/guardian/paths.js +2 -3
  38. package/dist/cli/guardian/paths.js.map +1 -1
  39. package/dist/cli.js +10 -2
  40. package/dist/cli.js.map +1 -1
  41. package/dist/commands/camoufox-fp.js +2 -3
  42. package/dist/commands/camoufox-fp.js.map +1 -1
  43. package/dist/commands/migrate-user-config.d.ts +6 -0
  44. package/dist/commands/migrate-user-config.js +53 -0
  45. package/dist/commands/migrate-user-config.js.map +1 -0
  46. package/dist/commands/provider-update.js +9 -9
  47. package/dist/commands/provider-update.js.map +1 -1
  48. package/dist/commands/quota-daemon.js +3 -3
  49. package/dist/commands/quota-daemon.js.map +1 -1
  50. package/dist/commands/quota-status.js +2 -2
  51. package/dist/commands/quota-status.js.map +1 -1
  52. package/dist/commands/token-daemon.js +2 -2
  53. package/dist/commands/token-daemon.js.map +1 -1
  54. package/dist/commands/validate.js +2 -3
  55. package/dist/commands/validate.js.map +1 -1
  56. package/dist/config/auth-file-resolver.js +2 -2
  57. package/dist/config/auth-file-resolver.js.map +1 -1
  58. package/dist/config/provider-v2-loader.js +9 -6
  59. package/dist/config/provider-v2-loader.js.map +1 -1
  60. package/dist/config/routecodex-config-loader.js +2 -2
  61. package/dist/config/routecodex-config-loader.js.map +1 -1
  62. package/dist/config/unified-config-paths.js +11 -9
  63. package/dist/config/unified-config-paths.js.map +1 -1
  64. package/dist/config/user-config-migration.d.ts +42 -0
  65. package/dist/config/user-config-migration.js +188 -0
  66. package/dist/config/user-config-migration.js.map +1 -0
  67. package/dist/config/user-data-paths.d.ts +59 -0
  68. package/dist/config/user-data-paths.js +174 -0
  69. package/dist/config/user-data-paths.js.map +1 -0
  70. package/dist/config/virtual-router-builder.d.ts +1 -1
  71. package/dist/config/virtual-router-builder.js +1 -1
  72. package/dist/docs/daemon-admin-ui.html +9 -9
  73. package/dist/index.js +7 -5
  74. package/dist/index.js.map +1 -1
  75. package/dist/manager/modules/health/index.js +2 -2
  76. package/dist/manager/modules/health/index.js.map +1 -1
  77. package/dist/manager/modules/quota/antigravity-quota-persistence.d.ts +2 -1
  78. package/dist/manager/modules/quota/antigravity-quota-persistence.js +11 -22
  79. package/dist/manager/modules/quota/antigravity-quota-persistence.js.map +1 -1
  80. package/dist/manager/quota/provider-quota-store.js +11 -4
  81. package/dist/manager/quota/provider-quota-store.js.map +1 -1
  82. package/dist/modules/config/pipeline-config-path.js +3 -3
  83. package/dist/modules/config/pipeline-config-path.js.map +1 -1
  84. package/dist/modules/llmswitch/bridge/module-loader.js +2 -2
  85. package/dist/modules/llmswitch/bridge/module-loader.js.map +1 -1
  86. package/dist/modules/llmswitch/core-loader.js +1 -0
  87. package/dist/modules/llmswitch/core-loader.js.map +1 -1
  88. package/dist/providers/auth/antigravity-fingerprint.js +2 -3
  89. package/dist/providers/auth/antigravity-fingerprint.js.map +1 -1
  90. package/dist/providers/auth/antigravity-reauth-state.js +2 -3
  91. package/dist/providers/auth/antigravity-reauth-state.js.map +1 -1
  92. package/dist/providers/auth/antigravity-user-agent.js +2 -2
  93. package/dist/providers/auth/antigravity-user-agent.js.map +1 -1
  94. package/dist/providers/auth/antigravity-warmup.js +2 -3
  95. package/dist/providers/auth/antigravity-warmup.js.map +1 -1
  96. package/dist/providers/auth/deepseek-account-auth.js +4 -3
  97. package/dist/providers/auth/deepseek-account-auth.js.map +1 -1
  98. package/dist/providers/auth/deepseek-account-token-acquirer.js +3 -2
  99. package/dist/providers/auth/deepseek-account-token-acquirer.js.map +1 -1
  100. package/dist/providers/auth/oauth-auth.js +2 -3
  101. package/dist/providers/auth/oauth-auth.js.map +1 -1
  102. package/dist/providers/auth/oauth-lifecycle/path-resolver.js +6 -7
  103. package/dist/providers/auth/oauth-lifecycle/path-resolver.js.map +1 -1
  104. package/dist/providers/auth/oauth-lifecycle.js +4 -4
  105. package/dist/providers/auth/oauth-lifecycle.js.map +1 -1
  106. package/dist/providers/auth/oauth-repair-cooldown.js +2 -3
  107. package/dist/providers/auth/oauth-repair-cooldown.js.map +1 -1
  108. package/dist/providers/auth/token-scanner/index.js +2 -3
  109. package/dist/providers/auth/token-scanner/index.js.map +1 -1
  110. package/dist/providers/auth/token-storage/token-file-resolver.js +8 -7
  111. package/dist/providers/auth/token-storage/token-file-resolver.js.map +1 -1
  112. package/dist/providers/auth/tokenfile-auth.js +5 -6
  113. package/dist/providers/auth/tokenfile-auth.js.map +1 -1
  114. package/dist/providers/core/config/camoufox-launcher.js +3 -4
  115. package/dist/providers/core/config/camoufox-launcher.js.map +1 -1
  116. package/dist/providers/core/config/provider-oauth-configs.js +2 -2
  117. package/dist/providers/core/config/provider-oauth-configs.js.map +1 -1
  118. package/dist/providers/core/hooks/hooks-integration.js +1 -1
  119. package/dist/providers/core/hooks/hooks-integration.js.map +1 -1
  120. package/dist/providers/core/runtime/deepseek-http-provider.js +2 -1
  121. package/dist/providers/core/runtime/deepseek-http-provider.js.map +1 -1
  122. package/dist/providers/core/utils/snapshot-writer.js +2 -1
  123. package/dist/providers/core/utils/snapshot-writer.js.map +1 -1
  124. package/dist/server/handlers/config-admin-handler.d.ts +1 -1
  125. package/dist/server/handlers/config-admin-handler.js +6 -6
  126. package/dist/server/handlers/config-admin-handler.js.map +1 -1
  127. package/dist/server/runtime/http-server/daemon-admin/auth-store.js +2 -2
  128. package/dist/server/runtime/http-server/daemon-admin/auth-store.js.map +1 -1
  129. package/dist/server/runtime/http-server/daemon-admin/control-handler.js +3 -3
  130. package/dist/server/runtime/http-server/daemon-admin/control-handler.js.map +1 -1
  131. package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js +2 -2
  132. package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js.map +1 -1
  133. package/dist/server/runtime/http-server/daemon-admin/providers-handler-routing-utils.js +5 -4
  134. package/dist/server/runtime/http-server/daemon-admin/providers-handler-routing-utils.js.map +1 -1
  135. package/dist/server/runtime/http-server/daemon-admin/providers-handler.js +3 -3
  136. package/dist/server/runtime/http-server/daemon-admin/providers-handler.js.map +1 -1
  137. package/dist/server/runtime/http-server/executor/provider-response-converter.js +133 -2
  138. package/dist/server/runtime/http-server/executor/provider-response-converter.js.map +1 -1
  139. package/dist/server/runtime/http-server/executor-response.js +62 -1
  140. package/dist/server/runtime/http-server/executor-response.js.map +1 -1
  141. package/dist/server/runtime/http-server/http-server-bootstrap.js +2 -3
  142. package/dist/server/runtime/http-server/http-server-bootstrap.js.map +1 -1
  143. package/dist/server/runtime/http-server/request-executor.js +0 -49
  144. package/dist/server/runtime/http-server/request-executor.js.map +1 -1
  145. package/dist/server/runtime/http-server/routes.js +1 -1
  146. package/dist/server/runtime/http-server/routes.js.map +1 -1
  147. package/dist/server/runtime/http-server/servertool-admin-state.js +2 -2
  148. package/dist/server/runtime/http-server/servertool-admin-state.js.map +1 -1
  149. package/dist/server/runtime/http-server/session-client-route-utils.js +38 -5
  150. package/dist/server/runtime/http-server/session-client-route-utils.js.map +1 -1
  151. package/dist/server/runtime/http-server/session-dir.js +6 -12
  152. package/dist/server/runtime/http-server/session-dir.js.map +1 -1
  153. package/dist/server/runtime/http-server/stats-manager.js +2 -1
  154. package/dist/server/runtime/http-server/stats-manager.js.map +1 -1
  155. package/dist/server/utils/non-blocking-error-logger.js +2 -1
  156. package/dist/server/utils/non-blocking-error-logger.js.map +1 -1
  157. package/dist/token-daemon/history-store.js +2 -1
  158. package/dist/token-daemon/history-store.js.map +1 -1
  159. package/dist/token-daemon/leader-lock.js +2 -2
  160. package/dist/token-daemon/leader-lock.js.map +1 -1
  161. package/dist/token-daemon/quota-auth-issue.js +2 -4
  162. package/dist/token-daemon/quota-auth-issue.js.map +1 -1
  163. package/dist/token-daemon/server-utils.js +3 -4
  164. package/dist/token-daemon/server-utils.js.map +1 -1
  165. package/dist/token-daemon/token-daemon.js +6 -6
  166. package/dist/token-daemon/token-daemon.js.map +1 -1
  167. package/dist/token-daemon/token-utils.js +2 -1
  168. package/dist/token-daemon/token-utils.js.map +1 -1
  169. package/dist/token-portal/fingerprint-summary.js +2 -3
  170. package/dist/token-portal/fingerprint-summary.js.map +1 -1
  171. package/dist/token-portal/local-token-portal.js +1 -1
  172. package/dist/token-portal/local-token-portal.js.map +1 -1
  173. package/dist/utils/daemon-stop-intent.js +2 -2
  174. package/dist/utils/daemon-stop-intent.js.map +1 -1
  175. package/dist/utils/errorsamples.js +3 -1
  176. package/dist/utils/errorsamples.js.map +1 -1
  177. package/dist/utils/llms-engine-shadow.js +2 -2
  178. package/dist/utils/llms-engine-shadow.js.map +1 -1
  179. package/dist/utils/managed-server-pids.js +2 -2
  180. package/dist/utils/managed-server-pids.js.map +1 -1
  181. package/dist/utils/process-lifecycle-logger.js +2 -1
  182. package/dist/utils/process-lifecycle-logger.js.map +1 -1
  183. package/dist/utils/runtime-exit-forensics.js +2 -2
  184. package/dist/utils/runtime-exit-forensics.js.map +1 -1
  185. package/dist/utils/snapshot-writer.js +2 -1
  186. package/dist/utils/snapshot-writer.js.map +1 -1
  187. package/docs/CODEX_AND_CLAUDE_CODE.md +1 -1
  188. package/docs/CONFIG_ARCHITECTURE.md +7 -7
  189. package/docs/DAEMON_CONTROL_PLANE.md +2 -2
  190. package/docs/INSTALLATION_AND_QUICKSTART.md +2 -2
  191. package/docs/INSTRUCTION_MARKUP.md +2 -2
  192. package/docs/OAUTH.md +6 -6
  193. package/docs/PORTS.md +1 -1
  194. package/docs/PROVIDERS_BUILTIN.md +2 -2
  195. package/docs/QUOTA_MANAGER_V3.md +2 -2
  196. package/docs/ROUTING_POLICY_SCHEMA.md +1 -1
  197. package/docs/SERVERTOOL_CLOCK_DESIGN.md +1 -1
  198. package/docs/SERVERTOOL_PRE_COMMAND_HOOKS.md +4 -4
  199. package/docs/anthropic-request-golden-samples.md +4 -4
  200. package/docs/chat-glm-500-analysis.md +2 -2
  201. package/docs/chat-request-golden-samples.md +4 -4
  202. package/docs/codex-samples-replay.md +3 -3
  203. package/docs/daemon-admin-api-design.md +2 -2
  204. package/docs/daemon-admin-ui.html +9 -9
  205. package/docs/design/servertool-stopmessage-lifecycle.md +5 -0
  206. package/docs/golden-ci-library.md +8 -8
  207. package/docs/monitoring/Design.md +2 -2
  208. package/docs/multi-token-auth-guide.md +6 -6
  209. package/docs/oauth-authentication-guide.md +1 -1
  210. package/docs/oauth-iflow-implementation.md +2 -2
  211. package/docs/pipeline-routing-report.md +1 -1
  212. package/docs/plans/manager-daemon/PLAN.md +1 -1
  213. package/docs/plans/provider-config-v2-plan.md +8 -8
  214. package/docs/plans/provider-runtime-manager-plan.md +4 -4
  215. package/docs/provider-analysis.md +5 -5
  216. package/docs/provider-quota-design.md +2 -2
  217. package/docs/providers/antigravity-fingerprint-ua-warmup.md +5 -5
  218. package/docs/providers/antigravity-gemini-provider-compat.md +3 -3
  219. package/docs/providers/deepseek-web-provider-design.md +1 -1
  220. package/docs/providers/gemini-provider.md +1 -1
  221. package/docs/providers/provider-composite-testing.md +2 -2
  222. package/docs/providers/tabglm-claude-code-compat.md +1 -1
  223. package/docs/replay-evidence-iflow-400.txt +3 -3
  224. package/docs/reports/routing-classification-report.json +6 -6
  225. package/docs/reports/routing-classification-report.md +6 -6
  226. package/docs/reports/thinking-keywords-report.json +6 -6
  227. package/docs/responses/README.md +5 -5
  228. package/docs/responses-generic-provider.md +1 -1
  229. package/docs/responses-passthrough-provider-design.md +7 -7
  230. package/docs/routing-instructions.md +1 -1
  231. package/docs/token-daemon-preview.html +3 -3
  232. package/docs/token-refresh-daemon-plan.md +7 -7
  233. package/docs/verification/modelscope-verify.md +2 -2
  234. package/docs/verified-configs/README.md +2 -2
  235. package/docs/verified-configs/v0.45.0/README.md +5 -5
  236. package/docs/verified-configs/v0.45.0/merged-config.5521.json +3 -3
  237. package/docs/verified-configs/v0.45.0/merged-config.qwen-5522.json +3 -3
  238. package/package.json +4 -4
  239. package/scripts/anthropic-four-config-e2e.mjs +5 -5
  240. package/scripts/anthropic-toolcall.mjs +1 -1
  241. package/scripts/batch-toolcall-report.mjs +1 -1
  242. package/scripts/claude-e2e-listdir-all.sh +1 -1
  243. package/scripts/claude-e2e-listdir-per-config.sh +4 -4
  244. package/scripts/clean-safe.mjs +1 -1
  245. package/scripts/cleanup-beads-oversized-notes.mjs +182 -0
  246. package/scripts/config-core-compare.ts +1 -1
  247. package/scripts/glm1210-curl-test.sh +1 -1
  248. package/scripts/install-release.sh +1 -1
  249. package/scripts/mock-provider/capture-from-configs.mjs +1 -1
  250. package/scripts/outbound-network-toolcall.mjs +2 -2
  251. package/scripts/outbound-regression-codex-samples.mjs +1 -1
  252. package/scripts/pack-mode.mjs +11 -4
  253. package/scripts/provider-v2-smoke.mjs +3 -3
  254. package/scripts/publish-rcc.mjs +3 -3
  255. package/scripts/replay-recorded-toolcall.mjs +1 -2
  256. package/scripts/responses-fai-capture.mjs +1 -1
  257. package/scripts/responses-sse-capture.mjs +1 -1
  258. package/scripts/responses-sse-proxy.mjs +1 -1
  259. package/scripts/responses-sse-replay-golden.mjs +252 -111
  260. package/scripts/run-bg.sh +1 -1
  261. package/scripts/run-fg-gtimeout.sh +1 -1
  262. package/scripts/snapshot-inspect.mjs +24 -5
  263. package/scripts/tests/antigravity-codex-sample-pipeline-compare.mjs +1 -1
  264. package/scripts/tests/antigravity-gemini-dryrun-compare.mjs +1 -1
  265. package/scripts/tests/responses-provider-dry-run.mjs +1 -1
  266. package/scripts/tests/virtual-router-health.mjs +1 -1
  267. package/scripts/update-models.mjs +2 -2
  268. package/scripts/v2-simple-monitor.mjs +1 -1
  269. package/scripts/vendor-core.mjs +23 -6
  270. package/scripts/verify-e2e-gemini-followup-sample.mjs +1 -1
  271. package/scripts/verify-e2e-toolcall.mjs +2 -2
  272. package/scripts/verify-health.mjs +2 -2
  273. package/scripts/verify-sse-loop.mjs +1 -1
  274. package/scripts/virtual-router-dryrun.mjs +2 -2
  275. package/scripts/virtual-router-shadow-v2-real.mjs +3 -3
  276. package/vendor/@jsonstudio/llms/README.md +271 -0
  277. package/vendor/@jsonstudio/llms/dist/bridge/routecodex-adapter.d.ts +74 -0
  278. package/vendor/@jsonstudio/llms/dist/bridge/routecodex-adapter.js +229 -0
  279. package/vendor/@jsonstudio/llms/dist/config-unified/enhanced-path-resolver.d.ts +5 -0
  280. package/vendor/@jsonstudio/llms/dist/config-unified/enhanced-path-resolver.js +46 -0
  281. package/vendor/@jsonstudio/llms/dist/config-unified/unified-config.d.ts +26 -0
  282. package/vendor/@jsonstudio/llms/dist/config-unified/unified-config.js +231 -0
  283. package/vendor/@jsonstudio/llms/dist/conversion/args-mapping.d.ts +18 -0
  284. package/vendor/@jsonstudio/llms/dist/conversion/args-mapping.js +8 -0
  285. package/vendor/@jsonstudio/llms/dist/conversion/bridge-actions.d.ts +39 -0
  286. package/vendor/@jsonstudio/llms/dist/conversion/bridge-actions.js +82 -0
  287. package/vendor/@jsonstudio/llms/dist/conversion/bridge-id-utils.d.ts +9 -0
  288. package/vendor/@jsonstudio/llms/dist/conversion/bridge-id-utils.js +13 -0
  289. package/vendor/@jsonstudio/llms/dist/conversion/bridge-instructions.d.ts +1 -0
  290. package/vendor/@jsonstudio/llms/dist/conversion/bridge-instructions.js +17 -0
  291. package/vendor/@jsonstudio/llms/dist/conversion/bridge-message-utils.d.ts +23 -0
  292. package/vendor/@jsonstudio/llms/dist/conversion/bridge-message-utils.js +45 -0
  293. package/vendor/@jsonstudio/llms/dist/conversion/bridge-metadata.d.ts +2 -0
  294. package/vendor/@jsonstudio/llms/dist/conversion/bridge-metadata.js +5 -0
  295. package/vendor/@jsonstudio/llms/dist/conversion/bridge-policies.d.ts +18 -0
  296. package/vendor/@jsonstudio/llms/dist/conversion/bridge-policies.js +11 -0
  297. package/vendor/@jsonstudio/llms/dist/conversion/codec-registry.d.ts +10 -0
  298. package/vendor/@jsonstudio/llms/dist/conversion/codec-registry.js +37 -0
  299. package/vendor/@jsonstudio/llms/dist/conversion/codecs/anthropic-openai-codec.d.ts +22 -0
  300. package/vendor/@jsonstudio/llms/dist/conversion/codecs/anthropic-openai-codec.js +52 -0
  301. package/vendor/@jsonstudio/llms/dist/conversion/codecs/gemini-openai-codec.d.ts +17 -0
  302. package/vendor/@jsonstudio/llms/dist/conversion/codecs/gemini-openai-codec.js +85 -0
  303. package/vendor/@jsonstudio/llms/dist/conversion/codecs/openai-openai-codec.d.ts +12 -0
  304. package/vendor/@jsonstudio/llms/dist/conversion/codecs/openai-openai-codec.js +54 -0
  305. package/vendor/@jsonstudio/llms/dist/conversion/codecs/responses-openai-codec.d.ts +12 -0
  306. package/vendor/@jsonstudio/llms/dist/conversion/codecs/responses-openai-codec.js +66 -0
  307. package/vendor/@jsonstudio/llms/dist/conversion/compaction-detect.d.ts +2 -0
  308. package/vendor/@jsonstudio/llms/dist/conversion/compaction-detect.js +4 -0
  309. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/anthropic-claude-code-system-prompt.d.ts +4 -0
  310. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/anthropic-claude-code-system-prompt.js +42 -0
  311. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/anthropic-claude-code-user-id.d.ts +3 -0
  312. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/anthropic-claude-code-user-id.js +30 -0
  313. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/antigravity-thought-signature-cache.d.ts +3 -0
  314. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/antigravity-thought-signature-cache.js +8 -0
  315. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/antigravity-thought-signature-prepare.d.ts +3 -0
  316. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/antigravity-thought-signature-prepare.js +26 -0
  317. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/apply-patch-fixer.d.ts +1 -0
  318. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/apply-patch-fixer.js +30 -0
  319. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/auto-thinking.d.ts +6 -0
  320. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/auto-thinking.js +26 -0
  321. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/claude-thinking-tools.d.ts +2 -0
  322. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/claude-thinking-tools.js +4 -0
  323. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/deepseek-web-request.d.ts +3 -0
  324. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/deepseek-web-request.js +62 -0
  325. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/deepseek-web-response.d.ts +12 -0
  326. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/deepseek-web-response.js +114 -0
  327. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/field-mapping.d.ts +14 -0
  328. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/field-mapping.js +155 -0
  329. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/gemini-cli-request.d.ts +5 -0
  330. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/gemini-cli-request.js +27 -0
  331. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/gemini-web-search.d.ts +3 -0
  332. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/gemini-web-search.js +24 -0
  333. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/glm-history-image-trim.d.ts +2 -0
  334. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/glm-history-image-trim.js +54 -0
  335. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/glm-image-content.d.ts +2 -0
  336. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/glm-image-content.js +54 -0
  337. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/glm-native-compat.d.ts +6 -0
  338. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/glm-native-compat.js +34 -0
  339. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/glm-tool-extraction.d.ts +3 -0
  340. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/glm-tool-extraction.js +35 -0
  341. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/glm-vision-prompt.d.ts +11 -0
  342. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/glm-vision-prompt.js +104 -0
  343. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/glm-web-search.d.ts +2 -0
  344. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/glm-web-search.js +30 -0
  345. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/harvest-tool-calls-from-text.d.ts +15 -0
  346. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/harvest-tool-calls-from-text.js +124 -0
  347. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/iflow-kimi-cli-defaults.d.ts +10 -0
  348. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/iflow-kimi-cli-defaults.js +31 -0
  349. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/iflow-kimi-history-media-placeholder.d.ts +7 -0
  350. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/iflow-kimi-history-media-placeholder.js +25 -0
  351. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/iflow-kimi-thinking-reasoning-fill.d.ts +12 -0
  352. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/iflow-kimi-thinking-reasoning-fill.js +46 -0
  353. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/iflow-native-compat.d.ts +6 -0
  354. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/iflow-native-compat.js +36 -0
  355. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/iflow-response-body-unwrap.d.ts +9 -0
  356. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/iflow-response-body-unwrap.js +25 -0
  357. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/iflow-tool-text-fallback.d.ts +5 -0
  358. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/iflow-tool-text-fallback.js +29 -0
  359. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/iflow-web-search.d.ts +18 -0
  360. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/iflow-web-search.js +49 -0
  361. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/index.d.ts +2 -0
  362. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/index.js +2 -0
  363. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/lmstudio-responses-fc-ids.d.ts +2 -0
  364. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/lmstudio-responses-fc-ids.js +4 -0
  365. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/lmstudio-responses-input-stringify.d.ts +14 -0
  366. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/lmstudio-responses-input-stringify.js +125 -0
  367. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/normalize-tool-call-ids.d.ts +2 -0
  368. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/normalize-tool-call-ids.js +10 -0
  369. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/qwen-transform.d.ts +4 -0
  370. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/qwen-transform.js +40 -0
  371. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/request-rules.d.ts +24 -0
  372. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/request-rules.js +4 -0
  373. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/response-blacklist.d.ts +10 -0
  374. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/response-blacklist.js +10 -0
  375. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/response-normalize.d.ts +5 -0
  376. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/response-normalize.js +4 -0
  377. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/response-validate.d.ts +5 -0
  378. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/response-validate.js +4 -0
  379. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/snapshot.d.ts +8 -0
  380. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/snapshot.js +21 -0
  381. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/strip-orphan-function-calls-tag.d.ts +2 -0
  382. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/strip-orphan-function-calls-tag.js +4 -0
  383. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/tool-schema.d.ts +6 -0
  384. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/tool-schema.js +91 -0
  385. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/tool-text-request-guidance.d.ts +9 -0
  386. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/tool-text-request-guidance.js +7 -0
  387. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/universal-shape-filter.d.ts +57 -0
  388. package/vendor/@jsonstudio/llms/dist/conversion/compat/actions/universal-shape-filter.js +14 -0
  389. package/vendor/@jsonstudio/llms/dist/conversion/compat/antigravity-session-signature.d.ts +86 -0
  390. package/vendor/@jsonstudio/llms/dist/conversion/compat/antigravity-session-signature.js +1143 -0
  391. package/vendor/@jsonstudio/llms/dist/conversion/compat/profiles/anthropic-claude-code.json +17 -0
  392. package/vendor/@jsonstudio/llms/dist/conversion/compat/profiles/chat-claude-code.json +18 -0
  393. package/vendor/@jsonstudio/llms/dist/conversion/compat/profiles/chat-deepseek-web.json +47 -0
  394. package/vendor/@jsonstudio/llms/dist/conversion/compat/profiles/chat-gemini-cli.json +23 -0
  395. package/vendor/@jsonstudio/llms/dist/conversion/compat/profiles/chat-gemini.json +31 -0
  396. package/vendor/@jsonstudio/llms/dist/conversion/compat/profiles/chat-glm.json +405 -0
  397. package/vendor/@jsonstudio/llms/dist/conversion/compat/profiles/chat-iflow.json +353 -0
  398. package/vendor/@jsonstudio/llms/dist/conversion/compat/profiles/chat-lmstudio.json +80 -0
  399. package/vendor/@jsonstudio/llms/dist/conversion/compat/profiles/chat-qwen.json +22 -0
  400. package/vendor/@jsonstudio/llms/dist/conversion/compat/profiles/responses-c4m.json +45 -0
  401. package/vendor/@jsonstudio/llms/dist/conversion/compat/profiles/responses-crs.json +15 -0
  402. package/vendor/@jsonstudio/llms/dist/conversion/compat/profiles/responses-output2choices-test.json +12 -0
  403. package/vendor/@jsonstudio/llms/dist/conversion/config/config-manager.d.ts +212 -0
  404. package/vendor/@jsonstudio/llms/dist/conversion/config/config-manager.js +310 -0
  405. package/vendor/@jsonstudio/llms/dist/conversion/config/sample-config.json +314 -0
  406. package/vendor/@jsonstudio/llms/dist/conversion/config/version-switch.json +150 -0
  407. package/vendor/@jsonstudio/llms/dist/conversion/hub/config/types.d.ts +26 -0
  408. package/vendor/@jsonstudio/llms/dist/conversion/hub/config/types.js +1 -0
  409. package/vendor/@jsonstudio/llms/dist/conversion/hub/core/detour-registry.d.ts +11 -0
  410. package/vendor/@jsonstudio/llms/dist/conversion/hub/core/detour-registry.js +23 -0
  411. package/vendor/@jsonstudio/llms/dist/conversion/hub/core/hub-context.d.ts +23 -0
  412. package/vendor/@jsonstudio/llms/dist/conversion/hub/core/hub-context.js +1 -0
  413. package/vendor/@jsonstudio/llms/dist/conversion/hub/core/index.d.ts +4 -0
  414. package/vendor/@jsonstudio/llms/dist/conversion/hub/core/index.js +3 -0
  415. package/vendor/@jsonstudio/llms/dist/conversion/hub/core/stage-driver.d.ts +30 -0
  416. package/vendor/@jsonstudio/llms/dist/conversion/hub/core/stage-driver.js +33 -0
  417. package/vendor/@jsonstudio/llms/dist/conversion/hub/format-adapters/anthropic-format-adapter.d.ts +16 -0
  418. package/vendor/@jsonstudio/llms/dist/conversion/hub/format-adapters/anthropic-format-adapter.js +42 -0
  419. package/vendor/@jsonstudio/llms/dist/conversion/hub/format-adapters/chat-format-adapter.d.ts +17 -0
  420. package/vendor/@jsonstudio/llms/dist/conversion/hub/format-adapters/chat-format-adapter.js +42 -0
  421. package/vendor/@jsonstudio/llms/dist/conversion/hub/format-adapters/gemini-format-adapter.d.ts +16 -0
  422. package/vendor/@jsonstudio/llms/dist/conversion/hub/format-adapters/gemini-format-adapter.js +42 -0
  423. package/vendor/@jsonstudio/llms/dist/conversion/hub/format-adapters/index.d.ts +21 -0
  424. package/vendor/@jsonstudio/llms/dist/conversion/hub/format-adapters/index.js +4 -0
  425. package/vendor/@jsonstudio/llms/dist/conversion/hub/format-adapters/responses-format-adapter.d.ts +19 -0
  426. package/vendor/@jsonstudio/llms/dist/conversion/hub/format-adapters/responses-format-adapter.js +42 -0
  427. package/vendor/@jsonstudio/llms/dist/conversion/hub/hub-feature.d.ts +1 -0
  428. package/vendor/@jsonstudio/llms/dist/conversion/hub/hub-feature.js +26 -0
  429. package/vendor/@jsonstudio/llms/dist/conversion/hub/node-support.d.ts +19 -0
  430. package/vendor/@jsonstudio/llms/dist/conversion/hub/node-support.js +136 -0
  431. package/vendor/@jsonstudio/llms/dist/conversion/hub/operation-table/operation-table-runner.d.ts +18 -0
  432. package/vendor/@jsonstudio/llms/dist/conversion/hub/operation-table/operation-table-runner.js +162 -0
  433. package/vendor/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/anthropic-mapper.d.ts +8 -0
  434. package/vendor/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/anthropic-mapper.js +503 -0
  435. package/vendor/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/archive/chat-mapper.archive.d.ts +8 -0
  436. package/vendor/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/archive/chat-mapper.archive.js +409 -0
  437. package/vendor/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/chat-mapper.d.ts +8 -0
  438. package/vendor/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/chat-mapper.js +350 -0
  439. package/vendor/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/gemini-mapper.d.ts +7 -0
  440. package/vendor/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/gemini-mapper.js +1540 -0
  441. package/vendor/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/responses-mapper.d.ts +21 -0
  442. package/vendor/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/responses-mapper.js +491 -0
  443. package/vendor/@jsonstudio/llms/dist/conversion/hub/ops/operations.d.ts +19 -0
  444. package/vendor/@jsonstudio/llms/dist/conversion/hub/ops/operations.js +7 -0
  445. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-engine.d.ts +9 -0
  446. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-engine.js +13 -0
  447. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-pipeline-executor.d.ts +9 -0
  448. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-pipeline-executor.js +46 -0
  449. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-profile-resolver.d.ts +2 -0
  450. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-profile-resolver.js +14 -0
  451. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-profile-store.d.ts +2 -0
  452. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-profile-store.js +94 -0
  453. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-types.d.ts +175 -0
  454. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-types.js +1 -0
  455. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/native-adapter-context.d.ts +3 -0
  456. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/native-adapter-context.js +40 -0
  457. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline.d.ts +111 -0
  458. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline.js +1927 -0
  459. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-stage-timing.d.ts +8 -0
  460. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-stage-timing.js +211 -0
  461. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/session-identifiers.d.ts +9 -0
  462. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/session-identifiers.js +16 -0
  463. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage1_format_parse/index.d.ts +10 -0
  464. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage1_format_parse/index.js +236 -0
  465. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage2_semantic_map/index.d.ts +24 -0
  466. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage2_semantic_map/index.js +132 -0
  467. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage2_semantic_map/semantic-lift.d.ts +14 -0
  468. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage2_semantic_map/semantic-lift.js +24 -0
  469. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/archive/shell-like-tool-call-normalization-fallback.d.ts +2 -0
  470. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/archive/shell-like-tool-call-normalization-fallback.js +157 -0
  471. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/context-capture-orchestration.d.ts +16 -0
  472. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/context-capture-orchestration.js +29 -0
  473. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/context-factories.d.ts +5 -0
  474. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/context-factories.js +19 -0
  475. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/index.d.ts +6 -0
  476. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/index.js +22 -0
  477. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/responses-context-snapshot.d.ts +8 -0
  478. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/responses-context-snapshot.js +28 -0
  479. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/tool-output-diagnostics.d.ts +2 -0
  480. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/tool-output-diagnostics.js +4 -0
  481. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/tool-output-snapshot.d.ts +10 -0
  482. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/tool-output-snapshot.js +12 -0
  483. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage1_semantic_map/context-merge.d.ts +3 -0
  484. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage1_semantic_map/context-merge.js +30 -0
  485. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage1_semantic_map/index.d.ts +18 -0
  486. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage1_semantic_map/index.js +84 -0
  487. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage2_format_build/index.d.ts +8 -0
  488. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage2_format_build/index.js +12 -0
  489. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage3_compat/index.d.ts +14 -0
  490. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage3_compat/index.js +45 -0
  491. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_process/req_process_stage1_tool_governance/index.d.ts +16 -0
  492. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_process/req_process_stage1_tool_governance/index.js +62 -0
  493. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_process/req_process_stage2_route_select/index.d.ts +17 -0
  494. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_process/req_process_stage2_route_select/index.js +35 -0
  495. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage1_sse_decode/index.d.ts +17 -0
  496. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage1_sse_decode/index.js +243 -0
  497. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage1_sse_decode/stream-json-sniffer.d.ts +3 -0
  498. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage1_sse_decode/stream-json-sniffer.js +81 -0
  499. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage2_format_parse/index.d.ts +10 -0
  500. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage2_format_parse/index.js +50 -0
  501. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage3_semantic_map/index.d.ts +13 -0
  502. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_inbound/resp_inbound_stage3_semantic_map/index.js +25 -0
  503. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/chat-process-semantics-bridge.d.ts +6 -0
  504. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/chat-process-semantics-bridge.js +17 -0
  505. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/client-remap-protocol-switch.d.ts +9 -0
  506. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/client-remap-protocol-switch.js +103 -0
  507. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/index.d.ts +13 -0
  508. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/index.js +30 -0
  509. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage2_sse_stream/index.d.ts +17 -0
  510. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage2_sse_stream/index.js +35 -0
  511. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage1_tool_governance/index.d.ts +16 -0
  512. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage1_tool_governance/index.js +52 -0
  513. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage2_finalize/index.d.ts +19 -0
  514. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage2_finalize/index.js +40 -0
  515. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage3_servertool_orchestration/index.d.ts +44 -0
  516. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage3_servertool_orchestration/index.js +88 -0
  517. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/utils.d.ts +2 -0
  518. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/utils.js +27 -0
  519. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/target-utils.d.ts +5 -0
  520. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipeline/target-utils.js +26 -0
  521. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipelines/inbound.d.ts +22 -0
  522. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipelines/inbound.js +66 -0
  523. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipelines/outbound.d.ts +22 -0
  524. package/vendor/@jsonstudio/llms/dist/conversion/hub/pipelines/outbound.js +59 -0
  525. package/vendor/@jsonstudio/llms/dist/conversion/hub/policy/policy-engine.d.ts +48 -0
  526. package/vendor/@jsonstudio/llms/dist/conversion/hub/policy/policy-engine.js +269 -0
  527. package/vendor/@jsonstudio/llms/dist/conversion/hub/policy/protocol-spec.d.ts +75 -0
  528. package/vendor/@jsonstudio/llms/dist/conversion/hub/policy/protocol-spec.js +27 -0
  529. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-anthropic-alias.d.ts +2 -0
  530. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-anthropic-alias.js +36 -0
  531. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-directive-parser.d.ts +5 -0
  532. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-directive-parser.js +56 -0
  533. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-directives.d.ts +24 -0
  534. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-directives.js +98 -0
  535. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-reminder-directives.d.ts +8 -0
  536. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-reminder-directives.js +42 -0
  537. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-reminder-finalize.d.ts +14 -0
  538. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-reminder-finalize.js +10 -0
  539. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-reminder-messages.d.ts +5 -0
  540. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-reminder-messages.js +10 -0
  541. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-reminder-orchestration.d.ts +30 -0
  542. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-reminder-orchestration.js +68 -0
  543. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-reminder-time-tag.d.ts +9 -0
  544. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-reminder-time-tag.js +18 -0
  545. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-reminders.d.ts +2 -0
  546. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-reminders.js +104 -0
  547. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-tool-schemas.d.ts +3 -0
  548. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-tool-schemas.js +258 -0
  549. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-tools.d.ts +6 -0
  550. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-clock-tools.js +41 -0
  551. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-continue-execution.d.ts +11 -0
  552. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-continue-execution.js +83 -0
  553. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-governance-context.d.ts +15 -0
  554. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-governance-context.js +7 -0
  555. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-governance-finalize.d.ts +16 -0
  556. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-governance-finalize.js +11 -0
  557. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-governance-orchestration.d.ts +9 -0
  558. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-governance-orchestration.js +49 -0
  559. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-governed-control-ops.d.ts +8 -0
  560. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-governed-control-ops.js +5 -0
  561. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-governed-filter-call.d.ts +12 -0
  562. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-governed-filter-call.js +18 -0
  563. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-governed-merge.d.ts +8 -0
  564. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-governed-merge.js +11 -0
  565. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-media.d.ts +5 -0
  566. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-media.js +108 -0
  567. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-node-result.d.ts +23 -0
  568. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-node-result.js +24 -0
  569. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-pending-tool-sync.d.ts +14 -0
  570. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-pending-tool-sync.js +52 -0
  571. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-post-governed-normalization.d.ts +8 -0
  572. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-post-governed-normalization.js +16 -0
  573. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-review.d.ts +2 -0
  574. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-review.js +8 -0
  575. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-servertool-orchestration.d.ts +8 -0
  576. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-servertool-orchestration.js +22 -0
  577. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-session-usage.d.ts +7 -0
  578. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-session-usage.js +147 -0
  579. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-tool-normalization.d.ts +2 -0
  580. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-tool-normalization.js +4 -0
  581. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-web-search-intent.d.ts +12 -0
  582. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-web-search-intent.js +13 -0
  583. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-web-search-tool-schema.d.ts +3 -0
  584. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-web-search-tool-schema.js +4 -0
  585. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-web-search.d.ts +8 -0
  586. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process-web-search.js +26 -0
  587. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process.d.ts +15 -0
  588. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/chat-process.js +27 -0
  589. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/client-inject-readiness.d.ts +1 -0
  590. package/vendor/@jsonstudio/llms/dist/conversion/hub/process/client-inject-readiness.js +4 -0
  591. package/vendor/@jsonstudio/llms/dist/conversion/hub/registry.d.ts +28 -0
  592. package/vendor/@jsonstudio/llms/dist/conversion/hub/registry.js +101 -0
  593. package/vendor/@jsonstudio/llms/dist/conversion/hub/response/chat-response-utils.d.ts +6 -0
  594. package/vendor/@jsonstudio/llms/dist/conversion/hub/response/chat-response-utils.js +8 -0
  595. package/vendor/@jsonstudio/llms/dist/conversion/hub/response/provider-response.d.ts +51 -0
  596. package/vendor/@jsonstudio/llms/dist/conversion/hub/response/provider-response.js +529 -0
  597. package/vendor/@jsonstudio/llms/dist/conversion/hub/response/response-mappers.d.ts +24 -0
  598. package/vendor/@jsonstudio/llms/dist/conversion/hub/response/response-mappers.js +73 -0
  599. package/vendor/@jsonstudio/llms/dist/conversion/hub/response/response-runtime.d.ts +9 -0
  600. package/vendor/@jsonstudio/llms/dist/conversion/hub/response/response-runtime.js +758 -0
  601. package/vendor/@jsonstudio/llms/dist/conversion/hub/semantic-mappers/anthropic-mapper.d.ts +2 -0
  602. package/vendor/@jsonstudio/llms/dist/conversion/hub/semantic-mappers/anthropic-mapper.js +2 -0
  603. package/vendor/@jsonstudio/llms/dist/conversion/hub/semantic-mappers/chat-mapper.d.ts +2 -0
  604. package/vendor/@jsonstudio/llms/dist/conversion/hub/semantic-mappers/chat-mapper.js +2 -0
  605. package/vendor/@jsonstudio/llms/dist/conversion/hub/semantic-mappers/gemini-mapper.d.ts +2 -0
  606. package/vendor/@jsonstudio/llms/dist/conversion/hub/semantic-mappers/gemini-mapper.js +2 -0
  607. package/vendor/@jsonstudio/llms/dist/conversion/hub/semantic-mappers/index.d.ts +4 -0
  608. package/vendor/@jsonstudio/llms/dist/conversion/hub/semantic-mappers/index.js +4 -0
  609. package/vendor/@jsonstudio/llms/dist/conversion/hub/semantic-mappers/responses-mapper.d.ts +2 -0
  610. package/vendor/@jsonstudio/llms/dist/conversion/hub/semantic-mappers/responses-mapper.js +2 -0
  611. package/vendor/@jsonstudio/llms/dist/conversion/hub/snapshot-recorder.d.ts +13 -0
  612. package/vendor/@jsonstudio/llms/dist/conversion/hub/snapshot-recorder.js +38 -0
  613. package/vendor/@jsonstudio/llms/dist/conversion/hub/standardized-bridge.d.ts +12 -0
  614. package/vendor/@jsonstudio/llms/dist/conversion/hub/standardized-bridge.js +16 -0
  615. package/vendor/@jsonstudio/llms/dist/conversion/hub/tool-governance/engine.d.ts +24 -0
  616. package/vendor/@jsonstudio/llms/dist/conversion/hub/tool-governance/engine.js +118 -0
  617. package/vendor/@jsonstudio/llms/dist/conversion/hub/tool-governance/index.d.ts +3 -0
  618. package/vendor/@jsonstudio/llms/dist/conversion/hub/tool-governance/index.js +2 -0
  619. package/vendor/@jsonstudio/llms/dist/conversion/hub/tool-governance/rules.d.ts +2 -0
  620. package/vendor/@jsonstudio/llms/dist/conversion/hub/tool-governance/rules.js +80 -0
  621. package/vendor/@jsonstudio/llms/dist/conversion/hub/tool-governance/types.d.ts +38 -0
  622. package/vendor/@jsonstudio/llms/dist/conversion/hub/tool-governance/types.js +1 -0
  623. package/vendor/@jsonstudio/llms/dist/conversion/hub/tool-session-compat.d.ts +26 -0
  624. package/vendor/@jsonstudio/llms/dist/conversion/hub/tool-session-compat.js +86 -0
  625. package/vendor/@jsonstudio/llms/dist/conversion/hub/tool-surface/tool-surface-engine.d.ts +18 -0
  626. package/vendor/@jsonstudio/llms/dist/conversion/hub/tool-surface/tool-surface-engine.js +574 -0
  627. package/vendor/@jsonstudio/llms/dist/conversion/hub/types/chat-envelope.d.ts +79 -0
  628. package/vendor/@jsonstudio/llms/dist/conversion/hub/types/chat-envelope.js +1 -0
  629. package/vendor/@jsonstudio/llms/dist/conversion/hub/types/chat-schema.d.ts +112 -0
  630. package/vendor/@jsonstudio/llms/dist/conversion/hub/types/chat-schema.js +1 -0
  631. package/vendor/@jsonstudio/llms/dist/conversion/hub/types/errors.d.ts +5 -0
  632. package/vendor/@jsonstudio/llms/dist/conversion/hub/types/errors.js +13 -0
  633. package/vendor/@jsonstudio/llms/dist/conversion/hub/types/format-envelope.d.ts +7 -0
  634. package/vendor/@jsonstudio/llms/dist/conversion/hub/types/format-envelope.js +1 -0
  635. package/vendor/@jsonstudio/llms/dist/conversion/hub/types/index.d.ts +6 -0
  636. package/vendor/@jsonstudio/llms/dist/conversion/hub/types/index.js +6 -0
  637. package/vendor/@jsonstudio/llms/dist/conversion/hub/types/json.d.ts +9 -0
  638. package/vendor/@jsonstudio/llms/dist/conversion/hub/types/json.js +9 -0
  639. package/vendor/@jsonstudio/llms/dist/conversion/hub/types/node.d.ts +31 -0
  640. package/vendor/@jsonstudio/llms/dist/conversion/hub/types/node.js +1 -0
  641. package/vendor/@jsonstudio/llms/dist/conversion/hub/types/standardized.d.ts +99 -0
  642. package/vendor/@jsonstudio/llms/dist/conversion/hub/types/standardized.js +1 -0
  643. package/vendor/@jsonstudio/llms/dist/conversion/index.d.ts +33 -0
  644. package/vendor/@jsonstudio/llms/dist/conversion/index.js +33 -0
  645. package/vendor/@jsonstudio/llms/dist/conversion/jsonish.d.ts +3 -0
  646. package/vendor/@jsonstudio/llms/dist/conversion/jsonish.js +20 -0
  647. package/vendor/@jsonstudio/llms/dist/conversion/mcp-injection.d.ts +2 -0
  648. package/vendor/@jsonstudio/llms/dist/conversion/mcp-injection.js +7 -0
  649. package/vendor/@jsonstudio/llms/dist/conversion/media.d.ts +1 -0
  650. package/vendor/@jsonstudio/llms/dist/conversion/media.js +4 -0
  651. package/vendor/@jsonstudio/llms/dist/conversion/metadata-passthrough.d.ts +11 -0
  652. package/vendor/@jsonstudio/llms/dist/conversion/metadata-passthrough.js +20 -0
  653. package/vendor/@jsonstudio/llms/dist/conversion/payload-budget.d.ts +13 -0
  654. package/vendor/@jsonstudio/llms/dist/conversion/payload-budget.js +47 -0
  655. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/codecs/v2/anthropic-openai-pipeline.d.ts +11 -0
  656. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/codecs/v2/anthropic-openai-pipeline.js +104 -0
  657. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/codecs/v2/openai-openai-pipeline.d.ts +15 -0
  658. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/codecs/v2/openai-openai-pipeline.js +176 -0
  659. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/codecs/v2/responses-openai-pipeline.d.ts +12 -0
  660. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/codecs/v2/responses-openai-pipeline.js +212 -0
  661. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/codecs/v2/shared/openai-chat-helpers.d.ts +13 -0
  662. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/codecs/v2/shared/openai-chat-helpers.js +34 -0
  663. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/hooks/adapter-context.d.ts +7 -0
  664. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/hooks/adapter-context.js +18 -0
  665. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/hooks/protocol-hooks.d.ts +67 -0
  666. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/hooks/protocol-hooks.js +1 -0
  667. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/index.d.ts +35 -0
  668. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/index.js +103 -0
  669. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/meta/meta-bag.d.ts +20 -0
  670. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/meta/meta-bag.js +81 -0
  671. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/schema/canonical-chat.d.ts +18 -0
  672. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/schema/canonical-chat.js +1 -0
  673. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/schema/index.d.ts +1 -0
  674. package/vendor/@jsonstudio/llms/dist/conversion/pipeline/schema/index.js +1 -0
  675. package/vendor/@jsonstudio/llms/dist/conversion/protocol-field-allowlists.d.ts +7 -0
  676. package/vendor/@jsonstudio/llms/dist/conversion/protocol-field-allowlists.js +9 -0
  677. package/vendor/@jsonstudio/llms/dist/conversion/protocol-state.d.ts +4 -0
  678. package/vendor/@jsonstudio/llms/dist/conversion/protocol-state.js +27 -0
  679. package/vendor/@jsonstudio/llms/dist/conversion/provider-protocol-error.d.ts +17 -0
  680. package/vendor/@jsonstudio/llms/dist/conversion/provider-protocol-error.js +25 -0
  681. package/vendor/@jsonstudio/llms/dist/conversion/responses/responses-host-policy.d.ts +6 -0
  682. package/vendor/@jsonstudio/llms/dist/conversion/responses/responses-host-policy.js +4 -0
  683. package/vendor/@jsonstudio/llms/dist/conversion/responses/responses-openai-bridge/response-payload.d.ts +3 -0
  684. package/vendor/@jsonstudio/llms/dist/conversion/responses/responses-openai-bridge/response-payload.js +190 -0
  685. package/vendor/@jsonstudio/llms/dist/conversion/responses/responses-openai-bridge/types.d.ts +35 -0
  686. package/vendor/@jsonstudio/llms/dist/conversion/responses/responses-openai-bridge/types.js +1 -0
  687. package/vendor/@jsonstudio/llms/dist/conversion/responses/responses-openai-bridge.d.ts +15 -0
  688. package/vendor/@jsonstudio/llms/dist/conversion/responses/responses-openai-bridge.js +475 -0
  689. package/vendor/@jsonstudio/llms/dist/conversion/runtime-metadata.d.ts +7 -0
  690. package/vendor/@jsonstudio/llms/dist/conversion/runtime-metadata.js +31 -0
  691. package/vendor/@jsonstudio/llms/dist/conversion/schema-validator.d.ts +7 -0
  692. package/vendor/@jsonstudio/llms/dist/conversion/schema-validator.js +67 -0
  693. package/vendor/@jsonstudio/llms/dist/conversion/shared/anthropic-message-utils.d.ts +22 -0
  694. package/vendor/@jsonstudio/llms/dist/conversion/shared/anthropic-message-utils.js +1416 -0
  695. package/vendor/@jsonstudio/llms/dist/conversion/shared/chat-envelope-validator.d.ts +8 -0
  696. package/vendor/@jsonstudio/llms/dist/conversion/shared/chat-envelope-validator.js +4 -0
  697. package/vendor/@jsonstudio/llms/dist/conversion/shared/chat-output-normalizer.d.ts +4 -0
  698. package/vendor/@jsonstudio/llms/dist/conversion/shared/chat-output-normalizer.js +10 -0
  699. package/vendor/@jsonstudio/llms/dist/conversion/shared/chat-request-filters.d.ts +8 -0
  700. package/vendor/@jsonstudio/llms/dist/conversion/shared/chat-request-filters.js +63 -0
  701. package/vendor/@jsonstudio/llms/dist/conversion/shared/gemini-tool-utils.d.ts +7 -0
  702. package/vendor/@jsonstudio/llms/dist/conversion/shared/gemini-tool-utils.js +20 -0
  703. package/vendor/@jsonstudio/llms/dist/conversion/shared/openai-finalizer.d.ts +8 -0
  704. package/vendor/@jsonstudio/llms/dist/conversion/shared/openai-finalizer.js +22 -0
  705. package/vendor/@jsonstudio/llms/dist/conversion/shared/openai-message-normalize.d.ts +1 -0
  706. package/vendor/@jsonstudio/llms/dist/conversion/shared/openai-message-normalize.js +151 -0
  707. package/vendor/@jsonstudio/llms/dist/conversion/shared/output-content-normalizer.d.ts +12 -0
  708. package/vendor/@jsonstudio/llms/dist/conversion/shared/output-content-normalizer.js +26 -0
  709. package/vendor/@jsonstudio/llms/dist/conversion/shared/reasoning-mapping.d.ts +5 -0
  710. package/vendor/@jsonstudio/llms/dist/conversion/shared/reasoning-mapping.js +7 -0
  711. package/vendor/@jsonstudio/llms/dist/conversion/shared/reasoning-normalizer.d.ts +25 -0
  712. package/vendor/@jsonstudio/llms/dist/conversion/shared/reasoning-normalizer.js +114 -0
  713. package/vendor/@jsonstudio/llms/dist/conversion/shared/reasoning-tool-normalizer.d.ts +12 -0
  714. package/vendor/@jsonstudio/llms/dist/conversion/shared/reasoning-tool-normalizer.js +22 -0
  715. package/vendor/@jsonstudio/llms/dist/conversion/shared/reasoning-tool-parser.d.ts +10 -0
  716. package/vendor/@jsonstudio/llms/dist/conversion/shared/reasoning-tool-parser.js +11 -0
  717. package/vendor/@jsonstudio/llms/dist/conversion/shared/reasoning-utils.d.ts +2 -0
  718. package/vendor/@jsonstudio/llms/dist/conversion/shared/reasoning-utils.js +19 -0
  719. package/vendor/@jsonstudio/llms/dist/conversion/shared/responses-conversation-store.d.ts +35 -0
  720. package/vendor/@jsonstudio/llms/dist/conversion/shared/responses-conversation-store.js +195 -0
  721. package/vendor/@jsonstudio/llms/dist/conversion/shared/responses-output-builder.d.ts +13 -0
  722. package/vendor/@jsonstudio/llms/dist/conversion/shared/responses-output-builder.js +32 -0
  723. package/vendor/@jsonstudio/llms/dist/conversion/shared/responses-reasoning-registry.d.ts +24 -0
  724. package/vendor/@jsonstudio/llms/dist/conversion/shared/responses-reasoning-registry.js +185 -0
  725. package/vendor/@jsonstudio/llms/dist/conversion/shared/responses-request-adapter.d.ts +7 -0
  726. package/vendor/@jsonstudio/llms/dist/conversion/shared/responses-request-adapter.js +14 -0
  727. package/vendor/@jsonstudio/llms/dist/conversion/shared/responses-response-utils.d.ts +3 -0
  728. package/vendor/@jsonstudio/llms/dist/conversion/shared/responses-response-utils.js +254 -0
  729. package/vendor/@jsonstudio/llms/dist/conversion/shared/responses-tool-utils.d.ts +14 -0
  730. package/vendor/@jsonstudio/llms/dist/conversion/shared/responses-tool-utils.js +102 -0
  731. package/vendor/@jsonstudio/llms/dist/conversion/shared/streaming-text-extractor.d.ts +19 -0
  732. package/vendor/@jsonstudio/llms/dist/conversion/shared/streaming-text-extractor.js +39 -0
  733. package/vendor/@jsonstudio/llms/dist/conversion/shared/text-markup-normalizer/normalize.d.ts +2 -0
  734. package/vendor/@jsonstudio/llms/dist/conversion/shared/text-markup-normalizer/normalize.js +116 -0
  735. package/vendor/@jsonstudio/llms/dist/conversion/shared/text-markup-normalizer.d.ts +4 -0
  736. package/vendor/@jsonstudio/llms/dist/conversion/shared/text-markup-normalizer.js +3 -0
  737. package/vendor/@jsonstudio/llms/dist/conversion/shared/thought-signature-validator.d.ts +52 -0
  738. package/vendor/@jsonstudio/llms/dist/conversion/shared/thought-signature-validator.js +58 -0
  739. package/vendor/@jsonstudio/llms/dist/conversion/shared/tool-argument-repairer.d.ts +39 -0
  740. package/vendor/@jsonstudio/llms/dist/conversion/shared/tool-argument-repairer.js +53 -0
  741. package/vendor/@jsonstudio/llms/dist/conversion/shared/tool-call-id-manager.d.ts +109 -0
  742. package/vendor/@jsonstudio/llms/dist/conversion/shared/tool-call-id-manager.js +202 -0
  743. package/vendor/@jsonstudio/llms/dist/conversion/shared/tool-call-utils.d.ts +11 -0
  744. package/vendor/@jsonstudio/llms/dist/conversion/shared/tool-call-utils.js +14 -0
  745. package/vendor/@jsonstudio/llms/dist/conversion/shared/tool-filter-pipeline.d.ts +21 -0
  746. package/vendor/@jsonstudio/llms/dist/conversion/shared/tool-filter-pipeline.js +171 -0
  747. package/vendor/@jsonstudio/llms/dist/conversion/shared/tool-governor.d.ts +29 -0
  748. package/vendor/@jsonstudio/llms/dist/conversion/shared/tool-governor.js +694 -0
  749. package/vendor/@jsonstudio/llms/dist/conversion/shared/tool-harvester.d.ts +31 -0
  750. package/vendor/@jsonstudio/llms/dist/conversion/shared/tool-harvester.js +23 -0
  751. package/vendor/@jsonstudio/llms/dist/conversion/shared/tool-mapping.d.ts +19 -0
  752. package/vendor/@jsonstudio/llms/dist/conversion/shared/tool-mapping.js +65 -0
  753. package/vendor/@jsonstudio/llms/dist/conversion/shared/tooling.d.ts +29 -0
  754. package/vendor/@jsonstudio/llms/dist/conversion/shared/tooling.js +57 -0
  755. package/vendor/@jsonstudio/llms/dist/conversion/snapshot-utils.d.ts +31 -0
  756. package/vendor/@jsonstudio/llms/dist/conversion/snapshot-utils.js +49 -0
  757. package/vendor/@jsonstudio/llms/dist/conversion/types/bridge-message-types.d.ts +41 -0
  758. package/vendor/@jsonstudio/llms/dist/conversion/types/bridge-message-types.js +1 -0
  759. package/vendor/@jsonstudio/llms/dist/conversion/types/text-markup-normalizer.d.ts +13 -0
  760. package/vendor/@jsonstudio/llms/dist/conversion/types/text-markup-normalizer.js +1 -0
  761. package/vendor/@jsonstudio/llms/dist/conversion/types.d.ts +33 -0
  762. package/vendor/@jsonstudio/llms/dist/conversion/types.js +1 -0
  763. package/vendor/@jsonstudio/llms/dist/filters/builtin/add-fields-filter.d.ts +8 -0
  764. package/vendor/@jsonstudio/llms/dist/filters/builtin/add-fields-filter.js +16 -0
  765. package/vendor/@jsonstudio/llms/dist/filters/builtin/blacklist-filter.d.ts +8 -0
  766. package/vendor/@jsonstudio/llms/dist/filters/builtin/blacklist-filter.js +19 -0
  767. package/vendor/@jsonstudio/llms/dist/filters/builtin/whitelist-filter.d.ts +8 -0
  768. package/vendor/@jsonstudio/llms/dist/filters/builtin/whitelist-filter.js +19 -0
  769. package/vendor/@jsonstudio/llms/dist/filters/config/openai-openai.fieldmap.json +18 -0
  770. package/vendor/@jsonstudio/llms/dist/filters/engine.d.ts +16 -0
  771. package/vendor/@jsonstudio/llms/dist/filters/engine.js +167 -0
  772. package/vendor/@jsonstudio/llms/dist/filters/index.d.ts +18 -0
  773. package/vendor/@jsonstudio/llms/dist/filters/index.js +22 -0
  774. package/vendor/@jsonstudio/llms/dist/filters/special/request-tool-choice-policy.d.ts +11 -0
  775. package/vendor/@jsonstudio/llms/dist/filters/special/request-tool-choice-policy.js +29 -0
  776. package/vendor/@jsonstudio/llms/dist/filters/special/request-tool-list-filter.d.ts +11 -0
  777. package/vendor/@jsonstudio/llms/dist/filters/special/request-tool-list-filter.js +322 -0
  778. package/vendor/@jsonstudio/llms/dist/filters/special/request-toolcalls-stringify.d.ts +13 -0
  779. package/vendor/@jsonstudio/llms/dist/filters/special/request-toolcalls-stringify.js +94 -0
  780. package/vendor/@jsonstudio/llms/dist/filters/special/request-tools-normalize.d.ts +11 -0
  781. package/vendor/@jsonstudio/llms/dist/filters/special/request-tools-normalize.js +114 -0
  782. package/vendor/@jsonstudio/llms/dist/filters/special/response-finish-invariants.d.ts +11 -0
  783. package/vendor/@jsonstudio/llms/dist/filters/special/response-finish-invariants.js +30 -0
  784. package/vendor/@jsonstudio/llms/dist/filters/special/response-openai-to-responses-bridge.d.ts +13 -0
  785. package/vendor/@jsonstudio/llms/dist/filters/special/response-openai-to-responses-bridge.js +24 -0
  786. package/vendor/@jsonstudio/llms/dist/filters/special/response-tool-arguments-blacklist.d.ts +12 -0
  787. package/vendor/@jsonstudio/llms/dist/filters/special/response-tool-arguments-blacklist.js +63 -0
  788. package/vendor/@jsonstudio/llms/dist/filters/special/response-tool-arguments-schema-converge.d.ts +13 -0
  789. package/vendor/@jsonstudio/llms/dist/filters/special/response-tool-arguments-schema-converge.js +63 -0
  790. package/vendor/@jsonstudio/llms/dist/filters/special/response-tool-arguments-stringify.d.ts +9 -0
  791. package/vendor/@jsonstudio/llms/dist/filters/special/response-tool-arguments-stringify.js +132 -0
  792. package/vendor/@jsonstudio/llms/dist/filters/special/response-tool-arguments-whitelist.d.ts +11 -0
  793. package/vendor/@jsonstudio/llms/dist/filters/special/response-tool-arguments-whitelist.js +56 -0
  794. package/vendor/@jsonstudio/llms/dist/filters/special/response-tool-text-canonicalize.d.ts +13 -0
  795. package/vendor/@jsonstudio/llms/dist/filters/special/response-tool-text-canonicalize.js +16 -0
  796. package/vendor/@jsonstudio/llms/dist/filters/special/tool-filter-hooks.d.ts +19 -0
  797. package/vendor/@jsonstudio/llms/dist/filters/special/tool-filter-hooks.js +394 -0
  798. package/vendor/@jsonstudio/llms/dist/filters/special/tool-post-constraints.d.ts +31 -0
  799. package/vendor/@jsonstudio/llms/dist/filters/special/tool-post-constraints.js +120 -0
  800. package/vendor/@jsonstudio/llms/dist/filters/types.d.ts +68 -0
  801. package/vendor/@jsonstudio/llms/dist/filters/types.js +3 -0
  802. package/vendor/@jsonstudio/llms/dist/filters/utils/fieldmap-loader.d.ts +2 -0
  803. package/vendor/@jsonstudio/llms/dist/filters/utils/fieldmap-loader.js +16 -0
  804. package/vendor/@jsonstudio/llms/dist/filters/utils/snapshot-writer.d.ts +10 -0
  805. package/vendor/@jsonstudio/llms/dist/filters/utils/snapshot-writer.js +85 -0
  806. package/vendor/@jsonstudio/llms/dist/guidance/index.d.ts +3 -0
  807. package/vendor/@jsonstudio/llms/dist/guidance/index.js +299 -0
  808. package/vendor/@jsonstudio/llms/dist/http/sse-response.d.ts +22 -0
  809. package/vendor/@jsonstudio/llms/dist/http/sse-response.js +103 -0
  810. package/vendor/@jsonstudio/llms/dist/index.d.ts +11 -0
  811. package/vendor/@jsonstudio/llms/dist/index.js +11 -0
  812. package/vendor/@jsonstudio/llms/dist/native/router_hotpath_napi.node +0 -0
  813. package/vendor/@jsonstudio/llms/dist/quota/apikey-reset.d.ts +17 -0
  814. package/vendor/@jsonstudio/llms/dist/quota/apikey-reset.js +43 -0
  815. package/vendor/@jsonstudio/llms/dist/quota/index.d.ts +2 -0
  816. package/vendor/@jsonstudio/llms/dist/quota/index.js +1 -0
  817. package/vendor/@jsonstudio/llms/dist/quota/quota-manager.d.ts +44 -0
  818. package/vendor/@jsonstudio/llms/dist/quota/quota-manager.js +463 -0
  819. package/vendor/@jsonstudio/llms/dist/quota/quota-state.d.ts +6 -0
  820. package/vendor/@jsonstudio/llms/dist/quota/quota-state.js +191 -0
  821. package/vendor/@jsonstudio/llms/dist/quota/types.d.ts +62 -0
  822. package/vendor/@jsonstudio/llms/dist/quota/types.js +1 -0
  823. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/auth-utils.d.ts +6 -0
  824. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/auth-utils.js +288 -0
  825. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/claude-code-helpers.d.ts +11 -0
  826. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/claude-code-helpers.js +18 -0
  827. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/config-defaults.d.ts +5 -0
  828. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/config-defaults.js +13 -0
  829. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/config-normalizers.d.ts +4 -0
  830. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/config-normalizers.js +106 -0
  831. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/profile-builder.d.ts +8 -0
  832. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/profile-builder.js +87 -0
  833. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/provider-normalization.d.ts +44 -0
  834. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/provider-normalization.js +272 -0
  835. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/responses-helpers.d.ts +15 -0
  836. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/responses-helpers.js +65 -0
  837. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/routing-config.d.ts +24 -0
  838. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/routing-config.js +346 -0
  839. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/streaming-helpers.d.ts +19 -0
  840. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/streaming-helpers.js +172 -0
  841. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/utils.d.ts +5 -0
  842. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/utils.js +41 -0
  843. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/web-search-config.d.ts +4 -0
  844. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap/web-search-config.js +156 -0
  845. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap.d.ts +2 -0
  846. package/vendor/@jsonstudio/llms/dist/router/virtual-router/bootstrap.js +329 -0
  847. package/vendor/@jsonstudio/llms/dist/router/virtual-router/classifier.d.ts +10 -0
  848. package/vendor/@jsonstudio/llms/dist/router/virtual-router/classifier.js +187 -0
  849. package/vendor/@jsonstudio/llms/dist/router/virtual-router/context-advisor.d.ts +23 -0
  850. package/vendor/@jsonstudio/llms/dist/router/virtual-router/context-advisor.js +67 -0
  851. package/vendor/@jsonstudio/llms/dist/router/virtual-router/context-weighted.d.ts +31 -0
  852. package/vendor/@jsonstudio/llms/dist/router/virtual-router/context-weighted.js +54 -0
  853. package/vendor/@jsonstudio/llms/dist/router/virtual-router/default-thinking-keywords.d.ts +1 -0
  854. package/vendor/@jsonstudio/llms/dist/router/virtual-router/default-thinking-keywords.js +13 -0
  855. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/antigravity/alias-lease.d.ts +33 -0
  856. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/antigravity/alias-lease.js +257 -0
  857. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/cooldown-manager.d.ts +34 -0
  858. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/cooldown-manager.js +118 -0
  859. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/health/index.d.ts +23 -0
  860. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/health/index.js +724 -0
  861. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/provider-key/parse.d.ts +1 -0
  862. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/provider-key/parse.js +1 -0
  863. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/route-analytics.d.ts +28 -0
  864. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/route-analytics.js +44 -0
  865. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/routing-pools/index.d.ts +13 -0
  866. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/routing-pools/index.js +386 -0
  867. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/routing-state/keys.d.ts +3 -0
  868. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/routing-state/keys.js +30 -0
  869. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/routing-state/metadata.d.ts +6 -0
  870. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/routing-state/metadata.js +132 -0
  871. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/routing-state/store.d.ts +10 -0
  872. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/routing-state/store.js +156 -0
  873. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/sticky-session-manager.d.ts +29 -0
  874. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine/sticky-session-manager.js +55 -0
  875. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-health.d.ts +1 -0
  876. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-health.js +1 -0
  877. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-legacy/config.d.ts +11 -0
  878. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-legacy/config.js +108 -0
  879. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-legacy/direct-model.d.ts +10 -0
  880. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-legacy/direct-model.js +38 -0
  881. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-legacy/health.d.ts +13 -0
  882. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-legacy/health.js +104 -0
  883. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-legacy/helpers.d.ts +16 -0
  884. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-legacy/helpers.js +226 -0
  885. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-legacy/route-utils.d.ts +19 -0
  886. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-legacy/route-utils.js +212 -0
  887. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-legacy/selection-core.d.ts +28 -0
  888. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-legacy/selection-core.js +112 -0
  889. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-legacy/selection-state.d.ts +16 -0
  890. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-legacy/selection-state.js +187 -0
  891. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-legacy/state-accessors.d.ts +21 -0
  892. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-legacy/state-accessors.js +118 -0
  893. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-legacy.d.ts +123 -0
  894. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-legacy.js +245 -0
  895. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-logging.d.ts +67 -0
  896. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-logging.js +356 -0
  897. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/alias-selection.d.ts +15 -0
  898. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/alias-selection.js +118 -0
  899. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/context-weight-multipliers.d.ts +11 -0
  900. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/context-weight-multipliers.js +23 -0
  901. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/direct-provider-model.d.ts +9 -0
  902. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/direct-provider-model.js +49 -0
  903. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/instruction-target.d.ts +6 -0
  904. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/instruction-target.js +54 -0
  905. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/key-parsing.d.ts +8 -0
  906. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/key-parsing.js +47 -0
  907. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/multimodal-capability.d.ts +3 -0
  908. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/multimodal-capability.js +26 -0
  909. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-clock-directive-parser.d.ts +24 -0
  910. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-clock-directive-parser.js +209 -0
  911. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-directives.d.ts +7 -0
  912. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-directives.js +121 -0
  913. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-orchestration-semantics.d.ts +10 -0
  914. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-orchestration-semantics.js +110 -0
  915. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-semantics.d.ts +8 -0
  916. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-semantics.js +281 -0
  917. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-time-tag-semantics.d.ts +1 -0
  918. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-time-tag-semantics.js +25 -0
  919. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminders-semantics.d.ts +4 -0
  920. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminders-semantics.js +44 -0
  921. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-clock-tool-schema-semantics.d.ts +2 -0
  922. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-clock-tool-schema-semantics.js +62 -0
  923. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-governance-semantics.d.ts +49 -0
  924. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-governance-semantics.js +552 -0
  925. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-governed-filter-semantics.d.ts +9 -0
  926. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-governed-filter-semantics.js +64 -0
  927. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-node-result-semantics.d.ts +5 -0
  928. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-node-result-semantics.js +163 -0
  929. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-post-governed-normalization-semantics.d.ts +1 -0
  930. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-post-governed-normalization-semantics.js +49 -0
  931. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-servertool-orchestration-semantics.d.ts +30 -0
  932. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-servertool-orchestration-semantics.js +446 -0
  933. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-web-search-intent-semantics.d.ts +1 -0
  934. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-web-search-intent-semantics.js +49 -0
  935. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-request-filter-semantics.d.ts +1 -0
  936. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-request-filter-semantics.js +54 -0
  937. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-compat-action-semantics.d.ts +22 -0
  938. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-compat-action-semantics.js +559 -0
  939. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-deepseek-web-compat.d.ts +17 -0
  940. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-deepseek-web-compat.js +26 -0
  941. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-bridge-action-semantics.d.ts +276 -0
  942. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-bridge-action-semantics.js +1291 -0
  943. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-bridge-policy-semantics.d.ts +72 -0
  944. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-bridge-policy-semantics.js +405 -0
  945. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-edge-stage-semantics.d.ts +18 -0
  946. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-edge-stage-semantics.js +333 -0
  947. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-governance-semantics.d.ts +30 -0
  948. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-governance-semantics.js +202 -0
  949. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-inbound-outbound-semantics.d.ts +22 -0
  950. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-inbound-outbound-semantics.js +426 -0
  951. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-orchestration-semantics.d.ts +57 -0
  952. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-orchestration-semantics.js +705 -0
  953. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-inbound-semantics.d.ts +53 -0
  954. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-inbound-semantics.js +598 -0
  955. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-outbound-semantics.d.ts +147 -0
  956. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-outbound-semantics.js +570 -0
  957. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-process-semantics.d.ts +26 -0
  958. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-process-semantics.js +148 -0
  959. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-resp-semantics.d.ts +46 -0
  960. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-resp-semantics.js +755 -0
  961. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-semantic-mappers.d.ts +2 -0
  962. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-semantic-mappers.js +83 -0
  963. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-session-identifiers-semantics.d.ts +11 -0
  964. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-session-identifiers-semantics.js +207 -0
  965. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-target-semantics.d.ts +3 -0
  966. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-target-semantics.js +128 -0
  967. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-router-hotpath-analysis.d.ts +57 -0
  968. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-router-hotpath-analysis.js +217 -0
  969. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-router-hotpath-loader.d.ts +5 -0
  970. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-router-hotpath-loader.js +464 -0
  971. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-router-hotpath-policy.d.ts +5 -0
  972. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-router-hotpath-policy.js +18 -0
  973. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-router-hotpath-quota-buckets.d.ts +25 -0
  974. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-router-hotpath-quota-buckets.js +85 -0
  975. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-router-hotpath.d.ts +59 -0
  976. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-router-hotpath.js +117 -0
  977. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-shared-conversion-semantics.d.ts +243 -0
  978. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-shared-conversion-semantics.js +2594 -0
  979. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-snapshot-hooks.d.ts +3 -0
  980. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-snapshot-hooks.js +109 -0
  981. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-virtual-router-alias-selection-semantics.d.ts +16 -0
  982. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-virtual-router-alias-selection-semantics.js +96 -0
  983. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-virtual-router-engine-proxy.d.ts +16 -0
  984. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-virtual-router-engine-proxy.js +14 -0
  985. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-virtual-router-routing-instructions-semantics.d.ts +3 -0
  986. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-virtual-router-routing-instructions-semantics.js +123 -0
  987. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-virtual-router-stop-message-actions-semantics.d.ts +6 -0
  988. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-virtual-router-stop-message-actions-semantics.js +85 -0
  989. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-virtual-router-stop-message-semantics.d.ts +9 -0
  990. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-virtual-router-stop-message-semantics.js +70 -0
  991. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-virtual-router-stop-message-state-semantics.d.ts +2 -0
  992. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-virtual-router-stop-message-state-semantics.js +76 -0
  993. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/route-utils.d.ts +15 -0
  994. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/route-utils.js +248 -0
  995. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/routing-state-filter.d.ts +4 -0
  996. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/routing-state-filter.js +50 -0
  997. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/selection-deps.d.ts +58 -0
  998. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/selection-deps.js +1 -0
  999. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/sticky-pool.d.ts +11 -0
  1000. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/sticky-pool.js +109 -0
  1001. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/tier-load-balancing.d.ts +16 -0
  1002. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/tier-load-balancing.js +120 -0
  1003. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/tier-priority.d.ts +11 -0
  1004. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/tier-priority.js +55 -0
  1005. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/tier-selection-antigravity-session-lease.d.ts +10 -0
  1006. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/tier-selection-antigravity-session-lease.js +231 -0
  1007. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/tier-selection-antigravity-target-split.d.ts +4 -0
  1008. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/tier-selection-antigravity-target-split.js +43 -0
  1009. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/tier-selection-quota-integration.d.ts +29 -0
  1010. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/tier-selection-quota-integration.js +194 -0
  1011. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/tier-selection-select.d.ts +22 -0
  1012. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/tier-selection-select.js +352 -0
  1013. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/tier-selection.d.ts +3 -0
  1014. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection/tier-selection.js +309 -0
  1015. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection.d.ts +1 -0
  1016. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine-selection.js +1 -0
  1017. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine.d.ts +43 -0
  1018. package/vendor/@jsonstudio/llms/dist/router/virtual-router/engine.js +360 -0
  1019. package/vendor/@jsonstudio/llms/dist/router/virtual-router/error-center.d.ts +10 -0
  1020. package/vendor/@jsonstudio/llms/dist/router/virtual-router/error-center.js +39 -0
  1021. package/vendor/@jsonstudio/llms/dist/router/virtual-router/features.d.ts +3 -0
  1022. package/vendor/@jsonstudio/llms/dist/router/virtual-router/features.js +124 -0
  1023. package/vendor/@jsonstudio/llms/dist/router/virtual-router/health-manager.d.ts +23 -0
  1024. package/vendor/@jsonstudio/llms/dist/router/virtual-router/health-manager.js +107 -0
  1025. package/vendor/@jsonstudio/llms/dist/router/virtual-router/health-weighted.d.ts +25 -0
  1026. package/vendor/@jsonstudio/llms/dist/router/virtual-router/health-weighted.js +63 -0
  1027. package/vendor/@jsonstudio/llms/dist/router/virtual-router/load-balancer.d.ts +28 -0
  1028. package/vendor/@jsonstudio/llms/dist/router/virtual-router/load-balancer.js +160 -0
  1029. package/vendor/@jsonstudio/llms/dist/router/virtual-router/message-utils.d.ts +15 -0
  1030. package/vendor/@jsonstudio/llms/dist/router/virtual-router/message-utils.js +235 -0
  1031. package/vendor/@jsonstudio/llms/dist/router/virtual-router/pre-command-file-resolver.d.ts +2 -0
  1032. package/vendor/@jsonstudio/llms/dist/router/virtual-router/pre-command-file-resolver.js +117 -0
  1033. package/vendor/@jsonstudio/llms/dist/router/virtual-router/provider-registry.d.ts +17 -0
  1034. package/vendor/@jsonstudio/llms/dist/router/virtual-router/provider-registry.js +145 -0
  1035. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-instructions/clean.d.ts +3 -0
  1036. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-instructions/clean.js +34 -0
  1037. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-instructions/parse.d.ts +6 -0
  1038. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-instructions/parse.js +24 -0
  1039. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-instructions/state.d.ts +4 -0
  1040. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-instructions/state.js +284 -0
  1041. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-instructions/types.d.ts +74 -0
  1042. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-instructions/types.js +2 -0
  1043. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-instructions.d.ts +5 -0
  1044. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-instructions.js +4 -0
  1045. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-pre-command-actions.d.ts +3 -0
  1046. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-pre-command-actions.js +26 -0
  1047. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-pre-command-parser.d.ts +2 -0
  1048. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-pre-command-parser.js +85 -0
  1049. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-pre-command-state-codec.d.ts +3 -0
  1050. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-pre-command-state-codec.js +24 -0
  1051. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-stop-message-actions.d.ts +2 -0
  1052. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-stop-message-actions.js +99 -0
  1053. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-stop-message-parser.d.ts +3 -0
  1054. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-stop-message-parser.js +19 -0
  1055. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-stop-message-state-codec.d.ts +7 -0
  1056. package/vendor/@jsonstudio/llms/dist/router/virtual-router/routing-stop-message-state-codec.js +121 -0
  1057. package/vendor/@jsonstudio/llms/dist/router/virtual-router/sticky-session-store.d.ts +8 -0
  1058. package/vendor/@jsonstudio/llms/dist/router/virtual-router/sticky-session-store.js +296 -0
  1059. package/vendor/@jsonstudio/llms/dist/router/virtual-router/stop-message-file-resolver.d.ts +2 -0
  1060. package/vendor/@jsonstudio/llms/dist/router/virtual-router/stop-message-file-resolver.js +76 -0
  1061. package/vendor/@jsonstudio/llms/dist/router/virtual-router/stop-message-stage-template-files.d.ts +12 -0
  1062. package/vendor/@jsonstudio/llms/dist/router/virtual-router/stop-message-stage-template-files.js +67 -0
  1063. package/vendor/@jsonstudio/llms/dist/router/virtual-router/stop-message-state-sync.d.ts +17 -0
  1064. package/vendor/@jsonstudio/llms/dist/router/virtual-router/stop-message-state-sync.js +82 -0
  1065. package/vendor/@jsonstudio/llms/dist/router/virtual-router/success-center.d.ts +10 -0
  1066. package/vendor/@jsonstudio/llms/dist/router/virtual-router/success-center.js +32 -0
  1067. package/vendor/@jsonstudio/llms/dist/router/virtual-router/token-counter.d.ts +2 -0
  1068. package/vendor/@jsonstudio/llms/dist/router/virtual-router/token-counter.js +148 -0
  1069. package/vendor/@jsonstudio/llms/dist/router/virtual-router/token-estimator.d.ts +2 -0
  1070. package/vendor/@jsonstudio/llms/dist/router/virtual-router/token-estimator.js +16 -0
  1071. package/vendor/@jsonstudio/llms/dist/router/virtual-router/token-file-scanner.d.ts +24 -0
  1072. package/vendor/@jsonstudio/llms/dist/router/virtual-router/token-file-scanner.js +117 -0
  1073. package/vendor/@jsonstudio/llms/dist/router/virtual-router/tool-signals.d.ts +19 -0
  1074. package/vendor/@jsonstudio/llms/dist/router/virtual-router/tool-signals.js +647 -0
  1075. package/vendor/@jsonstudio/llms/dist/router/virtual-router/types.d.ts +681 -0
  1076. package/vendor/@jsonstudio/llms/dist/router/virtual-router/types.js +34 -0
  1077. package/vendor/@jsonstudio/llms/dist/runtime/user-data-paths.d.ts +5 -0
  1078. package/vendor/@jsonstudio/llms/dist/runtime/user-data-paths.js +43 -0
  1079. package/vendor/@jsonstudio/llms/dist/servertool/clock/config.d.ts +17 -0
  1080. package/vendor/@jsonstudio/llms/dist/servertool/clock/config.js +48 -0
  1081. package/vendor/@jsonstudio/llms/dist/servertool/clock/daemon.d.ts +24 -0
  1082. package/vendor/@jsonstudio/llms/dist/servertool/clock/daemon.js +207 -0
  1083. package/vendor/@jsonstudio/llms/dist/servertool/clock/io.d.ts +2 -0
  1084. package/vendor/@jsonstudio/llms/dist/servertool/clock/io.js +14 -0
  1085. package/vendor/@jsonstudio/llms/dist/servertool/clock/log.d.ts +3 -0
  1086. package/vendor/@jsonstudio/llms/dist/servertool/clock/log.js +13 -0
  1087. package/vendor/@jsonstudio/llms/dist/servertool/clock/ntp.d.ts +18 -0
  1088. package/vendor/@jsonstudio/llms/dist/servertool/clock/ntp.js +318 -0
  1089. package/vendor/@jsonstudio/llms/dist/servertool/clock/paths.d.ts +5 -0
  1090. package/vendor/@jsonstudio/llms/dist/servertool/clock/paths.js +28 -0
  1091. package/vendor/@jsonstudio/llms/dist/servertool/clock/recurrence.d.ts +7 -0
  1092. package/vendor/@jsonstudio/llms/dist/servertool/clock/recurrence.js +248 -0
  1093. package/vendor/@jsonstudio/llms/dist/servertool/clock/session-scope.d.ts +3 -0
  1094. package/vendor/@jsonstudio/llms/dist/servertool/clock/session-scope.js +41 -0
  1095. package/vendor/@jsonstudio/llms/dist/servertool/clock/session-store.d.ts +3 -0
  1096. package/vendor/@jsonstudio/llms/dist/servertool/clock/session-store.js +63 -0
  1097. package/vendor/@jsonstudio/llms/dist/servertool/clock/state.d.ts +9 -0
  1098. package/vendor/@jsonstudio/llms/dist/servertool/clock/state.js +135 -0
  1099. package/vendor/@jsonstudio/llms/dist/servertool/clock/task-store.d.ts +5 -0
  1100. package/vendor/@jsonstudio/llms/dist/servertool/clock/task-store.js +4 -0
  1101. package/vendor/@jsonstudio/llms/dist/servertool/clock/tasks.d.ts +24 -0
  1102. package/vendor/@jsonstudio/llms/dist/servertool/clock/tasks.js +595 -0
  1103. package/vendor/@jsonstudio/llms/dist/servertool/clock/types.d.ts +98 -0
  1104. package/vendor/@jsonstudio/llms/dist/servertool/clock/types.js +1 -0
  1105. package/vendor/@jsonstudio/llms/dist/servertool/continue-execution/log.d.ts +3 -0
  1106. package/vendor/@jsonstudio/llms/dist/servertool/continue-execution/log.js +13 -0
  1107. package/vendor/@jsonstudio/llms/dist/servertool/engine.d.ts +38 -0
  1108. package/vendor/@jsonstudio/llms/dist/servertool/engine.js +1660 -0
  1109. package/vendor/@jsonstudio/llms/dist/servertool/followup-shadow.d.ts +16 -0
  1110. package/vendor/@jsonstudio/llms/dist/servertool/followup-shadow.js +145 -0
  1111. package/vendor/@jsonstudio/llms/dist/servertool/handlers/antigravity-thought-signature-bootstrap.d.ts +1 -0
  1112. package/vendor/@jsonstudio/llms/dist/servertool/handlers/antigravity-thought-signature-bootstrap.js +201 -0
  1113. package/vendor/@jsonstudio/llms/dist/servertool/handlers/apply-patch-guard.d.ts +1 -0
  1114. package/vendor/@jsonstudio/llms/dist/servertool/handlers/apply-patch-guard.js +5 -0
  1115. package/vendor/@jsonstudio/llms/dist/servertool/handlers/clock-auto.d.ts +1 -0
  1116. package/vendor/@jsonstudio/llms/dist/servertool/handlers/clock-auto.js +177 -0
  1117. package/vendor/@jsonstudio/llms/dist/servertool/handlers/clock.d.ts +1 -0
  1118. package/vendor/@jsonstudio/llms/dist/servertool/handlers/clock.js +544 -0
  1119. package/vendor/@jsonstudio/llms/dist/servertool/handlers/compaction-detect.d.ts +1 -0
  1120. package/vendor/@jsonstudio/llms/dist/servertool/handlers/compaction-detect.js +1 -0
  1121. package/vendor/@jsonstudio/llms/dist/servertool/handlers/continue-execution.d.ts +1 -0
  1122. package/vendor/@jsonstudio/llms/dist/servertool/handlers/continue-execution.js +110 -0
  1123. package/vendor/@jsonstudio/llms/dist/servertool/handlers/exec-command-guard.d.ts +1 -0
  1124. package/vendor/@jsonstudio/llms/dist/servertool/handlers/exec-command-guard.js +10 -0
  1125. package/vendor/@jsonstudio/llms/dist/servertool/handlers/followup-message-trimmer.d.ts +16 -0
  1126. package/vendor/@jsonstudio/llms/dist/servertool/handlers/followup-message-trimmer.js +198 -0
  1127. package/vendor/@jsonstudio/llms/dist/servertool/handlers/followup-request-builder.d.ts +25 -0
  1128. package/vendor/@jsonstudio/llms/dist/servertool/handlers/followup-request-builder.js +515 -0
  1129. package/vendor/@jsonstudio/llms/dist/servertool/handlers/followup-sanitize.d.ts +2 -0
  1130. package/vendor/@jsonstudio/llms/dist/servertool/handlers/followup-sanitize.js +7 -0
  1131. package/vendor/@jsonstudio/llms/dist/servertool/handlers/gemini-empty-reply-continue.d.ts +1 -0
  1132. package/vendor/@jsonstudio/llms/dist/servertool/handlers/gemini-empty-reply-continue.js +3 -0
  1133. package/vendor/@jsonstudio/llms/dist/servertool/handlers/iflow-model-error-retry.d.ts +1 -0
  1134. package/vendor/@jsonstudio/llms/dist/servertool/handlers/iflow-model-error-retry.js +92 -0
  1135. package/vendor/@jsonstudio/llms/dist/servertool/handlers/recursive-detection-guard.d.ts +1 -0
  1136. package/vendor/@jsonstudio/llms/dist/servertool/handlers/recursive-detection-guard.js +374 -0
  1137. package/vendor/@jsonstudio/llms/dist/servertool/handlers/review.d.ts +1 -0
  1138. package/vendor/@jsonstudio/llms/dist/servertool/handlers/review.js +181 -0
  1139. package/vendor/@jsonstudio/llms/dist/servertool/handlers/stop-message-auto/blocked-report.d.ts +16 -0
  1140. package/vendor/@jsonstudio/llms/dist/servertool/handlers/stop-message-auto/blocked-report.js +407 -0
  1141. package/vendor/@jsonstudio/llms/dist/servertool/handlers/stop-message-auto/iflow-followup.d.ts +44 -0
  1142. package/vendor/@jsonstudio/llms/dist/servertool/handlers/stop-message-auto/iflow-followup.js +816 -0
  1143. package/vendor/@jsonstudio/llms/dist/servertool/handlers/stop-message-auto/routing-state.d.ts +28 -0
  1144. package/vendor/@jsonstudio/llms/dist/servertool/handlers/stop-message-auto/routing-state.js +123 -0
  1145. package/vendor/@jsonstudio/llms/dist/servertool/handlers/stop-message-auto/runtime-utils.d.ts +81 -0
  1146. package/vendor/@jsonstudio/llms/dist/servertool/handlers/stop-message-auto/runtime-utils.js +355 -0
  1147. package/vendor/@jsonstudio/llms/dist/servertool/handlers/stop-message-auto.d.ts +1 -0
  1148. package/vendor/@jsonstudio/llms/dist/servertool/handlers/stop-message-auto.js +553 -0
  1149. package/vendor/@jsonstudio/llms/dist/servertool/handlers/vision.d.ts +7 -0
  1150. package/vendor/@jsonstudio/llms/dist/servertool/handlers/vision.js +240 -0
  1151. package/vendor/@jsonstudio/llms/dist/servertool/handlers/web-search.d.ts +7 -0
  1152. package/vendor/@jsonstudio/llms/dist/servertool/handlers/web-search.js +926 -0
  1153. package/vendor/@jsonstudio/llms/dist/servertool/log/progress-file.d.ts +14 -0
  1154. package/vendor/@jsonstudio/llms/dist/servertool/log/progress-file.js +88 -0
  1155. package/vendor/@jsonstudio/llms/dist/servertool/pending-session.d.ts +19 -0
  1156. package/vendor/@jsonstudio/llms/dist/servertool/pending-session.js +99 -0
  1157. package/vendor/@jsonstudio/llms/dist/servertool/pre-command-hooks.d.ts +17 -0
  1158. package/vendor/@jsonstudio/llms/dist/servertool/pre-command-hooks.js +491 -0
  1159. package/vendor/@jsonstudio/llms/dist/servertool/reenter-backend.d.ts +23 -0
  1160. package/vendor/@jsonstudio/llms/dist/servertool/reenter-backend.js +20 -0
  1161. package/vendor/@jsonstudio/llms/dist/servertool/registry.d.ts +35 -0
  1162. package/vendor/@jsonstudio/llms/dist/servertool/registry.js +92 -0
  1163. package/vendor/@jsonstudio/llms/dist/servertool/server-side-tools.d.ts +15 -0
  1164. package/vendor/@jsonstudio/llms/dist/servertool/server-side-tools.js +898 -0
  1165. package/vendor/@jsonstudio/llms/dist/servertool/stop-gateway-context.d.ts +14 -0
  1166. package/vendor/@jsonstudio/llms/dist/servertool/stop-gateway-context.js +167 -0
  1167. package/vendor/@jsonstudio/llms/dist/servertool/stop-message-compare-context.d.ts +24 -0
  1168. package/vendor/@jsonstudio/llms/dist/servertool/stop-message-compare-context.js +133 -0
  1169. package/vendor/@jsonstudio/llms/dist/servertool/strip-servertool-calls.d.ts +2 -0
  1170. package/vendor/@jsonstudio/llms/dist/servertool/strip-servertool-calls.js +75 -0
  1171. package/vendor/@jsonstudio/llms/dist/servertool/types.d.ts +235 -0
  1172. package/vendor/@jsonstudio/llms/dist/servertool/types.js +1 -0
  1173. package/vendor/@jsonstudio/llms/dist/sse/index.d.ts +176 -0
  1174. package/vendor/@jsonstudio/llms/dist/sse/index.js +142 -0
  1175. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +15 -0
  1176. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/anthropic-json-to-sse-converter.js +112 -0
  1177. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/chat-json-to-sse-converter.d.ts +80 -0
  1178. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/chat-json-to-sse-converter.js +300 -0
  1179. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/event-generators/chat.d.ts +55 -0
  1180. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/event-generators/chat.js +233 -0
  1181. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/event-generators/responses.d.ts +103 -0
  1182. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/event-generators/responses.js +703 -0
  1183. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/gemini-json-to-sse-converter.d.ts +15 -0
  1184. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/gemini-json-to-sse-converter.js +99 -0
  1185. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/index.d.ts +7 -0
  1186. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/index.js +9 -0
  1187. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/responses-json-to-sse-converter.d.ts +80 -0
  1188. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/responses-json-to-sse-converter.js +322 -0
  1189. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/sequencers/anthropic-sequencer.d.ts +13 -0
  1190. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/sequencers/anthropic-sequencer.js +162 -0
  1191. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/sequencers/chat-sequencer.d.ts +39 -0
  1192. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/sequencers/chat-sequencer.js +264 -0
  1193. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/sequencers/gemini-sequencer.d.ts +10 -0
  1194. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/sequencers/gemini-sequencer.js +95 -0
  1195. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/sequencers/responses-sequencer.d.ts +40 -0
  1196. package/vendor/@jsonstudio/llms/dist/sse/json-to-sse/sequencers/responses-sequencer.js +293 -0
  1197. package/vendor/@jsonstudio/llms/dist/sse/registry/sse-codec-registry.d.ts +32 -0
  1198. package/vendor/@jsonstudio/llms/dist/sse/registry/sse-codec-registry.js +135 -0
  1199. package/vendor/@jsonstudio/llms/dist/sse/shared/chat-serializer.d.ts +4 -0
  1200. package/vendor/@jsonstudio/llms/dist/sse/shared/chat-serializer.js +40 -0
  1201. package/vendor/@jsonstudio/llms/dist/sse/shared/constants.d.ts +272 -0
  1202. package/vendor/@jsonstudio/llms/dist/sse/shared/constants.js +321 -0
  1203. package/vendor/@jsonstudio/llms/dist/sse/shared/reasoning-dispatcher.d.ts +10 -0
  1204. package/vendor/@jsonstudio/llms/dist/sse/shared/reasoning-dispatcher.js +25 -0
  1205. package/vendor/@jsonstudio/llms/dist/sse/shared/responses-output-normalizer.d.ts +13 -0
  1206. package/vendor/@jsonstudio/llms/dist/sse/shared/responses-output-normalizer.js +47 -0
  1207. package/vendor/@jsonstudio/llms/dist/sse/shared/serializers/anthropic-event-serializer.d.ts +2 -0
  1208. package/vendor/@jsonstudio/llms/dist/sse/shared/serializers/anthropic-event-serializer.js +9 -0
  1209. package/vendor/@jsonstudio/llms/dist/sse/shared/serializers/base-serializer.d.ts +158 -0
  1210. package/vendor/@jsonstudio/llms/dist/sse/shared/serializers/base-serializer.js +210 -0
  1211. package/vendor/@jsonstudio/llms/dist/sse/shared/serializers/chat-event-serializer.d.ts +82 -0
  1212. package/vendor/@jsonstudio/llms/dist/sse/shared/serializers/chat-event-serializer.js +275 -0
  1213. package/vendor/@jsonstudio/llms/dist/sse/shared/serializers/gemini-event-serializer.d.ts +2 -0
  1214. package/vendor/@jsonstudio/llms/dist/sse/shared/serializers/gemini-event-serializer.js +5 -0
  1215. package/vendor/@jsonstudio/llms/dist/sse/shared/serializers/index.d.ts +42 -0
  1216. package/vendor/@jsonstudio/llms/dist/sse/shared/serializers/index.js +56 -0
  1217. package/vendor/@jsonstudio/llms/dist/sse/shared/serializers/responses-event-serializer.d.ts +131 -0
  1218. package/vendor/@jsonstudio/llms/dist/sse/shared/serializers/responses-event-serializer.js +375 -0
  1219. package/vendor/@jsonstudio/llms/dist/sse/shared/serializers/types.d.ts +51 -0
  1220. package/vendor/@jsonstudio/llms/dist/sse/shared/serializers/types.js +4 -0
  1221. package/vendor/@jsonstudio/llms/dist/sse/shared/utils.d.ts +254 -0
  1222. package/vendor/@jsonstudio/llms/dist/sse/shared/utils.js +543 -0
  1223. package/vendor/@jsonstudio/llms/dist/sse/shared/writer.d.ts +127 -0
  1224. package/vendor/@jsonstudio/llms/dist/sse/shared/writer.js +321 -0
  1225. package/vendor/@jsonstudio/llms/dist/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +20 -0
  1226. package/vendor/@jsonstudio/llms/dist/sse/sse-to-json/anthropic-sse-to-json-converter.js +204 -0
  1227. package/vendor/@jsonstudio/llms/dist/sse/sse-to-json/builders/anthropic-response-builder.d.ts +16 -0
  1228. package/vendor/@jsonstudio/llms/dist/sse/sse-to-json/builders/anthropic-response-builder.js +258 -0
  1229. package/vendor/@jsonstudio/llms/dist/sse/sse-to-json/builders/response-builder.d.ts +177 -0
  1230. package/vendor/@jsonstudio/llms/dist/sse/sse-to-json/builders/response-builder.js +1135 -0
  1231. package/vendor/@jsonstudio/llms/dist/sse/sse-to-json/chat-sse-to-json-converter.d.ts +119 -0
  1232. package/vendor/@jsonstudio/llms/dist/sse/sse-to-json/chat-sse-to-json-converter.js +850 -0
  1233. package/vendor/@jsonstudio/llms/dist/sse/sse-to-json/gemini-sse-to-json-converter.d.ts +14 -0
  1234. package/vendor/@jsonstudio/llms/dist/sse/sse-to-json/gemini-sse-to-json-converter.js +186 -0
  1235. package/vendor/@jsonstudio/llms/dist/sse/sse-to-json/index.d.ts +7 -0
  1236. package/vendor/@jsonstudio/llms/dist/sse/sse-to-json/index.js +9 -0
  1237. package/vendor/@jsonstudio/llms/dist/sse/sse-to-json/parsers/sse-parser.d.ts +73 -0
  1238. package/vendor/@jsonstudio/llms/dist/sse/sse-to-json/parsers/sse-parser.js +434 -0
  1239. package/vendor/@jsonstudio/llms/dist/sse/sse-to-json/responses-sse-to-json-converter.d.ts +61 -0
  1240. package/vendor/@jsonstudio/llms/dist/sse/sse-to-json/responses-sse-to-json-converter.js +306 -0
  1241. package/vendor/@jsonstudio/llms/dist/sse/types/anthropic-types.d.ts +194 -0
  1242. package/vendor/@jsonstudio/llms/dist/sse/types/anthropic-types.js +8 -0
  1243. package/vendor/@jsonstudio/llms/dist/sse/types/chat-types.d.ts +321 -0
  1244. package/vendor/@jsonstudio/llms/dist/sse/types/chat-types.js +33 -0
  1245. package/vendor/@jsonstudio/llms/dist/sse/types/conversion-context.d.ts +214 -0
  1246. package/vendor/@jsonstudio/llms/dist/sse/types/conversion-context.js +20 -0
  1247. package/vendor/@jsonstudio/llms/dist/sse/types/core-interfaces.d.ts +94 -0
  1248. package/vendor/@jsonstudio/llms/dist/sse/types/core-interfaces.js +5 -0
  1249. package/vendor/@jsonstudio/llms/dist/sse/types/gemini-types.d.ts +135 -0
  1250. package/vendor/@jsonstudio/llms/dist/sse/types/gemini-types.js +5 -0
  1251. package/vendor/@jsonstudio/llms/dist/sse/types/index.d.ts +17 -0
  1252. package/vendor/@jsonstudio/llms/dist/sse/types/index.js +9 -0
  1253. package/vendor/@jsonstudio/llms/dist/sse/types/responses-types.d.ts +334 -0
  1254. package/vendor/@jsonstudio/llms/dist/sse/types/responses-types.js +38 -0
  1255. package/vendor/@jsonstudio/llms/dist/sse/types/sse-events.d.ts +181 -0
  1256. package/vendor/@jsonstudio/llms/dist/sse/types/sse-events.js +150 -0
  1257. package/vendor/@jsonstudio/llms/dist/sse/types/stream-state.d.ts +199 -0
  1258. package/vendor/@jsonstudio/llms/dist/sse/types/stream-state.js +44 -0
  1259. package/vendor/@jsonstudio/llms/dist/sse/types/utility-types.d.ts +234 -0
  1260. package/vendor/@jsonstudio/llms/dist/sse/types/utility-types.js +46 -0
  1261. package/vendor/@jsonstudio/llms/dist/telemetry/stats-center.d.ts +82 -0
  1262. package/vendor/@jsonstudio/llms/dist/telemetry/stats-center.js +308 -0
  1263. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/args-normalizer/default-actions.d.ts +2 -0
  1264. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/args-normalizer/default-actions.js +12 -0
  1265. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/args-normalizer/extract-patch.d.ts +2 -0
  1266. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/args-normalizer/extract-patch.js +15 -0
  1267. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/args-normalizer/index.d.ts +2 -0
  1268. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/args-normalizer/index.js +164 -0
  1269. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/args-normalizer/structured-builders.d.ts +7 -0
  1270. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/args-normalizer/structured-builders.js +85 -0
  1271. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/args-normalizer/types.d.ts +54 -0
  1272. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/args-normalizer/types.js +1 -0
  1273. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/execution-capturer.d.ts +13 -0
  1274. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/execution-capturer.js +181 -0
  1275. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/json/parse-loose.d.ts +3 -0
  1276. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/json/parse-loose.js +139 -0
  1277. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/patch-text/context-diff.d.ts +1 -0
  1278. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/patch-text/context-diff.js +173 -0
  1279. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/patch-text/git-diff.d.ts +1 -0
  1280. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/patch-text/git-diff.js +138 -0
  1281. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/patch-text/looks-like-patch.d.ts +1 -0
  1282. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/patch-text/looks-like-patch.js +11 -0
  1283. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/patch-text/normalize.d.ts +3 -0
  1284. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/patch-text/normalize.js +383 -0
  1285. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/regression-capturer.d.ts +13 -0
  1286. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/regression-capturer.js +113 -0
  1287. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/structured/coercion.d.ts +3 -0
  1288. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/structured/coercion.js +103 -0
  1289. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/structured.d.ts +20 -0
  1290. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/structured.js +537 -0
  1291. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/validation/shared.d.ts +3 -0
  1292. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/validation/shared.js +6 -0
  1293. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/validator.d.ts +8 -0
  1294. package/vendor/@jsonstudio/llms/dist/tools/apply-patch/validator.js +21 -0
  1295. package/vendor/@jsonstudio/llms/dist/tools/apply-patch-structured.d.ts +1 -0
  1296. package/vendor/@jsonstudio/llms/dist/tools/apply-patch-structured.js +1 -0
  1297. package/vendor/@jsonstudio/llms/dist/tools/args-json.d.ts +1 -0
  1298. package/vendor/@jsonstudio/llms/dist/tools/args-json.js +204 -0
  1299. package/vendor/@jsonstudio/llms/dist/tools/exec-command/normalize.d.ts +17 -0
  1300. package/vendor/@jsonstudio/llms/dist/tools/exec-command/normalize.js +116 -0
  1301. package/vendor/@jsonstudio/llms/dist/tools/exec-command/regression-capturer.d.ts +11 -0
  1302. package/vendor/@jsonstudio/llms/dist/tools/exec-command/regression-capturer.js +144 -0
  1303. package/vendor/@jsonstudio/llms/dist/tools/exec-command/validator.d.ts +10 -0
  1304. package/vendor/@jsonstudio/llms/dist/tools/exec-command/validator.js +238 -0
  1305. package/vendor/@jsonstudio/llms/dist/tools/patch-regression-capturer.d.ts +1 -0
  1306. package/vendor/@jsonstudio/llms/dist/tools/patch-regression-capturer.js +1 -0
  1307. package/vendor/@jsonstudio/llms/dist/tools/tool-description-utils.d.ts +5 -0
  1308. package/vendor/@jsonstudio/llms/dist/tools/tool-description-utils.js +50 -0
  1309. package/vendor/@jsonstudio/llms/dist/tools/tool-registry.d.ts +15 -0
  1310. package/vendor/@jsonstudio/llms/dist/tools/tool-registry.js +253 -0
  1311. package/vendor/@jsonstudio/llms/package.json +189 -0
@@ -0,0 +1,1927 @@
1
+ import { Readable } from "node:stream";
2
+ import { isJsonObject, jsonClone } from "../types/json.js";
3
+ import { convertMessagesToBridgeInput } from "../../bridge-message-utils.js";
4
+ import { VirtualRouterEngine } from "../../../router/virtual-router/engine.js";
5
+ import { providerErrorCenter } from "../../../router/virtual-router/error-center.js";
6
+ import { providerSuccessCenter } from "../../../router/virtual-router/success-center.js";
7
+ import { defaultSseCodecRegistry, } from "../../../sse/index.js";
8
+ import { ResponsesFormatAdapter } from "../format-adapters/responses-format-adapter.js";
9
+ import { ResponsesSemanticMapper } from "../semantic-mappers/responses-mapper.js";
10
+ import { AnthropicFormatAdapter } from "../format-adapters/anthropic-format-adapter.js";
11
+ import { AnthropicSemanticMapper } from "../semantic-mappers/anthropic-mapper.js";
12
+ import { GeminiFormatAdapter } from "../format-adapters/gemini-format-adapter.js";
13
+ import { GeminiSemanticMapper } from "../semantic-mappers/gemini-mapper.js";
14
+ import { ChatFormatAdapter } from "../format-adapters/chat-format-adapter.js";
15
+ import { ChatSemanticMapper } from "../semantic-mappers/chat-mapper.js";
16
+ import { createSnapshotRecorder } from "../snapshot-recorder.js";
17
+ import { shouldRecordSnapshots } from "../../snapshot-utils.js";
18
+ import { runReqInboundStage1FormatParse } from "./stages/req_inbound/req_inbound_stage1_format_parse/index.js";
19
+ import { runReqInboundStage2SemanticMap } from "./stages/req_inbound/req_inbound_stage2_semantic_map/index.js";
20
+ import { runChatContextCapture, captureResponsesContextSnapshot, } from "./stages/req_inbound/req_inbound_stage3_context_capture/index.js";
21
+ import { normalizeReqInboundToolCallIdStyleWithNative } from "../../../router/virtual-router/engine-selection/native-hub-pipeline-req-inbound-semantics.js";
22
+ import { createResponsesContextCapture, createNoopContextCapture, } from "./stages/req_inbound/req_inbound_stage3_context_capture/context-factories.js";
23
+ import { runReqProcessStage1ToolGovernance } from "./stages/req_process/req_process_stage1_tool_governance/index.js";
24
+ import { runReqProcessStage2RouteSelect } from "./stages/req_process/req_process_stage2_route_select/index.js";
25
+ import { runReqOutboundStage1SemanticMap } from "./stages/req_outbound/req_outbound_stage1_semantic_map/index.js";
26
+ import { runReqOutboundStage2FormatBuild } from "./stages/req_outbound/req_outbound_stage2_format_build/index.js";
27
+ import { runReqOutboundStage3Compat } from "./stages/req_outbound/req_outbound_stage3_compat/index.js";
28
+ import { extractSessionIdentifiersFromMetadata } from "./session-identifiers.js";
29
+ import { computeRequestTokens } from "../../../router/virtual-router/token-estimator.js";
30
+ import { estimateSessionBoundTokens } from "../process/chat-process-session-usage.js";
31
+ import { annotatePassthroughGovernanceSkipWithNative, attachPassthroughProviderInputAuditWithNative, buildPassthroughAuditWithNative, applyOutboundStreamPreferenceWithNative, normalizeHubEndpointWithNative, extractAdapterContextMetadataFieldsWithNative, resolveApplyPatchToolModeFromToolsWithNative, resolveHubClientProtocolWithNative, resolveHubPolicyOverrideFromMetadataWithNative, resolveHubProviderProtocolWithNative, resolveOutboundStreamIntentWithNative, resolveHubShadowCompareConfigWithNative, resolveActiveProcessModeWithNative, findMappableSemanticsKeysWithNative, resolveHubSseProtocolFromMetadataWithNative, resolveStopMessageRouterMetadataWithNative, runHubPipelineOrchestrationWithNative, } from "../../../router/virtual-router/engine-selection/native-hub-pipeline-orchestration-semantics.js";
32
+ import { normalizeAliasMapWithNative, resolveAliasMapFromRespSemanticsWithNative, } from "../../../router/virtual-router/engine-selection/native-hub-pipeline-resp-semantics.js";
33
+ import { isCompactionRequest } from "../../compaction-detect.js";
34
+ import { applyHubProviderOutboundPolicy, recordHubPolicyObservation, setHubPolicyRuntimePolicy, } from "../policy/policy-engine.js";
35
+ import { applyProviderOutboundToolSurface, } from "../tool-surface/tool-surface-engine.js";
36
+ import { cloneRuntimeMetadata, ensureRuntimeMetadata, readRuntimeMetadata, } from "../../runtime-metadata.js";
37
+ import { containsImageAttachment, stripHistoricalImageAttachments, stripHistoricalVisualToolOutputs, repairIncompleteToolCalls, } from "../process/chat-process-media.js";
38
+ import { measureHubStage, logHubStageTiming, clearHubStageTiming, } from "./hub-stage-timing.js";
39
+ function isTruthyEnv(value) {
40
+ const v = typeof value === "string" ? value.trim().toLowerCase() : "";
41
+ return v === "1" || v === "true" || v === "yes" || v === "on";
42
+ }
43
+ function resolveApplyPatchToolModeFromEnv() {
44
+ const rawMode = String(process.env.RCC_APPLY_PATCH_TOOL_MODE ||
45
+ process.env.ROUTECODEX_APPLY_PATCH_TOOL_MODE ||
46
+ "")
47
+ .trim()
48
+ .toLowerCase();
49
+ if (rawMode === "freeform")
50
+ return "freeform";
51
+ if (rawMode === "schema" || rawMode === "json_schema")
52
+ return "schema";
53
+ const freeformFlag = process.env.RCC_APPLY_PATCH_FREEFORM ||
54
+ process.env.ROUTECODEX_APPLY_PATCH_FREEFORM;
55
+ if (isTruthyEnv(freeformFlag))
56
+ return "freeform";
57
+ return undefined;
58
+ }
59
+ function applyChatProcessEntryMediaCleanup(request) {
60
+ return {
61
+ ...request,
62
+ messages: repairIncompleteToolCalls(stripHistoricalVisualToolOutputs(stripHistoricalImageAttachments(request.messages))),
63
+ };
64
+ }
65
+ function readResponsesResumeFromMetadata(metadata) {
66
+ if (!metadata || typeof metadata !== "object") {
67
+ return undefined;
68
+ }
69
+ const resume = metadata.responsesResume;
70
+ return resume && isJsonObject(resume)
71
+ ? resume
72
+ : undefined;
73
+ }
74
+ function readResponsesResumeFromRequestSemantics(request) {
75
+ try {
76
+ const semantics = request?.semantics;
77
+ const responses = semantics &&
78
+ typeof semantics === "object" &&
79
+ !Array.isArray(semantics) &&
80
+ semantics.responses &&
81
+ typeof semantics.responses === "object" &&
82
+ !Array.isArray(semantics.responses)
83
+ ? semantics.responses
84
+ : undefined;
85
+ const resume = responses &&
86
+ responses.resume &&
87
+ typeof responses.resume === "object" &&
88
+ !Array.isArray(responses.resume)
89
+ ? responses.resume
90
+ : undefined;
91
+ return resume;
92
+ }
93
+ catch {
94
+ return undefined;
95
+ }
96
+ }
97
+ function liftResponsesResumeIntoSemantics(request, metadata) {
98
+ const resumeMeta = readResponsesResumeFromMetadata(metadata);
99
+ if (!resumeMeta) {
100
+ return request;
101
+ }
102
+ const next = {
103
+ ...request,
104
+ semantics: {
105
+ ...(request.semantics ??
106
+ {}),
107
+ },
108
+ };
109
+ const semantics = next.semantics;
110
+ if (!semantics.responses ||
111
+ typeof semantics.responses !== "object" ||
112
+ Array.isArray(semantics.responses)) {
113
+ semantics.responses = {};
114
+ }
115
+ const responsesNode = semantics.responses;
116
+ if (responsesNode.resume === undefined) {
117
+ responsesNode.resume = jsonClone(resumeMeta);
118
+ }
119
+ delete metadata.responsesResume;
120
+ return next;
121
+ }
122
+ function syncResponsesContextFromCanonicalMessages(request) {
123
+ const semantics = request?.semantics;
124
+ const responsesNode = semantics &&
125
+ typeof semantics === "object" &&
126
+ !Array.isArray(semantics) &&
127
+ semantics.responses &&
128
+ typeof semantics.responses === "object" &&
129
+ !Array.isArray(semantics.responses)
130
+ ? semantics.responses
131
+ : undefined;
132
+ const contextNode = responsesNode &&
133
+ responsesNode.context &&
134
+ typeof responsesNode.context === "object" &&
135
+ !Array.isArray(responsesNode.context)
136
+ ? responsesNode.context
137
+ : undefined;
138
+ if (!contextNode) {
139
+ return request;
140
+ }
141
+ const bridge = convertMessagesToBridgeInput({
142
+ messages: request.messages ?? [],
143
+ tools: Array.isArray(request.tools)
144
+ ? request.tools
145
+ : undefined,
146
+ });
147
+ return {
148
+ ...request,
149
+ semantics: {
150
+ ...semantics,
151
+ responses: {
152
+ ...responsesNode,
153
+ context: {
154
+ ...contextNode,
155
+ input: jsonClone(bridge.input),
156
+ originalSystemMessages: jsonClone(bridge.originalSystemMessages),
157
+ },
158
+ },
159
+ },
160
+ };
161
+ }
162
+ function resolveApplyPatchToolModeFromTools(toolsRaw) {
163
+ return resolveApplyPatchToolModeFromToolsWithNative(toolsRaw);
164
+ }
165
+ function extractHubPolicyOverride(metadata) {
166
+ const parsed = resolveHubPolicyOverrideFromMetadataWithNative(metadata);
167
+ if (!parsed) {
168
+ return undefined;
169
+ }
170
+ return {
171
+ mode: parsed.mode,
172
+ ...(parsed.sampleRate !== undefined
173
+ ? { sampleRate: parsed.sampleRate }
174
+ : {}),
175
+ };
176
+ }
177
+ function propagateAdapterContextMetadataFields(adapterContext, metadata, keys) {
178
+ const picked = extractAdapterContextMetadataFieldsWithNative(metadata, keys);
179
+ Object.assign(adapterContext, picked);
180
+ }
181
+ function resolveStopMessageRouterMetadata(metadata) {
182
+ return resolveStopMessageRouterMetadataWithNative(metadata);
183
+ }
184
+ function isSearchRouteId(routeId) {
185
+ const normalized = typeof routeId === "string" ? routeId.trim().toLowerCase() : "";
186
+ return normalized.startsWith("web_search") || normalized.startsWith("search");
187
+ }
188
+ function isCanonicalWebSearchToolDefinition(tool) {
189
+ if (!tool || typeof tool !== "object" || Array.isArray(tool)) {
190
+ return false;
191
+ }
192
+ const row = tool;
193
+ const rawType = typeof row.type === "string" ? row.type.trim().toLowerCase() : "";
194
+ if (rawType === "web_search_20250305" || rawType === "web_search") {
195
+ return true;
196
+ }
197
+ const fnNode = row.function &&
198
+ typeof row.function === "object" &&
199
+ !Array.isArray(row.function)
200
+ ? row.function
201
+ : undefined;
202
+ const name = typeof fnNode?.name === "string"
203
+ ? fnNode.name.trim().toLowerCase()
204
+ : typeof row.name === "string"
205
+ ? row.name.trim().toLowerCase()
206
+ : "";
207
+ return name === "web_search" || name === "websearch" || name === "web-search";
208
+ }
209
+ function maybeApplyDirectBuiltinWebSearchTool(providerPayload, adapterContext, providerProtocol) {
210
+ if (providerProtocol !== "anthropic-messages") {
211
+ return providerPayload;
212
+ }
213
+ if (!isSearchRouteId(adapterContext.routeId)) {
214
+ return providerPayload;
215
+ }
216
+ const modelId = typeof providerPayload.model === "string"
217
+ ? providerPayload.model.trim()
218
+ : "";
219
+ if (!modelId) {
220
+ return providerPayload;
221
+ }
222
+ const rt = readRuntimeMetadata(adapterContext);
223
+ const webSearch = rt &&
224
+ typeof rt.webSearch === "object" &&
225
+ rt.webSearch &&
226
+ !Array.isArray(rt.webSearch)
227
+ ? rt.webSearch
228
+ : undefined;
229
+ const enginesRaw = Array.isArray(webSearch?.engines)
230
+ ? webSearch?.engines
231
+ : [];
232
+ const matchedEngine = enginesRaw.find((entry) => {
233
+ if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
234
+ return false;
235
+ }
236
+ const row = entry;
237
+ const executionMode = typeof row.executionMode === "string"
238
+ ? row.executionMode.trim().toLowerCase()
239
+ : "";
240
+ if (executionMode !== "direct") {
241
+ return false;
242
+ }
243
+ const directActivation = typeof row.directActivation === "string"
244
+ ? row.directActivation.trim().toLowerCase()
245
+ : "route";
246
+ if (directActivation !== "builtin") {
247
+ return false;
248
+ }
249
+ const configuredModelId = typeof row.modelId === "string" ? row.modelId.trim() : "";
250
+ if (configuredModelId && configuredModelId === modelId) {
251
+ return true;
252
+ }
253
+ const providerKey = typeof row.providerKey === "string" ? row.providerKey.trim() : "";
254
+ return providerKey.endsWith(`.${modelId}`);
255
+ });
256
+ if (!matchedEngine) {
257
+ return providerPayload;
258
+ }
259
+ const rawMaxUses = typeof matchedEngine.maxUses === "number"
260
+ ? matchedEngine.maxUses
261
+ : Number(matchedEngine.maxUses);
262
+ const maxUses = Number.isFinite(rawMaxUses) && rawMaxUses > 0 ? Math.floor(rawMaxUses) : 2;
263
+ const builtinTool = {
264
+ type: "web_search_20250305",
265
+ name: "web_search",
266
+ max_uses: maxUses,
267
+ };
268
+ const tools = Array.isArray(providerPayload.tools)
269
+ ? providerPayload.tools
270
+ : [];
271
+ let replaced = false;
272
+ const nextTools = [];
273
+ for (const tool of tools) {
274
+ if (!replaced && isCanonicalWebSearchToolDefinition(tool)) {
275
+ nextTools.push(builtinTool);
276
+ replaced = true;
277
+ continue;
278
+ }
279
+ if (isCanonicalWebSearchToolDefinition(tool)) {
280
+ continue;
281
+ }
282
+ nextTools.push(tool);
283
+ }
284
+ if (!replaced) {
285
+ nextTools.unshift(builtinTool);
286
+ }
287
+ providerPayload.tools = nextTools;
288
+ return providerPayload;
289
+ }
290
+ function extractHubShadowCompareConfig(metadata) {
291
+ const parsed = resolveHubShadowCompareConfigWithNative(metadata);
292
+ if (!parsed) {
293
+ return undefined;
294
+ }
295
+ return { baselineMode: parsed.baselineMode };
296
+ }
297
+ function buildPassthroughAudit(rawInbound, providerProtocol) {
298
+ return buildPassthroughAuditWithNative(rawInbound, providerProtocol);
299
+ }
300
+ function annotatePassthroughGovernanceSkip(audit) {
301
+ const next = annotatePassthroughGovernanceSkipWithNative(audit);
302
+ for (const key of Object.keys(audit)) {
303
+ delete audit[key];
304
+ }
305
+ Object.assign(audit, next);
306
+ }
307
+ function attachPassthroughProviderInputAudit(audit, providerPayload, providerProtocol) {
308
+ const next = attachPassthroughProviderInputAuditWithNative(audit, providerPayload, providerProtocol);
309
+ for (const key of Object.keys(audit)) {
310
+ delete audit[key];
311
+ }
312
+ Object.assign(audit, next);
313
+ }
314
+ function resolveActiveProcessMode(baseMode, messages) {
315
+ return resolveActiveProcessModeWithNative(baseMode, messages);
316
+ }
317
+ export class HubPipeline {
318
+ routerEngine;
319
+ config;
320
+ unsubscribeProviderErrors;
321
+ unsubscribeProviderSuccess;
322
+ constructor(config) {
323
+ this.config = config;
324
+ this.routerEngine = new VirtualRouterEngine({
325
+ healthStore: config.healthStore,
326
+ routingStateStore: config.routingStateStore,
327
+ quotaView: config.quotaView,
328
+ });
329
+ this.routerEngine.initialize(config.virtualRouter);
330
+ setHubPolicyRuntimePolicy(config.policy);
331
+ try {
332
+ this.unsubscribeProviderErrors = providerErrorCenter.subscribe((event) => {
333
+ try {
334
+ this.routerEngine.handleProviderError(event);
335
+ }
336
+ catch {
337
+ // ignore subscriber errors
338
+ }
339
+ });
340
+ }
341
+ catch {
342
+ this.unsubscribeProviderErrors = undefined;
343
+ }
344
+ try {
345
+ this.unsubscribeProviderSuccess = providerSuccessCenter.subscribe((event) => {
346
+ try {
347
+ this.routerEngine.handleProviderSuccess(event);
348
+ }
349
+ catch {
350
+ // ignore subscriber errors
351
+ }
352
+ });
353
+ }
354
+ catch {
355
+ this.unsubscribeProviderSuccess = undefined;
356
+ }
357
+ }
358
+ updateRuntimeDeps(deps) {
359
+ if (!deps || typeof deps !== "object") {
360
+ return;
361
+ }
362
+ if ("healthStore" in deps) {
363
+ this.config.healthStore = deps.healthStore ?? undefined;
364
+ }
365
+ if ("routingStateStore" in deps) {
366
+ this.config.routingStateStore = (deps.routingStateStore ??
367
+ undefined);
368
+ }
369
+ if ("quotaView" in deps) {
370
+ this.config.quotaView = deps.quotaView ?? undefined;
371
+ }
372
+ try {
373
+ this.routerEngine.updateDeps({
374
+ healthStore: this.config.healthStore ?? null,
375
+ routingStateStore: (this.config.routingStateStore ?? null),
376
+ quotaView: this.config.quotaView ?? null,
377
+ });
378
+ }
379
+ catch {
380
+ // best-effort: runtime deps updates must never break routing
381
+ }
382
+ }
383
+ updateVirtualRouterConfig(nextConfig) {
384
+ if (!nextConfig || typeof nextConfig !== "object") {
385
+ throw new Error("HubPipeline updateVirtualRouterConfig requires VirtualRouterConfig payload");
386
+ }
387
+ this.config.virtualRouter = nextConfig;
388
+ this.routerEngine.initialize(nextConfig);
389
+ }
390
+ dispose() {
391
+ if (this.unsubscribeProviderErrors) {
392
+ try {
393
+ this.unsubscribeProviderErrors();
394
+ }
395
+ catch {
396
+ // ignore dispose failures
397
+ }
398
+ this.unsubscribeProviderErrors = undefined;
399
+ }
400
+ if (this.unsubscribeProviderSuccess) {
401
+ try {
402
+ this.unsubscribeProviderSuccess();
403
+ }
404
+ catch {
405
+ // ignore dispose failures
406
+ }
407
+ this.unsubscribeProviderSuccess = undefined;
408
+ }
409
+ }
410
+ async executeRequestStagePipeline(normalized, hooks) {
411
+ const semanticMapper = hooks.createSemanticMapper();
412
+ const rawRequest = this.asJsonObject(normalized.payload);
413
+ // Detect applyPatchToolMode (runtime/tooling hint). Client tool schemas are captured as chat semantics
414
+ // in req_inbound_stage2_semantic_map; they must not be stored in metadata.
415
+ try {
416
+ const toolsRaw = Array.isArray(rawRequest?.tools)
417
+ ? rawRequest.tools
418
+ : null;
419
+ const applyPatchToolMode = resolveApplyPatchToolModeFromEnv() ??
420
+ resolveApplyPatchToolModeFromTools(toolsRaw);
421
+ if (applyPatchToolMode) {
422
+ normalized.metadata = normalized.metadata || {};
423
+ const rt = ensureRuntimeMetadata(normalized.metadata);
424
+ rt.applyPatchToolMode = applyPatchToolMode;
425
+ }
426
+ }
427
+ catch {
428
+ // best-effort: do not block request handling due to tool scan failures
429
+ }
430
+ if (isCompactionRequest(rawRequest)) {
431
+ normalized.metadata = normalized.metadata || {};
432
+ const rt = ensureRuntimeMetadata(normalized.metadata);
433
+ rt.compactionRequest = true;
434
+ }
435
+ const effectivePolicy = normalized.policyOverride ?? this.config.policy;
436
+ const shadowCompareBaselineMode = normalized.shadowCompare?.baselineMode;
437
+ const inboundAdapterContext = this.buildAdapterContext(normalized);
438
+ const inboundRecorder = this.maybeCreateStageRecorder(inboundAdapterContext, normalized.entryEndpoint, {
439
+ disableSnapshots: normalized.disableSnapshots === true,
440
+ });
441
+ const inboundStart = Date.now();
442
+ // Phase 0: observe client inbound payload violations (best-effort; no rewrites).
443
+ recordHubPolicyObservation({
444
+ policy: effectivePolicy,
445
+ providerProtocol: this.resolveClientProtocol(normalized.entryEndpoint),
446
+ payload: rawRequest,
447
+ phase: "client_inbound",
448
+ stageRecorder: inboundRecorder,
449
+ requestId: normalized.id,
450
+ });
451
+ const formatEnvelope = await measureHubStage(normalized.id, "req_inbound.stage1_format_parse", () => runReqInboundStage1FormatParse({
452
+ rawRequest,
453
+ adapterContext: inboundAdapterContext,
454
+ stageRecorder: inboundRecorder,
455
+ }));
456
+ const responsesResumeFromMetadata = readResponsesResumeFromMetadata(normalized.metadata);
457
+ const inboundStage2 = await measureHubStage(normalized.id, "req_inbound.stage2_semantic_map", () => runReqInboundStage2SemanticMap({
458
+ adapterContext: inboundAdapterContext,
459
+ formatEnvelope,
460
+ semanticMapper,
461
+ ...(responsesResumeFromMetadata
462
+ ? { responsesResume: responsesResumeFromMetadata }
463
+ : {}),
464
+ stageRecorder: inboundRecorder,
465
+ }));
466
+ // responsesResume must not enter chat_process as metadata; it is lifted into chat.semantics in stage2.
467
+ if (responsesResumeFromMetadata &&
468
+ normalized.metadata &&
469
+ Object.prototype.hasOwnProperty.call(normalized.metadata, "responsesResume")) {
470
+ delete normalized.metadata.responsesResume;
471
+ }
472
+ const contextSnapshot = await measureHubStage(normalized.id, "req_inbound.stage3_context_capture", () => {
473
+ if (inboundStage2.responsesContext) {
474
+ return inboundStage2.responsesContext;
475
+ }
476
+ return hooks.captureContext({
477
+ rawRequest,
478
+ adapterContext: inboundAdapterContext,
479
+ stageRecorder: inboundRecorder,
480
+ });
481
+ });
482
+ let standardizedRequest = applyChatProcessEntryMediaCleanup(inboundStage2.standardizedRequest);
483
+ try {
484
+ const rt = readRuntimeMetadata(normalized.metadata);
485
+ const mode = String(rt?.applyPatchToolMode || "")
486
+ .trim()
487
+ .toLowerCase();
488
+ if (mode === "freeform" || mode === "schema") {
489
+ standardizedRequest.metadata.applyPatchToolMode = mode;
490
+ }
491
+ }
492
+ catch {
493
+ // best-effort: do not block request handling due to metadata propagation failures
494
+ }
495
+ const activeProcessMode = resolveActiveProcessMode(normalized.processMode, standardizedRequest.messages);
496
+ if (activeProcessMode !== normalized.processMode) {
497
+ normalized.processMode = activeProcessMode;
498
+ }
499
+ const passthroughAudit = activeProcessMode === "passthrough"
500
+ ? buildPassthroughAudit(rawRequest, normalized.providerProtocol)
501
+ : undefined;
502
+ const inboundEnd = Date.now();
503
+ const nodeResults = [];
504
+ nodeResults.push({
505
+ id: "req_inbound",
506
+ success: true,
507
+ metadata: {
508
+ node: "req_inbound",
509
+ executionTime: inboundEnd - inboundStart,
510
+ startTime: inboundStart,
511
+ endTime: inboundEnd,
512
+ dataProcessed: {
513
+ messages: standardizedRequest.messages.length,
514
+ tools: standardizedRequest.tools?.length ?? 0,
515
+ },
516
+ },
517
+ });
518
+ // 将 VirtualRouter 层的 servertool 相关配置注入到 metadata,保证响应侧
519
+ // servertool(第三跳 reenter)也能访问到相同配置,即使当前 route 标记为 passthrough。
520
+ const metaBase = {
521
+ ...(normalized.metadata ?? {}),
522
+ };
523
+ const rtBase = ensureRuntimeMetadata(metaBase);
524
+ const webSearchConfig = this.config.virtualRouter?.webSearch;
525
+ if (webSearchConfig) {
526
+ rtBase.webSearch = webSearchConfig;
527
+ }
528
+ const execCommandGuard = this.config.virtualRouter?.execCommandGuard;
529
+ if (execCommandGuard) {
530
+ rtBase.execCommandGuard = execCommandGuard;
531
+ }
532
+ const clockConfig = this.config.virtualRouter?.clock;
533
+ if (clockConfig) {
534
+ rtBase.clock = clockConfig;
535
+ }
536
+ normalized.metadata = metaBase;
537
+ let processedRequest;
538
+ if (activeProcessMode !== "passthrough") {
539
+ assertNoMappableSemanticsInMetadata(metaBase, "chat_process.request.entry");
540
+ const processResult = await measureHubStage(normalized.id, "req_process.stage1_tool_governance", () => runReqProcessStage1ToolGovernance({
541
+ request: standardizedRequest,
542
+ rawPayload: rawRequest,
543
+ metadata: metaBase,
544
+ entryEndpoint: normalized.entryEndpoint,
545
+ requestId: normalized.id,
546
+ stageRecorder: inboundRecorder,
547
+ }));
548
+ processedRequest = processResult.processedRequest;
549
+ // Surface request-side clock reservation into pipeline metadata so response conversion
550
+ // can commit delivery only after a successful response is produced.
551
+ try {
552
+ const reservation = processedRequest?.metadata
553
+ ?.__clockReservation;
554
+ if (reservation && typeof reservation === "object") {
555
+ metaBase.__clockReservation =
556
+ reservation;
557
+ }
558
+ }
559
+ catch {
560
+ // best-effort: do not block request handling due to metadata propagation failures
561
+ }
562
+ if (processResult.nodeResult) {
563
+ nodeResults.push(this.convertProcessNodeResult("chat_process.req.stage4.tool_governance", processResult.nodeResult));
564
+ }
565
+ }
566
+ else {
567
+ nodeResults.push({
568
+ id: "chat_process.req.stage4.tool_governance",
569
+ success: true,
570
+ metadata: {
571
+ node: "chat_process.req.stage4.tool_governance",
572
+ skipped: true,
573
+ reason: "process_mode_passthrough_parse_record_only",
574
+ },
575
+ });
576
+ if (passthroughAudit) {
577
+ annotatePassthroughGovernanceSkip(passthroughAudit);
578
+ }
579
+ }
580
+ let workingRequest = syncResponsesContextFromCanonicalMessages(processedRequest ?? standardizedRequest);
581
+ // 使用与 VirtualRouter 一致的 tiktoken 计数逻辑,对标准化请求进行一次
582
+ // 上下文 token 估算,供后续 usage 归一化与统计使用。
583
+ try {
584
+ const estimatedTokens = estimateSessionBoundTokens(workingRequest, normalized.metadata) ?? computeRequestTokens(workingRequest, "");
585
+ if (typeof estimatedTokens === "number" &&
586
+ Number.isFinite(estimatedTokens) &&
587
+ estimatedTokens > 0) {
588
+ normalized.metadata = normalized.metadata || {};
589
+ normalized.metadata.estimatedInputTokens =
590
+ estimatedTokens;
591
+ }
592
+ }
593
+ catch {
594
+ // 估算失败不应影响主流程
595
+ }
596
+ const normalizedMeta = normalized.metadata;
597
+ // responsesResume is a client-protocol semantic (/v1/responses tool loop) and must live in chat.semantics.
598
+ // Do not read it from metadata once entering chat_process.
599
+ const responsesResume = readResponsesResumeFromRequestSemantics(workingRequest);
600
+ const stdMetadata = workingRequest?.metadata;
601
+ const hasImageAttachment = containsImageAttachment((workingRequest.messages ?? []));
602
+ const serverToolRequired = stdMetadata?.webSearchEnabled === true ||
603
+ stdMetadata?.serverToolRequired === true;
604
+ const sessionIdentifiers = extractSessionIdentifiersFromMetadata(normalized.metadata);
605
+ // 将从 metadata / clientHeaders 中解析出的会话标识同步回 normalized.metadata,
606
+ // 便于后续 AdapterContext(响应侧 servertool)也能访问到相同的 sessionId /
607
+ // conversationId,用于 sticky-session 相关逻辑(例如 stopMessage)。
608
+ if (sessionIdentifiers.sessionId &&
609
+ normalized.metadata &&
610
+ typeof normalized.metadata === "object") {
611
+ normalized.metadata.sessionId =
612
+ sessionIdentifiers.sessionId;
613
+ }
614
+ if (sessionIdentifiers.conversationId &&
615
+ normalized.metadata &&
616
+ typeof normalized.metadata === "object") {
617
+ normalized.metadata.conversationId =
618
+ sessionIdentifiers.conversationId;
619
+ }
620
+ const disableStickyRoutes = readRuntimeMetadata(normalized.metadata)?.disableStickyRoutes === true;
621
+ const stopMessageRouterMetadata = resolveStopMessageRouterMetadata(normalized.metadata);
622
+ const estimatedInputTokens = (() => {
623
+ const value = normalized.metadata
624
+ ?.estimatedInputTokens;
625
+ return typeof value === "number" && Number.isFinite(value)
626
+ ? value
627
+ : undefined;
628
+ })();
629
+ const metadataInput = {
630
+ requestId: normalized.id,
631
+ entryEndpoint: normalized.entryEndpoint,
632
+ processMode: normalized.processMode,
633
+ stream: normalized.stream,
634
+ direction: normalized.direction,
635
+ providerProtocol: normalized.providerProtocol,
636
+ routeHint: normalized.routeHint,
637
+ stage: normalized.stage,
638
+ responsesResume: responsesResume,
639
+ ...(estimatedInputTokens !== undefined ? { estimatedInputTokens } : {}),
640
+ ...(disableStickyRoutes ? { disableStickyRoutes: true } : {}),
641
+ ...(serverToolRequired ? { serverToolRequired: true } : {}),
642
+ ...(sessionIdentifiers.sessionId
643
+ ? { sessionId: sessionIdentifiers.sessionId }
644
+ : {}),
645
+ ...(sessionIdentifiers.conversationId
646
+ ? { conversationId: sessionIdentifiers.conversationId }
647
+ : {}),
648
+ ...stopMessageRouterMetadata,
649
+ };
650
+ logHubStageTiming(normalized.id, "req_process.stage2_route_select", "start");
651
+ const routing = runReqProcessStage2RouteSelect({
652
+ routerEngine: this.routerEngine,
653
+ request: workingRequest,
654
+ metadataInput,
655
+ normalizedMetadata: normalized.metadata,
656
+ stageRecorder: inboundRecorder,
657
+ });
658
+ logHubStageTiming(normalized.id, "req_process.stage2_route_select", "completed");
659
+ // Emit virtual router hit log for debugging (orange [virtual-router] ...)
660
+ try {
661
+ const routeName = routing.decision?.routeName;
662
+ const providerKey = routing.target?.providerKey;
663
+ const modelId = workingRequest.model;
664
+ const logger = (normalized.metadata &&
665
+ normalized.metadata.logger);
666
+ if (logger &&
667
+ typeof logger.logVirtualRouterHit === "function" &&
668
+ routeName &&
669
+ providerKey) {
670
+ logger.logVirtualRouterHit(routeName, providerKey, typeof modelId === "string" ? modelId : undefined, typeof sessionIdentifiers.sessionId === "string"
671
+ ? sessionIdentifiers.sessionId
672
+ : undefined);
673
+ }
674
+ }
675
+ catch {
676
+ // logging must not break routing
677
+ }
678
+ const outboundStream = this.resolveOutboundStreamIntent(routing.target?.streaming);
679
+ workingRequest = this.applyOutboundStreamPreference(workingRequest, outboundStream, activeProcessMode);
680
+ this.applyMaxTokensPolicy(workingRequest, routing.target);
681
+ const outboundAdapterContext = this.buildAdapterContext(normalized, routing.target);
682
+ if (routing.target?.compatibilityProfile) {
683
+ outboundAdapterContext.compatibilityProfile =
684
+ routing.target.compatibilityProfile;
685
+ }
686
+ const outboundProtocol = outboundAdapterContext.providerProtocol;
687
+ if (activeProcessMode === "passthrough" &&
688
+ outboundProtocol !== normalized.providerProtocol) {
689
+ throw new Error(`[HubPipeline] passthrough requires matching protocols: entry=${normalized.providerProtocol}, target=${outboundProtocol}`);
690
+ }
691
+ // Snapshots must be grouped by entry endpoint (client-facing protocol), not by provider protocol.
692
+ // Otherwise one request would be split across multiple folders (e.g. openai-responses + anthropic-messages),
693
+ // which breaks codex-samples correlation.
694
+ const outboundRecorder = this.maybeCreateStageRecorder(outboundAdapterContext, normalized.entryEndpoint, {
695
+ disableSnapshots: normalized.disableSnapshots === true,
696
+ });
697
+ const outboundStart = Date.now();
698
+ let providerPayload;
699
+ let shadowBaselineProviderPayload;
700
+ if (activeProcessMode === "passthrough") {
701
+ providerPayload = jsonClone(rawRequest);
702
+ if (typeof outboundStream === "boolean") {
703
+ providerPayload.stream = outboundStream;
704
+ }
705
+ if (passthroughAudit) {
706
+ attachPassthroughProviderInputAudit(passthroughAudit, providerPayload, outboundProtocol);
707
+ }
708
+ }
709
+ else {
710
+ const protocolSwitch = outboundProtocol !== normalized.providerProtocol;
711
+ const outboundHooks = protocolSwitch
712
+ ? this.resolveProtocolHooks(outboundProtocol)
713
+ : hooks;
714
+ if (!outboundHooks) {
715
+ throw new Error(`[HubPipeline] Unsupported provider protocol for hub pipeline: ${outboundProtocol}`);
716
+ }
717
+ const outboundSemanticMapper = protocolSwitch
718
+ ? outboundHooks.createSemanticMapper()
719
+ : semanticMapper;
720
+ const outboundContextMetadataKey = protocolSwitch
721
+ ? outboundHooks.contextMetadataKey
722
+ : hooks.contextMetadataKey;
723
+ const outboundContextSnapshot = protocolSwitch
724
+ ? undefined
725
+ : contextSnapshot;
726
+ const outboundStage1 = await measureHubStage(normalized.id, "req_outbound.stage1_semantic_map", () => runReqOutboundStage1SemanticMap({
727
+ request: workingRequest,
728
+ adapterContext: outboundAdapterContext,
729
+ semanticMapper: outboundSemanticMapper,
730
+ contextSnapshot: outboundContextSnapshot,
731
+ contextMetadataKey: outboundContextMetadataKey,
732
+ stageRecorder: outboundRecorder,
733
+ }));
734
+ let formattedPayload = await measureHubStage(normalized.id, "req_outbound.stage2_format_build", () => runReqOutboundStage2FormatBuild({
735
+ formatEnvelope: outboundStage1.formatEnvelope,
736
+ stageRecorder: outboundRecorder,
737
+ }));
738
+ formattedPayload = await measureHubStage(normalized.id, "req_outbound.stage3_compat", () => runReqOutboundStage3Compat({
739
+ payload: formattedPayload,
740
+ adapterContext: outboundAdapterContext,
741
+ stageRecorder: outboundRecorder,
742
+ }));
743
+ if (shadowCompareBaselineMode) {
744
+ const baselinePolicy = {
745
+ ...(effectivePolicy ?? {}),
746
+ mode: shadowCompareBaselineMode,
747
+ };
748
+ // Compute a baseline provider payload in the *same execution*, without recording
749
+ // snapshots/diffs and without re-running the full pipeline. This avoids side effects
750
+ // (conversation store, followup captures, etc.) that a second execute() would trigger.
751
+ const baselineFormatted = typeof globalThis.structuredClone === "function"
752
+ ? globalThis.structuredClone(formattedPayload)
753
+ : jsonClone(formattedPayload);
754
+ let baselinePayload = applyHubProviderOutboundPolicy({
755
+ policy: baselinePolicy,
756
+ providerProtocol: outboundProtocol,
757
+ compatibilityProfile: typeof outboundAdapterContext.compatibilityProfile === "string"
758
+ ? outboundAdapterContext.compatibilityProfile
759
+ : undefined,
760
+ payload: baselineFormatted,
761
+ stageRecorder: undefined,
762
+ requestId: normalized.id,
763
+ });
764
+ baselinePayload = applyProviderOutboundToolSurface({
765
+ config: this.config.toolSurface,
766
+ providerProtocol: outboundProtocol,
767
+ payload: baselinePayload,
768
+ stageRecorder: undefined,
769
+ requestId: normalized.id,
770
+ });
771
+ shadowBaselineProviderPayload = baselinePayload;
772
+ }
773
+ // Phase 0/1: observe provider outbound payload violations before any enforcement rewrites.
774
+ // This provides black-box visibility into what the pipeline would have sent upstream.
775
+ recordHubPolicyObservation({
776
+ policy: effectivePolicy,
777
+ providerProtocol: outboundProtocol,
778
+ compatibilityProfile: typeof outboundAdapterContext.compatibilityProfile === "string"
779
+ ? outboundAdapterContext.compatibilityProfile
780
+ : undefined,
781
+ payload: formattedPayload,
782
+ stageRecorder: outboundRecorder,
783
+ requestId: normalized.id,
784
+ });
785
+ providerPayload = applyHubProviderOutboundPolicy({
786
+ policy: effectivePolicy,
787
+ providerProtocol: outboundProtocol,
788
+ compatibilityProfile: typeof outboundAdapterContext.compatibilityProfile === "string"
789
+ ? outboundAdapterContext.compatibilityProfile
790
+ : undefined,
791
+ payload: formattedPayload,
792
+ stageRecorder: outboundRecorder,
793
+ requestId: normalized.id,
794
+ });
795
+ providerPayload = applyProviderOutboundToolSurface({
796
+ config: this.config.toolSurface,
797
+ providerProtocol: outboundProtocol,
798
+ payload: providerPayload,
799
+ stageRecorder: outboundRecorder,
800
+ requestId: normalized.id,
801
+ });
802
+ providerPayload = maybeApplyDirectBuiltinWebSearchTool(providerPayload, outboundAdapterContext, outboundProtocol);
803
+ recordHubPolicyObservation({
804
+ policy: effectivePolicy,
805
+ providerProtocol: outboundProtocol,
806
+ compatibilityProfile: typeof outboundAdapterContext.compatibilityProfile === "string"
807
+ ? outboundAdapterContext.compatibilityProfile
808
+ : undefined,
809
+ payload: providerPayload,
810
+ stageRecorder: outboundRecorder,
811
+ requestId: normalized.id,
812
+ });
813
+ if (passthroughAudit) {
814
+ attachPassthroughProviderInputAudit(passthroughAudit, providerPayload, outboundProtocol);
815
+ }
816
+ }
817
+ const outboundEnd = Date.now();
818
+ nodeResults.push({
819
+ id: "req_outbound",
820
+ success: true,
821
+ metadata: {
822
+ node: "req_outbound",
823
+ executionTime: outboundEnd - outboundStart,
824
+ startTime: outboundStart,
825
+ endTime: outboundEnd,
826
+ dataProcessed: {
827
+ messages: workingRequest.messages.length,
828
+ tools: workingRequest.tools?.length ?? 0,
829
+ },
830
+ },
831
+ });
832
+ // 为响应侧 servertool/web_search 提供一次性 Chat 请求快照,便于在 Hub 内部实现
833
+ // 第三跳(将工具结果注入消息历史后重新调用主模型)。
834
+ //
835
+ // 注意:这里不再根据 processMode(passthrough/chat) 做分支判断——即使某些
836
+ // route 将 processMode 标记为 passthrough,我们仍然需要保留一次规范化后的
837
+ // Chat 请求快照,供 stopMessage 等被动触发型
838
+ // servertool 在响应阶段使用。
839
+ //
840
+ // 之前这里通过 JSON.stringify/parse 做深拷贝,但在部分 Responses/Gemini
841
+ // 场景下,workingRequest 上携带的 metadata 可能包含无法安全序列化的字段,
842
+ // 导致克隆过程抛错、capturedChatRequest 被静默丢弃,从而让响应侧的
843
+ // stop_message_auto 等 ServerTool 无法获取上一跳的 Chat 请求。
844
+ //
845
+ // 对于 capturedChatRequest,我们只需要一个“可读快照”,不会在后续流程中
846
+ // 对其做就地修改,因此可以直接使用浅拷贝结构,避免序列化失败导致整段
847
+ // 逻辑失效。
848
+ // Deep-clone a JSON-safe snapshot for servertool followups.
849
+ // Only capture the canonical Chat payload fields (model/messages/tools/parameters) to keep it serializable.
850
+ const capturedChatRequest = {
851
+ model: workingRequest.model,
852
+ messages: jsonClone(workingRequest.messages),
853
+ tools: workingRequest.tools
854
+ ? jsonClone(workingRequest.tools)
855
+ : workingRequest.tools,
856
+ parameters: workingRequest.parameters
857
+ ? jsonClone(workingRequest.parameters)
858
+ : workingRequest.parameters,
859
+ };
860
+ const metadata = {
861
+ ...normalized.metadata,
862
+ capturedChatRequest,
863
+ entryEndpoint: normalized.entryEndpoint,
864
+ providerProtocol: outboundProtocol,
865
+ stream: normalized.stream,
866
+ processMode: normalized.processMode,
867
+ ...(passthroughAudit ? { passthroughAudit } : {}),
868
+ routeHint: normalized.routeHint,
869
+ target: routing.target,
870
+ ...(typeof outboundStream === "boolean"
871
+ ? { providerStream: outboundStream }
872
+ : {}),
873
+ ...(shadowBaselineProviderPayload
874
+ ? {
875
+ hubShadowCompare: {
876
+ baselineMode: shadowCompareBaselineMode,
877
+ candidateMode: (effectivePolicy?.mode ?? "off"),
878
+ providerProtocol: outboundProtocol,
879
+ baselineProviderPayload: shadowBaselineProviderPayload,
880
+ },
881
+ }
882
+ : {}),
883
+ };
884
+ if (hasImageAttachment) {
885
+ metadata.hasImageAttachment = true;
886
+ }
887
+ else {
888
+ delete metadata.hasImageAttachment;
889
+ }
890
+ return {
891
+ requestId: normalized.id,
892
+ providerPayload,
893
+ standardizedRequest,
894
+ processedRequest,
895
+ routingDecision: routing.decision,
896
+ routingDiagnostics: routing.diagnostics,
897
+ target: routing.target,
898
+ metadata,
899
+ nodeResults,
900
+ };
901
+ }
902
+ resolveClientProtocol(entryEndpoint) {
903
+ const protocol = resolveHubClientProtocolWithNative(entryEndpoint);
904
+ if (protocol === "openai-responses" ||
905
+ protocol === "anthropic-messages" ||
906
+ protocol === "openai-chat") {
907
+ return protocol;
908
+ }
909
+ return "openai-chat";
910
+ }
911
+ coerceStandardizedRequestFromPayload(payload, normalized) {
912
+ const model = typeof payload.model === "string" && payload.model.trim().length
913
+ ? payload.model.trim()
914
+ : "";
915
+ if (!model) {
916
+ throw new Error("[HubPipeline] outbound stage requires payload.model");
917
+ }
918
+ const messages = Array.isArray(payload.messages)
919
+ ? payload.messages
920
+ : null;
921
+ if (!messages) {
922
+ throw new Error("[HubPipeline] outbound stage requires payload.messages[]");
923
+ }
924
+ const tools = Array.isArray(payload.tools)
925
+ ? payload.tools
926
+ : undefined;
927
+ const parameters = payload.parameters &&
928
+ typeof payload.parameters === "object" &&
929
+ !Array.isArray(payload.parameters)
930
+ ? payload.parameters
931
+ : {};
932
+ const semanticsFromPayload = payload.semantics &&
933
+ typeof payload.semantics === "object" &&
934
+ !Array.isArray(payload.semantics)
935
+ ? jsonClone(payload.semantics)
936
+ : undefined;
937
+ const metadataFromPayload = payload.metadata &&
938
+ typeof payload.metadata === "object" &&
939
+ !Array.isArray(payload.metadata)
940
+ ? payload.metadata
941
+ : undefined;
942
+ const standardizedRequest = {
943
+ model,
944
+ messages,
945
+ ...(tools ? { tools } : {}),
946
+ parameters,
947
+ metadata: {
948
+ originalEndpoint: normalized.entryEndpoint,
949
+ ...(metadataFromPayload ? metadataFromPayload : {}),
950
+ requestId: normalized.id,
951
+ stream: normalized.stream,
952
+ processMode: normalized.processMode,
953
+ ...(normalized.routeHint ? { routeHint: normalized.routeHint } : {}),
954
+ },
955
+ ...(semanticsFromPayload
956
+ ? { semantics: semanticsFromPayload }
957
+ : {}),
958
+ };
959
+ // Ensure followup/chat_process entry can still preserve mappable semantics
960
+ // without injecting them into metadata.
961
+ try {
962
+ const semantics = standardizedRequest.semantics &&
963
+ typeof standardizedRequest.semantics === "object"
964
+ ? standardizedRequest.semantics
965
+ : (standardizedRequest.semantics = {});
966
+ if (!semantics.tools ||
967
+ typeof semantics.tools !== "object" ||
968
+ Array.isArray(semantics.tools)) {
969
+ semantics.tools = {};
970
+ }
971
+ const toolsNode = semantics.tools;
972
+ if (Array.isArray(payload.tools) &&
973
+ payload.tools.length &&
974
+ toolsNode.clientToolsRaw === undefined) {
975
+ toolsNode.clientToolsRaw = jsonClone(payload.tools);
976
+ }
977
+ }
978
+ catch {
979
+ // best-effort
980
+ }
981
+ // Keep rawPayload minimal and JSON-safe; chat-process only needs the OpenAI-chat-like surface here.
982
+ const rawPayload = {
983
+ model,
984
+ messages,
985
+ ...(tools ? { tools } : {}),
986
+ ...(parameters && Object.keys(parameters).length ? { parameters } : {}),
987
+ };
988
+ return { standardizedRequest, rawPayload };
989
+ }
990
+ async executeChatProcessEntryPipeline(normalized) {
991
+ const hooks = this.resolveProtocolHooks(normalized.providerProtocol);
992
+ if (!hooks) {
993
+ throw new Error(`Unsupported provider protocol for hub pipeline: ${normalized.providerProtocol}`);
994
+ }
995
+ const nodeResults = [];
996
+ nodeResults.push({
997
+ id: "req_inbound",
998
+ success: true,
999
+ metadata: {
1000
+ node: "req_inbound",
1001
+ skipped: true,
1002
+ reason: "stage=outbound",
1003
+ dataProcessed: {},
1004
+ },
1005
+ });
1006
+ const rawPayloadInput = this.asJsonObject(normalized.payload);
1007
+ const { standardizedRequest: standardizedRequestBase, rawPayload } = this.coerceStandardizedRequestFromPayload(rawPayloadInput, normalized);
1008
+ // Keep metadata injection consistent with the inbound path: servertool/web_search config must be available
1009
+ // to chat-process/tool governance even when request enters at outbound stage.
1010
+ const metaBase = {
1011
+ ...(normalized.metadata ?? {}),
1012
+ };
1013
+ const rtBase = ensureRuntimeMetadata(metaBase);
1014
+ const webSearchConfig = this.config.virtualRouter?.webSearch;
1015
+ if (webSearchConfig) {
1016
+ rtBase.webSearch = webSearchConfig;
1017
+ }
1018
+ const execCommandGuard = this.config.virtualRouter?.execCommandGuard;
1019
+ if (execCommandGuard) {
1020
+ rtBase.execCommandGuard = execCommandGuard;
1021
+ }
1022
+ const clockConfig = this.config.virtualRouter?.clock;
1023
+ if (clockConfig) {
1024
+ rtBase.clock = clockConfig;
1025
+ }
1026
+ normalized.metadata = metaBase;
1027
+ const cleanedRequest = applyChatProcessEntryMediaCleanup(standardizedRequestBase);
1028
+ let standardizedRequest = cleanedRequest;
1029
+ const activeProcessMode = resolveActiveProcessMode(normalized.processMode, cleanedRequest.messages);
1030
+ if (activeProcessMode !== normalized.processMode) {
1031
+ normalized.processMode = activeProcessMode;
1032
+ }
1033
+ const passthroughAudit = activeProcessMode === "passthrough"
1034
+ ? buildPassthroughAudit(rawPayload, normalized.providerProtocol)
1035
+ : undefined;
1036
+ // Semantic Gate (chat_process entry): lift any mappable protocol semantics from metadata into request.semantics.
1037
+ // This is the last chance before entering chat_process; after this point we fail-fast on banned metadata keys.
1038
+ try {
1039
+ standardizedRequest = liftResponsesResumeIntoSemantics(standardizedRequest, metaBase);
1040
+ }
1041
+ catch {
1042
+ // best-effort; validation happens below
1043
+ }
1044
+ try {
1045
+ const rt = readRuntimeMetadata(metaBase);
1046
+ const mode = String(rt?.applyPatchToolMode || "")
1047
+ .trim()
1048
+ .toLowerCase();
1049
+ if (mode === "freeform" || mode === "schema") {
1050
+ standardizedRequest.metadata.applyPatchToolMode = mode;
1051
+ }
1052
+ }
1053
+ catch {
1054
+ // ignore
1055
+ }
1056
+ const adapterContext = this.buildAdapterContext(normalized);
1057
+ const stageRecorder = this.maybeCreateStageRecorder(adapterContext, normalized.entryEndpoint, {
1058
+ disableSnapshots: normalized.disableSnapshots === true,
1059
+ });
1060
+ let processedRequest;
1061
+ if (activeProcessMode !== "passthrough") {
1062
+ assertNoMappableSemanticsInMetadata(metaBase, "chat_process.request.entry");
1063
+ const processResult = await runReqProcessStage1ToolGovernance({
1064
+ request: standardizedRequest,
1065
+ rawPayload,
1066
+ metadata: metaBase,
1067
+ entryEndpoint: normalized.entryEndpoint,
1068
+ requestId: normalized.id,
1069
+ stageRecorder,
1070
+ });
1071
+ processedRequest = processResult.processedRequest;
1072
+ // Surface request-side clock reservation into pipeline metadata so response conversion
1073
+ // can commit delivery only after a successful response is produced.
1074
+ try {
1075
+ const reservation = processedRequest?.metadata
1076
+ ?.__clockReservation;
1077
+ if (reservation && typeof reservation === "object") {
1078
+ metaBase.__clockReservation =
1079
+ reservation;
1080
+ }
1081
+ }
1082
+ catch {
1083
+ // best-effort
1084
+ }
1085
+ if (processResult.nodeResult) {
1086
+ nodeResults.push(this.convertProcessNodeResult("chat_process.req.stage4.tool_governance", processResult.nodeResult));
1087
+ }
1088
+ }
1089
+ else {
1090
+ nodeResults.push({
1091
+ id: "chat_process.req.stage4.tool_governance",
1092
+ success: true,
1093
+ metadata: {
1094
+ node: "chat_process.req.stage4.tool_governance",
1095
+ skipped: true,
1096
+ reason: "process_mode_passthrough_parse_record_only",
1097
+ },
1098
+ });
1099
+ if (passthroughAudit) {
1100
+ annotatePassthroughGovernanceSkip(passthroughAudit);
1101
+ }
1102
+ }
1103
+ let workingRequest = syncResponsesContextFromCanonicalMessages(processedRequest ?? standardizedRequest);
1104
+ // Token estimate for stats/diagnostics (best-effort).
1105
+ try {
1106
+ const estimatedTokens = estimateSessionBoundTokens(workingRequest, normalized.metadata) ?? computeRequestTokens(workingRequest, "");
1107
+ if (typeof estimatedTokens === "number" &&
1108
+ Number.isFinite(estimatedTokens) &&
1109
+ estimatedTokens > 0) {
1110
+ normalized.metadata = normalized.metadata || {};
1111
+ normalized.metadata.estimatedInputTokens =
1112
+ estimatedTokens;
1113
+ }
1114
+ }
1115
+ catch {
1116
+ // ignore
1117
+ }
1118
+ const normalizedMeta = normalized.metadata;
1119
+ // responsesResume is a client-protocol semantic (/v1/responses tool loop) and must live in chat.semantics.
1120
+ // Do not read it from metadata once entering chat_process.
1121
+ const responsesResume = readResponsesResumeFromRequestSemantics(workingRequest);
1122
+ const stdMetadata = workingRequest?.metadata;
1123
+ const hasImageAttachment = containsImageAttachment((workingRequest.messages ?? []));
1124
+ const serverToolRequired = stdMetadata?.webSearchEnabled === true ||
1125
+ stdMetadata?.serverToolRequired === true;
1126
+ const sessionIdentifiers = extractSessionIdentifiersFromMetadata(normalized.metadata);
1127
+ if (sessionIdentifiers.sessionId &&
1128
+ normalized.metadata &&
1129
+ typeof normalized.metadata === "object") {
1130
+ normalized.metadata.sessionId =
1131
+ sessionIdentifiers.sessionId;
1132
+ }
1133
+ if (sessionIdentifiers.conversationId &&
1134
+ normalized.metadata &&
1135
+ typeof normalized.metadata === "object") {
1136
+ normalized.metadata.conversationId =
1137
+ sessionIdentifiers.conversationId;
1138
+ }
1139
+ const disableStickyRoutes = readRuntimeMetadata(normalized.metadata)?.disableStickyRoutes === true;
1140
+ const stopMessageRouterMetadata = resolveStopMessageRouterMetadata(normalized.metadata);
1141
+ const metadataInput = {
1142
+ requestId: normalized.id,
1143
+ entryEndpoint: normalized.entryEndpoint,
1144
+ processMode: normalized.processMode,
1145
+ stream: normalized.stream,
1146
+ direction: normalized.direction,
1147
+ providerProtocol: normalized.providerProtocol,
1148
+ routeHint: normalized.routeHint,
1149
+ stage: normalized.stage,
1150
+ responsesResume: responsesResume,
1151
+ ...(disableStickyRoutes ? { disableStickyRoutes: true } : {}),
1152
+ ...(serverToolRequired ? { serverToolRequired: true } : {}),
1153
+ ...(sessionIdentifiers.sessionId
1154
+ ? { sessionId: sessionIdentifiers.sessionId }
1155
+ : {}),
1156
+ ...(sessionIdentifiers.conversationId
1157
+ ? { conversationId: sessionIdentifiers.conversationId }
1158
+ : {}),
1159
+ ...stopMessageRouterMetadata,
1160
+ };
1161
+ const routing = runReqProcessStage2RouteSelect({
1162
+ routerEngine: this.routerEngine,
1163
+ request: workingRequest,
1164
+ metadataInput,
1165
+ normalizedMetadata: normalized.metadata,
1166
+ stageRecorder,
1167
+ });
1168
+ // Emit virtual router hit log for debugging (same as inbound path).
1169
+ try {
1170
+ const routeName = routing.decision?.routeName;
1171
+ const providerKey = routing.target?.providerKey;
1172
+ const modelId = workingRequest.model;
1173
+ const logger = (normalized.metadata &&
1174
+ normalized.metadata.logger);
1175
+ if (logger &&
1176
+ typeof logger.logVirtualRouterHit === "function" &&
1177
+ routeName &&
1178
+ providerKey) {
1179
+ logger.logVirtualRouterHit(routeName, providerKey, typeof modelId === "string" ? modelId : undefined, typeof sessionIdentifiers.sessionId === "string"
1180
+ ? sessionIdentifiers.sessionId
1181
+ : undefined);
1182
+ }
1183
+ }
1184
+ catch {
1185
+ // ignore
1186
+ }
1187
+ const outboundStream = this.resolveOutboundStreamIntent(routing.target?.streaming);
1188
+ workingRequest = this.applyOutboundStreamPreference(workingRequest, outboundStream, activeProcessMode);
1189
+ const outboundAdapterContext = this.buildAdapterContext(normalized, routing.target);
1190
+ if (routing.target?.compatibilityProfile) {
1191
+ outboundAdapterContext.compatibilityProfile =
1192
+ routing.target.compatibilityProfile;
1193
+ }
1194
+ const outboundProtocol = outboundAdapterContext.providerProtocol;
1195
+ if (activeProcessMode === "passthrough" &&
1196
+ outboundProtocol !== normalized.providerProtocol) {
1197
+ throw new Error(`[HubPipeline] passthrough requires matching protocols: entry=${normalized.providerProtocol}, target=${outboundProtocol}`);
1198
+ }
1199
+ const outboundRecorder = this.maybeCreateStageRecorder(outboundAdapterContext, normalized.entryEndpoint, {
1200
+ disableSnapshots: normalized.disableSnapshots === true,
1201
+ });
1202
+ const outboundStart = Date.now();
1203
+ let providerPayload;
1204
+ if (activeProcessMode === "passthrough") {
1205
+ providerPayload = jsonClone(rawPayloadInput);
1206
+ if (typeof outboundStream === "boolean") {
1207
+ providerPayload.stream = outboundStream;
1208
+ }
1209
+ if (passthroughAudit) {
1210
+ attachPassthroughProviderInputAudit(passthroughAudit, providerPayload, outboundProtocol);
1211
+ }
1212
+ }
1213
+ else {
1214
+ const protocolSwitch = outboundProtocol !== normalized.providerProtocol;
1215
+ const outboundHooks = protocolSwitch
1216
+ ? this.resolveProtocolHooks(outboundProtocol)
1217
+ : hooks;
1218
+ if (!outboundHooks) {
1219
+ throw new Error(`[HubPipeline] Unsupported provider protocol for hub pipeline: ${outboundProtocol}`);
1220
+ }
1221
+ const outboundSemanticMapper = protocolSwitch
1222
+ ? outboundHooks.createSemanticMapper()
1223
+ : hooks.createSemanticMapper();
1224
+ const outboundContextMetadataKey = protocolSwitch
1225
+ ? outboundHooks.contextMetadataKey
1226
+ : hooks.contextMetadataKey;
1227
+ const outboundContextSnapshot = undefined;
1228
+ const outboundStage1 = await measureHubStage(normalized.id, "req_outbound.stage1_semantic_map", () => runReqOutboundStage1SemanticMap({
1229
+ request: workingRequest,
1230
+ adapterContext: outboundAdapterContext,
1231
+ semanticMapper: outboundSemanticMapper,
1232
+ contextSnapshot: outboundContextSnapshot,
1233
+ contextMetadataKey: outboundContextMetadataKey,
1234
+ stageRecorder: outboundRecorder,
1235
+ }));
1236
+ let formattedPayload = await measureHubStage(normalized.id, "req_outbound.stage2_format_build", () => runReqOutboundStage2FormatBuild({
1237
+ formatEnvelope: outboundStage1.formatEnvelope,
1238
+ stageRecorder: outboundRecorder,
1239
+ }));
1240
+ formattedPayload = await measureHubStage(normalized.id, "req_outbound.stage3_compat", () => runReqOutboundStage3Compat({
1241
+ payload: formattedPayload,
1242
+ adapterContext: outboundAdapterContext,
1243
+ stageRecorder: outboundRecorder,
1244
+ }));
1245
+ // Phase 0/1: observe + enforce provider outbound policy and tool surface (same as inbound path).
1246
+ const effectivePolicy = normalized.policyOverride ?? this.config.policy;
1247
+ recordHubPolicyObservation({
1248
+ policy: effectivePolicy,
1249
+ providerProtocol: outboundProtocol,
1250
+ compatibilityProfile: typeof outboundAdapterContext.compatibilityProfile === "string"
1251
+ ? outboundAdapterContext.compatibilityProfile
1252
+ : undefined,
1253
+ payload: formattedPayload,
1254
+ stageRecorder: outboundRecorder,
1255
+ requestId: normalized.id,
1256
+ });
1257
+ providerPayload = applyHubProviderOutboundPolicy({
1258
+ policy: effectivePolicy,
1259
+ providerProtocol: outboundProtocol,
1260
+ compatibilityProfile: typeof outboundAdapterContext.compatibilityProfile === "string"
1261
+ ? outboundAdapterContext.compatibilityProfile
1262
+ : undefined,
1263
+ payload: formattedPayload,
1264
+ stageRecorder: outboundRecorder,
1265
+ requestId: normalized.id,
1266
+ });
1267
+ providerPayload = applyProviderOutboundToolSurface({
1268
+ config: this.config.toolSurface,
1269
+ providerProtocol: outboundProtocol,
1270
+ payload: providerPayload,
1271
+ stageRecorder: outboundRecorder,
1272
+ requestId: normalized.id,
1273
+ });
1274
+ providerPayload = maybeApplyDirectBuiltinWebSearchTool(providerPayload, outboundAdapterContext, outboundProtocol);
1275
+ recordHubPolicyObservation({
1276
+ policy: effectivePolicy,
1277
+ providerProtocol: outboundProtocol,
1278
+ compatibilityProfile: typeof outboundAdapterContext.compatibilityProfile === "string"
1279
+ ? outboundAdapterContext.compatibilityProfile
1280
+ : undefined,
1281
+ payload: providerPayload,
1282
+ stageRecorder: outboundRecorder,
1283
+ requestId: normalized.id,
1284
+ });
1285
+ if (passthroughAudit) {
1286
+ attachPassthroughProviderInputAudit(passthroughAudit, providerPayload, outboundProtocol);
1287
+ }
1288
+ }
1289
+ const outboundEnd = Date.now();
1290
+ nodeResults.push({
1291
+ id: "req_outbound",
1292
+ success: true,
1293
+ metadata: {
1294
+ node: "req_outbound",
1295
+ executionTime: outboundEnd - outboundStart,
1296
+ startTime: outboundStart,
1297
+ endTime: outboundEnd,
1298
+ dataProcessed: {
1299
+ messages: workingRequest.messages.length,
1300
+ tools: workingRequest.tools?.length ?? 0,
1301
+ },
1302
+ },
1303
+ });
1304
+ const capturedChatRequest = {
1305
+ model: workingRequest.model,
1306
+ messages: jsonClone(workingRequest.messages),
1307
+ tools: workingRequest.tools
1308
+ ? jsonClone(workingRequest.tools)
1309
+ : workingRequest.tools,
1310
+ parameters: workingRequest.parameters
1311
+ ? jsonClone(workingRequest.parameters)
1312
+ : workingRequest.parameters,
1313
+ };
1314
+ const metadata = {
1315
+ ...normalized.metadata,
1316
+ capturedChatRequest,
1317
+ entryEndpoint: normalized.entryEndpoint,
1318
+ providerProtocol: outboundProtocol,
1319
+ stream: normalized.stream,
1320
+ processMode: normalized.processMode,
1321
+ ...(passthroughAudit ? { passthroughAudit } : {}),
1322
+ routeHint: normalized.routeHint,
1323
+ target: routing.target,
1324
+ ...(typeof outboundStream === "boolean"
1325
+ ? { providerStream: outboundStream }
1326
+ : {}),
1327
+ };
1328
+ if (hasImageAttachment) {
1329
+ metadata.hasImageAttachment = true;
1330
+ }
1331
+ else {
1332
+ delete metadata.hasImageAttachment;
1333
+ }
1334
+ return {
1335
+ requestId: normalized.id,
1336
+ providerPayload,
1337
+ standardizedRequest,
1338
+ processedRequest,
1339
+ routingDecision: routing.decision,
1340
+ routingDiagnostics: routing.diagnostics,
1341
+ target: routing.target,
1342
+ metadata,
1343
+ nodeResults,
1344
+ };
1345
+ }
1346
+ async execute(request) {
1347
+ const normalized = await this.normalizeRequest(request);
1348
+ clearHubStageTiming(normalized.id);
1349
+ try {
1350
+ if (normalized.direction === "request" &&
1351
+ normalized.hubEntryMode === "chat_process") {
1352
+ return await this.executeChatProcessEntryPipeline(normalized);
1353
+ }
1354
+ const hooks = this.resolveProtocolHooks(normalized.providerProtocol);
1355
+ if (!hooks) {
1356
+ throw new Error(`Unsupported provider protocol for hub pipeline: ${normalized.providerProtocol}`);
1357
+ }
1358
+ return await this.executeRequestStagePipeline(normalized, hooks);
1359
+ }
1360
+ finally {
1361
+ clearHubStageTiming(normalized.id);
1362
+ }
1363
+ }
1364
+ captureAnthropicAliasMap(normalized, adapterContext, chatEnvelope) {
1365
+ if (!this.shouldCaptureAnthropicAlias(normalized.entryEndpoint)) {
1366
+ return;
1367
+ }
1368
+ const aliasMap = this.resolveAliasMapFromSources(adapterContext, chatEnvelope);
1369
+ if (!aliasMap) {
1370
+ return;
1371
+ }
1372
+ // A1: tool name alias map is mappable semantics and must live in chat.semantics (never metadata).
1373
+ try {
1374
+ if (!chatEnvelope.semantics ||
1375
+ typeof chatEnvelope.semantics !== "object" ||
1376
+ Array.isArray(chatEnvelope.semantics)) {
1377
+ chatEnvelope.semantics = {};
1378
+ }
1379
+ const semantics = chatEnvelope.semantics;
1380
+ if (!semantics.tools || !isJsonObject(semantics.tools)) {
1381
+ semantics.tools = {};
1382
+ }
1383
+ const toolsNode = semantics.tools;
1384
+ if (!isJsonObject(toolsNode.toolNameAliasMap) &&
1385
+ !isJsonObject(toolsNode.toolAliasMap)) {
1386
+ toolsNode.toolNameAliasMap = jsonClone(aliasMap);
1387
+ }
1388
+ }
1389
+ catch {
1390
+ // best-effort: never block request handling due to alias map propagation failures
1391
+ }
1392
+ }
1393
+ shouldCaptureAnthropicAlias(endpoint) {
1394
+ return (typeof endpoint === "string" &&
1395
+ endpoint.toLowerCase().includes("/v1/messages"));
1396
+ }
1397
+ resolveAliasMapFromSources(adapterContext, chatEnvelope) {
1398
+ const fromContext = coerceAliasMap(adapterContext.anthropicToolNameMap);
1399
+ if (fromContext) {
1400
+ return fromContext;
1401
+ }
1402
+ const metadataNode = chatEnvelope.metadata;
1403
+ const direct = metadataNode
1404
+ ? coerceAliasMap(metadataNode.anthropicToolNameMap)
1405
+ : undefined;
1406
+ if (direct) {
1407
+ return direct;
1408
+ }
1409
+ const contextNode = metadataNode &&
1410
+ metadataNode.context &&
1411
+ typeof metadataNode.context === "object"
1412
+ ? metadataNode.context
1413
+ : undefined;
1414
+ const fromContextNode = coerceAliasMap(contextNode?.anthropicToolNameMap);
1415
+ if (fromContextNode) {
1416
+ return fromContextNode;
1417
+ }
1418
+ return readAliasMapFromSemantics(chatEnvelope);
1419
+ }
1420
+ resolveProtocolHooks(protocol) {
1421
+ switch (protocol) {
1422
+ case "openai-chat":
1423
+ return {
1424
+ createFormatAdapter: () => new ChatFormatAdapter(),
1425
+ createSemanticMapper: () => new ChatSemanticMapper(),
1426
+ captureContext: (options) => runChatContextCapture(options),
1427
+ contextMetadataKey: "chatContext",
1428
+ };
1429
+ case "openai-responses":
1430
+ return {
1431
+ createFormatAdapter: () => new ResponsesFormatAdapter(),
1432
+ createSemanticMapper: () => new ResponsesSemanticMapper(),
1433
+ captureContext: createResponsesContextCapture(captureResponsesContextSnapshot),
1434
+ contextMetadataKey: "responsesContext",
1435
+ };
1436
+ case "anthropic-messages":
1437
+ return {
1438
+ createFormatAdapter: () => new AnthropicFormatAdapter(),
1439
+ createSemanticMapper: () => new AnthropicSemanticMapper(),
1440
+ captureContext: (options) => runChatContextCapture(options),
1441
+ contextMetadataKey: "anthropicContext",
1442
+ };
1443
+ case "gemini-chat":
1444
+ return {
1445
+ createFormatAdapter: () => new GeminiFormatAdapter(),
1446
+ createSemanticMapper: () => new GeminiSemanticMapper(),
1447
+ captureContext: createNoopContextCapture("gemini-chat"),
1448
+ };
1449
+ default:
1450
+ return undefined;
1451
+ }
1452
+ }
1453
+ buildAdapterContext(normalized, target) {
1454
+ const metadata = normalized.metadata || {};
1455
+ const providerProtocol = target?.outboundProfile ||
1456
+ normalized.providerProtocol;
1457
+ const providerId = (target?.providerKey || metadata.providerKey);
1458
+ const routeId = metadata.routeName;
1459
+ const profileId = (target?.providerKey || metadata.pipelineId);
1460
+ const targetCompatProfile = typeof target?.compatibilityProfile === "string" &&
1461
+ target.compatibilityProfile.trim()
1462
+ ? target.compatibilityProfile.trim()
1463
+ : undefined;
1464
+ const metadataCompatProfile = typeof metadata.compatibilityProfile ===
1465
+ "string"
1466
+ ? String(metadata.compatibilityProfile).trim()
1467
+ : undefined;
1468
+ // When routing has already selected a target runtime, compat must be target-scoped only.
1469
+ // Never inherit stale top-level metadata.compatibilityProfile from a previous hop.
1470
+ const compatibilityProfile = target
1471
+ ? targetCompatProfile
1472
+ : metadataCompatProfile;
1473
+ const streamingHint = normalized.stream === true
1474
+ ? "force"
1475
+ : normalized.stream === false
1476
+ ? "disable"
1477
+ : "auto";
1478
+ const toolCallIdStyle = normalizeReqInboundToolCallIdStyleWithNative(metadata.toolCallIdStyle);
1479
+ const adapterContext = {
1480
+ requestId: normalized.id,
1481
+ entryEndpoint: normalized.entryEndpoint || "/v1/chat/completions",
1482
+ providerProtocol,
1483
+ providerId,
1484
+ routeId,
1485
+ profileId,
1486
+ streamingHint,
1487
+ toolCallIdStyle,
1488
+ ...(compatibilityProfile ? { compatibilityProfile } : {}),
1489
+ };
1490
+ const targetDeepseek = isJsonObject(target?.deepseek)
1491
+ ? jsonClone(target.deepseek)
1492
+ : undefined;
1493
+ if (targetDeepseek) {
1494
+ adapterContext.deepseek = targetDeepseek;
1495
+ const rtCarrier = isJsonObject(adapterContext.__rt)
1496
+ ? {
1497
+ ...adapterContext.__rt,
1498
+ }
1499
+ : {};
1500
+ rtCarrier.deepseek = targetDeepseek;
1501
+ adapterContext.__rt =
1502
+ rtCarrier;
1503
+ }
1504
+ const runtime = metadata.runtime;
1505
+ if (runtime && typeof runtime === "object" && !Array.isArray(runtime)) {
1506
+ adapterContext.runtime = jsonClone(runtime);
1507
+ }
1508
+ const clientRequestId = typeof metadata.clientRequestId === "string"
1509
+ ? metadata.clientRequestId.trim()
1510
+ : "";
1511
+ if (clientRequestId) {
1512
+ adapterContext.clientRequestId =
1513
+ clientRequestId;
1514
+ }
1515
+ const groupRequestId = typeof metadata.groupRequestId === "string"
1516
+ ? metadata.groupRequestId.trim()
1517
+ : "";
1518
+ if (groupRequestId) {
1519
+ adapterContext.groupRequestId =
1520
+ groupRequestId;
1521
+ }
1522
+ if (typeof metadata.originalModelId === "string") {
1523
+ adapterContext.originalModelId = metadata.originalModelId;
1524
+ }
1525
+ if (typeof metadata.clientModelId === "string") {
1526
+ adapterContext.clientModelId = metadata.clientModelId;
1527
+ }
1528
+ if (typeof metadata.assignedModelId === "string") {
1529
+ adapterContext.modelId =
1530
+ metadata.assignedModelId;
1531
+ }
1532
+ const estimatedInputTokens = Number(metadata.estimatedInputTokens ??
1533
+ metadata.estimated_tokens ??
1534
+ metadata.estimatedTokens);
1535
+ if (Number.isFinite(estimatedInputTokens) && estimatedInputTokens > 0) {
1536
+ adapterContext.estimatedInputTokens =
1537
+ Math.max(1, Math.round(estimatedInputTokens));
1538
+ }
1539
+ const rt = cloneRuntimeMetadata(metadata);
1540
+ if (rt) {
1541
+ adapterContext.__rt = rt;
1542
+ }
1543
+ const capturedChatRequest = metadata.capturedChatRequest &&
1544
+ typeof metadata.capturedChatRequest ===
1545
+ "object" &&
1546
+ !Array.isArray(metadata.capturedChatRequest)
1547
+ ? jsonClone(metadata
1548
+ .capturedChatRequest)
1549
+ : undefined;
1550
+ if (capturedChatRequest) {
1551
+ adapterContext.capturedChatRequest =
1552
+ capturedChatRequest;
1553
+ }
1554
+ const sessionId = typeof metadata.sessionId === "string"
1555
+ ? metadata.sessionId.trim()
1556
+ : "";
1557
+ if (sessionId) {
1558
+ adapterContext.sessionId = sessionId;
1559
+ }
1560
+ const conversationId = typeof metadata.conversationId === "string"
1561
+ ? metadata.conversationId.trim()
1562
+ : "";
1563
+ if (conversationId) {
1564
+ adapterContext.conversationId =
1565
+ conversationId;
1566
+ }
1567
+ propagateAdapterContextMetadataFields(adapterContext, metadata, [
1568
+ "clockDaemonId",
1569
+ "clockClientDaemonId",
1570
+ "clock_daemon_id",
1571
+ "clock_client_daemon_id",
1572
+ "tmuxSessionId",
1573
+ "tmux_session_id",
1574
+ "clientType",
1575
+ "clockClientType",
1576
+ "clientInjectReady",
1577
+ "clientInjectReason",
1578
+ "client_inject_ready",
1579
+ "client_inject_reason",
1580
+ "workdir",
1581
+ "cwd",
1582
+ "workingDirectory",
1583
+ ]);
1584
+ const clientConnectionState = metadata
1585
+ .clientConnectionState;
1586
+ if (clientConnectionState &&
1587
+ typeof clientConnectionState === "object" &&
1588
+ !Array.isArray(clientConnectionState)) {
1589
+ const stateRecord = clientConnectionState;
1590
+ adapterContext.clientConnectionState =
1591
+ clientConnectionState;
1592
+ if (typeof stateRecord.disconnected === "boolean") {
1593
+ adapterContext.clientDisconnected =
1594
+ stateRecord.disconnected;
1595
+ }
1596
+ }
1597
+ const clientDisconnectedRaw = metadata
1598
+ .clientDisconnected;
1599
+ if (clientDisconnectedRaw === true ||
1600
+ (typeof clientDisconnectedRaw === "string" &&
1601
+ clientDisconnectedRaw.trim().toLowerCase() === "true")) {
1602
+ adapterContext.clientDisconnected = true;
1603
+ }
1604
+ if (target?.compatibilityProfile &&
1605
+ typeof target.compatibilityProfile === "string") {
1606
+ adapterContext.compatibilityProfile =
1607
+ target.compatibilityProfile;
1608
+ }
1609
+ return adapterContext;
1610
+ }
1611
+ applyMaxTokensPolicy(request, target) {
1612
+ if (!target) {
1613
+ return;
1614
+ }
1615
+ const params = request.parameters || (request.parameters = {});
1616
+ const direct = typeof params.max_tokens === "number" &&
1617
+ Number.isFinite(params.max_tokens)
1618
+ ? Math.floor(params.max_tokens)
1619
+ : undefined;
1620
+ const maxOutputRaw = typeof params.max_output_tokens ===
1621
+ "number" &&
1622
+ Number.isFinite(params.max_output_tokens)
1623
+ ? Math.floor(params.max_output_tokens)
1624
+ : undefined;
1625
+ const requested = direct ?? maxOutputRaw;
1626
+ let configuredDefault = typeof target.maxOutputTokens === "number" &&
1627
+ Number.isFinite(target.maxOutputTokens)
1628
+ ? Math.floor(target.maxOutputTokens)
1629
+ : undefined;
1630
+ if (!configuredDefault) {
1631
+ const registry = this.routerEngine.providerRegistry;
1632
+ const profile = registry?.get?.(target.providerKey);
1633
+ const candidate = typeof profile?.maxOutputTokens === "number" &&
1634
+ Number.isFinite(profile.maxOutputTokens)
1635
+ ? Math.floor(profile.maxOutputTokens)
1636
+ : undefined;
1637
+ if (candidate && candidate > 0) {
1638
+ configuredDefault = candidate;
1639
+ }
1640
+ }
1641
+ const desired = requested && requested > 0 ? requested : configuredDefault;
1642
+ if (desired && desired > 0) {
1643
+ params.max_tokens = desired;
1644
+ if (params.max_output_tokens !== undefined) {
1645
+ params.max_output_tokens = desired;
1646
+ }
1647
+ }
1648
+ }
1649
+ maybeCreateStageRecorder(context, endpoint, options) {
1650
+ if (options?.disableSnapshots === true) {
1651
+ return undefined;
1652
+ }
1653
+ if (!shouldRecordSnapshots()) {
1654
+ return undefined;
1655
+ }
1656
+ const effectiveEndpoint = endpoint || context.entryEndpoint || "/v1/chat/completions";
1657
+ try {
1658
+ return createSnapshotRecorder(context, effectiveEndpoint);
1659
+ }
1660
+ catch {
1661
+ return undefined;
1662
+ }
1663
+ }
1664
+ asJsonObject(value) {
1665
+ if (!value || typeof value !== "object") {
1666
+ throw new Error("Responses pipeline requires JSON object payload");
1667
+ }
1668
+ return value;
1669
+ }
1670
+ async normalizeRequest(request) {
1671
+ if (!request || typeof request !== "object") {
1672
+ throw new Error("HubPipeline requires request payload");
1673
+ }
1674
+ const id = request.id || `req_${Date.now()}`;
1675
+ const endpoint = normalizeEndpoint(request.endpoint);
1676
+ const metadataRecord = {
1677
+ ...(request.metadata ?? {}),
1678
+ };
1679
+ const policyOverride = extractHubPolicyOverride(metadataRecord);
1680
+ if (Object.prototype.hasOwnProperty.call(metadataRecord, "__hubPolicyOverride")) {
1681
+ delete metadataRecord.__hubPolicyOverride;
1682
+ }
1683
+ const shadowCompare = extractHubShadowCompareConfig(metadataRecord);
1684
+ if (Object.prototype.hasOwnProperty.call(metadataRecord, "__hubShadowCompare")) {
1685
+ delete metadataRecord.__hubShadowCompare;
1686
+ }
1687
+ const disableSnapshots = metadataRecord.__disableHubSnapshots === true;
1688
+ if (Object.prototype.hasOwnProperty.call(metadataRecord, "__disableHubSnapshots")) {
1689
+ delete metadataRecord.__disableHubSnapshots;
1690
+ }
1691
+ const hubEntryRaw = typeof metadataRecord.__hubEntry === "string"
1692
+ ? String(metadataRecord.__hubEntry)
1693
+ .trim()
1694
+ .toLowerCase()
1695
+ : "";
1696
+ const hubEntryMode = hubEntryRaw === "chat_process" ||
1697
+ hubEntryRaw === "chat-process" ||
1698
+ hubEntryRaw === "chatprocess"
1699
+ ? "chat_process"
1700
+ : undefined;
1701
+ if (Object.prototype.hasOwnProperty.call(metadataRecord, "__hubEntry")) {
1702
+ delete metadataRecord.__hubEntry;
1703
+ }
1704
+ const entryEndpoint = typeof metadataRecord.entryEndpoint === "string"
1705
+ ? normalizeEndpoint(metadataRecord.entryEndpoint)
1706
+ : endpoint;
1707
+ const providerProtocol = resolveProviderProtocol(metadataRecord.providerProtocol);
1708
+ const processMode = metadataRecord.processMode === "passthrough" ? "passthrough" : "chat";
1709
+ const direction = metadataRecord.direction === "response" ? "response" : "request";
1710
+ const stage = metadataRecord.stage === "outbound" ? "outbound" : "inbound";
1711
+ const resolvedReadable = this.unwrapReadable(request.payload);
1712
+ const stream = Boolean(metadataRecord.stream ||
1713
+ resolvedReadable ||
1714
+ (request.payload &&
1715
+ typeof request.payload === "object" &&
1716
+ request.payload.stream));
1717
+ let payload = await this.materializePayload(request.payload, {
1718
+ requestId: id,
1719
+ entryEndpoint,
1720
+ providerProtocol,
1721
+ metadata: metadataRecord,
1722
+ }, resolvedReadable);
1723
+ const routeHint = typeof metadataRecord.routeHint === "string"
1724
+ ? metadataRecord.routeHint
1725
+ : undefined;
1726
+ const orchestrationResult = runHubPipelineOrchestrationWithNative({
1727
+ requestId: id,
1728
+ endpoint,
1729
+ entryEndpoint,
1730
+ providerProtocol,
1731
+ payload,
1732
+ metadata: {
1733
+ entryEndpoint,
1734
+ providerProtocol,
1735
+ processMode,
1736
+ direction,
1737
+ stage,
1738
+ stream,
1739
+ ...(routeHint ? { routeHint } : {}),
1740
+ },
1741
+ stream,
1742
+ processMode,
1743
+ direction,
1744
+ stage,
1745
+ });
1746
+ if (!orchestrationResult.success) {
1747
+ const code = orchestrationResult.error &&
1748
+ typeof orchestrationResult.error.code === "string"
1749
+ ? orchestrationResult.error.code.trim()
1750
+ : "hub_pipeline_native_failed";
1751
+ const message = orchestrationResult.error &&
1752
+ typeof orchestrationResult.error.message === "string"
1753
+ ? orchestrationResult.error.message.trim()
1754
+ : "Native hub pipeline orchestration failed";
1755
+ throw new Error(`[${code}] ${message}`);
1756
+ }
1757
+ if (orchestrationResult.payload) {
1758
+ payload = orchestrationResult.payload;
1759
+ }
1760
+ const normalizedMetadata = {
1761
+ ...metadataRecord,
1762
+ entryEndpoint,
1763
+ providerProtocol,
1764
+ processMode,
1765
+ direction,
1766
+ stage,
1767
+ stream,
1768
+ ...(routeHint ? { routeHint } : {}),
1769
+ ...(orchestrationResult.metadata ?? {}),
1770
+ };
1771
+ return {
1772
+ id,
1773
+ endpoint,
1774
+ entryEndpoint,
1775
+ providerProtocol,
1776
+ payload,
1777
+ metadata: normalizedMetadata,
1778
+ policyOverride: policyOverride ?? undefined,
1779
+ shadowCompare: shadowCompare ?? undefined,
1780
+ disableSnapshots,
1781
+ processMode,
1782
+ direction,
1783
+ stage,
1784
+ stream,
1785
+ routeHint,
1786
+ ...(hubEntryMode ? { hubEntryMode } : {}),
1787
+ };
1788
+ }
1789
+ convertProcessNodeResult(id, result) {
1790
+ return {
1791
+ id,
1792
+ success: result.success,
1793
+ metadata: result.metadata,
1794
+ error: result.error
1795
+ ? {
1796
+ code: result.error.code ?? "hub_chat_process_error",
1797
+ message: result.error.message,
1798
+ details: result.error.details,
1799
+ }
1800
+ : undefined,
1801
+ };
1802
+ }
1803
+ async materializePayload(payload, context, resolvedStream) {
1804
+ const stream = resolvedStream ?? this.unwrapReadable(payload);
1805
+ if (stream) {
1806
+ return await this.convertSsePayload(stream, context);
1807
+ }
1808
+ if (!payload || typeof payload !== "object") {
1809
+ throw new Error("HubPipeline requires JSON object payload");
1810
+ }
1811
+ return payload;
1812
+ }
1813
+ unwrapReadable(payload) {
1814
+ if (!payload) {
1815
+ return null;
1816
+ }
1817
+ if (payload instanceof Readable) {
1818
+ return payload;
1819
+ }
1820
+ if (payload && typeof payload === "object" && "readable" in payload) {
1821
+ const candidate = payload.readable;
1822
+ if (candidate instanceof Readable) {
1823
+ return candidate;
1824
+ }
1825
+ }
1826
+ return null;
1827
+ }
1828
+ async convertSsePayload(stream, context) {
1829
+ const protocol = this.resolveSseProtocol(context);
1830
+ const codec = defaultSseCodecRegistry.get(protocol);
1831
+ try {
1832
+ const result = await codec.convertSseToJson(stream, {
1833
+ requestId: context.requestId,
1834
+ model: this.extractModelHint(context.metadata),
1835
+ direction: "request",
1836
+ });
1837
+ if (!result || typeof result !== "object") {
1838
+ throw new Error("SSE conversion returned empty payload");
1839
+ }
1840
+ return result;
1841
+ }
1842
+ catch (error) {
1843
+ const message = error instanceof Error
1844
+ ? error.message
1845
+ : String(error ?? "Unknown error");
1846
+ throw new Error(`Failed to convert SSE payload for protocol ${protocol}: ${message}`);
1847
+ }
1848
+ }
1849
+ resolveSseProtocol(context) {
1850
+ const explicitProtocol = resolveSseProtocolFromMetadata(context.metadata);
1851
+ if (explicitProtocol) {
1852
+ return explicitProtocol;
1853
+ }
1854
+ return context.providerProtocol;
1855
+ }
1856
+ extractModelHint(metadata) {
1857
+ if (typeof metadata.model === "string" && metadata.model.trim()) {
1858
+ return metadata.model;
1859
+ }
1860
+ const provider = metadata.provider;
1861
+ const candidates = [
1862
+ provider?.model,
1863
+ provider?.modelId,
1864
+ provider?.defaultModel,
1865
+ ];
1866
+ for (const candidate of candidates) {
1867
+ if (typeof candidate === "string" && candidate.trim()) {
1868
+ return candidate;
1869
+ }
1870
+ }
1871
+ return undefined;
1872
+ }
1873
+ resolveOutboundStreamIntent(providerPreference) {
1874
+ return resolveOutboundStreamIntentWithNative(providerPreference);
1875
+ }
1876
+ applyOutboundStreamPreference(request, stream, processMode) {
1877
+ if (!request || typeof request !== "object") {
1878
+ return request;
1879
+ }
1880
+ return applyOutboundStreamPreferenceWithNative(request, stream, processMode);
1881
+ }
1882
+ }
1883
+ function normalizeEndpoint(endpoint) {
1884
+ return normalizeHubEndpointWithNative(endpoint);
1885
+ }
1886
+ function resolveProviderProtocol(value) {
1887
+ try {
1888
+ const normalized = resolveHubProviderProtocolWithNative(value);
1889
+ if (normalized === "openai-chat" ||
1890
+ normalized === "openai-responses" ||
1891
+ normalized === "anthropic-messages" ||
1892
+ normalized === "gemini-chat") {
1893
+ return normalized;
1894
+ }
1895
+ }
1896
+ catch {
1897
+ // Keep legacy caller-facing error shape below.
1898
+ }
1899
+ throw new Error(`[HubPipeline] Unsupported providerProtocol "${value}". Configure a valid protocol (openai-chat|openai-responses|anthropic-messages|gemini-chat).`);
1900
+ }
1901
+ function resolveSseProtocolFromMetadata(metadata) {
1902
+ const resolved = resolveHubSseProtocolFromMetadataWithNative(metadata);
1903
+ if (!resolved) {
1904
+ return undefined;
1905
+ }
1906
+ return resolveProviderProtocol(resolved);
1907
+ }
1908
+ function coerceAliasMap(candidate) {
1909
+ return normalizeAliasMapWithNative(candidate);
1910
+ }
1911
+ function readAliasMapFromSemantics(chatEnvelope) {
1912
+ if (!chatEnvelope?.semantics ||
1913
+ typeof chatEnvelope.semantics !== "object" ||
1914
+ Array.isArray(chatEnvelope.semantics)) {
1915
+ return undefined;
1916
+ }
1917
+ return resolveAliasMapFromRespSemanticsWithNative(chatEnvelope.semantics);
1918
+ }
1919
+ function assertNoMappableSemanticsInMetadata(metadata, scope) {
1920
+ if (!metadata || typeof metadata !== "object") {
1921
+ return;
1922
+ }
1923
+ const present = findMappableSemanticsKeysWithNative(metadata);
1924
+ if (present.length) {
1925
+ throw new Error(`[HubPipeline][semantic_gate] Mappable semantics must not be stored in metadata (${scope}): ${present.join(", ")}`);
1926
+ }
1927
+ }