nolo-cli 0.107.0-alpha.3 → 0.107.0
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-UDCSOTD2.js → _executeModel-C4EH5TZG.js} +77 -69
- package/action-GVA5ARSJ.js +20 -0
- package/{addContentAction-MB2HHMDZ.js → addContentAction-M2WOWZCL.js} +13 -12
- package/{addDialogAgentAction-MCEABSBA.js → addDialogAgentAction-QMAQ5Z6N.js} +19 -20
- package/{agentDeleteCommand-OWYHN6D6.js → agentDeleteCommand-D3RICSHX.js} +118 -43
- package/{agentEmailCommands-BQFXQIHF.js → agentEmailCommands-YC2A4USQ.js} +99 -89
- package/agentListCommands-UDJELMYP.js +741 -0
- package/{agentMachineCommands-6DTI7YSG.js → agentMachineCommands-XH4IBGTO.js} +48 -44
- package/{agentProviderCommands-GNPTL5XR.js → agentProviderCommands-CMVTBY5X.js} +97 -2
- package/{agentPullCommand-O5MPVJ5E.js → agentPullCommand-B4T2DJ5H.js} +1 -1
- package/agentRecordCommands-3EOC2QMN.js +138 -0
- package/agentRunCommand-BTHYOVVS.js +167 -0
- package/{agentRunControl-AVJR4JW4.js → agentRunControl-3HWA2LLQ.js} +2 -2
- package/{agentRuntimeLocal-KCMC2TBD.js → agentRuntimeLocal-N4YGKL7M.js} +44 -40
- package/{agentSlice-R7PR6KYM.js → agentSlice-NIN4T6CF.js} +15 -14
- package/{appDeleteCommands-JEPA3EWE.js → appDeleteCommands-7DAF33AM.js} +46 -42
- package/{appDeployCommands-UTB76XFM.js → appDeployCommands-ZPZSMFGZ.js} +46 -42
- package/{appDeployStatusCommands-LGHF2SBD.js → appDeployStatusCommands-FWBDSSS5.js} +46 -42
- package/{appGetCommands-PX2BFHOB.js → appGetCommands-SZZOHGEP.js} +46 -42
- package/{appListCommands-BSMPTWKC.js → appListCommands-FPMUBDPM.js} +46 -42
- package/{authCommand-YW42YZA4.js → authCommand-VL3G26NQ.js} +119 -25
- package/{authCommands-RGOGCPP6.js → authCommands-5RTUDYZW.js} +7 -5
- package/{builtinSkillRegistry-FUAVTRVZ.js → builtinSkillRegistry-ZK4K67Y5.js} +11 -9
- package/{chromeCommands-FZYAU75D.js → chromeCommands-AU5ZJXBG.js} +289 -37
- package/{chromeOpsCommands-62P2Q2YB.js → chromeOpsCommands-ZYTCMNHG.js} +156 -22
- package/{chunk-JDPFV2JV.js → chunk-2NNRWRM5.js} +20 -11
- package/{chunk-JEDZAO7L.js → chunk-2SYTUTLI.js} +257 -37
- package/{chunk-HVURBGF3.js → chunk-2U3NHADM.js} +6 -6
- package/{chunk-AVTT555J.js → chunk-2ZHBFX5R.js} +29 -9
- package/{chunk-QTGQ2LTL.js → chunk-3DQY5IFB.js} +6 -10
- package/chunk-4LCOCOR5.js +50 -0
- package/{chunk-JPGCXHNM.js → chunk-4LKMZ3RR.js} +1 -1
- package/{chunk-2GRGFCF6.js → chunk-4VJAC32I.js} +2 -1
- package/{chunk-6D6VBVEW.js → chunk-4W24JM32.js} +80 -14
- package/{chunk-MC4XLIJ7.js → chunk-523DITKR.js} +1 -1
- package/{chunk-E4MARS3Q.js → chunk-5GVBDNTO.js} +1 -1
- package/chunk-5MMAK75Q.js +15 -0
- package/{chunk-7S4YWN7P.js → chunk-5UUIGN6I.js} +4 -4
- package/{chunk-42V6BK2E.js → chunk-62IL3KQV.js} +4 -34
- package/{chunk-C63CN6KA.js → chunk-6IJDSYUA.js} +849 -279
- package/{chunk-4MK3I7Y4.js → chunk-6MAW4XOF.js} +5 -5
- package/chunk-76HO2DP6.js +15 -0
- package/chunk-7AY2H3GA.js +13692 -0
- package/{chunk-4CR5I7BD.js → chunk-7HYOPBUW.js} +47 -67
- package/{chunk-VLTIYV3X.js → chunk-7I25CBT5.js} +34 -8
- package/chunk-AGIM7IMJ.js +147 -0
- package/{chunk-5UTFL4QJ.js → chunk-AOTBKDRK.js} +7 -0
- package/{chunk-6OZ36FXI.js → chunk-BIPGGSJS.js} +22 -4
- package/{chunk-EYAQT56M.js → chunk-BNQMNUKZ.js} +9 -6
- package/{chunk-62CATUYY.js → chunk-CBUMFIFE.js} +834 -962
- package/{chunk-OIVSQH2O.js → chunk-CDEEFJXN.js} +308 -11
- package/chunk-CHOZJMJS.js +78 -0
- package/{chunk-ETI2NYVF.js → chunk-CIP3AAMT.js} +4 -4
- package/{chunk-GBRG75BQ.js → chunk-D2MDMY2M.js} +1 -0
- package/{chunk-IBOZNTG2.js → chunk-DGEUP3DK.js} +23 -28
- package/{chunk-Q554LLSI.js → chunk-DMXLXZKL.js} +1 -1
- package/{chunk-3VNWWVKB.js → chunk-E3YWHWCR.js} +50 -18
- package/{chunk-HKNXJGEC.js → chunk-ECFHBYUW.js} +85 -50
- package/{chunk-ACTMNVHM.js → chunk-EHSYSKXV.js} +1 -1
- package/{chunk-WV42OMV7.js → chunk-ELUDRSRD.js} +8 -8
- package/{chunk-ABQYVJBJ.js → chunk-EV235ILT.js} +5 -5
- package/{chunk-TRV2MIDW.js → chunk-EXAJ6DCR.js} +1 -0
- package/{chunk-BFDFRLLQ.js → chunk-EZ4VZHAG.js} +5 -5
- package/{chunk-GO3Z72MT.js → chunk-FHLMQIU7.js} +65 -95
- package/{chunk-2F7RJC6L.js → chunk-FOXQ7BAB.js} +1 -1
- package/{chunk-SH43IESU.js → chunk-GGC55Q32.js} +199 -29
- 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-QOKAKDPE.js → chunk-HIM3FCLF.js} +0 -1
- package/{chunk-ONXOABJR.js → chunk-HNGRBWYF.js} +3 -0
- package/{chunk-BNGW5ASC.js → chunk-I2RGRVQ7.js} +22 -2
- package/{chunk-O6OSWFZQ.js → chunk-IHPDK6UD.js} +6 -0
- package/{chunk-QDSINZM3.js → chunk-IXH3HKY2.js} +1 -22
- package/{chunk-GQBOR3G6.js → chunk-JBKHQOYK.js} +8 -4
- package/{chunk-XD2MJFUG.js → chunk-JEFXP73H.js} +1 -1
- package/{chunk-PBA4UJBK.js → chunk-JIXGJTBU.js} +4 -4
- package/{chunk-AEOE4Z6Q.js → chunk-K6L5PNXK.js} +39 -15
- package/{chunk-Z77CRGTW.js → chunk-KA5O5KQL.js} +1 -1
- package/{chunk-GPCZ7UXG.js → chunk-KD6D6BLA.js} +1 -1
- package/{chunk-UZGQNTVW.js → chunk-KHKTDMYG.js} +8 -6
- package/{chunk-MRIHM22T.js → chunk-LBFL6RZG.js} +58 -9
- package/{chunk-C3M4465B.js → chunk-LKIVH2I2.js} +403 -658
- package/{chunk-LS2ZANRJ.js → chunk-LOCNXNOU.js} +1 -1
- package/{chunk-DHDMC6FO.js → chunk-LUBFABMJ.js} +15 -14
- package/{chunk-NA35QHCF.js → chunk-LVBFKW65.js} +1 -1
- package/chunk-LWLNLZC5.js +265 -0
- package/{chunk-EEGDMATE.js → chunk-M3NMHYRB.js} +86 -81
- package/chunk-N4NGJDT6.js +929 -0
- package/{chunk-GL3EHUR4.js → chunk-N7NLLRQQ.js} +68 -46
- package/{chunk-BFU6C242.js → chunk-NMFV26UG.js} +1 -1
- package/{chunk-FZGV4FGK.js → chunk-NUHHBEJC.js} +378 -187
- package/chunk-NWENLDMM.js +42 -0
- package/chunk-O7SVKKLY.js +875 -0
- package/chunk-OCZKATRC.js +129 -0
- package/{chunk-6Z7MY3V7.js → chunk-OEJLGVBL.js} +5 -5
- package/{chunk-VMFTFOWF.js → chunk-OKGVNZTL.js} +35 -8
- package/{chunk-GEPUP7OO.js → chunk-OR2UWD6X.js} +3 -3
- package/{chunk-KQHGZWSV.js → chunk-OXME3PEE.js} +1 -1
- package/{chunk-J4MOO56S.js → chunk-PNXHPLRU.js} +10 -2
- package/{chunk-3BMYXEUW.js → chunk-R5AJODNI.js} +1 -1
- package/{chunk-P5EVSOPA.js → chunk-R6EBQEQE.js} +22 -29
- package/{chunk-NOF3HDSN.js → chunk-RLSF5CSE.js} +11 -9
- package/chunk-RQ6CTX2E.js +164 -0
- package/{chunk-3UZPUAES.js → chunk-RSB4PWX4.js} +1 -1
- package/{chunk-KQ4ONNQD.js → chunk-RXA3HAVW.js} +190 -8
- package/{chunk-IIVGDG4I.js → chunk-SJKULPGX.js} +13 -7
- package/chunk-SQHMSDDU.js +8004 -0
- package/{chunk-Q67DOFOO.js → chunk-SZC4REES.js} +212 -105
- package/{chunk-JRQFUXY7.js → chunk-TBAXFWOS.js} +99 -22
- package/{chunk-PQFHGD77.js → chunk-TBM2RS3U.js} +161 -14
- package/{chunk-XT35TTFG.js → chunk-TCYU7L6V.js} +18 -20
- package/{chunk-BYMV6QZG.js → chunk-TNIX77YM.js} +4 -0
- package/chunk-TY3TIUJK.js +89 -0
- package/{chunk-I3TQJXQ7.js → chunk-U3C3IA32.js} +9 -2
- package/{chunk-YYLHWIW6.js → chunk-UKZX3NHN.js} +1 -1
- package/chunk-UM7TA3K4.js +1008 -0
- package/{chunk-6YTOJY35.js → chunk-VBG7GWWR.js} +253 -8
- package/chunk-VIWDGTDA.js +8 -0
- package/chunk-VJVNU77E.js +83 -0
- package/{chunk-W7HLWAQ7.js → chunk-VPLUU4IX.js} +118 -90
- package/{chunk-UKWGR5SS.js → chunk-VY6VFGKR.js} +194 -1144
- package/chunk-VZLO4XJD.js +17 -0
- package/{chunk-AHAHBQMU.js → chunk-WDLSZMTA.js} +2 -2
- package/{chunk-53HEEOTT.js → chunk-WF5X57VW.js} +83 -16
- package/{chunk-VRTTFDBM.js → chunk-WPHY3VPF.js} +35 -22
- package/{chunk-ASIFZ2WY.js → chunk-YKZLFY5J.js} +66 -54
- package/chunk-YV25TM3R.js +780 -0
- package/{chunk-B2C6QTY4.js → chunk-YXKNBVYW.js} +19 -17
- package/chunk-ZRAU6T47.js +56 -0
- package/commandRegistry-UU6IOTHI.js +833 -0
- package/{contentThunks-IV2T3EJC.js → contentThunks-ARD56LKI.js} +39 -36
- package/{cooldownCommands-REAWYVTY.js → cooldownCommands-ZLEPIB4A.js} +2 -2
- package/{createAgentAutomationAction-JCOIEYY4.js → createAgentAutomationAction-HWJLU6DD.js} +40 -37
- package/createDialogAction-CHYA6PZE.js +70 -0
- package/{createPageAction-D2VOOLP3.js → createPageAction-TSCYNFX7.js} +47 -43
- package/{chunk-VFEJQMH4.js → cursorProvider-YGGNMVWX.js} +2751 -10172
- package/{dbSlice-A6C6H32X.js → dbSlice-TG4MZ5EB.js} +12 -11
- package/{deleteFile-YG6QMJLU.js → deleteFile-KESP65GC.js} +7 -6
- package/{dialogCommands-H7FPUYUQ.js → dialogCommands-IJYQAQMB.js} +49 -46
- package/{dialogSlice-6JZOOTDS.js → dialogSlice-H476I77R.js} +57 -37
- package/{dist-VODFSGNG.js → dist-NJC2W7I4.js} +61 -54
- package/{docCreateCommands-WRG2JLGM.js → docCreateCommands-AZSK4NAG.js} +48 -44
- package/{docDeleteCommands-SHWJIBJS.js → docDeleteCommands-DDJMSMFZ.js} +49 -45
- package/{docReadCommands-WJN3WT6O.js → docReadCommands-5F5Q6EBZ.js} +47 -43
- package/{docStore-HUPQ2FSS.js → docStore-HW2RDZDM.js} +17 -13
- package/{docUpdateCommands-IE32IL6O.js → docUpdateCommands-XPNPVZOC.js} +48 -44
- package/{fetchMessages-EIU7UFFK.js → fetchMessages-3PXAHKCR.js} +5 -5
- package/{getPricing-LUSEABA6.js → getPricing-DOBBZLOK.js} +4 -4
- package/{handleSendMessageAction-DFPMQ7YM.js → handleSendMessageAction-IOXE7ILC.js} +109 -42
- package/index.js +87 -884
- package/{lib-FRRS27KN.js → lib-PU2G2MSO.js} +523 -191
- package/{localDialogRead-BTFJ4V2I.js → localDialogRead-UYCKO7YZ.js} +2 -2
- package/{localRuntimeAuthority-6IR6BBXE.js → localRuntimeAuthority-TU6OBC76.js} +9 -6
- package/{localRuntimeDb-SYQGUF4U.js → localRuntimeDb-VKWVOPPI.js} +1 -1
- package/{machineCommands-OL4NLMXG.js → machineCommands-Q7TDGM6P.js} +96 -86
- package/machineWsRunDispatch-T5VFOQ3R.js +154 -0
- package/{memberThunks-P2ECUJ56.js → memberThunks-5S5D3N4U.js} +20 -18
- package/{models-T3SG6MJ5.js → models-PQU25T6Q.js} +2 -2
- package/oauthTokenStore-ITEB663N.js +23 -0
- package/package.json +1 -1
- package/processSpawn-SOAV3FEV.js +11 -0
- package/profileConfig-ZGOFORWV.js +43 -0
- package/{providerPresetApply-FG6NZ57W.js → providerPresetApply-HAQWVAQX.js} +7 -7
- package/{providerRegistry-757OWH3O.js → providerRegistry-5FGWB3X5.js} +11 -7
- package/{read-COE3ZYR6.js → read-LSYFLSIM.js} +8 -7
- package/{readDocTool-5USN4A6V.js → readDocTool-XWRXV3DR.js} +5 -3
- package/{readlineWorkspace-BOENUIW2.js → readlineWorkspace-25U6P3DG.js} +2595 -2031
- package/{removeDialogAgentAction-J6X5QMTA.js → removeDialogAgentAction-4TEFC3VL.js} +22 -26
- package/{runAgentClientLoop-5ZA62FBA.js → runAgentClientLoop-CZOYWHDN.js} +78 -71
- package/{runtimeDoctorCommands-X6WDBEQX.js → runtimeDoctorCommands-PIVSBZRZ.js} +4 -4
- package/runtimeModeArgs-2Y7BALTO.js +31 -0
- package/{setDialogExtraReferencesAction-WX5VTY6O.js → setDialogExtraReferencesAction-LSEN44OY.js} +16 -14
- package/{setPrimaryDialogAgentAction-FN22THHT.js → setPrimaryDialogAgentAction-SR366X5A.js} +23 -27
- package/{chunk-GP5LKBUZ.js → settingThunks-CTVPPGIN.js} +226 -940
- package/{skillDiscovery-CYUCJMAG.js → skillDiscovery-ZBU76COE.js} +3 -3
- package/{slateUtils-RIZES3PV.js → slateUtils-NGV2NMKM.js} +1 -1
- package/{spaceCommands-5GLCWZPO.js → spaceCommands-3UK63WPE.js} +51 -47
- package/{streamAgentChatTurn-6UZJMYRB.js → streamAgentChatTurn-LV6ZWUD4.js} +214 -114
- package/{switchDialogAgentAction-LVTEV3FR.js → switchDialogAgentAction-M6NAFOOU.js} +19 -20
- package/{tableCommands-O6NWHFKV.js → tableCommands-6U4BMLRR.js} +10 -10
- package/{toolApiClient-QVJ6HDNN.js → toolApiClient-AD7CXTA4.js} +4 -3
- package/tools-UJOV6CQZ.js +117 -0
- package/{tuiSummaryLlmCaller-OHHFTHMG.js → tuiSummaryLlmCaller-DEH7ZEM6.js} +25 -23
- package/{updateCommands-2M74UL7P.js → updateCommands-4EHDLF5J.js} +3 -3
- package/{updateDialogTitleAction-QTKNIURB.js → updateDialogTitleAction-JYXKIBNJ.js} +84 -45
- package/action-P4TNFGAD.js +0 -31
- package/agentListCommands-B2V4YAC4.js +0 -410
- package/agentRecordCommands-UTHKMMJY.js +0 -128
- package/agentRunCommand-D4OBAOVW.js +0 -156
- package/browser-image-compression-MFDTD7K6.js +0 -1763
- package/chatQueueReduxAdapter-2P6NFX64.js +0 -186
- package/chunk-CQ3WA2NE.js +0 -299
- package/chunk-M76ECQRD.js +0 -13658
- package/chunk-MEYIRKDN.js +0 -8967
- package/chunk-PUOC4YRO.js +0 -394
- package/chunk-Q5FJJ6XI.js +0 -103
- package/chunk-S7Z2HMCN.js +0 -25
- package/chunk-T75QD6AB.js +0 -20923
- package/chunk-Y5GCAMGP.js +0 -9
- package/chunk-YPREESF4.js +0 -225
- package/createDialogAction-NGG7YVNU.js +0 -65
- package/machineWsRunDispatch-64SG2RUI.js +0 -144
- package/settingSlice-P4ZW7K5X.js +0 -204
- package/syncMapping-N6RGXGBW.js +0 -437
- package/tools-KMGFWO43.js +0 -110
- package/{chunk-X7HHHIOZ.js → chunk-Y6ROFCZO.js} +0 -0
- package/{db-WK5MDZVN.js → db-VQSAOWAO.js} +1 -1
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// packages/ai/chat/parseApiError.ts
|
|
2
|
+
var CONTEXT_OVERFLOW_ACTIONS = [
|
|
3
|
+
"compact-and-retry",
|
|
4
|
+
"new-dialog",
|
|
5
|
+
"switch-model",
|
|
6
|
+
"retry"
|
|
7
|
+
];
|
|
8
|
+
var CONTEXT_TOO_LARGE_ACTIONS = [
|
|
9
|
+
"new-dialog",
|
|
10
|
+
"switch-model",
|
|
11
|
+
"retry"
|
|
12
|
+
];
|
|
13
|
+
var truncateErrorMessage = (message, maxChars = 320) => message.length <= maxChars ? message : `${message.slice(0, maxChars)}\u2026`;
|
|
14
|
+
var isContextOverflowText = (message) => /maximum context|context (length|window|overflow|limit)|context_length_exceed\w*|requested about .*tokens|too many tokens|prompt is too long|exceeds? (the )?(model|max)/i.test(
|
|
15
|
+
message
|
|
16
|
+
);
|
|
17
|
+
function classifyApiError(input) {
|
|
18
|
+
const { status, message, body, code } = input;
|
|
19
|
+
const errorMessage = message;
|
|
20
|
+
let defaultMessage = `\u72B6\u6001\u7801 ${status} ${input.statusText ?? ""}`;
|
|
21
|
+
switch (status) {
|
|
22
|
+
case 400:
|
|
23
|
+
if (isContextOverflowText(errorMessage) || isContextOverflowText(body) || code === "UPSTREAM_400") {
|
|
24
|
+
return {
|
|
25
|
+
kind: "context_overflow",
|
|
26
|
+
message: "\u4E0A\u4E0B\u6587\u8FC7\u957F\uFF1A\u672C\u8F6E\u6D88\u606F\u6216\u5DE5\u5177\u7ED3\u679C\u592A\u5927\u3002\u8BF7\u7F29\u5C0F\u8303\u56F4\uFF0C\u6216\u5148\u8BFB\u53D6\u66F4\u5C0F\u7247\u6BB5\u540E\u518D\u7EE7\u7EED\u3002",
|
|
27
|
+
code,
|
|
28
|
+
status,
|
|
29
|
+
retryable: true,
|
|
30
|
+
actions: [...CONTEXT_OVERFLOW_ACTIONS]
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (code === "MISSING_PROVIDER_API_KEY") {
|
|
34
|
+
return {
|
|
35
|
+
kind: "generic",
|
|
36
|
+
message: truncateErrorMessage(errorMessage),
|
|
37
|
+
code,
|
|
38
|
+
status,
|
|
39
|
+
retryable: false
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
if (errorMessage && errorMessage !== defaultMessage) {
|
|
43
|
+
return {
|
|
44
|
+
kind: "generic",
|
|
45
|
+
message: `\u8BF7\u6C42\u53C2\u6570\u9519\u8BEF: ${truncateErrorMessage(errorMessage)}`,
|
|
46
|
+
code,
|
|
47
|
+
status,
|
|
48
|
+
retryable: false
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return { kind: "generic", message: "\u8BF7\u6C42\u53C2\u6570\u9519\u8BEF\uFF0C\u8BF7\u68C0\u67E5\u8F93\u5165", code, status, retryable: false };
|
|
52
|
+
case 413:
|
|
53
|
+
return {
|
|
54
|
+
kind: "context_too_large",
|
|
55
|
+
message: "\u8BF7\u6C42\u5185\u5BB9\u8FC7\u5927\uFF1A\u8BF7\u51CF\u5C11\u4E00\u6B21\u53D1\u9001\u7684\u6D88\u606F\u3001\u6587\u4EF6\u6216\u5DE5\u5177\u7ED3\u679C\u3002",
|
|
56
|
+
code,
|
|
57
|
+
status,
|
|
58
|
+
retryable: true,
|
|
59
|
+
actions: [...CONTEXT_TOO_LARGE_ACTIONS]
|
|
60
|
+
};
|
|
61
|
+
case 401:
|
|
62
|
+
return {
|
|
63
|
+
kind: "auth",
|
|
64
|
+
message: code === "AUTH_TOKEN_EXPIRED" ? "\u767B\u5F55\u72B6\u6001\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u5148\u767B\u51FA\u540E\u91CD\u65B0\u767B\u5F55" : code === "AUTH_ACCOUNT_INVALID" ? "\u8D26\u6237\u65E0\u6548\u6216\u5DF2\u88AB\u505C\u7528\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458" : code === "AUTH_NO_TOKEN" ? "\u672A\u68C0\u6D4B\u5230\u767B\u5F55\u72B6\u6001\uFF0C\u8BF7\u5148\u767B\u5F55" : code === "AUTH_INVALID_TOKEN" ? "\u767B\u5F55\u51ED\u8BC1\u65E0\u6548\uFF0C\u8BF7\u5148\u767B\u51FA\u540E\u91CD\u65B0\u767B\u5F55" : code === "AUTH_TOKEN_NOT_ACTIVE" ? "\u4EE4\u724C\u5C1A\u672A\u751F\u6548\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5" : errorMessage && errorMessage !== `\u72B6\u6001\u7801 401 Unauthorized` ? `\u8BA4\u8BC1\u9519\u8BEF: ${truncateErrorMessage(errorMessage)}` : "\u8EAB\u4EFD\u9A8C\u8BC1\u5931\u8D25\uFF0C\u8BF7\u5148\u767B\u51FA\u540E\u91CD\u65B0\u767B\u5F55",
|
|
65
|
+
code,
|
|
66
|
+
status,
|
|
67
|
+
retryable: true,
|
|
68
|
+
actions: ["retry"]
|
|
69
|
+
};
|
|
70
|
+
case 503:
|
|
71
|
+
return {
|
|
72
|
+
kind: "server",
|
|
73
|
+
message: errorMessage && errorMessage !== `\u72B6\u6001\u7801 503 Service Unavailable` ? truncateErrorMessage(errorMessage) : "\u670D\u52A1\u6682\u65F6\u4E0D\u53EF\u7528\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",
|
|
74
|
+
code,
|
|
75
|
+
status,
|
|
76
|
+
retryable: true,
|
|
77
|
+
actions: ["retry"]
|
|
78
|
+
};
|
|
79
|
+
case 504:
|
|
80
|
+
return {
|
|
81
|
+
kind: "timeout",
|
|
82
|
+
message: "\u8BF7\u6C42\u8D85\u65F6\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",
|
|
83
|
+
code,
|
|
84
|
+
status,
|
|
85
|
+
retryable: true,
|
|
86
|
+
actions: ["retry"]
|
|
87
|
+
};
|
|
88
|
+
default:
|
|
89
|
+
return {
|
|
90
|
+
kind: "generic",
|
|
91
|
+
message: `API\u8BF7\u6C42\u5931\u8D25: ${truncateErrorMessage(errorMessage)}`,
|
|
92
|
+
code,
|
|
93
|
+
status,
|
|
94
|
+
retryable: true,
|
|
95
|
+
actions: ["retry"]
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
async function parseApiErrorInfo(response) {
|
|
100
|
+
const errorBody = await response.text();
|
|
101
|
+
let errorMessage = `\u72B6\u6001\u7801 ${response.status} ${response.statusText}`;
|
|
102
|
+
let errorCode = `E${response.status}`;
|
|
103
|
+
try {
|
|
104
|
+
const errorJson = JSON.parse(errorBody);
|
|
105
|
+
errorMessage = errorJson?.error?.message || errorJson?.message || errorJson?.msg || errorBody || errorMessage;
|
|
106
|
+
errorCode = errorJson?.error?.code || errorJson?.code || errorCode;
|
|
107
|
+
} catch (_e) {
|
|
108
|
+
if (errorBody) {
|
|
109
|
+
errorMessage = errorBody;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return classifyApiError({
|
|
113
|
+
status: response.status,
|
|
114
|
+
statusText: response.statusText,
|
|
115
|
+
message: errorMessage,
|
|
116
|
+
body: errorBody,
|
|
117
|
+
code: errorCode
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
async function parseApiError(response) {
|
|
121
|
+
return (await parseApiErrorInfo(response)).message;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export {
|
|
125
|
+
CONTEXT_OVERFLOW_ACTIONS,
|
|
126
|
+
CONTEXT_TOO_LARGE_ACTIONS,
|
|
127
|
+
isContextOverflowText,
|
|
128
|
+
parseApiError
|
|
129
|
+
};
|
|
@@ -7,18 +7,18 @@ import {
|
|
|
7
7
|
} from "./chunk-UAD2WT54.js";
|
|
8
8
|
import {
|
|
9
9
|
toTimestampMs
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-WPHY3VPF.js";
|
|
11
|
+
import {
|
|
12
|
+
isTombstoneRecord
|
|
13
|
+
} from "./chunk-D2MDMY2M.js";
|
|
11
14
|
import {
|
|
12
15
|
fetchFromServer,
|
|
13
16
|
getAllServers
|
|
14
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-HIM3FCLF.js";
|
|
15
18
|
import {
|
|
16
19
|
selectIdentityToken,
|
|
17
20
|
selectIdentityUserId
|
|
18
21
|
} from "./chunk-SEJ5OS6F.js";
|
|
19
|
-
import {
|
|
20
|
-
isTombstoneRecord
|
|
21
|
-
} from "./chunk-GBRG75BQ.js";
|
|
22
22
|
import {
|
|
23
23
|
__toESM
|
|
24
24
|
} from "./chunk-4VNS5WPM.js";
|
|
@@ -2390,6 +2390,11 @@ var require_rambda = __commonJS({
|
|
|
2390
2390
|
}
|
|
2391
2391
|
});
|
|
2392
2392
|
|
|
2393
|
+
// packages/core/toTrimmedString.ts
|
|
2394
|
+
function toTrimmedString(value) {
|
|
2395
|
+
return typeof value === "string" ? value.trim() : value == null ? "" : String(value).trim();
|
|
2396
|
+
}
|
|
2397
|
+
|
|
2393
2398
|
// packages/core/stringArray.ts
|
|
2394
2399
|
function asNonEmptyStringArray(value) {
|
|
2395
2400
|
if (!Array.isArray(value)) return [];
|
|
@@ -2401,11 +2406,6 @@ function asTrimmedNonEmptyStringArray(value) {
|
|
|
2401
2406
|
return asNonEmptyStringArray(value).map((item) => item.trim());
|
|
2402
2407
|
}
|
|
2403
2408
|
|
|
2404
|
-
// packages/core/toTrimmedString.ts
|
|
2405
|
-
function toTrimmedString(value) {
|
|
2406
|
-
return typeof value === "string" ? value.trim() : value == null ? "" : String(value).trim();
|
|
2407
|
-
}
|
|
2408
|
-
|
|
2409
2409
|
// packages/database/utils/ulid.ts
|
|
2410
2410
|
import { monotonicFactory } from "ulid";
|
|
2411
2411
|
var prng = () => Math.random();
|
|
@@ -2717,8 +2717,9 @@ var metaKey = Object.assign(
|
|
|
2717
2717
|
var DB_PREFIX = {
|
|
2718
2718
|
USER: "user:"
|
|
2719
2719
|
};
|
|
2720
|
+
var USER_SETTINGS_KEY_SUFFIX = `${SEPARATOR2}settings`;
|
|
2720
2721
|
var createUserKey = {
|
|
2721
|
-
settings: (userId) =>
|
|
2722
|
+
settings: (userId) => `${userId}${USER_SETTINGS_KEY_SUFFIX}`,
|
|
2722
2723
|
profile: (userId) => createKey(userId, "profile")
|
|
2723
2724
|
};
|
|
2724
2725
|
var createUserPreferenceKey = {
|
|
@@ -2763,6 +2764,22 @@ var createTokenKey = {
|
|
|
2763
2764
|
record: (0, import_rambda.curry)(
|
|
2764
2765
|
(userId, timestamp) => createKey("token", userId, timestamp.toString())
|
|
2765
2766
|
),
|
|
2767
|
+
/**
|
|
2768
|
+
* 单次计费记录:`token/<user>/<timestamp>/<chargeId>`。
|
|
2769
|
+
*
|
|
2770
|
+
* 与 `record` 的唯一区别是把「本次计费自己的唯一 id」作为额外一段拼在末尾
|
|
2771
|
+
* —— 同一用户同一毫秒内的两笔合法计费因此各占一个 key,不再互相覆盖,
|
|
2772
|
+
* 也不会共用同一个账本 txId / 幂等键(`token-<tokenKey>` / `token:<tokenKey>`)
|
|
2773
|
+
* 而被账本判为 duplicate 静默漏扣。
|
|
2774
|
+
*
|
|
2775
|
+
* 兼容性:timestamp 仍是第二段且保持首位排序,因此
|
|
2776
|
+
* - `rangeOfUser(userId)`(usage/统计等读取路径用的全前缀范围)照常覆盖;
|
|
2777
|
+
* - `range(userId, ts)` 的 `token/<user>/<ts>` … `token/<user>/<ts+1d>`
|
|
2778
|
+
* 区间同样覆盖新 key(`<ts>-xxx` > `<ts>` 且 < `<ts+1>`),历史数据
|
|
2779
|
+
* 与新数据可以在同一区间里混扫。
|
|
2780
|
+
* 幂等键的稳定性由调用方决定:需要「重试同一笔」时传稳定的 chargeId。
|
|
2781
|
+
*/
|
|
2782
|
+
recordForCharge: (userId, timestamp, chargeId) => createKey("token", userId, timestamp.toString(), encodeURIComponent(chargeId)),
|
|
2766
2783
|
/** Server provider-call record: retry-stable even when the retry clock changes. */
|
|
2767
2784
|
recordForStableCall: (userId, callId) => createKey("token", userId, "call", encodeURIComponent(callId)),
|
|
2768
2785
|
/** Server provider-call failure audit record: preserved separately from retry success in a collision-free namespace. */
|
|
@@ -2787,6 +2804,16 @@ var createTokenStatsKey = Object.assign(
|
|
|
2787
2804
|
})
|
|
2788
2805
|
}
|
|
2789
2806
|
);
|
|
2807
|
+
var createTokenStatsAppliedKey = Object.assign(
|
|
2808
|
+
(userId, chargeKey) => createKey("token", "charge-stats", userId, encodeURIComponent(chargeKey)),
|
|
2809
|
+
{
|
|
2810
|
+
/** 某个用户的全部计费幂等标记范围:token-charge-stats-<userId>-* */
|
|
2811
|
+
rangeOfUser: (userId) => ({
|
|
2812
|
+
start: createKey("token", "charge-stats", userId, ""),
|
|
2813
|
+
end: createKey("token", "charge-stats", userId, "\uFFFF")
|
|
2814
|
+
})
|
|
2815
|
+
}
|
|
2816
|
+
);
|
|
2790
2817
|
var DIALOG_AGENT_LIST_INDEX_PREFIX = "dialogidx";
|
|
2791
2818
|
var DIALOG_LIST_TIMESTAMP_MAX = 9999999999999;
|
|
2792
2819
|
function parseDialogUpdatedAtMs(value) {
|
|
@@ -3177,10 +3204,10 @@ var sanitizeShareData = (data) => {
|
|
|
3177
3204
|
};
|
|
3178
3205
|
|
|
3179
3206
|
export {
|
|
3180
|
-
asNonEmptyStringArray,
|
|
3181
|
-
asTrimmedNonEmptyStringArray,
|
|
3182
3207
|
ulid,
|
|
3183
3208
|
toTrimmedString,
|
|
3209
|
+
asNonEmptyStringArray,
|
|
3210
|
+
asTrimmedNonEmptyStringArray,
|
|
3184
3211
|
toNonEmptyString,
|
|
3185
3212
|
extractAgentInfo,
|
|
3186
3213
|
extractCoverImage,
|
|
@@ -2,16 +2,16 @@ import {
|
|
|
2
2
|
deleteDbRecord,
|
|
3
3
|
queryUserRecords,
|
|
4
4
|
readDbRecord
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-K6L5PNXK.js";
|
|
6
6
|
import {
|
|
7
7
|
mergeAndDedupUserData
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-OXME3PEE.js";
|
|
9
9
|
import {
|
|
10
10
|
toErrorMessage
|
|
11
11
|
} from "./chunk-HNMXYYJR.js";
|
|
12
12
|
import {
|
|
13
13
|
isTombstoneRecord
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-D2MDMY2M.js";
|
|
15
15
|
|
|
16
16
|
// packages/cli/globalRecordOperations.ts
|
|
17
17
|
async function listUserRecordsFromServers(args) {
|
|
@@ -153,6 +153,13 @@ function slateToSimplifiedMarkdown(nodes, options = {}) {
|
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
// packages/ai/tools/readDocTool.ts
|
|
156
|
+
var resolvePageReadMarkdown = (pageData) => {
|
|
157
|
+
const slateData = pageData.slateData;
|
|
158
|
+
if (Array.isArray(slateData) && slateData.length > 0) {
|
|
159
|
+
return slateToSimplifiedMarkdown(slateData);
|
|
160
|
+
}
|
|
161
|
+
return typeof pageData.content === "string" ? pageData.content : "";
|
|
162
|
+
};
|
|
156
163
|
var readDocFunctionSchema = {
|
|
157
164
|
name: "readDoc",
|
|
158
165
|
description: [
|
|
@@ -175,7 +182,7 @@ var readPageFunctionSchema = {
|
|
|
175
182
|
name: "readPage"
|
|
176
183
|
};
|
|
177
184
|
var buildReadDocResult = (pageData) => {
|
|
178
|
-
const markdownContent =
|
|
185
|
+
const markdownContent = resolvePageReadMarkdown(pageData);
|
|
179
186
|
const rawData = {
|
|
180
187
|
success: true,
|
|
181
188
|
id: pageData.dbKey,
|
|
@@ -199,7 +206,7 @@ async function readDocFunc(args, thunkApi) {
|
|
|
199
206
|
throw new Error(`\u65E0\u6548\u7684\u9875\u9762 ID: ${id}\u3002\u9875\u9762 ID \u901A\u5E38\u4EE5 "page-" \u5F00\u5934\u3002`);
|
|
200
207
|
}
|
|
201
208
|
try {
|
|
202
|
-
const { readAction } = await import("./read-
|
|
209
|
+
const { readAction } = await import("./read-LSYFLSIM.js");
|
|
203
210
|
const pageData = await readAction({ dbKey: id }, thunkApi);
|
|
204
211
|
if (!pageData) {
|
|
205
212
|
throw new Error(`\u672A\u627E\u5230 ID \u4E3A ${id} \u7684\u9875\u9762\u3002`);
|
|
@@ -213,6 +220,7 @@ var readPageFunc = readDocFunc;
|
|
|
213
220
|
|
|
214
221
|
export {
|
|
215
222
|
slateToSimplifiedMarkdown,
|
|
223
|
+
resolvePageReadMarkdown,
|
|
216
224
|
readDocFunctionSchema,
|
|
217
225
|
readPageFunctionSchema,
|
|
218
226
|
buildReadDocResult,
|
|
@@ -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-WDLSZMTA.js";
|
|
10
7
|
import {
|
|
11
8
|
upload
|
|
12
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-WPHY3VPF.js";
|
|
13
10
|
import {
|
|
14
11
|
getRuntimeServerContext
|
|
15
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-O7SVKKLY.js";
|
|
16
13
|
import {
|
|
17
14
|
API_ENDPOINTS
|
|
18
15
|
} from "./chunk-LCBAMY2M.js";
|
|
@@ -42,8 +39,7 @@ var serializeMessageContent = (content, imagePlaceholder = "[\u56FE\u7247]") =>
|
|
|
42
39
|
return null;
|
|
43
40
|
};
|
|
44
41
|
|
|
45
|
-
// packages/
|
|
46
|
-
var BYTES_PER_MB = 1024 * 1024;
|
|
42
|
+
// packages/core/file/dataUrl.ts
|
|
47
43
|
var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
48
44
|
var parseDataUrl = (dataUrl) => {
|
|
49
45
|
const trimmed = dataUrl.trim();
|
|
@@ -615,7 +611,7 @@ function planCompression(input) {
|
|
|
615
611
|
}
|
|
616
612
|
|
|
617
613
|
// packages/ai/context/compactionShared.ts
|
|
618
|
-
var COMPACTION_SUMMARY_SCHEMA_VERSION =
|
|
614
|
+
var COMPACTION_SUMMARY_SCHEMA_VERSION = 2;
|
|
619
615
|
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
|
|
620
616
|
|
|
621
617
|
\u4E25\u683C\u53EA\u8F93\u51FA\u4E0B\u9762\u4E09\u90E8\u5206\uFF0C\u6807\u9898\u5FC5\u987B\u5B8C\u5168\u4E00\u81F4\uFF1A
|
|
@@ -628,10 +624,16 @@ var COMPACTION_SUMMARY_SYSTEM_PROMPT = `\u4F60\u662F\u5BF9\u8BDD\u4E0A\u4E0B\u65
|
|
|
628
624
|
|
|
629
625
|
\u8981\u6C42\uFF1A
|
|
630
626
|
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
|
|
631
|
-
2) \u5173\u952E\u4E8B\u5B9E\u6863\u6848\
|
|
627
|
+
2) \u5173\u952E\u4E8B\u5B9E\u6863\u6848\u7684**\u524D\u4E24\u9879\u56FA\u5B9A\u662F**\uFF1A
|
|
628
|
+
- \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
|
|
629
|
+
\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
|
|
630
|
+
\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
|
|
631
|
+
- \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
|
|
632
|
+
\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
|
|
633
|
+
\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
|
|
632
634
|
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
|
|
633
635
|
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
|
|
634
|
-
5) \u5FFD\u7565\u5BD2\u6684\u3001\u91CD\u590D\u5C1D\u8BD5\
|
|
636
|
+
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
|
|
635
637
|
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`;
|
|
636
638
|
function formatMessageContentFallback(msg) {
|
|
637
639
|
const content = serializeMessageContent(msg.content);
|
|
@@ -767,14 +769,6 @@ function formatCompactionMetricsLog(metrics) {
|
|
|
767
769
|
return `[Compaction] reason=${metrics.reason} compressed=${metrics.compressedCount}->${metrics.retainedCount} msgs, tokens=${totalBefore}->${totalAfter} (ratio=${ratio})${llmInfo}`;
|
|
768
770
|
}
|
|
769
771
|
|
|
770
|
-
// packages/core/clipCompactText.ts
|
|
771
|
-
function clipCompactText(value, max, ellipsis = "...") {
|
|
772
|
-
const compact = compactWhitespace(value);
|
|
773
|
-
if (compact.length <= max) return compact;
|
|
774
|
-
if (max <= ellipsis.length) return compact.slice(0, max);
|
|
775
|
-
return `${compact.slice(0, max - ellipsis.length)}${ellipsis}`;
|
|
776
|
-
}
|
|
777
|
-
|
|
778
772
|
// packages/ai/token/providerCallTiming.ts
|
|
779
773
|
var defaultNow = () => {
|
|
780
774
|
const perf = globalThis.performance;
|
|
@@ -846,7 +840,14 @@ var isMeaningfulResponsesOutput = (event) => {
|
|
|
846
840
|
};
|
|
847
841
|
|
|
848
842
|
export {
|
|
849
|
-
|
|
843
|
+
normalizeTimingMs,
|
|
844
|
+
createProviderCallTimingTracker,
|
|
845
|
+
observeMeaningfulProviderResponseAt,
|
|
846
|
+
observeMeaningfulProviderResponse,
|
|
847
|
+
finalizeProviderCallTiming,
|
|
848
|
+
withProviderCallTimingFields,
|
|
849
|
+
isMeaningfulChatCompletionOutput,
|
|
850
|
+
isMeaningfulResponsesOutput,
|
|
850
851
|
planContextUsage,
|
|
851
852
|
buildDatabaseFileContentUrl,
|
|
852
853
|
serializeMessageContent,
|
|
@@ -860,13 +861,5 @@ export {
|
|
|
860
861
|
formatFileOperationsFromMessages,
|
|
861
862
|
formatMessagesForSummaryWithTruncation,
|
|
862
863
|
buildCompactionMetricsFromPlan,
|
|
863
|
-
formatCompactionMetricsLog
|
|
864
|
-
normalizeTimingMs,
|
|
865
|
-
createProviderCallTimingTracker,
|
|
866
|
-
observeMeaningfulProviderResponseAt,
|
|
867
|
-
observeMeaningfulProviderResponse,
|
|
868
|
-
finalizeProviderCallTiming,
|
|
869
|
-
withProviderCallTimingFields,
|
|
870
|
-
isMeaningfulChatCompletionOutput,
|
|
871
|
-
isMeaningfulResponsesOutput
|
|
864
|
+
formatCompactionMetricsLog
|
|
872
865
|
};
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
createFileCredentialBroker,
|
|
4
4
|
migrateAgentSecrets,
|
|
5
5
|
normalizeAgentRuntimeToolPolicy
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-2U3NHADM.js";
|
|
7
7
|
import {
|
|
8
8
|
asRecordOrEmpty
|
|
9
9
|
} from "./chunk-KX6YBIHG.js";
|
|
@@ -11,16 +11,18 @@ import {
|
|
|
11
11
|
patch,
|
|
12
12
|
remove,
|
|
13
13
|
write
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-WPHY3VPF.js";
|
|
15
|
+
import {
|
|
16
|
+
getRuntimeServerContext
|
|
17
|
+
} from "./chunk-O7SVKKLY.js";
|
|
15
18
|
import {
|
|
16
19
|
createAgentKey,
|
|
17
20
|
toTrimmedString
|
|
18
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-OKGVNZTL.js";
|
|
19
22
|
import {
|
|
20
23
|
asyncThunkCreator,
|
|
21
|
-
buildCreateSlice
|
|
22
|
-
|
|
23
|
-
} from "./chunk-UKWGR5SS.js";
|
|
24
|
+
buildCreateSlice
|
|
25
|
+
} from "./chunk-VY6VFGKR.js";
|
|
24
26
|
import {
|
|
25
27
|
asTrimmedString
|
|
26
28
|
} from "./chunk-3EUW3WEO.js";
|
|
@@ -304,7 +306,7 @@ var slice = createSliceWithThunks({
|
|
|
304
306
|
const overrides = {};
|
|
305
307
|
if (args.systemPromptOverride !== void 0) overrides.prompt = args.systemPromptOverride;
|
|
306
308
|
if (args.toolsOverride !== void 0) overrides.tools = args.toolsOverride;
|
|
307
|
-
const { _executeModel } = await import("./_executeModel-
|
|
309
|
+
const { _executeModel } = await import("./_executeModel-C4EH5TZG.js");
|
|
308
310
|
return _executeModel(
|
|
309
311
|
{
|
|
310
312
|
isStreaming: args.isStreaming ?? false,
|
|
@@ -325,7 +327,7 @@ var slice = createSliceWithThunks({
|
|
|
325
327
|
* - 循环直到无工具调用或触发其他运行时停止条件
|
|
326
328
|
*/
|
|
327
329
|
runAgent: create.asyncThunk(async (args, thunkApi) => {
|
|
328
|
-
const { runAgentClientLoop } = await import("./runAgentClientLoop-
|
|
330
|
+
const { runAgentClientLoop } = await import("./runAgentClientLoop-CZOYWHDN.js");
|
|
329
331
|
const { content: loopContent, toolCallCount } = await runAgentClientLoop(
|
|
330
332
|
{
|
|
331
333
|
agentKey: args.agentKey,
|
|
@@ -341,7 +343,7 @@ var slice = createSliceWithThunks({
|
|
|
341
343
|
* 聊天轮次流式 Agent 调用
|
|
342
344
|
*/
|
|
343
345
|
streamAgentChatTurn: create.asyncThunk(async (args, thunkApi) => {
|
|
344
|
-
const { streamAgentChatTurnHandler } = await import("./streamAgentChatTurn-
|
|
346
|
+
const { streamAgentChatTurnHandler } = await import("./streamAgentChatTurn-LV6ZWUD4.js");
|
|
345
347
|
return streamAgentChatTurnHandler(args, thunkApi);
|
|
346
348
|
}),
|
|
347
349
|
/**
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import {
|
|
2
|
+
noloAgentId
|
|
3
|
+
} from "./chunk-76HO2DP6.js";
|
|
4
|
+
import {
|
|
5
|
+
asTrimmedLowercaseString
|
|
6
|
+
} from "./chunk-QSJ3HFEF.js";
|
|
7
|
+
import {
|
|
8
|
+
normalizeServerOrigin
|
|
9
|
+
} from "./chunk-CF7PE763.js";
|
|
10
|
+
|
|
11
|
+
// packages/app/theme/fontPreference.ts
|
|
12
|
+
var FONT_PRESET_ALIASES = {
|
|
13
|
+
system: "system",
|
|
14
|
+
default: "system",
|
|
15
|
+
hei: "hei",
|
|
16
|
+
heiti: "hei",
|
|
17
|
+
sans: "hei",
|
|
18
|
+
song: "song",
|
|
19
|
+
songti: "song",
|
|
20
|
+
serif: "song",
|
|
21
|
+
kai: "kai",
|
|
22
|
+
kaiti: "kai",
|
|
23
|
+
"kai-ti": "kai",
|
|
24
|
+
"fang-song": "fang-song",
|
|
25
|
+
fangsong: "fang-song",
|
|
26
|
+
"fang song": "fang-song"
|
|
27
|
+
};
|
|
28
|
+
var normalizeFontPreset = (value) => {
|
|
29
|
+
const normalized = asTrimmedLowercaseString(value);
|
|
30
|
+
return FONT_PRESET_ALIASES[normalized];
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
// packages/ai/policy/types.ts
|
|
34
|
+
var DEFAULT_AGENT_BASE_POLICY = {
|
|
35
|
+
version: 1,
|
|
36
|
+
tone: {
|
|
37
|
+
preset: "default",
|
|
38
|
+
resolutionMode: "blend"
|
|
39
|
+
},
|
|
40
|
+
knowledgeCaptureMaxLevel: 4,
|
|
41
|
+
spaceContextMaxLevel: 4,
|
|
42
|
+
selfEvolutionMode: "knowledge_only"
|
|
43
|
+
};
|
|
44
|
+
var DEFAULT_USER_PREFERENCE_PROFILE = {
|
|
45
|
+
version: 1,
|
|
46
|
+
tone: {
|
|
47
|
+
preset: "default"
|
|
48
|
+
},
|
|
49
|
+
knowledgeCaptureLevel: 2,
|
|
50
|
+
spaceContextLevel: 3
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
// packages/app/settings/settingTypes.ts
|
|
54
|
+
var SYSTEM_DEFAULT_AGENT_ID = "system-default";
|
|
55
|
+
|
|
56
|
+
// packages/app/settings/settingNormalizers.ts
|
|
57
|
+
var hasOwn = (target, key) => Object.prototype.hasOwnProperty.call(target, key);
|
|
58
|
+
var normalizeDefaultAgentIdSetting = (value) => {
|
|
59
|
+
if (typeof value !== "string" || value.trim() === "") {
|
|
60
|
+
return void 0;
|
|
61
|
+
}
|
|
62
|
+
return value === noloAgentId || value === SYSTEM_DEFAULT_AGENT_ID ? SYSTEM_DEFAULT_AGENT_ID : value;
|
|
63
|
+
};
|
|
64
|
+
var normalizeAuthorityHomeServerSetting = (value) => {
|
|
65
|
+
const normalized = normalizeServerOrigin(value);
|
|
66
|
+
return /^https?:\/\//i.test(normalized) ? normalized : null;
|
|
67
|
+
};
|
|
68
|
+
var normalizeTonePresetSetting = (value) => {
|
|
69
|
+
switch (value) {
|
|
70
|
+
case "professional":
|
|
71
|
+
case "friendly":
|
|
72
|
+
case "direct":
|
|
73
|
+
case "pragmatic":
|
|
74
|
+
case "default":
|
|
75
|
+
return value;
|
|
76
|
+
default:
|
|
77
|
+
return DEFAULT_USER_PREFERENCE_PROFILE.tone?.preset ?? "default";
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
var normalizePolicyLevelSetting = (value, fallback) => {
|
|
81
|
+
const n = Number(value);
|
|
82
|
+
if (n === 1 || n === 2 || n === 3 || n === 4) {
|
|
83
|
+
return n;
|
|
84
|
+
}
|
|
85
|
+
return fallback;
|
|
86
|
+
};
|
|
87
|
+
var resolveDefaultAgentIdSetting = (value) => normalizeDefaultAgentIdSetting(value) ?? SYSTEM_DEFAULT_AGENT_ID;
|
|
88
|
+
var omitKeys = (record, keys) => {
|
|
89
|
+
const next = { ...record };
|
|
90
|
+
keys.forEach((key) => {
|
|
91
|
+
delete next[key];
|
|
92
|
+
});
|
|
93
|
+
return next;
|
|
94
|
+
};
|
|
95
|
+
var isRecordLike = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
96
|
+
var normalizeSystemBuiltinSkills = (value, defaults) => {
|
|
97
|
+
const base = isRecordLike(value) ? value : {};
|
|
98
|
+
const result = { ...defaults };
|
|
99
|
+
for (const key of Object.keys(base)) {
|
|
100
|
+
result[key] = Boolean(base[key]);
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
// packages/ai/policy/selfUpdateFields.ts
|
|
106
|
+
var AGENT_UPDATE_FIELD_NAMES = [
|
|
107
|
+
"name",
|
|
108
|
+
"handle",
|
|
109
|
+
"model",
|
|
110
|
+
"provider",
|
|
111
|
+
"prompt",
|
|
112
|
+
"introduction",
|
|
113
|
+
"greeting",
|
|
114
|
+
"isPublic",
|
|
115
|
+
"tags",
|
|
116
|
+
"tools",
|
|
117
|
+
"references",
|
|
118
|
+
"temperature",
|
|
119
|
+
"top_p",
|
|
120
|
+
"frequency_penalty",
|
|
121
|
+
"presence_penalty",
|
|
122
|
+
"max_tokens",
|
|
123
|
+
"reasoning_effort"
|
|
124
|
+
];
|
|
125
|
+
var PRIMARY_AUTO_APPROVE_SELF_UPDATE_FIELDS = [
|
|
126
|
+
"greeting",
|
|
127
|
+
"introduction",
|
|
128
|
+
"tags"
|
|
129
|
+
];
|
|
130
|
+
var DEFAULT_AUTO_APPROVED_SELF_UPDATE_FIELDS = [
|
|
131
|
+
...PRIMARY_AUTO_APPROVE_SELF_UPDATE_FIELDS
|
|
132
|
+
];
|
|
133
|
+
var VALID_AGENT_UPDATE_FIELDS = new Set(AGENT_UPDATE_FIELD_NAMES);
|
|
134
|
+
var normalizeAgentUpdateFieldList = (value, fallback = DEFAULT_AUTO_APPROVED_SELF_UPDATE_FIELDS) => {
|
|
135
|
+
if (!Array.isArray(value)) {
|
|
136
|
+
return [...fallback];
|
|
137
|
+
}
|
|
138
|
+
const normalized = Array.from(
|
|
139
|
+
new Set(
|
|
140
|
+
value.filter(
|
|
141
|
+
(item) => typeof item === "string" && VALID_AGENT_UPDATE_FIELDS.has(item)
|
|
142
|
+
)
|
|
143
|
+
)
|
|
144
|
+
);
|
|
145
|
+
return normalized;
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
export {
|
|
149
|
+
normalizeFontPreset,
|
|
150
|
+
DEFAULT_AGENT_BASE_POLICY,
|
|
151
|
+
DEFAULT_USER_PREFERENCE_PROFILE,
|
|
152
|
+
AGENT_UPDATE_FIELD_NAMES,
|
|
153
|
+
DEFAULT_AUTO_APPROVED_SELF_UPDATE_FIELDS,
|
|
154
|
+
normalizeAgentUpdateFieldList,
|
|
155
|
+
SYSTEM_DEFAULT_AGENT_ID,
|
|
156
|
+
hasOwn,
|
|
157
|
+
normalizeDefaultAgentIdSetting,
|
|
158
|
+
normalizeAuthorityHomeServerSetting,
|
|
159
|
+
normalizeTonePresetSetting,
|
|
160
|
+
normalizePolicyLevelSetting,
|
|
161
|
+
resolveDefaultAgentIdSetting,
|
|
162
|
+
omitKeys,
|
|
163
|
+
normalizeSystemBuiltinSkills
|
|
164
|
+
};
|