nolo-cli 0.95.0-alpha.6 → 0.95.1
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/README.md +1 -1
- package/{_executeModel-AUQRMRWL.js → _executeModel-2A5AFVBG.js} +67 -63
- package/{action-YVYQEAAV.js → action-GI44T4DR.js} +10 -10
- package/{addContentAction-O7R66HEX.js → addContentAction-B2DRF7P6.js} +9 -9
- package/{addDialogAgentAction-74OA7KYP.js → addDialogAgentAction-T3I7IXPK.js} +15 -17
- package/{agentDeleteCommand-4BAHJRU3.js → agentDeleteCommand-QYCCUQ35.js} +47 -43
- package/{agentEmailCommands-QISOY7Y6.js → agentEmailCommands-IX6COKHS.js} +89 -82
- package/{agentListCommands-U46ODMQU.js → agentListCommands-JDU7V3M5.js} +77 -82
- package/{agentMachineCommands-EHV2KM2C.js → agentMachineCommands-W36VFO5M.js} +42 -38
- package/{agentProviderCommands-GNPTL5XR.js → agentProviderCommands-YK2BIIXZ.js} +1 -1
- package/{agentPullCommand-O5MPVJ5E.js → agentPullCommand-HF4A42D4.js} +1 -1
- package/agentRecordCommands-JGOTOBTW.js +135 -0
- package/{agentRunCommand-K4CLMA6B.js → agentRunCommand-LJBG6YF2.js} +89 -80
- package/{agentRunControl-XLGD3UZ5.js → agentRunControl-5T64LM2M.js} +2 -2
- package/{agentRuntimeLocal-O4HPUJA4.js → agentRuntimeLocal-SYLNOKCT.js} +44 -36
- package/{agentSlice-ZYT2OUR3.js → agentSlice-FZ7GGQM2.js} +11 -11
- package/{appDeleteCommands-R5BBTKQK.js → appDeleteCommands-IP22BHZE.js} +42 -38
- package/{appDeployCommands-ZJIXOJWD.js → appDeployCommands-5ZTQL6UL.js} +42 -38
- package/{appDeployStatusCommands-B3R2ZTBF.js → appDeployStatusCommands-G6EMAT75.js} +42 -38
- package/{appGetCommands-2AQSOV2A.js → appGetCommands-UXBDAYEM.js} +42 -38
- package/{appListCommands-HCIJGZFY.js → appListCommands-J274GTVP.js} +42 -38
- package/{authCommand-F4EFRRX6.js → authCommand-2YPMMIJN.js} +117 -23
- package/{authCommands-RGOGCPP6.js → authCommands-FFDS4FVX.js} +7 -5
- package/{builtinSkillRegistry-FUAVTRVZ.js → builtinSkillRegistry-ZMF6YGNO.js} +6 -5
- package/{chatQueueReduxAdapter-Q5V4YJVI.js → chatQueueReduxAdapter-PRP4YQP7.js} +30 -29
- package/{chromeCommands-FZYAU75D.js → chromeCommands-K27J4OVZ.js} +124 -28
- package/{chromeOpsCommands-62P2Q2YB.js → chromeOpsCommands-IXRLN57H.js} +4 -3
- package/{chunk-6OZ36FXI.js → chunk-27ONFIEY.js} +22 -4
- package/chunk-2QZTQEW4.js +13349 -0
- package/{chunk-JEDZAO7L.js → chunk-2SYTUTLI.js} +257 -37
- package/{chunk-OIVSQH2O.js → chunk-3BXNTXYI.js} +299 -5
- package/{chunk-ZLR5JN3E.js → chunk-4B4DAAFV.js} +7 -7
- package/{chunk-EYAQT56M.js → chunk-4DPP773Q.js} +2 -2
- package/chunk-4LCOCOR5.js +50 -0
- package/{chunk-BZWBEHGD.js → chunk-4MPGAOXS.js} +66 -38
- package/{chunk-JOHSKZQX.js → chunk-4RTK7EHT.js} +865 -207
- package/{chunk-2GRGFCF6.js → chunk-4VJAC32I.js} +2 -1
- package/{chunk-MC4XLIJ7.js → chunk-523DITKR.js} +1 -1
- package/{chunk-IAO6JBYW.js → chunk-5B7XS6UO.js} +164 -14
- package/{chunk-E4MARS3Q.js → chunk-5GVBDNTO.js} +1 -1
- package/chunk-5J3PYNUP.js +255 -0
- package/chunk-5MMAK75Q.js +15 -0
- package/{chunk-JPGCXHNM.js → chunk-5OA5HMTL.js} +1 -1
- package/{chunk-42V6BK2E.js → chunk-62IL3KQV.js} +4 -34
- package/{chunk-YQTQQX2H.js → chunk-67HHBCFJ.js} +1 -1
- package/{chunk-SNPMM7H3.js → chunk-67T7O467.js} +13 -13
- package/{chunk-6YTOJY35.js → chunk-6D2JFXLY.js} +35 -0
- package/{chunk-4MY4GLIW.js → chunk-6IHBIRPK.js} +969 -1090
- package/{chunk-3BMYXEUW.js → chunk-6O4IK4V2.js} +1 -1
- package/{chunk-XOVEWFLK.js → chunk-6RDFAKG7.js} +100 -100
- package/{chunk-DHDMC6FO.js → chunk-6TPOEJMQ.js} +9 -4
- package/{chunk-WADCY6G6.js → chunk-6ZWMH6TJ.js} +111 -41
- package/{chunk-ABQYVJBJ.js → chunk-7CHC4W22.js} +1 -1
- package/{chunk-GQBOR3G6.js → chunk-7KVZ5LDQ.js} +2 -2
- package/{chunk-OA6Q2A4I.js → chunk-A7RSPKU6.js} +98 -22
- package/{chunk-KQ4ONNQD.js → chunk-ALFH24P3.js} +56 -7
- package/{chunk-Q554LLSI.js → chunk-AUDNYVRC.js} +1 -1
- package/{chunk-GPCZ7UXG.js → chunk-AZRHIN5B.js} +1 -1
- package/{chunk-JRQFUXY7.js → chunk-B2XUQXQX.js} +96 -19
- package/{chunk-EGSKXKR5.js → chunk-BJJL5DZF.js} +1 -1
- package/chunk-BMQ2MJUK.js +153 -0
- package/{chunk-XRWZB6CF.js → chunk-BVWTQJAA.js} +23 -76
- package/{chunk-3IIEFNGY.js → chunk-C53ZG23R.js} +2 -2
- package/chunk-CHOZJMJS.js +78 -0
- package/{chunk-HJUYAD4A.js → chunk-CPUFH46E.js} +8 -8
- package/{chunk-LS2ZANRJ.js → chunk-CTUQJVQM.js} +1 -1
- package/{chunk-BP4XNZRM.js → chunk-CU3QB4HW.js} +3 -3
- package/{chunk-ACTMNVHM.js → chunk-CYSYR67N.js} +1 -1
- package/{chunk-VLTIYV3X.js → chunk-DCLMZ5TX.js} +4 -4
- package/{chunk-UKZDAFYT.js → chunk-DSSTTEKI.js} +6 -10
- package/{chunk-HVURBGF3.js → chunk-ESRMFY7G.js} +2 -2
- package/{chunk-TRV2MIDW.js → chunk-EXAJ6DCR.js} +1 -0
- package/chunk-GMZLP5DV.js +82 -0
- package/{chunk-FDTR4QJ6.js → chunk-H6A6X4EK.js} +32 -1
- package/{chunk-DVINR3PL.js → chunk-HDLLCBRF.js} +1 -1
- package/{chunk-ONXOABJR.js → chunk-HNGRBWYF.js} +3 -0
- package/{chunk-H62HCIUP.js → chunk-HYZIYH2H.js} +11 -10
- package/{chunk-MMPXJXHT.js → chunk-HZH7RULB.js} +582 -478
- package/{chunk-NTW5GWDM.js → chunk-I3QNET24.js} +32 -17
- package/{chunk-WV42OMV7.js → chunk-IAESIMK7.js} +4 -4
- package/{chunk-QIAVMDHY.js → chunk-IUVCUGQR.js} +4 -4
- package/{chunk-AFDS2CVM.js → chunk-K5UOP7AI.js} +15 -20
- package/{chunk-IIVGDG4I.js → chunk-LNPYTNMG.js} +8 -4
- package/{chunk-BLJWCTRL.js → chunk-LVITW736.js} +1 -1
- package/chunk-LYS4T7MY.js +7600 -0
- package/{chunk-76WEAXJB.js → chunk-M3LRSBOX.js} +18 -15
- package/{chunk-7S4YWN7P.js → chunk-MX574M24.js} +1 -1
- package/{chunk-FZGV4FGK.js → chunk-NUHHBEJC.js} +378 -187
- package/{chunk-53HEEOTT.js → chunk-O26PCYLS.js} +80 -13
- package/{chunk-3DII57IT.js → chunk-O2OWEFII.js} +1 -1
- package/chunk-OCZKATRC.js +129 -0
- package/{chunk-6D6VBVEW.js → chunk-OTEMQQZI.js} +80 -14
- package/chunk-P6GMCCAT.js +870 -0
- package/{chunk-CPH3W5A7.js → chunk-Q4GP72HX.js} +94 -3
- package/{chunk-A6G32FNX.js → chunk-QYFBT4CV.js} +13 -13
- package/{chunk-Z77CRGTW.js → chunk-R4SQ3LGW.js} +1 -1
- package/{chunk-DEUUPHOO.js → chunk-RKGKDQGJ.js} +74 -17
- package/{chunk-ZXKVPF4K.js → chunk-RQNHAVSR.js} +236 -36
- package/{chunk-LLT642J4.js → chunk-RS4XOX6Y.js} +24 -5
- package/{chunk-V4MJDUSR.js → chunk-RSEEDUMS.js} +2 -2
- package/{chunk-UZGQNTVW.js → chunk-S5XGT6GB.js} +5 -3
- package/{chunk-AFUORTY4.js → chunk-SONWNI3L.js} +21 -21
- package/{chunk-BYMV6QZG.js → chunk-TNIX77YM.js} +4 -0
- package/{chunk-OF7AQZUG.js → chunk-TU5NE4U3.js} +9 -84
- package/chunk-TY3TIUJK.js +89 -0
- package/chunk-UNYJU5L6.js +780 -0
- package/{chunk-J4MOO56S.js → chunk-UQNS32WZ.js} +10 -2
- package/chunk-VIWDGTDA.js +8 -0
- package/chunk-VJVNU77E.js +83 -0
- package/{chunk-JAXOVNM4.js → chunk-WILHZY7K.js} +45 -45
- package/{chunk-BGSLKVCP.js → chunk-WIU4KIBL.js} +6 -7
- package/{chunk-UKWGR5SS.js → chunk-WIWM4FE3.js} +187 -398
- package/{chunk-O6OSWFZQ.js → chunk-XUWRURDF.js} +6 -0
- package/{chunk-Q67DOFOO.js → chunk-Y3PMXGLH.js} +2 -0
- package/{chunk-SH43IESU.js → chunk-YUNJN43V.js} +44 -9
- package/{chunk-TOP2VXOR.js → chunk-Z4CSIXYP.js} +2 -2
- package/{chunk-2F7RJC6L.js → chunk-ZOVKKMF6.js} +1 -1
- package/chunk-ZRAU6T47.js +56 -0
- package/commandRegistry-ESFYIRF4.js +833 -0
- package/{contentThunks-PT23JWJX.js → contentThunks-ECQ6KK3I.js} +32 -30
- package/{cooldownCommands-REAWYVTY.js → cooldownCommands-ZLEPIB4A.js} +2 -2
- package/{createAgentAutomationAction-N27SYTLU.js → createAgentAutomationAction-6EES5YQO.js} +32 -30
- package/{createDialogAction-XZPLHD5G.js → createDialogAction-JTKMM4VG.js} +36 -33
- package/{createPageAction-KHVJQ3CS.js → createPageAction-WQZTMGAG.js} +38 -36
- package/{chunk-3SJQXXGY.js → cursorProvider-YGGNMVWX.js} +2560 -9879
- package/{dbSlice-XVWBAGYN.js → dbSlice-DQ32LYTJ.js} +8 -8
- package/{deleteFile-YG6QMJLU.js → deleteFile-NX6QHCWZ.js} +3 -3
- package/{dialogCommands-ZUWW5UT6.js → dialogCommands-XXZH5K6U.js} +45 -41
- package/{dialogSlice-3YH242HS.js → dialogSlice-I6GN3I5B.js} +36 -29
- package/{dist-VODFSGNG.js → dist-NJC2W7I4.js} +61 -54
- package/{docCreateCommands-Q6FADDSJ.js → docCreateCommands-FLNUDWG6.js} +44 -40
- package/{docDeleteCommands-ZKIH54PZ.js → docDeleteCommands-74OURFAB.js} +44 -40
- package/{docReadCommands-7BZT2QTW.js → docReadCommands-QENWDQVH.js} +43 -39
- package/{docStore-YSZRNUUD.js → docStore-B2ZM4PCR.js} +11 -10
- package/{docUpdateCommands-WJXWTRL7.js → docUpdateCommands-J4HWJ5JO.js} +44 -40
- package/{fetchMessages-EIU7UFFK.js → fetchMessages-67MEFPZR.js} +2 -2
- package/{getPricing-LUSEABA6.js → getPricing-NMMFT3YI.js} +3 -3
- package/{handleSendMessageAction-KJO2QDBM.js → handleSendMessageAction-BAUWHASB.js} +91 -83
- package/index.js +87 -884
- package/{localDialogRead-BTFJ4V2I.js → localDialogRead-EBRS242U.js} +2 -2
- package/{localRuntimeAuthority-6IR6BBXE.js → localRuntimeAuthority-5W6IJRAD.js} +6 -6
- package/{localRuntimeDb-SYQGUF4U.js → localRuntimeDb-3LRMNLCM.js} +1 -1
- package/{machineCommands-QC4TD7GJ.js → machineCommands-SG3QGVOP.js} +84 -77
- package/{machineWsRunDispatch-XUOIAXO7.js → machineWsRunDispatch-RTFT3ZDL.js} +81 -74
- package/{memberThunks-QGFLFVCI.js → memberThunks-5ZXPR63F.js} +9 -9
- package/{models-T3SG6MJ5.js → models-ZPU5EDF4.js} +2 -2
- package/oauthTokenStore-ITEB663N.js +23 -0
- package/package.json +1 -1
- package/pdf-U6KSUEZZ.js +26435 -0
- package/processSpawn-SOAV3FEV.js +11 -0
- package/profileConfig-ZGOFORWV.js +43 -0
- package/{providerPresetApply-FG6NZ57W.js → providerPresetApply-DD6NGWW6.js} +7 -7
- package/{providerRegistry-757OWH3O.js → providerRegistry-XDRLMYGJ.js} +7 -7
- package/{read-COE3ZYR6.js → read-EPTJRAEF.js} +5 -5
- package/{readDocTool-5USN4A6V.js → readDocTool-W4NDXNEX.js} +5 -3
- package/{readlineWorkspace-74TXXSLO.js → readlineWorkspace-MCNBLA56.js} +2449 -2022
- package/{removeDialogAgentAction-IX3MN2ZO.js → removeDialogAgentAction-BVAWQKXE.js} +17 -19
- package/{runAgentClientLoop-37BXJD62.js → runAgentClientLoop-XDPBFXV2.js} +61 -58
- package/{runtimeDoctorCommands-X6WDBEQX.js → runtimeDoctorCommands-3USD722U.js} +3 -3
- package/runtimeModeArgs-2Y7BALTO.js +31 -0
- package/{setDialogExtraReferencesAction-X4HCPNZL.js → setDialogExtraReferencesAction-LYY45IAD.js} +12 -11
- package/{setPrimaryDialogAgentAction-4GMIQLOD.js → setPrimaryDialogAgentAction-73IL7DLU.js} +18 -20
- package/{settingSlice-ZQZVUPKK.js → settingSlice-Q6EKL7EQ.js} +9 -9
- package/{skillDiscovery-CYUCJMAG.js → skillDiscovery-ZBU76COE.js} +3 -3
- package/{spaceCommands-P3ONT6LL.js → spaceCommands-BYDGOMW7.js} +44 -40
- package/{streamAgentChatTurn-FGXQXALU.js → streamAgentChatTurn-BBH3QDEZ.js} +183 -91
- package/{switchDialogAgentAction-N52LRPA3.js → switchDialogAgentAction-UUXDSQ6X.js} +15 -17
- package/{tableCommands-O6NWHFKV.js → tableCommands-G7RV3RU3.js} +4 -4
- package/{toolApiClient-QVJ6HDNN.js → toolApiClient-INIQCPGY.js} +3 -3
- package/{tools-R5UF2KZO.js → tools-OQWSBQJA.js} +54 -51
- package/{tuiSummaryLlmCaller-T2SHYMDZ.js → tuiSummaryLlmCaller-74NRRLVW.js} +18 -16
- package/{updateCommands-2M74UL7P.js → updateCommands-4EHDLF5J.js} +3 -3
- package/{updateDialogTitleAction-RTADGV7A.js → updateDialogTitleAction-E25IG3J3.js} +81 -43
- package/agentRecordCommands-SIPURU2S.js +0 -128
- package/chunk-FOWEGIMF.js +0 -18881
- package/chunk-M76ECQRD.js +0 -13658
- package/chunk-Q5FJJ6XI.js +0 -103
- package/chunk-S7Z2HMCN.js +0 -25
- package/{chunk-VMFTFOWF.js → chunk-3AH7LNUB.js} +7 -7
- package/{chunk-X7HHHIOZ.js → chunk-Y6ROFCZO.js} +0 -0
- package/{db-WK5MDZVN.js → db-VQSAOWAO.js} +1 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
toolRegistry
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-HZH7RULB.js";
|
|
4
4
|
import {
|
|
5
|
-
|
|
6
|
-
} from "./chunk-
|
|
5
|
+
runtime_default
|
|
6
|
+
} from "./chunk-2QZTQEW4.js";
|
|
7
7
|
import {
|
|
8
8
|
canonicalizeToolNames
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-XUWRURDF.js";
|
|
10
10
|
import {
|
|
11
11
|
isNoloHostedProvider
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-Y3PMXGLH.js";
|
|
13
13
|
import {
|
|
14
14
|
asTrimmedLowercaseString
|
|
15
15
|
} from "./chunk-QSJ3HFEF.js";
|
|
@@ -17,94 +17,6 @@ import {
|
|
|
17
17
|
isRecord
|
|
18
18
|
} from "./chunk-KUG52IAP.js";
|
|
19
19
|
|
|
20
|
-
// packages/ai/chat/inlineImageUrlsForCustomProvider.ts
|
|
21
|
-
var FILE_CONTENT_PATH = "/api/v1/db/file/content/";
|
|
22
|
-
var shouldInlineImageUrlsForAgent = (agentConfig) => {
|
|
23
|
-
const apiSource = agentConfig?.apiSource?.toLowerCase();
|
|
24
|
-
const provider = agentConfig?.provider?.toLowerCase();
|
|
25
|
-
const model = agentConfig?.model?.toLowerCase();
|
|
26
|
-
if (apiSource === "custom" || provider === "custom") return true;
|
|
27
|
-
if (isNoloHostedProvider(provider)) return true;
|
|
28
|
-
return provider === "openrouter" && model === "minimax/minimax-m3";
|
|
29
|
-
};
|
|
30
|
-
var isInlineCandidate = (url) => /^https?:\/\//i.test(url) && url.includes(FILE_CONTENT_PATH);
|
|
31
|
-
var bytesToBase64 = (bytes) => {
|
|
32
|
-
let binary = "";
|
|
33
|
-
for (const byte of bytes) {
|
|
34
|
-
binary += String.fromCharCode(byte);
|
|
35
|
-
}
|
|
36
|
-
return btoa(binary);
|
|
37
|
-
};
|
|
38
|
-
var defaultFetchImage = async (url) => {
|
|
39
|
-
const response = await fetch(url);
|
|
40
|
-
if (!response.ok) {
|
|
41
|
-
return {
|
|
42
|
-
ok: false,
|
|
43
|
-
error: `HTTP ${response.status}`
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
const bytes = new Uint8Array(await response.arrayBuffer());
|
|
47
|
-
return {
|
|
48
|
-
ok: true,
|
|
49
|
-
mimeType: response.headers.get("content-type") ?? "application/octet-stream",
|
|
50
|
-
bytes
|
|
51
|
-
};
|
|
52
|
-
};
|
|
53
|
-
var cloneImagePartWithDataUrl = async (part, fetchImage, isAllowedImageUrl) => {
|
|
54
|
-
const url = part?.image_url?.url;
|
|
55
|
-
if (typeof url !== "string" || !isInlineCandidate(url) || isAllowedImageUrl && !isAllowedImageUrl(url)) {
|
|
56
|
-
return part;
|
|
57
|
-
}
|
|
58
|
-
const result = await fetchImage(url);
|
|
59
|
-
if (!result.ok || !result.bytes) return part;
|
|
60
|
-
const mimeType = result.mimeType || "application/octet-stream";
|
|
61
|
-
return {
|
|
62
|
-
...part,
|
|
63
|
-
image_url: {
|
|
64
|
-
...part.image_url,
|
|
65
|
-
url: `data:${mimeType};base64,${bytesToBase64(result.bytes)}`
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
};
|
|
69
|
-
var inlineImageUrlsForCustomProvider = async (bodyData, options) => {
|
|
70
|
-
if (!options.shouldInline) return bodyData;
|
|
71
|
-
const body = bodyData;
|
|
72
|
-
if (!Array.isArray(body?.messages)) return bodyData;
|
|
73
|
-
const fetchImage = options.fetchImage ?? defaultFetchImage;
|
|
74
|
-
let changed = false;
|
|
75
|
-
const messages = [];
|
|
76
|
-
for (const message of body.messages) {
|
|
77
|
-
if (!Array.isArray(message?.content)) {
|
|
78
|
-
messages.push(message);
|
|
79
|
-
continue;
|
|
80
|
-
}
|
|
81
|
-
const content = await Promise.all(
|
|
82
|
-
message.content.map(async (part) => {
|
|
83
|
-
if (part?.type !== "image_url") return part;
|
|
84
|
-
return cloneImagePartWithDataUrl(
|
|
85
|
-
part,
|
|
86
|
-
fetchImage,
|
|
87
|
-
options.isAllowedImageUrl
|
|
88
|
-
);
|
|
89
|
-
})
|
|
90
|
-
);
|
|
91
|
-
let messageChanged = false;
|
|
92
|
-
for (let i = 0; i < content.length; i++) {
|
|
93
|
-
if (content[i] !== message.content[i]) {
|
|
94
|
-
changed = true;
|
|
95
|
-
messageChanged = true;
|
|
96
|
-
break;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
messages.push(messageChanged ? { ...message, content } : message);
|
|
100
|
-
}
|
|
101
|
-
if (!changed) return bodyData;
|
|
102
|
-
return {
|
|
103
|
-
...body,
|
|
104
|
-
messages
|
|
105
|
-
};
|
|
106
|
-
};
|
|
107
|
-
|
|
108
20
|
// packages/ai/tools/toolSchemaCompatibility.ts
|
|
109
21
|
var COMPOSITION_KEYS = ["anyOf", "oneOf", "allOf"];
|
|
110
22
|
var LIMITED_JSON_SCHEMA_PROVIDERS = /* @__PURE__ */ new Set([
|
|
@@ -151,12 +63,12 @@ var PREPARE_TOOLS_CACHE_LIMIT = 128;
|
|
|
151
63
|
var warnedUnknownToolNames = /* @__PURE__ */ new Set();
|
|
152
64
|
function getTranslation(keys, defaultVal) {
|
|
153
65
|
for (const key of keys) {
|
|
154
|
-
if (
|
|
155
|
-
return
|
|
66
|
+
if (runtime_default.exists(key)) {
|
|
67
|
+
return runtime_default.t(key);
|
|
156
68
|
}
|
|
157
69
|
const aiKey = key.startsWith("ai:") ? key : `ai:${key}`;
|
|
158
|
-
if (
|
|
159
|
-
return
|
|
70
|
+
if (runtime_default.exists(aiKey)) {
|
|
71
|
+
return runtime_default.t(aiKey);
|
|
160
72
|
}
|
|
161
73
|
}
|
|
162
74
|
return defaultVal;
|
|
@@ -203,7 +115,7 @@ function translateSchema(schema) {
|
|
|
203
115
|
return nextSchema;
|
|
204
116
|
}
|
|
205
117
|
function currentI18nLanguage() {
|
|
206
|
-
return typeof
|
|
118
|
+
return typeof runtime_default.language === "string" ? runtime_default.language : "";
|
|
207
119
|
}
|
|
208
120
|
function translateSchemaCached(schema) {
|
|
209
121
|
if (!schema || typeof schema !== "object") return schema;
|
|
@@ -268,8 +180,96 @@ var prepareTools = (toolNames, options) => {
|
|
|
268
180
|
return prepared.slice();
|
|
269
181
|
};
|
|
270
182
|
|
|
183
|
+
// packages/ai/chat/inlineImageUrlsForCustomProvider.ts
|
|
184
|
+
var FILE_CONTENT_PATH = "/api/v1/db/file/content/";
|
|
185
|
+
var shouldInlineImageUrlsForAgent = (agentConfig) => {
|
|
186
|
+
const apiSource = agentConfig?.apiSource?.toLowerCase();
|
|
187
|
+
const provider = agentConfig?.provider?.toLowerCase();
|
|
188
|
+
const model = agentConfig?.model?.toLowerCase();
|
|
189
|
+
if (apiSource === "custom" || provider === "custom") return true;
|
|
190
|
+
if (isNoloHostedProvider(provider)) return true;
|
|
191
|
+
return provider === "openrouter" && model === "minimax/minimax-m3";
|
|
192
|
+
};
|
|
193
|
+
var isInlineCandidate = (url) => /^https?:\/\//i.test(url) && url.includes(FILE_CONTENT_PATH);
|
|
194
|
+
var bytesToBase64 = (bytes) => {
|
|
195
|
+
let binary = "";
|
|
196
|
+
for (const byte of bytes) {
|
|
197
|
+
binary += String.fromCharCode(byte);
|
|
198
|
+
}
|
|
199
|
+
return btoa(binary);
|
|
200
|
+
};
|
|
201
|
+
var defaultFetchImage = async (url) => {
|
|
202
|
+
const response = await fetch(url);
|
|
203
|
+
if (!response.ok) {
|
|
204
|
+
return {
|
|
205
|
+
ok: false,
|
|
206
|
+
error: `HTTP ${response.status}`
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
const bytes = new Uint8Array(await response.arrayBuffer());
|
|
210
|
+
return {
|
|
211
|
+
ok: true,
|
|
212
|
+
mimeType: response.headers.get("content-type") ?? "application/octet-stream",
|
|
213
|
+
bytes
|
|
214
|
+
};
|
|
215
|
+
};
|
|
216
|
+
var cloneImagePartWithDataUrl = async (part, fetchImage, isAllowedImageUrl) => {
|
|
217
|
+
const url = part?.image_url?.url;
|
|
218
|
+
if (typeof url !== "string" || !isInlineCandidate(url) || isAllowedImageUrl && !isAllowedImageUrl(url)) {
|
|
219
|
+
return part;
|
|
220
|
+
}
|
|
221
|
+
const result = await fetchImage(url);
|
|
222
|
+
if (!result.ok || !result.bytes) return part;
|
|
223
|
+
const mimeType = result.mimeType || "application/octet-stream";
|
|
224
|
+
return {
|
|
225
|
+
...part,
|
|
226
|
+
image_url: {
|
|
227
|
+
...part.image_url,
|
|
228
|
+
url: `data:${mimeType};base64,${bytesToBase64(result.bytes)}`
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
};
|
|
232
|
+
var inlineImageUrlsForCustomProvider = async (bodyData, options) => {
|
|
233
|
+
if (!options.shouldInline) return bodyData;
|
|
234
|
+
const body = bodyData;
|
|
235
|
+
if (!Array.isArray(body?.messages)) return bodyData;
|
|
236
|
+
const fetchImage = options.fetchImage ?? defaultFetchImage;
|
|
237
|
+
let changed = false;
|
|
238
|
+
const messages = [];
|
|
239
|
+
for (const message of body.messages) {
|
|
240
|
+
if (!Array.isArray(message?.content)) {
|
|
241
|
+
messages.push(message);
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
const content = await Promise.all(
|
|
245
|
+
message.content.map(async (part) => {
|
|
246
|
+
if (part?.type !== "image_url") return part;
|
|
247
|
+
return cloneImagePartWithDataUrl(
|
|
248
|
+
part,
|
|
249
|
+
fetchImage,
|
|
250
|
+
options.isAllowedImageUrl
|
|
251
|
+
);
|
|
252
|
+
})
|
|
253
|
+
);
|
|
254
|
+
let messageChanged = false;
|
|
255
|
+
for (let i = 0; i < content.length; i++) {
|
|
256
|
+
if (content[i] !== message.content[i]) {
|
|
257
|
+
changed = true;
|
|
258
|
+
messageChanged = true;
|
|
259
|
+
break;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
messages.push(messageChanged ? { ...message, content } : message);
|
|
263
|
+
}
|
|
264
|
+
if (!changed) return bodyData;
|
|
265
|
+
return {
|
|
266
|
+
...body,
|
|
267
|
+
messages
|
|
268
|
+
};
|
|
269
|
+
};
|
|
270
|
+
|
|
271
271
|
export {
|
|
272
|
+
prepareTools,
|
|
272
273
|
shouldInlineImageUrlsForAgent,
|
|
273
|
-
inlineImageUrlsForCustomProvider
|
|
274
|
-
prepareTools
|
|
274
|
+
inlineImageUrlsForCustomProvider
|
|
275
275
|
};
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildSkillDocMarkdown
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-AUDNYVRC.js";
|
|
4
|
+
import {
|
|
5
|
+
CHROME_CONNECTOR_ACCEPTED_TOOL_NAMES
|
|
6
|
+
} from "./chunk-5J3PYNUP.js";
|
|
4
7
|
import {
|
|
5
8
|
SYSTEM_AGENT_CAPABILITIES,
|
|
6
9
|
SYSTEM_AGENT_CAPABILITY_IDS
|
|
7
10
|
} from "./chunk-QDSINZM3.js";
|
|
8
11
|
import {
|
|
9
12
|
createKey
|
|
10
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-3AH7LNUB.js";
|
|
11
14
|
|
|
12
15
|
// packages/ai/tools/codeWorkDiscipline.ts
|
|
13
16
|
var CODE_WORK_DISCIPLINE_BODY = `## \u6548\u7387\u4F18\u5148\uFF08\u7701 token\uFF09
|
|
@@ -30,7 +33,7 @@ var CODE_WORK_DISCIPLINE_BODY = `## \u6548\u7387\u4F18\u5148\uFF08\u7701 token\u
|
|
|
30
33
|
- \u6309\u89D2\u8272\u52A0\u8F7D\u5BF9\u5E94 skill\uFF1Areviewer \u5148 \`loadSkill("coding-review")\` \u62FF\u901A\u7528\u6D41\u7A0B\uFF0C\u518D\u6309\u89D2\u8272 \`loadSkill("coding-review-<role>")\` \u62FF\u68C0\u67E5\u9879\u3002\u89D2\u8272\u6E05\u5355\uFF1Acode-quality\uFF08**\u5FC5\u8DD1**\uFF09/ architecture\uFF08**\u5355\u72EC\u6D3E\u53D1**\uFF0C\u4E2D\u7EA7\u4EE5\u4E0A\u95EE\u9898\uFF09/ security\uFF08\u6309\u9700 + \u5B89\u5168\u654F\u611F\u89E6\u53D1\u5FC5\u8DD1\uFF09/ frontend-ux\uFF08\u6D89\u53CA UI \u65F6\uFF09/ backend-data\uFF08\u6D89\u53CA server \u65F6\uFF09\u3002\u89D2\u8272\u5207\u5272\u7684\u76EE\u7684\u662F\u6CE8\u610F\u529B\u9694\u79BB\u2014\u2014\u6BCF\u4E2A\u89D2\u8272\u53EA\u76EF\u81EA\u5DF1\u7684\u68C0\u67E5\u9762\uFF0C\u6309\u9700\u542F\u7528\uFF0C\u907F\u514D\u4E00\u4E2A reviewer \u80CC\u6240\u6709\u89D2\u8272\u5BFC\u81F4\u6CE8\u610F\u529B\u7A00\u91CA\u3002
|
|
31
34
|
- Verdict \u6807\u51C6\uFF1AAPPROVE\uFF08\u65E0 CRITICAL \u6216 HIGH\uFF09\u2192 \u53EF commit\uFF1BWARNING\uFF08\u4EC5 HIGH\uFF09\u2192 \u62A5\u544A owner \u51B3\u5B9A\uFF1BBLOCK\uFF08\u6709 CRITICAL\uFF09\u2192 \u5FC5\u987B\u5148\u4FEE\u3002
|
|
32
35
|
- review \u662F\u591A\u8F6E\u6536\u655B\u7684\uFF1A\u6D3E reviewer \u5BA1\u5DE5\u4F5C\u533A diff \u2192 \u51FA finding \u5C31\u4FEE \u2192 \u590D\u5BA1\uFF0C\u76F4\u5230 APPROVE \u624D\u63D0\u4EA4\u3002\u6BCF\u8F6E review \u65E0\u4E0A\u4E0B\u6587\u2014\u2014reviewer \u53EA\u770B\u5F53\u524D\u5DE5\u4F5C\u533A diff\uFF0C\u4E0D\u5E26\u4E0A\u4E00\u8F6E finding \u8BB0\u5FC6\u3002
|
|
33
|
-
- \u82E5\u5904\u4E8E\u5355 Agent \u72EC\u5360\u73AF\u5883\u3001\u5176\u4ED6 agent \u4E0D\u53EF\u8FBE\u3001\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u76F4\u63A5\u63D0\u4EA4\
|
|
36
|
+
- \u82E5\u5904\u4E8E\u5355 Agent \u72EC\u5360\u73AF\u5883\u3001\u5176\u4ED6 agent \u4E0D\u53EF\u8FBE\u3001\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u76F4\u63A5\u63D0\u4EA4\uFF1A\u4E0D\u8981\u8865\u5199\u6216\u4F2A\u9020 review \u8BC1\u636E\uFF0C\u4E5F**\u4E0D\u8981\u7528 [no-review: \u539F\u56E0] \u8FD9\u7C7B\u5199\u6CD5**\u2014\u2014\u5B83\u4EFB\u4F55\u5224\u636E\u90FD\u89E3\u6790\u4E0D\u4E86\uFF0C\u5199\u4E86\u7167\u6837\u88AB\u62E6\u3002\u81EA\u6709\u95F8\u95E8\u8BA4\u7684\u5F62\u5F0F\u662F Reviewed-by: <\u975E\u7A7A\u7F72\u540D> \u52A0 Review: \u5E26\u7ED3\u8BBA\uFF08APPROVE / Approved / WARNING\uFF0C\u5360\u4F4D\u7B26\u5982 <pending> \u4E0D\u7B97\uFF09\uFF0Ccommit-msg \u4E0E pre-push / pre-merge \u90FD\u8D70\u8FD9\u4E00\u6761\u6B63\u5219\u3002pre-push / pre-merge **\u53E6**\u8BA4\u4E00\u6761 owner-only \u8C41\u514D\uFF1A\u6B63\u6587\u5199 No-Review: <\u539F\u56E0> \u4E14 commit author email \u547D\u4E2D packages/nolo-ci/core/src/mapping.ts \u7684 NO_REVIEW_OWNER_EMAILS \u767D\u540D\u5355\u2014\u2014agent \u8EAB\u4EFD\uFF08\u5982 app-builder@nolo.local\uFF09\u4E0D\u9002\u7528\u3002\u771F\u88AB\u5361\u4F4F\u5C31\u5982\u5B9E\u4E0A\u62A5\u5361\u70B9\u3001\u7531 owner \u51B3\u5B9A\uFF1Bgit push --no-verify \u4EC5\u9650\u7BA1\u7406\u5458/\u7D27\u6025\u6062\u590D\uFF0C\u670D\u52A1\u7AEF G2 \u4E0D\u53EF\u7ED5\u8FC7\u3002`;
|
|
34
37
|
var buildCodeWorkDiscipline = (heading) => `# ${heading}
|
|
35
38
|
|
|
36
39
|
${CODE_WORK_DISCIPLINE_BODY}`;
|
|
@@ -61,6 +64,8 @@ var TOOL_PACKS = {
|
|
|
61
64
|
"updateSelf",
|
|
62
65
|
"ask_user",
|
|
63
66
|
"createAgentAutomation",
|
|
67
|
+
"updateAgentAutomation",
|
|
68
|
+
"deleteAgentAutomation",
|
|
64
69
|
"notifyUser"
|
|
65
70
|
],
|
|
66
71
|
// L2 - 联网搜索:与 CAPABILITY_PACKS「web-search」对齐。
|
|
@@ -353,7 +358,7 @@ function isWebSearchTool(name) {
|
|
|
353
358
|
return WEB_SEARCH_TOOL_NAMES.has(name);
|
|
354
359
|
}
|
|
355
360
|
function isBrowserTool(name) {
|
|
356
|
-
return name.startsWith("browser_");
|
|
361
|
+
return name.startsWith("browser_") && !CHROME_CONNECTOR_ACCEPTED_TOOL_NAMES.includes(name);
|
|
357
362
|
}
|
|
358
363
|
function addDefaultLightWebToolsForConfiguredAgents(toolNames, agentConfig) {
|
|
359
364
|
const explicitToolNames = Array.isArray(
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
estimateTokenCount
|
|
3
3
|
} from "./chunk-PSCNXBYA.js";
|
|
4
|
-
import {
|
|
5
|
-
compactWhitespace
|
|
6
|
-
} from "./chunk-DWLEOOGR.js";
|
|
7
4
|
import {
|
|
8
5
|
addContentAction
|
|
9
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RSEEDUMS.js";
|
|
10
7
|
import {
|
|
11
8
|
upload
|
|
12
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-HYZIYH2H.js";
|
|
13
10
|
import {
|
|
14
11
|
getRuntimeServerContext
|
|
15
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-WIWM4FE3.js";
|
|
16
13
|
import {
|
|
17
14
|
API_ENDPOINTS
|
|
18
15
|
} from "./chunk-LCBAMY2M.js";
|
|
@@ -367,6 +364,7 @@ var truncateToolOutputForContext = (text, contextWindow) => {
|
|
|
367
364
|
// packages/ai/context/planCompression.ts
|
|
368
365
|
var MIN_COMPRESS_COUNT = 5;
|
|
369
366
|
var ACTIVE_SUMMARY_TAIL_KEEP_COUNT = 2;
|
|
367
|
+
var COMPACTION_RETENTION_CUSHION_RATIO = 0.18;
|
|
370
368
|
var MIN_TRIGGER_PENDING_COUNT = MIN_COMPRESS_COUNT + ACTIVE_SUMMARY_TAIL_KEEP_COUNT;
|
|
371
369
|
var getMessageTokenCount = (msg) => {
|
|
372
370
|
const content = serializeMessageContent(msg.content) || "";
|
|
@@ -409,13 +407,14 @@ var normalizeContextUsageRatio = (value) => {
|
|
|
409
407
|
const ratio = value > 1 ? value / 100 : value;
|
|
410
408
|
return ratio >= 0 && ratio <= 1 ? ratio : void 0;
|
|
411
409
|
};
|
|
412
|
-
var emptyPlan = (startIndex) => ({
|
|
410
|
+
var emptyPlan = (startIndex, diagnostics) => ({
|
|
413
411
|
shouldCompress: false,
|
|
414
412
|
compressCount: 0,
|
|
415
413
|
msgsToCompress: [],
|
|
416
414
|
msgsToKeep: [],
|
|
417
415
|
newSummarizedBeforeId: void 0,
|
|
418
|
-
startIndex
|
|
416
|
+
startIndex,
|
|
417
|
+
...diagnostics ? { diagnostics } : {}
|
|
419
418
|
});
|
|
420
419
|
function findPendingMessages(allMsgs, summarizedBeforeId) {
|
|
421
420
|
let startIndex = 0;
|
|
@@ -464,15 +463,42 @@ function calculateCompressCount(pendingMsgs, rawMessageBudget, opts) {
|
|
|
464
463
|
}
|
|
465
464
|
return pendingMsgs.length - keepCount;
|
|
466
465
|
}
|
|
466
|
+
function resolveEffectiveCompactionBudgets(args) {
|
|
467
|
+
const {
|
|
468
|
+
contextWindow,
|
|
469
|
+
triggerRatio,
|
|
470
|
+
historyBudget,
|
|
471
|
+
rawMessageBudget,
|
|
472
|
+
summaryTokens,
|
|
473
|
+
cushionRatio = COMPACTION_RETENTION_CUSHION_RATIO
|
|
474
|
+
} = args;
|
|
475
|
+
const maxRetainedRatio = Math.max(
|
|
476
|
+
0.2,
|
|
477
|
+
Number((triggerRatio - cushionRatio).toFixed(4))
|
|
478
|
+
);
|
|
479
|
+
const maxRetainedHistoryBudget = Math.floor(contextWindow * maxRetainedRatio);
|
|
480
|
+
const effectiveHistoryBudget = Math.min(historyBudget, maxRetainedHistoryBudget);
|
|
481
|
+
const effectiveRawMessageBudget = Math.min(
|
|
482
|
+
rawMessageBudget,
|
|
483
|
+
Math.max(0, effectiveHistoryBudget - summaryTokens)
|
|
484
|
+
);
|
|
485
|
+
return {
|
|
486
|
+
effectiveHistoryBudget,
|
|
487
|
+
effectiveRawMessageBudget,
|
|
488
|
+
maxRetainedRatio
|
|
489
|
+
};
|
|
490
|
+
}
|
|
467
491
|
function guardToolChainBoundary(pendingMsgs, compressCount) {
|
|
468
492
|
let count = compressCount;
|
|
469
|
-
while (count
|
|
470
|
-
count
|
|
493
|
+
while (count < pendingMsgs.length && pendingMsgs[count].role === "tool") {
|
|
494
|
+
count++;
|
|
471
495
|
}
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
496
|
+
while (count > 0 && hasOpenEndedToolCall(pendingMsgs[count - 1])) {
|
|
497
|
+
if (count < pendingMsgs.length && pendingMsgs[count].role === "tool") {
|
|
498
|
+
count++;
|
|
499
|
+
} else {
|
|
475
500
|
count--;
|
|
501
|
+
break;
|
|
476
502
|
}
|
|
477
503
|
}
|
|
478
504
|
return count;
|
|
@@ -489,7 +515,20 @@ function planCompression(input) {
|
|
|
489
515
|
coldResume
|
|
490
516
|
} = input;
|
|
491
517
|
const { pendingMsgs, startIndex } = findPendingMessages(allMsgs, summarizedBeforeId);
|
|
492
|
-
if (pendingMsgs.length === 0)
|
|
518
|
+
if (pendingMsgs.length === 0) {
|
|
519
|
+
return emptyPlan(startIndex, {
|
|
520
|
+
pendingMsgCount: 0,
|
|
521
|
+
totalUsed: estimateTokenCount(summary || ""),
|
|
522
|
+
historyBudget: 0,
|
|
523
|
+
triggerRatio: resolveCompressionTriggerRatio(contextWindow),
|
|
524
|
+
realUsageRatio: normalizeContextUsageRatio(realContextUsagePercent),
|
|
525
|
+
triggeredByRealUsage: false,
|
|
526
|
+
triggeredByEstimate: false,
|
|
527
|
+
triggeredByColdResume: false,
|
|
528
|
+
shouldRunActiveSummary: false,
|
|
529
|
+
emptyReason: "no-pending"
|
|
530
|
+
});
|
|
531
|
+
}
|
|
493
532
|
const summaryTokens = estimateTokenCount(summary || "");
|
|
494
533
|
const pendingTokens = pendingMsgs.reduce((sum, msg) => sum + getMessageTokenCount(msg), 0);
|
|
495
534
|
const totalUsed = summaryTokens + pendingTokens;
|
|
@@ -517,14 +556,47 @@ function planCompression(input) {
|
|
|
517
556
|
coldResume,
|
|
518
557
|
lastMsg: pendingMsgs[pendingMsgs.length - 1]
|
|
519
558
|
});
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
keepTailCount: shouldRunActiveSummary || triggeredByRealUsage || triggeredByColdResume,
|
|
559
|
+
const diagnostics = {
|
|
560
|
+
pendingMsgCount: pendingMsgs.length,
|
|
523
561
|
totalUsed,
|
|
524
|
-
historyBudget
|
|
562
|
+
historyBudget,
|
|
563
|
+
triggerRatio,
|
|
564
|
+
realUsageRatio: normalizeContextUsageRatio(realContextUsagePercent),
|
|
565
|
+
triggeredByRealUsage,
|
|
566
|
+
triggeredByEstimate: normalizeContextUsageRatio(realContextUsagePercent) === void 0 && totalUsed >= historyBudget,
|
|
567
|
+
triggeredByColdResume,
|
|
568
|
+
shouldRunActiveSummary
|
|
569
|
+
};
|
|
570
|
+
if (!trigger) {
|
|
571
|
+
return emptyPlan(startIndex, {
|
|
572
|
+
...diagnostics,
|
|
573
|
+
emptyReason: "not-triggered"
|
|
574
|
+
});
|
|
575
|
+
}
|
|
576
|
+
const { effectiveHistoryBudget, effectiveRawMessageBudget } = resolveEffectiveCompactionBudgets({
|
|
577
|
+
contextWindow,
|
|
578
|
+
triggerRatio,
|
|
579
|
+
historyBudget,
|
|
580
|
+
rawMessageBudget,
|
|
581
|
+
summaryTokens
|
|
525
582
|
});
|
|
583
|
+
let compressCount = calculateCompressCount(
|
|
584
|
+
pendingMsgs,
|
|
585
|
+
effectiveRawMessageBudget,
|
|
586
|
+
{
|
|
587
|
+
keepTailCount: shouldRunActiveSummary || triggeredByRealUsage || triggeredByColdResume,
|
|
588
|
+
totalUsed,
|
|
589
|
+
historyBudget: effectiveHistoryBudget
|
|
590
|
+
}
|
|
591
|
+
);
|
|
526
592
|
compressCount = guardToolChainBoundary(pendingMsgs, compressCount);
|
|
527
|
-
if (compressCount < MIN_COMPRESS_COUNT)
|
|
593
|
+
if (compressCount < MIN_COMPRESS_COUNT) {
|
|
594
|
+
return emptyPlan(startIndex, {
|
|
595
|
+
...diagnostics,
|
|
596
|
+
compressCount,
|
|
597
|
+
emptyReason: "below-min-compress-count"
|
|
598
|
+
});
|
|
599
|
+
}
|
|
528
600
|
const msgsToCompress = pendingMsgs.slice(0, compressCount);
|
|
529
601
|
const msgsToKeep = pendingMsgs.slice(compressCount);
|
|
530
602
|
const newSummarizedBeforeId = msgsToCompress[msgsToCompress.length - 1].id;
|
|
@@ -534,12 +606,13 @@ function planCompression(input) {
|
|
|
534
606
|
msgsToCompress,
|
|
535
607
|
msgsToKeep,
|
|
536
608
|
newSummarizedBeforeId,
|
|
537
|
-
startIndex
|
|
609
|
+
startIndex,
|
|
610
|
+
diagnostics: { ...diagnostics, compressCount }
|
|
538
611
|
};
|
|
539
612
|
}
|
|
540
613
|
|
|
541
614
|
// packages/ai/context/compactionShared.ts
|
|
542
|
-
var COMPACTION_SUMMARY_SCHEMA_VERSION =
|
|
615
|
+
var COMPACTION_SUMMARY_SCHEMA_VERSION = 2;
|
|
543
616
|
var COMPACTION_SUMMARY_SYSTEM_PROMPT = `\u4F60\u662F\u5BF9\u8BDD\u4E0A\u4E0B\u6587\u538B\u7F29\u5668\u3002\u6839\u636E\u3010\u73B0\u6709\u8BB0\u5FC6\u3011\u548C\u3010\u65B0\u589E\u5BF9\u8BDD\u3011\uFF0C\u8F93\u51FA\u53EF\u66FF\u4EE3\u539F\u59CB\u6D88\u606F\u7684\u4E8B\u5B9E\u6027\u8981\u70B9\uFF0C\u4F9B\u540E\u7EED\u5BF9\u8BDD\u76F4\u63A5\u4F7F\u7528\u3002
|
|
544
617
|
|
|
545
618
|
\u4E25\u683C\u53EA\u8F93\u51FA\u4E0B\u9762\u4E09\u90E8\u5206\uFF0C\u6807\u9898\u5FC5\u987B\u5B8C\u5168\u4E00\u81F4\uFF1A
|
|
@@ -552,10 +625,16 @@ var COMPACTION_SUMMARY_SYSTEM_PROMPT = `\u4F60\u662F\u5BF9\u8BDD\u4E0A\u4E0B\u65
|
|
|
552
625
|
|
|
553
626
|
\u8981\u6C42\uFF1A
|
|
554
627
|
1) \u4F7F\u7528\u5BF9\u8BDD\u4E3B\u8BED\u8A00\uFF1B\u6DF7\u5408\u8BED\u8A00\u65F6\u4F18\u5148\u7528\u6237\u4E3B\u8981\u8BED\u8A00\uFF1B\u4E13\u6709\u540D\u8BCD\u3001\u6587\u4EF6\u8DEF\u5F84\u3001\u6807\u8BC6\u7B26\u3001\u547D\u4EE4\u4FDD\u7559\u539F\u6587\uFF0C\u4E0D\u8981\u7FFB\u8BD1\u6216\u8F6C\u8FF0\u3002
|
|
555
|
-
2) \u5173\u952E\u4E8B\u5B9E\u6863\u6848\
|
|
628
|
+
2) \u5173\u952E\u4E8B\u5B9E\u6863\u6848\u7684**\u524D\u4E24\u9879\u56FA\u5B9A\u662F**\uFF1A
|
|
629
|
+
- \u300C\u539F\u59CB\u76EE\u6807\u300D\uFF1A\u7528\u6237\u6700\u521D\u4E3A\u4EC0\u4E48\u5F00\u8FD9\u6BB5\u5BF9\u8BDD\uFF08\u5C3D\u91CF\u4FDD\u7559\u4ED6\u7684\u539F\u8BDD\u4E0E\u7528\u8BCD\uFF0C\u4E0D\u8981\u6539\u5199\u6210\u4EFB\u52A1\u6E05\u5355\uFF09\u3002
|
|
630
|
+
\u589E\u91CF\u66F4\u65B0\u65F6\u6CBF\u7528\u3010\u73B0\u6709\u8BB0\u5FC6\u3011\u91CC\u5DF2\u6709\u7684\u300C\u539F\u59CB\u76EE\u6807\u300D\uFF0C\u4E0D\u8981\u88AB\u65B0\u589E\u5BF9\u8BDD\u6539\u5199\u2014\u2014\u5B83\u662F\u7A33\u5B9A\u5B57\u6BB5\uFF1B
|
|
631
|
+
\u4EC5\u5F53\u65B0\u5BF9\u8BDD\u660E\u786E\u8868\u660E\u539F\u6587\u6709\u4E8B\u5B9E\u6027\u9519\u8BEF\u65F6\u624D\u4FEE\u6B63\uFF0C\u5E76\u5728\u300C\u76EE\u6807\u6F14\u5316\u300D\u91CC\u6CE8\u660E\u3002
|
|
632
|
+
- \u300C\u76EE\u6807\u6F14\u5316\u300D\uFF1A\u82E5\u4E2D\u9014\u8F6C\u5411\uFF0C\u5199\u6E05\u8F6C\u5411\u4E86\u4EC0\u4E48\u3001\u56E0\u4E3A\u4EC0\u4E48\uFF1B\u6CA1\u6709\u8F6C\u5411\u5C31\u5199\u300C\u65E0\u8F6C\u5411\u300D\u6216\u7701\u7565\u8FD9\u4E00\u9879\uFF0C\u4E0D\u8981\u786C\u51D1\u3002
|
|
633
|
+
\u88AB\u540E\u7EED\u5DE5\u4F5C\u53D6\u4EE3\u7684\u662F"\u65B9\u6848"\uFF0C\u4E0D\u662F"\u7528\u6237\u7684\u521D\u59CB\u610F\u56FE"\u2014\u2014\u521D\u59CB\u610F\u56FE\u4E0D\u5F97\u7701\u7565\u3002
|
|
634
|
+
\u5176\u540E\u624D\u662F\uFF1A\u7528\u6237\u504F\u597D\u3001\u7EA6\u675F\u3001\u6280\u672F\u6808\u3001\u786E\u5B9A\u7684\u6587\u4EF6\u8DEF\u5F84\u3001\u6838\u5FC3\u51B3\u7B56\u3001\u672A\u5B8C\u6210\u5F85\u529E\u3002\u4FDD\u7559\u786E\u5207\u503C\uFF08\u7AEF\u53E3\u53F7\u3001\u7248\u672C\u53F7\u3001\u8DEF\u5F84\u3001\u53D8\u91CF\u540D\u3001\u9519\u8BEF\u4FE1\u606F\u539F\u6587\uFF09\uFF0C\u4E0D\u8981\u6982\u62EC\u6210"\u67D0\u4E2A\u7AEF\u53E3"\u6216"\u67D0\u4E2A\u6587\u4EF6"\u6216"\u67D0\u62A5\u9519"\u3002
|
|
556
635
|
3) \u5BF9\u8BDD\u8FDB\u5C55\u4E0E\u5F85\u529E\u4EE5\u7B2C\u4E00\u4EBA\u79F0\u7EED\u4F5C\u7B14\u8BB0\u7684\u53E3\u543B\u5199\uFF08"\u6211\u505A\u4E86\u2026""\u7528\u6237\u8981\u6C42\u2026""\u4E0B\u4E00\u6B65\u6211\u9700\u8981\u2026"\uFF09\uFF0C\u4E0D\u8981\u5199\u6210\u7B2C\u4E09\u65B9\u89C2\u5BDF\u62A5\u544A\u3002\u5148\u6781\u7B80\u6982\u62EC\u65E7\u4E0A\u4E0B\u6587\uFF0C\u518D\u66F4\u8BE6\u7EC6\u8BB0\u5F55\u6700\u8FD1\u8FDB\u5C55\u3001\u7ED3\u8BBA\u3001\u5206\u6B67\u4E0E\u4E0B\u4E00\u6B65\u3002\u5BF9\u4E8E\u58F0\u79F0\u5DF2\u5B8C\u6210\u4F46\u5C1A\u672A\u9A8C\u8BC1\u7684\u5DE5\u4F5C\uFF08\u5982\u5DE5\u5177\u8C03\u7528\u8FD4\u56DE\u6210\u529F\u4F46\u7ED3\u679C\u672A\u4EBA\u5DE5\u786E\u8BA4\uFF09\uFF0C\u660E\u786E\u6807\u6CE8"\uFF08\u5F85\u9A8C\u8BC1\uFF09"\u2014\u2014\u4E0D\u8981\u9ED8\u8BA4\u4FE1\u4EFB\u5DE5\u5177\u8FD4\u56DE\u503C\u3002
|
|
557
636
|
4) \u6587\u4EF6\u64CD\u4F5C\u6E05\u5355\uFF1A\u5217\u51FA\u672C\u6B21\u538B\u7F29\u8303\u56F4\u5185\u8BFB\u53D6\u3001\u5199\u5165\u3001\u7F16\u8F91\u8FC7\u7684\u6587\u4EF6\u8DEF\u5F84\u53CA\u64CD\u4F5C\u7C7B\u578B\uFF08\u5982: - \u8BFB\u53D6: path/to/file\uFF1B\u82E5\u672A\u6D89\u53CA\u6587\u4EF6\u64CD\u4F5C\u5199"\u65E0"\uFF09\u3002
|
|
558
|
-
5) \u5FFD\u7565\u5BD2\u6684\u3001\u91CD\u590D\u5C1D\u8BD5\
|
|
637
|
+
5) \u5FFD\u7565\u5BD2\u6684\u3001\u91CD\u590D\u5C1D\u8BD5\u548C\u65E0\u4EF7\u503C\u5E9F\u8BDD\uFF1B**\u5DF2\u653E\u5F03\u7684\u65B9\u6848/\u5C1D\u8BD5**\u53EF\u4EE5\u7701\u7565\uFF0C\u4F46\u7528\u6237\u5F53\u521D\u7684\u610F\u56FE\u4E0E\u7406\u7531\u4E0D\u53EF\u7701\u7565\uFF08\u89C1\u7B2C 2 \u6761\uFF09\u3002
|
|
559
638
|
6) \u4E0D\u8981\u7F16\u9020\u672A\u51FA\u73B0\u7684\u4FE1\u606F\uFF1B\u4E0D\u8981\u5F00\u573A\u767D\u3001\u7ED3\u675F\u8BED\u3001markdown \u4EE3\u7801\u5757\u6216\u989D\u5916\u7AE0\u8282\uFF1B\u4E0D\u8981\u8C03\u7528\u4EFB\u4F55\u5DE5\u5177\u3002`;
|
|
560
639
|
function formatMessageContentFallback(msg) {
|
|
561
640
|
const content = serializeMessageContent(msg.content);
|
|
@@ -691,14 +770,6 @@ function formatCompactionMetricsLog(metrics) {
|
|
|
691
770
|
return `[Compaction] reason=${metrics.reason} compressed=${metrics.compressedCount}->${metrics.retainedCount} msgs, tokens=${totalBefore}->${totalAfter} (ratio=${ratio})${llmInfo}`;
|
|
692
771
|
}
|
|
693
772
|
|
|
694
|
-
// packages/core/clipCompactText.ts
|
|
695
|
-
function clipCompactText(value, max, ellipsis = "...") {
|
|
696
|
-
const compact = compactWhitespace(value);
|
|
697
|
-
if (compact.length <= max) return compact;
|
|
698
|
-
if (max <= ellipsis.length) return compact.slice(0, max);
|
|
699
|
-
return `${compact.slice(0, max - ellipsis.length)}${ellipsis}`;
|
|
700
|
-
}
|
|
701
|
-
|
|
702
773
|
// packages/ai/token/providerCallTiming.ts
|
|
703
774
|
var defaultNow = () => {
|
|
704
775
|
const perf = globalThis.performance;
|
|
@@ -770,7 +841,14 @@ var isMeaningfulResponsesOutput = (event) => {
|
|
|
770
841
|
};
|
|
771
842
|
|
|
772
843
|
export {
|
|
773
|
-
|
|
844
|
+
normalizeTimingMs,
|
|
845
|
+
createProviderCallTimingTracker,
|
|
846
|
+
observeMeaningfulProviderResponseAt,
|
|
847
|
+
observeMeaningfulProviderResponse,
|
|
848
|
+
finalizeProviderCallTiming,
|
|
849
|
+
withProviderCallTimingFields,
|
|
850
|
+
isMeaningfulChatCompletionOutput,
|
|
851
|
+
isMeaningfulResponsesOutput,
|
|
774
852
|
planContextUsage,
|
|
775
853
|
buildDatabaseFileContentUrl,
|
|
776
854
|
serializeMessageContent,
|
|
@@ -784,13 +862,5 @@ export {
|
|
|
784
862
|
formatFileOperationsFromMessages,
|
|
785
863
|
formatMessagesForSummaryWithTruncation,
|
|
786
864
|
buildCompactionMetricsFromPlan,
|
|
787
|
-
formatCompactionMetricsLog
|
|
788
|
-
normalizeTimingMs,
|
|
789
|
-
createProviderCallTimingTracker,
|
|
790
|
-
observeMeaningfulProviderResponseAt,
|
|
791
|
-
observeMeaningfulProviderResponse,
|
|
792
|
-
finalizeProviderCallTiming,
|
|
793
|
-
withProviderCallTimingFields,
|
|
794
|
-
isMeaningfulChatCompletionOutput,
|
|
795
|
-
isMeaningfulResponsesOutput
|
|
865
|
+
formatCompactionMetricsLog
|
|
796
866
|
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getModelConfig
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-3BXNTXYI.js";
|
|
4
4
|
import {
|
|
5
5
|
isPlatformHostedDeepseekModel,
|
|
6
6
|
isPlatformHostedOpenAIImageModel,
|
|
7
7
|
resolvePlatformHostedRouting
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-Y3PMXGLH.js";
|
|
9
9
|
import {
|
|
10
10
|
asTrimmedLowercaseString
|
|
11
11
|
} from "./chunk-QSJ3HFEF.js";
|