@jsonstudio/llms 0.6.795 → 0.6.938

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 (184) hide show
  1. package/dist/bridge/routecodex-adapter.d.ts +74 -0
  2. package/dist/config-unified/enhanced-path-resolver.d.ts +5 -0
  3. package/dist/config-unified/unified-config.d.ts +26 -0
  4. package/dist/conversion/codec-registry.d.ts +10 -0
  5. package/dist/conversion/codecs/gemini-openai-codec.d.ts +16 -0
  6. package/dist/conversion/codecs/openai-openai-codec.d.ts +12 -0
  7. package/dist/conversion/codecs/responses-openai-codec.d.ts +12 -0
  8. package/dist/conversion/compat/profiles/chat-gemini.json +12 -0
  9. package/dist/conversion/config/config-manager.d.ts +212 -0
  10. package/dist/conversion/hub/config/types.d.ts +26 -0
  11. package/dist/conversion/hub/core/detour-registry.d.ts +9 -0
  12. package/dist/conversion/hub/core/hub-context.d.ts +21 -0
  13. package/dist/conversion/hub/core/index.d.ts +3 -0
  14. package/dist/conversion/hub/core/stage-driver.d.ts +30 -0
  15. package/dist/conversion/hub/format-adapters/anthropic-format-adapter.d.ts +16 -0
  16. package/dist/conversion/hub/format-adapters/chat-format-adapter.d.ts +17 -0
  17. package/dist/conversion/hub/format-adapters/gemini-format-adapter.d.ts +16 -0
  18. package/dist/conversion/hub/format-adapters/index.d.ts +21 -0
  19. package/dist/conversion/hub/hub-feature.d.ts +1 -0
  20. package/dist/conversion/hub/node-support.d.ts +19 -0
  21. package/dist/conversion/hub/pipeline/compat/compat-pipeline-executor.js +11 -0
  22. package/dist/conversion/hub/pipeline/compat/compat-types.d.ts +3 -0
  23. package/dist/conversion/hub/pipeline/hub-pipeline.d.ts +7 -0
  24. package/dist/conversion/hub/pipeline/hub-pipeline.js +71 -14
  25. package/dist/conversion/hub/pipeline/stages/req_process/req_process_stage1_tool_governance/index.js +4 -0
  26. package/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/index.js +23 -1
  27. package/dist/conversion/hub/pipelines/inbound.d.ts +22 -0
  28. package/dist/conversion/hub/pipelines/outbound.d.ts +22 -0
  29. package/dist/conversion/hub/policy/policy-engine.d.ts +46 -0
  30. package/dist/conversion/hub/policy/policy-engine.js +176 -0
  31. package/dist/conversion/hub/policy/protocol-spec.d.ts +50 -0
  32. package/dist/conversion/hub/policy/protocol-spec.js +105 -0
  33. package/dist/conversion/hub/process/chat-process.d.ts +32 -0
  34. package/dist/conversion/hub/registry.d.ts +28 -0
  35. package/dist/conversion/hub/response/chat-response-utils.d.ts +6 -0
  36. package/dist/conversion/hub/response/provider-response.js +31 -0
  37. package/dist/conversion/hub/semantic-mappers/gemini-mapper.d.ts +7 -0
  38. package/dist/conversion/hub/semantic-mappers/gemini-mapper.js +87 -1
  39. package/dist/conversion/hub/semantic-mappers/index.d.ts +4 -0
  40. package/dist/conversion/hub/semantic-mappers/responses-mapper.d.ts +21 -0
  41. package/dist/conversion/hub/standardized-bridge.d.ts +12 -0
  42. package/dist/conversion/hub/types/chat-schema.d.ts +112 -0
  43. package/dist/conversion/hub/types/errors.d.ts +5 -0
  44. package/dist/conversion/hub/types/format-envelope.d.ts +7 -0
  45. package/dist/conversion/hub/types/index.d.ts +6 -0
  46. package/dist/conversion/hub/types/json.d.ts +9 -0
  47. package/dist/conversion/hub/types/node.d.ts +31 -0
  48. package/dist/conversion/responses/responses-openai-bridge.js +263 -10
  49. package/dist/conversion/schema-validator.d.ts +7 -0
  50. package/dist/conversion/shared/args-mapping.d.ts +18 -0
  51. package/dist/conversion/shared/chat-request-filters.d.ts +9 -0
  52. package/dist/conversion/shared/errors.d.ts +1 -1
  53. package/dist/conversion/shared/gemini-tool-utils.js +61 -0
  54. package/dist/conversion/shared/jsonish.d.ts +3 -0
  55. package/dist/conversion/shared/mcp-injection.d.ts +2 -0
  56. package/dist/conversion/shared/media.d.ts +1 -0
  57. package/dist/conversion/shared/openai-message-normalize.d.ts +1 -0
  58. package/dist/conversion/shared/payload-budget.d.ts +13 -0
  59. package/dist/conversion/shared/reasoning-mapping.d.ts +5 -0
  60. package/dist/conversion/shared/responses-request-adapter.d.ts +1 -28
  61. package/dist/conversion/shared/responses-request-adapter.js +1 -430
  62. package/dist/conversion/shared/snapshot-hooks.js +112 -4
  63. package/dist/conversion/shared/tool-governor.js +8 -2
  64. package/dist/conversion/shared/tool-harvester.d.ts +31 -0
  65. package/dist/conversion/shared/tool-mapping.js +10 -29
  66. package/dist/conversion/types.d.ts +33 -0
  67. package/dist/filters/builtin/add-fields-filter.d.ts +8 -0
  68. package/dist/filters/builtin/blacklist-filter.d.ts +8 -0
  69. package/dist/filters/builtin/whitelist-filter.d.ts +8 -0
  70. package/dist/filters/engine.d.ts +16 -0
  71. package/dist/filters/special/request-tool-choice-policy.d.ts +11 -0
  72. package/dist/filters/special/response-finish-invariants.d.ts +11 -0
  73. package/dist/filters/special/response-openai-to-responses-bridge.d.ts +13 -0
  74. package/dist/filters/special/response-tool-arguments-blacklist.d.ts +12 -0
  75. package/dist/filters/special/response-tool-arguments-schema-converge.d.ts +13 -0
  76. package/dist/filters/special/response-tool-arguments-stringify.d.ts +9 -0
  77. package/dist/filters/special/response-tool-arguments-whitelist.d.ts +11 -0
  78. package/dist/filters/special/tool-filter-hooks.d.ts +19 -0
  79. package/dist/filters/special/tool-post-constraints.d.ts +31 -0
  80. package/dist/filters/types.d.ts +68 -0
  81. package/dist/filters/utils/fieldmap-loader.d.ts +2 -0
  82. package/dist/filters/utils/snapshot-writer.d.ts +10 -0
  83. package/dist/guidance/index.d.ts +3 -0
  84. package/dist/guidance/index.js +78 -83
  85. package/dist/http/sse-response.d.ts +22 -0
  86. package/dist/router/virtual-router/bootstrap.d.ts +6 -0
  87. package/dist/router/virtual-router/bootstrap.js +49 -5
  88. package/dist/router/virtual-router/classifier.d.ts +10 -0
  89. package/dist/router/virtual-router/engine-selection.js +147 -15
  90. package/dist/router/virtual-router/engine.js +177 -31
  91. package/dist/router/virtual-router/error-center.d.ts +10 -0
  92. package/dist/router/virtual-router/features.d.ts +3 -0
  93. package/dist/router/virtual-router/routing-instructions.d.ts +23 -1
  94. package/dist/router/virtual-router/routing-instructions.js +120 -30
  95. package/dist/router/virtual-router/types.d.ts +11 -0
  96. package/dist/servertool/engine.js +189 -16
  97. package/dist/servertool/handlers/apply-patch-guard.js +269 -0
  98. package/dist/servertool/handlers/exec-command-guard.js +558 -0
  99. package/dist/servertool/handlers/followup-message-trimmer.d.ts +16 -0
  100. package/dist/servertool/handlers/followup-message-trimmer.js +198 -0
  101. package/dist/servertool/handlers/followup-request-builder.d.ts +17 -0
  102. package/dist/servertool/handlers/followup-request-builder.js +122 -0
  103. package/dist/servertool/handlers/gemini-empty-reply-continue.js +252 -51
  104. package/dist/servertool/handlers/iflow-model-error-retry.js +12 -22
  105. package/dist/servertool/handlers/stop-message-auto.js +237 -75
  106. package/dist/servertool/handlers/vision.js +15 -27
  107. package/dist/servertool/handlers/web-search.js +17 -43
  108. package/dist/servertool/server-side-tools.d.ts +3 -0
  109. package/dist/servertool/server-side-tools.js +3 -0
  110. package/dist/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +2 -1
  111. package/dist/sse/json-to-sse/chat-json-to-sse-converter.d.ts +80 -0
  112. package/dist/sse/json-to-sse/event-generators/chat.d.ts +55 -0
  113. package/dist/sse/json-to-sse/event-generators/responses.d.ts +99 -0
  114. package/dist/sse/json-to-sse/gemini-json-to-sse-converter.d.ts +2 -1
  115. package/dist/sse/json-to-sse/responses-json-to-sse-converter.d.ts +80 -0
  116. package/dist/sse/json-to-sse/sequencers/anthropic-sequencer.d.ts +1 -1
  117. package/dist/sse/json-to-sse/sequencers/chat-sequencer.d.ts +2 -2
  118. package/dist/sse/json-to-sse/sequencers/gemini-sequencer.d.ts +1 -1
  119. package/dist/sse/json-to-sse/sequencers/responses-sequencer.d.ts +40 -0
  120. package/dist/sse/shared/chat-serializer.d.ts +4 -0
  121. package/dist/sse/shared/constants.d.ts +272 -0
  122. package/dist/sse/shared/serializers/anthropic-event-serializer.d.ts +1 -1
  123. package/dist/sse/shared/serializers/base-serializer.d.ts +158 -0
  124. package/dist/sse/shared/serializers/chat-event-serializer.d.ts +82 -0
  125. package/dist/sse/shared/serializers/gemini-event-serializer.d.ts +1 -1
  126. package/dist/sse/shared/serializers/index.d.ts +2 -1
  127. package/dist/sse/shared/serializers/responses-event-serializer.d.ts +123 -0
  128. package/dist/sse/shared/serializers/types.d.ts +51 -0
  129. package/dist/sse/shared/utils.d.ts +254 -0
  130. package/dist/sse/shared/writer.d.ts +2 -2
  131. package/dist/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +1 -1
  132. package/dist/sse/sse-to-json/builders/anthropic-response-builder.d.ts +1 -1
  133. package/dist/sse/sse-to-json/builders/response-builder.d.ts +1 -1
  134. package/dist/sse/sse-to-json/chat-sse-to-json-converter.d.ts +2 -1
  135. package/dist/sse/sse-to-json/gemini-sse-to-json-converter.d.ts +2 -1
  136. package/dist/sse/sse-to-json/parsers/sse-parser.d.ts +73 -0
  137. package/dist/sse/sse-to-json/responses-sse-to-json-converter.d.ts +1 -1
  138. package/dist/sse/types/chat-types.d.ts +1 -1
  139. package/dist/sse/types/responses-types.d.ts +1 -1
  140. package/dist/tools/apply-patch/execution-capturer.d.ts +13 -0
  141. package/dist/tools/apply-patch/execution-capturer.js +158 -0
  142. package/dist/tools/apply-patch/regression-capturer.d.ts +1 -0
  143. package/dist/tools/apply-patch/regression-capturer.js +5 -4
  144. package/dist/tools/apply-patch/structured.js +109 -13
  145. package/dist/tools/apply-patch/validator.js +261 -17
  146. package/dist/tools/tool-registry.d.ts +8 -0
  147. package/dist/tools/tool-registry.js +2 -1
  148. package/package.json +4 -4
  149. package/dist/conversion/compat/actions/apply-patch-format-fixer.js +0 -233
  150. package/dist/conversion/config/compat-profiles.json +0 -38
  151. package/dist/conversion/hub/response/server-side-tools.d.ts +0 -26
  152. package/dist/conversion/hub/response/server-side-tools.js +0 -383
  153. package/dist/conversion/shared/bridge-conversation-store.d.ts +0 -41
  154. package/dist/conversion/shared/bridge-conversation-store.js +0 -279
  155. package/dist/conversion/shared/bridge-request-adapter.d.ts +0 -28
  156. package/dist/conversion/shared/bridge-request-adapter.js +0 -430
  157. package/dist/conversion/shared/responses-id-utils.js +0 -42
  158. package/dist/conversion/shared/responses-instructions.js +0 -113
  159. package/dist/conversion/shared/responses-message-utils.d.ts +0 -15
  160. package/dist/conversion/shared/responses-message-utils.js +0 -206
  161. package/dist/conversion/shared/responses-metadata.js +0 -1
  162. package/dist/conversion/shared/responses-output-utils.d.ts +0 -7
  163. package/dist/conversion/shared/responses-output-utils.js +0 -108
  164. package/dist/conversion/shared/responses-types.d.ts +0 -33
  165. package/dist/conversion/shared/tool-normalizers.d.ts +0 -4
  166. package/dist/conversion/shared/tool-normalizers.js +0 -84
  167. package/dist/filters/special/request-streaming-to-nonstreaming.d.ts +0 -13
  168. package/dist/filters/special/request-streaming-to-nonstreaming.js +0 -39
  169. package/dist/filters/special/response-apply-patch-toon-decode.d.ts +0 -23
  170. package/dist/filters/special/response-apply-patch-toon-decode.js +0 -460
  171. package/dist/filters/special/response-tool-arguments-toon-decode.d.ts +0 -10
  172. package/dist/filters/special/response-tool-arguments-toon-decode.js +0 -154
  173. package/dist/servertool/flow-types.d.ts +0 -40
  174. package/dist/servertool/flow-types.js +0 -1
  175. package/dist/servertool/orchestration-types.d.ts +0 -33
  176. package/dist/servertool/orchestration-types.js +0 -1
  177. package/dist/servertool/vision-tool.d.ts +0 -2
  178. package/dist/servertool/vision-tool.js +0 -185
  179. package/dist/tools/patch-args-normalizer.d.ts +0 -15
  180. package/dist/tools/patch-args-normalizer.js +0 -472
  181. package/dist/utils/toon.d.ts +0 -4
  182. package/dist/utils/toon.js +0 -75
  183. /package/dist/{conversion/compat/actions/apply-patch-format-fixer.d.ts → servertool/handlers/apply-patch-guard.d.ts} +0 -0
  184. /package/dist/{conversion/shared/responses-types.js → servertool/handlers/exec-command-guard.d.ts} +0 -0
@@ -1,33 +0,0 @@
1
- import type { AdapterContext } from '../conversion/hub/types/chat-envelope.js';
2
- import type { JsonObject } from '../conversion/hub/types/json.js';
3
- import type { ProviderInvoker } from './types.js';
4
- export interface ServerToolOrchestrationOptions {
5
- chat: JsonObject;
6
- adapterContext: AdapterContext;
7
- requestId: string;
8
- entryEndpoint: string;
9
- providerProtocol: string;
10
- /**
11
- * 将带有工具结果的新 ChatEnvelope 作为普通请求再送入 HubPipeline。
12
- * 支持 routeHint 来强制路由(例如 web_search)
13
- */
14
- reenterPipeline?: (options: {
15
- entryEndpoint: string;
16
- requestId: string;
17
- body: JsonObject;
18
- metadata?: JsonObject;
19
- }) => Promise<{
20
- body?: JsonObject;
21
- __sse_responses?: unknown;
22
- format?: string;
23
- }>;
24
- providerInvoker?: ProviderInvoker;
25
- }
26
- export interface ServerToolOrchestrationResult {
27
- chat: JsonObject;
28
- executed: boolean;
29
- /**
30
- * 记录本次执行使用的骨架流程,便于日志输出和后续扩展。
31
- */
32
- flowId?: string;
33
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,2 +0,0 @@
1
- import type { ServerToolFlow } from './flow-types.js';
2
- export declare const visionToolFlow: ServerToolFlow;
@@ -1,185 +0,0 @@
1
- import { extractTextFromChatLike } from './server-side-tools.js';
2
- const VISION_FLOW_ID = 'vision_flow';
3
- export const visionToolFlow = {
4
- id: VISION_FLOW_ID,
5
- shouldRun(context) {
6
- if (!context.options.reenterPipeline) {
7
- return false;
8
- }
9
- return shouldRunVisionFlow(context);
10
- },
11
- async run(context, helpers) {
12
- const captured = context.capturedChatRequest;
13
- if (!captured) {
14
- return null;
15
- }
16
- const visionPayload = buildVisionAnalysisPayload(captured);
17
- if (!visionPayload) {
18
- return null;
19
- }
20
- const visionResponse = await helpers.callReenterHop({
21
- requestIdSuffix: ':vision',
22
- body: visionPayload,
23
- metadata: {
24
- routeHint: 'vision'
25
- }
26
- });
27
- const visionBody = asObject(visionResponse?.body);
28
- if (!visionBody) {
29
- return null;
30
- }
31
- const visionSummary = extractTextFromChatLike(visionBody);
32
- if (!visionSummary) {
33
- return null;
34
- }
35
- const followupPayload = buildVisionFollowupPayload(captured, visionSummary);
36
- if (!followupPayload) {
37
- return null;
38
- }
39
- const followupRouteHint = helpers.getRouteHintForFollowup('vision');
40
- const followup = await helpers.callReenterHop({
41
- requestIdSuffix: ':vision_followup',
42
- body: followupPayload,
43
- metadata: followupRouteHint ? { routeHint: followupRouteHint } : undefined
44
- });
45
- const followupBody = asObject(followup?.body);
46
- if (followupBody) {
47
- return {
48
- chat: followupBody,
49
- executed: true,
50
- flowId: VISION_FLOW_ID
51
- };
52
- }
53
- return null;
54
- }
55
- };
56
- function shouldRunVisionFlow(context) {
57
- const adapterCtx = context.options.adapterContext;
58
- const followupFlag = adapterCtx.serverToolFollowup === true || adapterCtx.serverToolFollowup === 'true';
59
- if (followupFlag) {
60
- return false;
61
- }
62
- return adapterCtx.hasImageAttachment === true || adapterCtx.hasImageAttachment === 'true';
63
- }
64
- function asObject(value) {
65
- if (!value || typeof value !== 'object')
66
- return undefined;
67
- if (Array.isArray(value))
68
- return undefined;
69
- return value;
70
- }
71
- function buildVisionAnalysisPayload(source) {
72
- if (!source || typeof source !== 'object') {
73
- return null;
74
- }
75
- const payload = {};
76
- if (typeof source.model === 'string' && source.model.trim()) {
77
- payload.model = source.model.trim();
78
- }
79
- if (Array.isArray(source.messages)) {
80
- payload.messages = cloneJson(source.messages);
81
- }
82
- else {
83
- return null;
84
- }
85
- if (Array.isArray(source.tools) && source.tools.length) {
86
- payload.tools = cloneJson(source.tools);
87
- }
88
- const parameters = source.parameters;
89
- if (parameters && typeof parameters === 'object' && !Array.isArray(parameters)) {
90
- const params = cloneJson(parameters);
91
- Object.assign(payload, params);
92
- }
93
- return payload;
94
- }
95
- function buildVisionFollowupPayload(source, summary) {
96
- if (!source || typeof source !== 'object') {
97
- return null;
98
- }
99
- const payload = {};
100
- if (typeof source.model === 'string' && source.model.trim()) {
101
- payload.model = source.model.trim();
102
- }
103
- payload.messages = injectVisionSummary(source.messages, summary);
104
- if (Array.isArray(source.tools) && source.tools.length) {
105
- payload.tools = cloneJson(source.tools);
106
- }
107
- const parameters = source.parameters;
108
- if (parameters && typeof parameters === 'object' && !Array.isArray(parameters)) {
109
- const params = cloneJson(parameters);
110
- Object.assign(payload, params);
111
- }
112
- return payload;
113
- }
114
- function injectVisionSummary(source, summary) {
115
- const messages = Array.isArray(source) ? cloneJson(source) : [];
116
- let injected = false;
117
- for (const message of messages) {
118
- if (!message || typeof message !== 'object')
119
- continue;
120
- const content = message.content;
121
- if (!Array.isArray(content))
122
- continue;
123
- const nextParts = [];
124
- let removed = false;
125
- for (const part of content) {
126
- if (part && typeof part === 'object') {
127
- const typeValue = typeof part.type === 'string'
128
- ? part.type.toLowerCase()
129
- : '';
130
- if (typeValue.includes('image')) {
131
- removed = true;
132
- continue;
133
- }
134
- }
135
- nextParts.push(part);
136
- }
137
- if (removed) {
138
- nextParts.push({
139
- type: 'text',
140
- text: `[Vision] ${summary}`
141
- });
142
- message.content = nextParts;
143
- injected = true;
144
- }
145
- }
146
- if (!injected) {
147
- for (let i = messages.length - 1; i >= 0; i -= 1) {
148
- const msg = messages[i];
149
- if (!msg || typeof msg !== 'object')
150
- continue;
151
- const role = typeof msg.role === 'string'
152
- ? msg.role.toLowerCase()
153
- : '';
154
- if (role !== 'user')
155
- continue;
156
- const content = msg.content;
157
- if (Array.isArray(content)) {
158
- content.push({
159
- type: 'text',
160
- text: `[Vision] ${summary}`
161
- });
162
- injected = true;
163
- break;
164
- }
165
- if (typeof content === 'string' && content.length) {
166
- msg.content = `${content}\n[Vision] ${summary}`;
167
- }
168
- else {
169
- msg.content = `[Vision] ${summary}`;
170
- }
171
- injected = true;
172
- break;
173
- }
174
- }
175
- if (!injected) {
176
- messages.push({
177
- role: 'system',
178
- content: `[Vision] ${summary}`
179
- });
180
- }
181
- return messages;
182
- }
183
- function cloneJson(value) {
184
- return JSON.parse(JSON.stringify(value));
185
- }
@@ -1,15 +0,0 @@
1
- export interface PatchNormalizationResult {
2
- normalized?: string;
3
- error?: string;
4
- }
5
- /**
6
- * Attempt to fix common apply_patch argument format issues:
7
- * 1. Missing *** Begin Patch / *** End Patch markers
8
- * 2. Lines missing +/- prefix in hunks
9
- * 3. Field aliases (input->patch, code->patch, diff->patch)
10
- * 4. Structured changes array conversion
11
- * 5. Git diff format conversion
12
- */
13
- export declare function normalizeApplyPatchArgs(argsStr: string): PatchNormalizationResult;
14
- export declare function looksLikePatch(text?: string): boolean;
15
- export declare function normalizeApplyPatchText(raw: string): string;