nolo-cli 0.96.0-alpha.1 → 0.97.0-alpha.2
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.
- package/{_executeModel-AUQRMRWL.js → _executeModel-G2MRKK2K.js} +15 -15
- package/{agentDeleteCommand-4BAHJRU3.js → agentDeleteCommand-4427YKQF.js} +6 -6
- package/{agentEmailCommands-QISOY7Y6.js → agentEmailCommands-RNBKKO7Q.js} +18 -18
- package/{agentListCommands-U46ODMQU.js → agentListCommands-O4AEMQVV.js} +8 -8
- package/{agentMachineCommands-EHV2KM2C.js → agentMachineCommands-FOFX5S2Q.js} +7 -7
- package/{agentRecordCommands-SIPURU2S.js → agentRecordCommands-6QK7AMXQ.js} +18 -18
- package/{agentRunCommand-K4CLMA6B.js → agentRunCommand-2W3Q3A7M.js} +18 -18
- package/{agentRunControl-XLGD3UZ5.js → agentRunControl-WCTKX5VL.js} +2 -2
- package/{agentRuntimeLocal-O4HPUJA4.js → agentRuntimeLocal-IW3IM5P6.js} +6 -6
- package/{agentSlice-ZYT2OUR3.js → agentSlice-SK47GTN7.js} +1 -1
- package/{appDeleteCommands-R5BBTKQK.js → appDeleteCommands-ZXLXNRHF.js} +6 -6
- package/{appDeployCommands-ZJIXOJWD.js → appDeployCommands-PWB4YERK.js} +6 -6
- package/{appDeployStatusCommands-B3R2ZTBF.js → appDeployStatusCommands-2EZKZP7Y.js} +6 -6
- package/{appGetCommands-2AQSOV2A.js → appGetCommands-JNUKOWHO.js} +6 -6
- package/{appListCommands-HCIJGZFY.js → appListCommands-6X3H67SS.js} +6 -6
- package/{chatQueueReduxAdapter-Q5V4YJVI.js → chatQueueReduxAdapter-ZJ555AT2.js} +4 -4
- package/{chunk-OF7AQZUG.js → chunk-2YMRWISD.js} +1 -1
- package/{chunk-JOHSKZQX.js → chunk-3SK4LEIH.js} +27 -13
- package/{chunk-NTW5GWDM.js → chunk-3VNWWVKB.js} +2 -0
- package/{chunk-3IIEFNGY.js → chunk-4EZHSKTB.js} +1 -1
- package/{chunk-BGSLKVCP.js → chunk-7D6Z6AA4.js} +2 -2
- package/{chunk-LLT642J4.js → chunk-ADTY7BWR.js} +1 -1
- package/{chunk-WADCY6G6.js → chunk-ASQYTZTR.js} +43 -6
- package/{chunk-ZXKVPF4K.js → chunk-B4ZH7KVO.js} +1 -1
- package/{chunk-EGSKXKR5.js → chunk-EHKBVWKL.js} +1 -1
- package/{chunk-OA6Q2A4I.js → chunk-L7I247DF.js} +79 -19
- package/{chunk-JAXOVNM4.js → chunk-NEDZDG3M.js} +1 -1
- package/{chunk-3SJQXXGY.js → chunk-NUVMWYJM.js} +92 -13
- package/{chunk-BZWBEHGD.js → chunk-O35EJJVP.js} +14 -8
- package/{chunk-XRWZB6CF.js → chunk-OIMN34NA.js} +6 -6
- package/{chunk-AFDS2CVM.js → chunk-OZPMVBJI.js} +2 -2
- package/{chunk-XOVEWFLK.js → chunk-QLNJRTKI.js} +2 -2
- package/{chunk-A6G32FNX.js → chunk-R7N5TMTV.js} +3 -3
- package/{chunk-IAO6JBYW.js → chunk-RG6JBBX5.js} +5 -1
- package/{chunk-ZLR5JN3E.js → chunk-RSJECD7I.js} +3 -3
- package/{chunk-4MY4GLIW.js → chunk-SDTTBMBU.js} +115 -37
- package/{chunk-DEUUPHOO.js → chunk-TDRTS7QW.js} +1 -1
- package/{chunk-CPH3W5A7.js → chunk-WGR3J4Q6.js} +86 -1
- package/{chunk-FOWEGIMF.js → chunk-WRFW73PB.js} +10 -10
- package/{chunk-MMPXJXHT.js → chunk-X4QAVDFE.js} +99 -13
- package/{contentThunks-PT23JWJX.js → contentThunks-YLWTUILV.js} +5 -5
- package/{createAgentAutomationAction-N27SYTLU.js → createAgentAutomationAction-HFLPOBWQ.js} +5 -5
- package/{createDialogAction-XZPLHD5G.js → createDialogAction-4H52MURR.js} +6 -6
- package/{createPageAction-KHVJQ3CS.js → createPageAction-5YDRMJOS.js} +5 -5
- package/{dialogCommands-ZUWW5UT6.js → dialogCommands-KFK2FF5B.js} +6 -6
- package/{dialogSlice-3YH242HS.js → dialogSlice-TMSHUGEM.js} +4 -4
- package/{docCreateCommands-Q6FADDSJ.js → docCreateCommands-V777WOZ7.js} +6 -6
- package/{docDeleteCommands-ZKIH54PZ.js → docDeleteCommands-5KHT7Z5Q.js} +6 -6
- package/{docReadCommands-7BZT2QTW.js → docReadCommands-BLROGWP3.js} +6 -6
- package/{docStore-YSZRNUUD.js → docStore-OBC5QOW7.js} +1 -1
- package/{docUpdateCommands-WJXWTRL7.js → docUpdateCommands-QXOZHQ5H.js} +6 -6
- package/{handleSendMessageAction-KJO2QDBM.js → handleSendMessageAction-4LGNXH6T.js} +4 -4
- package/index.js +47 -47
- package/{machineCommands-QC4TD7GJ.js → machineCommands-SNLCRHQK.js} +18 -18
- package/{machineWsRunDispatch-XUOIAXO7.js → machineWsRunDispatch-ZGZVDQSO.js} +18 -18
- package/package.json +1 -1
- package/{readlineWorkspace-74TXXSLO.js → readlineWorkspace-OUL7ZN7D.js} +22 -19
- package/{runAgentClientLoop-37BXJD62.js → runAgentClientLoop-GD3APV7V.js} +13 -13
- package/{spaceCommands-P3ONT6LL.js → spaceCommands-TIDVUPDV.js} +6 -6
- package/{streamAgentChatTurn-FGXQXALU.js → streamAgentChatTurn-M73KWCCU.js} +15 -15
- package/{tools-R5UF2KZO.js → tools-DXXDQ2CP.js} +10 -10
- package/{tuiSummaryLlmCaller-T2SHYMDZ.js → tuiSummaryLlmCaller-VJY3YD2Q.js} +2 -2
- package/{updateDialogTitleAction-RTADGV7A.js → updateDialogTitleAction-XI73NQMU.js} +5 -5
|
@@ -14,23 +14,23 @@ import "./chunk-76WEAXJB.js";
|
|
|
14
14
|
import "./chunk-Z77CRGTW.js";
|
|
15
15
|
import "./chunk-SV5IJK6K.js";
|
|
16
16
|
import "./chunk-VF4K2QE6.js";
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-SDTTBMBU.js";
|
|
18
|
+
import "./chunk-2YMRWISD.js";
|
|
19
19
|
import "./chunk-Q5FJJ6XI.js";
|
|
20
20
|
import "./chunk-ZNFJWEN4.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-4EZHSKTB.js";
|
|
22
22
|
import "./chunk-CQ3WA2NE.js";
|
|
23
23
|
import "./chunk-5ZUL4CUO.js";
|
|
24
24
|
import "./chunk-N7J63Q6C.js";
|
|
25
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-L7I247DF.js";
|
|
26
26
|
import "./chunk-PUOC4YRO.js";
|
|
27
27
|
import "./chunk-IIVGDG4I.js";
|
|
28
28
|
import "./chunk-FDTR4QJ6.js";
|
|
29
29
|
import "./chunk-UZGQNTVW.js";
|
|
30
30
|
import "./chunk-6OZ36FXI.js";
|
|
31
31
|
import "./chunk-2MBTWINN.js";
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
32
|
+
import "./chunk-NEDZDG3M.js";
|
|
33
|
+
import "./chunk-ASQYTZTR.js";
|
|
34
34
|
import "./chunk-PSCNXBYA.js";
|
|
35
35
|
import "./chunk-GQBOR3G6.js";
|
|
36
36
|
import "./chunk-BYXBJQAS.js";
|
|
@@ -4,12 +4,12 @@ import {
|
|
|
4
4
|
} from "./chunk-YPREESF4.js";
|
|
5
5
|
import {
|
|
6
6
|
handleSendMessage
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-WRFW73PB.js";
|
|
8
8
|
import "./chunk-MC4XLIJ7.js";
|
|
9
9
|
import "./chunk-3BMYXEUW.js";
|
|
10
10
|
import "./chunk-YYLHWIW6.js";
|
|
11
11
|
import "./chunk-AGGIDPCZ.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-RSJECD7I.js";
|
|
13
13
|
import "./chunk-TOP2VXOR.js";
|
|
14
14
|
import "./chunk-5RGU3J7P.js";
|
|
15
15
|
import {
|
|
@@ -21,8 +21,8 @@ import {
|
|
|
21
21
|
} from "./chunk-6YTOJY35.js";
|
|
22
22
|
import "./chunk-M76ECQRD.js";
|
|
23
23
|
import "./chunk-YDH3FDFQ.js";
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-NEDZDG3M.js";
|
|
25
|
+
import "./chunk-ASQYTZTR.js";
|
|
26
26
|
import "./chunk-PSCNXBYA.js";
|
|
27
27
|
import "./chunk-GQBOR3G6.js";
|
|
28
28
|
import "./chunk-BYXBJQAS.js";
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
resolveLocalUserId,
|
|
28
28
|
t,
|
|
29
29
|
toolLabel
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-NUVMWYJM.js";
|
|
31
31
|
import {
|
|
32
32
|
createRunActivityTracker,
|
|
33
33
|
popSingleQueueMessage,
|
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
resolveRunQueuePath,
|
|
36
36
|
settleRunTerminalAuthoritatively,
|
|
37
37
|
spawnLocalBackgroundRun
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-WGR3J4Q6.js";
|
|
39
39
|
import {
|
|
40
40
|
clearCredentialAvailability,
|
|
41
41
|
readCredentialEntry,
|
|
@@ -64,7 +64,7 @@ import {
|
|
|
64
64
|
} from "./chunk-LTRXGFMS.js";
|
|
65
65
|
import {
|
|
66
66
|
formatAgentListCard
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-X4QAVDFE.js";
|
|
68
68
|
import {
|
|
69
69
|
isTransientFetchError
|
|
70
70
|
} from "./chunk-5UTFL4QJ.js";
|
|
@@ -79,17 +79,17 @@ import {
|
|
|
79
79
|
formatStatusRunCard,
|
|
80
80
|
formatStopRunCard,
|
|
81
81
|
isAgentRunTerminalStatus
|
|
82
|
-
} from "./chunk-
|
|
82
|
+
} from "./chunk-3VNWWVKB.js";
|
|
83
83
|
import {
|
|
84
84
|
buildMemorySubjectsForAgent,
|
|
85
85
|
chooseMemoryOwners,
|
|
86
86
|
loadMemoryCandidatesFromDb,
|
|
87
87
|
resolveAgentMemoryPolicy
|
|
88
|
-
} from "./chunk-
|
|
88
|
+
} from "./chunk-OZPMVBJI.js";
|
|
89
89
|
import {
|
|
90
90
|
API_REPORTED_COST_MULTIPLIER,
|
|
91
91
|
parseUiAskChoiceContent
|
|
92
|
-
} from "./chunk-
|
|
92
|
+
} from "./chunk-WRFW73PB.js";
|
|
93
93
|
import {
|
|
94
94
|
isOAuthApiKeyRef
|
|
95
95
|
} from "./chunk-YYLHWIW6.js";
|
|
@@ -112,10 +112,10 @@ import {
|
|
|
112
112
|
LOCAL_AGENT_CONFIG_MISSING_CODE,
|
|
113
113
|
LOCAL_TURN_ABORTED_CODE,
|
|
114
114
|
readActionGate
|
|
115
|
-
} from "./chunk-
|
|
115
|
+
} from "./chunk-SDTTBMBU.js";
|
|
116
116
|
import {
|
|
117
117
|
resolveAgentRuntimeConfigFromRecord
|
|
118
|
-
} from "./chunk-
|
|
118
|
+
} from "./chunk-4EZHSKTB.js";
|
|
119
119
|
import {
|
|
120
120
|
createThinkParserState,
|
|
121
121
|
flushThinkParser,
|
|
@@ -138,10 +138,10 @@ import {
|
|
|
138
138
|
DEFAULT_CONTEXT_WINDOW,
|
|
139
139
|
getModelContextWindow,
|
|
140
140
|
normalizeUsage
|
|
141
|
-
} from "./chunk-
|
|
141
|
+
} from "./chunk-NEDZDG3M.js";
|
|
142
142
|
import {
|
|
143
143
|
clipCompactText
|
|
144
|
-
} from "./chunk-
|
|
144
|
+
} from "./chunk-ASQYTZTR.js";
|
|
145
145
|
import {
|
|
146
146
|
findModelConfig
|
|
147
147
|
} from "./chunk-OIVSQH2O.js";
|
|
@@ -9821,6 +9821,14 @@ function formatCompactionSummaryLine(event) {
|
|
|
9821
9821
|
return `${STYLE.dim}\u81EA\u52A8\u4E0A\u4E0B\u6587\u538B\u7F29\u5931\u8D25${reason}\uFF0C\u672C\u8F6E\u4EE5\u672A\u538B\u7F29\u4E0A\u4E0B\u6587\u7EE7\u7EED\u3002\u82E5\u53CD\u590D\u51FA\u73B0\u53EF\u624B\u52A8 /compact\u3002${STYLE.reset}
|
|
9822
9822
|
`;
|
|
9823
9823
|
}
|
|
9824
|
+
if (event.skipped) {
|
|
9825
|
+
if (event.skipReason === "adapter-missing-summary-methods" || event.skipReason === "load-summary-failed") {
|
|
9826
|
+
return `${STYLE.dim}\u81EA\u52A8\u4E0A\u4E0B\u6587\u538B\u7F29\u4E0D\u53EF\u7528\uFF08${event.skipReason}\uFF09\uFF0C\u672C\u8F6E\u4E0D\u538B\u7F29\u3002${STYLE.reset}
|
|
9827
|
+
`;
|
|
9828
|
+
}
|
|
9829
|
+
return "";
|
|
9830
|
+
}
|
|
9831
|
+
if (!event.summaryGenerated) return "";
|
|
9824
9832
|
let detail = "\u751F\u6210\u5386\u53F2\u6458\u8981";
|
|
9825
9833
|
const saved = typeof event.savedTokens === "number" ? event.savedTokens : void 0;
|
|
9826
9834
|
let line = `\u5DF2\u538B\u7F29\u4E0A\u4E0B\u6587\uFF1A${detail}`;
|
|
@@ -9990,9 +9998,15 @@ ${options.agentName}${IDENTITY_LABEL_SEPARATOR}`);
|
|
|
9990
9998
|
markThinkingDelta(chunk);
|
|
9991
9999
|
},
|
|
9992
10000
|
handleToolEvent,
|
|
9993
|
-
/** 记录一条 compaction 观测事件(TUI 在 turn 结束时渲染一行 dim 摘要)。
|
|
10001
|
+
/** 记录一条 compaction 观测事件(TUI 在 turn 结束时渲染一行 dim 摘要)。
|
|
10002
|
+
* 一轮内可能来多条(轮开始 + 每个 round),按显著性保留最高者:
|
|
10003
|
+
* 失败 > 新生成摘要 > 投影复用 > 跳过,避免末尾的例行跳过事件
|
|
10004
|
+
* 覆盖掉中途真正发生的压缩。 */
|
|
9994
10005
|
recordCompaction(event) {
|
|
9995
|
-
|
|
10006
|
+
const significance = (e) => e.failed ? 4 : e.summaryGenerated ? 3 : e.compressed ? 2 : 1;
|
|
10007
|
+
if (!compactionEvent || significance(event) >= significance(compactionEvent)) {
|
|
10008
|
+
compactionEvent = event;
|
|
10009
|
+
}
|
|
9996
10010
|
},
|
|
9997
10011
|
showWorking(label) {
|
|
9998
10012
|
const activeLabel = label ?? workingLabel;
|
|
@@ -10419,7 +10433,7 @@ function findCollapsedPasteSpanAt(buffer, pos, opts = {}) {
|
|
|
10419
10433
|
// packages/cli/client/agentRun.ts
|
|
10420
10434
|
import { ulid as ulid2 } from "ulid";
|
|
10421
10435
|
async function loadRunLocalAgentTurn() {
|
|
10422
|
-
const { runLocalAgentTurn } = await import("./agentRuntimeLocal-
|
|
10436
|
+
const { runLocalAgentTurn } = await import("./agentRuntimeLocal-IW3IM5P6.js");
|
|
10423
10437
|
return runLocalAgentTurn;
|
|
10424
10438
|
}
|
|
10425
10439
|
var stripDebugNoise = (s) => s.replace(/\s*raw="[\s\S]*"/g, "").replace(/\s*raw=\S+/g, "").replace(/\s*headers=\[[^\]]*\]/g, "").replace(/\s*headers=\S+/g, "").trim();
|
|
@@ -19,6 +19,7 @@ ${input}`;
|
|
|
19
19
|
}
|
|
20
20
|
let jsonStr;
|
|
21
21
|
try {
|
|
22
|
+
JSON.stringify(input);
|
|
22
23
|
const serialized = JSON.stringify(input, null, 2);
|
|
23
24
|
if (serialized === void 0) {
|
|
24
25
|
return task;
|
|
@@ -43,6 +44,7 @@ function calculateDelegatedPayloadMetrics(task, input, delegatedContent) {
|
|
|
43
44
|
serializedInputForTokens = input;
|
|
44
45
|
} else {
|
|
45
46
|
try {
|
|
47
|
+
JSON.stringify(input);
|
|
46
48
|
const serialized = JSON.stringify(input, null, 2);
|
|
47
49
|
if (serialized !== void 0) {
|
|
48
50
|
inputChars = serialized.length;
|
|
@@ -326,7 +326,7 @@ async function saveDocState(arg, { dispatch, getState }) {
|
|
|
326
326
|
).unwrap();
|
|
327
327
|
if (dbSpaceId) {
|
|
328
328
|
try {
|
|
329
|
-
const { updateContentTitle } = await import("./contentThunks-
|
|
329
|
+
const { updateContentTitle } = await import("./contentThunks-YLWTUILV.js");
|
|
330
330
|
await dispatch(
|
|
331
331
|
updateContentTitle({
|
|
332
332
|
spaceId: dbSpaceId,
|
|
@@ -365,7 +365,7 @@ async function saveDocState(arg, { dispatch, getState }) {
|
|
|
365
365
|
}
|
|
366
366
|
}
|
|
367
367
|
async function createDocState(args, thunkApi) {
|
|
368
|
-
const { createPageAction } = await import("./createPageAction-
|
|
368
|
+
const { createPageAction } = await import("./createPageAction-5YDRMJOS.js");
|
|
369
369
|
return createPageAction(args, thunkApi);
|
|
370
370
|
}
|
|
371
371
|
function subscribe(listener) {
|
|
@@ -409,13 +409,14 @@ var normalizeContextUsageRatio = (value) => {
|
|
|
409
409
|
const ratio = value > 1 ? value / 100 : value;
|
|
410
410
|
return ratio >= 0 && ratio <= 1 ? ratio : void 0;
|
|
411
411
|
};
|
|
412
|
-
var emptyPlan = (startIndex) => ({
|
|
412
|
+
var emptyPlan = (startIndex, diagnostics) => ({
|
|
413
413
|
shouldCompress: false,
|
|
414
414
|
compressCount: 0,
|
|
415
415
|
msgsToCompress: [],
|
|
416
416
|
msgsToKeep: [],
|
|
417
417
|
newSummarizedBeforeId: void 0,
|
|
418
|
-
startIndex
|
|
418
|
+
startIndex,
|
|
419
|
+
...diagnostics ? { diagnostics } : {}
|
|
419
420
|
});
|
|
420
421
|
function findPendingMessages(allMsgs, summarizedBeforeId) {
|
|
421
422
|
let startIndex = 0;
|
|
@@ -489,7 +490,20 @@ function planCompression(input) {
|
|
|
489
490
|
coldResume
|
|
490
491
|
} = input;
|
|
491
492
|
const { pendingMsgs, startIndex } = findPendingMessages(allMsgs, summarizedBeforeId);
|
|
492
|
-
if (pendingMsgs.length === 0)
|
|
493
|
+
if (pendingMsgs.length === 0) {
|
|
494
|
+
return emptyPlan(startIndex, {
|
|
495
|
+
pendingMsgCount: 0,
|
|
496
|
+
totalUsed: estimateTokenCount(summary || ""),
|
|
497
|
+
historyBudget: 0,
|
|
498
|
+
triggerRatio: resolveCompressionTriggerRatio(contextWindow),
|
|
499
|
+
realUsageRatio: normalizeContextUsageRatio(realContextUsagePercent),
|
|
500
|
+
triggeredByRealUsage: false,
|
|
501
|
+
triggeredByEstimate: false,
|
|
502
|
+
triggeredByColdResume: false,
|
|
503
|
+
shouldRunActiveSummary: false,
|
|
504
|
+
emptyReason: "no-pending"
|
|
505
|
+
});
|
|
506
|
+
}
|
|
493
507
|
const summaryTokens = estimateTokenCount(summary || "");
|
|
494
508
|
const pendingTokens = pendingMsgs.reduce((sum, msg) => sum + getMessageTokenCount(msg), 0);
|
|
495
509
|
const totalUsed = summaryTokens + pendingTokens;
|
|
@@ -517,14 +531,36 @@ function planCompression(input) {
|
|
|
517
531
|
coldResume,
|
|
518
532
|
lastMsg: pendingMsgs[pendingMsgs.length - 1]
|
|
519
533
|
});
|
|
520
|
-
|
|
534
|
+
const diagnostics = {
|
|
535
|
+
pendingMsgCount: pendingMsgs.length,
|
|
536
|
+
totalUsed,
|
|
537
|
+
historyBudget,
|
|
538
|
+
triggerRatio,
|
|
539
|
+
realUsageRatio: normalizeContextUsageRatio(realContextUsagePercent),
|
|
540
|
+
triggeredByRealUsage,
|
|
541
|
+
triggeredByEstimate: normalizeContextUsageRatio(realContextUsagePercent) === void 0 && totalUsed >= historyBudget,
|
|
542
|
+
triggeredByColdResume,
|
|
543
|
+
shouldRunActiveSummary
|
|
544
|
+
};
|
|
545
|
+
if (!trigger) {
|
|
546
|
+
return emptyPlan(startIndex, {
|
|
547
|
+
...diagnostics,
|
|
548
|
+
emptyReason: "not-triggered"
|
|
549
|
+
});
|
|
550
|
+
}
|
|
521
551
|
let compressCount = calculateCompressCount(pendingMsgs, rawMessageBudget, {
|
|
522
552
|
keepTailCount: shouldRunActiveSummary || triggeredByRealUsage || triggeredByColdResume,
|
|
523
553
|
totalUsed,
|
|
524
554
|
historyBudget
|
|
525
555
|
});
|
|
526
556
|
compressCount = guardToolChainBoundary(pendingMsgs, compressCount);
|
|
527
|
-
if (compressCount < MIN_COMPRESS_COUNT)
|
|
557
|
+
if (compressCount < MIN_COMPRESS_COUNT) {
|
|
558
|
+
return emptyPlan(startIndex, {
|
|
559
|
+
...diagnostics,
|
|
560
|
+
compressCount,
|
|
561
|
+
emptyReason: "below-min-compress-count"
|
|
562
|
+
});
|
|
563
|
+
}
|
|
528
564
|
const msgsToCompress = pendingMsgs.slice(0, compressCount);
|
|
529
565
|
const msgsToKeep = pendingMsgs.slice(compressCount);
|
|
530
566
|
const newSummarizedBeforeId = msgsToCompress[msgsToCompress.length - 1].id;
|
|
@@ -534,7 +570,8 @@ function planCompression(input) {
|
|
|
534
570
|
msgsToCompress,
|
|
535
571
|
msgsToKeep,
|
|
536
572
|
newSummarizedBeforeId,
|
|
537
|
-
startIndex
|
|
573
|
+
startIndex,
|
|
574
|
+
diagnostics: { ...diagnostics, compressCount }
|
|
538
575
|
};
|
|
539
576
|
}
|
|
540
577
|
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from "./chunk-IIVGDG4I.js";
|
|
8
8
|
import {
|
|
9
9
|
getModelContextWindow
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-NEDZDG3M.js";
|
|
11
11
|
import {
|
|
12
12
|
estimateTokenCount
|
|
13
13
|
} from "./chunk-PSCNXBYA.js";
|
|
@@ -204,7 +204,7 @@ var AGENT_ORCHESTRATION_RUN_INSTRUCTIONS = `--- \u591A Agent \u7F16\u6392\uFF08\
|
|
|
204
204
|
2. \u7981\u6B62\u8F6E\u8BE2\u3001\u7981\u7A7A\u8F6C\u3001\u522B\u590D\u8FF0 status\uFF1B\u8BED\u4E49\u4EE5\u5DE5\u5177\u63CF\u8FF0\u4E3A\u51C6\u3002status \u4EC5\u7528\u4E8E\u5F02\u5E38\u8BCA\u65AD\u2014\u2014\u6000\u7591\u5361\u6B7B\u3001failed \u540E\u770B\u8BE6\u60C5/\u65E5\u5FD7\u3001\u7528\u6237\u660E\u786E\u8BE2\u95EE\u6267\u884C\u7EC6\u8282\uFF08tailLines:0 \u53EA\u770B\u6458\u8981\uFF09\uFF1B\u5B83\u4E0D\u662F stop \u524D\u7684 preflight\u3002\u5E76\u884C\uFF1A\u65E0\u6587\u4EF6\u4EA4\u96C6\u3001\u65E0\u771F\u5B9E\u6570\u636E\u4F9D\u8D56\u7684\u72EC\u7ACB\u5B50\u4EFB\u52A1\u9ED8\u8BA4\u5E76\u53D1\u6D3E\u53D1\uFF1B\u4E0D\u8981\u56E0\u5171\u7528\u540C\u4E00\u6267\u884C agent/\u901A\u9053\u800C\u81EA\u884C\u52A0\u300C\u901A\u9053\u4E32\u884C\u300D\u4FDD\u5B88\u5047\u8BBE\uFF08\u540C\u901A\u9053\u5141\u8BB8\u5E76\u53D1 fork\uFF0C\u5B9E\u4F8B\u95F4\u65E0\u4E0A\u4E0B\u6587\u5171\u4EAB\uFF09\uFF0C\u53EA\u6709\u771F\u5B9E\u6587\u4EF6/\u6570\u636E\u4F9D\u8D56\u6216 brief \u660E\u793A\u51B2\u7A81\u9762\u65F6\u624D\u4E32\u884C\u3002
|
|
205
205
|
3. \u6392\u9519\u5148\u5206\u8BCA\uFF1AagentKey \u6CA1\u7167\u6284 listAgents \u5C31\u5148\u4FEE key\uFF08\u4E0D\u7B97\u901A\u9053\u6545\u969C\uFF09\uFF1B\u62A5\u9519\u542B not found / invalid ref / Local agent config not found \u2192 \u5148 readAgent \u590D\u6838\uFF0C**\u7981\u6B62**\u636E\u6B64\u63A8\u65AD\u51ED\u8BC1\u7F3A\u5931\u6216\u901A\u9053\u5168\u6302\uFF1B\u540C\u4E00\u5DF2\u9A8C\u8BC1 key \u4ECD\u5931\u8D25\u4E14\u9519\u8BEF\u660E\u786E\u6307\u5411\u901A\u9053\uFF08429\u3001\u9274\u6743\u5931\u8D25\u3001machine offline\uFF09\u624D\u8BB0\u4E3A\u901A\u9053\u6545\u969C\u3002\u5224\u5B9A\u300C\u6D3E\u53D1\u901A\u9053\u6574\u4F53\u4E0D\u53EF\u7528\u300D\u9700 \u22652 \u4E2A\u4E0D\u540C\u5019\u9009\u5404\u81EA\u5B8C\u6210\u300C\u5DF2\u9A8C\u8BC1 key + \u4E00\u6B21\u771F\u5B9E\u6D3E\u53D1\u300D\u4E14\u5931\u8D25\uFF0C\u5019\u9009\u4E0D\u8DB3\u5C31\u5982\u5B9E\u62A5\u544A\u300C\u4EC5\u6B64\u5019\u9009\u4E14\u901A\u9053\u5931\u8D25\u300D\uFF0C\u4E0D\u5F97\u5938\u5927\u6210\u5168\u5E93\u4E0D\u53EF\u7528\u3002
|
|
206
206
|
4. \u53EA\u6709 status=failed/\u8D85\u65F6\u6216 progress \u957F\u65F6\u95F4\u65E0\u52A8\u9759\uFF08\u7591\u4F3C\u5361\u6B7B\uFF09\u624D\u62C9 tailLines:30 \u770B\u65E5\u5FD7\u3002append \u53EF\u76F4\u63A5\u8C03\u7528\u2014\u2014not found/\u5DF2\u7EC8\u6001/\u8FD0\u884C\u4E2D\u5165\u961F\u7531 executor \u81EA\u8BC1\uFF1Bstop \u53EF\u76F4\u63A5\u8C03\u7528\uFF0Cnot found/\u5DF2\u7EC8\u6001/\u8FD0\u884C\u4E2D\u7531\u63A7\u5236\u5E73\u9762\u81EA\u884C\u5904\u7406\uFF08\u5DF2\u7EC8\u6001\u539F\u6837\u8FD4\u56DE\u3001\u4E0D\u4F1A\u88AB\u8986\u76D6\uFF09\u3002`;
|
|
207
|
-
var
|
|
207
|
+
var AGENT_COLLABORATION_VALUE_AND_METHOD = `--- Agent \u7F16\u6392\u4E0E\u534F\u4F5C\uFF08\u591A Agent \u534F\u4F5C\uFF1A\u8BA1\u5212 \u2192 \u6309\u9700\u6D3E\u53D1 \u2192 \u5BA1\u67E5\uFF09 ---
|
|
208
208
|
\u4EA7\u51FA\u4F18\u5148\uFF1A\u4E0D\u4E3A\u300C\u51D1\u6570\u91CF\u300D\u6D3E\u53D1\uFF0C\u4E5F\u4E0D\u5305\u529E\u53EF\u5E76\u884C\u7684\u72EC\u7ACB\u9886\u57DF\uFF1B\u6BCF\u8F6E\u63A8\u8FDB\u5F53\u524D\u6700\u6709\u4EF7\u503C\u7684\u52A8\u4F5C\uFF0C\u62FF\u8BC1\u636E\u518D\u5224\u65AD\u3002
|
|
209
209
|
|
|
210
210
|
**\u6D3E\u53D1\u4EF7\u503C\uFF08\u5148\u5224\u65AD\u503C\u4E0D\u503C\u5F97\u6D3E\uFF0C\u518D\u9009\u4EBA\uFF09**\uFF1A
|
|
@@ -214,19 +214,16 @@ var AGENT_COLLABORATION_INSTRUCTIONS = `--- Agent \u7F16\u6392\u4E0E\u534F\u4F5C
|
|
|
214
214
|
2. **\u5E76\u884C\u6760\u6746\uFF08Parallel leverage\uFF09**\uFF1A\u4E24\u4E2A\u6216\u66F4\u591A\u4E92\u4E0D\u4F9D\u8D56\u7684\u5DE5\u4F5C\u6D41\u53EF\u4EE5\u540C\u65F6\u63A8\u8FDB\uFF0C\u7F29\u77ED\u603B\u5B8C\u6210\u65F6\u95F4\u3002
|
|
215
215
|
3. **\u8BA4\u77E5\u6760\u6746\uFF08Cognitive leverage\uFF09**\uFF1A\u72EC\u7ACB\u89C6\u89D2\u3001\u53CD\u65B9\u5BA1\u67E5\u3001\u521B\u610F\u5206\u652F\u3001\u9886\u57DF\u4E13\u5BB6\u6216\u4E0D\u540C\u6A21\u578B\u80FD\u663E\u8457\u63D0\u9AD8\u65B9\u6848\u8D28\u91CF\u3001\u53D1\u73B0\u76F2\u533A\u6216\u964D\u4F4E\u5171\u4EAB\u9519\u8BEF\u98CE\u9669\u3002\u4EA7\u54C1\u3001\u8BBE\u8BA1\u3001\u7814\u7A76\u3001\u5199\u4F5C\u3001\u6218\u7565\u548C\u590D\u6742\u51B3\u7B56\u540C\u6837\u9002\u7528\uFF0C\u4E0D\u9650\u4E8E\u4EE3\u7801\u3002
|
|
216
216
|
- **\u53CD\u7EA6\u675F**\uFF1A\u5982\u679C\u5B50 Agent \u9884\u8BA1\u53EA\u4F1A\u590D\u8FF0\u7236 Agent \u5DF2\u77E5\u4FE1\u606F\u3001\u6CA1\u6709\u72EC\u7ACB\u8BC1\u636E/\u89C6\u89D2/\u5E76\u884C\u6536\u76CA\uFF0C\u5C31\u4E0D\u8981\u6D3E\u3002\u4E0D\u8981\u628A\u534F\u8C03\u5F00\u9500\u4F2A\u88C5\u6210\u201C\u66F4\u8BA4\u771F\u201D\u3002
|
|
217
|
-
- **\u4FDD\u62A4\u7528\u6237\u6CE8\u610F\u529B**\uFF1A\u7F16\u6392\u8005\u5E94\u5148\u5728\u5185\u90E8\u5B8C\u6210\u80FD\u53EF\u9760\u5B8C\u6210\u7684\u6BD4\u8F83\u3001\u7B5B\u9009\u4E0E\u9ED8\u8BA4\u5224\u65AD\uFF1B\u53EA\u6709\u76EE\u6807\u3001\u98CE\u9669\u3001\u5BA1\u7F8E\u3001\u8D39\u7528\u3001\u6743\u9650\u3001\u4E0D\u53EF\u9006\u540E\u679C\u7B49\u771F\u6B63\u9700\u8981\u7528\u6237\u51B3\u5B9A\u7684\u4E8B\u9879\u624D\u6253\u65AD\u7528\u6237\u3002\u4E0D\u8981\u628A\u201C\u8BF7\u9009\u62E9 A/B/C\u201D\u5F53\u4F5C\u5DF2\u7ECF\u5B8C\u6210\u89C4\u5212\uFF1B\u6709\u8DB3\u591F\u4F9D\u636E\u65F6\u5148\u7ED9\u63A8\u8350\u4E0E\u7406\u7531\uFF0C\u5E76\u8BF4\u660E\u4F55\u79CD\u6761\u4EF6\u4E0B\u5E94\u6539\u9009\u3002
|
|
218
|
-
|
|
219
|
-
**\u5E73\u53F0 Agent / \u5E73\u53F0\u79EF\u5206\u6263\u8D39\u786E\u8BA4\u786C\u95F8\u95E8\uFF08\u5FC5\u987B\u5148\u786E\u8BA4\uFF0C\u540E\u8C03\u7528\uFF09**\uFF1A
|
|
217
|
+
- **\u4FDD\u62A4\u7528\u6237\u6CE8\u610F\u529B**\uFF1A\u7F16\u6392\u8005\u5E94\u5148\u5728\u5185\u90E8\u5B8C\u6210\u80FD\u53EF\u9760\u5B8C\u6210\u7684\u6BD4\u8F83\u3001\u7B5B\u9009\u4E0E\u9ED8\u8BA4\u5224\u65AD\uFF1B\u53EA\u6709\u76EE\u6807\u3001\u98CE\u9669\u3001\u5BA1\u7F8E\u3001\u8D39\u7528\u3001\u6743\u9650\u3001\u4E0D\u53EF\u9006\u540E\u679C\u7B49\u771F\u6B63\u9700\u8981\u7528\u6237\u51B3\u5B9A\u7684\u4E8B\u9879\u624D\u6253\u65AD\u7528\u6237\u3002\u4E0D\u8981\u628A\u201C\u8BF7\u9009\u62E9 A/B/C\u201D\u5F53\u4F5C\u5DF2\u7ECF\u5B8C\u6210\u89C4\u5212\uFF1B\u6709\u8DB3\u591F\u4F9D\u636E\u65F6\u5148\u7ED9\u63A8\u8350\u4E0E\u7406\u7531\uFF0C\u5E76\u8BF4\u660E\u4F55\u79CD\u6761\u4EF6\u4E0B\u5E94\u6539\u9009\u3002`;
|
|
218
|
+
var AGENT_PLATFORM_CREDITS_GATE = `**\u5E73\u53F0 Agent / \u5E73\u53F0\u79EF\u5206\u6263\u8D39\u786E\u8BA4\u786C\u95F8\u95E8\uFF08\u5FC5\u987B\u5148\u786E\u8BA4\uFF0C\u540E\u8C03\u7528\uFF09**\uFF1A
|
|
220
219
|
- \u53EA\u8981\u5019\u9009 Agent \u7684 apiSource \u4E3A platform\uFF0C\u6216\u65E0\u6CD5\u786E\u8BA4\u8C03\u7528\u662F\u5426\u6D88\u8017\u5E73\u53F0\u79EF\u5206/\u989D\u5EA6\uFF0C\u5C31\u5FC5\u987B\u628A\u5B83\u89C6\u4E3A\u53EF\u80FD\u6263\u8D39\u7684\u9AD8\u6210\u672C\u8C03\u7528\u3002
|
|
221
220
|
- **\u4EC5\u544A\u77E5\u7528\u6237\u201C\u4F1A\u6D88\u8017\u5E73\u53F0\u79EF\u5206\u201D\u4E0D\u7B49\u4E8E\u83B7\u5F97\u6388\u6743\u3002** \u8C03\u7528 startAgentRun \u524D\uFF0C\u5FC5\u987B\u5148\u5411\u7528\u6237\u8BF4\u660E\uFF1A\u539F\u4F18\u5148\u901A\u9053\u4E3A\u4F55\u4E0D\u53EF\u7528\u3001\u5019\u9009\u5E73\u53F0 Agent\u3001\u9884\u8BA1\u6263\u8D39/\u79EF\u5206\u5F71\u54CD\uFF0C\u5E76\u505C\u4E0B\u6765\u7B49\u5F85\u7528\u6237\u5F53\u6B21\u660E\u786E\u80AF\u5B9A\u6388\u6743\u3002
|
|
222
221
|
- \u7528\u6237\u8BF4\u201C\u7EE7\u7EED\u201D\u201C\u6309\u8BA1\u5212\u201D\u201C\u4F60\u5904\u7406\u201D\u201C\u53EF\u4EE5\u201D\u7B49\uFF0C\u9ED8\u8BA4\u53EA\u8868\u793A\u7EE7\u7EED\u4EFB\u52A1\uFF0C\u4E0D\u8868\u793A\u540C\u610F\u65B0\u589E\u8D39\u7528\u6216\u5E73\u53F0\u79EF\u5206\u6263\u9664\uFF1B\u5FC5\u987B\u660E\u786E\u5305\u542B\u201C\u540C\u610F\u4F7F\u7528\u5E73\u53F0 Agent/\u63A5\u53D7\u6263\u5E73\u53F0\u79EF\u5206/\u540C\u610F\u8FD9\u6B21\u6263\u8D39\u201D\u7B49\u610F\u601D\uFF0C\u624D\u80FD\u89C6\u4E3A\u6388\u6743\u3002
|
|
223
222
|
- \u6CA1\u6709\u660E\u786E\u6388\u6743\u65F6\uFF0C\u7981\u6B62\u8C03\u7528\u5E73\u53F0 Agent\uFF0C\u7981\u6B62\u4EE5\u5F02\u6B65\u3001\u540C\u6B65\u3001\u5E76\u884C\u3001\u81EA\u52A8 fallback\u3001\u6362\u53E6\u4E00\u4E2A\u5E73\u53F0 Agent \u6216\u91CD\u8BD5\u7684\u65B9\u5F0F\u7ED5\u8FC7\u786E\u8BA4\u3002
|
|
224
223
|
- \u7528\u6237\u62D2\u7EDD\u5E73\u53F0\u6263\u8D39\u540E\uFF0C\u505C\u6B62\u6240\u6709\u5E73\u53F0 Agent \u5C1D\u8BD5\uFF1B\u53EA\u80FD\u7B49\u5F85\u79C1\u6709 Agent \u6062\u590D\u3001\u4F7F\u7528\u53EF\u7528\u7684\u975E\u5E73\u53F0 Agent\uFF0C\u6216\u518D\u6B21\u5411\u7528\u6237\u8BF4\u660E\u5E76\u91CD\u65B0\u8BF7\u6C42\u660E\u786E\u6388\u6743\u3002
|
|
225
|
-
- \u6388\u6743\u662F\u4E00\u6B21\u6027\u7684\uFF0C\u4EC5\u8986\u76D6\u7528\u6237\u660E\u786E\u6279\u51C6\u7684 Agent\u3001\u5B50\u4EFB\u52A1\u548C\u672C\u6B21\u8C03\u7528\uFF0C\u4E0D\u5F97\u6269\u5C55\u5230\u540E\u7EED review\u3001\u540E\u7EED\u7EC4\u4EF6\u6216\u5176\u4ED6 Agent\u3002
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
**\u5206\u6863\u6807\u51C6\uFF08\u4E24\u8D26\u5224\u636E\uFF1A\u4E0A\u4E0B\u6587\u8D26 / \u5E76\u884C\u8D26\uFF1B\u6A21\u578B\u6210\u672C\u4E0D\u6784\u6210\u6D3E\u53D1\u7406\u7531\uFF09**\uFF1A
|
|
224
|
+
- \u6388\u6743\u662F\u4E00\u6B21\u6027\u7684\uFF0C\u4EC5\u8986\u76D6\u7528\u6237\u660E\u786E\u6279\u51C6\u7684 Agent\u3001\u5B50\u4EFB\u52A1\u548C\u672C\u6B21\u8C03\u7528\uFF0C\u4E0D\u5F97\u6269\u5C55\u5230\u540E\u7EED review\u3001\u540E\u7EED\u7EC4\u4EF6\u6216\u5176\u4ED6 Agent\u3002`;
|
|
225
|
+
var AGENT_DISPATCH_PRECHECK = `**\u6D3E\u53D1\u524D\u81EA\u68C0**\uFF1A\u6BCF\u6B21\u8C03\u7528 startAgentRun \u524D\uFF0C\u5148\u6838\u5BF9 agentKey \u7684 apiSource\u3001\u6536\u85CF/\u79C1\u6709\u72B6\u6001\u3001\u5360\u7528\u72B6\u6001\uFF08\u4EC5\u5F53\u5DE5\u5177/\u901A\u9053\u660E\u786E\u8FD4\u56DE\u8BE5\u5019\u9009\u4E0D\u53EF\u7528\uFF0C\u6216\u9879\u76EE\u660E\u786E\u89C4\u5B9A\u5B58\u5728\u540C\u4E00 Agent \u7684\u8D44\u6E90\u9501\u65F6\u6210\u7ACB\uFF09\u548C\u5F53\u524D\u6388\u6743\uFF1B\u65E0\u6CD5\u786E\u8BA4\u6263\u8D39\u72B6\u6001\u65F6\u6309\u53EF\u80FD\u6263\u8D39\u5904\u7406\uFF0C\u5148\u8BE2\u95EE\uFF0C\u4E0D\u5F97\u731C\u6D4B\u3002`;
|
|
226
|
+
var AGENT_COLLABORATION_FULL_PROTOCOL = `**\u5206\u6863\u6807\u51C6\uFF08\u4E24\u8D26\u5224\u636E\uFF1A\u4E0A\u4E0B\u6587\u8D26 / \u5E76\u884C\u8D26\uFF1B\u6A21\u578B\u6210\u672C\u4E0D\u6784\u6210\u6D3E\u53D1\u7406\u7531\uFF09**\uFF1A
|
|
230
227
|
- **\u81EA\u5DF1\u505A**\uFF1A\u7EAF\u95EE\u7B54/\u54A8\u8BE2/\u95F2\u804A\u9ED8\u8BA4\u76F4\u63A5\u56DE\u7B54\u2014\u2014\u4F46\u82E5\u95EE\u9898\u672C\u8EAB\u662F\u5F00\u653E\u5F0F\u521B\u4F5C\u3001\u590D\u6742\u53D6\u820D\u3001\u957F\u671F\u4EA7\u54C1\u8BED\u4E49\u3001\u91CD\u5927\u51B3\u7B56\u6216\u660E\u786E\u5B58\u5728\u591A\u89C6\u89D2\u4EF7\u503C\uFF0C\u8BA4\u77E5\u6760\u6746\u547D\u4E2D\u5373\u6309\u53D1\u6563/\u4F1A\u5546\u6D3E\u53D1\uFF1B\u53EA\u6709\u786E\u5B9E\u6CA1\u6709\u65B0\u589E\u89C6\u89D2/\u8BC1\u636E/\u5E76\u884C\u6536\u76CA\u65F6\u624D\u76F4\u63A5\u56DE\u7B54\u3002\u4E24\u8D26\u5747\u4E0D\u547D\u4E2D\u7684\u4E2D\u5C0F\u5B9E\u73B0\uFF08\u5178\u578B \u22643 \u4E2A\u6587\u4EF6\u30011~2 \u6B21\u9A8C\u8BC1\u5F80\u8FD4\u3001\u65E0\u5927\u8F93\u51FA\u3001\u65E0 \u22652 \u4E2A\u72EC\u7ACB\u9886\u57DF\uFF09\u76F4\u63A5\u5B8C\u6210\uFF0C\u4E0D\u58F0\u660E\u3001\u4E0D\u6D3E\u53D1\u3002
|
|
231
228
|
- **\u4E0A\u4E0B\u6587\u8D26\u547D\u4E2D \u2192 \u6D3E\u53D1**\uFF1A\u9A8C\u8BC1\u5FAA\u73AF \u22653 \u6B21\u300C\u8DD1\u547D\u4EE4\u2192\u770B\u62A5\u9519\u2192\u6539\u300D\uFF0C\u6216\u5355\u6B65\u5927\u8F93\u51FA\uFF08\u5168\u91CF typecheck \u62A5\u9519\u3001\u957F\u6D4B\u8BD5\u6808\u3001\u5927 diff\u3001\u5927\u6587\u4EF6\u8BFB\u53D6\uFF09\u2014\u2014\u91CD\u590D\u9A8C\u8BC1\u5FAA\u73AF\u3001\u5927\u8F93\u51FA\u5904\u7406\u4E0E\u673A\u68B0 inventory/\u8BC1\u636E\u5B9A\u4F4D\u4EA4\u7ED9\u5B50 Agent\uFF1B\u7236 Agent \u63A5\u6536\u7ED3\u6784\u5316\u8BC1\u636E\uFF0C\u5E76\u4EB2\u81EA\u590D\u6838\u6240\u6709\u5F71\u54CD\u5173\u952E\u51B3\u7B56\u7684\u539F\u59CB\u8BC1\u636E\u3002
|
|
232
229
|
- **\u5173\u952E\u51B3\u7B56\u4E0A\u4E0B\u6587\u4E0D\u5916\u5305**\uFF1A\u4E0A\u4E0B\u6587\u8D26\u53EA\u51B3\u5B9A\u91CD\u590D\u9A8C\u8BC1\u5FAA\u73AF\u3001\u5927\u8F93\u51FA\u5904\u7406\u3001\u673A\u68B0 inventory/\u8BC1\u636E\u5B9A\u4F4D\u7684\u6D3E\u53D1\uFF1B\u6D89\u53CA\u67B6\u6784\u3001\u8BA1\u8D39\u3001\u5B89\u5168\u3001\u6743\u9650\u3001\u6570\u636E\u5B8C\u6574\u6027\u3001\u4E0D\u53EF\u9006\u8FC1\u79FB\u3001\u957F\u671F\u4EA7\u54C1\u8BED\u4E49\u65F6\uFF0C\u7F16\u6392\u8005\u5FC5\u987B\u4EB2\u81EA\u8BFB\u53D6\u8DB3\u4EE5\u51B3\u7B56\u7684\u4E00\u7EA7\u4EE3\u7801\u3001\u6B63\u5F0F\u771F\u503C\u3001\u539F\u59CB\u65E5\u5FD7\u548C\u771F\u5B9E\u6570\u636E\u8BC1\u636E\uFF1B\u5B50 Agent \u53EF\u505A\u5B9A\u4F4D\u3001\u673A\u68B0\u6536\u96C6\u3001\u72EC\u7ACB\u590D\u6838\u4E0E\u53CD\u65B9\u5BA1\u67E5\uFF0C\u4F46\u5176\u6458\u8981\u4E0D\u80FD\u66FF\u4EE3\u5173\u952E\u4E0A\u4E0B\u6587\u4EB2\u8BFB\u3002
|
|
@@ -257,16 +254,32 @@ ${AGENT_SELECTION_PRIORITY_INSTRUCTIONS}
|
|
|
257
254
|
|
|
258
255
|
**\u62C6\u5206\u4E0E brief**\uFF1A\u6309\u72EC\u7ACB\u9886\u57DF\u62C6\uFF0C\u4E0D\u6309\u6587\u4EF6\u6570\u91CF\u62C6\uFF1B\u5171\u4EAB\u63A5\u53E3/\u5F3A\u987A\u5E8F\u4F9D\u8D56\u5148\u56FA\u5316\u5951\u7EA6\u518D\u6D3E\u53D1\uFF0C\u52FF\u8BA9\u591A\u65B9\u5404\u81EA\u731C\u540C\u4E00\u63A5\u53E3\u3002\u5B50\u4EFB\u52A1\u81EA\u5305\u542B\u3001\u53EA\u4F20\u5B8C\u6210\u8BE5\u5B50\u4EFB\u52A1\u6240\u9700\u7684\u6700\u5C0F\u5DE5\u4F5C\u96C6\uFF08\u4E0A\u4E0B\u6587\u6700\u5C0F\u5316\uFF09\uFF0C\u4E25\u7981\u8F6C\u53D1\u65E0\u5173\u5386\u53F2\u4E0E\u65E5\u5FD7\uFF1B\u7236 Agent \u4FDD\u7559\u76EE\u6807\u3001\u5951\u7EA6\u3001\u96C6\u6210\u3001\u6700\u7EC8\u9A8C\u8BC1\u4E0E\u7528\u6237\u6C9F\u901A\u3002\u6D4B\u8BD5\u7C7B DoD \u5FC5\u987B\u9489\u6B7B\u57FA\u7EBF\u7CBE\u786E\u6570\u5B57\uFF08\u6D3E\u53D1\u524D\u4EB2\u81EA\u8DD1\u6D4B\u8BD5\u8BB0\u4E0B pass/fail \u4E0E\u65E2\u6709\u5931\u8D25\u5F52\u5C5E\uFF09\uFF0C\u9A8C\u6536\u4EB2\u81EA\u590D\u8DD1\u5BF9\u7167\u2014\u2014\u8D85\u57FA\u7EBF\u5373\u6267\u884C\u8005\u5F15\u5165\u56DE\u5F52\uFF08flaky \u53E6\u884C\u7504\u522B\uFF09\uFF1B\u65E0\u6570\u5B57\u7684\u300C\u6D4B\u8BD5\u901A\u8FC7\u300D\u6309\u672A\u9A8C\u8BC1\u5904\u7406\u3002
|
|
259
256
|
|
|
260
|
-
**Tool call \u53C2\u6570\u4F53\u91CF\u7EAA\u5F8B**\uFF1A\u4EFB\u4F55 tool_call\uFF08\u5C24\u5176 startAgentRun \u7684 task/brief \u4E0E input\uFF09\u7981\u6B62\u5185\u5D4C\u5927\u6BB5\u539F\u6587\u2014\u2014diff\u3001\u65E5\u5FD7\u3001\u957F\u6587\u6863\u3001\u6D4B\u8BD5\u8F93\u51FA\u4E00\u5F8B\u53EA\u4F20\u8DEF\u5F84\uFF08worktree + \u6587\u4EF6\u6E05\u5355\uFF09\uFF0C\u7531\u6267\u884C\u65B9\u81EA\u5DF1 git diff / \u8BFB\u6587\u4EF6\u83B7\u53D6\uFF08\u5185\u5BB9\u8FD8\u66F4\u65B0\u9C9C\uFF09\u3002\u5355\u6B21 arguments \u63A7\u5236\u5728 ~5k \u5B57\u7B26\u5185\uFF1A\u8FC7\u957F\u4F1A\u88AB\u4E0A\u6E38\u6D41\u5F0F\u622A\u65AD\u6210\u975E\u6CD5 JSON\uFF0C\u89E6\u53D1 tool-error \u540E\u6574\u8F6E\u91CD\u53D1\u3002
|
|
261
|
-
|
|
262
|
-
**commit \u524D\u786C\u95E8\uFF08\u9636\u6BB5\u5212\u5206\u4E0E\u72EC\u7ACB\u5BA1\u67E5\uFF09**\uFF1A
|
|
257
|
+
**Tool call \u53C2\u6570\u4F53\u91CF\u7EAA\u5F8B**\uFF1A\u4EFB\u4F55 tool_call\uFF08\u5C24\u5176 startAgentRun \u7684 task/brief \u4E0E input\uFF09\u7981\u6B62\u5185\u5D4C\u5927\u6BB5\u539F\u6587\u2014\u2014diff\u3001\u65E5\u5FD7\u3001\u957F\u6587\u6863\u3001\u6D4B\u8BD5\u8F93\u51FA\u4E00\u5F8B\u53EA\u4F20\u8DEF\u5F84\uFF08worktree + \u6587\u4EF6\u6E05\u5355\uFF09\uFF0C\u7531\u6267\u884C\u65B9\u81EA\u5DF1 git diff / \u8BFB\u6587\u4EF6\u83B7\u53D6\uFF08\u5185\u5BB9\u8FD8\u66F4\u65B0\u9C9C\uFF09\u3002\u5355\u6B21 arguments \u63A7\u5236\u5728 ~5k \u5B57\u7B26\u5185\uFF1A\u8FC7\u957F\u4F1A\u88AB\u4E0A\u6E38\u6D41\u5F0F\u622A\u65AD\u6210\u975E\u6CD5 JSON\uFF0C\u89E6\u53D1 tool-error \u540E\u6574\u8F6E\u91CD\u53D1\u3002`;
|
|
258
|
+
var AGENT_COMMIT_REVIEW_GATE = `**commit \u524D\u786C\u95E8\uFF08\u9636\u6BB5\u5212\u5206\u4E0E\u72EC\u7ACB\u5BA1\u67E5\uFF09**\uFF1A
|
|
263
259
|
- **\u9636\u6BB5\u533A\u5206**\uFF1A\u4E25\u683C\u533A\u5206\u300C\u5B9E\u73B0/\u6784\u5EFA/\u5B89\u88C5/\u7528\u6237\u6D4B\u8BD5/\u6839\u636E\u53CD\u9988\u8FED\u4EE3\u300D\u4E0E\u300C\u51C6\u5907\u63D0\u4EA4/\u5408\u5E76\u300D\u9636\u6BB5\u3002UI/\u524D\u7AEF\u7B49\u9700\u7528\u6237\u9A8C\u6536\u7684\u529F\u80FD\u5728\u5B9E\u73B0\u9636\u6BB5**\u4E0D\u5F97\u89E6\u53D1\u6216\u7B49\u5F85\u6700\u7EC8\u72EC\u7ACB review**\uFF0C\u5148\u4EA4\u4ED8\u53EF\u6D4B\u8BD5\u4EA7\u7269\uFF0C\u7B49\u5F85\u7528\u6237\u6D4B\u8BD5\u4E0E\u53CD\u9988\uFF1B\u5B89\u5168\u5173\u952E\u53D8\u66F4\u7684\u5FC5\u8981\u5BA1\u67E5\u4E0D\u53D7\u5F71\u54CD\uFF1B\u72EC\u7ACB\u7684\u53EA\u8BFB\u5BA1\u8BA1\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u7684\u63D0\u524D review \u53EF\u63D0\u524D\u8FDB\u884C\uFF0C\u4F46\u4E0D\u5F97\u963B\u585E\u7528\u6237\u6D4B\u8BD5\u6216\u4F5C\u4E3A\u63D0\u524D\u7684\u63D0\u4EA4\u95E8\u3002
|
|
264
260
|
- **\u6700\u7EC8\u5BA1\u67E5\u65F6\u673A**\uFF1A\u53EA\u6709\u5F53\u7528\u6237\u660E\u786E\u786E\u8BA4\u51C6\u5907\u63D0\u4EA4/\u5408\u5E76\u65F6\uFF0C\u624D\u6D3E\u53D1\u6700\u7EC8 review\u3002\u9664 \u22642 \u6B65\u96F6\u903B\u8F91\u98CE\u9669\u7684\u673A\u68B0\u6539\u52A8\u5916\uFF0C\u6240\u6709\u4EE3\u7801\u53D8\u66F4 commit \u524D\u5FC5\u987B\u5148\u6D3E\u4E0E\u6267\u884C\u8005\u4E0D\u540C\u5B9E\u4F8B\uFF08\u4E0A\u4E0B\u6587\u9694\u79BB\u5373\u53EF\uFF09\u7684 reviewer \u5BA1\u5DE5\u4F5C\u533A diff\uFF0Creviewer \u4E0D\u53EF\u662F\u672C\u6B21\u6539\u52A8\u7684\u4F5C\u8005\uFF1B\u65E0 review \u4E0D commit\u3002\u63D0\u4EA4\u524D review \u5FAA\u73AF\uFF1A\u7528\u6237\u786E\u8BA4\u51C6\u5907\u63D0\u4EA4 \u2192 startAgentRun \u6D3E reviewer \u5BA1 diff \u2192 \u4FEE finding \u2192 \u590D\u5BA1\u76F4\u5230 APPROVE\uFF08\u65E0 CRITICAL/HIGH\uFF09\u624D\u63D0\u4EA4\uFF1BBLOCK \u5FC5\u4FEE\u3001WARNING \u62A5\u7528\u6237\u3002
|
|
265
|
-
- **review \u8BC1\u636E\u786C\u95E8**\uFF1A\u4EC5\u5F53 reviewer \u8FD4\u56DE\u53EF\u8BFB\u7684\u6700\u7EC8\u6587\u672C\u4E14\u660E\u786E\u542B APPROVE\u3001\u65E0 CRITICAL/HIGH \u624D\u7B97\u901A\u8FC7\uFF1Bdone\u3001exit 0\u3001\u7A7A dialog\u3001messagesCount=0\u3001agentReply=null\u3001\u8D85\u65F6\u5747\u89C6\u4E3A\u672A\u5BA1\u67E5\uFF0C\u4E25\u7981\u63D0\u4EA4\u3002review context contract\uFF1A\u6D3E reviewer \u524D\u6309\u6539\u52A8\u8303\u56F4\u52A0\u8F7D\u8BE5\u4ED3\u5E93\u7684\u9879\u76EE\u6307\u4EE4\uFF08AGENTS.md \u7C7B\uFF09\u3001\u5DE5\u4F5C\u6D41/\u8BA1\u5212\u6587\u6863\u3001\u547D\u4E2D\u7684 skill \u4E0E references\uFF0C\u4EE5\u53CA touched files \u7684\u5B8C\u6574 diff\uFF0Cbrief \u91CC\u5217\u51FA\u5B9E\u9645\u52A0\u8F7D\u7684 context\uFF1B\u5177\u4F53\u6E05\u5355\u4EE5\u8BE5\u4ED3\u5E93\u81EA\u5DF1\u7684 review \u89C4\u8303\u4E3A\u51C6\uFF08bun-nolo \u89C1 nolo-plan\u300C\u5408\u5E76\u95E8\u300D\u8282\uFF09\u3002\u5BA1\u67E5\u6E05\u5355\uFF1A\u53EF\u8BFB\u6027/\u53EF\u641C\u7D22\u6027\u3001\u53EF\u7EF4\u62A4\u6027/\u5220\u9664\u6210\u672C\u3001\u53EF\u7EC4\u5408\u6027/\u590D\u7528\u3001\u91CD\u590D\u5B9E\u73B0\u3001\u53EF\u5220\u9664\u4EE3\u7801\u3002\u82E5\u5904\u4E8E\u5355 Agent \u72EC\u5360\u73AF\u5883\u3001\u5176\u4ED6 agent \u4E0D\u53EF\u8FBE\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u76F4\u63A5\u63D0\u4EA4\uFF0C\u5141\u8BB8\u5E26\u539F\u56E0\u8DF3\u8FC7\uFF08commit \u6CE8\u660E [no-review: \u539F\u56E0]\uFF09\u3002\u6D89\u53CA\u4ED3\u5E93\u6587\u4EF6\u5199\u5165\u5FC5\u987B\u7528\u72EC\u7ACB worktree\u3002\u4ED3\u5E93\u7EA7 plan / review / worktree \u7EAA\u5F8B\u4EE5 AGENTS.md \u4E3A\u51C6\u3002
|
|
266
|
-
|
|
267
|
-
--- \u786E\u8BA4\u8FB9\u754C ---
|
|
261
|
+
- **review \u8BC1\u636E\u786C\u95E8**\uFF1A\u4EC5\u5F53 reviewer \u8FD4\u56DE\u53EF\u8BFB\u7684\u6700\u7EC8\u6587\u672C\u4E14\u660E\u786E\u542B APPROVE\u3001\u65E0 CRITICAL/HIGH \u624D\u7B97\u901A\u8FC7\uFF1Bdone\u3001exit 0\u3001\u7A7A dialog\u3001messagesCount=0\u3001agentReply=null\u3001\u8D85\u65F6\u5747\u89C6\u4E3A\u672A\u5BA1\u67E5\uFF0C\u4E25\u7981\u63D0\u4EA4\u3002review context contract\uFF1A\u6D3E reviewer \u524D\u6309\u6539\u52A8\u8303\u56F4\u52A0\u8F7D\u8BE5\u4ED3\u5E93\u7684\u9879\u76EE\u6307\u4EE4\uFF08AGENTS.md \u7C7B\uFF09\u3001\u5DE5\u4F5C\u6D41/\u8BA1\u5212\u6587\u6863\u3001\u547D\u4E2D\u7684 skill \u4E0E references\uFF0C\u4EE5\u53CA touched files \u7684\u5B8C\u6574 diff\uFF0Cbrief \u91CC\u5217\u51FA\u5B9E\u9645\u52A0\u8F7D\u7684 context\uFF1B\u5177\u4F53\u6E05\u5355\u4EE5\u8BE5\u4ED3\u5E93\u81EA\u5DF1\u7684 review \u89C4\u8303\u4E3A\u51C6\uFF08bun-nolo \u89C1 nolo-plan\u300C\u5408\u5E76\u95E8\u300D\u8282\uFF09\u3002\u5BA1\u67E5\u6E05\u5355\uFF1A\u53EF\u8BFB\u6027/\u53EF\u641C\u7D22\u6027\u3001\u53EF\u7EF4\u62A4\u6027/\u5220\u9664\u6210\u672C\u3001\u53EF\u7EC4\u5408\u6027/\u590D\u7528\u3001\u91CD\u590D\u5B9E\u73B0\u3001\u53EF\u5220\u9664\u4EE3\u7801\u3002\u82E5\u5904\u4E8E\u5355 Agent \u72EC\u5360\u73AF\u5883\u3001\u5176\u4ED6 agent \u4E0D\u53EF\u8FBE\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u76F4\u63A5\u63D0\u4EA4\uFF0C\u5141\u8BB8\u5E26\u539F\u56E0\u8DF3\u8FC7\uFF08commit \u6CE8\u660E [no-review: \u539F\u56E0]\uFF09\u3002\u6D89\u53CA\u4ED3\u5E93\u6587\u4EF6\u5199\u5165\u5FC5\u987B\u7528\u72EC\u7ACB worktree\u3002\u4ED3\u5E93\u7EA7 plan / review / worktree \u7EAA\u5F8B\u4EE5 AGENTS.md \u4E3A\u51C6\u3002`;
|
|
262
|
+
var AGENT_CONFIRM_BOUNDARY = `--- \u786E\u8BA4\u8FB9\u754C ---
|
|
268
263
|
- \u6D89\u53CA\u4E0D\u53EF\u9006\u64CD\u4F5C\uFF08\u4FEE\u6539\u6587\u4EF6\u3001\u5220\u9664\u6570\u636E\u3001\u53D1\u9001\u6D88\u606F\u3001\u751F\u6210\u6B63\u5F0F\u6587\u4EF6\u3001\u6267\u884C\u4EA4\u6613\uFF09\u6216\u9AD8\u6210\u672C\u52A8\u4F5C\uFF08\u5927\u89C4\u6A21\u91CD\u6784/\u957F\u65F6\u8FD0\u884C/\u5927\u91CF token\uFF09\u65F6\uFF0C\u4F18\u5148\u9884\u89C8\u6216\u5411\u7528\u6237\u786E\u8BA4\uFF1B\u5DE5\u5177\u8FD4\u56DE"\u9884\u89C8/\u5F85\u786E\u8BA4"\u65F6\u6682\u505C\uFF0C\u7B49\u660E\u786E\u786E\u8BA4\u518D\u7EE7\u7EED\uFF0C\u672A\u786E\u8BA4\u524D\u4E0D\u8FDE\u7EED\u53D1\u591A\u6B21\u7834\u574F\u6027\u4FEE\u6539\u3002
|
|
269
264
|
- \u6536\u5230\u300C\u5B50\u5BF9\u8BDD\u7981\u6B62\u518D\u521B\u5EFA\u5B59\u5BF9\u8BDD\u300D\uFF1D\u4F60\u5DF2\u662F\u5B50\u5BF9\u8BDD\uFF0C\u7981\u6B62\u518D\u6D3E\u53D1\uFF0C\u628A\u7ED3\u679C\u8FD4\u56DE\u7236\u5BF9\u8BDD\u5373\u53EF\u3002`;
|
|
265
|
+
var AGENT_COLLABORATION_INSTRUCTIONS = [
|
|
266
|
+
AGENT_COLLABORATION_VALUE_AND_METHOD,
|
|
267
|
+
AGENT_PLATFORM_CREDITS_GATE,
|
|
268
|
+
AGENT_DISPATCH_PRECHECK,
|
|
269
|
+
AGENT_COLLABORATION_FULL_PROTOCOL,
|
|
270
|
+
AGENT_COMMIT_REVIEW_GATE,
|
|
271
|
+
AGENT_CONFIRM_BOUNDARY
|
|
272
|
+
].join("\n\n");
|
|
273
|
+
var AGENT_COLLABORATION_MIN_INSTRUCTIONS = [
|
|
274
|
+
`--- \u591A Agent \u6D3E\u53D1\uFF08\u6700\u5C0F\u534F\u8BAE\uFF09 ---
|
|
275
|
+
- startAgentRun \u542F\u52A8\u5B50 Agent\uFF1AagentKey \u5FC5\u987B\u539F\u6837\u7167\u6284 listAgents \u8FD4\u56DE\u7684 agentKey \u5B57\u6BB5\uFF08\u4E0D\u62FC\u63A5/\u4E0D\u63A8\u65AD/\u4E0D\u6362\u683C\u5F0F/\u4E0D\u4F20 name\uFF09\uFF1Bwait:false\uFF08\u9ED8\u8BA4\uFF09\u5F02\u6B65\u8FD4\u56DE runId\uFF0C\u6D3E\u53D1\u540E\u7ACB\u5373\u6536\u5C3E\u7B49\u7EC8\u6001\u901A\u77E5\uFF0C\u7981\u6B62\u8F6E\u8BE2\uFF1B\u5E76\u884C\u6D3E\u53D1\u7528\u540C\u4E00 batchId \u5F52\u7EC4\u3002
|
|
276
|
+
- \u5E76\u884C\u6247\u51FA\u53EA\u8DE8\u4E0D\u540C credentialGroup\uFF1A\u540C\u4E00\u51ED\u8BC1\u7981\u6B62\u5E76\u53D1\u6247\u51FA\uFF1Bcredentialed:false\uFF08\u51ED\u8BC1\u5F52\u5C5E\u672A\u77E5\uFF09\u7684 agent \u4E0D\u662F\u300C\u72EC\u7ACB\u51ED\u8BC1\u300D\uFF0C\u540C\u6279\u5E76\u53D1\u4F1A\u88AB\u5B88\u536B\u62D2\u7EDD\uFF0C\u9700\u4E32\u884C\u6D3E\u53D1\u6216\u663E\u5F0F allowUnknownCredential \u786E\u8BA4\u98CE\u9669\u3002
|
|
277
|
+
- \u672C\u8F6E\u672A\u6CE8\u5165\u5B8C\u6574\u7F16\u6392\u534F\u8BAE\uFF08\u65E0\u6D3E\u53D1\u610F\u56FE\uFF09\uFF1B\u5982\u786E\u9700\u591A Agent \u7F16\u6392\uFF0C\u6309\u672C\u6700\u5C0F\u534F\u8BAE\u4E0E startAgentRun \u5DE5\u5177\u63CF\u8FF0\u6267\u884C\uFF0C\u5B89\u5168\u786C\u95E8\u89C1\u4E0B\u3002`,
|
|
278
|
+
AGENT_PLATFORM_CREDITS_GATE,
|
|
279
|
+
AGENT_DISPATCH_PRECHECK,
|
|
280
|
+
AGENT_COMMIT_REVIEW_GATE,
|
|
281
|
+
AGENT_CONFIRM_BOUNDARY
|
|
282
|
+
].join("\n\n");
|
|
270
283
|
var WEBPAGE_ACCESS_INSTRUCTIONS = `--- \u7F51\u9875\u8BBF\u95EE\u80FD\u529B (Web Access) ---
|
|
271
284
|
\u83B7\u53D6\u5916\u90E8\u4FE1\u606F\u7531\u7B80\u5165\u7E41\uFF1A
|
|
272
285
|
0. \u7528\u6237\u5DF2\u7ED9\u660E\u786E URL \u2192 \u5148\u76F4\u63A5 fetch \u8FD9\u4E9B URL\uFF0C\u4E0D\u8981\u5148\u641C\u7D22\u6216\u731C\u5907\u7528\u7F51\u5740\uFF08\u6700\u9AD8\u4F18\u5148\u7EA7\u7684\u7F51\u9875\u771F\u503C\uFF09\uFF1B\u4EC5\u5F53\u6293\u53D6\u5931\u8D25\u3001\u7F3A\u5B57\u6BB5\u6216\u5185\u5BB9\u4E0D\u5339\u914D\u624D\u989D\u5916\u641C\u7D22\uFF0C\u5E76\u8BF4\u660E\u964D\u7EA7\u539F\u56E0\u3002
|
|
@@ -344,7 +357,9 @@ var TOOL_GUIDED_SECTIONS = [
|
|
|
344
357
|
"startAgentRun",
|
|
345
358
|
"controlAgentRun"
|
|
346
359
|
],
|
|
347
|
-
|
|
360
|
+
// 按需注入:完整编排协议仅在有派发意图时给;无派发意图给最小协议
|
|
361
|
+
// (派发机制 + 安全硬门常在:平台积分授权门 / commit review 硬门)。
|
|
362
|
+
build: (_tools, opts) => opts?.dispatchIntent === true ? AGENT_COLLABORATION_INSTRUCTIONS : AGENT_COLLABORATION_MIN_INSTRUCTIONS
|
|
348
363
|
},
|
|
349
364
|
{ id: "menuUsage", triggerTools: ["ask_user"], build: () => MENU_USAGE_INSTRUCTIONS },
|
|
350
365
|
{
|
|
@@ -372,12 +387,12 @@ var TOOL_GUIDED_SECTION_ORDER = [
|
|
|
372
387
|
"memoryCapture",
|
|
373
388
|
"agentConfigMaintenance"
|
|
374
389
|
];
|
|
375
|
-
function resolveToolGuidedSections(agentTools) {
|
|
390
|
+
function resolveToolGuidedSections(agentTools, opts) {
|
|
376
391
|
const out = {};
|
|
377
392
|
for (const section of TOOL_GUIDED_SECTIONS) {
|
|
378
393
|
const triggered = section.triggerAnyTool ? agentTools.length > 0 : section.triggerTools.some((t) => agentTools.includes(t));
|
|
379
394
|
if (triggered) {
|
|
380
|
-
out[section.id] = section.build(agentTools);
|
|
395
|
+
out[section.id] = section.build(agentTools, opts);
|
|
381
396
|
} else {
|
|
382
397
|
out[section.id] = "";
|
|
383
398
|
}
|
|
@@ -385,6 +400,49 @@ function resolveToolGuidedSections(agentTools) {
|
|
|
385
400
|
return out;
|
|
386
401
|
}
|
|
387
402
|
|
|
403
|
+
// packages/ai/agent/dispatchIntent.ts
|
|
404
|
+
var DISPATCH_INTENT_PATTERN = /(派发|派单|派个|派一|派两|派几|派人|子任务|子\s*[aA]gent|多\s*[aA]gent|多个\s*[aA]gent|并行处理|并行派发|并发派发|并行执行|并发执行|分头|分工|同时处理|后台跑|后台执行|编排|会商|发散|代码审查|独立\s*review|派.{0,4}review|dispatch|delegat|sub[\s-]?agent|sub[\s-]?task|fan[\s-]?out|orchestrat|\bbatch\b|in parallel|concurrent|paralleliz|background run|review.{0,20}(diff|code|代码))/i;
|
|
405
|
+
var DISPATCH_TOOL_NAMES = /* @__PURE__ */ new Set(["startAgentRun", "controlAgentRun"]);
|
|
406
|
+
function detectDispatchIntent(text) {
|
|
407
|
+
if (typeof text !== "string" || !text.trim()) return false;
|
|
408
|
+
return DISPATCH_INTENT_PATTERN.test(text);
|
|
409
|
+
}
|
|
410
|
+
function messageText(content) {
|
|
411
|
+
if (typeof content === "string") return content;
|
|
412
|
+
if (Array.isArray(content)) {
|
|
413
|
+
return content.map((part) => typeof part?.text === "string" ? part.text : "").join("\n");
|
|
414
|
+
}
|
|
415
|
+
return "";
|
|
416
|
+
}
|
|
417
|
+
function toolCallName(call) {
|
|
418
|
+
const nested = call?.function?.name;
|
|
419
|
+
if (typeof nested === "string" && nested) return nested;
|
|
420
|
+
const flat = call?.name;
|
|
421
|
+
if (typeof flat === "string" && flat) return flat;
|
|
422
|
+
return "";
|
|
423
|
+
}
|
|
424
|
+
function hasDispatchToolCall(msg) {
|
|
425
|
+
const calls = Array.isArray(msg.tool_calls) ? msg.tool_calls : Array.isArray(msg.toolCalls) ? msg.toolCalls : [];
|
|
426
|
+
if (calls.some((call) => DISPATCH_TOOL_NAMES.has(toolCallName(call)))) {
|
|
427
|
+
return true;
|
|
428
|
+
}
|
|
429
|
+
for (const field of [msg.toolName, msg.name]) {
|
|
430
|
+
if (typeof field === "string" && DISPATCH_TOOL_NAMES.has(field)) return true;
|
|
431
|
+
}
|
|
432
|
+
return false;
|
|
433
|
+
}
|
|
434
|
+
function detectDispatchIntentFromMessages(messages) {
|
|
435
|
+
if (!Array.isArray(messages)) return false;
|
|
436
|
+
for (const msg of messages) {
|
|
437
|
+
if (!msg) continue;
|
|
438
|
+
if (msg.role === "user" && detectDispatchIntent(messageText(msg.content))) {
|
|
439
|
+
return true;
|
|
440
|
+
}
|
|
441
|
+
if (hasDispatchToolCall(msg)) return true;
|
|
442
|
+
}
|
|
443
|
+
return false;
|
|
444
|
+
}
|
|
445
|
+
|
|
388
446
|
// packages/ai/agent/contextCompiler.ts
|
|
389
447
|
function createHash(_algo) {
|
|
390
448
|
let buf = "";
|
|
@@ -535,6 +593,8 @@ export {
|
|
|
535
593
|
buildRuntimeGuidanceBlocks,
|
|
536
594
|
TOOL_GUIDED_SECTION_ORDER,
|
|
537
595
|
resolveToolGuidedSections,
|
|
596
|
+
detectDispatchIntent,
|
|
597
|
+
detectDispatchIntentFromMessages,
|
|
538
598
|
hashStablePrefixContent,
|
|
539
599
|
estimateContextTokens,
|
|
540
600
|
compileContextLayers,
|