nolo-cli 0.29.2 → 0.30.0-alpha.10
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-BFVTGZXE.js → _executeModel-5ARVVUIK.js} +64 -69
- package/{action-LG32A6DJ.js → action-HI3VRQLP.js} +15 -16
- package/{addContentAction-MPGMBJTQ.js → addContentAction-NCURJ6PK.js} +13 -13
- package/{addDialogAgentAction-ZH23WDID.js → addDialogAgentAction-RCY4ECF4.js} +12 -12
- package/{agentDeleteCommand-4S4STG42.js → agentDeleteCommand-5Q6TDCJU.js} +62 -40
- package/{agentEmailCommands-3F4IP4DI.js → agentEmailCommands-DSX4BJ2I.js} +77 -81
- package/{agentGrantCommands-JNDE4RWR.js → agentGrantCommands-E7ZZFRHK.js} +2 -1
- package/{agentListCommands-JCRV2XF6.js → agentListCommands-S66HL5RO.js} +59 -41
- package/{agentMachineCommands-KYXPYSFP.js → agentMachineCommands-ULCQ5ZNN.js} +55 -36
- package/{agentPullCommand-ZZGU5KOY.js → agentPullCommand-4V36XNGV.js} +4 -3
- package/{agentRecordCommands-UADUPIXO.js → agentRecordCommands-2AA3GEGO.js} +75 -79
- package/{agentRunCommand-MJWSR53W.js → agentRunCommand-3KOT77XY.js} +79 -83
- package/{agentRunControl-SNUKXN6J.js → agentRunControl-AKBN2366.js} +13 -1
- package/{agentRuntimeLocal-PC5RRRPT.js → agentRuntimeLocal-7TMDJD4S.js} +50 -31
- package/{agentSlice-C5OYLNBT.js → agentSlice-6IQRQZX3.js} +13 -14
- package/{appDeleteCommands-ZXODZ5AD.js → appDeleteCommands-UUDIWLNE.js} +55 -36
- package/{appDeployCommands-AWC6JPZH.js → appDeployCommands-CO6SZ7YP.js} +55 -36
- package/{appDeployStatusCommands-74NXMDAI.js → appDeployStatusCommands-QEVKVECJ.js} +55 -36
- package/{appGetCommands-6YGIAP5L.js → appGetCommands-3YSCCLK4.js} +55 -36
- package/{appListCommands-DZWBHMNK.js → appListCommands-FBJAFZKK.js} +55 -36
- package/{authCommand-XMQHBK5L.js → authCommand-3ADNCFKD.js} +16 -16
- package/{authCommands-JSOG2H4E.js → authCommands-CXJ6PI2O.js} +7 -7
- package/{chunk-TOGGHWHI.js → chunk-2CYGIPJH.js} +3 -3
- package/{chunk-HRJEPMZY.js → chunk-2HQ4OG6N.js} +2 -2
- package/{chunk-XMLRJUU5.js → chunk-2IJAKBK2.js} +12 -10
- package/{chunk-OLWMGSW2.js → chunk-2SOQY5L6.js} +41 -39
- package/{chunk-7H3UTGPM.js → chunk-3AUWC6EM.js} +82 -3
- package/{chunk-6HTWA77J.js → chunk-43EPBPZ2.js} +1 -1
- package/{chunk-RJBTU7AS.js → chunk-4F77PJBR.js} +302 -14
- package/{chunk-RZNYL4LW.js → chunk-4SAV7BD7.js} +65 -1
- package/{chunk-R5V5G73M.js → chunk-5RDLGLAP.js} +0 -1
- package/{chunk-VKBTAQWT.js → chunk-6JH2DF7J.js} +6 -6
- package/{chunk-DZ3XJVET.js → chunk-AOS5IN2I.js} +1 -1
- package/{chunk-5ZXNLOAG.js → chunk-ARPAHODF.js} +17 -10
- package/{chunk-IC7W63RM.js → chunk-ATK5WJOA.js} +4 -4
- package/{chunk-OEWEE4VW.js → chunk-BIPRFBC2.js} +4 -2
- package/{chunk-YTA2QOEE.js → chunk-CAENRKNJ.js} +15 -0
- package/chunk-CYRMUTGB.js +1707 -0
- package/chunk-DCDL3GC4.js +171 -0
- package/{chunk-WX3ZOSTL.js → chunk-EBNSAABL.js} +24 -26
- package/{chunk-2TYLTEAH.js → chunk-EDWM6D6L.js} +1 -1
- package/{chunk-GT3GG2H7.js → chunk-EIQDGAAE.js} +148 -2
- package/chunk-F3MP7CP6.js +73 -0
- package/{chunk-R7LOFGRE.js → chunk-G5GVZAXF.js} +19 -15
- package/{chunk-KEF5OBOZ.js → chunk-GKXS4F2I.js} +33 -27
- package/{chunk-R3JSTDQO.js → chunk-GVPMJPCT.js} +1 -1
- package/{chunk-WMB7GVPN.js → chunk-IPSPETAL.js} +152 -1177
- package/{chunk-MQRZ5QUH.js → chunk-IXZX5CJK.js} +1 -1
- package/{chunk-2FX23RGA.js → chunk-J3LHGBNO.js} +5 -5
- package/{chunk-VHBWHNVT.js → chunk-K6QEHQZ3.js} +8 -4
- package/{chunk-HRPWRVBI.js → chunk-KGEVMUMI.js} +11 -11
- package/{chunk-L65QKSVJ.js → chunk-L3GCUVOH.js} +1 -1
- package/{chunk-G2BZ43DV.js → chunk-LAXMH7JY.js} +14 -14
- package/chunk-LEVCXTDN.js +5558 -0
- package/{chunk-HEXXIS77.js → chunk-N2IX3ZYK.js} +1 -1
- package/{chunk-32ZM6HVI.js → chunk-NZBH7FTB.js} +95 -95
- package/{chunk-XOIF2TNF.js → chunk-OB6FBSH3.js} +13 -0
- package/{chunk-PSK2RUHV.js → chunk-OIW2RJ74.js} +360 -2
- package/{chunk-FRN5QOKN.js → chunk-PACNSC37.js} +19 -4
- package/{chunk-QC6ZWDSV.js → chunk-PIC6Z7VI.js} +3 -3
- package/{chunk-H5S4XUGI.js → chunk-Q243PXRU.js} +185 -158
- package/{chunk-BBGRJB5E.js → chunk-QBOW6RZN.js} +4 -4
- package/{chunk-FVOSIYXM.js → chunk-R5Y4XELF.js} +43 -394
- package/{chunk-DF7SMWEV.js → chunk-RWJPDKPB.js} +1 -1
- package/{chunk-NXMJ55RU.js → chunk-S2BMRBR2.js} +3 -3
- package/{chunk-GC34RRTQ.js → chunk-SWYMCHM7.js} +1 -69
- package/chunk-T27IEBNQ.js +149 -0
- package/{chunk-GMJS5AYP.js → chunk-T4X4GCYT.js} +19 -179
- package/{chunk-4BDPDTJU.js → chunk-TXVSNFHC.js} +8 -8
- package/{chunk-JSB4N6NU.js → chunk-V54H24CQ.js} +3 -3
- package/chunk-VQ4QPCKE.js +3226 -0
- package/{chunk-Q5RXHXKU.js → chunk-W3UDJJMA.js} +189 -122
- package/{chunk-L3QFIBZG.js → chunk-WTGCTVJG.js} +1 -1
- package/{chunk-XS7UPVR7.js → chunk-WTPC3XD4.js} +5 -5
- package/{chunk-WSQLK2KR.js → chunk-XFGM5PJP.js} +6 -6
- package/{chunk-HALKDXKP.js → chunk-XORE26Z4.js} +8 -4
- package/chunk-YLC42PIE.js +7889 -0
- package/{chunk-SKDNBYZK.js → chunk-ZJ2WITOO.js} +2 -2
- package/{chunk-L6RBX4L4.js → chunk-ZJH3LKEW.js} +21 -9
- package/{codingSkills-EN6Z6G6U.js → codingSkills-V35TRR4Y.js} +1 -2
- package/{createAgentAutomationAction-BK4UZJKU.js → createAgentAutomationAction-EYNYY2LB.js} +31 -37
- package/{createDialogAction-MJJUI2MK.js → createDialogAction-OUIRWYZP.js} +34 -39
- package/{createPageAction-YMZ7K363.js → createPageAction-2I5PHJFF.js} +45 -51
- package/{dbSlice-6QJYQUBV.js → dbSlice-BBL3PEVW.js} +12 -12
- package/{deleteFile-WDZ3VM7B.js → deleteFile-RJTEPOT4.js} +6 -6
- package/{dialogCommands-OKH45ASS.js → dialogCommands-5CL4QYQ7.js} +55 -38
- package/{dialogSlice-UDOKNDHB.js → dialogSlice-EKKVFKBJ.js} +28 -35
- package/{docCreateCommands-MCLMR4TE.js → docCreateCommands-QHCLYGNW.js} +54 -37
- package/{docDeleteCommands-ONDHI7JV.js → docDeleteCommands-DS6KOU6N.js} +56 -39
- package/{docReadCommands-FCXBMISW.js → docReadCommands-FRI5DAKH.js} +54 -37
- package/{docStore-N66O4CGH.js → docStore-V7EJS4PX.js} +30 -36
- package/{docUpdateCommands-T3XN6XOX.js → docUpdateCommands-RQO5ZTXT.js} +57 -40
- package/{fetchMessages-W4IKHPCS.js → fetchMessages-VPPQDDZ4.js} +3 -3
- package/{getPricing-X6I23RN6.js → getPricing-67TQVKFV.js} +6 -7
- package/{handleSendMessageAction-KC4AYUZP.js → handleSendMessageAction-KCF7KII4.js} +30 -37
- package/index.js +72 -72
- package/{localDialogRead-UFLBS6OT.js → localDialogRead-P72W2U2R.js} +1 -1
- package/{machineCommands-DIMRFA3Y.js → machineCommands-IAGAKTHV.js} +78 -82
- package/{machineWsRunDispatch-2DYJZI6Z.js → machineWsRunDispatch-JGKC2HEK.js} +73 -77
- package/{models-YT32CTT5.js → models-WDUTTYFS.js} +2 -2
- package/{offlineMarxistsAgentCommand-5OOWZLJI.js → offlineMarxistsAgentCommand-E6LUG63A.js} +6 -2
- package/package.json +1 -1
- package/{read-C7Y6LSBM.js → read-64OQDO3I.js} +7 -7
- package/{readDocTool-TOHRYJHP.js → readDocTool-MXM3T6PE.js} +2 -1
- package/{readlineWorkspace-HUPHMLDG.js → readlineWorkspace-5AQHHIBK.js} +209 -183
- package/{removeDialogAgentAction-WZXPOH5S.js → removeDialogAgentAction-NEKVAMSH.js} +16 -17
- package/{runAgentClientLoop-5TGSUKHV.js → runAgentClientLoop-6OGPS6SI.js} +63 -67
- package/{setDialogExtraReferencesAction-INZY2ENI.js → setDialogExtraReferencesAction-WTOHQDIV.js} +13 -13
- package/{setPrimaryDialogAgentAction-WCVLPYCF.js → setPrimaryDialogAgentAction-LDJOYC4F.js} +16 -17
- package/{settingSlice-IDUM4LWU.js → settingSlice-4M37TN7V.js} +14 -15
- package/{skillDiscovery-ITA7BI7A.js → skillDiscovery-I3QRA7NE.js} +2 -2
- package/{spaceCommands-XSSDB3YK.js → spaceCommands-VTDNKTSF.js} +240 -41
- package/{spaceSlice-BXDCO6PT.js → spaceSlice-LGUZMB7Y.js} +29 -35
- package/{streamAgentChatTurn-HRFMVSVC.js → streamAgentChatTurn-TIGCZUNZ.js} +133 -1301
- package/{switchDialogAgentAction-YBFFCBOD.js → switchDialogAgentAction-XVWGKR2Z.js} +12 -12
- package/{tableCommands-QSZILI7I.js → tableCommands-RJZ3V4TF.js} +7 -7
- package/{toolApiClient-WVTUYOFM.js → toolApiClient-ARGFDJAG.js} +2 -2
- package/{tools-5V6FHWQU.js → tools-BQAOPYMR.js} +51 -56
- package/{tuiSummaryLlmCaller-GCUPULOV.js → tuiSummaryLlmCaller-YQBN5IMG.js} +12 -12
- package/{updateDialogTitleAction-W62C4W4K.js → updateDialogTitleAction-E6HMEDPH.js} +39 -45
- package/chunk-5CS33IBL.js +0 -301
- package/chunk-5MMAK75Q.js +0 -15
- package/chunk-HYSJHRWD.js +0 -669
- package/chunk-MRC4Q34M.js +0 -188
- package/chunk-SIZQB7BD.js +0 -91
- package/chunk-UEOPA6MV.js +0 -641
- package/chunk-UFL6WHHJ.js +0 -15419
- package/chunk-VIDPVFP3.js +0 -20
- package/chunk-W2LZV5GE.js +0 -231
- package/chunk-Y5GCAMGP.js +0 -9
- package/chunk-YYLHWIW6.js +0 -48
- package/chunk-Z54ZAZZC.js +0 -1791
- package/chunk-ZZ2MH7LE.js +0 -84
- package/{chunk-OMP5L5NF.js → chunk-44HACRCK.js} +3 -3
- package/{chunk-ZVZMT3EA.js → chunk-KWCLUYGQ.js} +3 -3
- package/{chunk-NRY4GCKJ.js → chunk-WHLVPK32.js} +3 -3
- package/{chunk-RQSOAMPJ.js → chunk-Z5MXSEOJ.js} +2 -2
- package/{runtimeDoctorCommands-HSU632DY.js → runtimeDoctorCommands-E2OUORHK.js} +3 -3
package/chunk-HYSJHRWD.js
DELETED
|
@@ -1,669 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
MODEL_LOOKUP_MAP
|
|
3
|
-
} from "./chunk-GT3GG2H7.js";
|
|
4
|
-
import {
|
|
5
|
-
ALL_MODELS
|
|
6
|
-
} from "./chunk-L3QFIBZG.js";
|
|
7
|
-
import {
|
|
8
|
-
addContentAction
|
|
9
|
-
} from "./chunk-JSB4N6NU.js";
|
|
10
|
-
import {
|
|
11
|
-
upload
|
|
12
|
-
} from "./chunk-G2BZ43DV.js";
|
|
13
|
-
import {
|
|
14
|
-
PUBLIC_DEEPSEEK_V4_FLASH_AGENT_KEY,
|
|
15
|
-
PUBLIC_KIMI_K26_IMAGE_AGENT_KEY,
|
|
16
|
-
builtinRuntimeFallbackEntries
|
|
17
|
-
} from "./chunk-L6RBX4L4.js";
|
|
18
|
-
import {
|
|
19
|
-
getRuntimeServerContext
|
|
20
|
-
} from "./chunk-XMLRJUU5.js";
|
|
21
|
-
import {
|
|
22
|
-
publicAgentKey
|
|
23
|
-
} from "./chunk-TOW4E763.js";
|
|
24
|
-
import {
|
|
25
|
-
API_ENDPOINTS
|
|
26
|
-
} from "./chunk-LCBAMY2M.js";
|
|
27
|
-
import {
|
|
28
|
-
normalizeServerOrigin
|
|
29
|
-
} from "./chunk-CF7PE763.js";
|
|
30
|
-
|
|
31
|
-
// packages/agent-runtime/builtinPlatformAgentConfigs.ts
|
|
32
|
-
function buildConfig(e) {
|
|
33
|
-
const key = publicAgentKey(e.id);
|
|
34
|
-
const rawRecord = {
|
|
35
|
-
dbKey: key,
|
|
36
|
-
isPublic: true,
|
|
37
|
-
provider: e.provider,
|
|
38
|
-
model: e.model,
|
|
39
|
-
apiSource: e.apiSource ?? "platform",
|
|
40
|
-
useServerProxy: e.useServerProxy ?? true
|
|
41
|
-
};
|
|
42
|
-
if (e.hasImageOutput) rawRecord.hasImageOutput = true;
|
|
43
|
-
if (e.imageModel) rawRecord.imageModel = e.imageModel;
|
|
44
|
-
if (e.imageWorkflow) rawRecord.imageWorkflow = e.imageWorkflow;
|
|
45
|
-
if (e.imageConfig) rawRecord.imageConfig = e.imageConfig;
|
|
46
|
-
return {
|
|
47
|
-
key,
|
|
48
|
-
name: e.name,
|
|
49
|
-
provider: e.provider,
|
|
50
|
-
model: e.model,
|
|
51
|
-
apiSource: e.apiSource ?? "platform",
|
|
52
|
-
useServerProxy: e.useServerProxy ?? true,
|
|
53
|
-
rawRecord
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
var BUILTIN_PLATFORM_AGENT_CONFIGS = Object.fromEntries(
|
|
57
|
-
builtinRuntimeFallbackEntries().map((e) => [publicAgentKey(e.id), buildConfig(e)])
|
|
58
|
-
);
|
|
59
|
-
function resolveBuiltinPlatformAgentConfig(agentRef) {
|
|
60
|
-
return BUILTIN_PLATFORM_AGENT_CONFIGS[agentRef] ?? null;
|
|
61
|
-
}
|
|
62
|
-
function resolveBuiltinPlatformAgentRecord(agentRef) {
|
|
63
|
-
const config = resolveBuiltinPlatformAgentConfig(agentRef);
|
|
64
|
-
if (!config) return null;
|
|
65
|
-
return {
|
|
66
|
-
...config.rawRecord,
|
|
67
|
-
dbKey: agentRef,
|
|
68
|
-
...config.name ? { name: config.name } : {}
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// packages/ai/context/tokenUtils.ts
|
|
73
|
-
var estimateTokenCount = (text) => {
|
|
74
|
-
if (!text) return 0;
|
|
75
|
-
const chineseChars = (text.match(/[\u4e00-\u9fa5\u3400-\u4dbf]/g) || []).length;
|
|
76
|
-
const otherChars = text.length - chineseChars;
|
|
77
|
-
return Math.ceil(chineseChars * 1.5 + otherChars * 0.25);
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
// packages/ai/llm/getModelContextWindow.ts
|
|
81
|
-
var DEFAULT_CONTEXT_WINDOW = 256e3;
|
|
82
|
-
var QWEN_3_6_CONTEXT_WINDOW = 262144;
|
|
83
|
-
var GLM_5_2_CONTEXT_WINDOW = 1e6;
|
|
84
|
-
var ANTIGRAVITY_EFFORT_SUFFIXES = [
|
|
85
|
-
"-tiered",
|
|
86
|
-
"-extra-low",
|
|
87
|
-
"-low",
|
|
88
|
-
"-medium",
|
|
89
|
-
"-high"
|
|
90
|
-
];
|
|
91
|
-
function stripEffortSuffix(model) {
|
|
92
|
-
for (const suffix of ANTIGRAVITY_EFFORT_SUFFIXES) {
|
|
93
|
-
if (model.endsWith(suffix) && model.length > suffix.length) {
|
|
94
|
-
return model.slice(0, -suffix.length);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
return model;
|
|
98
|
-
}
|
|
99
|
-
function stripPreviewSuffix(model) {
|
|
100
|
-
const suffix = "-preview";
|
|
101
|
-
if (model.endsWith(suffix) && model.length > suffix.length) {
|
|
102
|
-
return model.slice(0, -suffix.length);
|
|
103
|
-
}
|
|
104
|
-
return model;
|
|
105
|
-
}
|
|
106
|
-
var fullModelMap = null;
|
|
107
|
-
var getFullModelMap = () => {
|
|
108
|
-
if (!fullModelMap) {
|
|
109
|
-
fullModelMap = /* @__PURE__ */ new Map();
|
|
110
|
-
for (const [provider, models] of Object.entries(MODEL_LOOKUP_MAP)) {
|
|
111
|
-
for (const model of models) {
|
|
112
|
-
const entry = { ...model, provider };
|
|
113
|
-
fullModelMap.set(model.name, entry);
|
|
114
|
-
if (model.displayName) {
|
|
115
|
-
fullModelMap.set(model.displayName.toLowerCase(), entry);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
return fullModelMap;
|
|
121
|
-
};
|
|
122
|
-
var legacyModelMap = null;
|
|
123
|
-
var getLegacyModelMap = () => {
|
|
124
|
-
if (!legacyModelMap) {
|
|
125
|
-
legacyModelMap = /* @__PURE__ */ new Map();
|
|
126
|
-
for (const model of ALL_MODELS) {
|
|
127
|
-
legacyModelMap.set(model.name, model);
|
|
128
|
-
if (model.displayName) {
|
|
129
|
-
legacyModelMap.set(model.displayName.toLowerCase(), model);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return legacyModelMap;
|
|
134
|
-
};
|
|
135
|
-
function fuzzyContextWindow(normalizedName) {
|
|
136
|
-
if (normalizedName.includes("qwen-long") || normalizedName.includes("qwen3-long")) return 10485760;
|
|
137
|
-
if (normalizedName.includes("qwen-coder") || normalizedName.includes("qwen3-coder")) return 1048576;
|
|
138
|
-
if (normalizedName.includes("qwen3.8") || normalizedName.includes("qwen3p8")) return 1e6;
|
|
139
|
-
if (normalizedName.includes("minimax-m3") || normalizedName.includes("minimax_m3")) return 1e6;
|
|
140
|
-
if (normalizedName.includes("glm-5.2") || normalizedName.includes("glm5.2")) return GLM_5_2_CONTEXT_WINDOW;
|
|
141
|
-
if (normalizedName.includes("deepseek")) return 1e6;
|
|
142
|
-
if (normalizedName.includes("gpt-5") || normalizedName.includes("gpt-4.1")) return 1047576;
|
|
143
|
-
if (normalizedName.startsWith("cursor-grok-4.5")) return 1e6;
|
|
144
|
-
if (normalizedName.includes("claude-4.6")) return 1e6;
|
|
145
|
-
if (normalizedName.includes("gemini-3.1")) return 1e6;
|
|
146
|
-
if (normalizedName.includes("gemini")) return 1048576;
|
|
147
|
-
if (normalizedName.includes("qwen3.6") || normalizedName.includes("qwen3p6")) return QWEN_3_6_CONTEXT_WINDOW;
|
|
148
|
-
if (normalizedName.includes("qwen3.7") || normalizedName.includes("qwen3p7")) return 262144;
|
|
149
|
-
if (normalizedName.includes("minimax-m2") || normalizedName.includes("minimax_m2")) return 262144;
|
|
150
|
-
if (normalizedName.includes("claude")) return 2e5;
|
|
151
|
-
return void 0;
|
|
152
|
-
}
|
|
153
|
-
var getModelContextWindow = (modelName) => {
|
|
154
|
-
if (!modelName) return DEFAULT_CONTEXT_WINDOW;
|
|
155
|
-
const normalizedName = modelName.toLowerCase();
|
|
156
|
-
const map = getFullModelMap();
|
|
157
|
-
const candidates = [modelName, normalizedName];
|
|
158
|
-
const strippedEffort = stripEffortSuffix(modelName);
|
|
159
|
-
if (strippedEffort !== modelName) {
|
|
160
|
-
candidates.push(strippedEffort, strippedEffort.toLowerCase());
|
|
161
|
-
}
|
|
162
|
-
const strippedPreview = stripPreviewSuffix(modelName);
|
|
163
|
-
if (strippedPreview !== modelName) {
|
|
164
|
-
candidates.push(strippedPreview, strippedPreview.toLowerCase());
|
|
165
|
-
}
|
|
166
|
-
if (strippedEffort !== modelName) {
|
|
167
|
-
const strippedBoth = stripPreviewSuffix(strippedEffort);
|
|
168
|
-
if (strippedBoth !== strippedEffort) {
|
|
169
|
-
candidates.push(strippedBoth, strippedBoth.toLowerCase());
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
for (const candidate of candidates) {
|
|
173
|
-
const model = map.get(candidate);
|
|
174
|
-
if (model?.contextWindow) {
|
|
175
|
-
return typeof model.contextWindow === "number" ? model.contextWindow : DEFAULT_CONTEXT_WINDOW;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
return fuzzyContextWindow(normalizedName) ?? DEFAULT_CONTEXT_WINDOW;
|
|
179
|
-
};
|
|
180
|
-
var getModelInfo = (modelName) => {
|
|
181
|
-
if (!modelName) return null;
|
|
182
|
-
const map = getLegacyModelMap();
|
|
183
|
-
return map.get(modelName) || map.get(modelName.toLowerCase()) || null;
|
|
184
|
-
};
|
|
185
|
-
|
|
186
|
-
// packages/core/chat/messageContentSerialize.ts
|
|
187
|
-
var serializeMessageContent = (content, imagePlaceholder = "[\u56FE\u7247]") => {
|
|
188
|
-
if (typeof content === "string") {
|
|
189
|
-
return content.trim() || null;
|
|
190
|
-
}
|
|
191
|
-
if (Array.isArray(content)) {
|
|
192
|
-
const fragments = [];
|
|
193
|
-
for (const part of content) {
|
|
194
|
-
if (!part || typeof part !== "object") continue;
|
|
195
|
-
if (part.type === "text" && typeof part.text === "string") {
|
|
196
|
-
const text = part.text.trim();
|
|
197
|
-
if (text) fragments.push(text);
|
|
198
|
-
} else if (part.type === "image_url") {
|
|
199
|
-
fragments.push(imagePlaceholder);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
const joined = fragments.join("\n").trim();
|
|
203
|
-
return joined || null;
|
|
204
|
-
}
|
|
205
|
-
return null;
|
|
206
|
-
};
|
|
207
|
-
|
|
208
|
-
// packages/app/utils/imageUtils.ts
|
|
209
|
-
var BYTES_PER_MB = 1024 * 1024;
|
|
210
|
-
var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
211
|
-
var parseDataUrl = (dataUrl) => {
|
|
212
|
-
const trimmed = dataUrl.trim();
|
|
213
|
-
const parts = trimmed.split(",");
|
|
214
|
-
if (parts.length < 2 || !parts[0] || !parts[1]) {
|
|
215
|
-
console.warn("[imageUtils] parseDataUrl: invalid data URL", {
|
|
216
|
-
hasHeader: !!parts[0],
|
|
217
|
-
hasBody: !!parts[1]
|
|
218
|
-
});
|
|
219
|
-
return null;
|
|
220
|
-
}
|
|
221
|
-
const header = parts[0];
|
|
222
|
-
const base64 = parts[1];
|
|
223
|
-
const mimeMatch = header.match(/:(.*?);/);
|
|
224
|
-
const mime = mimeMatch?.[1];
|
|
225
|
-
if (!mime) {
|
|
226
|
-
console.warn("[imageUtils] parseDataUrl: cannot extract mime from", header);
|
|
227
|
-
return null;
|
|
228
|
-
}
|
|
229
|
-
return { mime, base64 };
|
|
230
|
-
};
|
|
231
|
-
function dataURLtoFile(dataUrl, filename) {
|
|
232
|
-
try {
|
|
233
|
-
const parsed = parseDataUrl(dataUrl);
|
|
234
|
-
if (!parsed) return null;
|
|
235
|
-
const { mime, base64 } = parsed;
|
|
236
|
-
const binaryString = atob(base64);
|
|
237
|
-
const length = binaryString.length;
|
|
238
|
-
const u8arr = new Uint8Array(length);
|
|
239
|
-
for (let i = 0; i < length; i++) {
|
|
240
|
-
u8arr[i] = binaryString.charCodeAt(i);
|
|
241
|
-
}
|
|
242
|
-
return new File([u8arr], filename, { type: mime });
|
|
243
|
-
} catch (error) {
|
|
244
|
-
console.error("[imageUtils] Error converting data URL to File:", error);
|
|
245
|
-
return null;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
var appendNoCacheQuery = (url) => {
|
|
249
|
-
const stamp = `_t=${Date.now()}`;
|
|
250
|
-
return url.includes("?") ? `${url}&${stamp}` : `${url}?${stamp}`;
|
|
251
|
-
};
|
|
252
|
-
var tryLoadImage = (url) => new Promise((resolve) => {
|
|
253
|
-
const img = new Image();
|
|
254
|
-
const cleanup = () => {
|
|
255
|
-
img.onload = null;
|
|
256
|
-
img.onerror = null;
|
|
257
|
-
};
|
|
258
|
-
img.onload = () => {
|
|
259
|
-
cleanup();
|
|
260
|
-
resolve(true);
|
|
261
|
-
};
|
|
262
|
-
img.onerror = () => {
|
|
263
|
-
cleanup();
|
|
264
|
-
resolve(false);
|
|
265
|
-
};
|
|
266
|
-
img.src = url;
|
|
267
|
-
});
|
|
268
|
-
var waitForFileReady = async (url, {
|
|
269
|
-
maxWaitMs = 4e3,
|
|
270
|
-
intervalMs = 250
|
|
271
|
-
} = {}) => {
|
|
272
|
-
const start = Date.now();
|
|
273
|
-
while (Date.now() - start < maxWaitMs) {
|
|
274
|
-
const tryUrl = appendNoCacheQuery(url);
|
|
275
|
-
const ok = await tryLoadImage(tryUrl);
|
|
276
|
-
if (ok) {
|
|
277
|
-
console.debug("[imageUtils] waitForFileReady: image loaded for", url);
|
|
278
|
-
return true;
|
|
279
|
-
}
|
|
280
|
-
await sleep(intervalMs);
|
|
281
|
-
}
|
|
282
|
-
console.warn("[imageUtils] waitForFileReady: timeout for", url);
|
|
283
|
-
return false;
|
|
284
|
-
};
|
|
285
|
-
|
|
286
|
-
// packages/database/fileUrl.ts
|
|
287
|
-
var normalizeFileId = (fileId) => {
|
|
288
|
-
if (typeof fileId !== "string") return "";
|
|
289
|
-
return fileId.trim();
|
|
290
|
-
};
|
|
291
|
-
var buildDatabaseFileContentUrl = (serverOrigin, fileId) => {
|
|
292
|
-
const normalizedServer = normalizeServerOrigin(serverOrigin);
|
|
293
|
-
const normalizedFileId = normalizeFileId(fileId);
|
|
294
|
-
if (!normalizedServer || !normalizedFileId) {
|
|
295
|
-
return null;
|
|
296
|
-
}
|
|
297
|
-
return `${normalizedServer}${API_ENDPOINTS.DATABASE}/file/content/${normalizedFileId}`;
|
|
298
|
-
};
|
|
299
|
-
|
|
300
|
-
// packages/chat/messages/fileUrl.ts
|
|
301
|
-
var buildMessageFileContentUrl = (serverOrigin, fileId) => buildDatabaseFileContentUrl(serverOrigin, fileId);
|
|
302
|
-
|
|
303
|
-
// packages/chat/messages/imagePayloadPersistence.ts
|
|
304
|
-
var stripDurableImageInlinePayload = (part) => {
|
|
305
|
-
if (!part || typeof part !== "object") return part;
|
|
306
|
-
const { original_data_url: _originalDataUrl, ...withoutOriginalDataUrl } = part;
|
|
307
|
-
if (withoutOriginalDataUrl.type !== "image_url" || !withoutOriginalDataUrl.google_native || typeof withoutOriginalDataUrl.google_native !== "object") {
|
|
308
|
-
return withoutOriginalDataUrl;
|
|
309
|
-
}
|
|
310
|
-
const { google_native: _googleNative, ...durablePart } = withoutOriginalDataUrl;
|
|
311
|
-
return durablePart;
|
|
312
|
-
};
|
|
313
|
-
|
|
314
|
-
// packages/chat/messages/messageContent.ts
|
|
315
|
-
var isDataUrlImage = (url) => typeof url === "string" && url.startsWith("data:image");
|
|
316
|
-
var uploadGeneratedImageDataUrl = async (url, dialogId, messageId, index, dispatch, getState, options) => {
|
|
317
|
-
const fileName = `generated-image-${dialogId}-${messageId}-${index}.png`;
|
|
318
|
-
const file = dataURLtoFile(url, fileName);
|
|
319
|
-
if (!file) {
|
|
320
|
-
console.warn(
|
|
321
|
-
"[messageContent] dataURLtoFile failed, drop generated image inline payload"
|
|
322
|
-
);
|
|
323
|
-
return null;
|
|
324
|
-
}
|
|
325
|
-
const customKey = `generated-image-${dialogId}-${messageId}-${index}`;
|
|
326
|
-
let metadata;
|
|
327
|
-
try {
|
|
328
|
-
metadata = await dispatch(upload({ file, customKey })).unwrap();
|
|
329
|
-
} catch (err) {
|
|
330
|
-
console.warn(
|
|
331
|
-
"[messageContent] upload generated image failed, drop inline payload:",
|
|
332
|
-
err
|
|
333
|
-
);
|
|
334
|
-
return null;
|
|
335
|
-
}
|
|
336
|
-
const state = getState();
|
|
337
|
-
const { currentServer } = getRuntimeServerContext(state);
|
|
338
|
-
const fileId = metadata?.dbKey || metadata?.id;
|
|
339
|
-
if (!currentServer || !fileId) {
|
|
340
|
-
console.warn(
|
|
341
|
-
"[messageContent] missing currentServer or fileId, drop inline payload",
|
|
342
|
-
{ currentServer, fileId }
|
|
343
|
-
);
|
|
344
|
-
return null;
|
|
345
|
-
}
|
|
346
|
-
if (options?.spaceId) {
|
|
347
|
-
try {
|
|
348
|
-
const agentPrefix = options.agentName ? `[${options.agentName}] ` : "";
|
|
349
|
-
const title = `${agentPrefix}Generated Image ${index + 1}`;
|
|
350
|
-
await addContentAction({
|
|
351
|
-
spaceId: options.spaceId,
|
|
352
|
-
contentKey: fileId,
|
|
353
|
-
title,
|
|
354
|
-
type: "image" /* IMAGE */
|
|
355
|
-
}, { dispatch, getState });
|
|
356
|
-
console.log(`[messageContent] Saved generated image to space: ${options.spaceId}`);
|
|
357
|
-
} catch (err) {
|
|
358
|
-
console.error("[messageContent] Failed to save generated image to space:", err);
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
const imageUrl = buildMessageFileContentUrl(currentServer, fileId);
|
|
362
|
-
if (!imageUrl) {
|
|
363
|
-
return null;
|
|
364
|
-
}
|
|
365
|
-
const ready = await waitForFileReady(imageUrl);
|
|
366
|
-
if (!ready) {
|
|
367
|
-
console.warn(
|
|
368
|
-
"[messageContent] uploaded generated image not ready, drop inline payload:",
|
|
369
|
-
imageUrl
|
|
370
|
-
);
|
|
371
|
-
return null;
|
|
372
|
-
}
|
|
373
|
-
return imageUrl;
|
|
374
|
-
};
|
|
375
|
-
var normalizeAssistantContentBuffer = async (contentBuffer, dialogId, messageId, dispatch, getState, options) => {
|
|
376
|
-
if (!Array.isArray(contentBuffer) || contentBuffer.length === 0) {
|
|
377
|
-
return contentBuffer;
|
|
378
|
-
}
|
|
379
|
-
const updated = await Promise.all(
|
|
380
|
-
contentBuffer.map(async (part, index) => {
|
|
381
|
-
if (!part || part.type !== "image_url" || !part.image_url || !isDataUrlImage(part.image_url.url)) {
|
|
382
|
-
return part;
|
|
383
|
-
}
|
|
384
|
-
const newUrl = await uploadGeneratedImageDataUrl(
|
|
385
|
-
part.image_url.url,
|
|
386
|
-
dialogId,
|
|
387
|
-
messageId,
|
|
388
|
-
index,
|
|
389
|
-
dispatch,
|
|
390
|
-
getState,
|
|
391
|
-
options
|
|
392
|
-
);
|
|
393
|
-
if (!newUrl) {
|
|
394
|
-
return {
|
|
395
|
-
type: "text",
|
|
396
|
-
text: "[\u56FE\u7247\u4FDD\u5B58\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u751F\u6210\u56FE\u7247]"
|
|
397
|
-
};
|
|
398
|
-
}
|
|
399
|
-
return stripDurableImageInlinePayload({
|
|
400
|
-
...part,
|
|
401
|
-
image_url: {
|
|
402
|
-
...part.image_url,
|
|
403
|
-
url: newUrl
|
|
404
|
-
}
|
|
405
|
-
});
|
|
406
|
-
})
|
|
407
|
-
);
|
|
408
|
-
return updated;
|
|
409
|
-
};
|
|
410
|
-
|
|
411
|
-
// packages/ai/context/retention.ts
|
|
412
|
-
var SAFE_BUFFER_RATIO = 0.95;
|
|
413
|
-
var CACHE_FIRST_RETENTION_STRENGTH = 0.95;
|
|
414
|
-
var clamp = (v, min, max) => Math.min(max, Math.max(min, v));
|
|
415
|
-
var planContextUsage = (params) => {
|
|
416
|
-
const { contextWindow, summaryTokens, recentLoad } = params;
|
|
417
|
-
const safeWindowLimit = Math.floor(contextWindow * SAFE_BUFFER_RATIO);
|
|
418
|
-
const iq = CACHE_FIRST_RETENTION_STRENGTH;
|
|
419
|
-
const isLargeWindow = contextWindow >= 512e3;
|
|
420
|
-
const isSmallWindow = contextWindow <= 64e3;
|
|
421
|
-
let baseHistoryRatio;
|
|
422
|
-
if (isLargeWindow) {
|
|
423
|
-
baseHistoryRatio = 0.8 + 0.2 * iq;
|
|
424
|
-
} else if (isSmallWindow) {
|
|
425
|
-
baseHistoryRatio = 0.35 + 0.3 * iq;
|
|
426
|
-
} else {
|
|
427
|
-
baseHistoryRatio = 0.55 + 0.3 * iq;
|
|
428
|
-
}
|
|
429
|
-
let historyRatio = baseHistoryRatio;
|
|
430
|
-
switch (recentLoad) {
|
|
431
|
-
case "light": {
|
|
432
|
-
const maxRatio = isLargeWindow ? 1 : isSmallWindow ? 0.75 : 0.85;
|
|
433
|
-
historyRatio = clamp(historyRatio * 1.05, 0.3, maxRatio);
|
|
434
|
-
break;
|
|
435
|
-
}
|
|
436
|
-
case "heavy": {
|
|
437
|
-
const maxRatio = isLargeWindow ? 0.98 : isSmallWindow ? 0.7 : 0.8;
|
|
438
|
-
const multiplier = isLargeWindow ? 0.98 : isSmallWindow ? 0.9 : 0.9;
|
|
439
|
-
historyRatio = clamp(historyRatio * multiplier, 0.3, maxRatio);
|
|
440
|
-
break;
|
|
441
|
-
}
|
|
442
|
-
case "medium":
|
|
443
|
-
default: {
|
|
444
|
-
const maxRatio = isLargeWindow ? 1 : isSmallWindow ? 0.75 : 0.85;
|
|
445
|
-
historyRatio = clamp(historyRatio, 0.3, maxRatio);
|
|
446
|
-
break;
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
const historyBudget = Math.max(
|
|
450
|
-
0,
|
|
451
|
-
Math.floor(safeWindowLimit * historyRatio)
|
|
452
|
-
);
|
|
453
|
-
const minRawRatio = isSmallWindow ? 0.5 : isLargeWindow ? 0.2 : 0.3;
|
|
454
|
-
const rawMessageBudget = Math.max(
|
|
455
|
-
Math.floor(historyBudget * minRawRatio),
|
|
456
|
-
historyBudget - summaryTokens,
|
|
457
|
-
0
|
|
458
|
-
);
|
|
459
|
-
let minTailTokens;
|
|
460
|
-
if (recentLoad === "light") {
|
|
461
|
-
minTailTokens = Math.min(
|
|
462
|
-
Math.floor(safeWindowLimit * 0.3),
|
|
463
|
-
8e3
|
|
464
|
-
);
|
|
465
|
-
} else if (recentLoad === "heavy") {
|
|
466
|
-
minTailTokens = Math.max(
|
|
467
|
-
Math.floor(safeWindowLimit * 0.25),
|
|
468
|
-
16e3
|
|
469
|
-
);
|
|
470
|
-
} else {
|
|
471
|
-
minTailTokens = Math.floor(safeWindowLimit * 0.2);
|
|
472
|
-
}
|
|
473
|
-
return { historyBudget, rawMessageBudget, minTailTokens };
|
|
474
|
-
};
|
|
475
|
-
|
|
476
|
-
// packages/ai/context/planCompression.ts
|
|
477
|
-
var MIN_COMPRESS_COUNT = 5;
|
|
478
|
-
var ACTIVE_SUMMARY_TAIL_KEEP_COUNT = 2;
|
|
479
|
-
var getMessageTokenCount = (msg) => {
|
|
480
|
-
if (msg.usage?.completion_tokens) {
|
|
481
|
-
return msg.usage.completion_tokens;
|
|
482
|
-
}
|
|
483
|
-
const content = serializeMessageContent(msg.content) || "";
|
|
484
|
-
return estimateTokenCount(content);
|
|
485
|
-
};
|
|
486
|
-
var hasOpenEndedToolCall = (msg) => !!msg && Array.isArray(msg.tool_calls) && msg.tool_calls.length > 0;
|
|
487
|
-
var isActiveSummaryWorthDoing = (pendingTokens, contextWindow) => {
|
|
488
|
-
const minTokens = Math.min(
|
|
489
|
-
4e4,
|
|
490
|
-
Math.max(1e4, Math.floor(contextWindow * 0.05))
|
|
491
|
-
);
|
|
492
|
-
return pendingTokens >= minTokens;
|
|
493
|
-
};
|
|
494
|
-
var classifyConversationLoad = (msgs) => {
|
|
495
|
-
const N = 20;
|
|
496
|
-
if (!Array.isArray(msgs) || msgs.length === 0) return "light";
|
|
497
|
-
const tail = msgs.slice(-N);
|
|
498
|
-
const tokenSamples = tail.map(getMessageTokenCount);
|
|
499
|
-
if (tokenSamples.length === 0) return "light";
|
|
500
|
-
const sum = tokenSamples.reduce((acc, v) => acc + v, 0);
|
|
501
|
-
const avg = sum / tokenSamples.length;
|
|
502
|
-
const sorted = [...tokenSamples].sort((a, b) => a - b);
|
|
503
|
-
const p95 = sorted[Math.floor((sorted.length - 1) * 0.95)];
|
|
504
|
-
if (p95 < 200 && avg < 120) {
|
|
505
|
-
return "light";
|
|
506
|
-
}
|
|
507
|
-
if (p95 > 2e3 || avg > 1200) {
|
|
508
|
-
return "heavy";
|
|
509
|
-
}
|
|
510
|
-
return "medium";
|
|
511
|
-
};
|
|
512
|
-
var normalizeContextUsageRatio = (value) => {
|
|
513
|
-
if (typeof value !== "number" || !Number.isFinite(value)) return void 0;
|
|
514
|
-
const ratio = value > 1 ? value / 100 : value;
|
|
515
|
-
return ratio >= 0 && ratio <= 1 ? ratio : void 0;
|
|
516
|
-
};
|
|
517
|
-
var emptyPlan = (startIndex) => ({
|
|
518
|
-
shouldCompress: false,
|
|
519
|
-
compressCount: 0,
|
|
520
|
-
msgsToCompress: [],
|
|
521
|
-
msgsToKeep: [],
|
|
522
|
-
newSummarizedBeforeId: void 0,
|
|
523
|
-
startIndex
|
|
524
|
-
});
|
|
525
|
-
function planCompression(input) {
|
|
526
|
-
const {
|
|
527
|
-
allMsgs,
|
|
528
|
-
summarizedBeforeId,
|
|
529
|
-
summary,
|
|
530
|
-
contextWindow,
|
|
531
|
-
force = false,
|
|
532
|
-
reason,
|
|
533
|
-
realContextUsagePercent
|
|
534
|
-
} = input;
|
|
535
|
-
let startIndex = 0;
|
|
536
|
-
if (summarizedBeforeId) {
|
|
537
|
-
const found = allMsgs.findIndex((m) => m.id === summarizedBeforeId);
|
|
538
|
-
if (found !== -1) {
|
|
539
|
-
startIndex = found + 1;
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
const pendingMsgs = allMsgs.slice(startIndex);
|
|
543
|
-
if (pendingMsgs.length === 0) {
|
|
544
|
-
return emptyPlan(startIndex);
|
|
545
|
-
}
|
|
546
|
-
const summaryTokens = estimateTokenCount(summary || "");
|
|
547
|
-
const pendingTokens = pendingMsgs.reduce(
|
|
548
|
-
(sum, msg) => sum + getMessageTokenCount(msg),
|
|
549
|
-
0
|
|
550
|
-
);
|
|
551
|
-
const totalUsed = summaryTokens + pendingTokens;
|
|
552
|
-
const adjustedSummaryTokens = Math.max(summaryTokens, 1e3);
|
|
553
|
-
const recentLoad = classifyConversationLoad(pendingMsgs);
|
|
554
|
-
const { historyBudget, rawMessageBudget } = planContextUsage({
|
|
555
|
-
contextWindow,
|
|
556
|
-
summaryTokens: adjustedSummaryTokens,
|
|
557
|
-
recentLoad
|
|
558
|
-
});
|
|
559
|
-
let shouldTriggerByUsage = false;
|
|
560
|
-
const usageRatio = normalizeContextUsageRatio(realContextUsagePercent);
|
|
561
|
-
if (usageRatio !== void 0) {
|
|
562
|
-
if (usageRatio >= 0.78) {
|
|
563
|
-
shouldTriggerByUsage = true;
|
|
564
|
-
} else if (usageRatio >= 0.65 && isActiveSummaryWorthDoing(pendingTokens, contextWindow)) {
|
|
565
|
-
shouldTriggerByUsage = true;
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
if (totalUsed >= historyBudget) {
|
|
569
|
-
shouldTriggerByUsage = true;
|
|
570
|
-
}
|
|
571
|
-
const shouldRunActiveSummary = force && reason === "manual" && !hasOpenEndedToolCall(pendingMsgs[pendingMsgs.length - 1]) && isActiveSummaryWorthDoing(pendingTokens, contextWindow);
|
|
572
|
-
if (!shouldTriggerByUsage && !shouldRunActiveSummary) {
|
|
573
|
-
return emptyPlan(startIndex);
|
|
574
|
-
}
|
|
575
|
-
let tokensToKeep = 0;
|
|
576
|
-
let keepCount = 0;
|
|
577
|
-
for (let i = pendingMsgs.length - 1; i >= 0; i--) {
|
|
578
|
-
const t = getMessageTokenCount(pendingMsgs[i]);
|
|
579
|
-
if (tokensToKeep + t > rawMessageBudget) break;
|
|
580
|
-
tokensToKeep += t;
|
|
581
|
-
keepCount++;
|
|
582
|
-
}
|
|
583
|
-
const triggeredByRealUsage = usageRatio !== void 0 && shouldTriggerByUsage;
|
|
584
|
-
let compressCount = (shouldRunActiveSummary || triggeredByRealUsage) && totalUsed < historyBudget ? Math.max(0, pendingMsgs.length - ACTIVE_SUMMARY_TAIL_KEEP_COUNT) : pendingMsgs.length - keepCount;
|
|
585
|
-
while (compressCount > 0 && compressCount < pendingMsgs.length && pendingMsgs[compressCount].role === "tool") {
|
|
586
|
-
compressCount--;
|
|
587
|
-
}
|
|
588
|
-
if (compressCount > 0) {
|
|
589
|
-
const lastCompressed = pendingMsgs[compressCount - 1];
|
|
590
|
-
const hasToolCalls = Array.isArray(lastCompressed.tool_calls) && lastCompressed.tool_calls.length > 0;
|
|
591
|
-
if (hasToolCalls) {
|
|
592
|
-
compressCount--;
|
|
593
|
-
}
|
|
594
|
-
}
|
|
595
|
-
if (compressCount < MIN_COMPRESS_COUNT) {
|
|
596
|
-
return emptyPlan(startIndex);
|
|
597
|
-
}
|
|
598
|
-
const msgsToCompress = pendingMsgs.slice(0, compressCount);
|
|
599
|
-
const msgsToKeep = pendingMsgs.slice(compressCount);
|
|
600
|
-
const newSummarizedBeforeId = msgsToCompress[msgsToCompress.length - 1].id;
|
|
601
|
-
return {
|
|
602
|
-
shouldCompress: true,
|
|
603
|
-
compressCount,
|
|
604
|
-
msgsToCompress,
|
|
605
|
-
msgsToKeep,
|
|
606
|
-
newSummarizedBeforeId,
|
|
607
|
-
startIndex
|
|
608
|
-
};
|
|
609
|
-
}
|
|
610
|
-
|
|
611
|
-
// packages/agent-runtime/autoExecutionProfiles.ts
|
|
612
|
-
var createProfile = (input) => ({
|
|
613
|
-
id: input.id,
|
|
614
|
-
tier: input.tier,
|
|
615
|
-
legacyAgentKey: input.legacyAgentKey,
|
|
616
|
-
key: input.legacyAgentKey,
|
|
617
|
-
name: input.name,
|
|
618
|
-
provider: "nolo",
|
|
619
|
-
model: input.model,
|
|
620
|
-
apiSource: "platform",
|
|
621
|
-
useServerProxy: true,
|
|
622
|
-
rawRecord: {
|
|
623
|
-
dbKey: input.legacyAgentKey,
|
|
624
|
-
isPublic: true,
|
|
625
|
-
provider: "nolo",
|
|
626
|
-
model: input.model,
|
|
627
|
-
apiSource: "platform",
|
|
628
|
-
useServerProxy: true
|
|
629
|
-
}
|
|
630
|
-
});
|
|
631
|
-
var FLASH_PROFILE = createProfile({
|
|
632
|
-
id: "builtin:auto:deepseek-v4-flash",
|
|
633
|
-
tier: "flash",
|
|
634
|
-
legacyAgentKey: PUBLIC_DEEPSEEK_V4_FLASH_AGENT_KEY,
|
|
635
|
-
name: "DeepSeek V4 Flash",
|
|
636
|
-
model: "deepseek-v4-flash"
|
|
637
|
-
});
|
|
638
|
-
var IMAGE_PROFILE = createProfile({
|
|
639
|
-
id: "builtin:auto:kimi-k2.6",
|
|
640
|
-
tier: "image",
|
|
641
|
-
legacyAgentKey: PUBLIC_KIMI_K26_IMAGE_AGENT_KEY,
|
|
642
|
-
name: "Kimi K2.6",
|
|
643
|
-
model: "kimi-k2.6"
|
|
644
|
-
});
|
|
645
|
-
var AUTO_EXECUTION_PROFILES = {
|
|
646
|
-
flash: FLASH_PROFILE,
|
|
647
|
-
balanced: { ...FLASH_PROFILE, tier: "balanced" },
|
|
648
|
-
quality: { ...FLASH_PROFILE, tier: "quality" },
|
|
649
|
-
image: IMAGE_PROFILE
|
|
650
|
-
};
|
|
651
|
-
var DEFAULT_AUTO_EXECUTION_TIER = "flash";
|
|
652
|
-
var DEFAULT_AUTO_EXECUTION_PROFILE = AUTO_EXECUTION_PROFILES[DEFAULT_AUTO_EXECUTION_TIER];
|
|
653
|
-
var resolveAutoExecutionProfile = (tier) => AUTO_EXECUTION_PROFILES[tier ?? DEFAULT_AUTO_EXECUTION_TIER] ?? DEFAULT_AUTO_EXECUTION_PROFILE;
|
|
654
|
-
|
|
655
|
-
export {
|
|
656
|
-
resolveBuiltinPlatformAgentConfig,
|
|
657
|
-
resolveBuiltinPlatformAgentRecord,
|
|
658
|
-
planContextUsage,
|
|
659
|
-
estimateTokenCount,
|
|
660
|
-
DEFAULT_CONTEXT_WINDOW,
|
|
661
|
-
getModelContextWindow,
|
|
662
|
-
getModelInfo,
|
|
663
|
-
buildDatabaseFileContentUrl,
|
|
664
|
-
serializeMessageContent,
|
|
665
|
-
normalizeAssistantContentBuffer,
|
|
666
|
-
planCompression,
|
|
667
|
-
DEFAULT_AUTO_EXECUTION_PROFILE,
|
|
668
|
-
resolveAutoExecutionProfile
|
|
669
|
-
};
|