@jsonstudio/llms 0.4.3 → 0.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (542) hide show
  1. package/README.md +3 -1
  2. package/dist/bridge/routecodex-adapter.js +6 -3
  3. package/dist/config-unified/enhanced-path-resolver.js +14 -6
  4. package/dist/config-unified/unified-config.js +103 -59
  5. package/dist/conversion/codec-registry.js +15 -3
  6. package/dist/conversion/codecs/anthropic-openai-codec.d.ts +3 -13
  7. package/dist/conversion/codecs/anthropic-openai-codec.js +18 -473
  8. package/dist/conversion/codecs/gemini-openai-codec.js +91 -48
  9. package/dist/conversion/codecs/responses-openai-codec.js +9 -2
  10. package/dist/conversion/hub/format-adapters/anthropic-format-adapter.js +3 -0
  11. package/dist/conversion/hub/format-adapters/chat-format-adapter.js +3 -0
  12. package/dist/conversion/hub/format-adapters/gemini-format-adapter.js +3 -0
  13. package/dist/conversion/hub/format-adapters/responses-format-adapter.d.ts +2 -0
  14. package/dist/conversion/hub/format-adapters/responses-format-adapter.js +9 -0
  15. package/dist/conversion/hub/node-support.js +3 -1
  16. package/dist/conversion/hub/pipeline/hub-pipeline.js +41 -37
  17. package/dist/conversion/hub/process/chat-process.js +258 -41
  18. package/dist/conversion/hub/response/provider-response.js +9 -3
  19. package/dist/conversion/hub/response/response-mappers.js +1 -1
  20. package/dist/conversion/hub/response/response-runtime.js +109 -10
  21. package/dist/conversion/hub/semantic-mappers/anthropic-mapper.js +70 -156
  22. package/dist/conversion/hub/semantic-mappers/chat-mapper.js +63 -52
  23. package/dist/conversion/hub/semantic-mappers/gemini-mapper.js +76 -143
  24. package/dist/conversion/hub/semantic-mappers/responses-mapper.js +40 -160
  25. package/dist/conversion/hub/standardized-bridge.js +3 -0
  26. package/dist/conversion/hub/tool-governance/engine.d.ts +16 -0
  27. package/dist/conversion/hub/tool-governance/engine.js +266 -0
  28. package/dist/conversion/hub/tool-governance/index.d.ts +3 -0
  29. package/dist/conversion/hub/tool-governance/index.js +2 -0
  30. package/dist/conversion/hub/tool-governance/rules.d.ts +2 -0
  31. package/dist/conversion/hub/tool-governance/rules.js +76 -0
  32. package/dist/conversion/hub/tool-governance/types.d.ts +38 -0
  33. package/dist/conversion/index.d.ts +6 -0
  34. package/dist/conversion/index.js +6 -0
  35. package/dist/conversion/pipeline/codecs/v2/anthropic-openai-pipeline.d.ts +12 -0
  36. package/dist/conversion/pipeline/codecs/v2/anthropic-openai-pipeline.js +100 -0
  37. package/dist/conversion/pipeline/codecs/v2/openai-openai-pipeline.d.ts +15 -0
  38. package/dist/conversion/pipeline/codecs/v2/openai-openai-pipeline.js +174 -0
  39. package/dist/conversion/pipeline/codecs/v2/responses-openai-pipeline.d.ts +14 -0
  40. package/dist/conversion/pipeline/codecs/v2/responses-openai-pipeline.js +166 -0
  41. package/dist/conversion/pipeline/codecs/v2/shared/openai-chat-helpers.d.ts +13 -0
  42. package/dist/conversion/pipeline/codecs/v2/shared/openai-chat-helpers.js +66 -0
  43. package/dist/conversion/pipeline/hooks/adapter-context.d.ts +7 -0
  44. package/dist/conversion/pipeline/hooks/adapter-context.js +18 -0
  45. package/dist/conversion/pipeline/hooks/protocol-hooks.d.ts +67 -0
  46. package/dist/conversion/pipeline/hooks/protocol-hooks.js +1 -0
  47. package/dist/conversion/pipeline/index.d.ts +35 -0
  48. package/dist/conversion/pipeline/index.js +103 -0
  49. package/dist/conversion/pipeline/meta/meta-bag.d.ts +20 -0
  50. package/dist/conversion/pipeline/meta/meta-bag.js +81 -0
  51. package/dist/conversion/pipeline/schema/canonical-chat.d.ts +18 -0
  52. package/dist/conversion/pipeline/schema/canonical-chat.js +1 -0
  53. package/dist/conversion/pipeline/schema/index.d.ts +1 -0
  54. package/dist/conversion/pipeline/schema/index.js +1 -0
  55. package/dist/conversion/responses/responses-openai-bridge.d.ts +11 -58
  56. package/dist/conversion/responses/responses-openai-bridge.js +157 -1144
  57. package/dist/conversion/shared/anthropic-message-utils.d.ts +12 -0
  58. package/dist/conversion/shared/anthropic-message-utils.js +587 -0
  59. package/dist/conversion/shared/bridge-actions.d.ts +39 -0
  60. package/dist/conversion/shared/bridge-actions.js +709 -0
  61. package/dist/conversion/shared/{responses-conversation-store.d.ts → bridge-conversation-store.d.ts} +7 -7
  62. package/dist/conversion/shared/bridge-conversation-store.js +279 -0
  63. package/dist/conversion/shared/bridge-id-utils.js +42 -0
  64. package/dist/conversion/shared/bridge-instructions.d.ts +1 -0
  65. package/dist/conversion/shared/bridge-instructions.js +113 -0
  66. package/dist/conversion/shared/bridge-message-types.d.ts +39 -0
  67. package/dist/conversion/shared/bridge-message-types.js +1 -0
  68. package/dist/conversion/shared/bridge-message-utils.d.ts +22 -0
  69. package/dist/conversion/shared/bridge-message-utils.js +473 -0
  70. package/dist/conversion/shared/bridge-metadata.d.ts +1 -0
  71. package/dist/conversion/shared/bridge-metadata.js +1 -0
  72. package/dist/conversion/shared/bridge-policies.d.ts +18 -0
  73. package/dist/conversion/shared/bridge-policies.js +276 -0
  74. package/dist/conversion/shared/bridge-request-adapter.d.ts +28 -0
  75. package/dist/conversion/shared/bridge-request-adapter.js +430 -0
  76. package/dist/conversion/shared/chat-output-normalizer.d.ts +4 -0
  77. package/dist/conversion/shared/chat-output-normalizer.js +56 -0
  78. package/dist/conversion/shared/chat-request-filters.js +24 -1
  79. package/dist/conversion/shared/gemini-tool-utils.d.ts +5 -0
  80. package/dist/conversion/shared/gemini-tool-utils.js +130 -0
  81. package/dist/conversion/shared/metadata-passthrough.d.ts +11 -0
  82. package/dist/conversion/shared/metadata-passthrough.js +57 -0
  83. package/dist/conversion/shared/output-content-normalizer.d.ts +12 -0
  84. package/dist/conversion/shared/output-content-normalizer.js +119 -0
  85. package/dist/conversion/shared/reasoning-normalizer.d.ts +21 -0
  86. package/dist/conversion/shared/reasoning-normalizer.js +368 -0
  87. package/dist/conversion/shared/reasoning-tool-normalizer.d.ts +12 -0
  88. package/dist/conversion/shared/reasoning-tool-normalizer.js +132 -0
  89. package/dist/conversion/shared/reasoning-tool-parser.d.ts +10 -0
  90. package/dist/conversion/shared/reasoning-tool-parser.js +95 -0
  91. package/dist/conversion/shared/reasoning-utils.d.ts +2 -0
  92. package/dist/conversion/shared/reasoning-utils.js +42 -0
  93. package/dist/conversion/shared/responses-conversation-store.js +5 -11
  94. package/dist/conversion/shared/responses-message-utils.d.ts +15 -0
  95. package/dist/conversion/shared/responses-message-utils.js +206 -0
  96. package/dist/conversion/shared/responses-output-builder.d.ts +15 -0
  97. package/dist/conversion/shared/responses-output-builder.js +179 -0
  98. package/dist/conversion/shared/responses-output-utils.d.ts +7 -0
  99. package/dist/conversion/shared/responses-output-utils.js +108 -0
  100. package/dist/conversion/shared/responses-request-adapter.d.ts +3 -41
  101. package/dist/conversion/shared/responses-request-adapter.js +9 -40
  102. package/dist/conversion/shared/responses-response-utils.d.ts +3 -0
  103. package/dist/conversion/shared/responses-response-utils.js +209 -0
  104. package/dist/conversion/shared/responses-tool-utils.d.ts +12 -0
  105. package/dist/conversion/shared/responses-tool-utils.js +90 -0
  106. package/dist/conversion/shared/responses-types.d.ts +33 -0
  107. package/dist/conversion/shared/responses-types.js +1 -0
  108. package/dist/conversion/shared/tool-call-utils.d.ts +11 -0
  109. package/dist/conversion/shared/tool-call-utils.js +56 -0
  110. package/dist/conversion/shared/tool-mapping.d.ts +9 -0
  111. package/dist/conversion/shared/tool-mapping.js +124 -0
  112. package/dist/conversion/shared/tool-normalizers.d.ts +4 -0
  113. package/dist/conversion/shared/tool-normalizers.js +84 -0
  114. package/dist/router/virtual-router/bootstrap.js +18 -3
  115. package/dist/router/virtual-router/provider-registry.js +4 -2
  116. package/dist/router/virtual-router/types.d.ts +6 -0
  117. package/dist/sse/index.d.ts +38 -2
  118. package/dist/sse/index.js +27 -0
  119. package/dist/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +12 -9
  120. package/dist/sse/json-to-sse/anthropic-json-to-sse-converter.js +106 -73
  121. package/dist/sse/json-to-sse/chat-json-to-sse-converter.js +6 -2
  122. package/dist/sse/json-to-sse/gemini-json-to-sse-converter.d.ts +14 -0
  123. package/dist/sse/json-to-sse/gemini-json-to-sse-converter.js +99 -0
  124. package/dist/sse/json-to-sse/index.d.ts +2 -1
  125. package/dist/sse/json-to-sse/index.js +2 -0
  126. package/dist/sse/json-to-sse/sequencers/anthropic-sequencer.d.ts +13 -0
  127. package/dist/sse/json-to-sse/sequencers/anthropic-sequencer.js +150 -0
  128. package/dist/sse/json-to-sse/sequencers/chat-sequencer.d.ts +3 -1
  129. package/dist/sse/json-to-sse/sequencers/chat-sequencer.js +49 -3
  130. package/dist/sse/json-to-sse/sequencers/gemini-sequencer.d.ts +10 -0
  131. package/dist/sse/json-to-sse/sequencers/gemini-sequencer.js +95 -0
  132. package/dist/sse/json-to-sse/sequencers/responses-sequencer.js +31 -5
  133. package/dist/sse/registry/sse-codec-registry.d.ts +1 -1
  134. package/dist/sse/registry/sse-codec-registry.js +30 -1
  135. package/dist/sse/shared/reasoning-dispatcher.d.ts +10 -0
  136. package/dist/sse/shared/reasoning-dispatcher.js +25 -0
  137. package/dist/sse/shared/responses-output-normalizer.d.ts +12 -0
  138. package/dist/sse/shared/responses-output-normalizer.js +45 -0
  139. package/dist/sse/shared/serializers/anthropic-event-serializer.d.ts +2 -0
  140. package/dist/sse/shared/serializers/anthropic-event-serializer.js +9 -0
  141. package/dist/sse/shared/serializers/gemini-event-serializer.d.ts +2 -0
  142. package/dist/sse/shared/serializers/gemini-event-serializer.js +5 -0
  143. package/dist/sse/shared/serializers/index.d.ts +2 -0
  144. package/dist/sse/shared/serializers/index.js +2 -0
  145. package/dist/sse/shared/writer.d.ts +17 -1
  146. package/dist/sse/shared/writer.js +37 -1
  147. package/dist/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +9 -11
  148. package/dist/sse/sse-to-json/anthropic-sse-to-json-converter.js +92 -127
  149. package/dist/sse/sse-to-json/builders/anthropic-response-builder.d.ts +16 -0
  150. package/dist/sse/sse-to-json/builders/anthropic-response-builder.js +151 -0
  151. package/dist/sse/sse-to-json/builders/response-builder.d.ts +1 -1
  152. package/dist/sse/sse-to-json/builders/response-builder.js +29 -7
  153. package/dist/sse/sse-to-json/chat-sse-to-json-converter.d.ts +8 -0
  154. package/dist/sse/sse-to-json/chat-sse-to-json-converter.js +116 -26
  155. package/dist/sse/sse-to-json/gemini-sse-to-json-converter.d.ts +13 -0
  156. package/dist/sse/sse-to-json/gemini-sse-to-json-converter.js +160 -0
  157. package/dist/sse/sse-to-json/index.d.ts +2 -1
  158. package/dist/sse/sse-to-json/index.js +2 -0
  159. package/dist/sse/sse-to-json/parsers/sse-parser.js +73 -13
  160. package/dist/sse/sse-to-json/responses-sse-to-json-converter.d.ts +1 -0
  161. package/dist/sse/sse-to-json/responses-sse-to-json-converter.js +10 -8
  162. package/dist/sse/types/anthropic-types.d.ts +119 -36
  163. package/dist/sse/types/anthropic-types.js +8 -5
  164. package/dist/sse/types/chat-types.d.ts +19 -6
  165. package/dist/sse/types/chat-types.js +2 -1
  166. package/dist/sse/types/conversion-context.d.ts +14 -11
  167. package/dist/sse/types/core-interfaces.d.ts +7 -3
  168. package/dist/sse/types/gemini-types.d.ts +116 -0
  169. package/dist/sse/types/gemini-types.js +5 -0
  170. package/dist/sse/types/index.d.ts +5 -2
  171. package/dist/sse/types/index.js +2 -0
  172. package/dist/sse/types/responses-types.d.ts +20 -20
  173. package/dist/sse/types/sse-events.d.ts +4 -3
  174. package/dist/sse/types/stream-state.d.ts +34 -39
  175. package/dist/sse/types/utility-types.d.ts +47 -43
  176. package/dist/sse/types/utility-types.js +10 -13
  177. package/dist/tools/tool-registry.js +156 -98
  178. package/package.json +7 -7
  179. package/dist/api/index.d.ts +0 -10
  180. package/dist/api/index.js +0 -11
  181. package/dist/api/llmswitch-config.d.ts +0 -15
  182. package/dist/api/llmswitch-config.js +0 -415
  183. package/dist/api/llmswitch-types.d.ts +0 -412
  184. package/dist/api/llmswitch-types.js +0 -60
  185. package/dist/bridge/routecodex-adapter.d.ts +0 -74
  186. package/dist/config/index.d.ts +0 -3
  187. package/dist/config/index.js +0 -5
  188. package/dist/config-unified/enhanced-path-resolver.d.ts +0 -5
  189. package/dist/config-unified/unified-config.d.ts +0 -26
  190. package/dist/conversion/codec-registry.d.ts +0 -10
  191. package/dist/conversion/codecs/gemini-openai-codec.d.ts +0 -16
  192. package/dist/conversion/codecs/openai-openai-codec.d.ts +0 -12
  193. package/dist/conversion/codecs/responses-openai-codec.d.ts +0 -12
  194. package/dist/conversion/config/config-manager.d.ts +0 -212
  195. package/dist/conversion/conversion-v3/adapters/index.d.ts +0 -2
  196. package/dist/conversion/conversion-v3/adapters/index.js +0 -1
  197. package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.d.ts +0 -38
  198. package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.js +0 -55
  199. package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.d.ts +0 -22
  200. package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.js +0 -84
  201. package/dist/conversion/conversion-v3/compatibility/compatibility-stages.d.ts +0 -4
  202. package/dist/conversion/conversion-v3/compatibility/compatibility-stages.js +0 -285
  203. package/dist/conversion/conversion-v3/compatibility/index.d.ts +0 -3
  204. package/dist/conversion/conversion-v3/compatibility/index.js +0 -2
  205. package/dist/conversion/conversion-v3/config/default-configs.d.ts +0 -48
  206. package/dist/conversion/conversion-v3/config/default-configs.js +0 -1007
  207. package/dist/conversion/conversion-v3/config/index.d.ts +0 -5
  208. package/dist/conversion/conversion-v3/config/index.js +0 -5
  209. package/dist/conversion/conversion-v3/config/pipeline-config-manager.d.ts +0 -49
  210. package/dist/conversion/conversion-v3/config/pipeline-config-manager.js +0 -65
  211. package/dist/conversion/conversion-v3/index.d.ts +0 -11
  212. package/dist/conversion/conversion-v3/index.js +0 -17
  213. package/dist/conversion/conversion-v3/nodes/index.d.ts +0 -56
  214. package/dist/conversion/conversion-v3/nodes/index.js +0 -149
  215. package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.d.ts +0 -25
  216. package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.js +0 -56
  217. package/dist/conversion/conversion-v3/nodes/input/base-input-node.d.ts +0 -75
  218. package/dist/conversion/conversion-v3/nodes/input/base-input-node.js +0 -237
  219. package/dist/conversion/conversion-v3/nodes/input/chat-input-node.d.ts +0 -25
  220. package/dist/conversion/conversion-v3/nodes/input/chat-input-node.js +0 -56
  221. package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.d.ts +0 -4
  222. package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.js +0 -197
  223. package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.d.ts +0 -16
  224. package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.js +0 -125
  225. package/dist/conversion/conversion-v3/nodes/input/index.d.ts +0 -8
  226. package/dist/conversion/conversion-v3/nodes/input/index.js +0 -8
  227. package/dist/conversion/conversion-v3/nodes/input/input-decision.d.ts +0 -46
  228. package/dist/conversion/conversion-v3/nodes/input/input-decision.js +0 -125
  229. package/dist/conversion/conversion-v3/nodes/input/responses-input-node.d.ts +0 -20
  230. package/dist/conversion/conversion-v3/nodes/input/responses-input-node.js +0 -51
  231. package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.d.ts +0 -71
  232. package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.js +0 -320
  233. package/dist/conversion/conversion-v3/nodes/output/base-output-node.d.ts +0 -116
  234. package/dist/conversion/conversion-v3/nodes/output/base-output-node.js +0 -512
  235. package/dist/conversion/conversion-v3/nodes/output/index.d.ts +0 -7
  236. package/dist/conversion/conversion-v3/nodes/output/index.js +0 -7
  237. package/dist/conversion/conversion-v3/nodes/output/openai-output-node.d.ts +0 -71
  238. package/dist/conversion/conversion-v3/nodes/output/openai-output-node.js +0 -293
  239. package/dist/conversion/conversion-v3/nodes/output/output-decision.d.ts +0 -68
  240. package/dist/conversion/conversion-v3/nodes/output/output-decision.js +0 -161
  241. package/dist/conversion/conversion-v3/nodes/output/responses-output-node.d.ts +0 -64
  242. package/dist/conversion/conversion-v3/nodes/output/responses-output-node.js +0 -323
  243. package/dist/conversion/conversion-v3/nodes/process/base-process-node.d.ts +0 -72
  244. package/dist/conversion/conversion-v3/nodes/process/base-process-node.js +0 -246
  245. package/dist/conversion/conversion-v3/nodes/process/chat-process-node.d.ts +0 -135
  246. package/dist/conversion/conversion-v3/nodes/process/chat-process-node.js +0 -854
  247. package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.d.ts +0 -29
  248. package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.js +0 -181
  249. package/dist/conversion/conversion-v3/nodes/process/index.d.ts +0 -10
  250. package/dist/conversion/conversion-v3/nodes/process/index.js +0 -10
  251. package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.d.ts +0 -59
  252. package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.js +0 -243
  253. package/dist/conversion/conversion-v3/nodes/process/response-process-node.d.ts +0 -17
  254. package/dist/conversion/conversion-v3/nodes/process/response-process-node.js +0 -213
  255. package/dist/conversion/conversion-v3/nodes/process/tool-process-node.d.ts +0 -30
  256. package/dist/conversion/conversion-v3/nodes/process/tool-process-node.js +0 -360
  257. package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.d.ts +0 -40
  258. package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.js +0 -430
  259. package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.d.ts +0 -12
  260. package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.js +0 -129
  261. package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.d.ts +0 -15
  262. package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.js +0 -57
  263. package/dist/conversion/conversion-v3/nodes/response/index.d.ts +0 -4
  264. package/dist/conversion/conversion-v3/nodes/response/index.js +0 -4
  265. package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.d.ts +0 -15
  266. package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.js +0 -87
  267. package/dist/conversion/conversion-v3/nodes/response/response-utils.d.ts +0 -1
  268. package/dist/conversion/conversion-v3/nodes/response/response-utils.js +0 -1
  269. package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.d.ts +0 -12
  270. package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.js +0 -67
  271. package/dist/conversion/conversion-v3/nodes/sse/index.d.ts +0 -3
  272. package/dist/conversion/conversion-v3/nodes/sse/index.js +0 -3
  273. package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.d.ts +0 -27
  274. package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.js +0 -165
  275. package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.d.ts +0 -19
  276. package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.js +0 -267
  277. package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.d.ts +0 -18
  278. package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.js +0 -48
  279. package/dist/conversion/conversion-v3/pipelines/index.d.ts +0 -6
  280. package/dist/conversion/conversion-v3/pipelines/index.js +0 -6
  281. package/dist/conversion/conversion-v3/pipelines/super-pipeline.d.ts +0 -112
  282. package/dist/conversion/conversion-v3/pipelines/super-pipeline.js +0 -566
  283. package/dist/conversion/conversion-v3/response/provider-response-converter.d.ts +0 -28
  284. package/dist/conversion/conversion-v3/response/provider-response-converter.js +0 -249
  285. package/dist/conversion/conversion-v3/sse/index.d.ts +0 -140
  286. package/dist/conversion/conversion-v3/sse/index.js +0 -115
  287. package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +0 -11
  288. package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.js +0 -79
  289. package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.d.ts +0 -79
  290. package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.js +0 -296
  291. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.d.ts +0 -55
  292. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.js +0 -233
  293. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.d.ts +0 -99
  294. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.js +0 -599
  295. package/dist/conversion/conversion-v3/sse/json-to-sse/index.d.ts +0 -6
  296. package/dist/conversion/conversion-v3/sse/json-to-sse/index.js +0 -7
  297. package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.d.ts +0 -79
  298. package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.js +0 -322
  299. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.d.ts +0 -37
  300. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.js +0 -218
  301. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.d.ts +0 -40
  302. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.js +0 -263
  303. package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.d.ts +0 -32
  304. package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.js +0 -106
  305. package/dist/conversion/conversion-v3/sse/shared/chat-serializer.d.ts +0 -4
  306. package/dist/conversion/conversion-v3/sse/shared/chat-serializer.js +0 -40
  307. package/dist/conversion/conversion-v3/sse/shared/constants.d.ts +0 -272
  308. package/dist/conversion/conversion-v3/sse/shared/constants.js +0 -321
  309. package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.d.ts +0 -158
  310. package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.js +0 -210
  311. package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.d.ts +0 -82
  312. package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.js +0 -275
  313. package/dist/conversion/conversion-v3/sse/shared/serializers/index.d.ts +0 -39
  314. package/dist/conversion/conversion-v3/sse/shared/serializers/index.js +0 -54
  315. package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.d.ts +0 -123
  316. package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.js +0 -356
  317. package/dist/conversion/conversion-v3/sse/shared/serializers/types.d.ts +0 -51
  318. package/dist/conversion/conversion-v3/sse/shared/serializers/types.js +0 -4
  319. package/dist/conversion/conversion-v3/sse/shared/utils.d.ts +0 -254
  320. package/dist/conversion/conversion-v3/sse/shared/utils.js +0 -543
  321. package/dist/conversion/conversion-v3/sse/shared/writer.d.ts +0 -111
  322. package/dist/conversion/conversion-v3/sse/shared/writer.js +0 -268
  323. package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +0 -13
  324. package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.js +0 -139
  325. package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.d.ts +0 -165
  326. package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.js +0 -776
  327. package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.d.ts +0 -106
  328. package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.js +0 -540
  329. package/dist/conversion/conversion-v3/sse/sse-to-json/index.d.ts +0 -6
  330. package/dist/conversion/conversion-v3/sse/sse-to-json/index.js +0 -7
  331. package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.d.ts +0 -73
  332. package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.js +0 -332
  333. package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.d.ts +0 -59
  334. package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.js +0 -270
  335. package/dist/conversion/conversion-v3/sse/types/anthropic-types.d.ts +0 -87
  336. package/dist/conversion/conversion-v3/sse/types/anthropic-types.js +0 -5
  337. package/dist/conversion/conversion-v3/sse/types/chat-types.d.ts +0 -308
  338. package/dist/conversion/conversion-v3/sse/types/chat-types.js +0 -32
  339. package/dist/conversion/conversion-v3/sse/types/conversion-context.d.ts +0 -211
  340. package/dist/conversion/conversion-v3/sse/types/conversion-context.js +0 -20
  341. package/dist/conversion/conversion-v3/sse/types/core-interfaces.d.ts +0 -90
  342. package/dist/conversion/conversion-v3/sse/types/core-interfaces.js +0 -5
  343. package/dist/conversion/conversion-v3/sse/types/index.d.ts +0 -14
  344. package/dist/conversion/conversion-v3/sse/types/index.js +0 -7
  345. package/dist/conversion/conversion-v3/sse/types/responses-types.d.ts +0 -328
  346. package/dist/conversion/conversion-v3/sse/types/responses-types.js +0 -38
  347. package/dist/conversion/conversion-v3/sse/types/sse-events.d.ts +0 -180
  348. package/dist/conversion/conversion-v3/sse/types/sse-events.js +0 -150
  349. package/dist/conversion/conversion-v3/sse/types/stream-state.d.ts +0 -204
  350. package/dist/conversion/conversion-v3/sse/types/stream-state.js +0 -44
  351. package/dist/conversion/conversion-v3/sse/types/utility-types.d.ts +0 -230
  352. package/dist/conversion/conversion-v3/sse/types/utility-types.js +0 -49
  353. package/dist/conversion/conversion-v3/standards/context-adapter.d.ts +0 -146
  354. package/dist/conversion/conversion-v3/standards/context-adapter.js +0 -438
  355. package/dist/conversion/conversion-v3/standards/errors.d.ts +0 -38
  356. package/dist/conversion/conversion-v3/standards/errors.js +0 -27
  357. package/dist/conversion/conversion-v3/standards/index.d.ts +0 -15
  358. package/dist/conversion/conversion-v3/standards/index.js +0 -11
  359. package/dist/conversion/conversion-v3/standards/node-capabilities.d.ts +0 -123
  360. package/dist/conversion/conversion-v3/standards/node-capabilities.js +0 -330
  361. package/dist/conversion/conversion-v3/standards/pipeline-context.d.ts +0 -237
  362. package/dist/conversion/conversion-v3/standards/pipeline-context.js +0 -84
  363. package/dist/conversion/conversion-v3/standards/pipeline-node.d.ts +0 -196
  364. package/dist/conversion/conversion-v3/standards/pipeline-node.js +0 -316
  365. package/dist/conversion/conversion-v3/standards/snapshot-handles.d.ts +0 -24
  366. package/dist/conversion/conversion-v3/standards/snapshot-handles.js +0 -49
  367. package/dist/conversion/conversion-v3/types/config-types.d.ts +0 -242
  368. package/dist/conversion/conversion-v3/types/config-types.js +0 -13
  369. package/dist/conversion/conversion-v3/types/index.d.ts +0 -8
  370. package/dist/conversion/conversion-v3/types/index.js +0 -11
  371. package/dist/conversion/conversion-v3/types/node-types.d.ts +0 -211
  372. package/dist/conversion/conversion-v3/types/node-types.js +0 -20
  373. package/dist/conversion/conversion-v3/types/pipeline-types.d.ts +0 -246
  374. package/dist/conversion/conversion-v3/types/pipeline-types.js +0 -26
  375. package/dist/conversion/conversion-v3/types/request-types.d.ts +0 -293
  376. package/dist/conversion/conversion-v3/types/request-types.js +0 -26
  377. package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.d.ts +0 -10
  378. package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.js +0 -103
  379. package/dist/conversion/conversion-v3/validations/index.d.ts +0 -8
  380. package/dist/conversion/conversion-v3/validations/index.js +0 -7
  381. package/dist/conversion/conversion-v3/validations/node-graph-validator.d.ts +0 -116
  382. package/dist/conversion/conversion-v3/validations/node-graph-validator.js +0 -505
  383. package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.d.ts +0 -139
  384. package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.js +0 -338
  385. package/dist/conversion/hub/config/types.d.ts +0 -26
  386. package/dist/conversion/hub/core/detour-registry.d.ts +0 -9
  387. package/dist/conversion/hub/core/hub-context.d.ts +0 -21
  388. package/dist/conversion/hub/core/index.d.ts +0 -3
  389. package/dist/conversion/hub/core/stage-driver.d.ts +0 -30
  390. package/dist/conversion/hub/format-adapters/anthropic-format-adapter.d.ts +0 -16
  391. package/dist/conversion/hub/format-adapters/chat-format-adapter.d.ts +0 -17
  392. package/dist/conversion/hub/format-adapters/gemini-format-adapter.d.ts +0 -16
  393. package/dist/conversion/hub/format-adapters/index.d.ts +0 -21
  394. package/dist/conversion/hub/hub-feature.d.ts +0 -1
  395. package/dist/conversion/hub/node-support.d.ts +0 -19
  396. package/dist/conversion/hub/pipeline/hub-pipeline.d.ts +0 -68
  397. package/dist/conversion/hub/pipelines/inbound.d.ts +0 -22
  398. package/dist/conversion/hub/pipelines/outbound.d.ts +0 -22
  399. package/dist/conversion/hub/process/chat-process.d.ts +0 -13
  400. package/dist/conversion/hub/registry.d.ts +0 -28
  401. package/dist/conversion/hub/response/chat-response-utils.d.ts +0 -6
  402. package/dist/conversion/hub/response/provider-response.d.ts +0 -20
  403. package/dist/conversion/hub/response/response-mappers.d.ts +0 -19
  404. package/dist/conversion/hub/response/response-runtime.d.ts +0 -3
  405. package/dist/conversion/hub/semantic-mappers/anthropic-mapper.d.ts +0 -7
  406. package/dist/conversion/hub/semantic-mappers/chat-mapper.d.ts +0 -7
  407. package/dist/conversion/hub/semantic-mappers/gemini-mapper.d.ts +0 -7
  408. package/dist/conversion/hub/semantic-mappers/index.d.ts +0 -4
  409. package/dist/conversion/hub/semantic-mappers/responses-mapper.d.ts +0 -21
  410. package/dist/conversion/hub/snapshot-recorder.d.ts +0 -12
  411. package/dist/conversion/hub/standardized-bridge.d.ts +0 -12
  412. package/dist/conversion/hub/types/chat-envelope.d.ts +0 -67
  413. package/dist/conversion/hub/types/chat-schema.d.ts +0 -112
  414. package/dist/conversion/hub/types/errors.d.ts +0 -5
  415. package/dist/conversion/hub/types/format-envelope.d.ts +0 -7
  416. package/dist/conversion/hub/types/index.d.ts +0 -6
  417. package/dist/conversion/hub/types/json.d.ts +0 -9
  418. package/dist/conversion/hub/types/node.d.ts +0 -31
  419. package/dist/conversion/hub/types/standardized.d.ts +0 -94
  420. package/dist/conversion/schema-validator.d.ts +0 -7
  421. package/dist/conversion/shared/args-mapping.d.ts +0 -18
  422. package/dist/conversion/shared/chat-request-filters.d.ts +0 -9
  423. package/dist/conversion/shared/jsonish.d.ts +0 -3
  424. package/dist/conversion/shared/mcp-injection.d.ts +0 -2
  425. package/dist/conversion/shared/media.d.ts +0 -1
  426. package/dist/conversion/shared/openai-finalizer.d.ts +0 -9
  427. package/dist/conversion/shared/openai-message-normalize.d.ts +0 -1
  428. package/dist/conversion/shared/payload-budget.d.ts +0 -13
  429. package/dist/conversion/shared/reasoning-mapping.d.ts +0 -5
  430. package/dist/conversion/shared/responses-instructions.d.ts +0 -1
  431. package/dist/conversion/shared/responses-metadata.d.ts +0 -1
  432. package/dist/conversion/shared/snapshot-hooks.d.ts +0 -12
  433. package/dist/conversion/shared/streaming-text-extractor.d.ts +0 -26
  434. package/dist/conversion/shared/text-markup-normalizer.d.ts +0 -9
  435. package/dist/conversion/shared/tool-canonicalizer.d.ts +0 -2
  436. package/dist/conversion/shared/tool-filter-pipeline.d.ts +0 -17
  437. package/dist/conversion/shared/tool-governor.d.ts +0 -27
  438. package/dist/conversion/shared/tool-harvester.d.ts +0 -31
  439. package/dist/conversion/shared/tooling.d.ts +0 -26
  440. package/dist/conversion/types.d.ts +0 -33
  441. package/dist/core/index.d.ts +0 -6
  442. package/dist/core/index.js +0 -9
  443. package/dist/core/llmswitch-engine-v2.d.ts +0 -132
  444. package/dist/core/llmswitch-engine-v2.js +0 -649
  445. package/dist/core/llmswitch-factory-v2.d.ts +0 -123
  446. package/dist/core/llmswitch-factory-v2.js +0 -521
  447. package/dist/endpoints/base-endpoint-handler.d.ts +0 -128
  448. package/dist/endpoints/base-endpoint-handler.js +0 -545
  449. package/dist/endpoints/chat-endpoint-handler.d.ts +0 -115
  450. package/dist/endpoints/chat-endpoint-handler.js +0 -218
  451. package/dist/endpoints/endpoint-router.d.ts +0 -127
  452. package/dist/endpoints/endpoint-router.js +0 -438
  453. package/dist/endpoints/index.d.ts +0 -13
  454. package/dist/endpoints/index.js +0 -11
  455. package/dist/endpoints/messages-endpoint-handler.d.ts +0 -171
  456. package/dist/endpoints/messages-endpoint-handler.js +0 -238
  457. package/dist/endpoints/responses-endpoint-handler.d.ts +0 -147
  458. package/dist/endpoints/responses-endpoint-handler.js +0 -233
  459. package/dist/filters/builtin/add-fields-filter.d.ts +0 -8
  460. package/dist/filters/builtin/blacklist-filter.d.ts +0 -8
  461. package/dist/filters/builtin/whitelist-filter.d.ts +0 -8
  462. package/dist/filters/engine.d.ts +0 -16
  463. package/dist/filters/index.d.ts +0 -19
  464. package/dist/filters/special/request-streaming-to-nonstreaming.d.ts +0 -12
  465. package/dist/filters/special/request-tool-choice-policy.d.ts +0 -11
  466. package/dist/filters/special/request-tool-list-filter.d.ts +0 -11
  467. package/dist/filters/special/request-toolcalls-stringify.d.ts +0 -10
  468. package/dist/filters/special/request-tools-normalize.d.ts +0 -12
  469. package/dist/filters/special/response-finish-invariants.d.ts +0 -11
  470. package/dist/filters/special/response-openai-to-responses-bridge.d.ts +0 -13
  471. package/dist/filters/special/response-tool-arguments-blacklist.d.ts +0 -12
  472. package/dist/filters/special/response-tool-arguments-schema-converge.d.ts +0 -13
  473. package/dist/filters/special/response-tool-arguments-stringify.d.ts +0 -9
  474. package/dist/filters/special/response-tool-arguments-toon-decode.d.ts +0 -10
  475. package/dist/filters/special/response-tool-arguments-whitelist.d.ts +0 -11
  476. package/dist/filters/special/response-tool-text-canonicalize.d.ts +0 -10
  477. package/dist/filters/special/tool-filter-hooks.d.ts +0 -19
  478. package/dist/filters/special/tool-post-constraints.d.ts +0 -31
  479. package/dist/filters/types.d.ts +0 -68
  480. package/dist/filters/utils/fieldmap-loader.d.ts +0 -2
  481. package/dist/filters/utils/snapshot-writer.d.ts +0 -10
  482. package/dist/guidance/index.d.ts +0 -3
  483. package/dist/hooks/hooks-integration.d.ts +0 -161
  484. package/dist/hooks/hooks-integration.js +0 -519
  485. package/dist/hooks/index.d.ts +0 -10
  486. package/dist/hooks/index.js +0 -13
  487. package/dist/html-to-markdown.d.ts +0 -5
  488. package/dist/html-to-markdown.js +0 -66
  489. package/dist/http/sse-response.d.ts +0 -22
  490. package/dist/router/virtual-router/bootstrap.d.ts +0 -6
  491. package/dist/router/virtual-router/classifier.d.ts +0 -10
  492. package/dist/router/virtual-router/engine.d.ts +0 -35
  493. package/dist/router/virtual-router/error-center.d.ts +0 -10
  494. package/dist/router/virtual-router/features.d.ts +0 -3
  495. package/dist/router/virtual-router/health-manager.d.ts +0 -18
  496. package/dist/router/virtual-router/load-balancer.d.ts +0 -18
  497. package/dist/router/virtual-router/provider-registry.d.ts +0 -11
  498. package/dist/sse/json-to-sse/chat-json-to-sse-converter.d.ts +0 -79
  499. package/dist/sse/json-to-sse/event-generators/chat.d.ts +0 -55
  500. package/dist/sse/json-to-sse/event-generators/responses.d.ts +0 -99
  501. package/dist/sse/json-to-sse/responses-json-to-sse-converter.d.ts +0 -79
  502. package/dist/sse/json-to-sse/sequencers/responses-sequencer.d.ts +0 -40
  503. package/dist/sse/shared/chat-serializer.d.ts +0 -4
  504. package/dist/sse/shared/constants.d.ts +0 -272
  505. package/dist/sse/shared/serializers/base-serializer.d.ts +0 -158
  506. package/dist/sse/shared/serializers/chat-event-serializer.d.ts +0 -82
  507. package/dist/sse/shared/serializers/responses-event-serializer.d.ts +0 -123
  508. package/dist/sse/shared/serializers/types.d.ts +0 -51
  509. package/dist/sse/shared/utils.d.ts +0 -254
  510. package/dist/sse/sse-to-json/parsers/sse-parser.d.ts +0 -73
  511. package/dist/tools/proxy/anthropic-tool-proxy.d.ts +0 -19
  512. package/dist/tools/proxy/anthropic-tool-proxy.js +0 -57
  513. package/dist/tools/proxy/executors/web-fetch.d.ts +0 -6
  514. package/dist/tools/proxy/executors/web-fetch.js +0 -39
  515. package/dist/tools/proxy/registry.d.ts +0 -8
  516. package/dist/tools/proxy/registry.js +0 -14
  517. package/dist/tools/proxy/types.d.ts +0 -29
  518. package/dist/tools/tool-registry.d.ts +0 -8
  519. package/dist/tools/web-fetch-html.d.ts +0 -15
  520. package/dist/tools/web-fetch-html.js +0 -83
  521. package/dist/utils/conversion-adapter.d.ts +0 -65
  522. package/dist/utils/conversion-adapter.js +0 -183
  523. package/dist/utils/error-factory.d.ts +0 -88
  524. package/dist/utils/error-factory.js +0 -138
  525. package/dist/utils/error-utils.d.ts +0 -334
  526. package/dist/utils/error-utils.js +0 -782
  527. package/dist/utils/index.d.ts +0 -8
  528. package/dist/utils/index.js +0 -13
  529. package/dist/utils/performance-utils.d.ts +0 -205
  530. package/dist/utils/performance-utils.js +0 -440
  531. package/dist/utils/profile-mapper.d.ts +0 -32
  532. package/dist/utils/profile-mapper.js +0 -269
  533. package/dist/utils/request-processor.d.ts +0 -52
  534. package/dist/utils/request-processor.js +0 -210
  535. package/dist/utils/request-utils.d.ts +0 -117
  536. package/dist/utils/request-utils.js +0 -333
  537. package/dist/utils/response-utils.d.ts +0 -127
  538. package/dist/utils/response-utils.js +0 -516
  539. package/dist/utils/token-counter.d.ts +0 -89
  540. package/dist/utils/token-counter.js +0 -541
  541. /package/dist/{tools/proxy → conversion/hub/tool-governance}/types.js +0 -0
  542. /package/dist/conversion/shared/{responses-id-utils.d.ts → bridge-id-utils.d.ts} +0 -0
@@ -1,139 +0,0 @@
1
- /**
2
- * 工具治理强制器
3
- * 确保工具修改权限的强制执行和违规检测
4
- */
5
- import type { PipelineContext, PipelineNodeKind, NodeCapabilities } from '../standards/pipeline-context.js';
6
- /**
7
- * 节点图配置接口
8
- */
9
- export interface PipelineConfig {
10
- pipelines: PipelineConfigEntry[];
11
- }
12
- export interface PipelineConfigEntry {
13
- id: string;
14
- name?: string;
15
- entryEndpoints: string[];
16
- providerProtocols: string[];
17
- processMode: 'chat' | 'passthrough';
18
- streaming: 'always' | 'never' | 'auto';
19
- nodes: PipelineNodeConfig[];
20
- }
21
- export interface PipelineNodeConfig {
22
- id: string;
23
- kind: PipelineNodeKind;
24
- implementation: string;
25
- options?: Record<string, unknown>;
26
- }
27
- /**
28
- * 工具治理违规错误
29
- */
30
- export declare class ToolGovernanceViolationError extends Error {
31
- readonly nodeId: string;
32
- readonly violation: ToolGovernanceViolation;
33
- constructor(message: string, nodeId: string, violation: ToolGovernanceViolation);
34
- }
35
- /**
36
- * 工具治理违规类型
37
- */
38
- export interface ToolGovernanceViolation {
39
- type: 'unauthorized-tool-modification' | 'invalid-node-type' | 'missing-governance-node';
40
- nodeId: string;
41
- nodeKind: PipelineNodeKind;
42
- severity: 'error' | 'warning';
43
- description: string;
44
- suggestion?: string;
45
- }
46
- /**
47
- * 工具治理强制器
48
- * 负责验证和强制执行工具修改权限
49
- */
50
- export declare class ToolGovernanceEnforcer {
51
- /** 授权的工具修改节点ID集合 */
52
- private static readonly AUTHORIZED_TOOL_MODIFICATION_NODES;
53
- /** 授权的工具修改节点类型 */
54
- private static readonly AUTHORIZED_TOOL_MODIFICATION_KINDS;
55
- /** 必须存在的工具治理节点(每个流水线至少一个) */
56
- private static readonly REQUIRED_GOVERNANCE_NODES;
57
- /**
58
- * 验证节点执行权限
59
- */
60
- static validateNodeExecution(nodeId: string, nodeKind: PipelineNodeKind, capabilities: NodeCapabilities, context?: PipelineContext): void;
61
- /**
62
- * 验证工具修改权限
63
- */
64
- private static validateToolModificationPermission;
65
- /**
66
- * 验证 Provider 访问权限
67
- */
68
- private static validateProviderAccessPermission;
69
- /**
70
- * 验证流式处理权限
71
- */
72
- private static validateStreamingPermission;
73
- /**
74
- * 验证上下文权限
75
- */
76
- private static validateContextPermissions;
77
- /**
78
- * 检查是否为工具治理节点
79
- */
80
- private static isToolGovernanceNode;
81
- /**
82
- * 检查是否为授权的工具节点
83
- */
84
- private static isAuthorizedToolNode;
85
- /**
86
- * 检查上下文中是否已有工具治理节点执行过
87
- */
88
- private static hasToolGovernanceExecuted;
89
- /**
90
- * 标记工具治理已执行
91
- */
92
- static markToolGovernanceApplied(context: PipelineContext): void;
93
- /**
94
- * 验证节点图配置
95
- */
96
- static validateNodeGraph(pipelineConfig: PipelineConfig): ToolGovernanceValidationResult;
97
- /**
98
- * 验证单个流水线
99
- */
100
- private static validateSinglePipeline;
101
- /**
102
- * 检查节点是否可以修改工具(基于配置推断)
103
- */
104
- private static nodeCanModifyTools;
105
- /**
106
- * 运行时监控节点执行
107
- */
108
- static monitorNodeExecution(nodeId: string, nodeKind: PipelineNodeKind, context: PipelineContext): ToolGovernanceMonitorResult;
109
- /**
110
- * 检测工具修改痕迹
111
- */
112
- private static detectToolModification;
113
- /**
114
- * 生成改进建议
115
- */
116
- private static generateRecommendations;
117
- }
118
- /**
119
- * 工具治理验证结果接口
120
- */
121
- export interface ToolGovernanceValidationResult {
122
- /** 是否验证通过 */
123
- valid: boolean;
124
- /** 违规列表 */
125
- violations: ToolGovernanceViolation[];
126
- /** 警告列表 */
127
- warnings: ToolGovernanceViolation[];
128
- }
129
- /**
130
- * 工具治理监控结果接口
131
- */
132
- export interface ToolGovernanceMonitorResult {
133
- /** 是否合规 */
134
- compliant: boolean;
135
- /** 问题列表 */
136
- issues: string[];
137
- /** 改进建议 */
138
- recommendations: string[];
139
- }
@@ -1,338 +0,0 @@
1
- /**
2
- * 工具治理强制器
3
- * 确保工具修改权限的强制执行和违规检测
4
- */
5
- /**
6
- * 工具治理违规错误
7
- */
8
- export class ToolGovernanceViolationError extends Error {
9
- nodeId;
10
- violation;
11
- constructor(message, nodeId, violation) {
12
- super(message);
13
- this.nodeId = nodeId;
14
- this.violation = violation;
15
- this.name = 'ToolGovernanceViolationError';
16
- }
17
- }
18
- /**
19
- * 工具治理强制器
20
- * 负责验证和强制执行工具修改权限
21
- */
22
- export class ToolGovernanceEnforcer {
23
- /** 授权的工具修改节点ID集合 */
24
- static AUTHORIZED_TOOL_MODIFICATION_NODES = new Set([
25
- 'tool-process',
26
- 'chat-process',
27
- 'tool-canonicalizer',
28
- 'tool-harvester'
29
- ]);
30
- /** 授权的工具修改节点类型 */
31
- static AUTHORIZED_TOOL_MODIFICATION_KINDS = new Set(['process']);
32
- /** 必须存在的工具治理节点(每个流水线至少一个) */
33
- static REQUIRED_GOVERNANCE_NODES = new Set([
34
- 'tool-process',
35
- 'chat-process'
36
- ]);
37
- /**
38
- * 验证节点执行权限
39
- */
40
- static validateNodeExecution(nodeId, nodeKind, capabilities, context) {
41
- // 检查工具修改权限
42
- if (capabilities.canModifyTools) {
43
- this.validateToolModificationPermission(nodeId, nodeKind, capabilities);
44
- }
45
- // 检查 Provider 访问权限
46
- if (capabilities.canAccessProvider) {
47
- this.validateProviderAccessPermission(nodeId, nodeKind);
48
- }
49
- // 检查流式处理权限
50
- if (capabilities.canHandleStreaming) {
51
- this.validateStreamingPermission(nodeId, nodeKind);
52
- }
53
- // 在执行上下文中验证
54
- if (context) {
55
- this.validateContextPermissions(nodeId, capabilities, context);
56
- }
57
- }
58
- /**
59
- * 验证工具修改权限
60
- */
61
- static validateToolModificationPermission(nodeId, nodeKind, capabilities) {
62
- // 检查节点类型
63
- if (!this.AUTHORIZED_TOOL_MODIFICATION_KINDS.has(nodeKind)) {
64
- throw new ToolGovernanceViolationError(`Node '${nodeId}' (${nodeKind}) is not authorized to modify tools. Tool modification is only allowed in 'process' nodes.`, nodeId, {
65
- type: 'unauthorized-tool-modification',
66
- nodeId,
67
- nodeKind,
68
- severity: 'error',
69
- description: 'Only process nodes can modify tools',
70
- suggestion: `Use an authorized tool-process node or move logic into chat-process`
71
- });
72
- }
73
- // 检查特定节点ID
74
- if (!this.isAuthorizedToolNode(nodeId)) {
75
- throw new ToolGovernanceViolationError(`Node '${nodeId}' is not authorized to modify tools. Only specific process nodes can modify tools.`, nodeId, {
76
- type: 'unauthorized-tool-modification',
77
- nodeId,
78
- nodeKind,
79
- severity: 'error',
80
- description: `Node '${nodeId}' is not in the authorized list for tool modification`,
81
- suggestion: `Use one of the authorized nodes: ${Array.from(this.AUTHORIZED_TOOL_MODIFICATION_NODES).join(', ')}`
82
- });
83
- }
84
- }
85
- /**
86
- * 验证 Provider 访问权限
87
- */
88
- static validateProviderAccessPermission(nodeId, nodeKind) {
89
- if (nodeKind !== 'provider') {
90
- throw new ToolGovernanceViolationError(`Node '${nodeId}' (${nodeKind}) is not authorized to access providers directly. Only provider nodes can access external providers.`, nodeId, {
91
- type: 'unauthorized-tool-modification',
92
- nodeId,
93
- nodeKind,
94
- severity: 'error',
95
- description: 'Only provider nodes can directly access external providers',
96
- suggestion: `Move provider access logic to a provider node`
97
- });
98
- }
99
- }
100
- /**
101
- * 验证流式处理权限
102
- */
103
- static validateStreamingPermission(nodeId, nodeKind) {
104
- const allowedStreamingKinds = new Set(['sse-input', 'sse-output']);
105
- if (!allowedStreamingKinds.has(nodeKind) && !nodeId.includes('streaming')) {
106
- throw new ToolGovernanceViolationError(`Node '${nodeId}' (${nodeKind}) is not authorized to handle streaming data. Only SSE nodes and streaming control nodes can handle streaming.`, nodeId, {
107
- type: 'unauthorized-tool-modification',
108
- nodeId,
109
- nodeKind,
110
- severity: 'error',
111
- description: 'Only SSE nodes and streaming control nodes can handle streaming data',
112
- suggestion: `Use SSE nodes or add 'streaming' to node ID for streaming control`
113
- });
114
- }
115
- }
116
- /**
117
- * 验证上下文权限
118
- */
119
- static validateContextPermissions(nodeId, capabilities, context) {
120
- // 对于所有工具修改节点,检查是否已有工具治理节点执行过
121
- if (capabilities.canModifyTools) {
122
- if (!this.hasToolGovernanceExecuted(context)) {
123
- // 只有工具治理节点本身可以在没有治理执行的情况下运行
124
- if (!this.isToolGovernanceNode(nodeId)) {
125
- throw new ToolGovernanceViolationError(`Node '${nodeId}' attempting to modify tools without prior tool governance execution.`, nodeId, {
126
- type: 'missing-governance-node',
127
- nodeId,
128
- nodeKind: 'process',
129
- severity: 'error',
130
- description: 'Tool modification requires prior governance execution',
131
- suggestion: 'Ensure a tool-process node executes before any tool modification node'
132
- });
133
- }
134
- }
135
- }
136
- }
137
- /**
138
- * 检查是否为工具治理节点
139
- */
140
- static isToolGovernanceNode(nodeId) {
141
- return nodeId === 'tool-process' ||
142
- nodeId.includes('tool-process');
143
- }
144
- /**
145
- * 检查是否为授权的工具节点
146
- */
147
- static isAuthorizedToolNode(nodeId) {
148
- return this.AUTHORIZED_TOOL_MODIFICATION_NODES.has(nodeId) ||
149
- nodeId.includes('tool-process') ||
150
- nodeId.includes('chat-process') ||
151
- nodeId.includes('tool-canonicalizer') ||
152
- nodeId.includes('tool-harvester');
153
- }
154
- /**
155
- * 检查上下文中是否已有工具治理节点执行过
156
- */
157
- static hasToolGovernanceExecuted(context) {
158
- // 首先检查显式的治理状态标记
159
- if (context.metadata.toolGovernanceApplied === true) {
160
- return true;
161
- }
162
- // 如果没有显式标记,检查调试阶段中是否有工具治理节点
163
- const toolGovernanceStages = Object.keys(context.debug.stages)
164
- .filter(stage => stage.includes('tool-process') ||
165
- stage.includes('tool-canonicalizer'));
166
- return toolGovernanceStages.length > 0;
167
- }
168
- /**
169
- * 标记工具治理已执行
170
- */
171
- static markToolGovernanceApplied(context) {
172
- context.metadata.toolGovernanceApplied = true;
173
- context.metadata.toolGovernanceTimestamp = Date.now();
174
- }
175
- /**
176
- * 验证节点图配置
177
- */
178
- static validateNodeGraph(pipelineConfig) {
179
- const violations = [];
180
- const warnings = [];
181
- // 验证每个流水线
182
- for (const pipeline of pipelineConfig.pipelines) {
183
- const pipelineValidation = this.validateSinglePipeline(pipeline);
184
- violations.push(...pipelineValidation.violations);
185
- warnings.push(...pipelineValidation.warnings);
186
- }
187
- return {
188
- valid: violations.length === 0,
189
- violations,
190
- warnings
191
- };
192
- }
193
- /**
194
- * 验证单个流水线
195
- */
196
- static validateSinglePipeline(pipeline) {
197
- const violations = [];
198
- const warnings = [];
199
- const toolModificationNodes = pipeline.nodes.filter(node => this.nodeCanModifyTools(node));
200
- // 检查是否有工具修改节点
201
- if (toolModificationNodes.length === 0) {
202
- violations.push({
203
- type: 'missing-governance-node',
204
- nodeId: 'pipeline',
205
- nodeKind: 'process',
206
- severity: 'error',
207
- description: `Pipeline '${pipeline.id}' must contain at least one tool governance node`,
208
- suggestion: `Add 'tool-process' or 'chat-process' node to the pipeline`
209
- });
210
- }
211
- // 检查工具修改节点类型
212
- for (const node of toolModificationNodes) {
213
- if (node.kind !== 'process') {
214
- violations.push({
215
- type: 'invalid-node-type',
216
- nodeId: node.id,
217
- nodeKind: node.kind,
218
- severity: 'error',
219
- description: `Tool modification node '${node.id}' must be of kind 'process'`,
220
- suggestion: `Change node '${node.id}' kind to 'process'`
221
- });
222
- }
223
- }
224
- // 检查节点ID授权
225
- for (const node of toolModificationNodes) {
226
- if (!this.isAuthorizedToolNode(node.id)) {
227
- warnings.push({
228
- type: 'unauthorized-tool-modification',
229
- nodeId: node.id,
230
- nodeKind: node.kind,
231
- severity: 'warning',
232
- description: `Node '${node.id}' may not be authorized for tool modification`,
233
- suggestion: `Consider using standard tool governance nodes or add to authorized list`
234
- });
235
- }
236
- }
237
- // 检查必需的工具治理节点
238
- const governanceNodeIndex = pipeline.nodes.findIndex(node => this.REQUIRED_GOVERNANCE_NODES.has(node.id));
239
- if (governanceNodeIndex === -1 && toolModificationNodes.length > 0) {
240
- // 如果有工具修改节点但没有必需的治理节点,这是一个错误
241
- violations.push({
242
- type: 'missing-governance-node',
243
- nodeId: 'pipeline',
244
- nodeKind: 'process',
245
- severity: 'error',
246
- description: `Pipeline '${pipeline.id}' contains tool modification nodes but lacks required governance nodes (tool-process or chat-process)`,
247
- suggestion: `Add either 'tool-process' or 'chat-process' node to enforce tool governance before tool modification`
248
- });
249
- }
250
- else if (governanceNodeIndex > 0) {
251
- // 如果有治理节点但位置不正确,这是一个警告
252
- warnings.push({
253
- type: 'missing-governance-node',
254
- nodeId: pipeline.nodes[governanceNodeIndex].id,
255
- nodeKind: pipeline.nodes[governanceNodeIndex].kind,
256
- severity: 'warning',
257
- description: `Tool governance node should be positioned earlier in the pipeline`,
258
- suggestion: `Move tool governance node to the beginning of the process stage`
259
- });
260
- }
261
- return {
262
- valid: violations.length === 0,
263
- violations,
264
- warnings
265
- };
266
- }
267
- /**
268
- * 检查节点是否可以修改工具(基于配置推断)
269
- */
270
- static nodeCanModifyTools(node) {
271
- // 基于节点ID和实现名称推断
272
- const toolModificationPatterns = [
273
- 'tool',
274
- 'governance',
275
- 'canonicalizer',
276
- 'harvester',
277
- 'chat-process'
278
- ];
279
- return toolModificationPatterns.some(pattern => node.id.includes(pattern) ||
280
- node.implementation.includes(pattern));
281
- }
282
- /**
283
- * 运行时监控节点执行
284
- */
285
- static monitorNodeExecution(nodeId, nodeKind, context) {
286
- const issues = [];
287
- // 检查工具修改痕迹
288
- const toolModificationDetected = this.detectToolModification(nodeId, context);
289
- if (toolModificationDetected && !this.isAuthorizedToolNode(nodeId)) {
290
- issues.push(`Unauthorized tool modification detected in node '${nodeId}'`);
291
- }
292
- // 检查上下文完整性
293
- if (!context.request && !context.response) {
294
- issues.push(`Node '${nodeId}' executed without proper request/response context`);
295
- }
296
- // 检查错误传播
297
- if (context.metadata.errorContext) {
298
- const errorContext = context.metadata.errorContext;
299
- if (errorContext.nodeId !== nodeId) {
300
- issues.push(`Error context from different node detected: ${errorContext.nodeId}`);
301
- }
302
- }
303
- return {
304
- compliant: issues.length === 0,
305
- issues,
306
- recommendations: this.generateRecommendations(nodeId, nodeKind, context)
307
- };
308
- }
309
- /**
310
- * 检测工具修改痕迹
311
- */
312
- static detectToolModification(nodeId, context) {
313
- const debugStage = context.debug.stages[`${nodeId}:complete`];
314
- if (!debugStage)
315
- return false;
316
- // 检查调试数据中是否包含工具相关信息
317
- const debugData = JSON.stringify(debugStage);
318
- return debugData.includes('tools') || debugData.includes('tool_calls');
319
- }
320
- /**
321
- * 生成改进建议
322
- */
323
- static generateRecommendations(nodeId, nodeKind, context) {
324
- const recommendations = [];
325
- // 基于节点类型提供建议
326
- if (nodeKind === 'process' && !this.isAuthorizedToolNode(nodeId)) {
327
- recommendations.push(`Consider implementing tool governance in node '${nodeId}'`);
328
- }
329
- // 基于上下文状态提供建议
330
- if (!context.debug.traceEnabled) {
331
- recommendations.push('Enable debug tracing for better governance monitoring');
332
- }
333
- if (!context.snapshots) {
334
- recommendations.push('Enable snapshot support for debugging tool governance');
335
- }
336
- return recommendations;
337
- }
338
- }
@@ -1,26 +0,0 @@
1
- export type MappingDirection = 'inbound' | 'outbound';
2
- export interface FieldMapping {
3
- readonly id: string;
4
- readonly target: string;
5
- readonly path: string;
6
- readonly description: string;
7
- readonly required?: boolean;
8
- readonly transformNotes?: string;
9
- }
10
- export interface FormatMappingConfig {
11
- readonly description: string;
12
- readonly inbound: readonly FieldMapping[];
13
- readonly outbound: readonly FieldMapping[];
14
- }
15
- export interface SemanticRule {
16
- readonly id: string;
17
- readonly appliesTo: MappingDirection | 'both';
18
- readonly description: string;
19
- readonly notes?: string;
20
- }
21
- export interface ProtocolConfigDocument {
22
- readonly protocol: string;
23
- readonly specReference: string;
24
- readonly format: FormatMappingConfig;
25
- readonly semanticRules: readonly SemanticRule[];
26
- }
@@ -1,9 +0,0 @@
1
- import type { DetourEntry, DetourState } from '../types/chat-schema.js';
2
- import type { HubDirection } from './hub-context.js';
3
- export declare class DetourRegistry {
4
- private readonly inbound;
5
- private readonly outbound;
6
- add(direction: HubDirection, entry: DetourEntry): void;
7
- snapshot(): DetourState;
8
- drain(direction: HubDirection): readonly DetourEntry[];
9
- }
@@ -1,21 +0,0 @@
1
- import type { JsonObject, JsonValue } from '../types/json.js';
2
- export type HubDirection = 'inbound' | 'outbound';
3
- export interface HubContext {
4
- readonly requestId: string;
5
- readonly protocol: string;
6
- readonly direction: HubDirection;
7
- readonly routeId?: string;
8
- readonly providerId?: string;
9
- readonly profileId?: string;
10
- readonly endpoint?: string;
11
- readonly metadata?: JsonObject;
12
- }
13
- export interface StageSnapshot {
14
- readonly stage: string;
15
- readonly protocol: string;
16
- readonly direction: HubDirection;
17
- readonly payload: JsonValue;
18
- }
19
- export interface StageSnapshotRecorder {
20
- record(snapshot: StageSnapshot): void;
21
- }
@@ -1,3 +0,0 @@
1
- export * from './hub-context.js';
2
- export * from './detour-registry.js';
3
- export * from './stage-driver.js';
@@ -1,30 +0,0 @@
1
- import { DetourRegistry } from './detour-registry.js';
2
- import type { HubContext, HubDirection, StageSnapshotRecorder } from './hub-context.js';
3
- import type { JsonValue } from '../types/json.js';
4
- export type HubStageKind = 'format' | 'semantic' | 'config';
5
- export interface HubStageRuntime {
6
- readonly context: HubContext;
7
- readonly detours: DetourRegistry;
8
- }
9
- export interface HubStageDefinition {
10
- readonly name: string;
11
- readonly kind: HubStageKind;
12
- readonly direction: HubDirection;
13
- readonly execute: (input: JsonValue, runtime: HubStageRuntime) => Promise<JsonValue> | JsonValue;
14
- }
15
- export interface HubPlan {
16
- readonly protocol: string;
17
- readonly direction: HubDirection;
18
- readonly passthrough?: {
19
- readonly mode: 'identity' | 'clone';
20
- };
21
- readonly stages: readonly HubStageDefinition[];
22
- }
23
- export interface RunHubPlanOptions {
24
- readonly plan: HubPlan;
25
- readonly context: HubContext;
26
- readonly initialInput: JsonValue;
27
- readonly recorder?: StageSnapshotRecorder;
28
- readonly detours?: DetourRegistry;
29
- }
30
- export declare function runHubPlan(options: RunHubPlanOptions): Promise<JsonValue>;
@@ -1,16 +0,0 @@
1
- import type { FormatAdapter } from './index.js';
2
- import type { AdapterContext } from '../types/chat-envelope.js';
3
- import type { FormatEnvelope } from '../types/format-envelope.js';
4
- import type { JsonObject, JsonValue } from '../types/json.js';
5
- interface AnthropicFormatPayload extends JsonObject {
6
- messages?: JsonValue[];
7
- tools?: JsonValue[];
8
- }
9
- export declare class AnthropicFormatAdapter implements FormatAdapter {
10
- readonly protocol = "anthropic-messages";
11
- parseRequest(original: JsonObject, _ctx: AdapterContext): Promise<FormatEnvelope<AnthropicFormatPayload>>;
12
- buildRequest(format: FormatEnvelope<AnthropicFormatPayload>, _ctx: AdapterContext): Promise<AnthropicFormatPayload>;
13
- parseResponse(original: JsonObject, _ctx: AdapterContext): Promise<FormatEnvelope<AnthropicFormatPayload>>;
14
- buildResponse(format: FormatEnvelope<AnthropicFormatPayload>, _ctx: AdapterContext): Promise<AnthropicFormatPayload>;
15
- }
16
- export {};
@@ -1,17 +0,0 @@
1
- import type { FormatAdapter } from './index.js';
2
- import type { AdapterContext } from '../types/chat-envelope.js';
3
- import type { FormatEnvelope } from '../types/format-envelope.js';
4
- import type { JsonObject, JsonValue } from '../types/json.js';
5
- interface ChatFormatPayload extends JsonObject {
6
- messages?: JsonValue[];
7
- tools?: JsonValue[];
8
- tool_outputs?: JsonValue[];
9
- }
10
- export declare class ChatFormatAdapter implements FormatAdapter {
11
- readonly protocol = "openai-chat";
12
- parseRequest(original: JsonObject, _ctx: AdapterContext): Promise<FormatEnvelope<ChatFormatPayload>>;
13
- buildRequest(format: FormatEnvelope<ChatFormatPayload>, _ctx: AdapterContext): Promise<ChatFormatPayload>;
14
- parseResponse(original: JsonObject, _ctx: AdapterContext): Promise<FormatEnvelope<ChatFormatPayload>>;
15
- buildResponse(format: FormatEnvelope<ChatFormatPayload>, _ctx: AdapterContext): Promise<ChatFormatPayload>;
16
- }
17
- export {};
@@ -1,16 +0,0 @@
1
- import type { FormatAdapter } from './index.js';
2
- import type { AdapterContext } from '../types/chat-envelope.js';
3
- import type { FormatEnvelope } from '../types/format-envelope.js';
4
- import type { JsonObject } from '../types/json.js';
5
- interface GeminiFormatPayload extends JsonObject {
6
- contents?: JsonObject[];
7
- tools?: JsonObject[];
8
- }
9
- export declare class GeminiFormatAdapter implements FormatAdapter {
10
- readonly protocol = "gemini-chat";
11
- parseRequest(original: JsonObject, _ctx: AdapterContext): Promise<FormatEnvelope<GeminiFormatPayload>>;
12
- buildRequest(format: FormatEnvelope<GeminiFormatPayload>, _ctx: AdapterContext): Promise<GeminiFormatPayload>;
13
- parseResponse(original: JsonObject, _ctx: AdapterContext): Promise<FormatEnvelope<GeminiFormatPayload>>;
14
- buildResponse(format: FormatEnvelope<GeminiFormatPayload>, _ctx: AdapterContext): Promise<GeminiFormatPayload>;
15
- }
16
- export {};
@@ -1,21 +0,0 @@
1
- import type { AdapterContext, ChatEnvelope } from '../types/chat-envelope.js';
2
- import type { FormatEnvelope } from '../types/format-envelope.js';
3
- import type { JsonObject } from '../types/json.js';
4
- export interface FormatAdapter<TRequestPayload extends JsonObject = JsonObject, TResponsePayload extends JsonObject = JsonObject> {
5
- readonly protocol: string;
6
- parseRequest(original: TRequestPayload, ctx: AdapterContext): Promise<FormatEnvelope<TRequestPayload>> | FormatEnvelope<TRequestPayload>;
7
- buildRequest(format: FormatEnvelope, ctx: AdapterContext): Promise<TRequestPayload> | TRequestPayload;
8
- parseResponse(original: TResponsePayload, ctx: AdapterContext): Promise<FormatEnvelope<TResponsePayload>> | FormatEnvelope<TResponsePayload>;
9
- buildResponse(format: FormatEnvelope, ctx: AdapterContext): Promise<TResponsePayload> | TResponsePayload;
10
- }
11
- export interface StageRecorder {
12
- record(stage: string, payload: object): void;
13
- }
14
- export interface SemanticMapper {
15
- toChat(format: FormatEnvelope, ctx: AdapterContext): Promise<ChatEnvelope> | ChatEnvelope;
16
- fromChat(chat: ChatEnvelope, ctx: AdapterContext): Promise<FormatEnvelope> | FormatEnvelope;
17
- }
18
- export { ChatFormatAdapter } from './chat-format-adapter.js';
19
- export { AnthropicFormatAdapter } from './anthropic-format-adapter.js';
20
- export { ResponsesFormatAdapter } from './responses-format-adapter.js';
21
- export { GeminiFormatAdapter } from './gemini-format-adapter.js';
@@ -1 +0,0 @@
1
- export declare function isHubProtocolEnabled(protocol: string): boolean;
@@ -1,19 +0,0 @@
1
- import type { StandardizedRequest, ProcessedRequest } from './types/standardized.js';
2
- import type { HubNodeContext, HubNodeResult } from './types/node.js';
3
- export interface HubInboundOptions {
4
- protocol: string;
5
- rawRequest: Record<string, unknown>;
6
- nodeContext: HubNodeContext;
7
- nodeId: string;
8
- inputFormat: string;
9
- outputFormat: string;
10
- startTime: number;
11
- }
12
- export interface HubOutboundOptions {
13
- protocol: string;
14
- request: StandardizedRequest | ProcessedRequest;
15
- nodeContext: HubNodeContext;
16
- }
17
- export declare function shouldUseHub(protocol: string): boolean;
18
- export declare function runHubInboundConversion(options: HubInboundOptions): Promise<HubNodeResult>;
19
- export declare function runHubOutboundConversion(options: HubOutboundOptions): Promise<Record<string, unknown>>;