@jsonstudio/llms 0.4.2 → 0.4.4

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 (417) 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 +4 -2
  6. package/dist/conversion/hub/pipeline/hub-pipeline.js +4 -5
  7. package/dist/conversion/hub/process/chat-process.js +258 -41
  8. package/dist/conversion/hub/response/provider-response.js +8 -2
  9. package/dist/conversion/hub/tool-governance/engine.d.ts +16 -0
  10. package/dist/conversion/hub/tool-governance/engine.js +266 -0
  11. package/dist/conversion/hub/tool-governance/index.d.ts +3 -0
  12. package/dist/conversion/hub/tool-governance/index.js +2 -0
  13. package/dist/conversion/hub/tool-governance/rules.d.ts +2 -0
  14. package/dist/conversion/hub/tool-governance/rules.js +76 -0
  15. package/dist/conversion/hub/tool-governance/types.d.ts +38 -0
  16. package/dist/conversion/index.d.ts +1 -0
  17. package/dist/conversion/index.js +1 -0
  18. package/dist/conversion/responses/responses-openai-bridge.js +5 -3
  19. package/dist/conversion/shared/responses-id-utils.js +18 -5
  20. package/dist/sse/sse-to-json/builders/response-builder.js +2 -1
  21. package/dist/sse/sse-to-json/chat-sse-to-json-converter.js +37 -23
  22. package/dist/sse/sse-to-json/parsers/sse-parser.js +20 -12
  23. package/dist/sse/sse-to-json/responses-sse-to-json-converter.d.ts +1 -0
  24. package/dist/sse/sse-to-json/responses-sse-to-json-converter.js +10 -8
  25. package/dist/sse/types/chat-types.d.ts +9 -6
  26. package/dist/sse/types/conversion-context.d.ts +14 -11
  27. package/dist/sse/types/core-interfaces.d.ts +6 -2
  28. package/dist/sse/types/index.d.ts +1 -1
  29. package/dist/sse/types/responses-types.d.ts +20 -20
  30. package/dist/sse/types/sse-events.d.ts +4 -3
  31. package/dist/sse/types/stream-state.d.ts +34 -39
  32. package/dist/sse/types/utility-types.d.ts +47 -43
  33. package/dist/sse/types/utility-types.js +10 -13
  34. package/dist/tools/tool-registry.js +156 -98
  35. package/package.json +6 -6
  36. package/dist/api/index.d.ts +0 -10
  37. package/dist/api/index.js +0 -11
  38. package/dist/api/llmswitch-config.d.ts +0 -15
  39. package/dist/api/llmswitch-config.js +0 -415
  40. package/dist/api/llmswitch-types.d.ts +0 -412
  41. package/dist/api/llmswitch-types.js +0 -60
  42. package/dist/bridge/routecodex-adapter.d.ts +0 -74
  43. package/dist/config/index.d.ts +0 -3
  44. package/dist/config/index.js +0 -5
  45. package/dist/config-unified/enhanced-path-resolver.d.ts +0 -5
  46. package/dist/config-unified/unified-config.d.ts +0 -26
  47. package/dist/conversion/codec-registry.d.ts +0 -10
  48. package/dist/conversion/codecs/anthropic-openai-codec.d.ts +0 -23
  49. package/dist/conversion/codecs/gemini-openai-codec.d.ts +0 -16
  50. package/dist/conversion/codecs/openai-openai-codec.d.ts +0 -12
  51. package/dist/conversion/codecs/responses-openai-codec.d.ts +0 -12
  52. package/dist/conversion/config/config-manager.d.ts +0 -212
  53. package/dist/conversion/conversion-v3/adapters/index.d.ts +0 -2
  54. package/dist/conversion/conversion-v3/adapters/index.js +0 -1
  55. package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.d.ts +0 -38
  56. package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.js +0 -55
  57. package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.d.ts +0 -22
  58. package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.js +0 -84
  59. package/dist/conversion/conversion-v3/compatibility/compatibility-stages.d.ts +0 -4
  60. package/dist/conversion/conversion-v3/compatibility/compatibility-stages.js +0 -285
  61. package/dist/conversion/conversion-v3/compatibility/index.d.ts +0 -3
  62. package/dist/conversion/conversion-v3/compatibility/index.js +0 -2
  63. package/dist/conversion/conversion-v3/config/default-configs.d.ts +0 -48
  64. package/dist/conversion/conversion-v3/config/default-configs.js +0 -1083
  65. package/dist/conversion/conversion-v3/config/index.d.ts +0 -5
  66. package/dist/conversion/conversion-v3/config/index.js +0 -5
  67. package/dist/conversion/conversion-v3/config/pipeline-config-manager.d.ts +0 -49
  68. package/dist/conversion/conversion-v3/config/pipeline-config-manager.js +0 -65
  69. package/dist/conversion/conversion-v3/index.d.ts +0 -11
  70. package/dist/conversion/conversion-v3/index.js +0 -17
  71. package/dist/conversion/conversion-v3/nodes/index.d.ts +0 -56
  72. package/dist/conversion/conversion-v3/nodes/index.js +0 -149
  73. package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.d.ts +0 -25
  74. package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.js +0 -56
  75. package/dist/conversion/conversion-v3/nodes/input/base-input-node.d.ts +0 -75
  76. package/dist/conversion/conversion-v3/nodes/input/base-input-node.js +0 -237
  77. package/dist/conversion/conversion-v3/nodes/input/chat-input-node.d.ts +0 -25
  78. package/dist/conversion/conversion-v3/nodes/input/chat-input-node.js +0 -56
  79. package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.d.ts +0 -4
  80. package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.js +0 -197
  81. package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.d.ts +0 -16
  82. package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.js +0 -125
  83. package/dist/conversion/conversion-v3/nodes/input/index.d.ts +0 -8
  84. package/dist/conversion/conversion-v3/nodes/input/index.js +0 -8
  85. package/dist/conversion/conversion-v3/nodes/input/input-decision.d.ts +0 -46
  86. package/dist/conversion/conversion-v3/nodes/input/input-decision.js +0 -125
  87. package/dist/conversion/conversion-v3/nodes/input/responses-input-node.d.ts +0 -20
  88. package/dist/conversion/conversion-v3/nodes/input/responses-input-node.js +0 -51
  89. package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.d.ts +0 -71
  90. package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.js +0 -320
  91. package/dist/conversion/conversion-v3/nodes/output/base-output-node.d.ts +0 -116
  92. package/dist/conversion/conversion-v3/nodes/output/base-output-node.js +0 -512
  93. package/dist/conversion/conversion-v3/nodes/output/index.d.ts +0 -7
  94. package/dist/conversion/conversion-v3/nodes/output/index.js +0 -7
  95. package/dist/conversion/conversion-v3/nodes/output/openai-output-node.d.ts +0 -71
  96. package/dist/conversion/conversion-v3/nodes/output/openai-output-node.js +0 -293
  97. package/dist/conversion/conversion-v3/nodes/output/output-decision.d.ts +0 -68
  98. package/dist/conversion/conversion-v3/nodes/output/output-decision.js +0 -161
  99. package/dist/conversion/conversion-v3/nodes/output/responses-output-node.d.ts +0 -64
  100. package/dist/conversion/conversion-v3/nodes/output/responses-output-node.js +0 -323
  101. package/dist/conversion/conversion-v3/nodes/process/base-process-node.d.ts +0 -72
  102. package/dist/conversion/conversion-v3/nodes/process/base-process-node.js +0 -246
  103. package/dist/conversion/conversion-v3/nodes/process/chat-process-node.d.ts +0 -135
  104. package/dist/conversion/conversion-v3/nodes/process/chat-process-node.js +0 -854
  105. package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.d.ts +0 -29
  106. package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.js +0 -181
  107. package/dist/conversion/conversion-v3/nodes/process/index.d.ts +0 -10
  108. package/dist/conversion/conversion-v3/nodes/process/index.js +0 -10
  109. package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.d.ts +0 -59
  110. package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.js +0 -243
  111. package/dist/conversion/conversion-v3/nodes/process/response-process-node.d.ts +0 -17
  112. package/dist/conversion/conversion-v3/nodes/process/response-process-node.js +0 -213
  113. package/dist/conversion/conversion-v3/nodes/process/tool-process-node.d.ts +0 -26
  114. package/dist/conversion/conversion-v3/nodes/process/tool-process-node.js +0 -299
  115. package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.d.ts +0 -40
  116. package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.js +0 -430
  117. package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.d.ts +0 -12
  118. package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.js +0 -129
  119. package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.d.ts +0 -15
  120. package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.js +0 -57
  121. package/dist/conversion/conversion-v3/nodes/response/index.d.ts +0 -4
  122. package/dist/conversion/conversion-v3/nodes/response/index.js +0 -4
  123. package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.d.ts +0 -15
  124. package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.js +0 -87
  125. package/dist/conversion/conversion-v3/nodes/response/response-utils.d.ts +0 -1
  126. package/dist/conversion/conversion-v3/nodes/response/response-utils.js +0 -1
  127. package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.d.ts +0 -12
  128. package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.js +0 -67
  129. package/dist/conversion/conversion-v3/nodes/sse/index.d.ts +0 -3
  130. package/dist/conversion/conversion-v3/nodes/sse/index.js +0 -3
  131. package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.d.ts +0 -27
  132. package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.js +0 -165
  133. package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.d.ts +0 -19
  134. package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.js +0 -267
  135. package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.d.ts +0 -18
  136. package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.js +0 -48
  137. package/dist/conversion/conversion-v3/pipelines/index.d.ts +0 -6
  138. package/dist/conversion/conversion-v3/pipelines/index.js +0 -6
  139. package/dist/conversion/conversion-v3/pipelines/super-pipeline.d.ts +0 -112
  140. package/dist/conversion/conversion-v3/pipelines/super-pipeline.js +0 -566
  141. package/dist/conversion/conversion-v3/response/provider-response-converter.d.ts +0 -28
  142. package/dist/conversion/conversion-v3/response/provider-response-converter.js +0 -249
  143. package/dist/conversion/conversion-v3/sse/index.d.ts +0 -140
  144. package/dist/conversion/conversion-v3/sse/index.js +0 -115
  145. package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +0 -11
  146. package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.js +0 -79
  147. package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.d.ts +0 -79
  148. package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.js +0 -296
  149. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.d.ts +0 -55
  150. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.js +0 -233
  151. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.d.ts +0 -99
  152. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.js +0 -599
  153. package/dist/conversion/conversion-v3/sse/json-to-sse/index.d.ts +0 -6
  154. package/dist/conversion/conversion-v3/sse/json-to-sse/index.js +0 -7
  155. package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.d.ts +0 -79
  156. package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.js +0 -322
  157. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.d.ts +0 -37
  158. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.js +0 -218
  159. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.d.ts +0 -40
  160. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.js +0 -263
  161. package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.d.ts +0 -32
  162. package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.js +0 -106
  163. package/dist/conversion/conversion-v3/sse/shared/chat-serializer.d.ts +0 -4
  164. package/dist/conversion/conversion-v3/sse/shared/chat-serializer.js +0 -40
  165. package/dist/conversion/conversion-v3/sse/shared/constants.d.ts +0 -272
  166. package/dist/conversion/conversion-v3/sse/shared/constants.js +0 -321
  167. package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.d.ts +0 -158
  168. package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.js +0 -210
  169. package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.d.ts +0 -82
  170. package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.js +0 -275
  171. package/dist/conversion/conversion-v3/sse/shared/serializers/index.d.ts +0 -39
  172. package/dist/conversion/conversion-v3/sse/shared/serializers/index.js +0 -54
  173. package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.d.ts +0 -123
  174. package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.js +0 -356
  175. package/dist/conversion/conversion-v3/sse/shared/serializers/types.d.ts +0 -51
  176. package/dist/conversion/conversion-v3/sse/shared/serializers/types.js +0 -4
  177. package/dist/conversion/conversion-v3/sse/shared/utils.d.ts +0 -254
  178. package/dist/conversion/conversion-v3/sse/shared/utils.js +0 -543
  179. package/dist/conversion/conversion-v3/sse/shared/writer.d.ts +0 -111
  180. package/dist/conversion/conversion-v3/sse/shared/writer.js +0 -268
  181. package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +0 -13
  182. package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.js +0 -139
  183. package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.d.ts +0 -165
  184. package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.js +0 -776
  185. package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.d.ts +0 -106
  186. package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.js +0 -540
  187. package/dist/conversion/conversion-v3/sse/sse-to-json/index.d.ts +0 -6
  188. package/dist/conversion/conversion-v3/sse/sse-to-json/index.js +0 -7
  189. package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.d.ts +0 -73
  190. package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.js +0 -332
  191. package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.d.ts +0 -59
  192. package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.js +0 -270
  193. package/dist/conversion/conversion-v3/sse/types/anthropic-types.d.ts +0 -87
  194. package/dist/conversion/conversion-v3/sse/types/anthropic-types.js +0 -5
  195. package/dist/conversion/conversion-v3/sse/types/chat-types.d.ts +0 -308
  196. package/dist/conversion/conversion-v3/sse/types/chat-types.js +0 -32
  197. package/dist/conversion/conversion-v3/sse/types/conversion-context.d.ts +0 -211
  198. package/dist/conversion/conversion-v3/sse/types/conversion-context.js +0 -20
  199. package/dist/conversion/conversion-v3/sse/types/core-interfaces.d.ts +0 -90
  200. package/dist/conversion/conversion-v3/sse/types/core-interfaces.js +0 -5
  201. package/dist/conversion/conversion-v3/sse/types/index.d.ts +0 -14
  202. package/dist/conversion/conversion-v3/sse/types/index.js +0 -7
  203. package/dist/conversion/conversion-v3/sse/types/responses-types.d.ts +0 -328
  204. package/dist/conversion/conversion-v3/sse/types/responses-types.js +0 -38
  205. package/dist/conversion/conversion-v3/sse/types/sse-events.d.ts +0 -180
  206. package/dist/conversion/conversion-v3/sse/types/sse-events.js +0 -150
  207. package/dist/conversion/conversion-v3/sse/types/stream-state.d.ts +0 -204
  208. package/dist/conversion/conversion-v3/sse/types/stream-state.js +0 -44
  209. package/dist/conversion/conversion-v3/sse/types/utility-types.d.ts +0 -230
  210. package/dist/conversion/conversion-v3/sse/types/utility-types.js +0 -49
  211. package/dist/conversion/conversion-v3/standards/context-adapter.d.ts +0 -146
  212. package/dist/conversion/conversion-v3/standards/context-adapter.js +0 -438
  213. package/dist/conversion/conversion-v3/standards/errors.d.ts +0 -38
  214. package/dist/conversion/conversion-v3/standards/errors.js +0 -27
  215. package/dist/conversion/conversion-v3/standards/index.d.ts +0 -15
  216. package/dist/conversion/conversion-v3/standards/index.js +0 -11
  217. package/dist/conversion/conversion-v3/standards/node-capabilities.d.ts +0 -123
  218. package/dist/conversion/conversion-v3/standards/node-capabilities.js +0 -330
  219. package/dist/conversion/conversion-v3/standards/pipeline-context.d.ts +0 -237
  220. package/dist/conversion/conversion-v3/standards/pipeline-context.js +0 -84
  221. package/dist/conversion/conversion-v3/standards/pipeline-node.d.ts +0 -196
  222. package/dist/conversion/conversion-v3/standards/pipeline-node.js +0 -316
  223. package/dist/conversion/conversion-v3/standards/snapshot-handles.d.ts +0 -24
  224. package/dist/conversion/conversion-v3/standards/snapshot-handles.js +0 -49
  225. package/dist/conversion/conversion-v3/types/config-types.d.ts +0 -242
  226. package/dist/conversion/conversion-v3/types/config-types.js +0 -13
  227. package/dist/conversion/conversion-v3/types/index.d.ts +0 -8
  228. package/dist/conversion/conversion-v3/types/index.js +0 -11
  229. package/dist/conversion/conversion-v3/types/node-types.d.ts +0 -211
  230. package/dist/conversion/conversion-v3/types/node-types.js +0 -20
  231. package/dist/conversion/conversion-v3/types/pipeline-types.d.ts +0 -246
  232. package/dist/conversion/conversion-v3/types/pipeline-types.js +0 -26
  233. package/dist/conversion/conversion-v3/types/request-types.d.ts +0 -293
  234. package/dist/conversion/conversion-v3/types/request-types.js +0 -26
  235. package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.d.ts +0 -10
  236. package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.js +0 -103
  237. package/dist/conversion/conversion-v3/validations/index.d.ts +0 -8
  238. package/dist/conversion/conversion-v3/validations/index.js +0 -7
  239. package/dist/conversion/conversion-v3/validations/node-graph-validator.d.ts +0 -116
  240. package/dist/conversion/conversion-v3/validations/node-graph-validator.js +0 -505
  241. package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.d.ts +0 -139
  242. package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.js +0 -338
  243. package/dist/conversion/hub/config/types.d.ts +0 -26
  244. package/dist/conversion/hub/core/detour-registry.d.ts +0 -9
  245. package/dist/conversion/hub/core/hub-context.d.ts +0 -21
  246. package/dist/conversion/hub/core/index.d.ts +0 -3
  247. package/dist/conversion/hub/core/stage-driver.d.ts +0 -30
  248. package/dist/conversion/hub/format-adapters/anthropic-format-adapter.d.ts +0 -16
  249. package/dist/conversion/hub/format-adapters/chat-format-adapter.d.ts +0 -17
  250. package/dist/conversion/hub/format-adapters/gemini-format-adapter.d.ts +0 -16
  251. package/dist/conversion/hub/format-adapters/index.d.ts +0 -21
  252. package/dist/conversion/hub/format-adapters/responses-format-adapter.d.ts +0 -17
  253. package/dist/conversion/hub/hub-feature.d.ts +0 -1
  254. package/dist/conversion/hub/node-support.d.ts +0 -19
  255. package/dist/conversion/hub/pipeline/hub-pipeline.d.ts +0 -68
  256. package/dist/conversion/hub/pipelines/inbound.d.ts +0 -22
  257. package/dist/conversion/hub/pipelines/outbound.d.ts +0 -22
  258. package/dist/conversion/hub/process/chat-process.d.ts +0 -13
  259. package/dist/conversion/hub/registry.d.ts +0 -28
  260. package/dist/conversion/hub/response/chat-response-utils.d.ts +0 -6
  261. package/dist/conversion/hub/response/provider-response.d.ts +0 -20
  262. package/dist/conversion/hub/response/response-mappers.d.ts +0 -19
  263. package/dist/conversion/hub/response/response-runtime.d.ts +0 -3
  264. package/dist/conversion/hub/semantic-mappers/anthropic-mapper.d.ts +0 -7
  265. package/dist/conversion/hub/semantic-mappers/chat-mapper.d.ts +0 -7
  266. package/dist/conversion/hub/semantic-mappers/gemini-mapper.d.ts +0 -7
  267. package/dist/conversion/hub/semantic-mappers/index.d.ts +0 -4
  268. package/dist/conversion/hub/semantic-mappers/responses-mapper.d.ts +0 -21
  269. package/dist/conversion/hub/snapshot-recorder.d.ts +0 -12
  270. package/dist/conversion/hub/standardized-bridge.d.ts +0 -12
  271. package/dist/conversion/hub/types/chat-envelope.d.ts +0 -67
  272. package/dist/conversion/hub/types/chat-schema.d.ts +0 -112
  273. package/dist/conversion/hub/types/errors.d.ts +0 -5
  274. package/dist/conversion/hub/types/format-envelope.d.ts +0 -7
  275. package/dist/conversion/hub/types/index.d.ts +0 -6
  276. package/dist/conversion/hub/types/json.d.ts +0 -9
  277. package/dist/conversion/hub/types/node.d.ts +0 -31
  278. package/dist/conversion/hub/types/standardized.d.ts +0 -94
  279. package/dist/conversion/responses/responses-openai-bridge.d.ts +0 -95
  280. package/dist/conversion/schema-validator.d.ts +0 -7
  281. package/dist/conversion/shared/args-mapping.d.ts +0 -18
  282. package/dist/conversion/shared/chat-request-filters.d.ts +0 -9
  283. package/dist/conversion/shared/jsonish.d.ts +0 -3
  284. package/dist/conversion/shared/mcp-injection.d.ts +0 -2
  285. package/dist/conversion/shared/media.d.ts +0 -1
  286. package/dist/conversion/shared/openai-finalizer.d.ts +0 -9
  287. package/dist/conversion/shared/openai-message-normalize.d.ts +0 -1
  288. package/dist/conversion/shared/payload-budget.d.ts +0 -13
  289. package/dist/conversion/shared/reasoning-mapping.d.ts +0 -5
  290. package/dist/conversion/shared/responses-conversation-store.d.ts +0 -41
  291. package/dist/conversion/shared/responses-id-utils.d.ts +0 -7
  292. package/dist/conversion/shared/responses-instructions.d.ts +0 -1
  293. package/dist/conversion/shared/responses-metadata.d.ts +0 -1
  294. package/dist/conversion/shared/responses-request-adapter.d.ts +0 -66
  295. package/dist/conversion/shared/snapshot-hooks.d.ts +0 -12
  296. package/dist/conversion/shared/streaming-text-extractor.d.ts +0 -26
  297. package/dist/conversion/shared/text-markup-normalizer.d.ts +0 -9
  298. package/dist/conversion/shared/tool-canonicalizer.d.ts +0 -2
  299. package/dist/conversion/shared/tool-filter-pipeline.d.ts +0 -17
  300. package/dist/conversion/shared/tool-governor.d.ts +0 -27
  301. package/dist/conversion/shared/tool-harvester.d.ts +0 -31
  302. package/dist/conversion/shared/tool-mapping.d.ts +0 -10
  303. package/dist/conversion/shared/tooling.d.ts +0 -26
  304. package/dist/conversion/types.d.ts +0 -33
  305. package/dist/core/index.d.ts +0 -6
  306. package/dist/core/index.js +0 -9
  307. package/dist/core/llmswitch-engine-v2.d.ts +0 -132
  308. package/dist/core/llmswitch-engine-v2.js +0 -649
  309. package/dist/core/llmswitch-factory-v2.d.ts +0 -123
  310. package/dist/core/llmswitch-factory-v2.js +0 -521
  311. package/dist/endpoints/base-endpoint-handler.d.ts +0 -128
  312. package/dist/endpoints/base-endpoint-handler.js +0 -545
  313. package/dist/endpoints/chat-endpoint-handler.d.ts +0 -115
  314. package/dist/endpoints/chat-endpoint-handler.js +0 -218
  315. package/dist/endpoints/endpoint-router.d.ts +0 -127
  316. package/dist/endpoints/endpoint-router.js +0 -438
  317. package/dist/endpoints/index.d.ts +0 -13
  318. package/dist/endpoints/index.js +0 -11
  319. package/dist/endpoints/messages-endpoint-handler.d.ts +0 -171
  320. package/dist/endpoints/messages-endpoint-handler.js +0 -238
  321. package/dist/endpoints/responses-endpoint-handler.d.ts +0 -147
  322. package/dist/endpoints/responses-endpoint-handler.js +0 -233
  323. package/dist/filters/builtin/add-fields-filter.d.ts +0 -8
  324. package/dist/filters/builtin/blacklist-filter.d.ts +0 -8
  325. package/dist/filters/builtin/whitelist-filter.d.ts +0 -8
  326. package/dist/filters/engine.d.ts +0 -16
  327. package/dist/filters/index.d.ts +0 -19
  328. package/dist/filters/special/request-streaming-to-nonstreaming.d.ts +0 -12
  329. package/dist/filters/special/request-tool-choice-policy.d.ts +0 -11
  330. package/dist/filters/special/request-tool-list-filter.d.ts +0 -11
  331. package/dist/filters/special/request-toolcalls-stringify.d.ts +0 -10
  332. package/dist/filters/special/request-tools-normalize.d.ts +0 -12
  333. package/dist/filters/special/response-finish-invariants.d.ts +0 -11
  334. package/dist/filters/special/response-openai-to-responses-bridge.d.ts +0 -13
  335. package/dist/filters/special/response-tool-arguments-blacklist.d.ts +0 -12
  336. package/dist/filters/special/response-tool-arguments-schema-converge.d.ts +0 -13
  337. package/dist/filters/special/response-tool-arguments-stringify.d.ts +0 -9
  338. package/dist/filters/special/response-tool-arguments-toon-decode.d.ts +0 -10
  339. package/dist/filters/special/response-tool-arguments-whitelist.d.ts +0 -11
  340. package/dist/filters/special/response-tool-text-canonicalize.d.ts +0 -10
  341. package/dist/filters/special/tool-filter-hooks.d.ts +0 -19
  342. package/dist/filters/special/tool-post-constraints.d.ts +0 -31
  343. package/dist/filters/types.d.ts +0 -68
  344. package/dist/filters/utils/fieldmap-loader.d.ts +0 -2
  345. package/dist/filters/utils/snapshot-writer.d.ts +0 -10
  346. package/dist/guidance/index.d.ts +0 -3
  347. package/dist/hooks/hooks-integration.d.ts +0 -161
  348. package/dist/hooks/hooks-integration.js +0 -519
  349. package/dist/hooks/index.d.ts +0 -10
  350. package/dist/hooks/index.js +0 -13
  351. package/dist/html-to-markdown.d.ts +0 -5
  352. package/dist/html-to-markdown.js +0 -66
  353. package/dist/http/sse-response.d.ts +0 -22
  354. package/dist/router/virtual-router/bootstrap.d.ts +0 -6
  355. package/dist/router/virtual-router/classifier.d.ts +0 -10
  356. package/dist/router/virtual-router/engine.d.ts +0 -35
  357. package/dist/router/virtual-router/error-center.d.ts +0 -10
  358. package/dist/router/virtual-router/features.d.ts +0 -3
  359. package/dist/router/virtual-router/health-manager.d.ts +0 -18
  360. package/dist/router/virtual-router/load-balancer.d.ts +0 -18
  361. package/dist/router/virtual-router/provider-registry.d.ts +0 -11
  362. package/dist/router/virtual-router/types.d.ts +0 -206
  363. package/dist/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +0 -11
  364. package/dist/sse/json-to-sse/chat-json-to-sse-converter.d.ts +0 -79
  365. package/dist/sse/json-to-sse/event-generators/chat.d.ts +0 -55
  366. package/dist/sse/json-to-sse/event-generators/responses.d.ts +0 -99
  367. package/dist/sse/json-to-sse/index.d.ts +0 -6
  368. package/dist/sse/json-to-sse/responses-json-to-sse-converter.d.ts +0 -79
  369. package/dist/sse/json-to-sse/sequencers/chat-sequencer.d.ts +0 -37
  370. package/dist/sse/json-to-sse/sequencers/responses-sequencer.d.ts +0 -40
  371. package/dist/sse/registry/sse-codec-registry.d.ts +0 -32
  372. package/dist/sse/shared/chat-serializer.d.ts +0 -4
  373. package/dist/sse/shared/constants.d.ts +0 -272
  374. package/dist/sse/shared/serializers/base-serializer.d.ts +0 -158
  375. package/dist/sse/shared/serializers/chat-event-serializer.d.ts +0 -82
  376. package/dist/sse/shared/serializers/index.d.ts +0 -39
  377. package/dist/sse/shared/serializers/responses-event-serializer.d.ts +0 -123
  378. package/dist/sse/shared/serializers/types.d.ts +0 -51
  379. package/dist/sse/shared/utils.d.ts +0 -254
  380. package/dist/sse/shared/writer.d.ts +0 -111
  381. package/dist/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +0 -13
  382. package/dist/sse/sse-to-json/builders/response-builder.d.ts +0 -165
  383. package/dist/sse/sse-to-json/chat-sse-to-json-converter.d.ts +0 -106
  384. package/dist/sse/sse-to-json/index.d.ts +0 -6
  385. package/dist/sse/sse-to-json/parsers/sse-parser.d.ts +0 -73
  386. package/dist/sse/types/anthropic-types.d.ts +0 -87
  387. package/dist/tools/proxy/anthropic-tool-proxy.d.ts +0 -19
  388. package/dist/tools/proxy/anthropic-tool-proxy.js +0 -57
  389. package/dist/tools/proxy/executors/web-fetch.d.ts +0 -6
  390. package/dist/tools/proxy/executors/web-fetch.js +0 -39
  391. package/dist/tools/proxy/registry.d.ts +0 -8
  392. package/dist/tools/proxy/registry.js +0 -14
  393. package/dist/tools/proxy/types.d.ts +0 -29
  394. package/dist/tools/tool-registry.d.ts +0 -8
  395. package/dist/tools/web-fetch-html.d.ts +0 -15
  396. package/dist/tools/web-fetch-html.js +0 -83
  397. package/dist/utils/conversion-adapter.d.ts +0 -65
  398. package/dist/utils/conversion-adapter.js +0 -183
  399. package/dist/utils/error-factory.d.ts +0 -88
  400. package/dist/utils/error-factory.js +0 -138
  401. package/dist/utils/error-utils.d.ts +0 -334
  402. package/dist/utils/error-utils.js +0 -782
  403. package/dist/utils/index.d.ts +0 -8
  404. package/dist/utils/index.js +0 -13
  405. package/dist/utils/performance-utils.d.ts +0 -205
  406. package/dist/utils/performance-utils.js +0 -440
  407. package/dist/utils/profile-mapper.d.ts +0 -32
  408. package/dist/utils/profile-mapper.js +0 -269
  409. package/dist/utils/request-processor.d.ts +0 -52
  410. package/dist/utils/request-processor.js +0 -210
  411. package/dist/utils/request-utils.d.ts +0 -117
  412. package/dist/utils/request-utils.js +0 -333
  413. package/dist/utils/response-utils.d.ts +0 -127
  414. package/dist/utils/response-utils.js +0 -516
  415. package/dist/utils/token-counter.d.ts +0 -89
  416. package/dist/utils/token-counter.js +0 -541
  417. /package/dist/{tools/proxy → conversion/hub/tool-governance}/types.js +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>;