nolo-cli 0.8.0 → 0.9.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/_executeModel-UD44KGZ4.js +203 -0
- package/action-ZJWE3Y5S.js +28 -0
- package/addContentAction-TVDBNJM5.js +26 -0
- package/addDialogAgentAction-EKH774VT.js +68 -0
- package/agentDeleteCommand-TCPEFJTF.js +327 -0
- package/agentEmailCommands-CZ3UILZ4.js +626 -0
- package/agentListCommands-SJKO2FFB.js +223 -0
- package/agentMachineCommands-PSNABISZ.js +425 -0
- package/agentPullCommand-O2MTUAFR.js +122 -0
- package/agentRecordCommands-MH2JKFHS.js +94 -0
- package/agentRunCommand-4KH6MIZR.js +110 -0
- package/agentRunControl-K4VKNEHF.js +57 -0
- package/agentRuntimeLocal-SKHJUWSS.js +104 -0
- package/agentSlice-3WXXN4VK.js +42 -0
- package/authCommand-PXFX6JDT.js +581 -0
- package/authCommands-356AYWEK.js +35 -0
- package/chunk-2EISRLRC.js +238 -0
- package/chunk-2FTTDCD4.js +675 -0
- package/chunk-2K2ECKSG.js +222 -0
- package/chunk-2PUGVR6E.js +19 -0
- package/chunk-3ASDTTEI.js +1774 -0
- package/chunk-3EUW3WEO.js +8 -0
- package/chunk-3LY4F7SV.js +9293 -0
- package/chunk-3TZDXYSF.js +71 -0
- package/chunk-3WYQEUBI.js +34 -0
- package/chunk-4CQLVGRV.js +50 -0
- package/chunk-4IJYA27C.js +342 -0
- package/chunk-4K2KKCSD.js +577 -0
- package/chunk-4SN6J65J.js +38 -0
- package/chunk-4VNS5WPM.js +42 -0
- package/chunk-4ZDM73SD.js +34 -0
- package/chunk-5CS33IBL.js +301 -0
- package/chunk-5KLGBAAR.js +386 -0
- package/chunk-5MIDPSSK.js +206 -0
- package/chunk-5MMAK75Q.js +15 -0
- package/chunk-5PJ3VWCS.js +360 -0
- package/chunk-63SLEOLK.js +175 -0
- package/chunk-63W5N6P3.js +150 -0
- package/chunk-6GANEXVO.js +231 -0
- package/chunk-6HYVJV7B.js +102 -0
- package/chunk-6WD3OOJS.js +20 -0
- package/chunk-7OOXPE3N.js +628 -0
- package/chunk-7QRKCBOP.js +1078 -0
- package/chunk-ATNTHIZI.js +13 -0
- package/chunk-AUQ747NZ.js +902 -0
- package/chunk-AVMKZHBC.js +85 -0
- package/chunk-AZPCASRE.js +36 -0
- package/chunk-BBYVOSU2.js +792 -0
- package/chunk-C3RUNRHT.js +51 -0
- package/chunk-CF2WZF4N.js +134 -0
- package/chunk-CF7PE763.js +10 -0
- package/chunk-CKOJQDKR.js +198 -0
- package/chunk-COMXDWNM.js +807 -0
- package/chunk-CPB2YM4D.js +171 -0
- package/chunk-CWMSB67P.js +34 -0
- package/chunk-DCOA4QSN.js +105 -0
- package/chunk-DFFIZ25G.js +30 -0
- package/chunk-DWLEOOGR.js +8 -0
- package/chunk-DZ3XJVET.js +231 -0
- package/chunk-EHLHSX7R.js +1433 -0
- package/chunk-ELRRLDWI.js +478 -0
- package/chunk-EXTIQUCI.js +482 -0
- package/chunk-EYEEHCU4.js +3066 -0
- package/chunk-G3SUCT4W.js +8 -0
- package/chunk-G43KEVSC.js +1447 -0
- package/chunk-GAKEBQD6.js +30 -0
- package/chunk-GBRG75BQ.js +86 -0
- package/chunk-GG4AJPSR.js +191 -0
- package/chunk-H33743XH.js +25 -0
- package/chunk-HNMXYYJR.js +12 -0
- package/chunk-I42VC5KR.js +15 -0
- package/chunk-IDZTNRP2.js +85 -0
- package/chunk-ISNCLGUZ.js +146 -0
- package/chunk-IWX4UW2E.js +548 -0
- package/chunk-JBTJAPUF.js +35 -0
- package/chunk-JEXVIMYZ.js +55 -0
- package/chunk-JRKKFRAV.js +537 -0
- package/chunk-JZPBVBIY.js +94 -0
- package/chunk-KKY4B2Q2.js +21 -0
- package/chunk-KOCA5FCS.js +4750 -0
- package/chunk-KQHGZWSV.js +63 -0
- package/chunk-KTVVPRJS.js +138 -0
- package/chunk-KUG52IAP.js +8 -0
- package/chunk-KX6YBIHG.js +8 -0
- package/chunk-LARL2V6G.js +9017 -0
- package/chunk-LCBAMY2M.js +60 -0
- package/chunk-LM6IYQ3F.js +16 -0
- package/chunk-M76ECQRD.js +13658 -0
- package/chunk-MGOJ5R6J.js +113 -0
- package/chunk-MKMWT7SA.js +27196 -0
- package/chunk-MRC4Q34M.js +188 -0
- package/chunk-OLZBQWZU.js +6 -0
- package/chunk-OPZYGHUC.js +89 -0
- package/chunk-OWOHNGCN.js +50 -0
- package/chunk-PAKN26FP.js +239 -0
- package/chunk-PCWC3JTN.js +91 -0
- package/chunk-PG5PNA7Y.js +939 -0
- package/chunk-Q2YZULBH.js +104 -0
- package/chunk-QSJ3HFEF.js +8 -0
- package/chunk-QYXLLLGL.js +4519 -0
- package/chunk-ROWQEJRP.js +139 -0
- package/chunk-S7Z2HMCN.js +25 -0
- package/chunk-SBR32ZZS.js +1901 -0
- package/chunk-SH2CFQOH.js +3391 -0
- package/chunk-SL35K7AH.js +226 -0
- package/chunk-TILFE6LV.js +381 -0
- package/chunk-TSS3XJY4.js +2052 -0
- package/chunk-U4TRT5V4.js +246 -0
- package/chunk-U6VC4MU4.js +8 -0
- package/chunk-UAD2WT54.js +64 -0
- package/chunk-UUJDGGAK.js +421 -0
- package/chunk-VF4K2QE6.js +21 -0
- package/chunk-VHBWHNVT.js +59 -0
- package/chunk-VIDPVFP3.js +20 -0
- package/chunk-VP4WJWKW.js +8882 -0
- package/chunk-W4NVOSFF.js +37 -0
- package/chunk-WKM6FH35.js +190 -0
- package/chunk-WWC7I6TA.js +8 -0
- package/chunk-X7W4TNB4.js +1550 -0
- package/chunk-XE635NI4.js +1948 -0
- package/chunk-XKIMRZO2.js +221 -0
- package/chunk-XS466O7S.js +933 -0
- package/chunk-Y5GCAMGP.js +9 -0
- package/chunk-YBWOP46I.js +3272 -0
- package/chunk-YPRZSPF3.js +148 -0
- package/chunk-YYUCRDOK.js +69 -0
- package/chunk-Z4NR32XR.js +50 -0
- package/chunk-ZIG5LJ7X.js +24765 -0
- package/chunk-ZNFJWEN4.js +56 -0
- package/chunk-ZQ2UM4KG.js +2878 -0
- package/cliExecutor-DNE7TCC4.js +36 -0
- package/clipboardy-BVE3LVEH.js +12001 -0
- package/createAgentAutomationAction-63OIP6X5.js +866 -0
- package/createDialogAction-ZLYZDYBB.js +54 -0
- package/createPageAction-AL5FSDCK.js +171 -0
- package/db-HCJ5PRB5.js +271 -0
- package/dbSlice-PR44QPXY.js +60 -0
- package/deleteFile-4SKGPHOZ.js +41 -0
- package/dialogCommands-F6YI5742.js +63 -0
- package/dialogSlice-JSBNZRLR.js +148 -0
- package/docCreateCommands-4CTO7ERT.js +219 -0
- package/docDeleteCommands-VBWERDRG.js +180 -0
- package/docReadCommands-KNP4MFYB.js +133 -0
- package/docStore-ADP5VYY4.js +98 -0
- package/docUpdateCommands-4BCBJQHA.js +317 -0
- package/fetchMessages-U6ZHN56A.js +17 -0
- package/getPricing-3E6UNPKL.js +30 -0
- package/handleSendMessageAction-IJDQ6ARA.js +185 -0
- package/index.js +188 -112943
- package/lib-FYYBQIXS.js +19839 -0
- package/localDialogRead-Z5UTAJPU.js +26 -0
- package/localFirstLog-DHNOY2NA.js +19 -0
- package/localRuntimeAuthority-TEGCOWX4.js +471 -0
- package/localRuntimeDb-LGDF6FQP.js +12 -0
- package/machineCommands-EA3M4XTN.js +779 -0
- package/machineInfo-M6KB6HZN.js +10 -0
- package/machineWsRunDispatch-NAPKE5ZA.js +110 -0
- package/memoryCommands-O4MIPIWQ.js +476 -0
- package/models-4OPOOLFS.js +9 -0
- package/offlineMarxistsAgentCommand-BCPJITJL.js +242 -0
- package/package.json +3 -25
- package/read-RIJCIVKX.js +17 -0
- package/readDocTool-GZD2N3LO.js +16 -0
- package/readlineWorkspace-KMWT4T4S.js +5509 -0
- package/removeDialogAgentAction-GJQJNDW6.js +73 -0
- package/runAgentClientLoop-U5Q6NDTJ.js +291 -0
- package/runtimeDoctorCommands-LRHLPDRC.js +289 -0
- package/setDialogExtraReferencesAction-M7OQG54N.js +60 -0
- package/setPrimaryDialogAgentAction-46UNFJDL.js +80 -0
- package/settingSlice-FVUUH4JA.js +199 -0
- package/skillSummaryMarker-42HKSXYY.js +9 -0
- package/slateToRenderMarkdown-Y5IYN73U.js +7 -0
- package/slateUtils-2M7MUTWX.js +19 -0
- package/spaceCommands-E2CFRPZJ.js +454 -0
- package/spaceSlice-L3R6IMXE.js +147 -0
- package/streamAgentChatTurn-UBDAOQWE.js +4528 -0
- package/tableCommands-GOFP7QKA.js +1286 -0
- package/toolApiClient-QI3YBNWB.js +26 -0
- package/tools-TMJXZTCA.js +85 -0
- package/tuiSummaryLlmCaller-RV3THLZF.js +78 -0
- package/understanding-GQKNDDWM.js +271 -0
- package/updateCommands-VOSPKXFF.js +31 -0
- package/updateDialogTitleAction-ZTWRDXI2.js +188 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ToolApiError,
|
|
3
|
+
buildToolRequestHeaders,
|
|
4
|
+
callToolApi,
|
|
5
|
+
getRequestConfig,
|
|
6
|
+
getToolBaseUrl,
|
|
7
|
+
getToolRequestContext,
|
|
8
|
+
resolveToolApiBaseUrl,
|
|
9
|
+
resolveToolBaseUrl
|
|
10
|
+
} from "./chunk-5MIDPSSK.js";
|
|
11
|
+
import "./chunk-DFFIZ25G.js";
|
|
12
|
+
import "./chunk-3ASDTTEI.js";
|
|
13
|
+
import "./chunk-DWLEOOGR.js";
|
|
14
|
+
import "./chunk-QSJ3HFEF.js";
|
|
15
|
+
import "./chunk-KUG52IAP.js";
|
|
16
|
+
import "./chunk-4VNS5WPM.js";
|
|
17
|
+
export {
|
|
18
|
+
ToolApiError,
|
|
19
|
+
buildToolRequestHeaders,
|
|
20
|
+
callToolApi,
|
|
21
|
+
getRequestConfig,
|
|
22
|
+
getToolBaseUrl,
|
|
23
|
+
getToolRequestContext,
|
|
24
|
+
resolveToolApiBaseUrl,
|
|
25
|
+
resolveToolBaseUrl
|
|
26
|
+
};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import {
|
|
2
|
+
TOOL_GROUP_META,
|
|
3
|
+
TOOL_PACKS,
|
|
4
|
+
addDefaultLightWebToolsForConfiguredAgents,
|
|
5
|
+
applyDefaultWebToolPacks,
|
|
6
|
+
findToolExecutor,
|
|
7
|
+
patchAgentToolSchemas,
|
|
8
|
+
toolDefinitionsByName,
|
|
9
|
+
toolDescriptions,
|
|
10
|
+
toolExecutors,
|
|
11
|
+
toolQueryFunc,
|
|
12
|
+
toolQueryFunctionSchema,
|
|
13
|
+
toolRegistry
|
|
14
|
+
} from "./chunk-MKMWT7SA.js";
|
|
15
|
+
import "./chunk-GAKEBQD6.js";
|
|
16
|
+
import "./chunk-KQHGZWSV.js";
|
|
17
|
+
import "./chunk-XKIMRZO2.js";
|
|
18
|
+
import "./chunk-3LY4F7SV.js";
|
|
19
|
+
import "./chunk-VP4WJWKW.js";
|
|
20
|
+
import "./chunk-63W5N6P3.js";
|
|
21
|
+
import "./chunk-UUJDGGAK.js";
|
|
22
|
+
import "./chunk-PG5PNA7Y.js";
|
|
23
|
+
import "./chunk-ZQ2UM4KG.js";
|
|
24
|
+
import "./chunk-Q2YZULBH.js";
|
|
25
|
+
import "./chunk-ZIG5LJ7X.js";
|
|
26
|
+
import "./chunk-4ZDM73SD.js";
|
|
27
|
+
import "./chunk-MRC4Q34M.js";
|
|
28
|
+
import "./chunk-PCWC3JTN.js";
|
|
29
|
+
import "./chunk-CWMSB67P.js";
|
|
30
|
+
import "./chunk-4K2KKCSD.js";
|
|
31
|
+
import "./chunk-KTVVPRJS.js";
|
|
32
|
+
import "./chunk-Z4NR32XR.js";
|
|
33
|
+
import "./chunk-M76ECQRD.js";
|
|
34
|
+
import "./chunk-YYUCRDOK.js";
|
|
35
|
+
import "./chunk-MGOJ5R6J.js";
|
|
36
|
+
import "./chunk-UAD2WT54.js";
|
|
37
|
+
import "./chunk-DCOA4QSN.js";
|
|
38
|
+
import "./chunk-AUQ747NZ.js";
|
|
39
|
+
import "./chunk-5MMAK75Q.js";
|
|
40
|
+
import "./chunk-BBYVOSU2.js";
|
|
41
|
+
import "./chunk-5CS33IBL.js";
|
|
42
|
+
import "./chunk-JZPBVBIY.js";
|
|
43
|
+
import "./chunk-IWX4UW2E.js";
|
|
44
|
+
import "./chunk-5MIDPSSK.js";
|
|
45
|
+
import "./chunk-DFFIZ25G.js";
|
|
46
|
+
import "./chunk-3ASDTTEI.js";
|
|
47
|
+
import "./chunk-DWLEOOGR.js";
|
|
48
|
+
import "./chunk-HNMXYYJR.js";
|
|
49
|
+
import "./chunk-63SLEOLK.js";
|
|
50
|
+
import "./chunk-TSS3XJY4.js";
|
|
51
|
+
import "./chunk-Y5GCAMGP.js";
|
|
52
|
+
import "./chunk-COMXDWNM.js";
|
|
53
|
+
import "./chunk-AZPCASRE.js";
|
|
54
|
+
import "./chunk-2EISRLRC.js";
|
|
55
|
+
import "./chunk-KX6YBIHG.js";
|
|
56
|
+
import "./chunk-SH2CFQOH.js";
|
|
57
|
+
import "./chunk-I42VC5KR.js";
|
|
58
|
+
import "./chunk-WWC7I6TA.js";
|
|
59
|
+
import "./chunk-QSJ3HFEF.js";
|
|
60
|
+
import "./chunk-ELRRLDWI.js";
|
|
61
|
+
import "./chunk-EYEEHCU4.js";
|
|
62
|
+
import "./chunk-QYXLLLGL.js";
|
|
63
|
+
import "./chunk-GBRG75BQ.js";
|
|
64
|
+
import "./chunk-4SN6J65J.js";
|
|
65
|
+
import "./chunk-LCBAMY2M.js";
|
|
66
|
+
import "./chunk-3EUW3WEO.js";
|
|
67
|
+
import "./chunk-U6VC4MU4.js";
|
|
68
|
+
import "./chunk-CF7PE763.js";
|
|
69
|
+
import "./chunk-G3SUCT4W.js";
|
|
70
|
+
import "./chunk-KUG52IAP.js";
|
|
71
|
+
import "./chunk-4VNS5WPM.js";
|
|
72
|
+
export {
|
|
73
|
+
TOOL_GROUP_META,
|
|
74
|
+
TOOL_PACKS,
|
|
75
|
+
addDefaultLightWebToolsForConfiguredAgents,
|
|
76
|
+
applyDefaultWebToolPacks,
|
|
77
|
+
findToolExecutor,
|
|
78
|
+
patchAgentToolSchemas,
|
|
79
|
+
toolDefinitionsByName,
|
|
80
|
+
toolDescriptions,
|
|
81
|
+
toolExecutors,
|
|
82
|
+
toolQueryFunc,
|
|
83
|
+
toolQueryFunctionSchema,
|
|
84
|
+
toolRegistry
|
|
85
|
+
};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BUILTIN_SUMMARY_LLM_CONFIG
|
|
3
|
+
} from "./chunk-4ZDM73SD.js";
|
|
4
|
+
import {
|
|
5
|
+
buildPlatformChatCompletionRequest,
|
|
6
|
+
canUsePlatformChatProvider,
|
|
7
|
+
parsePlatformChatCompletionResponse,
|
|
8
|
+
resolvePlatformChatProviderConfig
|
|
9
|
+
} from "./chunk-5KLGBAAR.js";
|
|
10
|
+
import "./chunk-OPZYGHUC.js";
|
|
11
|
+
import "./chunk-JRKKFRAV.js";
|
|
12
|
+
import "./chunk-BBYVOSU2.js";
|
|
13
|
+
import "./chunk-IWX4UW2E.js";
|
|
14
|
+
import "./chunk-I42VC5KR.js";
|
|
15
|
+
import "./chunk-QSJ3HFEF.js";
|
|
16
|
+
import "./chunk-3EUW3WEO.js";
|
|
17
|
+
import "./chunk-CF7PE763.js";
|
|
18
|
+
import "./chunk-G3SUCT4W.js";
|
|
19
|
+
import "./chunk-KUG52IAP.js";
|
|
20
|
+
import "./chunk-4VNS5WPM.js";
|
|
21
|
+
|
|
22
|
+
// packages/cli/client/tuiSummaryLlmCaller.ts
|
|
23
|
+
function createTuiSummaryLlmCaller(env, options) {
|
|
24
|
+
const fetchImpl = options?.fetchImpl ?? fetch;
|
|
25
|
+
const timeoutMs = options?.timeoutMs ?? 3e4;
|
|
26
|
+
return async (content) => {
|
|
27
|
+
if (!canUsePlatformChatProvider(env)) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
const providerConfig = await resolvePlatformChatProviderConfig({
|
|
32
|
+
agentConfig: { ...BUILTIN_SUMMARY_LLM_CONFIG, key: BUILTIN_SUMMARY_LLM_CONFIG.id },
|
|
33
|
+
env,
|
|
34
|
+
apiKeyRefResolver: options?.apiKeyRefResolver,
|
|
35
|
+
credentialBroker: options?.credentialBroker
|
|
36
|
+
});
|
|
37
|
+
if (!providerConfig?.authToken) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
const messages = [
|
|
41
|
+
{ role: "user", content }
|
|
42
|
+
];
|
|
43
|
+
const request = buildPlatformChatCompletionRequest({
|
|
44
|
+
providerConfig,
|
|
45
|
+
messages,
|
|
46
|
+
stream: false
|
|
47
|
+
});
|
|
48
|
+
const response = await fetchImpl(request.url, {
|
|
49
|
+
...request.init,
|
|
50
|
+
signal: AbortSignal.timeout(timeoutMs)
|
|
51
|
+
});
|
|
52
|
+
if (!response.ok) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
const raw = await response.text().catch(() => "");
|
|
56
|
+
const data = safeParseJson(raw);
|
|
57
|
+
if (!data) return null;
|
|
58
|
+
const parsed = parsePlatformChatCompletionResponse({
|
|
59
|
+
providerConfig,
|
|
60
|
+
data,
|
|
61
|
+
trace: []
|
|
62
|
+
});
|
|
63
|
+
return parsed?.content?.trim() || null;
|
|
64
|
+
} catch {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function safeParseJson(raw) {
|
|
70
|
+
try {
|
|
71
|
+
return JSON.parse(raw);
|
|
72
|
+
} catch {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
export {
|
|
77
|
+
createTuiSummaryLlmCaller
|
|
78
|
+
};
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createMemoryItem,
|
|
3
|
+
writeMemoryItemWithIndexesToDb
|
|
4
|
+
} from "./chunk-3TZDXYSF.js";
|
|
5
|
+
import {
|
|
6
|
+
loadMemoryCandidatesFromDb
|
|
7
|
+
} from "./chunk-Q2YZULBH.js";
|
|
8
|
+
import {
|
|
9
|
+
compactWhitespace
|
|
10
|
+
} from "./chunk-DWLEOOGR.js";
|
|
11
|
+
import "./chunk-SH2CFQOH.js";
|
|
12
|
+
import "./chunk-I42VC5KR.js";
|
|
13
|
+
import "./chunk-WWC7I6TA.js";
|
|
14
|
+
import "./chunk-3EUW3WEO.js";
|
|
15
|
+
import "./chunk-U6VC4MU4.js";
|
|
16
|
+
import "./chunk-G3SUCT4W.js";
|
|
17
|
+
import "./chunk-4VNS5WPM.js";
|
|
18
|
+
|
|
19
|
+
// packages/ai/memory/scope.ts
|
|
20
|
+
var buildUserMemoryTarget = (userId) => ({
|
|
21
|
+
ownerType: "user",
|
|
22
|
+
ownerId: userId,
|
|
23
|
+
visibility: "private",
|
|
24
|
+
subjectType: "user",
|
|
25
|
+
subjectId: userId
|
|
26
|
+
});
|
|
27
|
+
var buildSpaceMemoryTarget = (spaceId) => ({
|
|
28
|
+
ownerType: "space",
|
|
29
|
+
ownerId: spaceId,
|
|
30
|
+
visibility: "shared",
|
|
31
|
+
subjectType: "space",
|
|
32
|
+
subjectId: spaceId
|
|
33
|
+
});
|
|
34
|
+
var resolveUserOrSpaceMemoryTarget = (input) => {
|
|
35
|
+
if (input.userId) return buildUserMemoryTarget(input.userId);
|
|
36
|
+
if (input.spaceId) return buildSpaceMemoryTarget(input.spaceId);
|
|
37
|
+
return null;
|
|
38
|
+
};
|
|
39
|
+
var buildAgentSubjectTarget = (target, agentKey) => ({
|
|
40
|
+
owner: { ownerType: target.ownerType, ownerId: target.ownerId },
|
|
41
|
+
visibility: target.visibility,
|
|
42
|
+
subjectType: "agent",
|
|
43
|
+
subjectId: agentKey
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// packages/ai/memory/understanding.ts
|
|
47
|
+
var UNDERSTANDING_TAG = "understanding-memory";
|
|
48
|
+
var normalizeClause = (value) => (
|
|
49
|
+
// Compact first so trailing whitespace after sentence punct still strips
|
|
50
|
+
// (matches pre-seam: compact → strip end punct → trim residual spaces).
|
|
51
|
+
compactWhitespace(value.replace(/[“”"]/g, "")).replace(/[。!?!?;;]+$/u, "").trim()
|
|
52
|
+
);
|
|
53
|
+
var normalizeSignalLead = (value) => normalizeClause(value.split(/[\n,,。!?!?;;]+/u)[0] ?? "");
|
|
54
|
+
var stripLead = (value) => value.replace(/^(明白|好的|对|是的|所以|其实|我记得|欢迎回来|嗯|那)\s*[,,::\-]?\s*/u, "").trim();
|
|
55
|
+
var contentToText = (content) => {
|
|
56
|
+
if (typeof content === "string") return content.trim();
|
|
57
|
+
if (!Array.isArray(content)) return "";
|
|
58
|
+
return content.map((part) => part?.type === "text" ? part.text.trim() : "").filter(Boolean).join("\n").trim();
|
|
59
|
+
};
|
|
60
|
+
var extractPreference = (text) => {
|
|
61
|
+
const matches = [];
|
|
62
|
+
const normalized = stripLead(text);
|
|
63
|
+
const moreValue = normalized.match(/[你我](?:更)?在意(.+)/u);
|
|
64
|
+
if (moreValue?.[1]) {
|
|
65
|
+
matches.push(`\u66F4\u5728\u610F${normalizeSignalLead(moreValue[1])}`);
|
|
66
|
+
}
|
|
67
|
+
const concern = normalized.match(/[你我](?:更)?关心(.+)/u);
|
|
68
|
+
if (concern?.[1]) {
|
|
69
|
+
matches.push(`\u66F4\u5173\u5FC3${normalizeSignalLead(concern[1])}`);
|
|
70
|
+
}
|
|
71
|
+
const fear = normalized.match(/[你我](?:更)?怕(.+)/u);
|
|
72
|
+
if (fear?.[1]) {
|
|
73
|
+
matches.push(`\u66F4\u6015${normalizeSignalLead(fear[1])}`);
|
|
74
|
+
}
|
|
75
|
+
const dontWant = normalized.match(/[你我]不想(.+)/u);
|
|
76
|
+
if (dontWant?.[1]) {
|
|
77
|
+
matches.push(`\u4E0D\u60F3${normalizeSignalLead(dontWant[1])}`);
|
|
78
|
+
}
|
|
79
|
+
const dontHope = normalized.match(/[你我]不希望(.+)/u);
|
|
80
|
+
if (dontHope?.[1]) {
|
|
81
|
+
matches.push(`\u4E0D\u5E0C\u671B${normalizeSignalLead(dontHope[1])}`);
|
|
82
|
+
}
|
|
83
|
+
return matches;
|
|
84
|
+
};
|
|
85
|
+
var extractStyle = (text) => {
|
|
86
|
+
const matches = [];
|
|
87
|
+
const normalized = stripLead(text);
|
|
88
|
+
const dislike = normalized.match(/[你我]不喜欢(.+)/u);
|
|
89
|
+
if (dislike?.[1]) {
|
|
90
|
+
matches.push(`\u4E0D\u559C\u6B22${normalizeSignalLead(dislike[1])}`);
|
|
91
|
+
}
|
|
92
|
+
const prefer = normalized.match(/[你我](?:更)?喜欢(.+)/u);
|
|
93
|
+
if (prefer?.[1]) {
|
|
94
|
+
matches.push(`\u66F4\u559C\u6B22${normalizeSignalLead(prefer[1])}`);
|
|
95
|
+
}
|
|
96
|
+
return matches;
|
|
97
|
+
};
|
|
98
|
+
var extractGoal = (text) => {
|
|
99
|
+
const matches = [];
|
|
100
|
+
const normalized = stripLead(text);
|
|
101
|
+
if (/[??]/u.test(normalized)) {
|
|
102
|
+
return matches;
|
|
103
|
+
}
|
|
104
|
+
const wantFirst = normalized.match(/[你我](?:这次)?(?:更)?想先(?:把)?(.+)/u);
|
|
105
|
+
if (wantFirst?.[1]) {
|
|
106
|
+
matches.push(`\u60F3\u5148${normalizeSignalLead(wantFirst[1])}`);
|
|
107
|
+
}
|
|
108
|
+
const shouldFirst = normalized.match(/[你我](?:还是)?想要先(?:把)?(.+)/u);
|
|
109
|
+
if (shouldFirst?.[1]) {
|
|
110
|
+
matches.push(`\u60F3\u5148${normalizeSignalLead(shouldFirst[1])}`);
|
|
111
|
+
}
|
|
112
|
+
return matches;
|
|
113
|
+
};
|
|
114
|
+
var normalizeTensionTail = (tail) => normalizeClause(
|
|
115
|
+
tail.replace(/^在/u, "").replace(/^权衡/u, "").replace(/^比较/u, "").split(/[。!?!?;;\n]/u)[0] ?? ""
|
|
116
|
+
);
|
|
117
|
+
var extractTension = (text) => {
|
|
118
|
+
const matches = [];
|
|
119
|
+
const normalized = stripLead(text);
|
|
120
|
+
const weigh = normalized.match(/[你我]在权衡(.+)/u);
|
|
121
|
+
if (weigh?.[1]) {
|
|
122
|
+
matches.push(`\u5728\u6743\u8861${normalizeTensionTail(weigh[1])}`);
|
|
123
|
+
}
|
|
124
|
+
const struggle = normalized.match(/[你我](?:现在)?(?:真正)?纠结(?:的是)?[::,,\s]*(.+)/u);
|
|
125
|
+
if (struggle?.[1] && struggle[1].includes("\u8FD8\u662F")) {
|
|
126
|
+
matches.push(`\u5728\u6743\u8861${normalizeTensionTail(struggle[1])}`);
|
|
127
|
+
}
|
|
128
|
+
const stuck = normalized.match(/[你我]卡的点不是.+?而是(.+)/u);
|
|
129
|
+
if (stuck?.[1]) {
|
|
130
|
+
matches.push(`\u5728\u6743\u8861${normalizeTensionTail(stuck[1])}`);
|
|
131
|
+
}
|
|
132
|
+
return matches;
|
|
133
|
+
};
|
|
134
|
+
var extractUnfinished = (text) => {
|
|
135
|
+
const matches = [];
|
|
136
|
+
const normalized = stripLead(text);
|
|
137
|
+
const direct = normalized.match(/[你我](?:还)?(?:没|尚未)决定(.+)/u);
|
|
138
|
+
if (direct?.[1]) {
|
|
139
|
+
matches.push(`\u8FD8\u6CA1\u51B3\u5B9A${normalizeClause(direct[1])}`);
|
|
140
|
+
}
|
|
141
|
+
const uncertain = normalized.match(/[你我](?:还)?不确定(.+)/u);
|
|
142
|
+
if (uncertain?.[1]) {
|
|
143
|
+
matches.push(`\u8FD8\u4E0D\u786E\u5B9A${normalizeClause(uncertain[1])}`);
|
|
144
|
+
}
|
|
145
|
+
const notReady = normalized.match(/[你我](?:还)?没想好(.+)/u);
|
|
146
|
+
if (notReady?.[1]) {
|
|
147
|
+
matches.push(`\u8FD8\u6CA1\u60F3\u597D${normalizeClause(notReady[1])}`);
|
|
148
|
+
}
|
|
149
|
+
return matches;
|
|
150
|
+
};
|
|
151
|
+
var buildPatternKey = (facet, content) => `understanding:${facet}:${content.toLowerCase()}`;
|
|
152
|
+
var buildCandidate = (facet, content) => {
|
|
153
|
+
const normalized = normalizeClause(content);
|
|
154
|
+
if (!normalized || normalized.length < 6) return null;
|
|
155
|
+
const importance = facet === "unfinished" ? 0.91 : facet === "tension" ? 0.89 : facet === "preference" ? 0.84 : facet === "style" ? 0.8 : 0.82;
|
|
156
|
+
const confidence = facet === "unfinished" || facet === "tension" ? 0.76 : 0.72;
|
|
157
|
+
return {
|
|
158
|
+
facet,
|
|
159
|
+
content: normalized,
|
|
160
|
+
importance,
|
|
161
|
+
confidence,
|
|
162
|
+
patternKey: buildPatternKey(facet, normalized),
|
|
163
|
+
tags: [UNDERSTANDING_TAG, `memory-facet:${facet}`]
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
var extractUnderstandingMemoryCandidates = (input) => {
|
|
167
|
+
const texts = [
|
|
168
|
+
input.userInput,
|
|
169
|
+
...(input.trace ?? []).filter((message) => message.role === "assistant" || message.role === "user").map((message) => contentToText(message.content))
|
|
170
|
+
].map((value) => value.trim()).filter(Boolean);
|
|
171
|
+
const candidates = [];
|
|
172
|
+
for (const text of texts) {
|
|
173
|
+
for (const content of extractPreference(text)) {
|
|
174
|
+
const candidate = buildCandidate("preference", content);
|
|
175
|
+
if (candidate) candidates.push(candidate);
|
|
176
|
+
}
|
|
177
|
+
for (const content of extractStyle(text)) {
|
|
178
|
+
const candidate = buildCandidate("style", content);
|
|
179
|
+
if (candidate) candidates.push(candidate);
|
|
180
|
+
}
|
|
181
|
+
for (const content of extractGoal(text)) {
|
|
182
|
+
const candidate = buildCandidate("goal", content);
|
|
183
|
+
if (candidate) candidates.push(candidate);
|
|
184
|
+
}
|
|
185
|
+
for (const content of extractTension(text)) {
|
|
186
|
+
const candidate = buildCandidate("tension", content);
|
|
187
|
+
if (candidate) candidates.push(candidate);
|
|
188
|
+
}
|
|
189
|
+
for (const content of extractUnfinished(text)) {
|
|
190
|
+
const candidate = buildCandidate("unfinished", content);
|
|
191
|
+
if (candidate) candidates.push(candidate);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
const seen = /* @__PURE__ */ new Set();
|
|
195
|
+
return candidates.filter((candidate) => {
|
|
196
|
+
const key = `${candidate.facet}:${candidate.content.toLowerCase()}`;
|
|
197
|
+
if (seen.has(key)) return false;
|
|
198
|
+
seen.add(key);
|
|
199
|
+
return true;
|
|
200
|
+
});
|
|
201
|
+
};
|
|
202
|
+
var buildUnderstandingTarget = (input) => {
|
|
203
|
+
const target = resolveUserOrSpaceMemoryTarget(input);
|
|
204
|
+
return target ? buildAgentSubjectTarget(target, input.agentKey) : null;
|
|
205
|
+
};
|
|
206
|
+
var sameUnderstanding = (item, candidate, agentKey) => item.subjectType === "agent" && item.subjectId === agentKey && item.patternKey === candidate.patternKey;
|
|
207
|
+
var captureUnderstandingMemoryFromDialog = async (input) => {
|
|
208
|
+
const target = buildUnderstandingTarget(input);
|
|
209
|
+
if (!target) return;
|
|
210
|
+
const candidates = extractUnderstandingMemoryCandidates({
|
|
211
|
+
userInput: input.userInput,
|
|
212
|
+
trace: input.trace
|
|
213
|
+
});
|
|
214
|
+
if (candidates.length === 0) return;
|
|
215
|
+
const existing = await loadMemoryCandidatesFromDb(input.db, {
|
|
216
|
+
owners: [target.owner],
|
|
217
|
+
subjects: [{ subjectType: target.subjectType, subjectId: target.subjectId }],
|
|
218
|
+
kinds: ["episodic", "semantic"],
|
|
219
|
+
ownerLimit: 100
|
|
220
|
+
});
|
|
221
|
+
for (const candidate of candidates) {
|
|
222
|
+
const sameItems = existing.filter((item) => sameUnderstanding(item, candidate, input.agentKey));
|
|
223
|
+
const existingSemantic = sameItems.find((item) => item.kind === "semantic");
|
|
224
|
+
if (existingSemantic) continue;
|
|
225
|
+
const existingEpisode = sameItems.find((item) => item.kind === "episodic");
|
|
226
|
+
if (existingEpisode && existingEpisode.sourceDialogId && existingEpisode.sourceDialogId !== input.dialogId) {
|
|
227
|
+
const semantic = createMemoryItem({
|
|
228
|
+
ownerType: target.owner.ownerType,
|
|
229
|
+
ownerId: target.owner.ownerId,
|
|
230
|
+
visibility: target.visibility,
|
|
231
|
+
subjectType: target.subjectType,
|
|
232
|
+
subjectId: target.subjectId,
|
|
233
|
+
kind: "semantic",
|
|
234
|
+
content: candidate.content,
|
|
235
|
+
facet: candidate.facet,
|
|
236
|
+
importance: Math.min(0.95, candidate.importance + 0.03),
|
|
237
|
+
confidence: Math.min(0.86, candidate.confidence + 0.06),
|
|
238
|
+
tags: [...candidate.tags, "consolidated-understanding"],
|
|
239
|
+
patternKey: candidate.patternKey,
|
|
240
|
+
sourceDialogId: input.dialogId
|
|
241
|
+
});
|
|
242
|
+
await writeMemoryItemWithIndexesToDb(input.db, semantic);
|
|
243
|
+
existing.push(semantic);
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
if (existingEpisode && existingEpisode.sourceDialogId === input.dialogId) {
|
|
247
|
+
continue;
|
|
248
|
+
}
|
|
249
|
+
const episodic = createMemoryItem({
|
|
250
|
+
ownerType: target.owner.ownerType,
|
|
251
|
+
ownerId: target.owner.ownerId,
|
|
252
|
+
visibility: target.visibility,
|
|
253
|
+
subjectType: target.subjectType,
|
|
254
|
+
subjectId: target.subjectId,
|
|
255
|
+
kind: "episodic",
|
|
256
|
+
content: candidate.content,
|
|
257
|
+
facet: candidate.facet,
|
|
258
|
+
importance: candidate.importance,
|
|
259
|
+
confidence: candidate.confidence,
|
|
260
|
+
tags: candidate.tags,
|
|
261
|
+
patternKey: candidate.patternKey,
|
|
262
|
+
sourceDialogId: input.dialogId
|
|
263
|
+
});
|
|
264
|
+
await writeMemoryItemWithIndexesToDb(input.db, episodic);
|
|
265
|
+
existing.push(episodic);
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
export {
|
|
269
|
+
captureUnderstandingMemoryFromDialog,
|
|
270
|
+
extractUnderstandingMemoryCandidates
|
|
271
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import {
|
|
2
|
+
buildCliDoctorText,
|
|
3
|
+
buildCliVersionText,
|
|
4
|
+
buildNpmSelfUpdateCommand,
|
|
5
|
+
buildSelfUpdateCommand,
|
|
6
|
+
getCliInstallChannel,
|
|
7
|
+
readPackageInfo,
|
|
8
|
+
renderProgressBar,
|
|
9
|
+
resolveSelfUpdateServerUrl,
|
|
10
|
+
runSelfUpdate
|
|
11
|
+
} from "./chunk-CKOJQDKR.js";
|
|
12
|
+
import "./chunk-ROWQEJRP.js";
|
|
13
|
+
import "./chunk-IDZTNRP2.js";
|
|
14
|
+
import "./chunk-ISNCLGUZ.js";
|
|
15
|
+
import "./chunk-OLZBQWZU.js";
|
|
16
|
+
import "./chunk-4SN6J65J.js";
|
|
17
|
+
import "./chunk-LCBAMY2M.js";
|
|
18
|
+
import "./chunk-CF7PE763.js";
|
|
19
|
+
import "./chunk-G3SUCT4W.js";
|
|
20
|
+
import "./chunk-4VNS5WPM.js";
|
|
21
|
+
export {
|
|
22
|
+
buildCliDoctorText,
|
|
23
|
+
buildCliVersionText,
|
|
24
|
+
buildNpmSelfUpdateCommand,
|
|
25
|
+
buildSelfUpdateCommand,
|
|
26
|
+
getCliInstallChannel,
|
|
27
|
+
readPackageInfo,
|
|
28
|
+
renderProgressBar,
|
|
29
|
+
resolveSelfUpdateServerUrl,
|
|
30
|
+
runSelfUpdate
|
|
31
|
+
};
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import {
|
|
2
|
+
buildDialogFallbackTitleFromMessages,
|
|
3
|
+
resolveDialogTitle
|
|
4
|
+
} from "./chunk-OWOHNGCN.js";
|
|
5
|
+
import {
|
|
6
|
+
isAssistantToolStub,
|
|
7
|
+
selectAllMsgs,
|
|
8
|
+
serializeMessageContent,
|
|
9
|
+
updateContentTitle
|
|
10
|
+
} from "./chunk-ZIG5LJ7X.js";
|
|
11
|
+
import {
|
|
12
|
+
BUILTIN_TITLE_LLM_CONFIG
|
|
13
|
+
} from "./chunk-4ZDM73SD.js";
|
|
14
|
+
import "./chunk-MRC4Q34M.js";
|
|
15
|
+
import "./chunk-PCWC3JTN.js";
|
|
16
|
+
import "./chunk-CWMSB67P.js";
|
|
17
|
+
import {
|
|
18
|
+
runLlm
|
|
19
|
+
} from "./chunk-4K2KKCSD.js";
|
|
20
|
+
import "./chunk-KTVVPRJS.js";
|
|
21
|
+
import "./chunk-Z4NR32XR.js";
|
|
22
|
+
import {
|
|
23
|
+
require_date_fns
|
|
24
|
+
} from "./chunk-M76ECQRD.js";
|
|
25
|
+
import "./chunk-YYUCRDOK.js";
|
|
26
|
+
import "./chunk-MGOJ5R6J.js";
|
|
27
|
+
import {
|
|
28
|
+
normalizeSpaceId
|
|
29
|
+
} from "./chunk-UAD2WT54.js";
|
|
30
|
+
import "./chunk-DCOA4QSN.js";
|
|
31
|
+
import "./chunk-5MMAK75Q.js";
|
|
32
|
+
import "./chunk-BBYVOSU2.js";
|
|
33
|
+
import "./chunk-5CS33IBL.js";
|
|
34
|
+
import "./chunk-JZPBVBIY.js";
|
|
35
|
+
import "./chunk-IWX4UW2E.js";
|
|
36
|
+
import {
|
|
37
|
+
extractCustomId
|
|
38
|
+
} from "./chunk-DFFIZ25G.js";
|
|
39
|
+
import "./chunk-3ASDTTEI.js";
|
|
40
|
+
import "./chunk-DWLEOOGR.js";
|
|
41
|
+
import "./chunk-HNMXYYJR.js";
|
|
42
|
+
import "./chunk-TSS3XJY4.js";
|
|
43
|
+
import "./chunk-Y5GCAMGP.js";
|
|
44
|
+
import {
|
|
45
|
+
patch,
|
|
46
|
+
selectById
|
|
47
|
+
} from "./chunk-COMXDWNM.js";
|
|
48
|
+
import "./chunk-AZPCASRE.js";
|
|
49
|
+
import "./chunk-2EISRLRC.js";
|
|
50
|
+
import "./chunk-KX6YBIHG.js";
|
|
51
|
+
import "./chunk-SH2CFQOH.js";
|
|
52
|
+
import "./chunk-I42VC5KR.js";
|
|
53
|
+
import "./chunk-WWC7I6TA.js";
|
|
54
|
+
import "./chunk-QSJ3HFEF.js";
|
|
55
|
+
import "./chunk-ELRRLDWI.js";
|
|
56
|
+
import {
|
|
57
|
+
selectIdentityUserId
|
|
58
|
+
} from "./chunk-EYEEHCU4.js";
|
|
59
|
+
import "./chunk-QYXLLLGL.js";
|
|
60
|
+
import "./chunk-GBRG75BQ.js";
|
|
61
|
+
import "./chunk-4SN6J65J.js";
|
|
62
|
+
import "./chunk-LCBAMY2M.js";
|
|
63
|
+
import {
|
|
64
|
+
asTrimmedString
|
|
65
|
+
} from "./chunk-3EUW3WEO.js";
|
|
66
|
+
import "./chunk-U6VC4MU4.js";
|
|
67
|
+
import "./chunk-CF7PE763.js";
|
|
68
|
+
import "./chunk-G3SUCT4W.js";
|
|
69
|
+
import "./chunk-KUG52IAP.js";
|
|
70
|
+
import {
|
|
71
|
+
__toESM
|
|
72
|
+
} from "./chunk-4VNS5WPM.js";
|
|
73
|
+
|
|
74
|
+
// packages/chat/dialog/actions/updateDialogTitleAction.ts
|
|
75
|
+
var import_date_fns2 = __toESM(require_date_fns());
|
|
76
|
+
|
|
77
|
+
// packages/chat/dialog/actions/updateDialogTitlePolicy.ts
|
|
78
|
+
var import_date_fns = __toESM(require_date_fns());
|
|
79
|
+
var TITLE_UPDATE_INTERVAL_MINUTES = 30;
|
|
80
|
+
var FORCE_UPDATE_FOR_TEST = false;
|
|
81
|
+
var shouldUpdateTitle = (createdAt, lastUpdatedAt, now = /* @__PURE__ */ new Date()) => {
|
|
82
|
+
if (FORCE_UPDATE_FOR_TEST) return true;
|
|
83
|
+
const lastUpdate = lastUpdatedAt ? new Date(lastUpdatedAt) : null;
|
|
84
|
+
const creation = createdAt ? new Date(createdAt) : null;
|
|
85
|
+
if (!lastUpdate || !creation || Number.isNaN(lastUpdate.getTime()) || Number.isNaN(creation.getTime())) {
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
return (0, import_date_fns.differenceInMinutes)(now, creation) <= TITLE_UPDATE_INTERVAL_MINUTES || (0, import_date_fns.differenceInMinutes)(now, lastUpdate) >= TITLE_UPDATE_INTERVAL_MINUTES;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
// packages/chat/dialog/actions/updateDialogTitleAction.ts
|
|
92
|
+
var MAX_MESSAGES_FOR_CONTEXT = 20;
|
|
93
|
+
var dedupeById = (messages) => {
|
|
94
|
+
const seen = /* @__PURE__ */ new Set();
|
|
95
|
+
return messages.filter((message) => {
|
|
96
|
+
const id = typeof message.id === "string" ? message.id : "";
|
|
97
|
+
if (!id || seen.has(id)) return false;
|
|
98
|
+
seen.add(id);
|
|
99
|
+
return true;
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
var getMessageContextForTitle = (state, dialogKey, selectAllMessages = selectAllMsgs) => {
|
|
103
|
+
const allMsgs = selectAllMessages(state, extractCustomId(dialogKey));
|
|
104
|
+
const flattened = Array.isArray(allMsgs) ? typeof allMsgs.flat === "function" ? allMsgs.flat() : allMsgs.reduce(
|
|
105
|
+
(acc, cur) => acc.concat(cur),
|
|
106
|
+
[]
|
|
107
|
+
) : [];
|
|
108
|
+
const normalized = flattened.filter((msg) => msg?.role !== "tool" && !isAssistantToolStub(msg)).map((msg) => {
|
|
109
|
+
const textContent = serializeMessageContent(msg?.content, "\u8FD9\u91CC\u662F\u4E00\u4E2A\u56FE\u7247");
|
|
110
|
+
if (!textContent) return null;
|
|
111
|
+
return {
|
|
112
|
+
...msg,
|
|
113
|
+
content: textContent
|
|
114
|
+
// 之后只会用到 role + content
|
|
115
|
+
};
|
|
116
|
+
}).filter(Boolean);
|
|
117
|
+
const earlyUserTurns = normalized.filter((msg) => msg.role === "user").slice(0, 3);
|
|
118
|
+
const recentTurns = normalized.slice(-12);
|
|
119
|
+
return dedupeById([...earlyUserTurns, ...recentTurns]).slice(
|
|
120
|
+
0,
|
|
121
|
+
MAX_MESSAGES_FOR_CONTEXT
|
|
122
|
+
);
|
|
123
|
+
};
|
|
124
|
+
var shouldSkipPlatformTitleLlm = (args) => {
|
|
125
|
+
const current = asTrimmedString(args.currentUserId);
|
|
126
|
+
const loggedOut = !current || current === "local";
|
|
127
|
+
if (!loggedOut) return false;
|
|
128
|
+
const dialogUserId = asTrimmedString(args.dialogConfig?.userId);
|
|
129
|
+
const agentUserId = asTrimmedString(args.agentConfig?.userId);
|
|
130
|
+
const hasLocalCredentialRef = typeof args.agentConfig?.credentialRef === "string" && args.agentConfig.credentialRef.trim().length > 0;
|
|
131
|
+
const dialogKey = typeof args.dialogKey === "string" ? args.dialogKey : "";
|
|
132
|
+
return dialogUserId === "local" || agentUserId === "local" || hasLocalCredentialRef || dialogKey.startsWith("dialog-local-");
|
|
133
|
+
};
|
|
134
|
+
var updateDialogTitleActionWithDeps = async (args, thunkApi, deps = {}) => {
|
|
135
|
+
const {
|
|
136
|
+
runLlmAction = runLlm,
|
|
137
|
+
patchAction = patch,
|
|
138
|
+
selectDialogById = selectById,
|
|
139
|
+
selectAllMessages = selectAllMsgs,
|
|
140
|
+
updateSpaceContentTitle = updateContentTitle,
|
|
141
|
+
selectCurrentUserId = selectIdentityUserId
|
|
142
|
+
} = deps;
|
|
143
|
+
const { dialogKey, agentConfig } = args;
|
|
144
|
+
const { dispatch, getState } = thunkApi;
|
|
145
|
+
const state = getState();
|
|
146
|
+
const dialogConfig = selectDialogById(state, dialogKey);
|
|
147
|
+
if (!dialogConfig || !shouldUpdateTitle(dialogConfig.createdAt, dialogConfig.updatedAt)) {
|
|
148
|
+
return dialogConfig;
|
|
149
|
+
}
|
|
150
|
+
const messageContext = getMessageContextForTitle(state, dialogKey, selectAllMessages);
|
|
151
|
+
if (messageContext.length === 0) {
|
|
152
|
+
return dialogConfig;
|
|
153
|
+
}
|
|
154
|
+
const fallbackTitle = buildDialogFallbackTitleFromMessages(messageContext) || `Conversation on ${(0, import_date_fns2.format)(/* @__PURE__ */ new Date(), "MMM d")}`;
|
|
155
|
+
let generatedTitle = "";
|
|
156
|
+
const currentUserId = selectCurrentUserId(state);
|
|
157
|
+
if (!shouldSkipPlatformTitleLlm({
|
|
158
|
+
currentUserId,
|
|
159
|
+
dialogKey,
|
|
160
|
+
dialogConfig,
|
|
161
|
+
agentConfig
|
|
162
|
+
})) {
|
|
163
|
+
const content = JSON.stringify(
|
|
164
|
+
messageContext.map((msg) => ({ role: msg.role, content: msg.content }))
|
|
165
|
+
);
|
|
166
|
+
generatedTitle = await dispatch(
|
|
167
|
+
runLlmAction({
|
|
168
|
+
llmConfig: BUILTIN_TITLE_LLM_CONFIG,
|
|
169
|
+
content,
|
|
170
|
+
billingDialogKey: dialogKey
|
|
171
|
+
})
|
|
172
|
+
).unwrap();
|
|
173
|
+
}
|
|
174
|
+
const title = resolveDialogTitle(generatedTitle, fallbackTitle);
|
|
175
|
+
const spaceId = dialogConfig?.spaceId && normalizeSpaceId(dialogConfig.spaceId);
|
|
176
|
+
if (spaceId) {
|
|
177
|
+
dispatch(updateSpaceContentTitle({ spaceId, contentKey: dialogKey, title }));
|
|
178
|
+
}
|
|
179
|
+
return await dispatch(
|
|
180
|
+
patchAction({ dbKey: dialogKey, changes: { title } })
|
|
181
|
+
).unwrap();
|
|
182
|
+
};
|
|
183
|
+
var updateDialogTitleAction = async (args, thunkApi) => updateDialogTitleActionWithDeps(args, thunkApi);
|
|
184
|
+
export {
|
|
185
|
+
shouldSkipPlatformTitleLlm,
|
|
186
|
+
updateDialogTitleAction,
|
|
187
|
+
updateDialogTitleActionWithDeps
|
|
188
|
+
};
|