@jsonstudio/llms 0.4.3 → 0.4.5

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 (542) hide show
  1. package/README.md +3 -1
  2. package/dist/bridge/routecodex-adapter.js +6 -3
  3. package/dist/config-unified/enhanced-path-resolver.js +14 -6
  4. package/dist/config-unified/unified-config.js +103 -59
  5. package/dist/conversion/codec-registry.js +15 -3
  6. package/dist/conversion/codecs/anthropic-openai-codec.d.ts +3 -13
  7. package/dist/conversion/codecs/anthropic-openai-codec.js +18 -473
  8. package/dist/conversion/codecs/gemini-openai-codec.js +91 -48
  9. package/dist/conversion/codecs/responses-openai-codec.js +9 -2
  10. package/dist/conversion/hub/format-adapters/anthropic-format-adapter.js +3 -0
  11. package/dist/conversion/hub/format-adapters/chat-format-adapter.js +3 -0
  12. package/dist/conversion/hub/format-adapters/gemini-format-adapter.js +3 -0
  13. package/dist/conversion/hub/format-adapters/responses-format-adapter.d.ts +2 -0
  14. package/dist/conversion/hub/format-adapters/responses-format-adapter.js +9 -0
  15. package/dist/conversion/hub/node-support.js +3 -1
  16. package/dist/conversion/hub/pipeline/hub-pipeline.js +41 -37
  17. package/dist/conversion/hub/process/chat-process.js +258 -41
  18. package/dist/conversion/hub/response/provider-response.js +9 -3
  19. package/dist/conversion/hub/response/response-mappers.js +1 -1
  20. package/dist/conversion/hub/response/response-runtime.js +109 -10
  21. package/dist/conversion/hub/semantic-mappers/anthropic-mapper.js +70 -156
  22. package/dist/conversion/hub/semantic-mappers/chat-mapper.js +63 -52
  23. package/dist/conversion/hub/semantic-mappers/gemini-mapper.js +76 -143
  24. package/dist/conversion/hub/semantic-mappers/responses-mapper.js +40 -160
  25. package/dist/conversion/hub/standardized-bridge.js +3 -0
  26. package/dist/conversion/hub/tool-governance/engine.d.ts +16 -0
  27. package/dist/conversion/hub/tool-governance/engine.js +266 -0
  28. package/dist/conversion/hub/tool-governance/index.d.ts +3 -0
  29. package/dist/conversion/hub/tool-governance/index.js +2 -0
  30. package/dist/conversion/hub/tool-governance/rules.d.ts +2 -0
  31. package/dist/conversion/hub/tool-governance/rules.js +76 -0
  32. package/dist/conversion/hub/tool-governance/types.d.ts +38 -0
  33. package/dist/conversion/index.d.ts +6 -0
  34. package/dist/conversion/index.js +6 -0
  35. package/dist/conversion/pipeline/codecs/v2/anthropic-openai-pipeline.d.ts +12 -0
  36. package/dist/conversion/pipeline/codecs/v2/anthropic-openai-pipeline.js +100 -0
  37. package/dist/conversion/pipeline/codecs/v2/openai-openai-pipeline.d.ts +15 -0
  38. package/dist/conversion/pipeline/codecs/v2/openai-openai-pipeline.js +174 -0
  39. package/dist/conversion/pipeline/codecs/v2/responses-openai-pipeline.d.ts +14 -0
  40. package/dist/conversion/pipeline/codecs/v2/responses-openai-pipeline.js +166 -0
  41. package/dist/conversion/pipeline/codecs/v2/shared/openai-chat-helpers.d.ts +13 -0
  42. package/dist/conversion/pipeline/codecs/v2/shared/openai-chat-helpers.js +66 -0
  43. package/dist/conversion/pipeline/hooks/adapter-context.d.ts +7 -0
  44. package/dist/conversion/pipeline/hooks/adapter-context.js +18 -0
  45. package/dist/conversion/pipeline/hooks/protocol-hooks.d.ts +67 -0
  46. package/dist/conversion/pipeline/hooks/protocol-hooks.js +1 -0
  47. package/dist/conversion/pipeline/index.d.ts +35 -0
  48. package/dist/conversion/pipeline/index.js +103 -0
  49. package/dist/conversion/pipeline/meta/meta-bag.d.ts +20 -0
  50. package/dist/conversion/pipeline/meta/meta-bag.js +81 -0
  51. package/dist/conversion/pipeline/schema/canonical-chat.d.ts +18 -0
  52. package/dist/conversion/pipeline/schema/canonical-chat.js +1 -0
  53. package/dist/conversion/pipeline/schema/index.d.ts +1 -0
  54. package/dist/conversion/pipeline/schema/index.js +1 -0
  55. package/dist/conversion/responses/responses-openai-bridge.d.ts +11 -58
  56. package/dist/conversion/responses/responses-openai-bridge.js +157 -1144
  57. package/dist/conversion/shared/anthropic-message-utils.d.ts +12 -0
  58. package/dist/conversion/shared/anthropic-message-utils.js +587 -0
  59. package/dist/conversion/shared/bridge-actions.d.ts +39 -0
  60. package/dist/conversion/shared/bridge-actions.js +709 -0
  61. package/dist/conversion/shared/{responses-conversation-store.d.ts → bridge-conversation-store.d.ts} +7 -7
  62. package/dist/conversion/shared/bridge-conversation-store.js +279 -0
  63. package/dist/conversion/shared/bridge-id-utils.js +42 -0
  64. package/dist/conversion/shared/bridge-instructions.d.ts +1 -0
  65. package/dist/conversion/shared/bridge-instructions.js +113 -0
  66. package/dist/conversion/shared/bridge-message-types.d.ts +39 -0
  67. package/dist/conversion/shared/bridge-message-types.js +1 -0
  68. package/dist/conversion/shared/bridge-message-utils.d.ts +22 -0
  69. package/dist/conversion/shared/bridge-message-utils.js +473 -0
  70. package/dist/conversion/shared/bridge-metadata.d.ts +1 -0
  71. package/dist/conversion/shared/bridge-metadata.js +1 -0
  72. package/dist/conversion/shared/bridge-policies.d.ts +18 -0
  73. package/dist/conversion/shared/bridge-policies.js +276 -0
  74. package/dist/conversion/shared/bridge-request-adapter.d.ts +28 -0
  75. package/dist/conversion/shared/bridge-request-adapter.js +430 -0
  76. package/dist/conversion/shared/chat-output-normalizer.d.ts +4 -0
  77. package/dist/conversion/shared/chat-output-normalizer.js +56 -0
  78. package/dist/conversion/shared/chat-request-filters.js +24 -1
  79. package/dist/conversion/shared/gemini-tool-utils.d.ts +5 -0
  80. package/dist/conversion/shared/gemini-tool-utils.js +130 -0
  81. package/dist/conversion/shared/metadata-passthrough.d.ts +11 -0
  82. package/dist/conversion/shared/metadata-passthrough.js +57 -0
  83. package/dist/conversion/shared/output-content-normalizer.d.ts +12 -0
  84. package/dist/conversion/shared/output-content-normalizer.js +119 -0
  85. package/dist/conversion/shared/reasoning-normalizer.d.ts +21 -0
  86. package/dist/conversion/shared/reasoning-normalizer.js +368 -0
  87. package/dist/conversion/shared/reasoning-tool-normalizer.d.ts +12 -0
  88. package/dist/conversion/shared/reasoning-tool-normalizer.js +132 -0
  89. package/dist/conversion/shared/reasoning-tool-parser.d.ts +10 -0
  90. package/dist/conversion/shared/reasoning-tool-parser.js +95 -0
  91. package/dist/conversion/shared/reasoning-utils.d.ts +2 -0
  92. package/dist/conversion/shared/reasoning-utils.js +42 -0
  93. package/dist/conversion/shared/responses-conversation-store.js +5 -11
  94. package/dist/conversion/shared/responses-message-utils.d.ts +15 -0
  95. package/dist/conversion/shared/responses-message-utils.js +206 -0
  96. package/dist/conversion/shared/responses-output-builder.d.ts +15 -0
  97. package/dist/conversion/shared/responses-output-builder.js +179 -0
  98. package/dist/conversion/shared/responses-output-utils.d.ts +7 -0
  99. package/dist/conversion/shared/responses-output-utils.js +108 -0
  100. package/dist/conversion/shared/responses-request-adapter.d.ts +3 -41
  101. package/dist/conversion/shared/responses-request-adapter.js +9 -40
  102. package/dist/conversion/shared/responses-response-utils.d.ts +3 -0
  103. package/dist/conversion/shared/responses-response-utils.js +209 -0
  104. package/dist/conversion/shared/responses-tool-utils.d.ts +12 -0
  105. package/dist/conversion/shared/responses-tool-utils.js +90 -0
  106. package/dist/conversion/shared/responses-types.d.ts +33 -0
  107. package/dist/conversion/shared/responses-types.js +1 -0
  108. package/dist/conversion/shared/tool-call-utils.d.ts +11 -0
  109. package/dist/conversion/shared/tool-call-utils.js +56 -0
  110. package/dist/conversion/shared/tool-mapping.d.ts +9 -0
  111. package/dist/conversion/shared/tool-mapping.js +124 -0
  112. package/dist/conversion/shared/tool-normalizers.d.ts +4 -0
  113. package/dist/conversion/shared/tool-normalizers.js +84 -0
  114. package/dist/router/virtual-router/bootstrap.js +18 -3
  115. package/dist/router/virtual-router/provider-registry.js +4 -2
  116. package/dist/router/virtual-router/types.d.ts +6 -0
  117. package/dist/sse/index.d.ts +38 -2
  118. package/dist/sse/index.js +27 -0
  119. package/dist/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +12 -9
  120. package/dist/sse/json-to-sse/anthropic-json-to-sse-converter.js +106 -73
  121. package/dist/sse/json-to-sse/chat-json-to-sse-converter.js +6 -2
  122. package/dist/sse/json-to-sse/gemini-json-to-sse-converter.d.ts +14 -0
  123. package/dist/sse/json-to-sse/gemini-json-to-sse-converter.js +99 -0
  124. package/dist/sse/json-to-sse/index.d.ts +2 -1
  125. package/dist/sse/json-to-sse/index.js +2 -0
  126. package/dist/sse/json-to-sse/sequencers/anthropic-sequencer.d.ts +13 -0
  127. package/dist/sse/json-to-sse/sequencers/anthropic-sequencer.js +150 -0
  128. package/dist/sse/json-to-sse/sequencers/chat-sequencer.d.ts +3 -1
  129. package/dist/sse/json-to-sse/sequencers/chat-sequencer.js +49 -3
  130. package/dist/sse/json-to-sse/sequencers/gemini-sequencer.d.ts +10 -0
  131. package/dist/sse/json-to-sse/sequencers/gemini-sequencer.js +95 -0
  132. package/dist/sse/json-to-sse/sequencers/responses-sequencer.js +31 -5
  133. package/dist/sse/registry/sse-codec-registry.d.ts +1 -1
  134. package/dist/sse/registry/sse-codec-registry.js +30 -1
  135. package/dist/sse/shared/reasoning-dispatcher.d.ts +10 -0
  136. package/dist/sse/shared/reasoning-dispatcher.js +25 -0
  137. package/dist/sse/shared/responses-output-normalizer.d.ts +12 -0
  138. package/dist/sse/shared/responses-output-normalizer.js +45 -0
  139. package/dist/sse/shared/serializers/anthropic-event-serializer.d.ts +2 -0
  140. package/dist/sse/shared/serializers/anthropic-event-serializer.js +9 -0
  141. package/dist/sse/shared/serializers/gemini-event-serializer.d.ts +2 -0
  142. package/dist/sse/shared/serializers/gemini-event-serializer.js +5 -0
  143. package/dist/sse/shared/serializers/index.d.ts +2 -0
  144. package/dist/sse/shared/serializers/index.js +2 -0
  145. package/dist/sse/shared/writer.d.ts +17 -1
  146. package/dist/sse/shared/writer.js +37 -1
  147. package/dist/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +9 -11
  148. package/dist/sse/sse-to-json/anthropic-sse-to-json-converter.js +92 -127
  149. package/dist/sse/sse-to-json/builders/anthropic-response-builder.d.ts +16 -0
  150. package/dist/sse/sse-to-json/builders/anthropic-response-builder.js +151 -0
  151. package/dist/sse/sse-to-json/builders/response-builder.d.ts +1 -1
  152. package/dist/sse/sse-to-json/builders/response-builder.js +29 -7
  153. package/dist/sse/sse-to-json/chat-sse-to-json-converter.d.ts +8 -0
  154. package/dist/sse/sse-to-json/chat-sse-to-json-converter.js +116 -26
  155. package/dist/sse/sse-to-json/gemini-sse-to-json-converter.d.ts +13 -0
  156. package/dist/sse/sse-to-json/gemini-sse-to-json-converter.js +160 -0
  157. package/dist/sse/sse-to-json/index.d.ts +2 -1
  158. package/dist/sse/sse-to-json/index.js +2 -0
  159. package/dist/sse/sse-to-json/parsers/sse-parser.js +73 -13
  160. package/dist/sse/sse-to-json/responses-sse-to-json-converter.d.ts +1 -0
  161. package/dist/sse/sse-to-json/responses-sse-to-json-converter.js +10 -8
  162. package/dist/sse/types/anthropic-types.d.ts +119 -36
  163. package/dist/sse/types/anthropic-types.js +8 -5
  164. package/dist/sse/types/chat-types.d.ts +19 -6
  165. package/dist/sse/types/chat-types.js +2 -1
  166. package/dist/sse/types/conversion-context.d.ts +14 -11
  167. package/dist/sse/types/core-interfaces.d.ts +7 -3
  168. package/dist/sse/types/gemini-types.d.ts +116 -0
  169. package/dist/sse/types/gemini-types.js +5 -0
  170. package/dist/sse/types/index.d.ts +5 -2
  171. package/dist/sse/types/index.js +2 -0
  172. package/dist/sse/types/responses-types.d.ts +20 -20
  173. package/dist/sse/types/sse-events.d.ts +4 -3
  174. package/dist/sse/types/stream-state.d.ts +34 -39
  175. package/dist/sse/types/utility-types.d.ts +47 -43
  176. package/dist/sse/types/utility-types.js +10 -13
  177. package/dist/tools/tool-registry.js +156 -98
  178. package/package.json +7 -7
  179. package/dist/api/index.d.ts +0 -10
  180. package/dist/api/index.js +0 -11
  181. package/dist/api/llmswitch-config.d.ts +0 -15
  182. package/dist/api/llmswitch-config.js +0 -415
  183. package/dist/api/llmswitch-types.d.ts +0 -412
  184. package/dist/api/llmswitch-types.js +0 -60
  185. package/dist/bridge/routecodex-adapter.d.ts +0 -74
  186. package/dist/config/index.d.ts +0 -3
  187. package/dist/config/index.js +0 -5
  188. package/dist/config-unified/enhanced-path-resolver.d.ts +0 -5
  189. package/dist/config-unified/unified-config.d.ts +0 -26
  190. package/dist/conversion/codec-registry.d.ts +0 -10
  191. package/dist/conversion/codecs/gemini-openai-codec.d.ts +0 -16
  192. package/dist/conversion/codecs/openai-openai-codec.d.ts +0 -12
  193. package/dist/conversion/codecs/responses-openai-codec.d.ts +0 -12
  194. package/dist/conversion/config/config-manager.d.ts +0 -212
  195. package/dist/conversion/conversion-v3/adapters/index.d.ts +0 -2
  196. package/dist/conversion/conversion-v3/adapters/index.js +0 -1
  197. package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.d.ts +0 -38
  198. package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.js +0 -55
  199. package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.d.ts +0 -22
  200. package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.js +0 -84
  201. package/dist/conversion/conversion-v3/compatibility/compatibility-stages.d.ts +0 -4
  202. package/dist/conversion/conversion-v3/compatibility/compatibility-stages.js +0 -285
  203. package/dist/conversion/conversion-v3/compatibility/index.d.ts +0 -3
  204. package/dist/conversion/conversion-v3/compatibility/index.js +0 -2
  205. package/dist/conversion/conversion-v3/config/default-configs.d.ts +0 -48
  206. package/dist/conversion/conversion-v3/config/default-configs.js +0 -1007
  207. package/dist/conversion/conversion-v3/config/index.d.ts +0 -5
  208. package/dist/conversion/conversion-v3/config/index.js +0 -5
  209. package/dist/conversion/conversion-v3/config/pipeline-config-manager.d.ts +0 -49
  210. package/dist/conversion/conversion-v3/config/pipeline-config-manager.js +0 -65
  211. package/dist/conversion/conversion-v3/index.d.ts +0 -11
  212. package/dist/conversion/conversion-v3/index.js +0 -17
  213. package/dist/conversion/conversion-v3/nodes/index.d.ts +0 -56
  214. package/dist/conversion/conversion-v3/nodes/index.js +0 -149
  215. package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.d.ts +0 -25
  216. package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.js +0 -56
  217. package/dist/conversion/conversion-v3/nodes/input/base-input-node.d.ts +0 -75
  218. package/dist/conversion/conversion-v3/nodes/input/base-input-node.js +0 -237
  219. package/dist/conversion/conversion-v3/nodes/input/chat-input-node.d.ts +0 -25
  220. package/dist/conversion/conversion-v3/nodes/input/chat-input-node.js +0 -56
  221. package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.d.ts +0 -4
  222. package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.js +0 -197
  223. package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.d.ts +0 -16
  224. package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.js +0 -125
  225. package/dist/conversion/conversion-v3/nodes/input/index.d.ts +0 -8
  226. package/dist/conversion/conversion-v3/nodes/input/index.js +0 -8
  227. package/dist/conversion/conversion-v3/nodes/input/input-decision.d.ts +0 -46
  228. package/dist/conversion/conversion-v3/nodes/input/input-decision.js +0 -125
  229. package/dist/conversion/conversion-v3/nodes/input/responses-input-node.d.ts +0 -20
  230. package/dist/conversion/conversion-v3/nodes/input/responses-input-node.js +0 -51
  231. package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.d.ts +0 -71
  232. package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.js +0 -320
  233. package/dist/conversion/conversion-v3/nodes/output/base-output-node.d.ts +0 -116
  234. package/dist/conversion/conversion-v3/nodes/output/base-output-node.js +0 -512
  235. package/dist/conversion/conversion-v3/nodes/output/index.d.ts +0 -7
  236. package/dist/conversion/conversion-v3/nodes/output/index.js +0 -7
  237. package/dist/conversion/conversion-v3/nodes/output/openai-output-node.d.ts +0 -71
  238. package/dist/conversion/conversion-v3/nodes/output/openai-output-node.js +0 -293
  239. package/dist/conversion/conversion-v3/nodes/output/output-decision.d.ts +0 -68
  240. package/dist/conversion/conversion-v3/nodes/output/output-decision.js +0 -161
  241. package/dist/conversion/conversion-v3/nodes/output/responses-output-node.d.ts +0 -64
  242. package/dist/conversion/conversion-v3/nodes/output/responses-output-node.js +0 -323
  243. package/dist/conversion/conversion-v3/nodes/process/base-process-node.d.ts +0 -72
  244. package/dist/conversion/conversion-v3/nodes/process/base-process-node.js +0 -246
  245. package/dist/conversion/conversion-v3/nodes/process/chat-process-node.d.ts +0 -135
  246. package/dist/conversion/conversion-v3/nodes/process/chat-process-node.js +0 -854
  247. package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.d.ts +0 -29
  248. package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.js +0 -181
  249. package/dist/conversion/conversion-v3/nodes/process/index.d.ts +0 -10
  250. package/dist/conversion/conversion-v3/nodes/process/index.js +0 -10
  251. package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.d.ts +0 -59
  252. package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.js +0 -243
  253. package/dist/conversion/conversion-v3/nodes/process/response-process-node.d.ts +0 -17
  254. package/dist/conversion/conversion-v3/nodes/process/response-process-node.js +0 -213
  255. package/dist/conversion/conversion-v3/nodes/process/tool-process-node.d.ts +0 -30
  256. package/dist/conversion/conversion-v3/nodes/process/tool-process-node.js +0 -360
  257. package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.d.ts +0 -40
  258. package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.js +0 -430
  259. package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.d.ts +0 -12
  260. package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.js +0 -129
  261. package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.d.ts +0 -15
  262. package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.js +0 -57
  263. package/dist/conversion/conversion-v3/nodes/response/index.d.ts +0 -4
  264. package/dist/conversion/conversion-v3/nodes/response/index.js +0 -4
  265. package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.d.ts +0 -15
  266. package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.js +0 -87
  267. package/dist/conversion/conversion-v3/nodes/response/response-utils.d.ts +0 -1
  268. package/dist/conversion/conversion-v3/nodes/response/response-utils.js +0 -1
  269. package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.d.ts +0 -12
  270. package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.js +0 -67
  271. package/dist/conversion/conversion-v3/nodes/sse/index.d.ts +0 -3
  272. package/dist/conversion/conversion-v3/nodes/sse/index.js +0 -3
  273. package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.d.ts +0 -27
  274. package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.js +0 -165
  275. package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.d.ts +0 -19
  276. package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.js +0 -267
  277. package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.d.ts +0 -18
  278. package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.js +0 -48
  279. package/dist/conversion/conversion-v3/pipelines/index.d.ts +0 -6
  280. package/dist/conversion/conversion-v3/pipelines/index.js +0 -6
  281. package/dist/conversion/conversion-v3/pipelines/super-pipeline.d.ts +0 -112
  282. package/dist/conversion/conversion-v3/pipelines/super-pipeline.js +0 -566
  283. package/dist/conversion/conversion-v3/response/provider-response-converter.d.ts +0 -28
  284. package/dist/conversion/conversion-v3/response/provider-response-converter.js +0 -249
  285. package/dist/conversion/conversion-v3/sse/index.d.ts +0 -140
  286. package/dist/conversion/conversion-v3/sse/index.js +0 -115
  287. package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +0 -11
  288. package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.js +0 -79
  289. package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.d.ts +0 -79
  290. package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.js +0 -296
  291. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.d.ts +0 -55
  292. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.js +0 -233
  293. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.d.ts +0 -99
  294. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.js +0 -599
  295. package/dist/conversion/conversion-v3/sse/json-to-sse/index.d.ts +0 -6
  296. package/dist/conversion/conversion-v3/sse/json-to-sse/index.js +0 -7
  297. package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.d.ts +0 -79
  298. package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.js +0 -322
  299. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.d.ts +0 -37
  300. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.js +0 -218
  301. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.d.ts +0 -40
  302. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.js +0 -263
  303. package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.d.ts +0 -32
  304. package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.js +0 -106
  305. package/dist/conversion/conversion-v3/sse/shared/chat-serializer.d.ts +0 -4
  306. package/dist/conversion/conversion-v3/sse/shared/chat-serializer.js +0 -40
  307. package/dist/conversion/conversion-v3/sse/shared/constants.d.ts +0 -272
  308. package/dist/conversion/conversion-v3/sse/shared/constants.js +0 -321
  309. package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.d.ts +0 -158
  310. package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.js +0 -210
  311. package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.d.ts +0 -82
  312. package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.js +0 -275
  313. package/dist/conversion/conversion-v3/sse/shared/serializers/index.d.ts +0 -39
  314. package/dist/conversion/conversion-v3/sse/shared/serializers/index.js +0 -54
  315. package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.d.ts +0 -123
  316. package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.js +0 -356
  317. package/dist/conversion/conversion-v3/sse/shared/serializers/types.d.ts +0 -51
  318. package/dist/conversion/conversion-v3/sse/shared/serializers/types.js +0 -4
  319. package/dist/conversion/conversion-v3/sse/shared/utils.d.ts +0 -254
  320. package/dist/conversion/conversion-v3/sse/shared/utils.js +0 -543
  321. package/dist/conversion/conversion-v3/sse/shared/writer.d.ts +0 -111
  322. package/dist/conversion/conversion-v3/sse/shared/writer.js +0 -268
  323. package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +0 -13
  324. package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.js +0 -139
  325. package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.d.ts +0 -165
  326. package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.js +0 -776
  327. package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.d.ts +0 -106
  328. package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.js +0 -540
  329. package/dist/conversion/conversion-v3/sse/sse-to-json/index.d.ts +0 -6
  330. package/dist/conversion/conversion-v3/sse/sse-to-json/index.js +0 -7
  331. package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.d.ts +0 -73
  332. package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.js +0 -332
  333. package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.d.ts +0 -59
  334. package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.js +0 -270
  335. package/dist/conversion/conversion-v3/sse/types/anthropic-types.d.ts +0 -87
  336. package/dist/conversion/conversion-v3/sse/types/anthropic-types.js +0 -5
  337. package/dist/conversion/conversion-v3/sse/types/chat-types.d.ts +0 -308
  338. package/dist/conversion/conversion-v3/sse/types/chat-types.js +0 -32
  339. package/dist/conversion/conversion-v3/sse/types/conversion-context.d.ts +0 -211
  340. package/dist/conversion/conversion-v3/sse/types/conversion-context.js +0 -20
  341. package/dist/conversion/conversion-v3/sse/types/core-interfaces.d.ts +0 -90
  342. package/dist/conversion/conversion-v3/sse/types/core-interfaces.js +0 -5
  343. package/dist/conversion/conversion-v3/sse/types/index.d.ts +0 -14
  344. package/dist/conversion/conversion-v3/sse/types/index.js +0 -7
  345. package/dist/conversion/conversion-v3/sse/types/responses-types.d.ts +0 -328
  346. package/dist/conversion/conversion-v3/sse/types/responses-types.js +0 -38
  347. package/dist/conversion/conversion-v3/sse/types/sse-events.d.ts +0 -180
  348. package/dist/conversion/conversion-v3/sse/types/sse-events.js +0 -150
  349. package/dist/conversion/conversion-v3/sse/types/stream-state.d.ts +0 -204
  350. package/dist/conversion/conversion-v3/sse/types/stream-state.js +0 -44
  351. package/dist/conversion/conversion-v3/sse/types/utility-types.d.ts +0 -230
  352. package/dist/conversion/conversion-v3/sse/types/utility-types.js +0 -49
  353. package/dist/conversion/conversion-v3/standards/context-adapter.d.ts +0 -146
  354. package/dist/conversion/conversion-v3/standards/context-adapter.js +0 -438
  355. package/dist/conversion/conversion-v3/standards/errors.d.ts +0 -38
  356. package/dist/conversion/conversion-v3/standards/errors.js +0 -27
  357. package/dist/conversion/conversion-v3/standards/index.d.ts +0 -15
  358. package/dist/conversion/conversion-v3/standards/index.js +0 -11
  359. package/dist/conversion/conversion-v3/standards/node-capabilities.d.ts +0 -123
  360. package/dist/conversion/conversion-v3/standards/node-capabilities.js +0 -330
  361. package/dist/conversion/conversion-v3/standards/pipeline-context.d.ts +0 -237
  362. package/dist/conversion/conversion-v3/standards/pipeline-context.js +0 -84
  363. package/dist/conversion/conversion-v3/standards/pipeline-node.d.ts +0 -196
  364. package/dist/conversion/conversion-v3/standards/pipeline-node.js +0 -316
  365. package/dist/conversion/conversion-v3/standards/snapshot-handles.d.ts +0 -24
  366. package/dist/conversion/conversion-v3/standards/snapshot-handles.js +0 -49
  367. package/dist/conversion/conversion-v3/types/config-types.d.ts +0 -242
  368. package/dist/conversion/conversion-v3/types/config-types.js +0 -13
  369. package/dist/conversion/conversion-v3/types/index.d.ts +0 -8
  370. package/dist/conversion/conversion-v3/types/index.js +0 -11
  371. package/dist/conversion/conversion-v3/types/node-types.d.ts +0 -211
  372. package/dist/conversion/conversion-v3/types/node-types.js +0 -20
  373. package/dist/conversion/conversion-v3/types/pipeline-types.d.ts +0 -246
  374. package/dist/conversion/conversion-v3/types/pipeline-types.js +0 -26
  375. package/dist/conversion/conversion-v3/types/request-types.d.ts +0 -293
  376. package/dist/conversion/conversion-v3/types/request-types.js +0 -26
  377. package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.d.ts +0 -10
  378. package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.js +0 -103
  379. package/dist/conversion/conversion-v3/validations/index.d.ts +0 -8
  380. package/dist/conversion/conversion-v3/validations/index.js +0 -7
  381. package/dist/conversion/conversion-v3/validations/node-graph-validator.d.ts +0 -116
  382. package/dist/conversion/conversion-v3/validations/node-graph-validator.js +0 -505
  383. package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.d.ts +0 -139
  384. package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.js +0 -338
  385. package/dist/conversion/hub/config/types.d.ts +0 -26
  386. package/dist/conversion/hub/core/detour-registry.d.ts +0 -9
  387. package/dist/conversion/hub/core/hub-context.d.ts +0 -21
  388. package/dist/conversion/hub/core/index.d.ts +0 -3
  389. package/dist/conversion/hub/core/stage-driver.d.ts +0 -30
  390. package/dist/conversion/hub/format-adapters/anthropic-format-adapter.d.ts +0 -16
  391. package/dist/conversion/hub/format-adapters/chat-format-adapter.d.ts +0 -17
  392. package/dist/conversion/hub/format-adapters/gemini-format-adapter.d.ts +0 -16
  393. package/dist/conversion/hub/format-adapters/index.d.ts +0 -21
  394. package/dist/conversion/hub/hub-feature.d.ts +0 -1
  395. package/dist/conversion/hub/node-support.d.ts +0 -19
  396. package/dist/conversion/hub/pipeline/hub-pipeline.d.ts +0 -68
  397. package/dist/conversion/hub/pipelines/inbound.d.ts +0 -22
  398. package/dist/conversion/hub/pipelines/outbound.d.ts +0 -22
  399. package/dist/conversion/hub/process/chat-process.d.ts +0 -13
  400. package/dist/conversion/hub/registry.d.ts +0 -28
  401. package/dist/conversion/hub/response/chat-response-utils.d.ts +0 -6
  402. package/dist/conversion/hub/response/provider-response.d.ts +0 -20
  403. package/dist/conversion/hub/response/response-mappers.d.ts +0 -19
  404. package/dist/conversion/hub/response/response-runtime.d.ts +0 -3
  405. package/dist/conversion/hub/semantic-mappers/anthropic-mapper.d.ts +0 -7
  406. package/dist/conversion/hub/semantic-mappers/chat-mapper.d.ts +0 -7
  407. package/dist/conversion/hub/semantic-mappers/gemini-mapper.d.ts +0 -7
  408. package/dist/conversion/hub/semantic-mappers/index.d.ts +0 -4
  409. package/dist/conversion/hub/semantic-mappers/responses-mapper.d.ts +0 -21
  410. package/dist/conversion/hub/snapshot-recorder.d.ts +0 -12
  411. package/dist/conversion/hub/standardized-bridge.d.ts +0 -12
  412. package/dist/conversion/hub/types/chat-envelope.d.ts +0 -67
  413. package/dist/conversion/hub/types/chat-schema.d.ts +0 -112
  414. package/dist/conversion/hub/types/errors.d.ts +0 -5
  415. package/dist/conversion/hub/types/format-envelope.d.ts +0 -7
  416. package/dist/conversion/hub/types/index.d.ts +0 -6
  417. package/dist/conversion/hub/types/json.d.ts +0 -9
  418. package/dist/conversion/hub/types/node.d.ts +0 -31
  419. package/dist/conversion/hub/types/standardized.d.ts +0 -94
  420. package/dist/conversion/schema-validator.d.ts +0 -7
  421. package/dist/conversion/shared/args-mapping.d.ts +0 -18
  422. package/dist/conversion/shared/chat-request-filters.d.ts +0 -9
  423. package/dist/conversion/shared/jsonish.d.ts +0 -3
  424. package/dist/conversion/shared/mcp-injection.d.ts +0 -2
  425. package/dist/conversion/shared/media.d.ts +0 -1
  426. package/dist/conversion/shared/openai-finalizer.d.ts +0 -9
  427. package/dist/conversion/shared/openai-message-normalize.d.ts +0 -1
  428. package/dist/conversion/shared/payload-budget.d.ts +0 -13
  429. package/dist/conversion/shared/reasoning-mapping.d.ts +0 -5
  430. package/dist/conversion/shared/responses-instructions.d.ts +0 -1
  431. package/dist/conversion/shared/responses-metadata.d.ts +0 -1
  432. package/dist/conversion/shared/snapshot-hooks.d.ts +0 -12
  433. package/dist/conversion/shared/streaming-text-extractor.d.ts +0 -26
  434. package/dist/conversion/shared/text-markup-normalizer.d.ts +0 -9
  435. package/dist/conversion/shared/tool-canonicalizer.d.ts +0 -2
  436. package/dist/conversion/shared/tool-filter-pipeline.d.ts +0 -17
  437. package/dist/conversion/shared/tool-governor.d.ts +0 -27
  438. package/dist/conversion/shared/tool-harvester.d.ts +0 -31
  439. package/dist/conversion/shared/tooling.d.ts +0 -26
  440. package/dist/conversion/types.d.ts +0 -33
  441. package/dist/core/index.d.ts +0 -6
  442. package/dist/core/index.js +0 -9
  443. package/dist/core/llmswitch-engine-v2.d.ts +0 -132
  444. package/dist/core/llmswitch-engine-v2.js +0 -649
  445. package/dist/core/llmswitch-factory-v2.d.ts +0 -123
  446. package/dist/core/llmswitch-factory-v2.js +0 -521
  447. package/dist/endpoints/base-endpoint-handler.d.ts +0 -128
  448. package/dist/endpoints/base-endpoint-handler.js +0 -545
  449. package/dist/endpoints/chat-endpoint-handler.d.ts +0 -115
  450. package/dist/endpoints/chat-endpoint-handler.js +0 -218
  451. package/dist/endpoints/endpoint-router.d.ts +0 -127
  452. package/dist/endpoints/endpoint-router.js +0 -438
  453. package/dist/endpoints/index.d.ts +0 -13
  454. package/dist/endpoints/index.js +0 -11
  455. package/dist/endpoints/messages-endpoint-handler.d.ts +0 -171
  456. package/dist/endpoints/messages-endpoint-handler.js +0 -238
  457. package/dist/endpoints/responses-endpoint-handler.d.ts +0 -147
  458. package/dist/endpoints/responses-endpoint-handler.js +0 -233
  459. package/dist/filters/builtin/add-fields-filter.d.ts +0 -8
  460. package/dist/filters/builtin/blacklist-filter.d.ts +0 -8
  461. package/dist/filters/builtin/whitelist-filter.d.ts +0 -8
  462. package/dist/filters/engine.d.ts +0 -16
  463. package/dist/filters/index.d.ts +0 -19
  464. package/dist/filters/special/request-streaming-to-nonstreaming.d.ts +0 -12
  465. package/dist/filters/special/request-tool-choice-policy.d.ts +0 -11
  466. package/dist/filters/special/request-tool-list-filter.d.ts +0 -11
  467. package/dist/filters/special/request-toolcalls-stringify.d.ts +0 -10
  468. package/dist/filters/special/request-tools-normalize.d.ts +0 -12
  469. package/dist/filters/special/response-finish-invariants.d.ts +0 -11
  470. package/dist/filters/special/response-openai-to-responses-bridge.d.ts +0 -13
  471. package/dist/filters/special/response-tool-arguments-blacklist.d.ts +0 -12
  472. package/dist/filters/special/response-tool-arguments-schema-converge.d.ts +0 -13
  473. package/dist/filters/special/response-tool-arguments-stringify.d.ts +0 -9
  474. package/dist/filters/special/response-tool-arguments-toon-decode.d.ts +0 -10
  475. package/dist/filters/special/response-tool-arguments-whitelist.d.ts +0 -11
  476. package/dist/filters/special/response-tool-text-canonicalize.d.ts +0 -10
  477. package/dist/filters/special/tool-filter-hooks.d.ts +0 -19
  478. package/dist/filters/special/tool-post-constraints.d.ts +0 -31
  479. package/dist/filters/types.d.ts +0 -68
  480. package/dist/filters/utils/fieldmap-loader.d.ts +0 -2
  481. package/dist/filters/utils/snapshot-writer.d.ts +0 -10
  482. package/dist/guidance/index.d.ts +0 -3
  483. package/dist/hooks/hooks-integration.d.ts +0 -161
  484. package/dist/hooks/hooks-integration.js +0 -519
  485. package/dist/hooks/index.d.ts +0 -10
  486. package/dist/hooks/index.js +0 -13
  487. package/dist/html-to-markdown.d.ts +0 -5
  488. package/dist/html-to-markdown.js +0 -66
  489. package/dist/http/sse-response.d.ts +0 -22
  490. package/dist/router/virtual-router/bootstrap.d.ts +0 -6
  491. package/dist/router/virtual-router/classifier.d.ts +0 -10
  492. package/dist/router/virtual-router/engine.d.ts +0 -35
  493. package/dist/router/virtual-router/error-center.d.ts +0 -10
  494. package/dist/router/virtual-router/features.d.ts +0 -3
  495. package/dist/router/virtual-router/health-manager.d.ts +0 -18
  496. package/dist/router/virtual-router/load-balancer.d.ts +0 -18
  497. package/dist/router/virtual-router/provider-registry.d.ts +0 -11
  498. package/dist/sse/json-to-sse/chat-json-to-sse-converter.d.ts +0 -79
  499. package/dist/sse/json-to-sse/event-generators/chat.d.ts +0 -55
  500. package/dist/sse/json-to-sse/event-generators/responses.d.ts +0 -99
  501. package/dist/sse/json-to-sse/responses-json-to-sse-converter.d.ts +0 -79
  502. package/dist/sse/json-to-sse/sequencers/responses-sequencer.d.ts +0 -40
  503. package/dist/sse/shared/chat-serializer.d.ts +0 -4
  504. package/dist/sse/shared/constants.d.ts +0 -272
  505. package/dist/sse/shared/serializers/base-serializer.d.ts +0 -158
  506. package/dist/sse/shared/serializers/chat-event-serializer.d.ts +0 -82
  507. package/dist/sse/shared/serializers/responses-event-serializer.d.ts +0 -123
  508. package/dist/sse/shared/serializers/types.d.ts +0 -51
  509. package/dist/sse/shared/utils.d.ts +0 -254
  510. package/dist/sse/sse-to-json/parsers/sse-parser.d.ts +0 -73
  511. package/dist/tools/proxy/anthropic-tool-proxy.d.ts +0 -19
  512. package/dist/tools/proxy/anthropic-tool-proxy.js +0 -57
  513. package/dist/tools/proxy/executors/web-fetch.d.ts +0 -6
  514. package/dist/tools/proxy/executors/web-fetch.js +0 -39
  515. package/dist/tools/proxy/registry.d.ts +0 -8
  516. package/dist/tools/proxy/registry.js +0 -14
  517. package/dist/tools/proxy/types.d.ts +0 -29
  518. package/dist/tools/tool-registry.d.ts +0 -8
  519. package/dist/tools/web-fetch-html.d.ts +0 -15
  520. package/dist/tools/web-fetch-html.js +0 -83
  521. package/dist/utils/conversion-adapter.d.ts +0 -65
  522. package/dist/utils/conversion-adapter.js +0 -183
  523. package/dist/utils/error-factory.d.ts +0 -88
  524. package/dist/utils/error-factory.js +0 -138
  525. package/dist/utils/error-utils.d.ts +0 -334
  526. package/dist/utils/error-utils.js +0 -782
  527. package/dist/utils/index.d.ts +0 -8
  528. package/dist/utils/index.js +0 -13
  529. package/dist/utils/performance-utils.d.ts +0 -205
  530. package/dist/utils/performance-utils.js +0 -440
  531. package/dist/utils/profile-mapper.d.ts +0 -32
  532. package/dist/utils/profile-mapper.js +0 -269
  533. package/dist/utils/request-processor.d.ts +0 -52
  534. package/dist/utils/request-processor.js +0 -210
  535. package/dist/utils/request-utils.d.ts +0 -117
  536. package/dist/utils/request-utils.js +0 -333
  537. package/dist/utils/response-utils.d.ts +0 -127
  538. package/dist/utils/response-utils.js +0 -516
  539. package/dist/utils/token-counter.d.ts +0 -89
  540. package/dist/utils/token-counter.js +0 -541
  541. /package/dist/{tools/proxy → conversion/hub/tool-governance}/types.js +0 -0
  542. /package/dist/conversion/shared/{responses-id-utils.d.ts → bridge-id-utils.d.ts} +0 -0
@@ -1,438 +0,0 @@
1
- import { createPipelineContext } from './pipeline-context.js';
2
- import { createSnapshotHandles } from './snapshot-handles.js';
3
- /**
4
- * 存放在 PipelineContext.extra 内部的字段
5
- */
6
- const SOURCE_NODE_KEY = '__sourceNodeContext';
7
- export class ContextAdapter {
8
- /**
9
- * 将 V3 NodeContext 适配为标准 PipelineContext
10
- */
11
- static fromNodeContext(nodeContext, options = {}) {
12
- const requestId = nodeContext.request.id ?? `req_${Date.now()}`;
13
- const entryEndpoint = ContextAdapter.resolveEntryEndpoint(nodeContext) ?? nodeContext.request.endpoint ?? '/unknown';
14
- const providerProtocol = ContextAdapter.resolveProviderProtocol(nodeContext, options);
15
- const standardizedRequest = ContextAdapter.extractStandardizedRequest(nodeContext);
16
- const baseMetadata = ContextAdapter.buildMetadata(nodeContext, options);
17
- const pipelineContext = standardizedRequest
18
- ? createPipelineContext(requestId, entryEndpoint, providerProtocol, standardizedRequest, baseMetadata)
19
- : createPipelineContext(requestId, entryEndpoint, providerProtocol, baseMetadata);
20
- pipelineContext.response = ContextAdapter.extractStandardizedResponse(nodeContext);
21
- pipelineContext.debug = ContextAdapter.buildDebugContext(nodeContext);
22
- pipelineContext.snapshots = createSnapshotHandles(nodeContext, pipelineContext.metadata);
23
- pipelineContext.callbacks = nodeContext.callbacks ?? null;
24
- pipelineContext.nodeContracts = ContextAdapter.buildNodeContracts(nodeContext);
25
- pipelineContext.extra = {
26
- ...pipelineContext.extra,
27
- nodeConfig: nodeContext.nodeConfig,
28
- hybridStream: ContextAdapter.extractHybridPayload(nodeContext.data),
29
- [SOURCE_NODE_KEY]: ContextAdapter.createNodeContextSnapshot(nodeContext)
30
- };
31
- return pipelineContext;
32
- }
33
- /**
34
- * 将 PipelineContext 还原为 V3 NodeContext
35
- */
36
- static toNodeContext(pipelineContext, seed) {
37
- const snapshot = ContextAdapter.getSnapshotFromContext(pipelineContext) ?? seed;
38
- if (!snapshot) {
39
- throw new Error('ContextAdapter.toNodeContext requires either stored snapshot or seed');
40
- }
41
- const request = ContextAdapter.mergeRequestSnapshot(snapshot.request, pipelineContext);
42
- const pipelineState = ContextAdapter.mergePipelineState(snapshot.pipeline, pipelineContext);
43
- const data = ContextAdapter.mergeNodeData(snapshot.data ?? {}, pipelineContext);
44
- return {
45
- request,
46
- pipeline: pipelineState,
47
- nodeConfig: snapshot.nodeConfig,
48
- data,
49
- callbacks: pipelineContext.callbacks ?? snapshot.callbacks ?? null
50
- };
51
- }
52
- /**
53
- * 在 PipelineContext 上合并 NodeResult
54
- */
55
- static mergeNodeResult(pipelineContext, nodeContext, result, options = {}) {
56
- if (result.data?.standardizedRequest) {
57
- pipelineContext.request = result.data.standardizedRequest;
58
- }
59
- const response = ContextAdapter.extractResponseFromResult(result);
60
- if (response) {
61
- pipelineContext.response = response;
62
- }
63
- if (result.error) {
64
- pipelineContext.metadata.errorContext = ContextAdapter.buildErrorContext(nodeContext, result, options.hookPhase ?? pipelineContext.metadata.hookPhase);
65
- }
66
- const streamingContext = ContextAdapter.updateStreamingContext(pipelineContext.debug.streamingContext, result.data);
67
- if (streamingContext) {
68
- pipelineContext.debug.streamingContext = streamingContext;
69
- }
70
- pipelineContext.metadata.hookPhase = options.hookPhase ?? pipelineContext.metadata.hookPhase;
71
- pipelineContext.extra = {
72
- ...pipelineContext.extra,
73
- hybridStream: ContextAdapter.extractHybridPayload(result.data) ?? pipelineContext.extra?.hybridStream,
74
- lastNodeResult: result,
75
- [SOURCE_NODE_KEY]: ContextAdapter.createNodeContextSnapshot({
76
- ...nodeContext,
77
- data: result.data ?? nodeContext.data
78
- })
79
- };
80
- return pipelineContext;
81
- }
82
- /**
83
- * 构造 PipelineContext.metadata
84
- */
85
- static buildMetadata(nodeContext, options) {
86
- const metadata = ContextAdapter.getRequestMetadata(nodeContext);
87
- const processMode = nodeContext.pipeline.isPassthrough || metadata.processMode === 'passthrough'
88
- ? 'passthrough'
89
- : metadata.processMode ?? 'chat';
90
- const streaming = ContextAdapter.resolveStreamingPreference(nodeContext);
91
- return {
92
- processMode,
93
- streaming,
94
- routeName: options.routeName ?? metadata.routeName ?? nodeContext.nodeConfig?.name ?? 'default',
95
- pipelineId: options.pipelineId ?? metadata.pipelineId ?? 'pipeline-default',
96
- providerId: metadata.providerId,
97
- providerType: metadata.providerType,
98
- hookPhase: (options.hookPhase ?? metadata.hookPhase),
99
- toolGovernanceApplied: metadata.toolGovernanceApplied,
100
- toolGovernanceTimestamp: metadata.toolGovernanceTimestamp,
101
- errorContext: metadata.errorContext
102
- };
103
- }
104
- /**
105
- * 构造调试上下文
106
- */
107
- static buildDebugContext(nodeContext) {
108
- const metadata = ContextAdapter.getRequestMetadata(nodeContext);
109
- const traceEnabled = Boolean(metadata.traceEnabled ?? metadata.debug);
110
- const stages = metadata.debugStages ?? {};
111
- const streamingContext = ContextAdapter.buildStreamingContext(nodeContext);
112
- return {
113
- traceEnabled,
114
- stages,
115
- streamingContext
116
- };
117
- }
118
- /**
119
- * 构造节点契约
120
- */
121
- static buildNodeContracts(nodeContext) {
122
- const capabilities = nodeContext.nodeConfig.options?.capabilities;
123
- const requirements = nodeContext.nodeConfig.options?.requirements;
124
- const permissions = nodeContext.nodeConfig.options?.permissions;
125
- return {
126
- [nodeContext.nodeConfig.id]: {
127
- capabilities: Array.isArray(capabilities) ? capabilities : [],
128
- requirements: Array.isArray(requirements) ? requirements : [],
129
- permissions: Array.isArray(permissions) ? permissions : []
130
- }
131
- };
132
- }
133
- /**
134
- * 推断 providerProtocol
135
- */
136
- static resolveProviderProtocol(nodeContext, options) {
137
- if (options.providerProtocol)
138
- return options.providerProtocol;
139
- const metadata = ContextAdapter.getRequestMetadata(nodeContext);
140
- if (typeof metadata.providerProtocol === 'string') {
141
- return metadata.providerProtocol;
142
- }
143
- const fromContext = nodeContext.request.context?.providerProtocol;
144
- if (typeof fromContext === 'string') {
145
- return fromContext;
146
- }
147
- if (typeof nodeContext.request.endpoint === 'string') {
148
- if (nodeContext.request.endpoint.includes('responses'))
149
- return 'openai-responses';
150
- if (nodeContext.request.endpoint.includes('messages'))
151
- return 'anthropic-messages';
152
- }
153
- return 'openai-chat';
154
- }
155
- /**
156
- * 解析请求附加 metadata
157
- */
158
- static getRequestMetadata(nodeContext) {
159
- const context = nodeContext.request.context;
160
- if (!context || typeof context !== 'object') {
161
- return {};
162
- }
163
- if (context.metadata && typeof context.metadata === 'object') {
164
- return context.metadata;
165
- }
166
- return context;
167
- }
168
- /**
169
- * 解析入口端点
170
- */
171
- static resolveEntryEndpoint(nodeContext) {
172
- const metadata = ContextAdapter.getRequestMetadata(nodeContext);
173
- if (typeof metadata.entryEndpoint === 'string') {
174
- return metadata.entryEndpoint;
175
- }
176
- const ctx = nodeContext.request.context;
177
- if (ctx && typeof ctx === 'object' && typeof ctx.entryEndpoint === 'string') {
178
- return ctx.entryEndpoint;
179
- }
180
- return undefined;
181
- }
182
- /**
183
- * 解析流式偏好
184
- */
185
- static resolveStreamingPreference(nodeContext) {
186
- const metadata = ContextAdapter.getRequestMetadata(nodeContext);
187
- if (metadata.stream === true)
188
- return 'always';
189
- if (metadata.stream === false)
190
- return 'never';
191
- const options = nodeContext.request.options;
192
- if (options?.streamingFormat === 'sse')
193
- return 'always';
194
- if (options?.streamingFormat === 'json')
195
- return 'never';
196
- const payload = nodeContext.request.payload;
197
- if (payload && typeof payload.stream === 'boolean') {
198
- return payload.stream ? 'always' : 'never';
199
- }
200
- return 'auto';
201
- }
202
- /**
203
- * 判断请求是否包含流式语义
204
- */
205
- static hasStreamingIntent(nodeContext) {
206
- const metadata = ContextAdapter.getRequestMetadata(nodeContext);
207
- if (metadata.stream === true)
208
- return true;
209
- const payload = nodeContext.request.payload;
210
- if (payload && typeof payload.stream === 'boolean') {
211
- return payload.stream;
212
- }
213
- if (nodeContext.request.options?.streamingFormat === 'sse') {
214
- return true;
215
- }
216
- const hybridPayload = ContextAdapter.extractHybridPayload(nodeContext.data);
217
- if (hybridPayload?.stream)
218
- return true;
219
- return ContextAdapter.isReadable(nodeContext.request.payload);
220
- }
221
- /**
222
- * 构建 StreamingContext
223
- */
224
- static buildStreamingContext(nodeContext) {
225
- const mode = ContextAdapter.resolveStreamingMode(nodeContext);
226
- return {
227
- mode,
228
- buffer: [],
229
- eventId: `${mode}_${nodeContext.request.id}_${Date.now()}`,
230
- stats: {
231
- eventsProcessed: 0,
232
- totalBytes: 0,
233
- averageLatency: 0
234
- }
235
- };
236
- }
237
- /**
238
- * 根据端点 + 流式意图推断模式
239
- */
240
- static resolveStreamingMode(nodeContext) {
241
- const hasStreaming = ContextAdapter.hasStreamingIntent(nodeContext);
242
- const isResponsesEndpoint = nodeContext.request.endpoint?.includes('responses');
243
- if (isResponsesEndpoint && hasStreaming) {
244
- return 'sse';
245
- }
246
- if (hasStreaming) {
247
- return 'hybrid';
248
- }
249
- return 'json';
250
- }
251
- /**
252
- * 更新 StreamingContext(基于节点输出)
253
- */
254
- static updateStreamingContext(streamingContext, data) {
255
- if (!streamingContext)
256
- return streamingContext;
257
- if (!data)
258
- return streamingContext;
259
- const hybridPayload = ContextAdapter.extractHybridPayload(data);
260
- if (hybridPayload?.mode) {
261
- return {
262
- ...streamingContext,
263
- mode: hybridPayload.mode
264
- };
265
- }
266
- return streamingContext;
267
- }
268
- /**
269
- * 提取标准化请求
270
- */
271
- static extractStandardizedRequest(nodeContext) {
272
- const data = nodeContext.data ?? {};
273
- if (data.standardizedRequest) {
274
- return data.standardizedRequest;
275
- }
276
- if (data.request && typeof data.request === 'object' && 'model' in data.request) {
277
- return data.request;
278
- }
279
- const payload = nodeContext.request.payload;
280
- if (payload && payload.standardizedRequest && typeof payload.standardizedRequest === 'object') {
281
- return payload.standardizedRequest;
282
- }
283
- return undefined;
284
- }
285
- /**
286
- * 提取标准化响应
287
- */
288
- static extractStandardizedResponse(nodeContext) {
289
- const data = nodeContext.data ?? {};
290
- if (data.response && typeof data.response === 'object') {
291
- return data.response;
292
- }
293
- const conversionResponse = data.conversionResponse;
294
- if (conversionResponse?.data && typeof conversionResponse.data === 'object') {
295
- return conversionResponse.data;
296
- }
297
- return undefined;
298
- }
299
- /**
300
- * 从 NodeResult 中提取响应
301
- */
302
- static extractResponseFromResult(result) {
303
- if (result.data?.response && typeof result.data.response === 'object') {
304
- return result.data.response;
305
- }
306
- const conversionResponse = result.data?.conversionResponse;
307
- if (conversionResponse?.data && typeof conversionResponse.data === 'object') {
308
- return conversionResponse.data;
309
- }
310
- return undefined;
311
- }
312
- /**
313
- * 记录 NodeContext 快照以供 round-trip
314
- */
315
- static createNodeContextSnapshot(nodeContext) {
316
- return {
317
- request: nodeContext.request,
318
- pipeline: nodeContext.pipeline,
319
- nodeConfig: nodeContext.nodeConfig,
320
- data: { ...nodeContext.data },
321
- callbacks: nodeContext.callbacks ?? null
322
- };
323
- }
324
- /**
325
- * 从 PipelineContext.extra 获取快照
326
- */
327
- static getSnapshotFromContext(pipelineContext) {
328
- const extra = pipelineContext.extra ?? {};
329
- const snapshot = extra[SOURCE_NODE_KEY];
330
- if (snapshot && typeof snapshot === 'object') {
331
- const candidate = snapshot;
332
- if (candidate.request && candidate.pipeline && candidate.nodeConfig) {
333
- return candidate;
334
- }
335
- }
336
- return undefined;
337
- }
338
- /**
339
- * 合并请求快照和 PipelineContext 元数据
340
- */
341
- static mergeRequestSnapshot(request, pipelineContext) {
342
- const mergedContext = {
343
- ...(request.context ?? {}),
344
- metadata: {
345
- ...(ContextAdapter.getRequestMetadata({ request })),
346
- ...pipelineContext.metadata
347
- },
348
- entryEndpoint: pipelineContext.metadata.entryEndpoint
349
- };
350
- return {
351
- ...request,
352
- context: mergedContext,
353
- endpoint: pipelineContext.metadata.entryEndpoint
354
- };
355
- }
356
- /**
357
- * 合并 pipelineState
358
- */
359
- static mergePipelineState(pipeline, pipelineContext) {
360
- return {
361
- ...pipeline,
362
- currentNode: pipelineContext.metadata.routeName ?? pipeline.currentNode
363
- };
364
- }
365
- /**
366
- * 合并 nodeContext data
367
- */
368
- static mergeNodeData(data, pipelineContext) {
369
- const merged = {
370
- ...data
371
- };
372
- if (pipelineContext.request) {
373
- merged.standardizedRequest = pipelineContext.request;
374
- }
375
- if (pipelineContext.response) {
376
- merged.response = pipelineContext.response;
377
- }
378
- if (pipelineContext.extra?.hybridStream) {
379
- merged.hybridStream = pipelineContext.extra.hybridStream;
380
- }
381
- return merged;
382
- }
383
- /**
384
- * 判断对象是否是 Readable
385
- */
386
- static isReadable(input) {
387
- return Boolean(input &&
388
- typeof input === 'object' &&
389
- typeof input.read === 'function' &&
390
- typeof input.pipe === 'function');
391
- }
392
- /**
393
- * 提取 HybridStreamPayload
394
- */
395
- static extractHybridPayload(source) {
396
- if (!source || typeof source !== 'object')
397
- return null;
398
- const payload = source;
399
- if (payload.__sse_responses) {
400
- return {
401
- mode: 'sse',
402
- stream: payload.__sse_responses,
403
- metadata: payload.responseMetadata
404
- };
405
- }
406
- if (payload.sseStream) {
407
- return {
408
- mode: 'hybrid',
409
- stream: payload.sseStream,
410
- snapshot: payload.response
411
- };
412
- }
413
- if (payload.hybridStream && typeof payload.hybridStream === 'object') {
414
- const inner = payload.hybridStream;
415
- return {
416
- mode: inner.mode ?? 'hybrid',
417
- stream: inner.stream,
418
- snapshot: inner.snapshot,
419
- metadata: inner.metadata
420
- };
421
- }
422
- return null;
423
- }
424
- /**
425
- * 构建错误上下文
426
- */
427
- static buildErrorContext(nodeContext, result, hookPhase) {
428
- return {
429
- originalError: result.error?.cause ?? new Error(result.error?.message ?? 'Unknown error'),
430
- stage: hookPhase ?? 'process',
431
- nodeId: nodeContext.nodeConfig.id,
432
- timestamp: Date.now(),
433
- severity: 'high',
434
- shouldTerminate: true,
435
- tags: [result.error?.code ?? 'unknown']
436
- };
437
- }
438
- }
@@ -1,38 +0,0 @@
1
- import type { ErrorPropagationContext } from './pipeline-context.js';
2
- export interface PipelineNodeError extends Error {
3
- nodeId: string;
4
- implementation: string;
5
- pipelineId: string;
6
- requestId: string;
7
- phase: 'request' | 'response';
8
- stage: string;
9
- metadata?: Record<string, unknown>;
10
- cause?: unknown;
11
- originalError?: unknown;
12
- }
13
- export interface PipelineWarningContext {
14
- nodeId: string;
15
- pipelineId: string;
16
- requestId: string;
17
- phase: 'request' | 'response';
18
- message: string;
19
- detail?: unknown;
20
- }
21
- export type PipelineErrorCallback = (error: PipelineNodeError) => Promise<void> | void;
22
- export type PipelineWarningCallback = (warning: PipelineWarningContext) => Promise<void> | void;
23
- export interface PipelineErrorCallbacks {
24
- onError?: PipelineErrorCallback;
25
- onWarning?: PipelineWarningCallback;
26
- }
27
- export declare function createPipelineNodeError(params: {
28
- nodeId: string;
29
- implementation: string;
30
- pipelineId: string;
31
- requestId: string;
32
- phase: 'request' | 'response';
33
- stage: string;
34
- error?: unknown;
35
- metadata?: Record<string, unknown>;
36
- }): PipelineNodeError;
37
- export declare function createWarningContext(params: PipelineWarningContext): PipelineWarningContext;
38
- export declare function attachErrorContext(err: PipelineNodeError, context: ErrorPropagationContext): PipelineNodeError;
@@ -1,27 +0,0 @@
1
- export function createPipelineNodeError(params) {
2
- const baseError = params.error instanceof Error ? params.error : undefined;
3
- const errorMessage = baseError?.message || 'Pipeline node execution failed';
4
- const err = Object.assign(new Error(errorMessage), {
5
- name: 'PipelineNodeError',
6
- nodeId: params.nodeId,
7
- implementation: params.implementation,
8
- pipelineId: params.pipelineId,
9
- requestId: params.requestId,
10
- phase: params.phase,
11
- stage: params.stage,
12
- metadata: params.metadata,
13
- cause: baseError,
14
- originalError: params.error
15
- });
16
- return err;
17
- }
18
- export function createWarningContext(params) {
19
- return { ...params };
20
- }
21
- export function attachErrorContext(err, context) {
22
- err.metadata = {
23
- ...(err.metadata || {}),
24
- errorContext: context
25
- };
26
- return err;
27
- }
@@ -1,15 +0,0 @@
1
- /**
2
- * RouteCodex V2 标准接口导出
3
- * Phase 1a: 完整 PipelineContext 接口 + 验证机制
4
- */
5
- export * from './pipeline-context.js';
6
- export * from './node-capabilities.js';
7
- export * from './pipeline-node.js';
8
- export * from './context-adapter.js';
9
- export * from './snapshot-handles.js';
10
- export * from './errors.js';
11
- export type { CanonicalRequest, CanonicalResponse, SnapshotHandles, PipelineContext, NodeCapabilities, PipelineNodeKind, ErrorPropagationContext, StreamingContext } from './pipeline-context.js';
12
- export type { PipelineNode, NodeImplementation, NodeHealthStatus, NodeMetrics, ValidationResult } from './pipeline-node.js';
13
- export type { HybridStreamPayload, ContextAdapterOptions, NodeContextSeed, MergeOptions as ContextMergeOptions } from './context-adapter.js';
14
- export type { SnapshotWriter, SnapshotWriterOptions, SnapshotMetadata, SnapshotFactoryOptions } from './snapshot-handles.js';
15
- export type { PipelineNodeError, PipelineWarningContext, PipelineErrorCallback, PipelineWarningCallback, PipelineErrorCallbacks } from './errors.js';
@@ -1,11 +0,0 @@
1
- /**
2
- * RouteCodex V2 标准接口导出
3
- * Phase 1a: 完整 PipelineContext 接口 + 验证机制
4
- */
5
- // 核心接口
6
- export * from './pipeline-context.js';
7
- export * from './node-capabilities.js';
8
- export * from './pipeline-node.js';
9
- export * from './context-adapter.js';
10
- export * from './snapshot-handles.js';
11
- export * from './errors.js';
@@ -1,123 +0,0 @@
1
- /**
2
- * 节点能力契约系统
3
- * 用于定义和验证节点权限、能力和职责边界
4
- */
5
- import type { NodeCapabilities, PipelineNodeKind } from './pipeline-context.js';
6
- /**
7
- * 预定义的节点能力集合
8
- */
9
- export declare const PREDEFINED_CAPABILITIES: {
10
- readonly BASIC: NodeCapabilities;
11
- readonly TOOL_GOVERNANCE: NodeCapabilities;
12
- readonly PROVIDER_ACCESS: NodeCapabilities;
13
- readonly STREAMING: NodeCapabilities;
14
- readonly SNAPSHOT_ACCESS: NodeCapabilities;
15
- readonly METADATA_MODIFY: NodeCapabilities;
16
- readonly FULL: NodeCapabilities;
17
- };
18
- /**
19
- * 节点类型与默认能力映射
20
- */
21
- export declare const NODE_TYPE_DEFAULT_CAPABILITIES: Record<PipelineNodeKind, NodeCapabilities>;
22
- /**
23
- * 特殊节点的能力映射
24
- */
25
- export declare const SPECIAL_NODE_CAPABILITIES: Record<string, NodeCapabilities>;
26
- /**
27
- * 能力验证规则
28
- */
29
- export interface CapabilityRule {
30
- /** 规则名称 */
31
- name: string;
32
- /** 规则描述 */
33
- description: string;
34
- /** 验证函数 */
35
- validator: (capabilities: NodeCapabilities, nodeId: string, nodeKind: PipelineNodeKind) => boolean;
36
- /** 错误消息 */
37
- errorMessage: string;
38
- /** 规则优先级 */
39
- priority: number;
40
- }
41
- /**
42
- * 预定义的能力验证规则
43
- */
44
- export declare const CAPABILITY_VALIDATION_RULES: CapabilityRule[];
45
- /**
46
- * 能力验证器
47
- */
48
- export declare class CapabilityValidator {
49
- /**
50
- * 验证节点能力
51
- */
52
- static validateNodeCapabilities(nodeId: string, nodeKind: PipelineNodeKind, capabilities: NodeCapabilities): CapabilityValidationResult;
53
- /**
54
- * 检测能力冲突
55
- */
56
- private static detectCapabilityConflicts;
57
- /**
58
- * 获取节点的推荐能力
59
- */
60
- static getRecommendedCapabilities(nodeId: string, nodeKind: PipelineNodeKind): NodeCapabilities;
61
- /**
62
- * 验证能力组合的合理性
63
- */
64
- static validateCapabilityCombination(capabilities: NodeCapabilities): CapabilityValidationResult;
65
- }
66
- /**
67
- * 能力验证结果接口
68
- */
69
- export interface CapabilityValidationResult {
70
- /** 是否验证通过 */
71
- valid: boolean;
72
- /** 错误列表 */
73
- errors: CapabilityValidationError[];
74
- /** 警告列表 */
75
- warnings: CapabilityValidationWarning[];
76
- }
77
- /**
78
- * 能力验证错误接口
79
- */
80
- export interface CapabilityValidationError {
81
- /** 规则名称 */
82
- rule: string;
83
- /** 错误消息 */
84
- message: string;
85
- /** 错误严重程度 */
86
- severity: 'error' | 'warning';
87
- /** 详细信息 */
88
- details?: Record<string, unknown>;
89
- }
90
- /**
91
- * 能力验证警告接口
92
- */
93
- export interface CapabilityValidationWarning {
94
- /** 规则名称 */
95
- rule: string;
96
- /** 警告消息 */
97
- message: string;
98
- /** 警告严重程度 */
99
- severity: 'error' | 'warning';
100
- /** 详细信息 */
101
- details?: Record<string, unknown>;
102
- }
103
- /**
104
- * 能力描述符
105
- */
106
- export interface CapabilityDescriptor {
107
- /** 能力名称 */
108
- name: string;
109
- /** 能力描述 */
110
- description: string;
111
- /** 风险级别 */
112
- riskLevel: 'low' | 'medium' | 'high' | 'critical';
113
- /** 是否需要特殊权限 */
114
- requiresSpecialPermission: boolean;
115
- /** 相关的节点类型 */
116
- relatedNodeTypes: PipelineNodeKind[];
117
- /** 使用示例 */
118
- usageExample?: string;
119
- }
120
- /**
121
- * 所有能力的描述符
122
- */
123
- export declare const CAPABILITY_DESCRIPTORS: Record<keyof NodeCapabilities, CapabilityDescriptor>;