@jsonstudio/rcc 0.90.876 → 0.90.1270

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 (833) hide show
  1. package/README.md +5 -6
  2. package/configsamples/provider-default/ali-coding-plan/config.v2.json +6 -1
  3. package/configsamples/provider-default/antigravity/config.v2.json +6 -1
  4. package/configsamples/provider-default/ark-coding-plan/config.v2.json +7 -2
  5. package/configsamples/provider-default/crs/config.v2.json +6 -1
  6. package/configsamples/provider-default/deepseek-web/config.v2.json +6 -1
  7. package/configsamples/provider-default/gemini/config.v2.json +6 -1
  8. package/configsamples/provider-default/gemini-cli/config.v2.json +6 -1
  9. package/configsamples/provider-default/gemini-native/config.v2.json +6 -1
  10. package/configsamples/provider-default/glm/config.v2.json +7 -2
  11. package/configsamples/provider-default/glm-anthropic/config.v2.json +6 -1
  12. package/configsamples/provider-default/kimi/config.v2.json +7 -2
  13. package/configsamples/provider-default/lmstudio/config.v2.json +6 -1
  14. package/configsamples/provider-default/lmstudio-proxy/config.v2.json +6 -1
  15. package/configsamples/provider-default/manifest.json +0 -1
  16. package/configsamples/provider-default/meituan/config.v2.json +6 -1
  17. package/configsamples/provider-default/mimo/config.v2.json +7 -2
  18. package/configsamples/provider-default/modelscope/config.v2.json +7 -2
  19. package/configsamples/provider-default/my-openai/config.v2.json +6 -1
  20. package/configsamples/provider-default/nvidia/config.v2.json +7 -2
  21. package/configsamples/provider-default/opencode-zen-free/config.v2.json +6 -1
  22. package/configsamples/provider-default/openrouter/config.v2.json +6 -1
  23. package/configsamples/provider-default/qwen/config.v2.json +11 -1
  24. package/configsamples/provider-default/tab/config.v2.json +6 -1
  25. package/configsamples/provider-default/tabglm/config.v2.json +7 -2
  26. package/dist/build-info.js +2 -2
  27. package/dist/build-info.js.map +1 -1
  28. package/dist/cli/commands/camoufox.js +44 -3
  29. package/dist/cli/commands/camoufox.js.map +1 -1
  30. package/dist/cli/commands/config.js +2 -2
  31. package/dist/cli/commands/config.js.map +1 -1
  32. package/dist/cli/commands/heartbeat.js +82 -27
  33. package/dist/cli/commands/heartbeat.js.map +1 -1
  34. package/dist/cli/commands/init.js +1 -2
  35. package/dist/cli/commands/init.js.map +1 -1
  36. package/dist/cli/commands/launcher/utils.js +37 -24
  37. package/dist/cli/commands/launcher/utils.js.map +1 -1
  38. package/dist/cli/commands/launcher-kernel.js +6 -3
  39. package/dist/cli/commands/launcher-kernel.js.map +1 -1
  40. package/dist/cli/commands/restart.js +102 -31
  41. package/dist/cli/commands/restart.js.map +1 -1
  42. package/dist/cli/commands/start-types.d.ts +1 -0
  43. package/dist/cli/commands/start-utils.d.ts +1 -0
  44. package/dist/cli/commands/start-utils.js +3 -0
  45. package/dist/cli/commands/start-utils.js.map +1 -1
  46. package/dist/cli/commands/start.js +217 -51
  47. package/dist/cli/commands/start.js.map +1 -1
  48. package/dist/cli/commands/status.js +48 -9
  49. package/dist/cli/commands/status.js.map +1 -1
  50. package/dist/cli/config/bootstrap-provider-templates.js +1 -1
  51. package/dist/cli/config/bootstrap-provider-templates.js.map +1 -1
  52. package/dist/cli/config/init-provider-catalog.js +3 -50
  53. package/dist/cli/config/init-provider-catalog.js.map +1 -1
  54. package/dist/cli/config/init-v2-builder.js +0 -1
  55. package/dist/cli/config/init-v2-builder.js.map +1 -1
  56. package/dist/cli/guardian/client.js +40 -18
  57. package/dist/cli/guardian/client.js.map +1 -1
  58. package/dist/cli/server/port-utils.d.ts +5 -0
  59. package/dist/cli/server/port-utils.js +45 -31
  60. package/dist/cli/server/port-utils.js.map +1 -1
  61. package/dist/commands/camoufox-fp.js +1 -1
  62. package/dist/commands/camoufox-fp.js.map +1 -1
  63. package/dist/commands/oauth.js +48 -64
  64. package/dist/commands/oauth.js.map +1 -1
  65. package/dist/commands/provider-update-maintenance.js +4 -4
  66. package/dist/commands/provider-update-maintenance.js.map +1 -1
  67. package/dist/commands/token-daemon.js +38 -10
  68. package/dist/commands/token-daemon.js.map +1 -1
  69. package/dist/commands/validate.js +31 -3
  70. package/dist/commands/validate.js.map +1 -1
  71. package/dist/config/provider-v2-loader.d.ts +5 -2
  72. package/dist/config/provider-v2-loader.js +80 -26
  73. package/dist/config/provider-v2-loader.js.map +1 -1
  74. package/dist/config/routecodex-config-loader.d.ts +1 -0
  75. package/dist/config/routecodex-config-loader.js +18 -207
  76. package/dist/config/routecodex-config-loader.js.map +1 -1
  77. package/dist/config/virtual-router-builder.d.ts +3 -2
  78. package/dist/config/virtual-router-builder.js +4 -214
  79. package/dist/config/virtual-router-builder.js.map +1 -1
  80. package/dist/constants/index.d.ts +2 -3
  81. package/dist/constants/index.js +2 -4
  82. package/dist/constants/index.js.map +1 -1
  83. package/dist/error-handling/route-error-hub.js +1 -0
  84. package/dist/error-handling/route-error-hub.js.map +1 -1
  85. package/dist/index.js +98 -21
  86. package/dist/index.js.map +1 -1
  87. package/dist/manager/modules/quota/antigravity-quota-manager.d.ts +1 -1
  88. package/dist/manager/modules/quota/antigravity-quota-manager.js +21 -12
  89. package/dist/manager/modules/quota/antigravity-quota-manager.js.map +1 -1
  90. package/dist/manager/modules/quota/antigravity-quota-runtime.d.ts +1 -1
  91. package/dist/manager/modules/quota/antigravity-quota-runtime.js +32 -45
  92. package/dist/manager/modules/quota/antigravity-quota-runtime.js.map +1 -1
  93. package/dist/manager/modules/quota/provider-key-normalization.js +10 -1
  94. package/dist/manager/modules/quota/provider-key-normalization.js.map +1 -1
  95. package/dist/manager/modules/quota/provider-quota-daemon.d.ts +2 -1
  96. package/dist/manager/modules/quota/provider-quota-daemon.error-helpers.d.ts +1 -1
  97. package/dist/manager/modules/quota/provider-quota-daemon.error-helpers.js +22 -12
  98. package/dist/manager/modules/quota/provider-quota-daemon.error-helpers.js.map +1 -1
  99. package/dist/manager/modules/quota/provider-quota-daemon.events.js +69 -33
  100. package/dist/manager/modules/quota/provider-quota-daemon.events.js.map +1 -1
  101. package/dist/manager/modules/quota/provider-quota-daemon.js +47 -35
  102. package/dist/manager/modules/quota/provider-quota-daemon.js.map +1 -1
  103. package/dist/manager/storage/file-store.js +3 -0
  104. package/dist/manager/storage/file-store.js.map +1 -1
  105. package/dist/modules/llmswitch/bridge/antigravity-signature.js +58 -20
  106. package/dist/modules/llmswitch/bridge/antigravity-signature.js.map +1 -1
  107. package/dist/modules/llmswitch/bridge/index.d.ts +1 -1
  108. package/dist/modules/llmswitch/bridge/index.js +1 -1
  109. package/dist/modules/llmswitch/bridge/index.js.map +1 -1
  110. package/dist/modules/llmswitch/bridge/runtime-integrations.d.ts +22 -16
  111. package/dist/modules/llmswitch/bridge/runtime-integrations.js +89 -30
  112. package/dist/modules/llmswitch/bridge/runtime-integrations.js.map +1 -1
  113. package/dist/modules/llmswitch/bridge/snapshot-recorder-runtime.js +10 -9
  114. package/dist/modules/llmswitch/bridge/snapshot-recorder-runtime.js.map +1 -1
  115. package/dist/modules/llmswitch/bridge/snapshot-recorder.js +3 -0
  116. package/dist/modules/llmswitch/bridge/snapshot-recorder.js.map +1 -1
  117. package/dist/modules/llmswitch/bridge/state-integrations.d.ts +1 -0
  118. package/dist/modules/llmswitch/bridge/state-integrations.js +263 -51
  119. package/dist/modules/llmswitch/bridge/state-integrations.js.map +1 -1
  120. package/dist/modules/llmswitch/bridge.d.ts +2 -2
  121. package/dist/modules/llmswitch/bridge.js +2 -2
  122. package/dist/modules/llmswitch/bridge.js.map +1 -1
  123. package/dist/provider-sdk/provider-add-template.d.ts +1 -1
  124. package/dist/provider-sdk/provider-add-template.js.map +1 -1
  125. package/dist/provider-sdk/provider-runtime-inference.js +48 -13
  126. package/dist/provider-sdk/provider-runtime-inference.js.map +1 -1
  127. package/dist/providers/auth/deepseek-account-token-acquirer.d.ts +24 -0
  128. package/dist/providers/auth/deepseek-account-token-acquirer.js +42 -13
  129. package/dist/providers/auth/deepseek-account-token-acquirer.js.map +1 -1
  130. package/dist/providers/auth/oauth-auth.js +12 -5
  131. package/dist/providers/auth/oauth-auth.js.map +1 -1
  132. package/dist/providers/auth/oauth-lifecycle/path-resolver.d.ts +0 -1
  133. package/dist/providers/auth/oauth-lifecycle/path-resolver.js +10 -9
  134. package/dist/providers/auth/oauth-lifecycle/path-resolver.js.map +1 -1
  135. package/dist/providers/auth/oauth-lifecycle/token-helpers.js +0 -1
  136. package/dist/providers/auth/oauth-lifecycle/token-helpers.js.map +1 -1
  137. package/dist/providers/auth/oauth-lifecycle/token-io.js +18 -8
  138. package/dist/providers/auth/oauth-lifecycle/token-io.js.map +1 -1
  139. package/dist/providers/auth/oauth-lifecycle.d.ts +5 -0
  140. package/dist/providers/auth/oauth-lifecycle.js +370 -353
  141. package/dist/providers/auth/oauth-lifecycle.js.map +1 -1
  142. package/dist/providers/auth/oauth-repair-env.js +0 -26
  143. package/dist/providers/auth/oauth-repair-env.js.map +1 -1
  144. package/dist/providers/auth/qwen-userinfo-helper.d.ts +11 -0
  145. package/dist/providers/auth/qwen-userinfo-helper.js +85 -13
  146. package/dist/providers/auth/qwen-userinfo-helper.js.map +1 -1
  147. package/dist/providers/auth/token-refresh/token-state.js +1 -4
  148. package/dist/providers/auth/token-refresh/token-state.js.map +1 -1
  149. package/dist/providers/auth/token-scanner/index.d.ts +1 -1
  150. package/dist/providers/auth/token-scanner/index.js +2 -2
  151. package/dist/providers/auth/token-storage/token-file-resolver.js +0 -3
  152. package/dist/providers/auth/token-storage/token-file-resolver.js.map +1 -1
  153. package/dist/providers/auth/token-storage/token-persistence.js +10 -3
  154. package/dist/providers/auth/token-storage/token-persistence.js.map +1 -1
  155. package/dist/providers/auth/tokenfile-auth.d.ts +0 -1
  156. package/dist/providers/auth/tokenfile-auth.js +23 -30
  157. package/dist/providers/auth/tokenfile-auth.js.map +1 -1
  158. package/dist/providers/core/api/provider-config.d.ts +1 -1
  159. package/dist/providers/core/api/provider-types.d.ts +2 -1
  160. package/dist/providers/core/config/camoufox-actions.js +23 -15
  161. package/dist/providers/core/config/camoufox-actions.js.map +1 -1
  162. package/dist/providers/core/config/camoufox-launcher.js +235 -121
  163. package/dist/providers/core/config/camoufox-launcher.js.map +1 -1
  164. package/dist/providers/core/config/oauth-flows.js +23 -1
  165. package/dist/providers/core/config/oauth-flows.js.map +1 -1
  166. package/dist/providers/core/config/provider-oauth-configs.js +2 -93
  167. package/dist/providers/core/config/provider-oauth-configs.js.map +1 -1
  168. package/dist/providers/core/config/service-profiles.d.ts +0 -1
  169. package/dist/providers/core/config/service-profiles.js +23 -66
  170. package/dist/providers/core/config/service-profiles.js.map +1 -1
  171. package/dist/providers/core/runtime/base-provider-runtime-helpers.js +4 -1
  172. package/dist/providers/core/runtime/base-provider-runtime-helpers.js.map +1 -1
  173. package/dist/providers/core/runtime/base-provider.js +21 -11
  174. package/dist/providers/core/runtime/base-provider.js.map +1 -1
  175. package/dist/providers/core/runtime/deepseek-http-provider-helpers.d.ts +1 -0
  176. package/dist/providers/core/runtime/deepseek-http-provider-helpers.js +28 -0
  177. package/dist/providers/core/runtime/deepseek-http-provider-helpers.js.map +1 -1
  178. package/dist/providers/core/runtime/deepseek-http-provider.d.ts +0 -2
  179. package/dist/providers/core/runtime/deepseek-http-provider.js +3 -33
  180. package/dist/providers/core/runtime/deepseek-http-provider.js.map +1 -1
  181. package/dist/providers/core/runtime/http-request-executor.d.ts +1 -0
  182. package/dist/providers/core/runtime/http-request-executor.js +131 -47
  183. package/dist/providers/core/runtime/http-request-executor.js.map +1 -1
  184. package/dist/providers/core/runtime/http-transport-provider.d.ts +5 -5
  185. package/dist/providers/core/runtime/http-transport-provider.js +97 -38
  186. package/dist/providers/core/runtime/http-transport-provider.js.map +1 -1
  187. package/dist/providers/core/runtime/openai-responses-sdk-transport.js +2 -1
  188. package/dist/providers/core/runtime/openai-responses-sdk-transport.js.map +1 -1
  189. package/dist/providers/core/runtime/provider-error-classifier.js +19 -126
  190. package/dist/providers/core/runtime/provider-error-classifier.js.map +1 -1
  191. package/dist/providers/core/runtime/provider-factory-helpers.d.ts +1 -0
  192. package/dist/providers/core/runtime/provider-factory-helpers.js +8 -12
  193. package/dist/providers/core/runtime/provider-factory-helpers.js.map +1 -1
  194. package/dist/providers/core/runtime/provider-factory.js +2 -9
  195. package/dist/providers/core/runtime/provider-factory.js.map +1 -1
  196. package/dist/providers/core/runtime/provider-failure-policy.d.ts +135 -0
  197. package/dist/providers/core/runtime/provider-failure-policy.js +685 -0
  198. package/dist/providers/core/runtime/provider-failure-policy.js.map +1 -0
  199. package/dist/providers/core/runtime/provider-family-profile-utils.d.ts +0 -10
  200. package/dist/providers/core/runtime/provider-family-profile-utils.js +0 -28
  201. package/dist/providers/core/runtime/provider-family-profile-utils.js.map +1 -1
  202. package/dist/providers/core/runtime/provider-http-executor-utils.js +40 -1
  203. package/dist/providers/core/runtime/provider-http-executor-utils.js.map +1 -1
  204. package/dist/providers/core/runtime/provider-request-header-orchestrator.d.ts +0 -2
  205. package/dist/providers/core/runtime/provider-request-header-orchestrator.js +35 -8
  206. package/dist/providers/core/runtime/provider-request-header-orchestrator.js.map +1 -1
  207. package/dist/providers/core/runtime/provider-response-postprocessor.js +3 -23
  208. package/dist/providers/core/runtime/provider-response-postprocessor.js.map +1 -1
  209. package/dist/providers/core/runtime/provider-runtime-utils.js +4 -1
  210. package/dist/providers/core/runtime/provider-runtime-utils.js.map +1 -1
  211. package/dist/providers/core/runtime/provider-startup-tasks.js +18 -2
  212. package/dist/providers/core/runtime/provider-startup-tasks.js.map +1 -1
  213. package/dist/providers/core/runtime/responses-provider-helpers.d.ts +1 -0
  214. package/dist/providers/core/runtime/responses-provider-helpers.js +11 -12
  215. package/dist/providers/core/runtime/responses-provider-helpers.js.map +1 -1
  216. package/dist/providers/core/runtime/responses-provider.js +15 -10
  217. package/dist/providers/core/runtime/responses-provider.js.map +1 -1
  218. package/dist/providers/core/runtime/transport/auth-provider-factory.d.ts +0 -1
  219. package/dist/providers/core/runtime/transport/auth-provider-factory.js +1 -15
  220. package/dist/providers/core/runtime/transport/auth-provider-factory.js.map +1 -1
  221. package/dist/providers/core/runtime/transport/index.d.ts +0 -1
  222. package/dist/providers/core/runtime/transport/index.js +0 -1
  223. package/dist/providers/core/runtime/transport/index.js.map +1 -1
  224. package/dist/providers/core/runtime/transport/oauth-recovery-handler.d.ts +2 -0
  225. package/dist/providers/core/runtime/transport/oauth-recovery-handler.js +76 -5
  226. package/dist/providers/core/runtime/transport/oauth-recovery-handler.js.map +1 -1
  227. package/dist/providers/core/runtime/transport/request-header-builder.d.ts +0 -1
  228. package/dist/providers/core/runtime/transport/request-header-builder.js +1 -7
  229. package/dist/providers/core/runtime/transport/request-header-builder.js.map +1 -1
  230. package/dist/providers/core/runtime/transport/runtime-detector.d.ts +0 -2
  231. package/dist/providers/core/runtime/transport/runtime-detector.js +0 -20
  232. package/dist/providers/core/runtime/transport/runtime-detector.js.map +1 -1
  233. package/dist/providers/core/runtime/transport/session-header-utils.d.ts +6 -0
  234. package/dist/providers/core/runtime/transport/session-header-utils.js +61 -2
  235. package/dist/providers/core/runtime/transport/session-header-utils.js.map +1 -1
  236. package/dist/providers/core/runtime/vercel-ai-sdk/anthropic-sdk-request-exec.js +2 -1
  237. package/dist/providers/core/runtime/vercel-ai-sdk/anthropic-sdk-request-exec.js.map +1 -1
  238. package/dist/providers/core/runtime/vercel-ai-sdk/openai-sdk-transport.js +2 -1
  239. package/dist/providers/core/runtime/vercel-ai-sdk/openai-sdk-transport.js.map +1 -1
  240. package/dist/providers/core/strategies/oauth-auth-code-flow.d.ts +1 -4
  241. package/dist/providers/core/strategies/oauth-auth-code-flow.js +26 -84
  242. package/dist/providers/core/strategies/oauth-auth-code-flow.js.map +1 -1
  243. package/dist/providers/core/strategies/oauth-device-flow.d.ts +2 -0
  244. package/dist/providers/core/strategies/oauth-device-flow.js +43 -8
  245. package/dist/providers/core/strategies/oauth-device-flow.js.map +1 -1
  246. package/dist/providers/core/utils/http-client.d.ts +7 -5
  247. package/dist/providers/core/utils/http-client.js +108 -33
  248. package/dist/providers/core/utils/http-client.js.map +1 -1
  249. package/dist/providers/core/utils/provider-error-reporter.d.ts +2 -2
  250. package/dist/providers/core/utils/provider-error-reporter.js +9 -85
  251. package/dist/providers/core/utils/provider-error-reporter.js.map +1 -1
  252. package/dist/providers/core/utils/provider-type-utils.js +1 -3
  253. package/dist/providers/core/utils/provider-type-utils.js.map +1 -1
  254. package/dist/providers/core/utils/qwen-client-fingerprint.d.ts +15 -0
  255. package/dist/providers/core/utils/qwen-client-fingerprint.js +47 -0
  256. package/dist/providers/core/utils/qwen-client-fingerprint.js.map +1 -0
  257. package/dist/providers/core/utils/snapshot-writer.d.ts +3 -0
  258. package/dist/providers/core/utils/snapshot-writer.js +385 -26
  259. package/dist/providers/core/utils/snapshot-writer.js.map +1 -1
  260. package/dist/providers/profile/families/qwen-profile.js +285 -22
  261. package/dist/providers/profile/families/qwen-profile.js.map +1 -1
  262. package/dist/providers/profile/profile-registry.js +0 -2
  263. package/dist/providers/profile/profile-registry.js.map +1 -1
  264. package/dist/providers/profile/provider-directory.js +0 -1
  265. package/dist/providers/profile/provider-directory.js.map +1 -1
  266. package/dist/providers/profile/provider-profile-loader.js +1 -1
  267. package/dist/providers/profile/provider-profile-loader.js.map +1 -1
  268. package/dist/server/handlers/chat-handler.js +6 -5
  269. package/dist/server/handlers/chat-handler.js.map +1 -1
  270. package/dist/server/handlers/config-admin-handler.js +44 -69
  271. package/dist/server/handlers/config-admin-handler.js.map +1 -1
  272. package/dist/server/handlers/handler-response-utils.js +190 -27
  273. package/dist/server/handlers/handler-response-utils.js.map +1 -1
  274. package/dist/server/handlers/handler-utils.d.ts +3 -0
  275. package/dist/server/handlers/handler-utils.js +72 -0
  276. package/dist/server/handlers/handler-utils.js.map +1 -1
  277. package/dist/server/handlers/images-handler.js +7 -7
  278. package/dist/server/handlers/images-handler.js.map +1 -1
  279. package/dist/server/handlers/messages-handler.js +6 -5
  280. package/dist/server/handlers/messages-handler.js.map +1 -1
  281. package/dist/server/handlers/responses-handler.js +32 -14
  282. package/dist/server/handlers/responses-handler.js.map +1 -1
  283. package/dist/server/handlers/sse-dispatcher.js +55 -13
  284. package/dist/server/handlers/sse-dispatcher.js.map +1 -1
  285. package/dist/server/handlers/types.d.ts +12 -0
  286. package/dist/server/runtime/http-server/daemon-admin/auth-handler.js +5 -2
  287. package/dist/server/runtime/http-server/daemon-admin/auth-handler.js.map +1 -1
  288. package/dist/server/runtime/http-server/daemon-admin/control-handler.js +62 -18
  289. package/dist/server/runtime/http-server/daemon-admin/control-handler.js.map +1 -1
  290. package/dist/server/runtime/http-server/daemon-admin/credentials-handler-utils.js +1 -1
  291. package/dist/server/runtime/http-server/daemon-admin/credentials-handler-utils.js.map +1 -1
  292. package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js +9 -9
  293. package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js.map +1 -1
  294. package/dist/server/runtime/http-server/daemon-admin/providers-handler-routing-utils.js +36 -10
  295. package/dist/server/runtime/http-server/daemon-admin/providers-handler-routing-utils.js.map +1 -1
  296. package/dist/server/runtime/http-server/daemon-admin/providers-handler.js +11 -11
  297. package/dist/server/runtime/http-server/daemon-admin/providers-handler.js.map +1 -1
  298. package/dist/server/runtime/http-server/daemon-admin/quota-handler.js +49 -8
  299. package/dist/server/runtime/http-server/daemon-admin/quota-handler.js.map +1 -1
  300. package/dist/server/runtime/http-server/daemon-admin-routes.d.ts +1 -0
  301. package/dist/server/runtime/http-server/daemon-admin-routes.js +46 -0
  302. package/dist/server/runtime/http-server/daemon-admin-routes.js.map +1 -1
  303. package/dist/server/runtime/http-server/executor/client-injection-flow.js +2 -0
  304. package/dist/server/runtime/http-server/executor/client-injection-flow.js.map +1 -1
  305. package/dist/server/runtime/http-server/executor/log-rollup.d.ts +38 -0
  306. package/dist/server/runtime/http-server/executor/log-rollup.js +775 -0
  307. package/dist/server/runtime/http-server/executor/log-rollup.js.map +1 -0
  308. package/dist/server/runtime/http-server/executor/provider-response-converter.js +654 -281
  309. package/dist/server/runtime/http-server/executor/provider-response-converter.js.map +1 -1
  310. package/dist/server/runtime/http-server/executor/provider-response-utils.js +34 -3
  311. package/dist/server/runtime/http-server/executor/provider-response-utils.js.map +1 -1
  312. package/dist/server/runtime/http-server/executor/provider-runtime-resolver.js +14 -68
  313. package/dist/server/runtime/http-server/executor/provider-runtime-resolver.js.map +1 -1
  314. package/dist/server/runtime/http-server/executor/request-executor-core-utils.js +26 -2
  315. package/dist/server/runtime/http-server/executor/request-executor-core-utils.js.map +1 -1
  316. package/dist/server/runtime/http-server/executor/request-retry-helpers.js +20 -2
  317. package/dist/server/runtime/http-server/executor/request-retry-helpers.js.map +1 -1
  318. package/dist/server/runtime/http-server/executor/servertool-adapter-context.d.ts +10 -0
  319. package/dist/server/runtime/http-server/executor/servertool-adapter-context.js +120 -0
  320. package/dist/server/runtime/http-server/executor/servertool-adapter-context.js.map +1 -0
  321. package/dist/server/runtime/http-server/executor/servertool-followup-dispatch.d.ts +35 -0
  322. package/dist/server/runtime/http-server/executor/servertool-followup-dispatch.js +101 -0
  323. package/dist/server/runtime/http-server/executor/servertool-followup-dispatch.js.map +1 -0
  324. package/dist/server/runtime/http-server/executor/servertool-followup-error.d.ts +46 -0
  325. package/dist/server/runtime/http-server/executor/servertool-followup-error.js +127 -0
  326. package/dist/server/runtime/http-server/executor/servertool-followup-error.js.map +1 -0
  327. package/dist/server/runtime/http-server/executor/servertool-followup-metadata.d.ts +7 -0
  328. package/dist/server/runtime/http-server/executor/servertool-followup-metadata.js +186 -0
  329. package/dist/server/runtime/http-server/executor/servertool-followup-metadata.js.map +1 -0
  330. package/dist/server/runtime/http-server/executor/servertool-request-normalizer.d.ts +2 -0
  331. package/dist/server/runtime/http-server/executor/servertool-request-normalizer.js +56 -0
  332. package/dist/server/runtime/http-server/executor/servertool-request-normalizer.js.map +1 -0
  333. package/dist/server/runtime/http-server/executor/servertool-response-normalizer.d.ts +8 -0
  334. package/dist/server/runtime/http-server/executor/servertool-response-normalizer.js +31 -0
  335. package/dist/server/runtime/http-server/executor/servertool-response-normalizer.js.map +1 -0
  336. package/dist/server/runtime/http-server/executor/servertool-runtime-log.d.ts +8 -0
  337. package/dist/server/runtime/http-server/executor/servertool-runtime-log.js +33 -0
  338. package/dist/server/runtime/http-server/executor/servertool-runtime-log.js.map +1 -0
  339. package/dist/server/runtime/http-server/executor/sse-error-handler.js +37 -0
  340. package/dist/server/runtime/http-server/executor/sse-error-handler.js.map +1 -1
  341. package/dist/server/runtime/http-server/executor/usage-aggregator.js +32 -2
  342. package/dist/server/runtime/http-server/executor/usage-aggregator.js.map +1 -1
  343. package/dist/server/runtime/http-server/executor/usage-logger.d.ts +12 -0
  344. package/dist/server/runtime/http-server/executor/usage-logger.js +56 -1
  345. package/dist/server/runtime/http-server/executor/usage-logger.js.map +1 -1
  346. package/dist/server/runtime/http-server/executor-metadata.d.ts +15 -0
  347. package/dist/server/runtime/http-server/executor-metadata.js +60 -18
  348. package/dist/server/runtime/http-server/executor-metadata.js.map +1 -1
  349. package/dist/server/runtime/http-server/executor-provider.d.ts +2 -0
  350. package/dist/server/runtime/http-server/executor-provider.js +88 -205
  351. package/dist/server/runtime/http-server/executor-provider.js.map +1 -1
  352. package/dist/server/runtime/http-server/executor-response.js +30 -149
  353. package/dist/server/runtime/http-server/executor-response.js.map +1 -1
  354. package/dist/server/runtime/http-server/http-server-bootstrap.js +53 -17
  355. package/dist/server/runtime/http-server/http-server-bootstrap.js.map +1 -1
  356. package/dist/server/runtime/http-server/http-server-legacy-pipeline.js +28 -1
  357. package/dist/server/runtime/http-server/http-server-legacy-pipeline.js.map +1 -1
  358. package/dist/server/runtime/http-server/http-server-lifecycle.js +17 -4
  359. package/dist/server/runtime/http-server/http-server-lifecycle.js.map +1 -1
  360. package/dist/server/runtime/http-server/http-server-runtime-providers.js +42 -13
  361. package/dist/server/runtime/http-server/http-server-runtime-providers.js.map +1 -1
  362. package/dist/server/runtime/http-server/http-server-runtime-setup.js +40 -2
  363. package/dist/server/runtime/http-server/http-server-runtime-setup.js.map +1 -1
  364. package/dist/server/runtime/http-server/hub-shadow-compare.js +8 -4
  365. package/dist/server/runtime/http-server/hub-shadow-compare.js.map +1 -1
  366. package/dist/server/runtime/http-server/managed-process-probe.js +30 -4
  367. package/dist/server/runtime/http-server/managed-process-probe.js.map +1 -1
  368. package/dist/server/runtime/http-server/middleware.js +32 -4
  369. package/dist/server/runtime/http-server/middleware.js.map +1 -1
  370. package/dist/server/runtime/http-server/provider-traffic-governor.d.ts +45 -1
  371. package/dist/server/runtime/http-server/provider-traffic-governor.js +697 -111
  372. package/dist/server/runtime/http-server/provider-traffic-governor.js.map +1 -1
  373. package/dist/server/runtime/http-server/provider-utils.js +2 -6
  374. package/dist/server/runtime/http-server/provider-utils.js.map +1 -1
  375. package/dist/server/runtime/http-server/request-activity-tracker.d.ts +4 -0
  376. package/dist/server/runtime/http-server/request-activity-tracker.js +54 -11
  377. package/dist/server/runtime/http-server/request-activity-tracker.js.map +1 -1
  378. package/dist/server/runtime/http-server/request-executor.d.ts +247 -0
  379. package/dist/server/runtime/http-server/request-executor.js +2444 -334
  380. package/dist/server/runtime/http-server/request-executor.js.map +1 -1
  381. package/dist/server/runtime/http-server/routes.js +59 -16
  382. package/dist/server/runtime/http-server/routes.js.map +1 -1
  383. package/dist/server/runtime/http-server/runtime-manager.js +0 -15
  384. package/dist/server/runtime/http-server/runtime-manager.js.map +1 -1
  385. package/dist/server/runtime/http-server/session-client-registry-utils.js +46 -10
  386. package/dist/server/runtime/http-server/session-client-registry-utils.js.map +1 -1
  387. package/dist/server/runtime/http-server/session-client-registry.js +22 -4
  388. package/dist/server/runtime/http-server/session-client-registry.js.map +1 -1
  389. package/dist/server/runtime/http-server/session-client-routes.js +40 -18
  390. package/dist/server/runtime/http-server/session-client-routes.js.map +1 -1
  391. package/dist/server/runtime/http-server/session-dir.js +35 -2
  392. package/dist/server/runtime/http-server/session-dir.js.map +1 -1
  393. package/dist/server/runtime/http-server/session-scope-resolution.js +38 -9
  394. package/dist/server/runtime/http-server/session-scope-resolution.js.map +1 -1
  395. package/dist/server/runtime/http-server/session-storage-cleanup.js +64 -27
  396. package/dist/server/runtime/http-server/session-storage-cleanup.js.map +1 -1
  397. package/dist/server/runtime/http-server/stats-manager.d.ts +5 -0
  398. package/dist/server/runtime/http-server/stats-manager.js +138 -6
  399. package/dist/server/runtime/http-server/stats-manager.js.map +1 -1
  400. package/dist/server/runtime/http-server/tmux-injection-history.js +30 -4
  401. package/dist/server/runtime/http-server/tmux-injection-history.js.map +1 -1
  402. package/dist/server/runtime/http-server/tmux-session-probe.d.ts +3 -1
  403. package/dist/server/runtime/http-server/tmux-session-probe.js +198 -9
  404. package/dist/server/runtime/http-server/tmux-session-probe.js.map +1 -1
  405. package/dist/server/utils/client-connection-state.d.ts +1 -0
  406. package/dist/server/utils/client-connection-state.js +45 -5
  407. package/dist/server/utils/client-connection-state.js.map +1 -1
  408. package/dist/server/utils/finish-reason.js +61 -2
  409. package/dist/server/utils/finish-reason.js.map +1 -1
  410. package/dist/server/utils/http-error-mapper.d.ts +4 -0
  411. package/dist/server/utils/http-error-mapper.js +31 -6
  412. package/dist/server/utils/http-error-mapper.js.map +1 -1
  413. package/dist/server/utils/stage-logger.js +42 -13
  414. package/dist/server/utils/stage-logger.js.map +1 -1
  415. package/dist/server-lifecycle/port-utils.js +6 -2
  416. package/dist/server-lifecycle/port-utils.js.map +1 -1
  417. package/dist/token-daemon/index.js +44 -15
  418. package/dist/token-daemon/index.js.map +1 -1
  419. package/dist/token-daemon/leader-lock.js +65 -7
  420. package/dist/token-daemon/leader-lock.js.map +1 -1
  421. package/dist/token-daemon/provider-registry.js +1 -1
  422. package/dist/token-daemon/provider-registry.js.map +1 -1
  423. package/dist/token-daemon/server-utils.d.ts +11 -0
  424. package/dist/token-daemon/server-utils.js +71 -18
  425. package/dist/token-daemon/server-utils.js.map +1 -1
  426. package/dist/token-daemon/token-daemon.d.ts +0 -1
  427. package/dist/token-daemon/token-daemon.js +81 -63
  428. package/dist/token-daemon/token-daemon.js.map +1 -1
  429. package/dist/token-daemon/token-types.d.ts +1 -1
  430. package/dist/token-daemon/token-types.js +0 -1
  431. package/dist/token-daemon/token-types.js.map +1 -1
  432. package/dist/token-daemon/token-utils.js +4 -2
  433. package/dist/token-daemon/token-utils.js.map +1 -1
  434. package/dist/tools/provider-update/fetch-models.js +1 -5
  435. package/dist/tools/provider-update/fetch-models.js.map +1 -1
  436. package/dist/utils/error-handler-registry.js +50 -13
  437. package/dist/utils/error-handler-registry.js.map +1 -1
  438. package/dist/utils/errorsamples.d.ts +3 -1
  439. package/dist/utils/errorsamples.js +198 -14
  440. package/dist/utils/errorsamples.js.map +1 -1
  441. package/dist/utils/http-health-probe.d.ts +42 -0
  442. package/dist/utils/http-health-probe.js +231 -0
  443. package/dist/utils/http-health-probe.js.map +1 -0
  444. package/dist/utils/managed-server-pids.js +2 -2
  445. package/dist/utils/managed-server-pids.js.map +1 -1
  446. package/dist/utils/module-config-reader.js +11 -1
  447. package/dist/utils/module-config-reader.js.map +1 -1
  448. package/dist/utils/runtime-package-root.d.ts +2 -0
  449. package/dist/utils/runtime-package-root.js +47 -0
  450. package/dist/utils/runtime-package-root.js.map +1 -0
  451. package/dist/utils/snapshot-local-disk-gate.d.ts +3 -0
  452. package/dist/utils/snapshot-local-disk-gate.js +50 -0
  453. package/dist/utils/snapshot-local-disk-gate.js.map +1 -0
  454. package/dist/utils/snapshot-payload-guard.d.ts +1 -0
  455. package/dist/utils/snapshot-payload-guard.js +234 -0
  456. package/dist/utils/snapshot-payload-guard.js.map +1 -0
  457. package/dist/utils/snapshot-request-retention.d.ts +3 -0
  458. package/dist/utils/snapshot-request-retention.js +128 -0
  459. package/dist/utils/snapshot-request-retention.js.map +1 -0
  460. package/dist/utils/snapshot-stage-policy.d.ts +3 -0
  461. package/dist/utils/snapshot-stage-policy.js +111 -0
  462. package/dist/utils/snapshot-stage-policy.js.map +1 -0
  463. package/dist/utils/snapshot-writer.js +124 -127
  464. package/dist/utils/snapshot-writer.js.map +1 -1
  465. package/docs/CHAT_PROCESS_PROTOCOL_AND_PIPELINE.md +4 -0
  466. package/docs/CONFIG_ARCHITECTURE.md +2 -2
  467. package/docs/INSTALLATION_AND_QUICKSTART.md +5 -5
  468. package/docs/OAUTH.md +2 -5
  469. package/docs/PORTS.md +1 -1
  470. package/docs/PROVIDERS_BUILTIN.md +1 -5
  471. package/docs/PROVIDER_TYPES.md +1 -1
  472. package/docs/agent-routing/10-runtime-ssot-routing.md +4 -0
  473. package/docs/agent-routing/20-build-test-release-routing.md +2 -2
  474. package/docs/agent-routing/30-servertool-lifecycle-routing.md +2 -0
  475. package/docs/agent-routing/40-task-memory-routing.md +22 -2
  476. package/docs/audit/286.1-provider-failure-policy-audit.md +341 -0
  477. package/docs/audits/2026-04-26-fallback-silent-failure-audit.md +119 -0
  478. package/docs/audits/2026-04-27-provider-failure-policy-ssot-audit.md +153 -0
  479. package/docs/chat-process-continuation-state-contract.md +196 -0
  480. package/docs/chat-semantic-expansion-plan.md +2 -0
  481. package/docs/daemon-admin-api-design.md +9 -9
  482. package/docs/design/provider-failure-policy-ssot.md +215 -0
  483. package/docs/design/reasoning-stop-lifecycle.md +90 -0
  484. package/docs/design/servertool-unified-skeleton.md +202 -0
  485. package/docs/design/websearch-servertool-orchestration.md +190 -0
  486. package/docs/error-handling-v2.md +120 -11
  487. package/docs/protocol-compatibility-matrix.md +147 -0
  488. package/docs/providers/provider-composite-design.md +4 -5
  489. package/docs/providers/provider-composite-testing.md +1 -1
  490. package/docs/providers/provider-type-only-migration.md +2 -15
  491. package/docs/refactoring/compatibility-v2-architecture-design.md +1 -3
  492. package/docs/refactoring/host-164.3-responsibility-migration.md +0 -1
  493. package/docs/routing-instructions.md +42 -1
  494. package/docs/stop-message-auto.md +0 -1
  495. package/docs/token-refresh-daemon-plan.md +14 -14
  496. package/docs/v2-architecture/IMPLEMENTATION-ROADMAP.md +1 -1
  497. package/docs/v2-architecture/PROVIDER-V2-CHANGESET-RELEASE-CHECKLIST.md +1 -9
  498. package/docs/v2-architecture/PROVIDER-V2-LAYERING-ADR-DRAFT.md +3 -4
  499. package/docs/v2-architecture/PROVIDER-V2-MIGRATION-MATRIX-DRAFT.md +4 -15
  500. package/docs/v2-architecture/PROVIDER-V2-PHASED-MIGRATION-ROLLBACK-DRAFT.md +4 -5
  501. package/docs/v2-architecture/PROVIDER-V2-PROFILE-API-REGISTRY-DRAFT.md +4 -4
  502. package/docs/v2-architecture/PROVIDER-V2-REFACTOR-OVERVIEW-DRAFT.md +1 -2
  503. package/docs/v2-architecture/PROVIDER-V2-VERIFICATION-MATRIX-DRAFT.md +2 -2
  504. package/node_modules/@jsonstudio/llms/dist/config-unified/unified-config.js +36 -10
  505. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/deepseek-web-request.js +7 -0
  506. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/deepseek-web-response.js +2 -2
  507. package/node_modules/@jsonstudio/llms/dist/conversion/compat/antigravity-session-signature.js +33 -17
  508. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profile-registry/header-policies.d.ts +20 -0
  509. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profile-registry/header-policies.js +79 -0
  510. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profile-registry/policy-overrides.d.ts +16 -0
  511. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profile-registry/policy-overrides.js +27 -0
  512. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profile-registry/provider-resolver.d.ts +26 -0
  513. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profile-registry/provider-resolver.js +59 -0
  514. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profile-registry/registry.d.ts +35 -0
  515. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profile-registry/registry.js +154 -0
  516. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profile-registry/types.d.ts +75 -0
  517. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profile-registry/types.js +8 -0
  518. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/anthropic-claude-code.json +13 -7
  519. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-claude-code.json +13 -8
  520. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-deepseek-web.json +37 -8
  521. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-qwen.json +48 -11
  522. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/compat-passthrough.json +6 -0
  523. package/node_modules/@jsonstudio/llms/dist/conversion/compat/provider-resolution-config.json +24 -0
  524. package/node_modules/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/anthropic-mapper-config.js +0 -1
  525. package/node_modules/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/anthropic-mapper-from-chat.js +54 -7
  526. package/node_modules/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/anthropic-mapper-to-chat.js +15 -2
  527. package/node_modules/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/anthropic-semantics-audit.d.ts +11 -0
  528. package/node_modules/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/anthropic-semantics-audit.js +16 -30
  529. package/node_modules/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/gemini-mapper-config.js +0 -1
  530. package/node_modules/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/gemini-mapper-from-chat.js +15 -1
  531. package/node_modules/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/gemini-mapping-audit.d.ts +10 -0
  532. package/node_modules/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/gemini-mapping-audit.js +9 -30
  533. package/node_modules/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/protocol-mapping-audit.d.ts +43 -0
  534. package/node_modules/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/protocol-mapping-audit.js +148 -0
  535. package/node_modules/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/responses-mapper-from-chat.js +16 -6
  536. package/node_modules/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/responses-mapper-helpers.d.ts +2 -1
  537. package/node_modules/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/responses-mapper-helpers.js +65 -3
  538. package/node_modules/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/responses-mapper-to-chat.js +1 -1
  539. package/node_modules/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/responses-mapper.d.ts +1 -1
  540. package/node_modules/@jsonstudio/llms/dist/conversion/hub/operation-table/semantic-mappers/responses-mapper.js +1 -1
  541. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-types.d.ts +14 -154
  542. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline-chat-process-request-utils.d.ts +6 -1
  543. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline-chat-process-request-utils.js +83 -3
  544. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline-execute-chat-process-entry.js +6 -5
  545. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline-execute-request-stage-inbound.d.ts +0 -1
  546. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline-execute-request-stage-inbound.js +9 -5
  547. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline-execute-request-stage-provider-payload.js +132 -1
  548. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline-execute-request-stage.js +0 -1
  549. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline-heavy-input-fastpath.d.ts +4 -22
  550. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline-heavy-input-fastpath.js +109 -139
  551. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline-max-tokens-policy.js +40 -1
  552. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline-route-and-outbound.d.ts +0 -1
  553. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline-route-and-outbound.js +19 -2
  554. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline.d.ts +0 -2
  555. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline.js +45 -43
  556. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/route-aware-responses-continuation.d.ts +10 -0
  557. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/route-aware-responses-continuation.js +143 -0
  558. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage2_semantic_map/index.js +37 -0
  559. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage2_semantic_map/semantic-lift.js +14 -2
  560. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/responses-context-snapshot.d.ts +3 -0
  561. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_inbound/req_inbound_stage3_context_capture/responses-context-snapshot.js +22 -11
  562. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/chat-process-semantics-bridge.js +59 -2
  563. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/client-remap-protocol-switch.d.ts +1 -0
  564. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/client-remap-protocol-switch.js +3 -1
  565. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/index.d.ts +1 -0
  566. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/index.js +2 -1
  567. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage1_tool_governance/index.d.ts +2 -0
  568. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage1_tool_governance/index.js +53 -1
  569. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage2_finalize/index.js +4 -1
  570. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage3_servertool_orchestration/index.d.ts +1 -0
  571. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/resp_process/resp_process_stage3_servertool_orchestration/index.js +16 -0
  572. package/node_modules/@jsonstudio/llms/dist/conversion/hub/policy/policy-engine.js +14 -4
  573. package/node_modules/@jsonstudio/llms/dist/conversion/hub/process/chat-process-anthropic-alias.d.ts +1 -0
  574. package/node_modules/@jsonstudio/llms/dist/conversion/hub/process/chat-process-anthropic-alias.js +29 -1
  575. package/node_modules/@jsonstudio/llms/dist/conversion/hub/process/chat-process-pending-tool-sync.js +38 -2
  576. package/node_modules/@jsonstudio/llms/dist/conversion/hub/process/chat-process-request-sanitizer.js +164 -1
  577. package/node_modules/@jsonstudio/llms/dist/conversion/hub/response/provider-response.js +27 -2
  578. package/node_modules/@jsonstudio/llms/dist/conversion/hub/response/response-mappers.d.ts +9 -3
  579. package/node_modules/@jsonstudio/llms/dist/conversion/hub/response/response-mappers.js +8 -7
  580. package/node_modules/@jsonstudio/llms/dist/conversion/hub/response/response-runtime-anthropic.js +20 -5
  581. package/node_modules/@jsonstudio/llms/dist/conversion/hub/snapshot-recorder.js +1 -247
  582. package/node_modules/@jsonstudio/llms/dist/conversion/hub/types/chat-envelope.d.ts +84 -4
  583. package/node_modules/@jsonstudio/llms/dist/conversion/pipeline/codecs/v2/responses-openai-pipeline.js +26 -1
  584. package/node_modules/@jsonstudio/llms/dist/conversion/responses/responses-openai-bridge/response-payload.js +10 -9
  585. package/node_modules/@jsonstudio/llms/dist/conversion/responses/responses-openai-bridge/utils.js +20 -5
  586. package/node_modules/@jsonstudio/llms/dist/conversion/responses/responses-openai-bridge.js +88 -4
  587. package/node_modules/@jsonstudio/llms/dist/conversion/shared/anthropic-message-utils-core.js +5 -1
  588. package/node_modules/@jsonstudio/llms/dist/conversion/shared/anthropic-message-utils-openai-request.js +55 -14
  589. package/node_modules/@jsonstudio/llms/dist/conversion/shared/anthropic-message-utils-tool-schema.js +1 -2
  590. package/node_modules/@jsonstudio/llms/dist/conversion/shared/anthropic-message-utils.js +38 -15
  591. package/node_modules/@jsonstudio/llms/dist/conversion/shared/openai-message-normalize.js +45 -6
  592. package/node_modules/@jsonstudio/llms/dist/conversion/shared/responses-conversation-store.d.ts +15 -0
  593. package/node_modules/@jsonstudio/llms/dist/conversion/shared/responses-conversation-store.js +157 -13
  594. package/node_modules/@jsonstudio/llms/dist/conversion/shared/responses-reasoning-registry.d.ts +8 -2
  595. package/node_modules/@jsonstudio/llms/dist/conversion/shared/responses-reasoning-registry.js +103 -9
  596. package/node_modules/@jsonstudio/llms/dist/conversion/shared/responses-response-utils.js +10 -10
  597. package/node_modules/@jsonstudio/llms/dist/conversion/shared/tool-filter-pipeline.js +59 -9
  598. package/node_modules/@jsonstudio/llms/dist/conversion/shared/tool-governor-guards.d.ts +1 -1
  599. package/node_modules/@jsonstudio/llms/dist/conversion/shared/tool-governor-guards.js +54 -43
  600. package/node_modules/@jsonstudio/llms/dist/conversion/shared/tool-governor.js +62 -8
  601. package/node_modules/@jsonstudio/llms/dist/conversion/snapshot-utils.js +121 -8
  602. package/node_modules/@jsonstudio/llms/dist/filters/engine.js +64 -6
  603. package/node_modules/@jsonstudio/llms/dist/filters/special/request-tool-list-filter.js +32 -11
  604. package/node_modules/@jsonstudio/llms/dist/filters/special/request-toolcalls-stringify.js +26 -1
  605. package/node_modules/@jsonstudio/llms/dist/filters/special/request-tools-normalize.js +46 -7
  606. package/node_modules/@jsonstudio/llms/dist/filters/special/response-tool-arguments-blacklist.js +10 -1
  607. package/node_modules/@jsonstudio/llms/dist/filters/special/response-tool-arguments-schema-converge.js +10 -1
  608. package/node_modules/@jsonstudio/llms/dist/filters/special/response-tool-arguments-stringify.js +30 -5
  609. package/node_modules/@jsonstudio/llms/dist/filters/special/response-tool-arguments-whitelist.js +10 -1
  610. package/node_modules/@jsonstudio/llms/dist/filters/special/tool-filter-hooks.js +16 -14
  611. package/node_modules/@jsonstudio/llms/dist/filters/utils/snapshot-writer.js +47 -5
  612. package/node_modules/@jsonstudio/llms/dist/guidance/index.js +16 -2
  613. package/node_modules/@jsonstudio/llms/dist/http/sse-response.js +42 -6
  614. package/node_modules/@jsonstudio/llms/dist/native/router_hotpath_napi.node +0 -0
  615. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/bootstrap/auth-utils.js +33 -31
  616. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/bootstrap/provider-normalization.d.ts +6 -0
  617. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/bootstrap/provider-normalization.js +78 -98
  618. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/bootstrap/responses-helpers.js +22 -2
  619. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/bootstrap/routing-config.js +56 -3
  620. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/bootstrap/streaming-helpers.js +19 -1
  621. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/bootstrap.js +62 -293
  622. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/classifier.js +11 -82
  623. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine/antigravity/alias-lease.js +42 -15
  624. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine/cooldown-manager.js +55 -3
  625. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine/health/index.js +66 -15
  626. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine/routing-pools/index.js +44 -8
  627. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine/routing-state/keys.d.ts +7 -0
  628. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine/routing-state/keys.js +65 -21
  629. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine/routing-state/store.js +19 -2
  630. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine/sticky-session-manager.d.ts +9 -0
  631. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine/sticky-session-manager.js +139 -4
  632. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-logging.js +2 -1
  633. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-clock-reminder-semantics.js +68 -59
  634. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-governance-semantics.js +156 -157
  635. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-node-result-semantics.d.ts +1 -0
  636. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-node-result-semantics.js +31 -0
  637. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-chat-process-servertool-orchestration-semantics.js +94 -95
  638. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-compat-action-semantics.d.ts +0 -1
  639. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-compat-action-semantics.js +0 -7
  640. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-bridge-action-semantics-parsers.d.ts +1 -1
  641. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-bridge-action-semantics-parsers.js +203 -305
  642. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-bridge-action-semantics-tools-post.js +35 -0
  643. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-bridge-action-semantics-tools-request.js +2 -1
  644. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-bridge-action-semantics-types.d.ts +2 -0
  645. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-bridge-policy-semantics.js +173 -154
  646. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-edge-stage-semantics.d.ts +1 -0
  647. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-edge-stage-semantics.js +106 -57
  648. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-inbound-outbound-semantics.js +122 -114
  649. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-orchestration-semantics-builders.d.ts +1 -0
  650. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-orchestration-semantics-metadata-policy.js +100 -86
  651. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-orchestration-semantics-passthrough.js +52 -33
  652. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-orchestration-semantics-protocol.js +79 -62
  653. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-orchestration-semantics.d.ts +1 -0
  654. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-inbound-semantics-parsers.js +50 -33
  655. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-inbound-semantics-types.d.ts +2 -0
  656. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-outbound-semantics-parsers.d.ts +1 -1
  657. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-req-outbound-semantics-parsers.js +161 -177
  658. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-resp-semantics-outbound-tools.d.ts +1 -0
  659. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-resp-semantics-outbound-tools.js +1 -0
  660. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-resp-semantics-parsers.d.ts +1 -1
  661. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-hub-pipeline-resp-semantics-parsers.js +231 -286
  662. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-router-hotpath-analysis.js +143 -164
  663. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-router-hotpath-required-exports.d.ts +1 -1
  664. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-router-hotpath-required-exports.js +8 -1
  665. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-shared-conversion-semantics-reasoning.js +57 -28
  666. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-shared-conversion-semantics-responses.d.ts +8 -0
  667. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-shared-conversion-semantics-responses.js +76 -0
  668. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-shared-conversion-semantics.d.ts +1 -1
  669. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-shared-conversion-semantics.js +1 -1
  670. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-virtual-router-bootstrap-providers.d.ts +24 -0
  671. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-virtual-router-bootstrap-providers.js +78 -0
  672. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-virtual-router-bootstrap-routing.d.ts +17 -0
  673. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/native-virtual-router-bootstrap-routing.js +72 -0
  674. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/route-utils.js +9 -0
  675. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-selection/tier-selection-select.js +11 -5
  676. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine.js +4 -39
  677. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/features.js +199 -31
  678. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/health-manager.js +7 -2
  679. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/load-balancer.d.ts +3 -0
  680. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/load-balancer.js +47 -3
  681. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/native-error.d.ts +11 -0
  682. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/native-error.js +71 -0
  683. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/provider-registry.js +81 -2
  684. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/provider-runtime-ingress.d.ts +24 -0
  685. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/provider-runtime-ingress.js +139 -0
  686. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/routing-instructions/parse.js +21 -1
  687. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/routing-instructions/state.js +46 -0
  688. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/routing-instructions/types.d.ts +7 -0
  689. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/routing-stop-message-state-codec.js +30 -1
  690. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/sticky-session-store.js +44 -15
  691. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/stop-message-state-sync.d.ts +1 -1
  692. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/stop-message-state-sync.js +10 -2
  693. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/success-center.js +39 -2
  694. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/tool-signals.d.ts +1 -0
  695. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/tool-signals.js +25 -24
  696. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/types.d.ts +3 -0
  697. package/node_modules/@jsonstudio/llms/dist/servertool/engine.js +255 -71
  698. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/clock.js +20 -2
  699. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/followup-request-builder.js +120 -85
  700. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/memory-appender.d.ts +6 -0
  701. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/memory-appender.js +42 -0
  702. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/reasoning-only-continue.js +1 -1
  703. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/reasoning-stop-guard.js +630 -0
  704. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/reasoning-stop-state.d.ts +24 -0
  705. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/reasoning-stop-state.js +606 -0
  706. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/reasoning-stop.js +292 -0
  707. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/stop-message-auto/{iflow-followup.d.ts → ai-followup.d.ts} +3 -3
  708. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/stop-message-auto/{iflow-followup.js → ai-followup.js} +76 -81
  709. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/stop-message-auto/config.d.ts +1 -2
  710. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/stop-message-auto/config.js +2 -6
  711. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/stop-message-auto/runtime-utils.d.ts +1 -0
  712. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/stop-message-auto/runtime-utils.js +51 -11
  713. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/stop-message-auto.js +5 -4
  714. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/web-search-auto-trigger.d.ts +9 -0
  715. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/web-search-auto-trigger.js +91 -0
  716. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/web-search.js +1 -131
  717. package/node_modules/@jsonstudio/llms/dist/servertool/heartbeat/session-store.js +49 -18
  718. package/node_modules/@jsonstudio/llms/dist/servertool/registry.js +3 -0
  719. package/node_modules/@jsonstudio/llms/dist/servertool/server-side-tools.d.ts +2 -2
  720. package/node_modules/@jsonstudio/llms/dist/servertool/server-side-tools.js +14 -10
  721. package/node_modules/@jsonstudio/llms/dist/servertool/strip-servertool-calls.js +2 -3
  722. package/node_modules/@jsonstudio/llms/dist/servertool/types.d.ts +11 -1
  723. package/node_modules/@jsonstudio/llms/dist/sse/json-to-sse/chat-json-to-sse-converter.js +26 -1
  724. package/node_modules/@jsonstudio/llms/dist/sse/json-to-sse/event-generators/chat.d.ts +2 -2
  725. package/node_modules/@jsonstudio/llms/dist/sse/json-to-sse/event-generators/chat.js +38 -3
  726. package/node_modules/@jsonstudio/llms/dist/sse/json-to-sse/sequencers/chat-sequencer.js +6 -3
  727. package/node_modules/@jsonstudio/llms/dist/sse/shared/chat-serializer.js +27 -3
  728. package/node_modules/@jsonstudio/llms/dist/sse/shared/constants.d.ts +6 -6
  729. package/node_modules/@jsonstudio/llms/dist/sse/shared/constants.js +3 -3
  730. package/node_modules/@jsonstudio/llms/dist/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +1 -0
  731. package/node_modules/@jsonstudio/llms/dist/sse/sse-to-json/anthropic-sse-to-json-converter.js +36 -1
  732. package/node_modules/@jsonstudio/llms/dist/sse/sse-to-json/builders/anthropic-response-builder.js +6 -20
  733. package/node_modules/@jsonstudio/llms/dist/sse/sse-to-json/builders/response-builder.d.ts +3 -0
  734. package/node_modules/@jsonstudio/llms/dist/sse/sse-to-json/builders/response-builder.js +125 -42
  735. package/node_modules/@jsonstudio/llms/dist/sse/sse-to-json/chat-sse-to-json-converter.js +59 -10
  736. package/node_modules/@jsonstudio/llms/dist/sse/sse-to-json/parsers/sse-parser.js +2 -0
  737. package/node_modules/@jsonstudio/llms/dist/sse/sse-to-json/responses-sse-to-json-converter.d.ts +1 -0
  738. package/node_modules/@jsonstudio/llms/dist/sse/sse-to-json/responses-sse-to-json-converter.js +71 -2
  739. package/node_modules/@jsonstudio/llms/dist/sse/types/chat-types.d.ts +1 -0
  740. package/node_modules/@jsonstudio/llms/dist/sse/types/chat-types.js +1 -1
  741. package/node_modules/@jsonstudio/llms/dist/sse/types/conversion-context.js +2 -2
  742. package/node_modules/@jsonstudio/llms/dist/sse/types/index.d.ts +1 -1
  743. package/node_modules/@jsonstudio/llms/dist/sse/types/responses-types.d.ts +1 -1
  744. package/node_modules/@jsonstudio/llms/dist/sse/types/responses-types.js +1 -1
  745. package/node_modules/@jsonstudio/llms/dist/telemetry/stats-center.js +34 -12
  746. package/node_modules/@jsonstudio/llms/dist/tools/apply-patch/patch-text/fuzzy-match.d.ts +14 -0
  747. package/node_modules/@jsonstudio/llms/dist/tools/apply-patch/patch-text/fuzzy-match.js +174 -0
  748. package/node_modules/@jsonstudio/llms/dist/tools/apply-patch/patch-text/normalize.js +148 -0
  749. package/node_modules/@jsonstudio/llms/dist/tools/apply-patch/structured.js +31 -2
  750. package/node_modules/@jsonstudio/llms/dist/tools/apply-patch/validator.js +121 -4
  751. package/node_modules/@jsonstudio/llms/dist/tools/exec-command/normalize.d.ts +4 -1
  752. package/node_modules/@jsonstudio/llms/dist/tools/exec-command/normalize.js +31 -16
  753. package/node_modules/@jsonstudio/llms/dist/tools/exec-command/validator.d.ts +1 -0
  754. package/node_modules/@jsonstudio/llms/dist/tools/exec-command/validator.js +3 -1
  755. package/node_modules/@jsonstudio/llms/dist/tools/tool-registry.d.ts +1 -0
  756. package/node_modules/@jsonstudio/llms/dist/tools/tool-registry.js +5 -27
  757. package/node_modules/@jsonstudio/llms/package.json +1 -1
  758. package/package.json +6 -7
  759. package/scripts/ci/repo-sanity.mjs +1 -0
  760. package/scripts/ci/silent-failure-audit.mjs +112 -70
  761. package/scripts/cleanup-stale-server-pids.mjs +0 -6
  762. package/scripts/ensure-cli-command-shim.mjs +49 -15
  763. package/scripts/ensure-cli-executable.mjs +1 -1
  764. package/scripts/install-global.sh +7 -6
  765. package/scripts/install-release-snapshot.mjs +232 -0
  766. package/scripts/install-release.sh +30 -24
  767. package/scripts/link-global-llms-local.mjs +1 -2
  768. package/scripts/pack-mode.mjs +0 -4
  769. package/scripts/pack-rcc.mjs +17 -58
  770. package/scripts/run-bg.sh +0 -6
  771. package/scripts/run-fg-gtimeout.sh +0 -6
  772. package/scripts/tests/antigravity-codex-sample-pipeline-compare.mjs +1 -1
  773. package/scripts/tests/blackbox-rcc-vs-routecodex-antigravity.mjs +60 -39
  774. package/scripts/verify-install-e2e.mjs +64 -26
  775. package/configsamples/provider-default/qwenchat/config.v2.json +0 -53
  776. package/dist/providers/auth/iflow-cookie-auth.d.ts +0 -27
  777. package/dist/providers/auth/iflow-cookie-auth.js +0 -207
  778. package/dist/providers/auth/iflow-cookie-auth.js.map +0 -1
  779. package/dist/providers/auth/iflow-userinfo-helper.d.ts +0 -32
  780. package/dist/providers/auth/iflow-userinfo-helper.js +0 -81
  781. package/dist/providers/auth/iflow-userinfo-helper.js.map +0 -1
  782. package/dist/providers/core/runtime/iflow-http-provider.d.ts +0 -13
  783. package/dist/providers/core/runtime/iflow-http-provider.js +0 -22
  784. package/dist/providers/core/runtime/iflow-http-provider.js.map +0 -1
  785. package/dist/providers/core/runtime/provider-iflow-business-error-utils.d.ts +0 -15
  786. package/dist/providers/core/runtime/provider-iflow-business-error-utils.js +0 -49
  787. package/dist/providers/core/runtime/provider-iflow-business-error-utils.js.map +0 -1
  788. package/dist/providers/core/runtime/qwenchat-http-provider-helpers.d.ts +0 -89
  789. package/dist/providers/core/runtime/qwenchat-http-provider-helpers.js +0 -1698
  790. package/dist/providers/core/runtime/qwenchat-http-provider-helpers.js.map +0 -1
  791. package/dist/providers/core/runtime/qwenchat-http-provider.d.ts +0 -9
  792. package/dist/providers/core/runtime/qwenchat-http-provider.js +0 -78
  793. package/dist/providers/core/runtime/qwenchat-http-provider.js.map +0 -1
  794. package/dist/providers/core/runtime/standard-tool-text-request-transform.d.ts +0 -13
  795. package/dist/providers/core/runtime/standard-tool-text-request-transform.js +0 -138
  796. package/dist/providers/core/runtime/standard-tool-text-request-transform.js.map +0 -1
  797. package/dist/providers/core/runtime/transport/iflow-signer.d.ts +0 -12
  798. package/dist/providers/core/runtime/transport/iflow-signer.js +0 -63
  799. package/dist/providers/core/runtime/transport/iflow-signer.js.map +0 -1
  800. package/dist/providers/profile/families/iflow-profile.d.ts +0 -2
  801. package/dist/providers/profile/families/iflow-profile.js +0 -384
  802. package/dist/providers/profile/families/iflow-profile.js.map +0 -1
  803. package/docs/mapping-tables/iflow-to-openai.json +0 -215
  804. package/docs/mapping-tables/openai-to-iflow.json +0 -227
  805. package/docs/multi-token-auth-guide.md +0 -66
  806. package/docs/oauth-authentication-guide.md +0 -172
  807. package/docs/oauth-iflow-implementation.md +0 -157
  808. package/docs/release-iflow-400-gate.md +0 -58
  809. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/iflow-kimi-cli-defaults.d.ts +0 -10
  810. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/iflow-kimi-cli-defaults.js +0 -31
  811. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/iflow-kimi-history-media-placeholder.d.ts +0 -7
  812. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/iflow-kimi-history-media-placeholder.js +0 -25
  813. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/iflow-kimi-thinking-reasoning-fill.d.ts +0 -12
  814. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/iflow-kimi-thinking-reasoning-fill.js +0 -46
  815. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/iflow-native-compat.d.ts +0 -6
  816. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/iflow-native-compat.js +0 -36
  817. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/iflow-response-body-unwrap.d.ts +0 -9
  818. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/iflow-response-body-unwrap.js +0 -25
  819. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/iflow-tool-text-fallback.d.ts +0 -5
  820. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/iflow-tool-text-fallback.js +0 -29
  821. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/iflow-web-search.d.ts +0 -18
  822. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/iflow-web-search.js +0 -49
  823. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/qwenchat-web-request.d.ts +0 -3
  824. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/qwenchat-web-request.js +0 -62
  825. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-iflow.json +0 -353
  826. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-qwenchat-web.json +0 -47
  827. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-health.d.ts +0 -1
  828. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine-health.js +0 -1
  829. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/iflow-model-error-retry.js +0 -92
  830. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/review.js +0 -202
  831. package/scripts/publish-rcc.mjs +0 -81
  832. /package/node_modules/@jsonstudio/llms/dist/servertool/handlers/{iflow-model-error-retry.d.ts → reasoning-stop-guard.d.ts} +0 -0
  833. /package/node_modules/@jsonstudio/llms/dist/servertool/handlers/{review.d.ts → reasoning-stop.d.ts} +0 -0
@@ -9,13 +9,22 @@ import { sanitizeFollowupSnapshotText, sanitizeFollowupText } from '../followup-
9
9
  import { resolveStopMessageAiApprovedMarker as resolveStopMessageAiApprovedMarkerFromConfig, resolveStopMessageAiDoneMarker as resolveStopMessageAiDoneMarkerFromConfig, resolveStopMessageAiFollowupBackend as resolveStopMessageAiFollowupBackendFromConfig, resolveStopMessageAiFollowupCommand as resolveStopMessageAiFollowupCommandFromConfig, resolveStopMessageAiFollowupEnabled as resolveStopMessageAiFollowupEnabledFromConfig, resolveStopMessageAiFollowupOutputMaxChars as resolveStopMessageAiFollowupOutputMaxCharsFromConfig, resolveStopMessageAiFollowupTimeoutMs as resolveStopMessageAiFollowupTimeoutMsFromConfig, resolveStopMessageAiRequireEvidence, resolveStopMessageAiRequireNextTaskAfterDone, resolveStopMessageAiTraceEnabled as resolveStopMessageAiTraceEnabledFromConfig } from './config.js';
10
10
  const DEFAULT_STOP_MESSAGE_AI_DONE_MARKER = '[STOPMESSAGE_DONE]';
11
11
  const DEFAULT_STOP_MESSAGE_AI_APPROVED_MARKER = '[STOPMESSAGE_APPROVED]';
12
- const STOP_MESSAGE_AUTOMESSAGE_IFLOW_TIMEOUT_MS = 300_000;
13
- const STOP_MESSAGE_AUTOMESSAGE_IFLOW_TIMEOUT_MAX_MS = 300_000;
14
- const STOP_MESSAGE_AUTOMESSAGE_IFLOW_TIMEOUT_TEST_CAP_MS = 800;
12
+ const STOP_MESSAGE_AUTOMESSAGE_FOLLOWUP_TIMEOUT_MS = 300_000;
13
+ const STOP_MESSAGE_AUTOMESSAGE_FOLLOWUP_TIMEOUT_MAX_MS = 300_000;
14
+ const STOP_MESSAGE_AUTOMESSAGE_FOLLOWUP_TIMEOUT_TEST_CAP_MS = 800;
15
15
  const STOP_MESSAGE_AUTOMESSAGE_PROMPT_MAX_CHARS = 18_000;
16
16
  const STOP_MESSAGE_AUTOMESSAGE_OUTPUT_MAX_CHARS = 1_600;
17
17
  const STOP_MESSAGE_AUTOMESSAGE_LOG_SUMMARY_MAX_CHARS = 200;
18
18
  const ANSI_ESCAPE_PATTERN = /\x1B\[[0-?]*[ -/]*[@-~]/g;
19
+ function hasStandaloneMarkerLine(text, marker) {
20
+ const content = typeof text === 'string' ? text.trim() : '';
21
+ const normalizedMarker = typeof marker === 'string' ? marker.trim() : '';
22
+ if (!content || !normalizedMarker) {
23
+ return false;
24
+ }
25
+ const escapedMarker = normalizedMarker.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
26
+ return new RegExp(`(^|\\n)\\s*${escapedMarker}\\s*(?=\\n|$)`).test(content);
27
+ }
19
28
  function runStopMessageAutoMessageCommandAsync(options) {
20
29
  return new Promise((resolve) => {
21
30
  let settled = false;
@@ -144,14 +153,14 @@ export function renderStopMessageAutoFollowupViaAi(args) {
144
153
  return null;
145
154
  }
146
155
  const backendOrder = resolveStopMessageAutoMessageBackendOrder();
147
- const maxOutputChars = resolveStopMessageAutoMessageIflowOutputMaxChars();
156
+ const maxOutputChars = resolveStopMessageAutoMessageOutputMaxChars();
148
157
  const workingDirectory = resolveStopMessageAutoMessageWorkingDirectory(args.workingDirectory);
149
158
  for (const backend of backendOrder) {
150
159
  const command = resolveStopMessageAutoMessageCommand(backend);
151
160
  if (!command) {
152
161
  continue;
153
162
  }
154
- const prompt = buildStopMessageAutoMessageIflowPrompt(args, backend);
163
+ const prompt = buildStopMessageAutoMessagePrompt(args, backend);
155
164
  if (!prompt) {
156
165
  continue;
157
166
  }
@@ -169,7 +178,7 @@ export function renderStopMessageAutoFollowupViaAi(args) {
169
178
  `backend=${backendLabel}`,
170
179
  `cwd=${workingDirectory || 'n/a'}`
171
180
  ].join(' | '), STOP_MESSAGE_AUTOMESSAGE_LOG_SUMMARY_MAX_CHARS);
172
- logStopMessageAutoMessageIflow({
181
+ logStopMessageAutoMessage({
173
182
  requestId: args.requestId,
174
183
  stage: 'request',
175
184
  requestSummary
@@ -183,7 +192,7 @@ export function renderStopMessageAutoFollowupViaAi(args) {
183
192
  });
184
193
  if (result.error || result.status !== 0) {
185
194
  const responseSummary = summarizeStopMessageAutoMessageLog(sanitizeStopMessageAutoMessageOutput(result.stderr || result.stdout, STOP_MESSAGE_AUTOMESSAGE_OUTPUT_MAX_CHARS), STOP_MESSAGE_AUTOMESSAGE_LOG_SUMMARY_MAX_CHARS);
186
- logStopMessageAutoMessageIflow({
195
+ logStopMessageAutoMessage({
187
196
  requestId: args.requestId,
188
197
  stage: 'response',
189
198
  status: result.status ?? -1,
@@ -198,17 +207,21 @@ export function renderStopMessageAutoFollowupViaAi(args) {
198
207
  : '';
199
208
  const stdout = backendOutput || sanitizeStopMessageAutoMessageOutput(result.stdout, maxOutputChars);
200
209
  if (stdout) {
201
- logStopMessageAutoMessageIflow({
210
+ const approvedMarker = resolveStopMessageAiApprovedMarker(args.approvedMarker);
211
+ const normalizedOutput = hasStandaloneMarkerLine(stdout, approvedMarker)
212
+ ? approvedMarker
213
+ : stdout;
214
+ logStopMessageAutoMessage({
202
215
  requestId: args.requestId,
203
216
  stage: 'response',
204
217
  status: result.status ?? 0,
205
218
  requestSummary,
206
- responseSummary: summarizeStopMessageAutoMessageLog(stdout, STOP_MESSAGE_AUTOMESSAGE_LOG_SUMMARY_MAX_CHARS)
219
+ responseSummary: summarizeStopMessageAutoMessageLog(normalizedOutput, STOP_MESSAGE_AUTOMESSAGE_LOG_SUMMARY_MAX_CHARS)
207
220
  });
208
- return stdout;
221
+ return normalizedOutput;
209
222
  }
210
223
  const stderr = sanitizeStopMessageAutoMessageOutput(result.stderr, maxOutputChars);
211
- logStopMessageAutoMessageIflow({
224
+ logStopMessageAutoMessage({
212
225
  requestId: args.requestId,
213
226
  stage: 'response',
214
227
  status: result.status ?? 0,
@@ -220,7 +233,7 @@ export function renderStopMessageAutoFollowupViaAi(args) {
220
233
  }
221
234
  }
222
235
  catch (error) {
223
- logStopMessageAutoMessageIflow({
236
+ logStopMessageAutoMessage({
224
237
  requestId: args.requestId,
225
238
  stage: 'response',
226
239
  status: -1,
@@ -240,14 +253,14 @@ export async function renderStopMessageAutoFollowupViaAiAsync(args) {
240
253
  return null;
241
254
  }
242
255
  const backendOrder = resolveStopMessageAutoMessageBackendOrder();
243
- const maxOutputChars = resolveStopMessageAutoMessageIflowOutputMaxChars();
256
+ const maxOutputChars = resolveStopMessageAutoMessageOutputMaxChars();
244
257
  const workingDirectory = resolveStopMessageAutoMessageWorkingDirectory(args.workingDirectory);
245
258
  for (const backend of backendOrder) {
246
259
  const command = resolveStopMessageAutoMessageCommand(backend);
247
260
  if (!command) {
248
261
  continue;
249
262
  }
250
- const prompt = buildStopMessageAutoMessageIflowPrompt(args, backend);
263
+ const prompt = buildStopMessageAutoMessagePrompt(args, backend);
251
264
  if (!prompt) {
252
265
  continue;
253
266
  }
@@ -265,7 +278,7 @@ export async function renderStopMessageAutoFollowupViaAiAsync(args) {
265
278
  `backend=${backendLabel}`,
266
279
  `cwd=${workingDirectory || 'n/a'}`
267
280
  ].join(' | '), STOP_MESSAGE_AUTOMESSAGE_LOG_SUMMARY_MAX_CHARS);
268
- logStopMessageAutoMessageIflow({
281
+ logStopMessageAutoMessage({
269
282
  requestId: args.requestId,
270
283
  stage: 'request',
271
284
  requestSummary
@@ -280,7 +293,7 @@ export async function renderStopMessageAutoFollowupViaAiAsync(args) {
280
293
  });
281
294
  if (result.error || result.status !== 0) {
282
295
  const responseSummary = summarizeStopMessageAutoMessageLog(sanitizeStopMessageAutoMessageOutput(result.stderr || result.stdout, STOP_MESSAGE_AUTOMESSAGE_OUTPUT_MAX_CHARS), STOP_MESSAGE_AUTOMESSAGE_LOG_SUMMARY_MAX_CHARS);
283
- logStopMessageAutoMessageIflow({
296
+ logStopMessageAutoMessage({
284
297
  requestId: args.requestId,
285
298
  stage: 'response',
286
299
  status: result.status ?? -1,
@@ -295,17 +308,21 @@ export async function renderStopMessageAutoFollowupViaAiAsync(args) {
295
308
  : '';
296
309
  const stdout = backendOutput || sanitizeStopMessageAutoMessageOutput(result.stdout, maxOutputChars);
297
310
  if (stdout) {
298
- logStopMessageAutoMessageIflow({
311
+ const approvedMarker = resolveStopMessageAiApprovedMarker(args.approvedMarker);
312
+ const normalizedOutput = hasStandaloneMarkerLine(stdout, approvedMarker)
313
+ ? approvedMarker
314
+ : stdout;
315
+ logStopMessageAutoMessage({
299
316
  requestId: args.requestId,
300
317
  stage: 'response',
301
318
  status: result.status ?? 0,
302
319
  requestSummary,
303
- responseSummary: summarizeStopMessageAutoMessageLog(stdout, STOP_MESSAGE_AUTOMESSAGE_LOG_SUMMARY_MAX_CHARS)
320
+ responseSummary: summarizeStopMessageAutoMessageLog(normalizedOutput, STOP_MESSAGE_AUTOMESSAGE_LOG_SUMMARY_MAX_CHARS)
304
321
  });
305
- return stdout;
322
+ return normalizedOutput;
306
323
  }
307
324
  const stderr = sanitizeStopMessageAutoMessageOutput(result.stderr, maxOutputChars);
308
- logStopMessageAutoMessageIflow({
325
+ logStopMessageAutoMessage({
309
326
  requestId: args.requestId,
310
327
  stage: 'response',
311
328
  status: result.status ?? 0,
@@ -317,7 +334,7 @@ export async function renderStopMessageAutoFollowupViaAiAsync(args) {
317
334
  }
318
335
  }
319
336
  catch (error) {
320
- logStopMessageAutoMessageIflow({
337
+ logStopMessageAutoMessage({
321
338
  requestId: args.requestId,
322
339
  stage: 'response',
323
340
  status: -1,
@@ -332,7 +349,7 @@ export async function renderStopMessageAutoFollowupViaAiAsync(args) {
332
349
  }
333
350
  return null;
334
351
  }
335
- export function renderStopMessageAutoFollowupViaIflow(args) {
352
+ export function renderStopMessageAutoFollowupViaAiFollowup(args) {
336
353
  return renderStopMessageAutoFollowupViaAi(args);
337
354
  }
338
355
  export function extractStopMessageAutoResponseSnapshot(base, adapterContext) {
@@ -452,49 +469,40 @@ export function hasToolLikeOutput(value) {
452
469
  type.includes('tool'));
453
470
  }
454
471
  function isStopMessageAutoMessageEnabled() {
455
- const fromConfig = resolveStopMessageAiFollowupEnabledFromConfig();
456
- if (typeof fromConfig === 'boolean') {
457
- return fromConfig;
458
- }
459
472
  const raw = String(process.env.ROUTECODEX_STOPMESSAGE_AI_FOLLOWUP_ENABLED ??
460
473
  process.env.ROUTECODEX_STOPMESSAGE_AUTOMESSAGE_ENABLED ??
461
- process.env.ROUTECODEX_STOPMESSAGE_AUTOMESSAGE_IFLOW ??
462
474
  '')
463
475
  .trim()
464
476
  .toLowerCase();
465
477
  if (!raw) {
466
- return true;
478
+ // 默认关闭:只有显式配置/环境变量开启才启用 ai-followup。
479
+ return false;
467
480
  }
468
481
  if (raw === '0' || raw === 'false' || raw === 'no' || raw === 'off') {
469
482
  return false;
470
483
  }
471
- return true;
484
+ if (raw) {
485
+ return true;
486
+ }
487
+ const fromConfig = resolveStopMessageAiFollowupEnabledFromConfig();
488
+ if (typeof fromConfig === 'boolean') {
489
+ return fromConfig;
490
+ }
491
+ return false;
472
492
  }
473
493
  function resolveStopMessageAutoMessageBackendOrder() {
474
- // iFlow backend is retired for ai-followup generation.
475
- // Keep type compatibility, but runtime order is codex-only.
476
494
  const preferred = resolveStopMessageAutoMessageBackend();
477
- return preferred === 'codex' ? ['codex'] : ['codex'];
495
+ return [preferred];
478
496
  }
479
497
  function resolveStopMessageAutoMessageBackend() {
480
- const fromConfig = resolveStopMessageAiFollowupBackendFromConfig();
481
- if (fromConfig === 'codex') {
482
- return 'codex';
483
- }
484
- if (fromConfig === 'iflow') {
485
- return 'codex';
486
- }
487
498
  const raw = String(process.env.ROUTECODEX_STOPMESSAGE_AI_FOLLOWUP_BACKEND ??
488
499
  process.env.ROUTECODEX_STOPMESSAGE_AUTOMESSAGE_BACKEND ??
489
500
  '').trim().toLowerCase();
490
501
  if (raw === 'codex') {
491
502
  return 'codex';
492
503
  }
493
- if (raw === 'iflow') {
494
- return 'codex';
495
- }
496
- const legacyIflowHint = String(process.env.ROUTECODEX_STOPMESSAGE_AUTOMESSAGE_IFLOW || '').trim().toLowerCase();
497
- if (legacyIflowHint && legacyIflowHint !== '0' && legacyIflowHint !== 'false' && legacyIflowHint !== 'no' && legacyIflowHint !== 'off') {
504
+ const fromConfig = resolveStopMessageAiFollowupBackendFromConfig();
505
+ if (fromConfig === 'codex') {
498
506
  return 'codex';
499
507
  }
500
508
  return 'codex';
@@ -529,20 +537,20 @@ function resolveStopMessageAutoMessageCodexProfileOrder() {
529
537
  return out.length > 0 ? out : [undefined];
530
538
  }
531
539
  function resolveStopMessageAutoMessageCommand(backend) {
540
+ const codexRawFromEnv = String(process.env.ROUTECODEX_STOPMESSAGE_AI_FOLLOWUP_CODEX_BIN ??
541
+ process.env.ROUTECODEX_STOPMESSAGE_AUTOMESSAGE_CODEX_BIN ??
542
+ '').trim();
543
+ if (codexRawFromEnv) {
544
+ return codexRawFromEnv;
545
+ }
532
546
  const fromConfig = resolveStopMessageAiFollowupCommandFromConfig(backend);
533
547
  if (fromConfig && fromConfig.trim()) {
534
548
  return fromConfig.trim();
535
549
  }
536
- if (backend === 'codex') {
537
- const codexRaw = String(process.env.ROUTECODEX_STOPMESSAGE_AI_FOLLOWUP_CODEX_BIN ??
538
- process.env.ROUTECODEX_STOPMESSAGE_AUTOMESSAGE_CODEX_BIN ??
539
- '').trim();
540
- return codexRaw || 'codex';
541
- }
542
- const raw = String(process.env.ROUTECODEX_STOPMESSAGE_AI_FOLLOWUP_IFLOW_BIN ??
543
- process.env.ROUTECODEX_STOPMESSAGE_AUTOMESSAGE_IFLOW_BIN ??
550
+ const codexRaw = String(process.env.ROUTECODEX_STOPMESSAGE_AI_FOLLOWUP_CODEX_BIN ??
551
+ process.env.ROUTECODEX_STOPMESSAGE_AUTOMESSAGE_CODEX_BIN ??
544
552
  '').trim();
545
- return raw || 'iflow';
553
+ return codexRaw || 'codex';
546
554
  }
547
555
  function resolveStopMessageAutoMessageWorkingDirectory(value) {
548
556
  return typeof value === 'string' && value.trim() ? value.trim() : undefined;
@@ -557,38 +565,26 @@ function resolveStopMessageAutoMessageTimeoutMs(backend) {
557
565
  ? Math.floor(parsed)
558
566
  : Number.isFinite(timeoutFromConfig) && Number(timeoutFromConfig) > 0
559
567
  ? Math.floor(Number(timeoutFromConfig))
560
- : STOP_MESSAGE_AUTOMESSAGE_IFLOW_TIMEOUT_MS;
561
- const explicitTimeout = Math.max(200, Math.min(STOP_MESSAGE_AUTOMESSAGE_IFLOW_TIMEOUT_MAX_MS, explicitTimeoutRaw));
568
+ : STOP_MESSAGE_AUTOMESSAGE_FOLLOWUP_TIMEOUT_MS;
569
+ const explicitTimeout = Math.max(200, Math.min(STOP_MESSAGE_AUTOMESSAGE_FOLLOWUP_TIMEOUT_MAX_MS, explicitTimeoutRaw));
562
570
  let resolvedTimeout = explicitTimeout;
563
- const explicitCommand = backend === 'codex'
564
- ? String(process.env.ROUTECODEX_STOPMESSAGE_AI_FOLLOWUP_CODEX_BIN ??
565
- process.env.ROUTECODEX_STOPMESSAGE_AUTOMESSAGE_CODEX_BIN ??
566
- '').trim()
567
- : String(process.env.ROUTECODEX_STOPMESSAGE_AI_FOLLOWUP_IFLOW_BIN ??
568
- process.env.ROUTECODEX_STOPMESSAGE_AUTOMESSAGE_IFLOW_BIN ??
569
- '').trim();
570
- const defaultCommand = backend === 'codex' ? 'codex' : 'iflow';
571
+ const explicitCommand = String(process.env.ROUTECODEX_STOPMESSAGE_AI_FOLLOWUP_CODEX_BIN ??
572
+ process.env.ROUTECODEX_STOPMESSAGE_AUTOMESSAGE_CODEX_BIN ??
573
+ '').trim();
574
+ const defaultCommand = 'codex';
571
575
  const usingDefaultCommand = !explicitCommand || explicitCommand === defaultCommand;
572
576
  if (process.env.JEST_WORKER_ID && usingDefaultCommand) {
573
- resolvedTimeout = Math.min(resolvedTimeout, STOP_MESSAGE_AUTOMESSAGE_IFLOW_TIMEOUT_TEST_CAP_MS);
577
+ resolvedTimeout = Math.min(resolvedTimeout, STOP_MESSAGE_AUTOMESSAGE_FOLLOWUP_TIMEOUT_TEST_CAP_MS);
574
578
  }
575
579
  const followupTimeoutRaw = String(process.env.ROUTECODEX_SERVERTOOL_FOLLOWUP_TIMEOUT_MS || '').trim();
576
580
  const followupTimeoutParsed = Number(followupTimeoutRaw);
577
581
  if (Number.isFinite(followupTimeoutParsed) && followupTimeoutParsed > 0) {
578
- const boundedFollowupTimeout = Math.max(100, Math.min(STOP_MESSAGE_AUTOMESSAGE_IFLOW_TIMEOUT_MAX_MS, Math.floor(followupTimeoutParsed)));
582
+ const boundedFollowupTimeout = Math.max(100, Math.min(STOP_MESSAGE_AUTOMESSAGE_FOLLOWUP_TIMEOUT_MAX_MS, Math.floor(followupTimeoutParsed)));
579
583
  resolvedTimeout = Math.min(resolvedTimeout, boundedFollowupTimeout);
580
584
  }
581
585
  return resolvedTimeout;
582
586
  }
583
587
  function createStopMessageAutoMessageInvocation(backend, prompt, codexProfile) {
584
- if (backend !== 'codex') {
585
- return {
586
- args: ['-p', prompt],
587
- cleanup: () => {
588
- // no-op
589
- }
590
- };
591
- }
592
588
  const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'routecodex-stopmessage-codex-'));
593
589
  const outputFilePath = path.join(dir, 'last-message.txt');
594
590
  return {
@@ -624,7 +620,7 @@ function readStopMessageAutoMessageCodexOutput(outputFilePath) {
624
620
  return '';
625
621
  }
626
622
  }
627
- function resolveStopMessageAutoMessageIflowOutputMaxChars() {
623
+ function resolveStopMessageAutoMessageOutputMaxChars() {
628
624
  const outputMaxCharsFromConfig = resolveStopMessageAiFollowupOutputMaxCharsFromConfig();
629
625
  const raw = String(process.env.ROUTECODEX_STOPMESSAGE_AI_FOLLOWUP_OUTPUT_MAX_CHARS ??
630
626
  process.env.ROUTECODEX_STOPMESSAGE_AUTOMESSAGE_OUTPUT_MAX_CHARS ??
@@ -666,7 +662,7 @@ function truncateStopMessageAutoMessagePrompt(value, maxChars) {
666
662
  }
667
663
  return `${text.slice(0, maxChars)}...`;
668
664
  }
669
- function buildStopMessageAutoMessageIflowPrompt(args, backend) {
665
+ function buildStopMessageAutoMessagePrompt(args, backend) {
670
666
  const usedRepeats = Math.max(0, Math.floor(args.usedRepeats));
671
667
  const maxRepeats = Math.max(0, Math.floor(args.maxRepeats));
672
668
  const nextRound = usedRepeats + 1;
@@ -765,8 +761,8 @@ function buildStopMessageAutoMessageIflowPrompt(args, backend) {
765
761
  const head = prompt.slice(0, headLimit).trimEnd();
766
762
  return `${head}...\n\n${closingInstruction}`;
767
763
  }
768
- export function buildStopMessageAutoMessageIflowPromptForTests(args, backend = 'iflow') {
769
- return buildStopMessageAutoMessageIflowPrompt(args, backend);
764
+ export function buildStopMessageAutoMessagePromptForTests(args, backend = 'codex') {
765
+ return buildStopMessageAutoMessagePrompt(args, backend);
770
766
  }
771
767
  function renderStopMessageAiHistoryEntries(entries) {
772
768
  if (!Array.isArray(entries) || entries.length === 0) {
@@ -834,13 +830,12 @@ export function resolveStopMessageAiApprovedMarker(value) {
834
830
  }
835
831
  return DEFAULT_STOP_MESSAGE_AI_APPROVED_MARKER;
836
832
  }
837
- function isStopMessageAutoMessageIflowTraceEnabled() {
833
+ function isStopMessageAutoMessageTraceEnabled() {
838
834
  const fromConfig = resolveStopMessageAiTraceEnabledFromConfig();
839
835
  if (typeof fromConfig === 'boolean') {
840
836
  return fromConfig;
841
837
  }
842
838
  const raw = String(process.env.ROUTECODEX_STOPMESSAGE_AI_FOLLOWUP_TRACE ??
843
- process.env.ROUTECODEX_STOPMESSAGE_IFLOW_TRACE ??
844
839
  '').trim().toLowerCase();
845
840
  if (!raw) {
846
841
  return true;
@@ -850,7 +845,7 @@ function isStopMessageAutoMessageIflowTraceEnabled() {
850
845
  }
851
846
  return true;
852
847
  }
853
- function logStopMessageAutoMessageIflow(args) {
848
+ function logStopMessageAutoMessage(args) {
854
849
  const requestId = args.requestId && args.requestId.trim() ? args.requestId.trim() : 'unknown';
855
850
  const stage = args.stage;
856
851
  const statusToken = typeof args.status === 'number' ? ` status=${args.status}` : '';
@@ -874,7 +869,7 @@ function logStopMessageAutoMessageIflow(args) {
874
869
  message: eventMessage,
875
870
  step: stage === 'request' ? 3 : 4
876
871
  });
877
- if (!isStopMessageAutoMessageIflowTraceEnabled()) {
872
+ if (!isStopMessageAutoMessageTraceEnabled()) {
878
873
  return;
879
874
  }
880
875
  const requestIdPart = args.requestId ? ` requestId=${args.requestId}` : '';
@@ -1,4 +1,4 @@
1
- type StopMessageAiBackend = 'codex' | 'iflow';
1
+ type StopMessageAiBackend = 'codex';
2
2
  export type StopMessageRuntimeConfig = {
3
3
  sourcePath: string;
4
4
  sourceExists: boolean;
@@ -12,7 +12,6 @@ export type StopMessageRuntimeConfig = {
12
12
  enabled?: boolean;
13
13
  backend?: StopMessageAiBackend;
14
14
  codexBin?: string;
15
- iflowBin?: string;
16
15
  timeoutMs?: number;
17
16
  outputMaxChars?: number;
18
17
  trace?: boolean;
@@ -77,7 +77,7 @@ function resolveConfigPath() {
77
77
  }
78
78
  function normalizeBackend(value) {
79
79
  const text = readString(value)?.toLowerCase();
80
- if (text === 'codex' || text === 'iflow') {
80
+ if (text === 'codex') {
81
81
  return text;
82
82
  }
83
83
  return undefined;
@@ -125,7 +125,6 @@ function loadConfigSnapshot() {
125
125
  ? { backend: normalizeBackend(aiFollowup.backend) }
126
126
  : {}),
127
127
  ...(readString(aiFollowup.codexBin) ? { codexBin: readString(aiFollowup.codexBin) } : {}),
128
- ...(readString(aiFollowup.iflowBin) ? { iflowBin: readString(aiFollowup.iflowBin) } : {}),
129
128
  ...(readPositiveInt(aiFollowup.timeoutMs)
130
129
  ? { timeoutMs: readPositiveInt(aiFollowup.timeoutMs) }
131
130
  : {}),
@@ -196,10 +195,7 @@ export function resolveStopMessageAiFollowupCommand(backend) {
196
195
  if (!aiFollowup) {
197
196
  return undefined;
198
197
  }
199
- if (backend === 'codex') {
200
- return aiFollowup.codexBin;
201
- }
202
- return aiFollowup.iflowBin;
198
+ return aiFollowup.codexBin;
203
199
  }
204
200
  export function resolveStopMessageAiFollowupTimeoutMs() {
205
201
  return resolveStopMessageRuntimeConfig().aiFollowup?.timeoutMs;
@@ -3,6 +3,7 @@ import type { RoutingInstructionState } from '../../../router/virtual-router/rou
3
3
  export declare function resolveStickyKey(record: {
4
4
  requestId?: unknown;
5
5
  providerProtocol?: unknown;
6
+ continuation?: unknown;
6
7
  responsesResume?: unknown;
7
8
  sessionId?: unknown;
8
9
  conversationId?: unknown;
@@ -1,8 +1,13 @@
1
+ import { resolveContinuationRequestChainKey as resolveRouterContinuationRequestChainKey, resolveLegacyResponsesRequestChainKey } from '../../../router/virtual-router/engine/routing-state/keys.js';
1
2
  import { saveRoutingInstructionStateSync } from '../../../router/virtual-router/sticky-session-store.js';
2
3
  import { isStopEligibleForServerTool } from '../../stop-gateway-context.js';
3
- import { extractResponsesOutputText, hasToolLikeOutput } from './iflow-followup.js';
4
+ import { extractResponsesOutputText, hasToolLikeOutput } from './ai-followup.js';
4
5
  import { resolveStopMessageSnapshot } from './routing-state.js';
5
6
  export function resolveStickyKey(record, runtimeMetadata) {
7
+ const requestChainStickyKey = resolveContinuationRequestChainKey(record, runtimeMetadata);
8
+ if (requestChainStickyKey) {
9
+ return requestChainStickyKey;
10
+ }
6
11
  const providerProtocol = toNonEmptyText(record.providerProtocol).toLowerCase();
7
12
  if (providerProtocol === 'openai-responses') {
8
13
  const previousRequestId = resolveResponsesPreviousRequestId(record, runtimeMetadata);
@@ -47,7 +52,30 @@ export function persistStopMessageState(stickyKey, state) {
47
52
  saveRoutingInstructionStateSync(stickyKey, state);
48
53
  }
49
54
  export function resolveStopMessageSessionScope(record, runtimeMetadata) {
50
- return resolveStopMessageInjectScope(record, runtimeMetadata);
55
+ const runtime = asRecord(runtimeMetadata);
56
+ const runtimeInjectScope = toNonEmptyText(runtime?.stopMessageClientInjectSessionScope);
57
+ if (runtimeInjectScope &&
58
+ (runtimeInjectScope.startsWith('tmux:')
59
+ || runtimeInjectScope.startsWith('session:')
60
+ || runtimeInjectScope.startsWith('conversation:'))) {
61
+ return runtimeInjectScope;
62
+ }
63
+ const directTmuxSessionId = toNonEmptyText(record.clientTmuxSessionId) ||
64
+ toNonEmptyText(record.client_tmux_session_id) ||
65
+ toNonEmptyText(record.tmuxSessionId) ||
66
+ toNonEmptyText(record.tmux_session_id);
67
+ if (directTmuxSessionId) {
68
+ return `tmux:${directTmuxSessionId}`;
69
+ }
70
+ const directSessionId = toNonEmptyText(record.sessionId);
71
+ if (directSessionId) {
72
+ return `session:${directSessionId}`;
73
+ }
74
+ const directConversationId = toNonEmptyText(record.conversationId);
75
+ if (directConversationId) {
76
+ return `conversation:${directConversationId}`;
77
+ }
78
+ return undefined;
51
79
  }
52
80
  export function resolveRuntimeStopMessageState(runtimeMetadata) {
53
81
  const runtime = asRecord(runtimeMetadata);
@@ -110,12 +138,28 @@ function resolveResponsesPreviousRequestId(record, runtimeMetadata) {
110
138
  }
111
139
  return '';
112
140
  }
113
- function readPreviousRequestId(value) {
114
- const row = asRecord(value);
115
- if (!row) {
116
- return '';
141
+ function resolveContinuationRequestChainKey(record, runtimeMetadata) {
142
+ const direct = readContinuationRequestChainKey(record.continuation);
143
+ if (direct) {
144
+ return direct;
145
+ }
146
+ const metadata = asRecord(record.metadata);
147
+ const fromMetadata = readContinuationRequestChainKey(metadata?.continuation);
148
+ if (fromMetadata) {
149
+ return fromMetadata;
117
150
  }
118
- return toNonEmptyText(row.previousRequestId);
151
+ const runtime = asRecord(runtimeMetadata);
152
+ const fromRuntime = readContinuationRequestChainKey(runtime?.continuation);
153
+ if (fromRuntime) {
154
+ return fromRuntime;
155
+ }
156
+ return '';
157
+ }
158
+ function readContinuationRequestChainKey(value) {
159
+ return resolveRouterContinuationRequestChainKey(value) ?? '';
160
+ }
161
+ function readPreviousRequestId(value) {
162
+ return resolveLegacyResponsesRequestChainKey(value) ?? '';
119
163
  }
120
164
  export function resolveBdWorkingDirectoryForRecord(record, runtimeMetadata) {
121
165
  const fromWorkdir = readSessionScopeValue(record, runtimeMetadata, 'workdir');
@@ -154,10 +198,6 @@ export function resolveStopMessageFollowupToolContentMaxChars(params) {
154
198
  }
155
199
  return undefined;
156
200
  }
157
- const providerKey = typeof params.providerKey === 'string' ? params.providerKey.trim().toLowerCase() : '';
158
- if (providerKey.startsWith('iflow.')) {
159
- return 1200;
160
- }
161
201
  const model = typeof params.model === 'string' ? params.model.trim().toLowerCase() : '';
162
202
  if (model === 'kimi-k2.5' || model.startsWith('kimi-k2.5-')) {
163
203
  return 1200;
@@ -4,7 +4,7 @@ import { extractCapturedChatSeed } from './followup-request-builder.js';
4
4
  import { readRuntimeMetadata } from '../../conversion/runtime-metadata.js';
5
5
  import { isStopEligibleForServerTool } from '../stop-gateway-context.js';
6
6
  import { attachStopMessageCompareContext } from '../stop-message-compare-context.js';
7
- import { extractStopMessageAutoResponseSnapshot, renderStopMessageAutoFollowupViaAi, resolveStopMessageAiApprovedMarker, resolveStopMessageAiDoneMarker } from './stop-message-auto/iflow-followup.js';
7
+ import { extractStopMessageAutoResponseSnapshot, renderStopMessageAutoFollowupViaAi, resolveStopMessageAiApprovedMarker, resolveStopMessageAiDoneMarker } from './stop-message-auto/ai-followup.js';
8
8
  import { resolveStopMessageAiDoneNextTaskPrompt, resolveStopMessageDebugEnabled, resolveStopMessageDefaultEnabled, resolveStopMessageDefaultMaxRepeats, resolveStopMessageDefaultText } from './stop-message-auto/config.js';
9
9
  import { sanitizeFollowupText } from './followup-sanitize.js';
10
10
  import { getCapturedRequest, hasCompactionFlag, persistStopMessageState, readServerToolFollowupFlowId, resolveBdWorkingDirectoryForRecord, resolveClientConnectionState, resolveDefaultStopMessageSnapshot, resolveEntryEndpoint, resolveImplicitGeminiStopMessageSnapshot, resolveRuntimeStopMessageState, resolveStopMessageSessionScope, resolveStickyKey, resolveStopMessageFollowupProviderKey, readRuntimeStopMessageStageMode } from './stop-message-auto/runtime-utils.js';
@@ -450,9 +450,10 @@ const handler = async (ctx) => {
450
450
  persistStopMessageState(stickyKey, nextState);
451
451
  }
452
452
  const doneNextTaskPrompt = sanitizeFollowupText(resolveStopMessageAiDoneNextTaskPrompt());
453
- const approvedInjectText = typeof followupText === 'string' && sanitizeFollowupText(followupText)
454
- ? `${sanitizeFollowupText(followupText)}\n${doneNextTaskPrompt}`
455
- : `${approvedMarker}\n${doneNextTaskPrompt}`;
453
+ const approvedInjectBase = sanitizeFollowupText(fallbackCandidateFollowupText || text || '继续执行') || '继续执行';
454
+ const approvedInjectText = aiMode === 'on'
455
+ ? enforceStopMessageExecutionFollowupText(approvedInjectBase, doneMarker)
456
+ : sanitizeFollowupText(approvedInjectBase) || approvedInjectBase;
456
457
  debugLog('trigger_done_marker_approved', {
457
458
  stickyKey,
458
459
  doneMarker,
@@ -0,0 +1,9 @@
1
+ import type { JsonObject } from '../../conversion/hub/types/json.js';
2
+ import type { ServerToolBackendPlan, ServerToolHandlerResult } from '../types.js';
3
+ import type { ServerToolBackendResult } from '../types.js';
4
+ export declare function extractAutoSearchQuery(base: JsonObject): string | undefined;
5
+ export declare function buildAutoSearchBackendPlan(query: string, engines: Array<{
6
+ id: string;
7
+ providerKey: string;
8
+ }>): ServerToolBackendPlan;
9
+ export declare function buildAutoSearchInjectionResult(base: JsonObject, backendResult: ServerToolBackendResult, query: string): ServerToolHandlerResult;
@@ -0,0 +1,91 @@
1
+ import { cloneJson } from '../server-side-tools.js';
2
+ export function extractAutoSearchQuery(base) {
3
+ const messages = Array.isArray(base.messages)
4
+ ? base.messages
5
+ : [];
6
+ const lastUserMsg = messages.filter((m) => m.role === 'user').pop();
7
+ if (!lastUserMsg)
8
+ return undefined;
9
+ const content = lastUserMsg.content;
10
+ if (typeof content === 'string') {
11
+ return content.trim() || undefined;
12
+ }
13
+ if (Array.isArray(content)) {
14
+ const textParts = content.filter((c) => typeof c === 'string' || (typeof c === 'object' && c !== null && c.type === 'text'));
15
+ const text = textParts.map((c) => typeof c === 'string' ? c : (c.text ?? '')).join(' ').trim();
16
+ return text || undefined;
17
+ }
18
+ return undefined;
19
+ }
20
+ export function buildAutoSearchBackendPlan(query, engines) {
21
+ return {
22
+ kind: 'web_search',
23
+ requestIdSuffix: ':auto_web_search',
24
+ query,
25
+ resultCount: 10,
26
+ engines
27
+ };
28
+ }
29
+ export function buildAutoSearchInjectionResult(base, backendResult, query) {
30
+ if (backendResult.kind !== 'web_search') {
31
+ throw new Error('Expected web_search backend result');
32
+ }
33
+ const summary = backendResult.result?.summary || '';
34
+ const hits = backendResult.result?.hits || [];
35
+ const timestamp = new Date().toISOString();
36
+ const systemContent = [
37
+ '用户输入:' + query,
38
+ '',
39
+ '相关内置搜索结果(内置搜索,' + timestamp + '):',
40
+ summary,
41
+ '',
42
+ '来源:',
43
+ ...hits.slice(0, 5).map((h, i) => (i + 1) + '. ' + (h.title || '无标题') + ' - ' + h.link),
44
+ '',
45
+ '你可以使用内置搜索工具 "websearch" 进行更多搜索。'
46
+ ].join('\n');
47
+ const cloned = cloneJson(base);
48
+ const messages = Array.isArray(cloned.messages)
49
+ ? cloned.messages
50
+ : [];
51
+ cloned.messages = [
52
+ { role: 'system', content: systemContent },
53
+ ...messages
54
+ ];
55
+ const existingTools = Array.isArray(cloned.tools)
56
+ ? cloned.tools
57
+ : [];
58
+ const hasWebsearch = existingTools.some((t) => {
59
+ const fn = t.function;
60
+ if (!fn || typeof fn !== 'object')
61
+ return false;
62
+ const name = fn.name;
63
+ return name === 'websearch' || name === 'web_search';
64
+ });
65
+ if (!hasWebsearch) {
66
+ const websearchTool = {
67
+ type: 'function',
68
+ function: {
69
+ name: 'websearch',
70
+ description: 'Search the web for information. Use this tool when you need to find real-time or external information.',
71
+ parameters: {
72
+ type: 'object',
73
+ properties: {
74
+ query: { type: 'string', description: 'Search query' },
75
+ count: { type: 'number', description: 'Number of results to return (default: 10)' },
76
+ recency: { type: 'string', description: 'Time filter (e.g. "1d", "1w", "1m")' }
77
+ },
78
+ required: ['query']
79
+ }
80
+ }
81
+ };
82
+ cloned.tools = [...existingTools, websearchTool];
83
+ }
84
+ const execution = {
85
+ flowId: 'web_search_flow'
86
+ };
87
+ return {
88
+ chatResponse: cloned,
89
+ execution
90
+ };
91
+ }