MCPcopy Create free account
hub / github.com/Rfym21/Qwen2API / parseToolCallPayload

Function parseToolCallPayload

src/utils/tool-prompt.js:204–224  ·  view source on GitHub ↗
(raw)

Source from the content-addressed store, hash-verified

202 return LEAKED_PAYLOAD_NAME_RE.test(scope.slice(0, LEAKED_PAYLOAD_NAME_WINDOW)) &&
203 LEAKED_PAYLOAD_ARGS_RE.test(scope);
204};
205
206/**
207 * 正文之后的裸负载候选(行首 '{')的"像不像负载"谓词 —— 比首位谓词多两道上界:
208 * 从对象的 '{' 起 256 字符内必须见到 "name"、4352 字符(256 + 4 KiB)内必须见到
209 * "arguments"(两个窗口都从 '{' 量起,不是从 "name" 之后量起),对象必须在 16 KiB 内
210 * 配平。上界是流式扣留的代价封顶:回答中间打印出来的一份 package.json 也以行首 '{'
211 * 开头、前 256 字符里就有 "name",不能让交付停到它配平为止。整段路径用**同一个**
212 * 谓词、**同一组上界**判候选,两条路径才对同一份文本给出同一个结果(parity,
213 * review loop 2):
214 * - 已在 16 KiB 内配平:两个键都必须落在对象自己的范围里(与首位谓词同一条纪律:
215 * 后文一个真调用的键不能把前面一个普通对象点着),"arguments" 仍受窗口约束。
216 * - 16 KiB 内没配平(永远配不平、或在更远处才配平 —— 流式在 16 KiB 处分不清
217 * 两者,整段路径也就不去分):只看窗口;结算点把它按"配不平"处理(残片切点 +
218 * 同一条 warning),两条路径给出同一个结果。
219 * 便宜的窗口判断先于配平扫描(配平是 O(对象长度),见 isLeakedToolPayloadShape)。
220 */
221const AFTER_PROSE_ARGS_WINDOW = LEAKED_PAYLOAD_NAME_WINDOW + 4096;
222const AFTER_PROSE_PAYLOAD_MAX = 16 * 1024;
223// 整段路径快路径用:文本里有没有任何一个行首 '{'(与 nextLineStartBrace 同一定义)。
224const LINE_START_BRACE_RE = /(?:^|\n)[ \t\r]*\{/;
225/** 正文之后的配平:只在 AFTER_PROSE_PAYLOAD_MAX 内找闭合,超出即视为配不平(两条路径同一上界)。 */
226const extractAfterProseObject = (text, start) => {
227 const object = extractBalancedObject(text.slice(start, start + AFTER_PROSE_PAYLOAD_MAX), 0);

Callers 3

parseToolCallsFromTextFunction · 0.85
pushFunction · 0.85
flushFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected