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