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,188 @@
|
|
|
1
|
+
import {
|
|
2
|
+
API_VERSION
|
|
3
|
+
} from "./chunk-LCBAMY2M.js";
|
|
4
|
+
|
|
5
|
+
// packages/auth/routes.ts
|
|
6
|
+
var authRoutes = {
|
|
7
|
+
login: {
|
|
8
|
+
path: `${API_VERSION}/users/login`,
|
|
9
|
+
method: "POST",
|
|
10
|
+
createPath: () => `${API_VERSION}/users/login`
|
|
11
|
+
},
|
|
12
|
+
signup: {
|
|
13
|
+
path: `${API_VERSION}/users/signup`,
|
|
14
|
+
method: "POST",
|
|
15
|
+
createPath: () => `${API_VERSION}/users/signup`
|
|
16
|
+
},
|
|
17
|
+
users: {
|
|
18
|
+
cliLoginStart: {
|
|
19
|
+
path: `${API_VERSION}/users/cli-login/start`,
|
|
20
|
+
method: "POST",
|
|
21
|
+
createPath: () => `${API_VERSION}/users/cli-login/start`
|
|
22
|
+
},
|
|
23
|
+
cliLoginAuthorize: {
|
|
24
|
+
path: `${API_VERSION}/users/cli-login/authorize`,
|
|
25
|
+
method: "POST",
|
|
26
|
+
createPath: () => `${API_VERSION}/users/cli-login/authorize`
|
|
27
|
+
},
|
|
28
|
+
cliLoginPoll: {
|
|
29
|
+
path: `${API_VERSION}/users/cli-login/poll`,
|
|
30
|
+
method: "POST",
|
|
31
|
+
createPath: () => `${API_VERSION}/users/cli-login/poll`
|
|
32
|
+
},
|
|
33
|
+
list: {
|
|
34
|
+
path: `${API_VERSION}/users`,
|
|
35
|
+
method: "GET",
|
|
36
|
+
createPath: () => `${API_VERSION}/users`
|
|
37
|
+
},
|
|
38
|
+
usageReport: {
|
|
39
|
+
path: `${API_VERSION}/users/usage-report`,
|
|
40
|
+
method: "GET",
|
|
41
|
+
createPath: () => `${API_VERSION}/users/usage-report`
|
|
42
|
+
},
|
|
43
|
+
growthReport: {
|
|
44
|
+
path: `${API_VERSION}/users/growth-report`,
|
|
45
|
+
method: "GET",
|
|
46
|
+
createPath: () => `${API_VERSION}/users/growth-report`
|
|
47
|
+
},
|
|
48
|
+
providerBillingHealth: {
|
|
49
|
+
path: `${API_VERSION}/users/provider-billing-health`,
|
|
50
|
+
method: "GET",
|
|
51
|
+
createPath: () => `${API_VERSION}/users/provider-billing-health`
|
|
52
|
+
},
|
|
53
|
+
providerBillingDrilldown: {
|
|
54
|
+
path: `${API_VERSION}/users/provider-billing-drilldown`,
|
|
55
|
+
method: "GET",
|
|
56
|
+
createPath: () => `${API_VERSION}/users/provider-billing-drilldown`
|
|
57
|
+
},
|
|
58
|
+
providerCredentials: {
|
|
59
|
+
path: `${API_VERSION}/users/provider-credentials`,
|
|
60
|
+
method: "GET",
|
|
61
|
+
createPath: () => `${API_VERSION}/users/provider-credentials`
|
|
62
|
+
},
|
|
63
|
+
providerCredentialLifecycle: {
|
|
64
|
+
path: `${API_VERSION}/users/provider-credentials/lifecycle`,
|
|
65
|
+
method: "POST",
|
|
66
|
+
createPath: () => `${API_VERSION}/users/provider-credentials/lifecycle`
|
|
67
|
+
},
|
|
68
|
+
billingAnomalyLifecycle: {
|
|
69
|
+
path: `${API_VERSION}/users/billing-anomalies/lifecycle`,
|
|
70
|
+
method: "POST",
|
|
71
|
+
createPath: () => `${API_VERSION}/users/billing-anomalies/lifecycle`
|
|
72
|
+
},
|
|
73
|
+
billingAnomalyDrilldown: {
|
|
74
|
+
path: `${API_VERSION}/users/billing-anomalies/drilldown`,
|
|
75
|
+
method: "GET",
|
|
76
|
+
createPath: () => `${API_VERSION}/users/billing-anomalies/drilldown`
|
|
77
|
+
},
|
|
78
|
+
billingAnomalyAudit: {
|
|
79
|
+
path: `${API_VERSION}/users/billing-anomalies/audit`,
|
|
80
|
+
method: "POST",
|
|
81
|
+
createPath: () => `${API_VERSION}/users/billing-anomalies/audit`
|
|
82
|
+
},
|
|
83
|
+
detail: {
|
|
84
|
+
path: `${API_VERSION}/users/:userId`,
|
|
85
|
+
method: "GET",
|
|
86
|
+
createPath: (params) => `${API_VERSION}/users/${params.userId}`
|
|
87
|
+
},
|
|
88
|
+
sessionRevoke: {
|
|
89
|
+
path: `${API_VERSION}/users/session-revoke`,
|
|
90
|
+
method: "POST",
|
|
91
|
+
createPath: () => `${API_VERSION}/users/session-revoke`
|
|
92
|
+
},
|
|
93
|
+
transfer: {
|
|
94
|
+
path: `${API_VERSION}/users/:userId/transfer`,
|
|
95
|
+
method: "POST",
|
|
96
|
+
createPath: (params) => `${API_VERSION}/users/${params.userId}/transfer`
|
|
97
|
+
},
|
|
98
|
+
delete: {
|
|
99
|
+
path: `${API_VERSION}/users/:userId`,
|
|
100
|
+
method: "DELETE",
|
|
101
|
+
createPath: (params) => `${API_VERSION}/users/${params.userId}`
|
|
102
|
+
},
|
|
103
|
+
disable: {
|
|
104
|
+
path: `${API_VERSION}/users/:userId/disable`,
|
|
105
|
+
method: "POST",
|
|
106
|
+
createPath: (params) => `${API_VERSION}/users/${params.userId}/disable`
|
|
107
|
+
},
|
|
108
|
+
enable: {
|
|
109
|
+
path: `${API_VERSION}/users/:userId/enable`,
|
|
110
|
+
method: "POST",
|
|
111
|
+
createPath: (params) => `${API_VERSION}/users/${params.userId}/enable`
|
|
112
|
+
},
|
|
113
|
+
adminPermissions: {
|
|
114
|
+
path: `${API_VERSION}/users/:userId/admin-permissions`,
|
|
115
|
+
method: "POST",
|
|
116
|
+
createPath: (params) => `${API_VERSION}/users/${params.userId}/admin-permissions`
|
|
117
|
+
},
|
|
118
|
+
sendEmail: {
|
|
119
|
+
path: `${API_VERSION}/users/send-email`,
|
|
120
|
+
method: "POST",
|
|
121
|
+
createPath: () => `${API_VERSION}/users/send-email`
|
|
122
|
+
},
|
|
123
|
+
spaceInvite: {
|
|
124
|
+
path: `${API_VERSION}/users/space-invite`,
|
|
125
|
+
method: "POST",
|
|
126
|
+
createPath: () => `${API_VERSION}/users/space-invite`
|
|
127
|
+
},
|
|
128
|
+
spaceInviteStatus: {
|
|
129
|
+
path: `${API_VERSION}/users/space-invite/status`,
|
|
130
|
+
method: "GET",
|
|
131
|
+
createPath: () => `${API_VERSION}/users/space-invite/status`
|
|
132
|
+
},
|
|
133
|
+
spaceInviteAccept: {
|
|
134
|
+
path: `${API_VERSION}/users/space-invite/accept`,
|
|
135
|
+
method: "POST",
|
|
136
|
+
createPath: () => `${API_VERSION}/users/space-invite/accept`
|
|
137
|
+
},
|
|
138
|
+
emailPreferencesGet: {
|
|
139
|
+
path: `${API_VERSION}/users/email-preferences`,
|
|
140
|
+
method: "GET",
|
|
141
|
+
createPath: () => `${API_VERSION}/users/email-preferences`
|
|
142
|
+
},
|
|
143
|
+
emailPreferencesUpdate: {
|
|
144
|
+
path: `${API_VERSION}/users/email-preferences`,
|
|
145
|
+
method: "POST",
|
|
146
|
+
createPath: () => `${API_VERSION}/users/email-preferences`
|
|
147
|
+
},
|
|
148
|
+
emailReport: {
|
|
149
|
+
path: `${API_VERSION}/users/email-report`,
|
|
150
|
+
method: "GET",
|
|
151
|
+
createPath: () => `${API_VERSION}/users/email-report`
|
|
152
|
+
},
|
|
153
|
+
emailRetryRun: {
|
|
154
|
+
path: `${API_VERSION}/users/email-retry/run`,
|
|
155
|
+
method: "POST",
|
|
156
|
+
createPath: () => `${API_VERSION}/users/email-retry/run`
|
|
157
|
+
},
|
|
158
|
+
emailReplayFailures: {
|
|
159
|
+
path: `${API_VERSION}/users/email-replay-failures`,
|
|
160
|
+
method: "POST",
|
|
161
|
+
createPath: () => `${API_VERSION}/users/email-replay-failures`
|
|
162
|
+
},
|
|
163
|
+
emailConfigGet: {
|
|
164
|
+
path: `${API_VERSION}/users/email-config`,
|
|
165
|
+
method: "GET",
|
|
166
|
+
createPath: () => `${API_VERSION}/users/email-config`
|
|
167
|
+
},
|
|
168
|
+
emailConfigUpdate: {
|
|
169
|
+
path: `${API_VERSION}/users/email-config`,
|
|
170
|
+
method: "POST",
|
|
171
|
+
createPath: () => `${API_VERSION}/users/email-config`
|
|
172
|
+
},
|
|
173
|
+
emailUnsubscribe: {
|
|
174
|
+
path: `${API_VERSION}/users/email-unsubscribe`,
|
|
175
|
+
method: "GET",
|
|
176
|
+
createPath: () => `${API_VERSION}/users/email-unsubscribe`
|
|
177
|
+
},
|
|
178
|
+
rechargeHistory: {
|
|
179
|
+
path: `${API_VERSION}/users/:userId/recharge-history`,
|
|
180
|
+
method: "POST",
|
|
181
|
+
createPath: (params) => `${API_VERSION}/users/${params.userId}/recharge-history`
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
export {
|
|
187
|
+
authRoutes
|
|
188
|
+
};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// packages/agent-runtime/thinkTagParser.ts
|
|
2
|
+
var OPEN_TAG = "<think>";
|
|
3
|
+
var CLOSE_TAG = "</think>";
|
|
4
|
+
function longestTagPrefixLength(buffer, tag) {
|
|
5
|
+
const max = Math.min(buffer.length, tag.length - 1);
|
|
6
|
+
for (let len = max; len > 0; len--) {
|
|
7
|
+
if (tag.startsWith(buffer.slice(-len))) {
|
|
8
|
+
return len;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return 0;
|
|
12
|
+
}
|
|
13
|
+
function extractThinkContent(content) {
|
|
14
|
+
const regex = new RegExp(`${OPEN_TAG}([\\s\\S]*?)${CLOSE_TAG}`, "g");
|
|
15
|
+
const matches = [...content.matchAll(regex)];
|
|
16
|
+
if (matches.length === 0) {
|
|
17
|
+
return { content };
|
|
18
|
+
}
|
|
19
|
+
const reasoning = matches.map((m) => m[1]).join("\n");
|
|
20
|
+
const cleaned = content.replace(regex, "");
|
|
21
|
+
return { content: cleaned.replace(/^\n/, ""), reasoning };
|
|
22
|
+
}
|
|
23
|
+
function createThinkParserState() {
|
|
24
|
+
return { mode: "content", buffer: "", trimNextVisible: false };
|
|
25
|
+
}
|
|
26
|
+
function processThinkChunk(chunk, state) {
|
|
27
|
+
let visible = "";
|
|
28
|
+
let reasoning = "";
|
|
29
|
+
let { mode, buffer, trimNextVisible } = state;
|
|
30
|
+
buffer += chunk;
|
|
31
|
+
while (true) {
|
|
32
|
+
if (mode === "content") {
|
|
33
|
+
const idx = buffer.indexOf(OPEN_TAG);
|
|
34
|
+
if (idx === -1) {
|
|
35
|
+
const keep = longestTagPrefixLength(buffer, OPEN_TAG);
|
|
36
|
+
visible += buffer.slice(0, buffer.length - keep);
|
|
37
|
+
buffer = buffer.slice(buffer.length - keep);
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
visible += buffer.slice(0, idx);
|
|
41
|
+
buffer = buffer.slice(idx + OPEN_TAG.length);
|
|
42
|
+
mode = "reasoning";
|
|
43
|
+
} else {
|
|
44
|
+
const idx = buffer.indexOf(CLOSE_TAG);
|
|
45
|
+
if (idx === -1) {
|
|
46
|
+
const keep = longestTagPrefixLength(buffer, CLOSE_TAG);
|
|
47
|
+
reasoning += buffer.slice(0, buffer.length - keep);
|
|
48
|
+
buffer = buffer.slice(buffer.length - keep);
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
reasoning += buffer.slice(0, idx);
|
|
52
|
+
buffer = buffer.slice(idx + CLOSE_TAG.length);
|
|
53
|
+
mode = "content";
|
|
54
|
+
trimNextVisible = true;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (mode === "content" && visible.length > 0 && trimNextVisible) {
|
|
58
|
+
visible = visible.replace(/^\n/, "");
|
|
59
|
+
trimNextVisible = false;
|
|
60
|
+
}
|
|
61
|
+
return { content: visible, reasoning, state: { mode, buffer, trimNextVisible } };
|
|
62
|
+
}
|
|
63
|
+
function flushThinkParser(state) {
|
|
64
|
+
const { mode, buffer, trimNextVisible } = state;
|
|
65
|
+
if (mode === "reasoning") {
|
|
66
|
+
return {
|
|
67
|
+
content: "",
|
|
68
|
+
reasoning: buffer,
|
|
69
|
+
state: { mode: "content", buffer: "", trimNextVisible: false }
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
let visible = buffer;
|
|
73
|
+
const nextTrim = trimNextVisible;
|
|
74
|
+
if (nextTrim) {
|
|
75
|
+
visible = visible.replace(/^\n/, "");
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
content: visible,
|
|
79
|
+
reasoning: "",
|
|
80
|
+
state: { mode: "content", buffer: "", trimNextVisible: false }
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export {
|
|
85
|
+
extractThinkContent,
|
|
86
|
+
createThinkParserState,
|
|
87
|
+
processThinkChunk,
|
|
88
|
+
flushThinkParser
|
|
89
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import {
|
|
2
|
+
compactWhitespace
|
|
3
|
+
} from "./chunk-DWLEOOGR.js";
|
|
4
|
+
|
|
5
|
+
// packages/chat/dialog/dialogTitle.ts
|
|
6
|
+
var GENERATED_DIALOG_TITLE_MAX_CHARS = 36;
|
|
7
|
+
var FALLBACK_DIALOG_TITLE_MAX_CHARS = 24;
|
|
8
|
+
var WRAPPING_QUOTES_RE = /^[`"'“”‘’「」『』《》]+|[`"'“”‘’「」『』《》]+$/gu;
|
|
9
|
+
var TRAILING_TITLE_PUNCTUATION_RE = /[。!?!?;;,,、::]+$/u;
|
|
10
|
+
var clip = (text, maxChars) => text.length <= maxChars ? text : `${text.slice(0, maxChars - 1).trimEnd()}\u2026`;
|
|
11
|
+
var toSingleLine = (value) => value.replace(/\r\n?/g, "\n").split("\n").map((line) => line.trim()).find(Boolean) ?? "";
|
|
12
|
+
var stripTitleFormatting = (value) => value.replace(/^(?:[-*#>]+\s*|\d+\.\s+)/, "").replace(WRAPPING_QUOTES_RE, "").replace(TRAILING_TITLE_PUNCTUATION_RE, "").trim();
|
|
13
|
+
var pickLeadingClause = (value) => {
|
|
14
|
+
const firstLine = toSingleLine(value);
|
|
15
|
+
if (!firstLine) return "";
|
|
16
|
+
const separatorIndexes = [firstLine.indexOf("\uFF1A"), firstLine.indexOf(":")].filter((index) => index > 0).sort((left, right) => left - right);
|
|
17
|
+
for (const index of separatorIndexes) {
|
|
18
|
+
const clause = firstLine.slice(0, index).trim();
|
|
19
|
+
if (clause.length >= 4) return clause;
|
|
20
|
+
}
|
|
21
|
+
return firstLine;
|
|
22
|
+
};
|
|
23
|
+
var normalizeDialogTitle = (rawTitle, maxChars = GENERATED_DIALOG_TITLE_MAX_CHARS) => {
|
|
24
|
+
if (typeof rawTitle !== "string") return "";
|
|
25
|
+
const normalized = stripTitleFormatting(
|
|
26
|
+
compactWhitespace(toSingleLine(rawTitle))
|
|
27
|
+
);
|
|
28
|
+
if (!normalized) return "";
|
|
29
|
+
return clip(normalized, maxChars);
|
|
30
|
+
};
|
|
31
|
+
var buildDialogFallbackTitleFromUserInput = (userInput, maxChars = FALLBACK_DIALOG_TITLE_MAX_CHARS) => {
|
|
32
|
+
if (typeof userInput !== "string") return "";
|
|
33
|
+
const candidate = pickLeadingClause(userInput);
|
|
34
|
+
return normalizeDialogTitle(candidate || userInput, maxChars);
|
|
35
|
+
};
|
|
36
|
+
var buildDialogFallbackTitleFromMessages = (messages) => {
|
|
37
|
+
for (const message of messages) {
|
|
38
|
+
if (message?.role !== "user") continue;
|
|
39
|
+
const title = buildDialogFallbackTitleFromUserInput(message?.content);
|
|
40
|
+
if (title) return title;
|
|
41
|
+
}
|
|
42
|
+
return "";
|
|
43
|
+
};
|
|
44
|
+
var resolveDialogTitle = (generatedTitle, fallbackTitle) => normalizeDialogTitle(generatedTitle) || fallbackTitle.trim();
|
|
45
|
+
|
|
46
|
+
export {
|
|
47
|
+
normalizeDialogTitle,
|
|
48
|
+
buildDialogFallbackTitleFromMessages,
|
|
49
|
+
resolveDialogTitle
|
|
50
|
+
};
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import {
|
|
2
|
+
canonicalizeToolNames
|
|
3
|
+
} from "./chunk-AUQ747NZ.js";
|
|
4
|
+
import {
|
|
5
|
+
asTrimmedString
|
|
6
|
+
} from "./chunk-3EUW3WEO.js";
|
|
7
|
+
|
|
8
|
+
// packages/agent-runtime/identityBlock.ts
|
|
9
|
+
var buildIdentityBlock = (input) => {
|
|
10
|
+
const lines = [
|
|
11
|
+
"--- \u8EAB\u4EFD\u4FE1\u606F ---",
|
|
12
|
+
asTrimmedString(input.agentName) ? `\u540D\u79F0: ${asTrimmedString(input.agentName)}` : "",
|
|
13
|
+
asTrimmedString(input.agentId) ? `ID: ${asTrimmedString(input.agentId)}` : "",
|
|
14
|
+
asTrimmedString(input.model) ? `\u6A21\u578B: ${asTrimmedString(input.model)}` : "",
|
|
15
|
+
`\u56DE\u590D\u8BED\u8A00: ${asTrimmedString(input.responseLanguage) || "\u9ED8\u8BA4\u8DDF\u968F\u7528\u6237\u672C\u8F6E\u8F93\u5165\u8BED\u8A00"}`
|
|
16
|
+
].filter(Boolean);
|
|
17
|
+
return lines.join("\n");
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// packages/agent-runtime/contextLayerContract.ts
|
|
21
|
+
var buildContextLayerContractBlock = (options = {}) => {
|
|
22
|
+
const lines = [
|
|
23
|
+
"--- \u77E5\u8BC6\u5B58\u50A8\u7EA6\u5B9A ---",
|
|
24
|
+
"\u4E0D\u8981\u628A\u6240\u6709\u4FE1\u606F\u90FD\u585E\u8FDB\u540C\u4E00\u5C42\u3002\u4F18\u5148\u5229\u7528\u5DF2\u6709\u7684 memory / knowledge / doc\uFF0C\u800C\u4E0D\u662F\u628A\u5B83\u4EEC\u6DF7\u6210\u4E00\u6BB5\u957F\u5BF9\u8BDD\u3002",
|
|
25
|
+
"",
|
|
26
|
+
"\u5C42\u6B21\u8FB9\u754C\uFF1A",
|
|
27
|
+
"1. memory layer\uFF1A\u653E\u77ED\u5230\u4E2D\u671F\u3001\u53EF\u590D\u7528\u4F46\u4E0D\u5FC5\u6C38\u4E45\u6302\u8F7D\u7684\u504F\u597D\u3001\u8FD1\u671F\u5171\u8BC6\u548C\u538B\u7F29\u540E\u7684\u7ECF\u9A8C\uFF1B\u8981\u77ED\u3001\u53EF\u68C0\u7D22\u3001\u53EF\u66FF\u6362\u3002",
|
|
28
|
+
"2. knowledge layer\uFF1A\u653E\u7A33\u5B9A\u89C4\u5219\u3001\u957F\u671F\u6709\u6548\u4E8B\u5B9E\u548C\u6BCF\u8F6E\u90FD\u4F1A\u53CD\u590D\u4F9D\u8D56\u7684\u8BF4\u660E\uFF1B\u4F18\u5148\u901A\u8FC7 prompt / references \u81EA\u52A8\u52A0\u8F7D\u3002",
|
|
29
|
+
"3. doc layer\uFF1A\u653E\u9700\u8981\u8DE8\u8F6E\u6B21\u6301\u7EED\u7EF4\u62A4\u7684\u5916\u90E8\u5DE5\u4F5C\u53F0\uFF0C\u4F8B\u5982 runbook\u3001mission\u3001incident\u3001checkpoint\u3001idea backlog\u3001experiment log\uFF1B\u9700\u8981\u65F6\u663E\u5F0F\u8BFB\u53D6\u548C\u66F4\u65B0\u3002",
|
|
30
|
+
"",
|
|
31
|
+
"\u5199\u5165\u539F\u5219\uFF1A",
|
|
32
|
+
"- \u4E34\u65F6\u6B65\u9AA4\u3001\u539F\u59CB\u957F\u65E5\u5FD7\u3001\u4E00\u6B21\u6027\u601D\u8DEF\uFF0C\u4E0D\u8981\u76F4\u63A5\u5199\u8FDB memory \u6216 knowledge\u3002",
|
|
33
|
+
"- \u7A33\u5B9A\u884C\u4E3A\u89C4\u5219\u3001\u957F\u671F\u56FA\u5B9A\u7EA6\u675F\uFF0C\u4F18\u5148\u6C89\u6DC0\u5230 knowledge layer\u3002",
|
|
34
|
+
"- \u7528\u6237\u504F\u597D\u3001\u6700\u8FD1\u5F62\u6210\u7684\u534F\u4F5C\u5171\u8BC6\u3001\u8FD1\u671F\u53CD\u590D\u6709\u7528\u7684\u7ECF\u9A8C\uFF0C\u4F18\u5148\u6C89\u6DC0\u5230 memory layer\u3002",
|
|
35
|
+
"- \u9700\u8981\u8DE8\u8F6E\u6B21\u63A5\u529B\u7684\u4EFB\u52A1\u72B6\u6001\u3001\u8FD0\u884C\u624B\u518C\u3001\u4E8B\u6545\u8BB0\u5F55\u3001\u68C0\u67E5\u70B9\uFF0C\u4F18\u5148\u5199\u5165 doc layer\u3002"
|
|
36
|
+
];
|
|
37
|
+
if (options.hasRememberMemoryTool) {
|
|
38
|
+
lines.push(
|
|
39
|
+
"- \u5F53\u67D0\u6761\u504F\u597D\u3001\u8FD1\u671F\u5171\u8BC6\u6216\u590D\u7528\u7ECF\u9A8C\u5BF9\u672A\u6765\u660E\u663E\u6709\u5E2E\u52A9\u65F6\uFF0C\u53EF\u4EE5\u8C03\u7528 rememberMemory\uFF0C\u4F46\u8981\u5199\u6210\u7B80\u6D01\u53EF\u590D\u7528\u7684\u4E00\u53E5\u8BDD\uFF1B\u53EA\u6709\u5F53\u524D dialog \u660E\u786E\u7ED1\u5B9A\u4E86 space\uFF0C\u4E14\u5185\u5BB9\u5C5E\u4E8E\u5171\u4EAB\u534F\u4F5C\u89C4\u5219\u65F6\u624D\u5199 space memory\u3002"
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
if (options.hasDocTools) {
|
|
43
|
+
lines.push(
|
|
44
|
+
"- \u5F53\u4EFB\u52A1\u9700\u8981 24h \u8FDE\u7EED\u8FD0\u884C\u3001\u8DE8 dialog \u63A5\u529B\u6216\u4EBA\u5DE5\u4E0E agent \u5171\u8BFB\u65F6\uFF0C\u4F18\u5148\u628A mission / runbook / incident / checkpoint / idea backlog / experiment log \u5199\u5165 doc layer\u3002"
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
return lines.join("\n");
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
// packages/agent-runtime/startupProtocol.ts
|
|
51
|
+
var buildStartupProtocolBlock = (options = {}) => {
|
|
52
|
+
const lines = [
|
|
53
|
+
"--- \u542F\u52A8\u534F\u8BAE ---",
|
|
54
|
+
"\u542F\u52A8\u987A\u5E8F\uFF1A",
|
|
55
|
+
"1. \u5148\u8BFB\u53D6 policy / knowledge\uFF1A\u4F60\u7684\u6838\u5FC3 prompt\u3001\u81EA\u52A8\u52A0\u8F7D\u7684 references\u3001\u4EE5\u53CA\u7528\u6237\u7B56\u7565\u7EA6\u675F\u3002",
|
|
56
|
+
"2. \u518D\u63D0\u70BC current mission\uFF1A\u4F18\u5148\u4ECE\u5F53\u524D\u7528\u6237\u8F93\u5165\u548C\u5F53\u524D\u8F93\u5165\u4E0A\u4E0B\u6587\u91CC\u786E\u8BA4\u672C\u8F6E\u76EE\u6807\u3001\u4EA4\u4ED8\u7269\u548C\u505C\u6B62\u6761\u4EF6\u3002",
|
|
57
|
+
"3. \u518D\u5438\u6536 recent memory\uFF1A\u7ED3\u5408 Memory Overlay\u3001\u5386\u53F2\u6458\u8981\u3001\u6700\u8FD1\u5DE5\u4F5C\u8BB0\u5FC6\u548C\u5FC5\u8981\u7684\u5386\u53F2\u5F15\u7528\uFF0C\u53EA\u4FDD\u7559\u5BF9\u672C\u8F6E\u771F\u6B63\u6709\u5E2E\u52A9\u7684\u90E8\u5206\u3002",
|
|
58
|
+
"4. \u9700\u8981\u65F6\u518D\u8BFB\u53D6 doc\uFF1A\u5982\u679C\u4EFB\u52A1\u6D89\u53CA\u8DE8\u8F6E\u6B21\u63A5\u529B\u3001\u8FD0\u884C\u624B\u518C\u6216\u5171\u4EAB\u5DE5\u4F5C\u53F0\uFF0C\u8BFB\u53D6\u76F8\u5173 doc \u83B7\u53D6\u6700\u65B0\u72B6\u6001\u3002",
|
|
59
|
+
"",
|
|
60
|
+
"\u5728\u7B2C\u4E00\u6B21\u5DE5\u5177\u8C03\u7528\u524D\uFF0C\u5148\u5F62\u6210\u4E00\u4EFD\u5185\u90E8 working state\uFF0C\u81F3\u5C11\u5305\u542B\uFF1A",
|
|
61
|
+
"- current_goal\uFF1A\u8FD9\u4E00\u8F6E\u771F\u6B63\u8981\u5B8C\u6210\u4EC0\u4E48",
|
|
62
|
+
"- constraints\uFF1A\u5F53\u524D\u7EA6\u675F\u3001\u504F\u597D\u3001\u8FB9\u754C\u6761\u4EF6",
|
|
63
|
+
"- missing_facts\uFF1A\u8FD8\u7F3A\u54EA\u4E9B\u4E8B\u5B9E\u624D\u80FD\u5B89\u5168\u884C\u52A8",
|
|
64
|
+
"- next_action\uFF1A\u4E0B\u4E00\u6B65\u6700\u5C0F\u4E14\u9AD8\u4EF7\u503C\u7684\u52A8\u4F5C",
|
|
65
|
+
"",
|
|
66
|
+
"\u51B3\u7B56\u89C4\u5219\uFF1A",
|
|
67
|
+
"- \u5982\u679C policy / knowledge \u5DF2\u7ECF\u8DB3\u591F\u56DE\u7B54\uFF0C\u5C31\u76F4\u63A5\u56DE\u7B54\uFF0C\u4E0D\u8981\u4E3A\u4E86\u663E\u5F97\u5FD9\u800C\u4E71\u8C03\u7528\u5DE5\u5177\u3002",
|
|
68
|
+
"- \u5982\u679C recent memory \u4E0E\u5F53\u524D\u7528\u6237\u8F93\u5165\u51B2\u7A81\uFF0C\u4EE5\u5F53\u524D\u7528\u6237\u8F93\u5165\u4E3A\u51C6\u3002",
|
|
69
|
+
"- \u5982\u679C\u9700\u8981\u4F9D\u8D56\u73AF\u5883\u3001\u6587\u4EF6\u72B6\u6001\u3001\u8FD0\u884C\u65F6\u4E8B\u5B9E\u6216\u5916\u90E8\u771F\u503C\uFF0C\u5148\u9A8C\u8BC1\uFF0C\u518D\u884C\u52A8\u3002",
|
|
70
|
+
"- \u4F18\u5148\u5C0F\u6B65\u63A8\u8FDB\uFF1B\u6BCF\u4E00\u8F6E\u5148\u505A\u6700\u80FD\u964D\u4F4E\u4E0D\u786E\u5B9A\u6027\u7684\u52A8\u4F5C\u3002"
|
|
71
|
+
];
|
|
72
|
+
if (options.hasCheckEnvTool || options.hasExecShellTool) {
|
|
73
|
+
lines.push(
|
|
74
|
+
"- \u53EA\u8981\u4EFB\u52A1\u6D89\u53CA\u547D\u4EE4\u6267\u884C\u3001shell \u8BED\u6CD5\u3001\u8DEF\u5F84\u7EA6\u5B9A\u3001\u8FD0\u884C\u5E73\u53F0\u6216\u670D\u52A1\u72B6\u6001\uFF0C\u5E76\u4E14\u8FD9\u4E9B\u4E8B\u5B9E\u8FD8\u4E0D\u591F\u660E\u786E\uFF0C\u5C31\u5148\u786E\u8BA4\u73AF\u5883\u3002"
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
if (options.hasCheckEnvTool) {
|
|
78
|
+
lines.push(
|
|
79
|
+
"- \u73AF\u5883\u4E0D\u660E\u786E\u65F6\uFF0C\u4F18\u5148\u8C03\u7528 checkEnv({ check: 'context' })\uFF0C\u518D\u51B3\u5B9A\u540E\u7EED\u547D\u4EE4\u548C\u5DE5\u5177\u8DEF\u5F84\u3002"
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
if (options.hasExecShellTool) {
|
|
83
|
+
lines.push(
|
|
84
|
+
"- \u9700\u8981\u6267\u884C\u547D\u4EE4\u65F6\uFF0C\u5148\u6839\u636E\u5DF2\u786E\u8BA4\u7684\u73AF\u5883\u9009\u62E9 shell\uFF1BWindows \u9ED8\u8BA4 PowerShell\uFF0CLinux/macOS \u9ED8\u8BA4 bash\u3002"
|
|
85
|
+
);
|
|
86
|
+
lines.push(
|
|
87
|
+
"- \u5982\u679C\u53EA\u662F\u6536\u96C6\u591A\u4E2A\u53EA\u8BFB\u73AF\u5883\u4E8B\u5B9E\uFF0C\u4F18\u5148\u5408\u5E76\u6210\u4E00\u6B21 shell \u8C03\u7528\u6216\u4E00\u6761\u7EC4\u5408\u547D\u4EE4\uFF0C\u907F\u514D\u62C6\u6210\u5F88\u591A\u5C0F\u63A2\u9488\u3002"
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
return lines.join("\n");
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
// packages/agent-runtime/runtimeGuidance.ts
|
|
94
|
+
var normalizeToolName = (name) => name.replace(/[-_]/g, "").toLowerCase();
|
|
95
|
+
var hasAnyTool = (normalizedTools, candidates) => candidates.some((candidate) => normalizedTools.has(normalizeToolName(candidate)));
|
|
96
|
+
var hasAllTools = (normalizedTools, candidates) => candidates.every((candidate) => normalizedTools.has(normalizeToolName(candidate)));
|
|
97
|
+
var buildEmailRegistrationWorkflowBlock = (enabled) => {
|
|
98
|
+
if (!enabled) return "";
|
|
99
|
+
return [
|
|
100
|
+
"--- \u90AE\u7BB1\u9A8C\u8BC1\u7801\u6CE8\u518C\u6D41\u7A0B ---",
|
|
101
|
+
"\u5F53\u7528\u6237\u8981\u6C42\u4F60\u6CE8\u518C\u7F51\u7AD9\u8D26\u53F7\u65F6\uFF0C\u53EA\u5141\u8BB8\u5904\u7406\u7528\u6237\u660E\u786E\u6307\u5B9A\u7684\u5F53\u524D\u76EE\u6807\u7F51\u7AD9\uFF0C\u4E0D\u8981\u81EA\u884C\u6269\u5C55\u5230\u5176\u4ED6\u7F51\u7AD9\u3001\u6279\u91CF\u6CE8\u518C\u6216\u89C4\u907F\u5E73\u53F0\u98CE\u63A7\u3002",
|
|
102
|
+
"",
|
|
103
|
+
"\u5206\u9636\u6BB5\u534F\u8BAE\uFF1Adiscover before acting -> assess supportability -> register -> verify -> closeout\u3002",
|
|
104
|
+
"",
|
|
105
|
+
"\u63A8\u8350\u6D41\u7A0B\uFF1A",
|
|
106
|
+
"1. discover before acting\uFF1A\u5148\u7528 browser_openSession / browser_readContent \u9605\u8BFB\u9875\u9762\uFF0C\u786E\u8BA4\u76EE\u6807\u6CE8\u518C\u9875 URL\u3001\u8D26\u53F7\u7528\u9014\u3001\u5FC5\u586B\u9879\u548C\u505C\u6B62\u6761\u4EF6\uFF1B\u4E0D\u8981\u4E00\u6253\u5F00\u9875\u9762\u5C31\u76F2\u70B9\u6309\u94AE\u3002\u5982\u679C\u7F3A\u5C11\u76EE\u6807\u7F51\u7AD9\uFF0C\u5148\u8BE2\u95EE\u7528\u6237\u3002",
|
|
107
|
+
"2. assess supportability\uFF1A\u5148\u5224\u65AD\u8BE5\u6D41\u7A0B\u662F\u5426\u652F\u6301\u5F53\u524D\u53D7\u63A7\u81EA\u52A8\u5316\u3002\u9047\u5230 CAPTCHA\u3001\u624B\u673A\u53F7\u9A8C\u8BC1\u3001\u652F\u4ED8\u3001\u8EAB\u4EFD/KYC\u3001OAuth-only\u3001\u670D\u52A1\u6761\u6B3E\u786E\u8BA4\u3001\u6216\u4EFB\u4F55\u770B\u8D77\u6765\u50CF\u89C4\u907F\u98CE\u63A7\u7684\u6B65\u9AA4\u65F6\uFF0C\u5FC5\u987B\u7ACB\u5373\u505C\u6B62\u5E76\u5411\u7528\u6237\u8BF4\u660E blockingReason\uFF1B\u4E0D\u8981\u786C\u95EF\u3002",
|
|
108
|
+
"3. register\uFF1A\u53EA\u6709\u5728\u786E\u8BA4\u652F\u6301\u540E\uFF0C\u624D\u4F7F\u7528 email_provision_identity \u4E3A\u5F53\u524D agent \u751F\u6210\u53D7\u63A7\u57DF\u540D\u90AE\u7BB1\u8EAB\u4EFD\uFF0C\u518D\u4F7F\u7528 browser_openSession / browser_typeText / browser_click / browser_readContent \u586B\u5199\u5E76\u63D0\u4EA4\u6CE8\u518C\u8868\u5355\u3002",
|
|
109
|
+
"4. verify\uFF1A\u63D0\u4EA4\u540E\u4F7F\u7528 email_wait_for \u7B49\u5F85\u8BE5 agent \u6536\u4EF6\u7BB1\u91CC\u7684\u9A8C\u8BC1\u90AE\u4EF6\uFF0C\u518D\u7528 email_extract_verification \u63D0\u53D6\u9A8C\u8BC1\u7801\u6216\u9A8C\u8BC1\u94FE\u63A5\uFF0C\u56DE\u586B\u9A8C\u8BC1\u7801\u6216\u6253\u5F00\u9A8C\u8BC1\u94FE\u63A5\u5B8C\u6210\u9A8C\u8BC1\u3002",
|
|
110
|
+
"5. closeout\uFF1A\u65E0\u8BBA\u6210\u529F\u8FD8\u662F\u5931\u8D25\u90FD\u8981 always close sessions\uFF0C\u4E3B\u52A8\u6E05\u7406\u6D4F\u89C8\u5668\u4F1A\u8BDD\uFF08\u4F8B\u5982 browser_closeSession\uFF09\u3002\u5982\u679C\u6D41\u7A0B\u5931\u8D25\uFF0C\u5FC5\u987B\u660E\u786E failedStage \u4E0E blockingReason\uFF0C\u5E76\u8BF4\u660E\u53EF\u6062\u590D\u9009\u9879\uFF1B\u4E0D\u8981\u76F2\u76EE\u5C1D\u8BD5\u65E0\u5173\u7F51\u7AD9\u6216\u7ED5\u8FC7\u9A8C\u8BC1\u3002",
|
|
111
|
+
"6. \u6700\u7EC8\u53EA\u5728\u5BF9\u8BDD\u4E2D\u8FD4\u56DE\u8D26\u53F7\u3001\u90AE\u7BB1\u548C\u4E00\u6B21\u6027\u751F\u6210\u7684\u5BC6\u7801\uFF1B\u4E0D\u8981\u6301\u4E45\u5316\u5BC6\u7801\uFF0C\u4E0D\u8981\u5199\u5165 agent metadata\u3001\u6570\u636E\u5E93\u3001\u6587\u6863\u6216\u8BB0\u5FC6\u3002",
|
|
112
|
+
"",
|
|
113
|
+
"\u5FC5\u987B\u6682\u505C\u5E76\u8BE2\u95EE\u7528\u6237\u7684\u60C5\u51B5\uFF1ACAPTCHA\u3001\u624B\u673A\u53F7\u9A8C\u8BC1\u3001\u652F\u4ED8\u3001\u8EAB\u4EFD/KYC\u3001OAuth \u6388\u6743\u3001OAuth-only\u3001\u670D\u52A1\u6761\u6B3E\u786E\u8BA4\u3001\u6216\u4EFB\u4F55\u770B\u8D77\u6765\u50CF\u89C4\u907F\u98CE\u63A7\u7684\u6B65\u9AA4\u3002",
|
|
114
|
+
"\u5982\u679C\u6D41\u7A0B\u5931\u8D25\uFF0C\u8BF4\u660E failedStage\u3001blockingReason \u548C\u53EF\u6062\u590D\u9009\u9879\uFF0C\u4E0D\u8981\u76F2\u76EE\u5C1D\u8BD5\u65E0\u5173\u7F51\u7AD9\u6216\u7ED5\u8FC7\u9A8C\u8BC1\u3002"
|
|
115
|
+
].join("\n");
|
|
116
|
+
};
|
|
117
|
+
var buildWebResearchToolPolicyBlock = (hasExecShellTool, hasFetchWebpageTool) => {
|
|
118
|
+
if (!hasExecShellTool || !hasFetchWebpageTool) return "";
|
|
119
|
+
return [
|
|
120
|
+
"--- \u751F\u4EA7\u73AF\u5883\u7F51\u9875\u7814\u7A76\u5DE5\u5177\u7B56\u7565 ---",
|
|
121
|
+
"\u751F\u4EA7\u73AF\u5883\u7F51\u9875\u7814\u7A76\u4F18\u5148\u4F7F\u7528 fetchWebpage\u3001\u7AD9\u70B9 Markdown / llms.txt\u3001\u6216\u4E13\u7528\u6D4F\u89C8/\u641C\u7D22\u5DE5\u5177\u3002",
|
|
122
|
+
"\u4E0D\u8981\u7528 execShell \u8C03 curl\u3001grep\u3001sed \u7B49\u547D\u4EE4\u6293\u7F51\u9875\u6216\u622A\u53D6\u7F51\u9875\u6BB5\u843D\uFF1B\u751F\u4EA7\u73AF\u5883\u901A\u5E38\u4F1A\u7981\u7528 dev shell\uFF0C\u53CD\u590D\u5C1D\u8BD5\u53EA\u4F1A\u6D6A\u8D39\u56DE\u5408\u3002",
|
|
123
|
+
"\u5982\u679C\u7F51\u9875\u5185\u5BB9\u8FC7\u957F\u6216\u951A\u70B9\u6BB5\u843D\u6CA1\u6709\u88AB\u5355\u72EC\u63D0\u53D6\uFF0C\u5148\u5BFB\u627E\u8BE5\u6587\u6863\u7AD9\u63D0\u4F9B\u7684 Markdown \u7248\u672C\u3001\u72EC\u7ACB\u9875\u9762\u3001llms.txt \u7D22\u5F15\u6216\u66F4\u5177\u4F53 URL\uFF0C\u518D\u7EE7\u7EED\u56DE\u7B54\u3002"
|
|
124
|
+
].join("\n");
|
|
125
|
+
};
|
|
126
|
+
var resolveRuntimeGuidanceToolOptions = (tools = []) => {
|
|
127
|
+
const normalizedTools = canonicalizeToolNames(tools);
|
|
128
|
+
const normalizedToolSet = new Set(normalizedTools.map(normalizeToolName));
|
|
129
|
+
const hasBrowserTools = hasAllTools(normalizedToolSet, [
|
|
130
|
+
"browser_openSession",
|
|
131
|
+
"browser_readContent",
|
|
132
|
+
"browser_typeText",
|
|
133
|
+
"browser_click",
|
|
134
|
+
"browser_closeSession"
|
|
135
|
+
]);
|
|
136
|
+
const hasBrowserProbe = hasAnyTool(normalizedToolSet, ["browser_probePage", "browserProbePage"]);
|
|
137
|
+
const hasEmailRegistrationTools = hasAllTools(normalizedToolSet, [
|
|
138
|
+
"email_provision_identity",
|
|
139
|
+
"email_wait_for",
|
|
140
|
+
"email_extract_verification"
|
|
141
|
+
]);
|
|
142
|
+
return {
|
|
143
|
+
hasCheckEnvTool: normalizedTools.includes("checkEnv"),
|
|
144
|
+
hasExecShellTool: normalizedTools.includes("execShell"),
|
|
145
|
+
hasRememberMemoryTool: normalizedTools.includes("rememberMemory"),
|
|
146
|
+
hasDocTools: normalizedTools.some(
|
|
147
|
+
(tool) => ["read", "readDoc", "readPage", "createDoc", "updateDoc"].includes(tool)
|
|
148
|
+
),
|
|
149
|
+
hasBrowserTools,
|
|
150
|
+
hasEmailRegistrationTools,
|
|
151
|
+
// Require browser_probePage to be present before enabling email registration workflow guidance.
|
|
152
|
+
hasEmailRegistrationWorkflow: hasBrowserTools && hasBrowserProbe && hasEmailRegistrationTools
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
var buildRuntimeGuidanceBlocks = (tools = []) => {
|
|
156
|
+
const options = resolveRuntimeGuidanceToolOptions(tools);
|
|
157
|
+
const normalizedTools = canonicalizeToolNames(tools);
|
|
158
|
+
return {
|
|
159
|
+
startupProtocol: buildStartupProtocolBlock({
|
|
160
|
+
hasCheckEnvTool: options.hasCheckEnvTool,
|
|
161
|
+
hasExecShellTool: options.hasExecShellTool
|
|
162
|
+
}),
|
|
163
|
+
contextLayerContract: buildContextLayerContractBlock({
|
|
164
|
+
hasRememberMemoryTool: options.hasRememberMemoryTool,
|
|
165
|
+
hasDocTools: options.hasDocTools
|
|
166
|
+
}),
|
|
167
|
+
emailRegistrationWorkflow: buildEmailRegistrationWorkflowBlock(
|
|
168
|
+
options.hasEmailRegistrationWorkflow
|
|
169
|
+
),
|
|
170
|
+
webResearchToolPolicy: buildWebResearchToolPolicyBlock(
|
|
171
|
+
options.hasExecShellTool,
|
|
172
|
+
normalizedTools.includes("fetchWebpage")
|
|
173
|
+
)
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
// packages/agent-runtime/currentTimeContext.ts
|
|
178
|
+
var pad2 = (value) => String(value).padStart(2, "0");
|
|
179
|
+
var resolveDefaultTimeZone = () => {
|
|
180
|
+
try {
|
|
181
|
+
return Intl.DateTimeFormat().resolvedOptions().timeZone || "UTC";
|
|
182
|
+
} catch {
|
|
183
|
+
return "UTC";
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
var partsForTimeZone = (date, timeZone) => {
|
|
187
|
+
const parts = new Intl.DateTimeFormat("en-US", {
|
|
188
|
+
timeZone,
|
|
189
|
+
year: "numeric",
|
|
190
|
+
month: "2-digit",
|
|
191
|
+
day: "2-digit",
|
|
192
|
+
hour: "2-digit",
|
|
193
|
+
minute: "2-digit",
|
|
194
|
+
second: "2-digit",
|
|
195
|
+
hour12: false
|
|
196
|
+
}).formatToParts(date);
|
|
197
|
+
return Object.fromEntries(
|
|
198
|
+
parts.filter((part) => part.type !== "literal").map((part) => [part.type, part.value])
|
|
199
|
+
);
|
|
200
|
+
};
|
|
201
|
+
var zonedDateTime = (date, timeZone) => {
|
|
202
|
+
const parts = partsForTimeZone(date, timeZone);
|
|
203
|
+
return [
|
|
204
|
+
`${parts.year}-${parts.month}-${parts.day}`,
|
|
205
|
+
`${parts.hour}:${parts.minute}:${parts.second}`
|
|
206
|
+
].join(" ");
|
|
207
|
+
};
|
|
208
|
+
var timeZoneOffset = (date, timeZone) => {
|
|
209
|
+
const parts = partsForTimeZone(date, timeZone);
|
|
210
|
+
const utcMs = Date.UTC(
|
|
211
|
+
Number(parts.year),
|
|
212
|
+
Number(parts.month) - 1,
|
|
213
|
+
Number(parts.day),
|
|
214
|
+
Number(parts.hour),
|
|
215
|
+
Number(parts.minute),
|
|
216
|
+
Number(parts.second)
|
|
217
|
+
);
|
|
218
|
+
const offsetMinutes = Math.round((utcMs - date.getTime()) / 6e4);
|
|
219
|
+
const sign = offsetMinutes >= 0 ? "+" : "-";
|
|
220
|
+
const absolute = Math.abs(offsetMinutes);
|
|
221
|
+
return `UTC${sign}${pad2(Math.floor(absolute / 60))}:${pad2(absolute % 60)}`;
|
|
222
|
+
};
|
|
223
|
+
var buildCurrentTimeBlock = (now = /* @__PURE__ */ new Date(), timeZone = resolveDefaultTimeZone()) => [
|
|
224
|
+
"--- \u5F53\u524D\u65F6\u95F4 ---",
|
|
225
|
+
`\u5F53\u524D\u65E5\u671F: ${zonedDateTime(now, timeZone).slice(0, 10)}`,
|
|
226
|
+
`\u5F53\u524D\u672C\u5730\u65F6\u95F4: ${zonedDateTime(now, timeZone).slice(0, 16)}`,
|
|
227
|
+
// HH:MM only, no seconds
|
|
228
|
+
`\u672C\u5730\u65F6\u533A: ${timeZone} / ${timeZoneOffset(now, timeZone)}`,
|
|
229
|
+
`UTC \u65F6\u95F4: ${now.toISOString().slice(0, 16)}`,
|
|
230
|
+
// YYYY-MM-DDTHH:MM only
|
|
231
|
+
"\u5F53\u7528\u6237\u95EE\u201C\u73B0\u5728\u201D\u201C\u5F53\u524D\u65F6\u95F4\u201D\u201C\u5317\u4EAC\u65F6\u95F4\u201D\u7B49\u65F6\u95F4\u95EE\u9898\u65F6\uFF0C\u76F4\u63A5\u4F7F\u7528\u8FD9\u91CC\u7684\u5F53\u524D\u65F6\u95F4\uFF1B\u4E0D\u8981\u53EA\u56DE\u7B54\u65E5\u671F\u3002",
|
|
232
|
+
"\u5F53\u7528\u6237\u8BF4\u201C\u4ECA\u5929\u201D\u201C\u4ECA\u65E5\u201D\u6216 today \u65F6\uFF0C\u9ED8\u8BA4\u6307\u5F53\u524D\u672C\u5730\u65E5\u671F\uFF0C\u9664\u975E\u7528\u6237\u660E\u786E\u7ED9\u51FA\u5176\u5B83\u65E5\u671F\u3002"
|
|
233
|
+
].join("\n");
|
|
234
|
+
|
|
235
|
+
export {
|
|
236
|
+
buildIdentityBlock,
|
|
237
|
+
buildRuntimeGuidanceBlocks,
|
|
238
|
+
buildCurrentTimeBlock
|
|
239
|
+
};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import {
|
|
2
|
+
dialogMessageKey
|
|
3
|
+
} from "./chunk-SH2CFQOH.js";
|
|
4
|
+
import {
|
|
5
|
+
asOptionalFiniteNumber
|
|
6
|
+
} from "./chunk-WWC7I6TA.js";
|
|
7
|
+
import {
|
|
8
|
+
asOptionalTrimmedString
|
|
9
|
+
} from "./chunk-G3SUCT4W.js";
|
|
10
|
+
|
|
11
|
+
// packages/core/chat/dialogAttachmentCleanup.ts
|
|
12
|
+
var FILE_CONTENT_RE = /(?:https?:\/\/[^/"'\s]+)?\/api\/v1\/db\/file\/content\/([^?#"'\s)]+)/g;
|
|
13
|
+
function extractFileContentIds(value) {
|
|
14
|
+
const ids = /* @__PURE__ */ new Set();
|
|
15
|
+
const visit = (input) => {
|
|
16
|
+
if (typeof input === "string") {
|
|
17
|
+
for (const match of input.matchAll(FILE_CONTENT_RE)) {
|
|
18
|
+
const fileId = decodeURIComponent(match[1] ?? "").trim();
|
|
19
|
+
if (fileId) ids.add(fileId);
|
|
20
|
+
}
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (Array.isArray(input)) {
|
|
24
|
+
for (const item of input) visit(item);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (input && typeof input === "object") {
|
|
28
|
+
for (const item of Object.values(input)) visit(item);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
visit(value);
|
|
32
|
+
return [...ids];
|
|
33
|
+
}
|
|
34
|
+
function messageDbKey(dialogId, message) {
|
|
35
|
+
const dbKey = asOptionalTrimmedString(message.dbKey);
|
|
36
|
+
if (dbKey) return dbKey;
|
|
37
|
+
const id = asOptionalTrimmedString(message.id);
|
|
38
|
+
if (id) return dialogMessageKey(dialogId, id);
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
function asText(value) {
|
|
42
|
+
return asOptionalTrimmedString(value) ?? null;
|
|
43
|
+
}
|
|
44
|
+
function buildDialogAttachmentPlan(args) {
|
|
45
|
+
const messageKeys = new Set(
|
|
46
|
+
args.messages.map((message) => messageDbKey(args.dialogId, message)).filter((key) => Boolean(key))
|
|
47
|
+
);
|
|
48
|
+
const referencedFileIds = [
|
|
49
|
+
...new Set(args.messages.flatMap((message) => extractFileContentIds(message)))
|
|
50
|
+
];
|
|
51
|
+
const candidates = referencedFileIds.map((fileId) => {
|
|
52
|
+
const metadata = args.metadataByFileId[fileId];
|
|
53
|
+
const ownerType = asText(metadata?.ownerType);
|
|
54
|
+
const ownerId = asText(metadata?.ownerId);
|
|
55
|
+
const ownerDbKey = asText(metadata?.ownerDbKey);
|
|
56
|
+
const fileDbKey = asText(metadata?.dbKey);
|
|
57
|
+
const source = asText(metadata?.source);
|
|
58
|
+
const ownedByDialog = ownerType === "dialog" && ownerId === args.dialogId;
|
|
59
|
+
const ownedByMessage = Boolean(ownerDbKey && messageKeys.has(ownerDbKey));
|
|
60
|
+
const userOwnedReferenced = args.includeUserOwnedReferenced === true && Boolean(args.ownerId) && ownerType === "user" && ownerId === args.ownerId;
|
|
61
|
+
const canDelete = Boolean(fileDbKey && (ownedByDialog || ownedByMessage || userOwnedReferenced));
|
|
62
|
+
return {
|
|
63
|
+
fileId,
|
|
64
|
+
fileDbKey,
|
|
65
|
+
size: asOptionalFiniteNumber(metadata?.size) ?? null,
|
|
66
|
+
ownerType,
|
|
67
|
+
ownerId,
|
|
68
|
+
ownerDbKey,
|
|
69
|
+
source,
|
|
70
|
+
status: canDelete ? "delete" : "retain",
|
|
71
|
+
reason: canDelete ? ownedByMessage ? "ownerDbKey matches a message in this dialog" : userOwnedReferenced ? "user-owned file is referenced by this dialog and explicit referenced-attachment deletion is enabled" : "ownerType/ownerId matches this dialog" : fileDbKey ? "file ownership is not exclusive to this dialog" : "file metadata not found"
|
|
72
|
+
};
|
|
73
|
+
});
|
|
74
|
+
const deleteCandidates = candidates.filter((candidate) => candidate.status === "delete");
|
|
75
|
+
const retainedCandidates = candidates.filter((candidate) => candidate.status === "retain");
|
|
76
|
+
return {
|
|
77
|
+
dialogId: args.dialogId,
|
|
78
|
+
messageCount: args.messages.length,
|
|
79
|
+
referencedFileIds,
|
|
80
|
+
candidates,
|
|
81
|
+
deleteCandidates,
|
|
82
|
+
retainedCandidates,
|
|
83
|
+
bytesToDelete: deleteCandidates.reduce((sum, candidate) => sum + (candidate.size ?? 0), 0),
|
|
84
|
+
metadataReadFailures: args.metadataReadFailures ?? []
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export {
|
|
89
|
+
extractFileContentIds,
|
|
90
|
+
buildDialogAttachmentPlan
|
|
91
|
+
};
|