nolo-cli 0.16.0-alpha.2 → 0.16.0-alpha.21
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-QAUS6B7J.js → _executeModel-GRCQXT5R.js} +51 -45
- package/{action-GUOZYYGN.js → action-LT7BRFLK.js} +10 -9
- package/{addContentAction-QDGHGUBH.js → addContentAction-PL3KKBDH.js} +9 -8
- package/{addDialogAgentAction-Z4YCYZIV.js → addDialogAgentAction-FCMSKYAF.js} +8 -7
- package/{agentDeleteCommand-365DMKHW.js → agentDeleteCommand-WNL3CNQX.js} +32 -29
- package/{agentEmailCommands-TQMXL36I.js → agentEmailCommands-MPEUMRAS.js} +63 -57
- package/{agentListCommands-6B5X4RC6.js → agentListCommands-YO4AOQMS.js} +31 -28
- package/{agentMachineCommands-LOEARB6V.js → agentMachineCommands-WYM6YRYJ.js} +30 -27
- package/{agentPullCommand-6HWUT3SW.js → agentPullCommand-ZZGU5KOY.js} +4 -4
- package/agentRecordCommands-BVWSHMIY.js +105 -0
- package/{agentRunCommand-SGMH67WT.js → agentRunCommand-E3ZI6RSF.js} +64 -55
- package/{agentRunControl-6ADXVYMR.js → agentRunControl-Y5AFH5PQ.js} +24 -1
- package/{agentRuntimeLocal-YSYZ33ER.js → agentRuntimeLocal-P4VGX6H6.js} +26 -25
- package/{agentSlice-IVE735EV.js → agentSlice-D33GU3JL.js} +9 -8
- package/{appDeleteCommands-6QYOO3JB.js → appDeleteCommands-VA4R2SWX.js} +29 -26
- package/{appDeployCommands-WTCT6XO6.js → appDeployCommands-JWMWQNG6.js} +29 -26
- package/{appDeployStatusCommands-CGWGZJKB.js → appDeployStatusCommands-KYXGLZSQ.js} +29 -26
- package/{appGetCommands-O4OCAMRW.js → appGetCommands-ELOO3JG6.js} +29 -26
- package/{appListCommands-UENFP4XY.js → appListCommands-SJUW4RLW.js} +29 -26
- package/{authCommand-YFTR3347.js → authCommand-WJZPOLSS.js} +16 -9
- package/{authCommands-YXGOXNBZ.js → authCommands-XTBV7OFZ.js} +6 -5
- package/{chunk-RKM3K52F.js → chunk-34WPV75U.js} +23 -2
- package/{chunk-VPTJB4HM.js → chunk-3ND52WIL.js} +2 -5
- package/{chunk-SOTZ6RDN.js → chunk-3Q7WHGCB.js} +1 -1
- package/{chunk-KKY4B2Q2.js → chunk-4PWB7JRR.js} +4 -1
- package/{chunk-U7LEGLEB.js → chunk-4T5F7YZQ.js} +1 -1
- package/{chunk-OQMPU2ML.js → chunk-5PGGCJGV.js} +6 -6
- package/chunk-7BUYEZ6U.js +671 -0
- package/{chunk-AS3ZQ3O2.js → chunk-7OBMZCRD.js} +1 -1
- package/{chunk-WA6KZL5V.js → chunk-AAODAAUQ.js} +23 -20
- package/{chunk-GRTFNYLR.js → chunk-AKVLLMOU.js} +3 -3
- package/{chunk-QLUFR47U.js → chunk-AL2V7U3E.js} +1 -1
- package/{chunk-MTU75CZ2.js → chunk-B5TOXZAK.js} +1 -1
- package/{chunk-QZVGMD5F.js → chunk-BE2GNT5E.js} +2 -8
- package/{chunk-JKWWVF2I.js → chunk-D3HVJJIA.js} +1 -1
- package/{chunk-B4KT7RN2.js → chunk-DKZFOK24.js} +18 -89
- package/chunk-DL6EPNIK.js +50 -0
- package/{chunk-YYIRR6QC.js → chunk-E5KQTMMJ.js} +212 -250
- package/{chunk-4QQFLN5C.js → chunk-EGPCU42M.js} +58 -8
- package/{chunk-XVP3C2KY.js → chunk-ELT65PZW.js} +2 -2
- package/{chunk-EMXI3N3Z.js → chunk-ENP2ELIL.js} +5 -5
- package/{chunk-6565R2TI.js → chunk-EXAEHRLI.js} +112 -191
- package/chunk-FQZZLA3C.js +223 -0
- package/{chunk-WPN6RMDF.js → chunk-GMZZ5EKJ.js} +3 -3
- package/{chunk-RSYUDGGZ.js → chunk-HQNPCMWL.js} +3 -3
- package/{chunk-OGGHETUE.js → chunk-HQPG2PIV.js} +62 -19
- package/{chunk-4NLUNENX.js → chunk-IQZ6TGVW.js} +10 -3
- package/{chunk-VE6XMVKG.js → chunk-J67FKTTY.js} +330 -213
- package/{chunk-G2MKOQCB.js → chunk-JFE7XW4D.js} +1 -1
- package/{setDialogExtraReferencesAction-2VLGWQKG.js → chunk-JLA4FXYC.js} +2 -17
- package/{chunk-OOIN7HSO.js → chunk-JP7REMYP.js} +19 -1
- package/chunk-KFEVY3ST.js +255 -0
- package/{chunk-I66RU7P7.js → chunk-KKWJ5VPZ.js} +1 -1
- package/{chunk-WRN5EQT7.js → chunk-L2RRMXNJ.js} +13 -4
- package/{chunk-ISYE6GZB.js → chunk-L6NVTGI7.js} +1 -1
- package/{chunk-HRQCKQA5.js → chunk-MUCU6ATG.js} +8 -257
- package/{chunk-BFRVXJJJ.js → chunk-MUIT5AAM.js} +112 -27
- package/{chunk-WNLPAOIT.js → chunk-MVQ4TBSD.js} +1 -1
- package/{chunk-O53CP2QR.js → chunk-N2HYIBLH.js} +6 -6
- package/{chunk-524BDL33.js → chunk-O6W2O2DA.js} +1 -15
- package/{chunk-YC3DJILJ.js → chunk-PUSK7HXJ.js} +64 -22
- package/{chunk-OOSFSFMA.js → chunk-R5V5G73M.js} +2 -0
- package/{chunk-4IJYA27C.js → chunk-RG2U2MTJ.js} +1 -1
- package/{chunk-Z24FGIU2.js → chunk-RIDWN7AP.js} +34 -15
- package/{chunk-IKXL2HZ3.js → chunk-RK5NYQEL.js} +1 -1
- package/{chunk-QLFCNUVQ.js → chunk-RUTSBLDM.js} +1629 -261
- package/{chunk-TTGAVETO.js → chunk-RVOUXDFU.js} +5 -5
- package/{chunk-JTINRTBT.js → chunk-SKDNBYZK.js} +2 -2
- package/{chunk-KMQPSTMJ.js → chunk-TRT4I4UD.js} +2 -2
- package/{chunk-EHLHSX7R.js → chunk-UB4RYYNQ.js} +9 -2
- package/{chunk-N5424GSW.js → chunk-UGUW3FHG.js} +4 -4
- package/{chunk-YNHQIXX5.js → chunk-UIOYWBU7.js} +395 -326
- package/chunk-V5R4NZP2.js +78 -0
- package/{chunk-MYMMNKYL.js → chunk-VNAEBGDK.js} +156 -6
- package/{chunk-J55UHASN.js → chunk-VST53WEL.js} +1 -1
- package/{chunk-6MHDWKOT.js → chunk-VVKQFITN.js} +25 -12
- package/{chunk-W4NVOSFF.js → chunk-WFHXMLHZ.js} +1 -1
- package/{chunk-H33743XH.js → chunk-WJRJDX2W.js} +1 -1
- package/chunk-X4Q4UZEY.js +26 -0
- package/{chunk-E237VE6U.js → chunk-XFYDGBXL.js} +4 -4
- package/{chunk-JS33TCQ3.js → chunk-XHG22OEX.js} +4 -4
- package/{chunk-DVRHHFEA.js → chunk-XMLRJUU5.js} +1 -1
- package/{chunk-V2J635L5.js → chunk-XOIF2TNF.js} +2 -2
- package/{chunk-SFXYKGK2.js → chunk-XRZJGPFI.js} +7 -7
- package/chunk-ZHXJ6M7T.js +27 -0
- package/chunk-ZZ2MH7LE.js +84 -0
- package/{cliExecutor-K3F7DMRO.js → cliExecutor-DNE7TCC4.js} +2 -2
- package/codingSkills-36KN5NQT.js +48 -0
- package/{createAgentAutomationAction-TS6NNZ4X.js → createAgentAutomationAction-ONKZ46XE.js} +22 -21
- package/{createDialogAction-5HVQ33EX.js → createDialogAction-7QWJEBKU.js} +24 -23
- package/{createPageAction-4F3ZGQJD.js → createPageAction-PB3KXZIA.js} +28 -27
- package/{dbSlice-OP6UPXKA.js → dbSlice-CGSRFJN3.js} +8 -7
- package/{deleteFile-WPWVZE4B.js → deleteFile-WDZ3VM7B.js} +3 -3
- package/{dialogCommands-ZL6L24BS.js → dialogCommands-YZFU4Q26.js} +30 -27
- package/{dialogSlice-FAWUQDJW.js → dialogSlice-53B5ISGQ.js} +22 -21
- package/{docCreateCommands-LYROQTFH.js → docCreateCommands-LOUC5PFB.js} +28 -25
- package/{docDeleteCommands-6TWGTZNR.js → docDeleteCommands-HHPGT4BR.js} +29 -26
- package/{docReadCommands-PRULNF26.js → docReadCommands-YPSN4HEF.js} +28 -25
- package/{docStore-2UHVWLTV.js → docStore-LJXXRB5W.js} +23 -22
- package/{docUpdateCommands-NNYYWJBI.js → docUpdateCommands-CJCZO54M.js} +28 -25
- package/{fetchMessages-KTNM7QAR.js → fetchMessages-BMGVZVSE.js} +4 -3
- package/{getPricing-UGDJHI7M.js → getPricing-RYY6OBA4.js} +4 -4
- package/handleSendMessageAction-ICGX4QCM.js +402 -0
- package/index.js +68 -68
- package/{localDialogRead-2VRI24F4.js → localDialogRead-HQZPVIE3.js} +1 -1
- package/{localRuntimeDb-LGDF6FQP.js → localRuntimeDb-THJZGAOJ.js} +1 -1
- package/{machineCommands-JQPEQFSE.js → machineCommands-YLDZXK4D.js} +64 -58
- package/{machineWsRunDispatch-FFFNWVEW.js → machineWsRunDispatch-LTQL3DRE.js} +56 -50
- package/{models-LSCRJJ6P.js → models-5K5G2CZI.js} +2 -2
- package/package.json +1 -1
- package/queryRunOverlay-O4LOMMPO.js +161 -0
- package/{read-HXHAZBKH.js → read-3FMPZPER.js} +3 -3
- package/{readDocTool-VPBDTO4G.js → readDocTool-VSYHKK3V.js} +1 -1
- package/{readlineWorkspace-QSXHSBHA.js → readlineWorkspace-OSPVWNAT.js} +699 -168
- package/{removeDialogAgentAction-HUFVN35S.js → removeDialogAgentAction-OAGA2G3U.js} +11 -10
- package/{runAgentClientLoop-A75BUU6D.js → runAgentClientLoop-76SUKKPX.js} +46 -40
- package/runOverlayPresentation-ZO4VCWEU.js +11 -0
- package/{runtimeDoctorCommands-THIHX2SY.js → runtimeDoctorCommands-E2OUORHK.js} +6 -6
- package/setDialogExtraReferencesAction-JZEXA5SL.js +27 -0
- package/{setPrimaryDialogAgentAction-VB4UV2CC.js → setPrimaryDialogAgentAction-4ZUQQKDG.js} +27 -18
- package/{settingSlice-7JYPQNAC.js → settingSlice-7MNKHZ6R.js} +9 -8
- package/{skillDiscovery-6M2BZUFN.js → skillDiscovery-KJWT7JBU.js} +3 -3
- package/{spaceCommands-4LE45GB7.js → spaceCommands-GIF7MKVD.js} +31 -28
- package/{spaceSlice-444MFUP6.js → spaceSlice-M4PVN5PO.js} +22 -21
- package/{streamAgentChatTurn-DJAE7USZ.js → streamAgentChatTurn-GCKTFSHQ.js} +96 -55
- package/{tableCommands-3P7MJ3PF.js → tableCommands-BEQAGE4I.js} +1 -1
- package/{tools-YB6LXSVN.js → tools-RJVFXOLR.js} +35 -30
- package/{tuiSummaryLlmCaller-QQL3JA5I.js → tuiSummaryLlmCaller-VUNVBRX3.js} +7 -6
- package/types-ZSTJ7MPR.js +7 -0
- package/{updateDialogTitleAction-6HGFBM64.js → updateDialogTitleAction-PSR67DLV.js} +25 -24
- package/agentRecordCommands-DCH2WBL2.js +0 -99
- package/chunk-BYXBJQAS.js +0 -0
- package/handleSendMessageAction-LJPUYNOH.js +0 -215
- package/{chunk-O4BU24WZ.js → chunk-6Y7A3OQQ.js} +3 -3
- package/{chunk-CMKUBIGW.js → chunk-X7W4TNB4.js} +3 -3
- package/{localRuntimeAuthority-TEGCOWX4.js → localRuntimeAuthority-4IXJCHZ7.js} +3 -3
|
@@ -8,45 +8,39 @@ import {
|
|
|
8
8
|
import {
|
|
9
9
|
sortSafeAgentSummaries,
|
|
10
10
|
toSafeAgentSummary
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-JP7REMYP.js";
|
|
12
12
|
import {
|
|
13
13
|
getUserDataItemTimestamp,
|
|
14
14
|
mergeAndDedupUserData
|
|
15
15
|
} from "./chunk-KQHGZWSV.js";
|
|
16
|
-
import {
|
|
17
|
-
createDocState
|
|
18
|
-
} from "./chunk-O53CP2QR.js";
|
|
19
16
|
import {
|
|
20
17
|
readDocFunc,
|
|
21
18
|
readDocFunctionSchema,
|
|
22
19
|
readPageFunc,
|
|
23
20
|
readPageFunctionSchema,
|
|
24
21
|
slateToSimplifiedMarkdown
|
|
25
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-4T5F7YZQ.js";
|
|
26
23
|
import {
|
|
27
24
|
markdownToSlate
|
|
28
25
|
} from "./chunk-3LY4F7SV.js";
|
|
26
|
+
import {
|
|
27
|
+
isSkillSummaryMarker
|
|
28
|
+
} from "./chunk-VF4K2QE6.js";
|
|
29
|
+
import {
|
|
30
|
+
createDocState
|
|
31
|
+
} from "./chunk-N2HYIBLH.js";
|
|
32
|
+
import {
|
|
33
|
+
setDialogExtraReferencesAction
|
|
34
|
+
} from "./chunk-JLA4FXYC.js";
|
|
29
35
|
import {
|
|
30
36
|
extractMentionsFromSlate
|
|
31
37
|
} from "./chunk-VP4WJWKW.js";
|
|
32
38
|
import {
|
|
33
39
|
slateToRenderMarkdown
|
|
34
40
|
} from "./chunk-63W5N6P3.js";
|
|
35
|
-
import {
|
|
36
|
-
isSkillSummaryMarker
|
|
37
|
-
} from "./chunk-VF4K2QE6.js";
|
|
38
41
|
import {
|
|
39
42
|
createDialogAction
|
|
40
|
-
} from "./chunk-
|
|
41
|
-
import {
|
|
42
|
-
buildSkillDocMarkdown,
|
|
43
|
-
normalizeSkillBudgetTier,
|
|
44
|
-
normalizeSkillModalities,
|
|
45
|
-
normalizeStringArray,
|
|
46
|
-
parseExternalSkillMarkdown,
|
|
47
|
-
parseSkillDocProtocol,
|
|
48
|
-
resolvePageSkillMetadata
|
|
49
|
-
} from "./chunk-VC6OZXO5.js";
|
|
43
|
+
} from "./chunk-RIDWN7AP.js";
|
|
50
44
|
import {
|
|
51
45
|
addCategory,
|
|
52
46
|
addContentToSpace,
|
|
@@ -63,6 +57,7 @@ import {
|
|
|
63
57
|
instance,
|
|
64
58
|
loadTableRows,
|
|
65
59
|
normalizeAppRouteId,
|
|
60
|
+
resolveDialogRuntimeAgentKey,
|
|
66
61
|
selectAllMemberSpaces,
|
|
67
62
|
selectAllMsgs,
|
|
68
63
|
selectCurrentDialogConfig,
|
|
@@ -76,19 +71,31 @@ import {
|
|
|
76
71
|
updateContentCategory,
|
|
77
72
|
updateContentTitle,
|
|
78
73
|
updateStep
|
|
79
|
-
} from "./chunk-
|
|
74
|
+
} from "./chunk-UIOYWBU7.js";
|
|
80
75
|
import {
|
|
81
76
|
createAgent,
|
|
82
77
|
runLlm,
|
|
83
78
|
streamAgentChatTurn,
|
|
84
79
|
updateAgent
|
|
85
|
-
} from "./chunk-
|
|
80
|
+
} from "./chunk-5PGGCJGV.js";
|
|
81
|
+
import {
|
|
82
|
+
buildCodingSkillContentBySlug,
|
|
83
|
+
buildCodingSkillPageKey,
|
|
84
|
+
resolveCodingBuiltinSlug
|
|
85
|
+
} from "./chunk-7BUYEZ6U.js";
|
|
86
|
+
import {
|
|
87
|
+
buildSkillDocMarkdown,
|
|
88
|
+
normalizeSkillBudgetTier,
|
|
89
|
+
normalizeSkillModalities,
|
|
90
|
+
normalizeStringArray,
|
|
91
|
+
parseExternalSkillMarkdown,
|
|
92
|
+
parseSkillDocProtocol,
|
|
93
|
+
resolvePageSkillMetadata
|
|
94
|
+
} from "./chunk-VC6OZXO5.js";
|
|
86
95
|
import {
|
|
87
96
|
NOLO_WORKSPACE_TOOL_NAMES,
|
|
88
97
|
buildNoloSubjectRefQueryTarget,
|
|
89
98
|
buildNoloTableQueryRequest,
|
|
90
|
-
canonicalizeToolName,
|
|
91
|
-
canonicalizeToolNames,
|
|
92
99
|
clampNoloPositiveInteger,
|
|
93
100
|
filterNoloDialogSubjectRefEvidence,
|
|
94
101
|
getNoloComparableUpdatedAt,
|
|
@@ -98,13 +105,25 @@ import {
|
|
|
98
105
|
redactAgentRecordForWorkspaceTool,
|
|
99
106
|
resolveNoloDialogInput,
|
|
100
107
|
verifyNoloDialogSubjectRefQuery
|
|
101
|
-
} from "./chunk-
|
|
108
|
+
} from "./chunk-DKZFOK24.js";
|
|
102
109
|
import {
|
|
103
110
|
buildDatabaseFileContentUrl
|
|
104
|
-
} from "./chunk-
|
|
111
|
+
} from "./chunk-EGPCU42M.js";
|
|
105
112
|
import {
|
|
106
113
|
DEFAULT_MODEL
|
|
107
|
-
} from "./chunk-
|
|
114
|
+
} from "./chunk-HQPG2PIV.js";
|
|
115
|
+
import {
|
|
116
|
+
toErrorMessage
|
|
117
|
+
} from "./chunk-HNMXYYJR.js";
|
|
118
|
+
import {
|
|
119
|
+
addContentAction,
|
|
120
|
+
createSpaceKey,
|
|
121
|
+
normalizeSpaceId
|
|
122
|
+
} from "./chunk-ELT65PZW.js";
|
|
123
|
+
import {
|
|
124
|
+
canonicalizeToolName,
|
|
125
|
+
canonicalizeToolNames
|
|
126
|
+
} from "./chunk-ZZ2MH7LE.js";
|
|
108
127
|
import {
|
|
109
128
|
ToolApiError,
|
|
110
129
|
buildToolRequestHeaders,
|
|
@@ -126,11 +145,16 @@ import {
|
|
|
126
145
|
compactWhitespace
|
|
127
146
|
} from "./chunk-DWLEOOGR.js";
|
|
128
147
|
import {
|
|
129
|
-
|
|
130
|
-
|
|
148
|
+
TASK_PREVIEW_MAX,
|
|
149
|
+
formatListRunsCard,
|
|
150
|
+
formatStartRunCard,
|
|
151
|
+
formatStatusRunCard,
|
|
152
|
+
formatStopRunCard,
|
|
153
|
+
resolveRunLabel
|
|
154
|
+
} from "./chunk-FQZZLA3C.js";
|
|
131
155
|
import {
|
|
132
156
|
shareResourceAction
|
|
133
|
-
} from "./chunk-
|
|
157
|
+
} from "./chunk-UGUW3FHG.js";
|
|
134
158
|
import {
|
|
135
159
|
AGENT_UPDATE_FIELD_NAMES,
|
|
136
160
|
SYSTEM_AGENT_CAPABILITIES,
|
|
@@ -139,23 +163,19 @@ import {
|
|
|
139
163
|
selectAutoApproveSelfUpdateFields,
|
|
140
164
|
selectCurrentServer,
|
|
141
165
|
selectSyncServers
|
|
142
|
-
} from "./chunk-
|
|
166
|
+
} from "./chunk-RVOUXDFU.js";
|
|
143
167
|
import {
|
|
144
168
|
asRecordOrEmpty
|
|
145
169
|
} from "./chunk-KX6YBIHG.js";
|
|
146
|
-
import {
|
|
147
|
-
addContentAction,
|
|
148
|
-
createSpaceKey,
|
|
149
|
-
normalizeSpaceId
|
|
150
|
-
} from "./chunk-XVP3C2KY.js";
|
|
151
170
|
import {
|
|
152
171
|
patch,
|
|
153
172
|
read,
|
|
154
173
|
readAndWait,
|
|
155
174
|
readAndWaitAction,
|
|
175
|
+
selectById,
|
|
156
176
|
toTimestampMs,
|
|
157
177
|
write
|
|
158
|
-
} from "./chunk-
|
|
178
|
+
} from "./chunk-XRZJGPFI.js";
|
|
159
179
|
import {
|
|
160
180
|
SEPARATOR,
|
|
161
181
|
createAgentKey,
|
|
@@ -167,20 +187,20 @@ import {
|
|
|
167
187
|
rowKey,
|
|
168
188
|
toTrimmedString,
|
|
169
189
|
ulid
|
|
170
|
-
} from "./chunk-
|
|
190
|
+
} from "./chunk-6Y7A3OQQ.js";
|
|
191
|
+
import {
|
|
192
|
+
asOptionalFiniteNumber
|
|
193
|
+
} from "./chunk-WWC7I6TA.js";
|
|
171
194
|
import {
|
|
172
195
|
asNonEmptyStringArray,
|
|
173
196
|
asTrimmedNonEmptyStringArray
|
|
174
197
|
} from "./chunk-I42VC5KR.js";
|
|
175
|
-
import {
|
|
176
|
-
asOptionalFiniteNumber
|
|
177
|
-
} from "./chunk-WWC7I6TA.js";
|
|
178
198
|
import {
|
|
179
199
|
asTrimmedLowercaseString
|
|
180
200
|
} from "./chunk-QSJ3HFEF.js";
|
|
181
201
|
import {
|
|
182
202
|
readAction
|
|
183
|
-
} from "./chunk-
|
|
203
|
+
} from "./chunk-3ND52WIL.js";
|
|
184
204
|
import {
|
|
185
205
|
createAsyncThunk,
|
|
186
206
|
getRuntimeServerContext,
|
|
@@ -188,10 +208,10 @@ import {
|
|
|
188
208
|
selectIdentityToken,
|
|
189
209
|
selectIdentityUserId,
|
|
190
210
|
selectRuntimeSnapshot
|
|
191
|
-
} from "./chunk-
|
|
211
|
+
} from "./chunk-XMLRJUU5.js";
|
|
192
212
|
import {
|
|
193
213
|
isAbortError
|
|
194
|
-
} from "./chunk-
|
|
214
|
+
} from "./chunk-R5V5G73M.js";
|
|
195
215
|
import {
|
|
196
216
|
asTrimmedString
|
|
197
217
|
} from "./chunk-3EUW3WEO.js";
|
|
@@ -992,7 +1012,7 @@ var ai_locale_default = {
|
|
|
992
1012
|
params: {
|
|
993
1013
|
name: "The name of the Agent, e.g., 'Meeting Minutes Assistant'.",
|
|
994
1014
|
model: "The model name to use. Logic: Default 'nolo/glm-5.2'. Complex tasks: 'openai/gpt-5.2'. Cost-saving: 'openai/gpt-5.1'. Aesthetic/Creative: 'gemini-3.6-flash'. Reliable low-cost summary/reasoning: 'deepseek-v4-pro'. Image Generation: 'gemini-3-pro-image-preview' (Best/Expensive), 'gemini-3.1-flash-image-preview' (Ordinary), or 'gemini-3.1-flash-lite-image' (Fastest/Cheapest).",
|
|
995
|
-
provider: "The model provider identifier, must match the selected model, e.g., 'openrouter', '
|
|
1015
|
+
provider: "The model provider identifier, must match the selected model, e.g., 'openrouter', 'nolo', 'fireworks', 'mistral', etc.",
|
|
996
1016
|
prompt: "System prompt/instruction describing the Agent's role, tone, and usage.",
|
|
997
1017
|
introduction: "Introduction displayed in the app market or list, explanatory text for end users.",
|
|
998
1018
|
greeting: {
|
|
@@ -1381,7 +1401,7 @@ var ai_locale_default = {
|
|
|
1381
1401
|
params: {
|
|
1382
1402
|
name: "Agent \u7684\u540D\u79F0\uFF0C\u4F8B\u5982\uFF1A'\u4F1A\u8BAE\u7EAA\u8981\u52A9\u624B'\u3002",
|
|
1383
1403
|
model: "\u9ED8\u8BA4\u4F7F\u7528 'nolo/glm-5.2'\u3002\u590D\u6742\u4EFB\u52A1: 'openai/gpt-5.2'\u3002\u7701\u6210\u672C\u4F46\u590D\u6742: 'openai/gpt-5.1'\u3002\u8FFD\u6C42\u7F8E\u89C2/\u521B\u610F: 'gemini-3.6-flash'\u3002\u4F4E\u6210\u672C\u6458\u8981/\u63A8\u7406: 'deepseek-v4-pro'\u3002\u751F\u6210\u56FE\u7247: \u8D35/\u9AD8\u8D28\u91CF\u9009 'gemini-3-pro-image-preview'\uFF0C\u666E\u901A\u9009 'gemini-3.1-flash-image-preview'\uFF0C\u6700\u5FEB\u6700\u4FBF\u5B9C\u9009 'gemini-3.1-flash-lite-image'\u3002",
|
|
1384
|
-
provider: "\u6A21\u578B\u63D0\u4F9B\u65B9\u6807\u8BC6\uFF0C\u5FC5\u987B\u4E0E\u6240\u9009\u6A21\u578B\u76F8\u5339\u914D\uFF0C\u4F8B\u5982 'openrouter'\u3001'
|
|
1404
|
+
provider: "\u6A21\u578B\u63D0\u4F9B\u65B9\u6807\u8BC6\uFF0C\u5FC5\u987B\u4E0E\u6240\u9009\u6A21\u578B\u76F8\u5339\u914D\uFF0C\u4F8B\u5982 'openrouter'\u3001'nolo'\u3001'fireworks'\u3001'mistral' \u7B49\u3002",
|
|
1385
1405
|
prompt: "\u7CFB\u7EDF\u63D0\u793A\u8BCD / \u6307\u4EE4\uFF0C\u63CF\u8FF0\u8FD9\u4E2A Agent \u7684\u89D2\u8272\u3001\u8BED\u6C14\u548C\u4F7F\u7528\u65B9\u5F0F\u3002",
|
|
1386
1406
|
introduction: "\u5728\u5E94\u7528\u5E02\u573A\u6216\u5217\u8868\u4E2D\u5C55\u793A\u7684\u7B80\u4ECB\uFF0C\u9762\u5411\u7EC8\u7AEF\u7528\u6237\u7684\u8BF4\u660E\u6587\u6848\u3002",
|
|
1387
1407
|
greeting: {
|
|
@@ -2101,6 +2121,7 @@ var chat_locale_default = {
|
|
|
2101
2121
|
copyContent: "Copy Content",
|
|
2102
2122
|
copyDiagnostics: "Copy diagnostics",
|
|
2103
2123
|
finishReasonLengthNotice: "Response was cut off at the model's output limit",
|
|
2124
|
+
retryProgress: "Auto-retrying {{attempt}}/{{maxAttempts}} \xB7 {{seconds}}s",
|
|
2104
2125
|
copyFailed: "Copy failed",
|
|
2105
2126
|
copySuccess: "Copied successfully",
|
|
2106
2127
|
createDialog: "Create Dialog",
|
|
@@ -2462,6 +2483,7 @@ var chat_locale_default = {
|
|
|
2462
2483
|
copyContent: "\u590D\u5236\u5185\u5BB9",
|
|
2463
2484
|
copyDiagnostics: "\u590D\u5236\u8BCA\u65AD\u4FE1\u606F",
|
|
2464
2485
|
finishReasonLengthNotice: "\u56DE\u7B54\u56E0\u8FBE\u5230\u6A21\u578B\u8F93\u51FA\u4E0A\u9650\u88AB\u622A\u65AD",
|
|
2486
|
+
retryProgress: "\u81EA\u52A8\u91CD\u8BD5 {{attempt}}/{{maxAttempts}} \xB7 {{seconds}}s",
|
|
2465
2487
|
copyFailed: "\u590D\u5236\u5931\u8D25",
|
|
2466
2488
|
copySuccess: "\u590D\u5236\u6210\u529F",
|
|
2467
2489
|
createDialog: "\u521B\u5EFA\u5BF9\u8BDD",
|
|
@@ -2818,6 +2840,7 @@ var chat_locale_default = {
|
|
|
2818
2840
|
copyContent: "\u8907\u88FD\u5167\u5BB9",
|
|
2819
2841
|
copyDiagnostics: "\u8907\u88FD\u8A3A\u65B7\u8CC7\u8A0A",
|
|
2820
2842
|
finishReasonLengthNotice: "\u56DE\u7B54\u56E0\u9054\u5230\u6A21\u578B\u8F38\u51FA\u4E0A\u9650\u88AB\u622A\u65B7",
|
|
2843
|
+
retryProgress: "\u81EA\u52D5\u91CD\u8A66 {{attempt}}/{{maxAttempts}} \xB7 {{seconds}}s",
|
|
2821
2844
|
copyFailed: "\u8907\u88FD\u5931\u6557",
|
|
2822
2845
|
copySuccess: "\u8907\u88FD\u6210\u529F",
|
|
2823
2846
|
createDialog: "\u5275\u5EFA\u5C0D\u8A71",
|
|
@@ -3102,6 +3125,7 @@ var chat_locale_default = {
|
|
|
3102
3125
|
copyContent: "\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u30B3\u30D4\u30FC",
|
|
3103
3126
|
copyDiagnostics: "\u8A3A\u65AD\u60C5\u5831\u3092\u30B3\u30D4\u30FC",
|
|
3104
3127
|
finishReasonLengthNotice: "\u30E2\u30C7\u30EB\u306E\u51FA\u529B\u4E0A\u9650\u306B\u9054\u3057\u305F\u305F\u3081\u3001\u56DE\u7B54\u304C\u9014\u4E2D\u3067\u7D42\u4E86\u3057\u307E\u3057\u305F",
|
|
3128
|
+
retryProgress: "\u81EA\u52D5\u30EA\u30C8\u30E9\u30A4 {{attempt}}/{{maxAttempts}} \xB7 {{seconds}}s",
|
|
3105
3129
|
copyFailed: "\u30B3\u30D4\u30FC\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
3106
3130
|
copySuccess: "\u30B3\u30D4\u30FC\u306B\u6210\u529F\u3057\u307E\u3057\u305F",
|
|
3107
3131
|
createDialog: "\u5BFE\u8A71\u3092\u4F5C\u6210",
|
|
@@ -5577,6 +5601,9 @@ var interface_locale_default = {
|
|
|
5577
5601
|
windowsDesc: "One-click installer for Windows.",
|
|
5578
5602
|
linuxTitle: "Linux",
|
|
5579
5603
|
linuxDesc: "Native package for your environment.",
|
|
5604
|
+
linuxTarInstallHint: "Extract and run bin/launcher \u2014 no install needed.",
|
|
5605
|
+
linuxDebInstallHint: "sudo apt install ./nolo-desktop_amd64.deb",
|
|
5606
|
+
linuxRpmInstallHint: "sudo dnf install ./nolo-desktop_x86_64.rpm",
|
|
5580
5607
|
macosTitle: "macOS",
|
|
5581
5608
|
macosDesc: "Optimized for Apple Silicon.",
|
|
5582
5609
|
macosDmgInstaller: {
|
|
@@ -5613,7 +5640,6 @@ var interface_locale_default = {
|
|
|
5613
5640
|
pricingTitle: "Pricing Details",
|
|
5614
5641
|
pricingDesc: "View pricing rules",
|
|
5615
5642
|
guideTitle: "User Guide",
|
|
5616
|
-
guideDesc: "Quick start tips",
|
|
5617
5643
|
downloadClientTitle: "Download Client",
|
|
5618
5644
|
downloadClientDesc: "Install Nolo on desktop and mobile devices",
|
|
5619
5645
|
feedbackTitle: "Give Feedback",
|
|
@@ -6804,6 +6830,9 @@ var interface_locale_default = {
|
|
|
6804
6830
|
windowsDesc: "Windows \u4E00\u952E\u5B89\u88C5\u5305\u3002",
|
|
6805
6831
|
linuxTitle: "Linux",
|
|
6806
6832
|
linuxDesc: "\u9002\u914D\u4F60\u672C\u5730\u73AF\u5883\u7684\u539F\u751F\u5305\u3002",
|
|
6833
|
+
linuxTarInstallHint: "\u89E3\u538B\u540E\u8FD0\u884C bin/launcher\uFF0C\u65E0\u9700\u5B89\u88C5\u3002",
|
|
6834
|
+
linuxDebInstallHint: "sudo apt install ./nolo-desktop_amd64.deb",
|
|
6835
|
+
linuxRpmInstallHint: "sudo dnf install ./nolo-desktop_x86_64.rpm",
|
|
6807
6836
|
macosTitle: "macOS",
|
|
6808
6837
|
macosDesc: "\u4E3A Apple Silicon \u4F18\u5316\u3002",
|
|
6809
6838
|
macosDmgInstaller: {
|
|
@@ -6840,7 +6869,6 @@ var interface_locale_default = {
|
|
|
6840
6869
|
pricingTitle: "\u8BA1\u8D39\u8BE6\u60C5",
|
|
6841
6870
|
pricingDesc: "\u67E5\u770B\u4EF7\u683C\u89C4\u5219",
|
|
6842
6871
|
guideTitle: "\u4F7F\u7528\u6307\u5357",
|
|
6843
|
-
guideDesc: "\u5FEB\u901F\u4E0A\u624B\u6280\u5DE7",
|
|
6844
6872
|
downloadClientTitle: "\u4E0B\u8F7D\u5BA2\u6237\u7AEF",
|
|
6845
6873
|
downloadClientDesc: "\u5B89\u88C5\u684C\u9762\u7AEF\u548C\u79FB\u52A8\u7AEF\uFF0C\u6362\u8BBE\u5907\u4E5F\u80FD\u7EE7\u7EED\u7528",
|
|
6846
6874
|
feedbackTitle: "\u610F\u89C1\u53CD\u9988",
|
|
@@ -8067,7 +8095,6 @@ var interface_locale_default = {
|
|
|
8067
8095
|
pricingTitle: "\u8A08\u8CBB\u8A73\u60C5",
|
|
8068
8096
|
pricingDesc: "\u67E5\u770B\u50F9\u683C\u898F\u5247",
|
|
8069
8097
|
guideTitle: "\u4F7F\u7528\u6307\u5357",
|
|
8070
|
-
guideDesc: "\u5FEB\u901F\u4E0A\u624B\u6280\u5DE7",
|
|
8071
8098
|
downloadClientTitle: "\u4E0B\u8F09\u5BA2\u6236\u7AEF",
|
|
8072
8099
|
downloadClientDesc: "\u5B89\u88DD\u684C\u9762\u7AEF\u548C\u884C\u52D5\u7AEF\uFF0C\u63DB\u88DD\u7F6E\u4E5F\u80FD\u7E7C\u7E8C\u7528",
|
|
8073
8100
|
feedbackTitle: "\u610F\u898B\u56DE\u994B",
|
|
@@ -9216,7 +9243,6 @@ var interface_locale_default = {
|
|
|
9216
9243
|
pricingTitle: "\u6599\u91D1\u8A73\u7D30",
|
|
9217
9244
|
pricingDesc: "\u6599\u91D1\u30EB\u30FC\u30EB\u3092\u78BA\u8A8D",
|
|
9218
9245
|
guideTitle: "\u4F7F\u3044\u65B9\u30AC\u30A4\u30C9",
|
|
9219
|
-
guideDesc: "\u30AF\u30A4\u30C3\u30AF\u30B9\u30BF\u30FC\u30C8\u306E\u30B3\u30C4",
|
|
9220
9246
|
downloadClientTitle: "\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9",
|
|
9221
9247
|
downloadClientDesc: "\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7\u3068\u30E2\u30D0\u30A4\u30EB\u306B Nolo \u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB",
|
|
9222
9248
|
feedbackTitle: "\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF",
|
|
@@ -11205,7 +11231,7 @@ var i18n_default = instance;
|
|
|
11205
11231
|
var TOOL_PACKS = {
|
|
11206
11232
|
// L1 - 核心:交互 + 自我更新,所有 Agent 必有。
|
|
11207
11233
|
// rememberMemory 已移至「长期记忆」能力包(defaultEnabled:true),用户可单关。
|
|
11208
|
-
CORE: ["
|
|
11234
|
+
CORE: ["ask_user", "read", "searchDialogMessages", "createDoc", "updateDoc", "search_workspace", "search_all_spaces", "updateSelf", "queryModelUsage", "queryUserGrowthReport", "createAgentAutomation", "notifyUser"],
|
|
11209
11235
|
// L2 - 联网搜索:与 CAPABILITY_PACKS「web-search」对齐。
|
|
11210
11236
|
// 社交读工具属于「social-reader」包,不得因 exa_search 被旁路注入。
|
|
11211
11237
|
LIGHT_WEB: ["exa_search", "fetchWebpage"],
|
|
@@ -11226,8 +11252,8 @@ var CAPABILITY_PACKS = [
|
|
|
11226
11252
|
{
|
|
11227
11253
|
id: "long-term-memory",
|
|
11228
11254
|
label: "\u957F\u671F\u8BB0\u5FC6",
|
|
11229
|
-
description: "\
|
|
11230
|
-
tools: ["rememberMemory"],
|
|
11255
|
+
description: "\u5BF9\u8BDD\u524D\u81EA\u52A8\u8F7D\u5165\u9AD8\u76F8\u5173\u8BB0\u5FC6\uFF0C\u5E76\u5141\u8BB8 agent \u6309\u9700\u67E5\u8BE2\u6216\u5199\u5165\u957F\u671F\u8BB0\u5FC6\u3002",
|
|
11256
|
+
tools: ["queryMemory", "rememberMemory"],
|
|
11231
11257
|
defaultEnabled: true,
|
|
11232
11258
|
icon: "\u{1F9E0}"
|
|
11233
11259
|
},
|
|
@@ -11266,7 +11292,30 @@ var CAPABILITY_PACKS = [
|
|
|
11266
11292
|
"listProcesses"
|
|
11267
11293
|
],
|
|
11268
11294
|
defaultEnabled: false,
|
|
11269
|
-
icon: "\u{1F4BB}"
|
|
11295
|
+
icon: "\u{1F4BB}",
|
|
11296
|
+
promptPatch: `# \u4EE3\u7801\u6267\u884C\u80FD\u529B\u5305 \u2014 \u64CD\u4F5C\u7EAA\u5F8B
|
|
11297
|
+
|
|
11298
|
+
## \u6548\u7387\u4F18\u5148\uFF08\u7701 token\uFF09
|
|
11299
|
+
- \u4E0D\u590D\u8FF0\u9700\u6C42\uFF0C\u4E0D\u89E3\u91CA\u300C\u6253\u7B97\u600E\u4E48\u505A\u300D\uFF0C\u76F4\u63A5\u52A8\u624B\u3002\u6539\u5B8C\u53EA\u7528\u4E00\u4E24\u53E5\u8BDD\u8BF4\u6E05\u300C\u6539\u4E86\u4EC0\u4E48\u3001\u53BB\u54EA\u770B\u300D\u3002
|
|
11300
|
+
- \u601D\u8003\u7B80\u77ED\uFF1A\u5B9A\u4F4D\u95EE\u9898\u5373\u53EF\uFF0C\u4E0D\u505A\u957F\u7BC7\u63A8\u6F14\u3002
|
|
11301
|
+
- \u5C0F\u6539\u52A8\u8D70\u6700\u77ED\u8DEF\u5F84\uFF1AsearchFiles/globFiles \u5B9A\u4F4D \u2192 readFile \u786E\u8BA4 \u2192 editFile \u7CBE\u786E\u66FF\u6362\u3002\u80FD\u4E00\u6B21\u547D\u4E2D\u5C31\u4E0D\u8981\u53CD\u590D\u8BFB\u6587\u4EF6\u3002
|
|
11302
|
+
- \u5DF2\u7ECF\u77E5\u9053\u6587\u4EF6\u548C\u4F4D\u7F6E\u65F6\uFF0C\u8DF3\u8FC7\u591A\u4F59\u7684 search/read\uFF0C\u76F4\u63A5 edit\u3002
|
|
11303
|
+
- \u7981\u6B62\u4E3A\u4E00\u4E2A\u5C0F\u6539\u52A8\u6574\u9875\u91CD\u5199\u6216\u8FDE\u5E26\u6539\u52A8\u672A\u547D\u4E2D\u7684\u90E8\u5206\u3002
|
|
11304
|
+
|
|
11305
|
+
## \u4EE3\u7801\u4FEE\u6539\u7EAA\u5F8B
|
|
11306
|
+
- \u7F16\u8F91\u524D\u5148 readFile \u786E\u8BA4\u5F53\u524D\u5185\u5BB9\uFF0C\u907F\u514D stale hash \u9519\u8BEF\u3002
|
|
11307
|
+
- \u53EA\u78B0\u4EFB\u52A1\u4E66\u5217\u51FA\u7684\u6587\u4EF6\uFF1B\u6539\u5B8C\u7528 \`git status --short\` \u81EA\u67E5\uFF0C\u82E5\u6539\u5230\u6E05\u5355\u5916\u6587\u4EF6\uFF0C\u5982\u5B9E\u62A5\u544A\u3002
|
|
11308
|
+
- \u4E0D\u8981 \`git add\` / \`git commit\` / \`git push\` / \`git stash\` / \`git reset\` / \`git checkout\` / \`git clean\`\u2014\u2014\u6539\u52A8\u7559\u5728\u5DE5\u4F5C\u533A\uFF0C\u63D0\u4EA4\u7531\u8C03\u7528\u65B9\u9A8C\u6536\u540E\u5904\u7406\u3002\u4ED3\u5E93\u5E38\u6709\u591A\u4E2A\u4F1A\u8BDD\u5171\u7528\u4E00\u4E2A checkout\uFF0C\u4F60\u4E00\u63D0\u4EA4\u5C31\u4F1A\u628A\u522B\u4EBA\u7684\u5728\u9014\u6587\u4EF6\u5377\u8FDB\u6765\u3002
|
|
11309
|
+
- \u53EA\u8DD1\u4EFB\u52A1\u91CC\u5217\u51FA\u7684\u6D4B\u8BD5\u6587\u4EF6\uFF0C\u4E0D\u8981\u8DD1 broader \u6D4B\u8BD5\uFF08broaden \u6D4B\u8BD5\u7684\u5931\u8D25\u662F\u9884\u5B58\u7684\uFF0C\u548C\u4F60\u7684\u6539\u52A8\u65E0\u5173\uFF09\u3002
|
|
11310
|
+
|
|
11311
|
+
## Review \u7EAA\u5F8B\uFF08commit \u524D\u786C\u95E8\uFF09
|
|
11312
|
+
- \u9664 \u22642 \u6B65\u96F6\u903B\u8F91\u98CE\u9669\u7684\u673A\u68B0\u6539\u52A8\uFF08\u9519\u522B\u5B57/\u683C\u5F0F/CSS \u5FAE\u8C03\uFF09\u5916\uFF0C\u6240\u6709\u4EE3\u7801\u53D8\u66F4 commit \u524D\u5FC5\u987B\u5148\u6D3E**\u5176\u4ED6 agent**\uFF08\u4E0D\u540C\u6A21\u578B\u5BB6\u65CF\u4F18\u5148\uFF09review \u5DE5\u4F5C\u533A diff\uFF08\`git diff\`\uFF0C\u672A\u63D0\u4EA4\u7684\u6539\u52A8\uFF09\u3002reviewer \u4E0D\u53EF\u662F\u81EA\u5DF1\u3002\u65E0 review \u4E0D commit\u2014\u2014\u8FD9\u662F\u786C\u95E8\uFF0C\u4E0D\u662F\u5EFA\u8BAE\u3002
|
|
11313
|
+
- \u6D3E\u53D1\u8D70 \`startAgentRun(agentKey, task, { ephemeral: true })\`\uFF08web/\u684C\u9762\u7AEF\u6CA1\u6709 nolo CLI\uFF0C\u6240\u6709 host \u90FD\u6709\u8FD9\u4E2A\u5DE5\u5177\uFF09\u3002ephemeral \u8BA9 review \u5B8C\u6210\u540E\u4E0D\u7559 dialog \u8BB0\u5F55\u3002
|
|
11314
|
+
- task \u91CC\u5FC5\u987B\u5199\u660E\u5BA1\u67E5\u5BF9\u8C61\uFF08\`git diff\` \u770B\u5DE5\u4F5C\u533A\u6539\u52A8\uFF0C\u6216 \`git diff alpha...HEAD\` \u770B\u5DF2\u63D0\u4EA4\u6539\u52A8\uFF09\uFF0C\u5426\u5219 reviewer \u4E0D\u77E5\u9053\u5BA1\u4EC0\u4E48\u3002
|
|
11315
|
+
- \u6309\u89D2\u8272\u52A0\u8F7D\u5BF9\u5E94 skill\uFF1Areviewer \u5148 \`loadSkill("coding-review")\` \u62FF\u901A\u7528\u6D41\u7A0B\uFF0C\u518D\u6309\u89D2\u8272 \`loadSkill("coding-review-<role>")\` \u62FF\u68C0\u67E5\u9879\u3002\u89D2\u8272\u6E05\u5355\uFF1Acode-quality\uFF08**\u5FC5\u8DD1**\uFF09/ architecture\uFF08**\u5355\u72EC\u6D3E\u53D1**\uFF0C\u4E2D\u7EA7\u4EE5\u4E0A\u95EE\u9898\uFF09/ security\uFF08\u6309\u9700 + \u5B89\u5168\u654F\u611F\u89E6\u53D1\u5FC5\u8DD1\uFF09/ frontend-ux\uFF08\u6D89\u53CA UI \u65F6\uFF09/ backend-data\uFF08\u6D89\u53CA server \u65F6\uFF09\u3002\u89D2\u8272\u5207\u5272\u7684\u76EE\u7684\u662F\u6CE8\u610F\u529B\u9694\u79BB\u2014\u2014\u6BCF\u4E2A\u89D2\u8272\u53EA\u76EF\u81EA\u5DF1\u7684\u68C0\u67E5\u9762\uFF0C\u6309\u9700\u542F\u7528\uFF0C\u907F\u514D\u4E00\u4E2A reviewer \u80CC\u6240\u6709\u89D2\u8272\u5BFC\u81F4\u6CE8\u610F\u529B\u7A00\u91CA\u3002
|
|
11316
|
+
- Verdict \u6807\u51C6\uFF1AAPPROVE\uFF08\u65E0 CRITICAL \u6216 HIGH\uFF09\u2192 \u53EF commit\uFF1BWARNING\uFF08\u4EC5 HIGH\uFF09\u2192 \u62A5\u544A owner \u51B3\u5B9A\uFF1BBLOCK\uFF08\u6709 CRITICAL\uFF09\u2192 \u5FC5\u987B\u5148\u4FEE\u3002
|
|
11317
|
+
- review \u53EF\u80FD\u591A\u8F6E\u6536\u655B\uFF08\u6709 finding\u2192\u4FEE\u2192\u518D\u5BA1\u2192\u76F4\u5230 APPROVE\uFF09\u3002\u6BCF\u8F6E review \u662F\u65E0\u4E0A\u4E0B\u6587\u7684\u2014\u2014reviewer \u53EA\u770B\u5F53\u524D\u5DE5\u4F5C\u533A diff\uFF0C\u4E0D\u5E26\u4E0A\u4E00\u8F6E finding \u8BB0\u5FC6\u3002
|
|
11318
|
+
- \u82E5\u5904\u4E8E\u5355 Agent \u72EC\u5360\u73AF\u5883\u3001\u5176\u4ED6 agent \u4E0D\u53EF\u8FBE\u3001\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u76F4\u63A5\u63D0\u4EA4\uFF0C\u5141\u8BB8\u5E26\u539F\u56E0\u8DF3\u8FC7\uFF08commit message \u6CE8\u660E [no-review: \u539F\u56E0]\uFF09\uFF0C\u4F46\u9ED8\u8BA4\u5FC5\u987B\u6D3E review\u3002`
|
|
11270
11319
|
},
|
|
11271
11320
|
{
|
|
11272
11321
|
id: "skills",
|
|
@@ -11434,7 +11483,7 @@ function appendEnabledPackPromptPatches(prompt, enabledPacks) {
|
|
|
11434
11483
|
|
|
11435
11484
|
${addition}`;
|
|
11436
11485
|
}
|
|
11437
|
-
var FORCED_TOOLS = ["
|
|
11486
|
+
var FORCED_TOOLS = ["ask_user"];
|
|
11438
11487
|
function applyDisabledTools(toolNames, disabledTools) {
|
|
11439
11488
|
if (!Array.isArray(disabledTools) || disabledTools.length === 0) {
|
|
11440
11489
|
return toolNames;
|
|
@@ -11483,7 +11532,7 @@ var HOSTED_EXEC_RUNTIME_TOOL_POLICY = {
|
|
|
11483
11532
|
workspace: { mode: "lease" }
|
|
11484
11533
|
};
|
|
11485
11534
|
var findModelConfig = async (modelName, provider) => {
|
|
11486
|
-
const { ALL_MODELS } = await import("./models-
|
|
11535
|
+
const { ALL_MODELS } = await import("./models-5K5G2CZI.js");
|
|
11487
11536
|
const name = toTrimmedString(modelName);
|
|
11488
11537
|
const prov = toTrimmedString(provider ?? "");
|
|
11489
11538
|
if (!name) return null;
|
|
@@ -11724,7 +11773,7 @@ var buildFormDataFromArgs = async (args) => {
|
|
|
11724
11773
|
const trimmedModel = toTrimmedString(model);
|
|
11725
11774
|
const trimmedProvider = toTrimmedString(provider);
|
|
11726
11775
|
const modelConfig = await findModelConfig(trimmedModel, trimmedProvider);
|
|
11727
|
-
const { getModelPricing } = await import("./getPricing-
|
|
11776
|
+
const { getModelPricing } = await import("./getPricing-RYY6OBA4.js");
|
|
11728
11777
|
const normalizedTools = tools ?? [];
|
|
11729
11778
|
const resolvedRuntimeToolPolicy = runtimeToolPolicy ?? (normalizedTools.includes("execShell") ? HOSTED_EXEC_RUNTIME_TOOL_POLICY : void 0);
|
|
11730
11779
|
const formData = {
|
|
@@ -12386,7 +12435,7 @@ var createSkillDocFunctionSchema = {
|
|
|
12386
12435
|
description: [
|
|
12387
12436
|
"\u521B\u5EFA\u4E00\u4E2A\u672C\u5730 skill \u6587\u6863\uFF0C\u5E76\u81EA\u52A8\u5199\u5165\u9690\u85CF\u7684 skill-config / eval-config \u534F\u8BAE\u5757\u3002",
|
|
12388
12437
|
"\u9002\u5408\u628A\u67D0\u4E2A\u80FD\u529B\u6D41\u7A0B\u6C89\u6DC0\u6210\u53EF\u88AB agent \u5F15\u7528\u7684 skill\uFF0C\u800C\u4E0D\u662F\u624B\u5199\u534F\u8BAE\u6CE8\u91CA\u3002",
|
|
12389
|
-
"\u521B\u5EFA\u6210\u529F\u540E\uFF0C\u5982\u679C\u7528\u6237\u8FD8\u6CA1\u8BF4\u660E\u4E0B\u4E00\u6B65\uFF0C\u4F18\u5148\u8C03\u7528
|
|
12438
|
+
"\u521B\u5EFA\u6210\u529F\u540E\uFF0C\u5982\u679C\u7528\u6237\u8FD8\u6CA1\u8BF4\u660E\u4E0B\u4E00\u6B65\uFF0C\u4F18\u5148\u8C03\u7528 ask_user \u7EE7\u7EED\u8BE2\u95EE\uFF1A\u4EC5\u4FDD\u5B58\u3001\u6302\u5230\u73B0\u6709 Agent\uFF0C\u8FD8\u662F\u65B0\u5EFA\u4E00\u4E2A Agent \u6765\u4F7F\u7528\u5B83\u3002"
|
|
12390
12439
|
].join("\n"),
|
|
12391
12440
|
parameters: {
|
|
12392
12441
|
type: "object",
|
|
@@ -12809,7 +12858,7 @@ var importSkillFunctionSchema = {
|
|
|
12809
12858
|
description: [
|
|
12810
12859
|
"\u4ECE\u5916\u90E8 SKILL.md\u3001GitHub \u5730\u5740\u6216\u539F\u59CB Markdown \u6587\u672C\u5BFC\u5165\u4E00\u4E2A skill\uFF0C\u5E76\u4FDD\u5B58\u4E3A\u5F53\u524D\u7A7A\u95F4\u4E2D\u7684\u666E\u901A\u6587\u6863\u3002",
|
|
12811
12860
|
"\u5BFC\u5165\u540E\u4F1A\u81EA\u52A8\u9644\u52A0\u9690\u85CF\u7684 skill-config \u534F\u8BAE\u5757\uFF1B\u65E0\u6CD5\u6620\u5C04\u7684\u811A\u672C\u73AF\u5883\u4F1A\u964D\u7EA7\u4E3A\u8BF4\u660E\u578B skill\u3002",
|
|
12812
|
-
"\u5BFC\u5165\u6210\u529F\u540E\uFF0C\u5982\u679C\u7528\u6237\u8FD8\u6CA1\u8BF4\u660E\u4E0B\u4E00\u6B65\uFF0C\u4F18\u5148\u8C03\u7528
|
|
12861
|
+
"\u5BFC\u5165\u6210\u529F\u540E\uFF0C\u5982\u679C\u7528\u6237\u8FD8\u6CA1\u8BF4\u660E\u4E0B\u4E00\u6B65\uFF0C\u4F18\u5148\u8C03\u7528 ask_user \u7EE7\u7EED\u8BE2\u95EE\uFF1A\u4EC5\u4FDD\u5B58\u3001\u6302\u5230\u73B0\u6709 Agent\uFF0C\u8FD8\u662F\u65B0\u5EFA\u4E00\u4E2A Agent \u6765\u4F7F\u7528\u5B83\u3002"
|
|
12813
12862
|
].join("\n"),
|
|
12814
12863
|
parameters: {
|
|
12815
12864
|
type: "object",
|
|
@@ -12911,7 +12960,8 @@ var loadSkillFunctionSchema = {
|
|
|
12911
12960
|
description: [
|
|
12912
12961
|
"\u6309\u540D\u79F0\u52A0\u8F7D\u4E00\u4E2A\u5DF2\u4FDD\u5B58\u7684 skill \u6587\u6863\uFF0C\u8FD4\u56DE\u5176\u5B8C\u6574\u6307\u4EE4\u6B63\u6587\u3002",
|
|
12913
12962
|
"name \u4F7F\u7528 skill \u4FDD\u5B58\u65F6\u5199\u5165 skill-config \u7684 name\uFF08\u4E5F\u63A5\u53D7 skillId\uFF09\u3002",
|
|
12914
|
-
"\u627E\u4E0D\u5230\u5BF9\u5E94 skill \u65F6\u8FD4\u56DE\u5F53\u524D\u53EF\u7528\u7684 skill \u540D\u79F0\u5217\u8868\uFF08\u4E0D\u62A5\u9519\uFF09\u3002"
|
|
12963
|
+
"\u627E\u4E0D\u5230\u5BF9\u5E94 skill \u65F6\u8FD4\u56DE\u5F53\u524D\u53EF\u7528\u7684 skill \u540D\u79F0\u5217\u8868\uFF08\u4E0D\u62A5\u9519\uFF09\u3002",
|
|
12964
|
+
'\u7CFB\u7EDF\u5185\u7F6E\u5199\u4EE3\u7801\u6280\u80FD\uFF1A\u5BF9\u8BDD\u8F6C\u5411\u5199\u4EE3\u7801\u65F6\u7528 loadSkill("coding") \u8F7D\u5165\u5199\u4EE3\u7801\u80FD\u529B\u4E0E\u4EE3\u7801\u5BA1\u67E5\u7EAA\u5F8B\uFF08\u542B review \u89D2\u8272\u5207\u5272\uFF09\u3002'
|
|
12915
12965
|
].join("\n"),
|
|
12916
12966
|
parameters: {
|
|
12917
12967
|
type: "object",
|
|
@@ -13003,7 +13053,33 @@ async function loadSkillFunc(args, thunkApi) {
|
|
|
13003
13053
|
const requestedName = asTrimmedString(args?.name);
|
|
13004
13054
|
if (!requestedName) throw new Error("loadSkill \u9700\u8981\u63D0\u4F9B name\u3002");
|
|
13005
13055
|
const candidates = await listSkillCandidates(thunkApi);
|
|
13006
|
-
|
|
13056
|
+
let matched = matchSkillCandidate(candidates, requestedName);
|
|
13057
|
+
const builtinSlug = !matched ? resolveCodingBuiltinSlug(requestedName) : null;
|
|
13058
|
+
if (builtinSlug) {
|
|
13059
|
+
const runtime2 = getRuntime(thunkApi);
|
|
13060
|
+
const userId = runtime2?.currentUserId;
|
|
13061
|
+
const body2 = buildCodingSkillContentBySlug(builtinSlug);
|
|
13062
|
+
const dbKey = userId ? buildCodingSkillPageKey(userId, builtinSlug) : builtinSlug;
|
|
13063
|
+
if (userId) {
|
|
13064
|
+
try {
|
|
13065
|
+
const { ensureCodingSkills } = await import("./codingSkills-36KN5NQT.js");
|
|
13066
|
+
await ensureCodingSkills(userId)(thunkApi?.dispatch ?? (() => Promise.resolve()));
|
|
13067
|
+
} catch {
|
|
13068
|
+
}
|
|
13069
|
+
}
|
|
13070
|
+
await persistLoadedSkillReference(thunkApi, dbKey, requestedName);
|
|
13071
|
+
return {
|
|
13072
|
+
rawData: {
|
|
13073
|
+
success: true,
|
|
13074
|
+
name: requestedName,
|
|
13075
|
+
dbKey,
|
|
13076
|
+
body: body2
|
|
13077
|
+
},
|
|
13078
|
+
displayData: `Skill "${requestedName}" loaded inline. Follow its instructions.
|
|
13079
|
+
|
|
13080
|
+
${body2}`
|
|
13081
|
+
};
|
|
13082
|
+
}
|
|
13007
13083
|
if (!matched) {
|
|
13008
13084
|
const availableNames = Array.from(
|
|
13009
13085
|
new Set(candidates.map((candidate) => candidate.name))
|
|
@@ -13025,6 +13101,7 @@ async function loadSkillFunc(args, thunkApi) {
|
|
|
13025
13101
|
dbKey: matched.dbKey
|
|
13026
13102
|
});
|
|
13027
13103
|
const body = extractSkillBody(page);
|
|
13104
|
+
await persistLoadedSkillReference(thunkApi, matched.dbKey, requestedName);
|
|
13028
13105
|
return {
|
|
13029
13106
|
rawData: {
|
|
13030
13107
|
success: true,
|
|
@@ -13037,6 +13114,27 @@ async function loadSkillFunc(args, thunkApi) {
|
|
|
13037
13114
|
${body}`
|
|
13038
13115
|
};
|
|
13039
13116
|
}
|
|
13117
|
+
async function persistLoadedSkillReference(thunkApi, dbKey, name) {
|
|
13118
|
+
try {
|
|
13119
|
+
const state = thunkApi?.getState?.();
|
|
13120
|
+
const currentDialogKey = getActiveDialogKey();
|
|
13121
|
+
if (!state || !currentDialogKey) return;
|
|
13122
|
+
const dialogConfig = selectById(
|
|
13123
|
+
state,
|
|
13124
|
+
currentDialogKey
|
|
13125
|
+
);
|
|
13126
|
+
const existing = dialogConfig?.extraReferences ?? [];
|
|
13127
|
+
const alreadyMounted = existing.some((ref) => ref.dbKey === dbKey);
|
|
13128
|
+
if (alreadyMounted) return;
|
|
13129
|
+
const newRef = {
|
|
13130
|
+
dbKey,
|
|
13131
|
+
title: name,
|
|
13132
|
+
type: "instruction"
|
|
13133
|
+
};
|
|
13134
|
+
await setDialogExtraReferencesAction([...existing, newRef], thunkApi);
|
|
13135
|
+
} catch {
|
|
13136
|
+
}
|
|
13137
|
+
}
|
|
13040
13138
|
|
|
13041
13139
|
// packages/ai/tools/category/createCategoryTool.ts
|
|
13042
13140
|
var createCategoryFunctionSchema = {
|
|
@@ -14154,7 +14252,7 @@ async function deleteDialogsFunc(args, thunkApi) {
|
|
|
14154
14252
|
const deletedDialogIds = [];
|
|
14155
14253
|
const deletedDialogKeys = [];
|
|
14156
14254
|
const failures = [];
|
|
14157
|
-
const { deleteDialog } = await import("./dialogSlice-
|
|
14255
|
+
const { deleteDialog } = await import("./dialogSlice-53B5ISGQ.js");
|
|
14158
14256
|
for (const target of targets) {
|
|
14159
14257
|
try {
|
|
14160
14258
|
await thunkApi.dispatch(deleteDialog(target.dbKey)).unwrap();
|
|
@@ -14220,10 +14318,11 @@ function formatAgentListCard(agents, maxDisplay = 20) {
|
|
|
14220
14318
|
const visible = agents.slice(0, maxDisplay);
|
|
14221
14319
|
for (const agent of visible) {
|
|
14222
14320
|
const star = agent.isFavorite ? "\u2605" : " ";
|
|
14321
|
+
const own = agent.isOwned ? "\u25CE" : " ";
|
|
14223
14322
|
const name = agent.name || "(unnamed)";
|
|
14224
14323
|
const model = agent.model || "\u2014";
|
|
14225
14324
|
const source = agent.apiSource || agent.provider || agent.cliProvider || "\u2014";
|
|
14226
|
-
lines.push(`${star} ${name} ${model} ${source}`);
|
|
14325
|
+
lines.push(`${star}${own} ${name} ${model} ${source}`);
|
|
14227
14326
|
}
|
|
14228
14327
|
if (total > maxDisplay) {
|
|
14229
14328
|
lines.push(`\u2026 +${total - maxDisplay} more`);
|
|
@@ -14232,7 +14331,7 @@ function formatAgentListCard(agents, maxDisplay = 20) {
|
|
|
14232
14331
|
}
|
|
14233
14332
|
var listAgentsFunctionSchema = {
|
|
14234
14333
|
name: "listAgents",
|
|
14235
|
-
description: "List the current user's Nolo agents as safe summaries.
|
|
14334
|
+
description: "List the current user's Nolo agents as safe summaries. The `agents` array in the JSON result carries each agent's runnable `agentKey` (agent-<userId>-<id> for owned, agent-pub-<id> for public) plus model, apiSource, tools, prices, isOwned, isFavorite. Copy `agentKey` verbatim into startAgentRun/callAgent. Prefer isOwned agents (use your own quota, no platform credits).",
|
|
14236
14335
|
parameters: {
|
|
14237
14336
|
type: "object",
|
|
14238
14337
|
properties: {
|
|
@@ -14281,11 +14380,14 @@ async function listAgentsFunc(args, thunkApi) {
|
|
|
14281
14380
|
}
|
|
14282
14381
|
var readAgentFunctionSchema = {
|
|
14283
14382
|
name: "readAgent",
|
|
14284
|
-
description: "Read one Nolo agent
|
|
14383
|
+
description: "Read one agent's full config from the Nolo workspace. Accepts an agent dbKey (agent-xxx), plain id, alias, or agent URL; resolves it (including public agents via agent-pub-<id>; the server runtime also falls back to handle lookup) and returns the runnable agentKey plus a redacted record with fields such as model, provider, apiSource, tools, prompt, inputPrice, outputPrice, and isPublic. Use it to inspect an agent's full capabilities/credential status before delegation. Note: startAgentRun/callAgent take the exact agentKey from listAgents/readAgent; readAgent is not required before every dispatch when listAgents already gave you the key.",
|
|
14285
14384
|
parameters: {
|
|
14286
14385
|
type: "object",
|
|
14287
14386
|
properties: {
|
|
14288
|
-
agent: {
|
|
14387
|
+
agent: {
|
|
14388
|
+
type: "string",
|
|
14389
|
+
description: "Agent dbKey (e.g. agent-xxx), agent id, alias, or agent URL."
|
|
14390
|
+
}
|
|
14289
14391
|
},
|
|
14290
14392
|
required: ["agent"]
|
|
14291
14393
|
}
|
|
@@ -14418,7 +14520,7 @@ var readSkillDocFunctionSchema = {
|
|
|
14418
14520
|
}
|
|
14419
14521
|
};
|
|
14420
14522
|
async function readSkillDocFunc(args, thunkApi) {
|
|
14421
|
-
const { buildReadDocResult } = await import("./readDocTool-
|
|
14523
|
+
const { buildReadDocResult } = await import("./readDocTool-VSYHKK3V.js");
|
|
14422
14524
|
const id = args?.id ?? args?.doc ?? args?.docKey ?? args?.pageKey;
|
|
14423
14525
|
if (typeof id !== "string" || !id.trim()) {
|
|
14424
14526
|
throw new Error("readSkillDoc requires id or doc.");
|
|
@@ -19868,7 +19970,7 @@ var selectUserIdFromState = (state) => typeof state?.auth?.currentUser?.userId =
|
|
|
19868
19970
|
var selectCurrentServerFromState = (state) => typeof state?.settings?.currentServer === "string" ? state.settings.currentServer : null;
|
|
19869
19971
|
async function addImageContentToSpace(input) {
|
|
19870
19972
|
const injectedAddContentAction = input.thunkApi?.extra?.addContentAction;
|
|
19871
|
-
const addContentAction2 = typeof injectedAddContentAction === "function" ? injectedAddContentAction : (await import("./addContentAction-
|
|
19973
|
+
const addContentAction2 = typeof injectedAddContentAction === "function" ? injectedAddContentAction : (await import("./addContentAction-PL3KKBDH.js")).addContentAction;
|
|
19872
19974
|
await addContentAction2(
|
|
19873
19975
|
{
|
|
19874
19976
|
spaceId: input.spaceId,
|
|
@@ -20620,10 +20722,20 @@ var rememberMemoryFunctionSchema = {
|
|
|
20620
20722
|
"\u53EA\u6709\u91CD\u590D\u51FA\u73B0\u7684\u53EF\u6267\u884C\u6D41\u7A0B/\u6392\u969C\u6B65\u9AA4\u624D\u4F20 kind=procedural\uFF1B\u4E00\u822C\u504F\u597D\u548C\u4E8B\u5B9E\u4FDD\u6301\u9ED8\u8BA4 episodic\u3002",
|
|
20621
20723
|
"scope \u6309\u5185\u5BB9\u6027\u8D28\u9009\uFF0C\u4E0D\u56FA\u5B9A\u4F18\u5148\u67D0\u4E00\u5C42\uFF1A",
|
|
20622
20724
|
" - Space \u534F\u4F5C\u7EA6\u5B9A/\u56E2\u961F\u89C4\u5219 \u2192 scope=space\uFF08\u5F53\u524D dialog \u7ED1\u5B9A space \u65F6\uFF09",
|
|
20623
|
-
" - \u7528\u6237\u4E2A\u4EBA\u8EAB\u4EFD\u6216\u7EAF\u4E2A\u4EBA\u504F\u597D \u2192 scope=
|
|
20624
|
-
" - \u4E0E\u5F53\u524D
|
|
20725
|
+
" - \u7528\u6237\u4E2A\u4EBA\u8EAB\u4EFD\u6216\u7EAF\u4E2A\u4EBA\u504F\u597D \u2192 scope=user\uFF08\u4E25\u683C\u4FDD\u5B58\u4E3A\u7528\u6237\u4E3B\u4F53\uFF09",
|
|
20726
|
+
" - \u4E0E\u5F53\u524D\u52A9\u624B\u5173\u7CFB\u6302\u94A9\u7684\u504F\u597D\u6216\u6709\u6548\u505A\u6CD5 \u2192 scope=auto\uFF08runtime \u4F7F\u7528\u5F53\u524D auto/fixed \u52A9\u624B\u4E3B\u4F53\uFF09",
|
|
20625
20727
|
" - \u5F53\u524D\u4EFB\u52A1\u7684\u4E34\u65F6\u8FDB\u5EA6 \u2192 \u4E0D\u8981\u8C03\u7528\uFF0C\u8D70\u5BF9\u8BDD\u4E0A\u4E0B\u6587",
|
|
20626
|
-
"\u5199\u6210\u4E00\u53E5\u7B80\u6D01\u3001\u672A\u6765\u4ECD\u53EF\u7406\u89E3\u7684\u8BDD\u3002\u9ED8\u8BA4\u9759\u9ED8\u6267\u884C\uFF0C\u4E0D\u7528\u5411\u7528\u6237\u6C47\u62A5\u5DF2\u8BB0\u4F4F\u3002"
|
|
20728
|
+
"\u5199\u6210\u4E00\u53E5\u7B80\u6D01\u3001\u672A\u6765\u4ECD\u53EF\u7406\u89E3\u7684\u8BDD\u3002\u9ED8\u8BA4\u9759\u9ED8\u6267\u884C\uFF0C\u4E0D\u7528\u5411\u7528\u6237\u6C47\u62A5\u5DF2\u8BB0\u4F4F\u3002",
|
|
20729
|
+
"",
|
|
20730
|
+
"\u3010\u5173\u952E\u89C4\u5219\u3011\u8BB0\u5FC6\u4E0D\u53EF\u7269\u7406\u5220\u9664\uFF0C\u53EA\u80FD\u964D\u7EA7/\u5F52\u6863/\u6807\u6CE8\u3002",
|
|
20731
|
+
"\u7269\u7406\u5220\u9664\u4F1A\u5207\u65AD\u89E3\u91CA\u94FE\u2014\u2014\u7CFB\u7EDF\u65E0\u6CD5\u56DE\u7B54'\u4E3A\u4EC0\u4E48\u53D8\u4E86'\u3001'\u66FE\u7ECF\u4FE1\u4EC0\u4E48'\u3002",
|
|
20732
|
+
"\u9519\u8BEF\u7684\u8BB0\u5FC6\u5E94\u901A\u8FC7 rememberMemory \u4FEE\u6B63\u5E76\u964D\u6743\uFF08\u964D\u4F4E\u7F6E\u4FE1\u5EA6\uFF09\uFF0C\u800C\u4E0D\u662F\u5220\u9664\u3002",
|
|
20733
|
+
"",
|
|
20734
|
+
"\u3010\u7F6E\u4FE1\u5EA6\u6765\u6E90\u3011\u6BCF\u6761\u8BB0\u5FC6\u5FC5\u987B\u6807\u6CE8\u6765\u6E90\uFF08\u4F9B\u53EC\u56DE\u65F6\u5224\u65AD\u53EF\u4FE1\u5EA6\uFF09\uFF1A",
|
|
20735
|
+
" - verified\uFF1A\u5DE5\u5177/\u547D\u4EE4\u5B9E\u6D4B\u9A8C\u8BC1\u8FC7\uFF08\u9AD8\u7F6E\u4FE1\u5EA6\uFF09",
|
|
20736
|
+
" - stated\uFF1A\u7528\u6237\u660E\u786E\u9648\u8FF0\uFF08\u4E2D\u9AD8\u7F6E\u4FE1\u5EA6\uFF09",
|
|
20737
|
+
" - inferred\uFF1A\u6A21\u578B\u63A8\u65AD/\u51ED\u5370\u8C61\uFF0C\u672A\u9A8C\u8BC1\uFF08\u4F4E\u7F6E\u4FE1\u5EA6\u2014\u2014\u5BB9\u6613\u7F16\u9020\uFF0C\u4F18\u5148\u6807\u8BB0\u5B58\u7591\uFF09",
|
|
20738
|
+
"\u8C03\u7528\u65F6\u5C3D\u91CF\u660E\u786E\u6765\u6E90\uFF0C\u65E0\u6CD5\u5224\u65AD\u7684\u4FDD\u5B88\u6807 inferred\u3002"
|
|
20627
20739
|
].join("\n"),
|
|
20628
20740
|
parameters: {
|
|
20629
20741
|
type: "object",
|
|
@@ -20635,7 +20747,7 @@ var rememberMemoryFunctionSchema = {
|
|
|
20635
20747
|
scope: {
|
|
20636
20748
|
type: "string",
|
|
20637
20749
|
enum: ["auto", "user", "space"],
|
|
20638
|
-
description: "\u8BB0\u5FC6\u8303\u56F4\
|
|
20750
|
+
description: "\u8BB0\u5FC6\u8303\u56F4\u3002Space \u534F\u4F5C\u5171\u8BC6\u4F20 space\uFF1B\u7528\u6237\u4E2A\u4EBA\u8EAB\u4EFD/\u504F\u597D\u4F20 user\uFF1B\u4E0E\u5F53\u524D\u52A9\u624B\u5173\u7CFB\u6302\u94A9\u7684\u504F\u597D\u4F20 auto\u3002auto \u65F6 runtime \u4F7F\u7528\u5F53\u524D auto/fixed \u52A9\u624B\u4E3B\u4F53\u3002"
|
|
20639
20751
|
},
|
|
20640
20752
|
kind: {
|
|
20641
20753
|
type: "string",
|
|
@@ -20675,6 +20787,52 @@ async function rememberMemoryFunc(args, thunkApi) {
|
|
|
20675
20787
|
};
|
|
20676
20788
|
}
|
|
20677
20789
|
|
|
20790
|
+
// packages/ai/tools/queryMemoryToolSchema.ts
|
|
20791
|
+
var queryMemoryFunctionSchema = {
|
|
20792
|
+
name: "queryMemory",
|
|
20793
|
+
description: [
|
|
20794
|
+
"\u6309\u9700\u67E5\u8BE2\u5F53\u524D\u7528\u6237\u3001Space \u548C\u5F53\u524D auto/fixed \u52A9\u624B\u4E3B\u4F53\u7684\u957F\u671F\u8BB0\u5FC6\u3002",
|
|
20795
|
+
"\u5BF9\u8BDD\u5F00\u59CB\u524D\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u8F7D\u5165\u5C11\u91CF\u9AD8\u76F8\u5173\u8BB0\u5FC6\uFF1B\u53EA\u6709\u9884\u8F7D\u4E0D\u8DB3\u3001\u7528\u6237\u63D0\u5230\u8FC7\u53BB\u7EA6\u5B9A/\u504F\u597D/\u7EA0\u6B63/\u672A\u5B8C\u6210\u4E8B\u9879\u65F6\u624D\u8C03\u7528\u3002",
|
|
20796
|
+
"\u4E0D\u8981\u4E3A\u4E86\u666E\u901A\u4E8B\u5B9E\u95EE\u9898\u67E5\u8BE2\uFF0C\u4E5F\u4E0D\u8981\u5728\u540C\u4E00\u8F6E\u7528\u8FD1\u4E49\u8BCD\u53CD\u590D\u67E5\u8BE2\u3002",
|
|
20797
|
+
"",
|
|
20798
|
+
"\u3010\u53EC\u56DE\u89C4\u5219\u3011\u53EC\u56DE\u7684\u8BB0\u5FC6\u5FC5\u987B\u5E26\u5B8C\u6574\u5386\u53F2\u4E0A\u4E0B\u6587\uFF08\u6765\u6E90\u3001\u7F6E\u4FE1\u5EA6\u3001\u53D8\u66F4\u8BB0\u5F55\uFF09\uFF0C\u7981\u6B62\u81EA\u884C\u63A8\u7406\u586B\u8865\u3002",
|
|
20799
|
+
"\u5982\u679C\u8BB0\u5FC6\u6765\u6E90\u662F inferred\uFF08\u63A8\u65AD\uFF09\uFF0C\u5FC5\u987B\u660E\u786E\u6807\u6CE8\u5B58\u7591\uFF0C\u4E0D\u80FD\u5F53\u6210\u9A8C\u8BC1\u8FC7\u7684\u4E8B\u5B9E\u4F7F\u7528\u3002",
|
|
20800
|
+
"\u9AD8\u7F6E\u4FE1\u5EA6\u8BB0\u5FC6\uFF08verified/stated\uFF09\u4F18\u5148\u4F7F\u7528\uFF1B\u4F4E\u7F6E\u4FE1\u5EA6\u8BB0\u5FC6\uFF08inferred\uFF09\u9700\u9A8C\u8BC1\u540E\u518D\u91C7\u7EB3\u3002"
|
|
20801
|
+
].join("\n"),
|
|
20802
|
+
parameters: {
|
|
20803
|
+
type: "object",
|
|
20804
|
+
properties: {
|
|
20805
|
+
query: {
|
|
20806
|
+
type: "string",
|
|
20807
|
+
description: "\u8981\u4ECE\u957F\u671F\u8BB0\u5FC6\u4E2D\u68C0\u7D22\u7684\u81EA\u7136\u8BED\u8A00\u95EE\u9898\u6216\u5173\u952E\u8BCD\u3002"
|
|
20808
|
+
}
|
|
20809
|
+
},
|
|
20810
|
+
required: ["query"]
|
|
20811
|
+
}
|
|
20812
|
+
};
|
|
20813
|
+
|
|
20814
|
+
// packages/ai/tools/queryMemoryTool.ts
|
|
20815
|
+
async function queryMemoryFunc(args, thunkApi) {
|
|
20816
|
+
const query = String(args.query ?? "").trim();
|
|
20817
|
+
if (!query) throw new Error("queryMemory \u9700\u8981\u975E\u7A7A query\u3002");
|
|
20818
|
+
const state = thunkApi.getState();
|
|
20819
|
+
const dialogKey = getActiveDialogKey();
|
|
20820
|
+
const dialog = dialogKey ? selectById(state, dialogKey) : null;
|
|
20821
|
+
const result = await callToolApi(
|
|
20822
|
+
thunkApi,
|
|
20823
|
+
"/api/memory/query",
|
|
20824
|
+
{
|
|
20825
|
+
agentKey: resolveDialogRuntimeAgentKey(dialog),
|
|
20826
|
+
userInput: query,
|
|
20827
|
+
...selectCurrentSpaceId(state) ? { spaceId: selectCurrentSpaceId(state) } : {}
|
|
20828
|
+
},
|
|
20829
|
+
{ withAuth: true }
|
|
20830
|
+
);
|
|
20831
|
+
const selectedItems = Array.isArray(result?.selectedItems) ? result.selectedItems : [];
|
|
20832
|
+
const displayData = selectedItems.length ? selectedItems.map((item) => String(item?.content ?? "").trim()).filter(Boolean).join("\n") : "\u6CA1\u6709\u627E\u5230\u76F8\u5173\u957F\u671F\u8BB0\u5FC6\u3002";
|
|
20833
|
+
return { rawData: result, displayData };
|
|
20834
|
+
}
|
|
20835
|
+
|
|
20678
20836
|
// packages/ai/tools/execShellTool.ts
|
|
20679
20837
|
var execShellFunctionSchema = {
|
|
20680
20838
|
name: "execShell",
|
|
@@ -21275,7 +21433,7 @@ var callAgentFunctionSchema = {
|
|
|
21275
21433
|
properties: {
|
|
21276
21434
|
agentKey: {
|
|
21277
21435
|
type: "string",
|
|
21278
|
-
description: "\u8981\u8C03\u7528\u7684 Agent \u7684\
|
|
21436
|
+
description: "\u8981\u8C03\u7528\u7684 Agent \u7684\u53EF\u8FD0\u884C dbKey\uFF0C\u5FC5\u987B\u662F listAgents \u8FD4\u56DE\u7684 agentKey \u5B57\u6BB5\uFF08owned: agent-<userId>-<id>\uFF1Bpublic: agent-pub-<id>\uFF09\u6216 readAgent \u8FD4\u56DE\u7684 agentKey\u3002\u53EA\u63A5\u53D7\u7CBE\u786E dbKey\uFF0C\u4E0D\u63A5\u53D7 name/handle/bare id\u3002"
|
|
21279
21437
|
},
|
|
21280
21438
|
task: {
|
|
21281
21439
|
type: "string",
|
|
@@ -21911,117 +22069,6 @@ async function runLlmToolFunc(args, thunkApi, _context) {
|
|
|
21911
22069
|
}
|
|
21912
22070
|
}
|
|
21913
22071
|
|
|
21914
|
-
// packages/ai/tools/agent/agentRunDisplayHelpers.ts
|
|
21915
|
-
function getAgentRunStatusIcon(status) {
|
|
21916
|
-
switch (status) {
|
|
21917
|
-
case "running":
|
|
21918
|
-
case "pending":
|
|
21919
|
-
return "\u23F3";
|
|
21920
|
-
case "done":
|
|
21921
|
-
return "\u2713";
|
|
21922
|
-
case "failed":
|
|
21923
|
-
case "timeout":
|
|
21924
|
-
return "\u2717";
|
|
21925
|
-
case "killed":
|
|
21926
|
-
case "cancelled":
|
|
21927
|
-
case "cancelling":
|
|
21928
|
-
return "\u{1F6D1}";
|
|
21929
|
-
case "not_found":
|
|
21930
|
-
default:
|
|
21931
|
-
return "?";
|
|
21932
|
-
}
|
|
21933
|
-
}
|
|
21934
|
-
var DEFAULT_LABELS = {
|
|
21935
|
-
runStatus: "Run status",
|
|
21936
|
-
runStarted: "Run started",
|
|
21937
|
-
runStopped: "Run stopped",
|
|
21938
|
-
logTail: "Log tail:",
|
|
21939
|
-
runs: (count) => `Runs (${count})`
|
|
21940
|
-
};
|
|
21941
|
-
function resolveLabels(labels) {
|
|
21942
|
-
return {
|
|
21943
|
-
runStatus: labels?.runStatus ?? DEFAULT_LABELS.runStatus,
|
|
21944
|
-
runStarted: labels?.runStarted ?? DEFAULT_LABELS.runStarted,
|
|
21945
|
-
runStopped: labels?.runStopped ?? DEFAULT_LABELS.runStopped,
|
|
21946
|
-
logTail: labels?.logTail ?? DEFAULT_LABELS.logTail,
|
|
21947
|
-
runs: labels?.runs ?? DEFAULT_LABELS.runs
|
|
21948
|
-
};
|
|
21949
|
-
}
|
|
21950
|
-
function isAgentNameFallback(agentName) {
|
|
21951
|
-
const trimmed = typeof agentName === "string" ? agentName.trim() : "";
|
|
21952
|
-
return !trimmed || trimmed === "agent";
|
|
21953
|
-
}
|
|
21954
|
-
function formatStartRunCard(agentName, status = "running", labels) {
|
|
21955
|
-
const L = resolveLabels(labels);
|
|
21956
|
-
const icon = getAgentRunStatusIcon(status);
|
|
21957
|
-
const lines = [L.runStarted];
|
|
21958
|
-
if (!isAgentNameFallback(agentName)) {
|
|
21959
|
-
lines.push(` agent ${agentName}`);
|
|
21960
|
-
}
|
|
21961
|
-
lines.push(` status ${icon} ${status}`);
|
|
21962
|
-
return lines.join("\n");
|
|
21963
|
-
}
|
|
21964
|
-
function formatStatusRunCard(agentName, status = "running", opts) {
|
|
21965
|
-
const L = resolveLabels(opts?.labels);
|
|
21966
|
-
const icon = getAgentRunStatusIcon(status);
|
|
21967
|
-
const lines = [L.runStatus, ` ${icon} ${status}`];
|
|
21968
|
-
if (!isAgentNameFallback(agentName)) {
|
|
21969
|
-
lines.push(` agent ${agentName}`);
|
|
21970
|
-
}
|
|
21971
|
-
if (opts?.pollCount !== void 0 && opts.pollCount > 0) {
|
|
21972
|
-
lines.push(` polls ${opts.pollCount}`);
|
|
21973
|
-
}
|
|
21974
|
-
if (typeof opts?.elapsedMs === "number" && Number.isFinite(opts.elapsedMs)) {
|
|
21975
|
-
lines.push(` last ${Math.round(opts.elapsedMs)}ms`);
|
|
21976
|
-
}
|
|
21977
|
-
if (opts?.lastToolNames && opts.lastToolNames.length > 0) {
|
|
21978
|
-
lines.push(` lastTools ${opts.lastToolNames.join(", ")}`);
|
|
21979
|
-
}
|
|
21980
|
-
if (opts?.toolCallCount !== void 0) {
|
|
21981
|
-
lines.push(` toolCalls ${opts.toolCallCount}`);
|
|
21982
|
-
}
|
|
21983
|
-
if (opts?.errorMessage?.trim()) {
|
|
21984
|
-
lines.push(` error ${opts.errorMessage.trim()}`);
|
|
21985
|
-
}
|
|
21986
|
-
const includeLog = opts?.includeLogTail !== false;
|
|
21987
|
-
if (includeLog && opts?.logLines && opts.logLines.length > 0) {
|
|
21988
|
-
lines.push("", L.logTail, ...opts.logLines.map((l) => ` ${l}`));
|
|
21989
|
-
}
|
|
21990
|
-
return lines.join("\n");
|
|
21991
|
-
}
|
|
21992
|
-
function formatStopRunCard(status = "killed", labels) {
|
|
21993
|
-
const L = resolveLabels(labels);
|
|
21994
|
-
const icon = getAgentRunStatusIcon(status);
|
|
21995
|
-
return `${L.runStopped}
|
|
21996
|
-
${icon} ${status}`;
|
|
21997
|
-
}
|
|
21998
|
-
function formatListRunsCard(runs, labels) {
|
|
21999
|
-
const L = resolveLabels(labels);
|
|
22000
|
-
const lines = [L.runs(runs.length)];
|
|
22001
|
-
for (const run of runs) {
|
|
22002
|
-
const status = run.status ?? "\u2014";
|
|
22003
|
-
const icon = getAgentRunStatusIcon(status);
|
|
22004
|
-
const name = run.agentName || run.name || "agent";
|
|
22005
|
-
lines.push(` ${icon} ${name}`);
|
|
22006
|
-
}
|
|
22007
|
-
return lines.join("\n");
|
|
22008
|
-
}
|
|
22009
|
-
function formatNotFoundRunCard(labels) {
|
|
22010
|
-
const L = resolveLabels(labels);
|
|
22011
|
-
return `${L.runStatus}
|
|
22012
|
-
? not_found`;
|
|
22013
|
-
}
|
|
22014
|
-
var AGENT_RUN_TERMINAL_STATUSES = /* @__PURE__ */ new Set([
|
|
22015
|
-
"done",
|
|
22016
|
-
"failed",
|
|
22017
|
-
"timeout",
|
|
22018
|
-
"killed",
|
|
22019
|
-
"cancelled"
|
|
22020
|
-
]);
|
|
22021
|
-
function isAgentRunTerminalStatus(status) {
|
|
22022
|
-
return typeof status === "string" && AGENT_RUN_TERMINAL_STATUSES.has(status);
|
|
22023
|
-
}
|
|
22024
|
-
|
|
22025
22072
|
// packages/ai/tools/agent/startAgentRunTool.ts
|
|
22026
22073
|
var startAgentRunFunctionSchema = {
|
|
22027
22074
|
name: "startAgentRun",
|
|
@@ -22031,7 +22078,7 @@ var startAgentRunFunctionSchema = {
|
|
|
22031
22078
|
properties: {
|
|
22032
22079
|
agentKey: {
|
|
22033
22080
|
type: "string",
|
|
22034
|
-
description: "\u8981\u542F\u52A8\u7684 Agent \u7684\u53EF\u8FD0\u884C dbKey\
|
|
22081
|
+
description: "\u8981\u542F\u52A8\u7684 Agent \u7684\u53EF\u8FD0\u884C dbKey\uFF0C\u5FC5\u987B\u662F listAgents \u8FD4\u56DE\u7684 agentKey \u5B57\u6BB5\uFF08owned: agent-<userId>-<id>\uFF1Bpublic: agent-pub-<id>\uFF09\u6216 readAgent \u8FD4\u56DE\u7684 agentKey\u3002\u53EA\u63A5\u53D7\u7CBE\u786E dbKey\uFF0C\u4E0D\u63A5\u53D7 name/handle/bare id\u3002"
|
|
22035
22082
|
},
|
|
22036
22083
|
task: {
|
|
22037
22084
|
type: "string",
|
|
@@ -22047,14 +22094,23 @@ var startAgentRunFunctionSchema = {
|
|
|
22047
22094
|
ephemeral: {
|
|
22048
22095
|
type: "boolean",
|
|
22049
22096
|
description: "\u53EF\u9009\u3002\u4E3A true \u65F6\u672C\u6B21 run \u4E0D\u6301\u4E45\u5316 dialog\uFF08\u4E0D\u7559\u8BB0\u5F55\uFF09\u3002\u7528\u4E8E\u4E00\u6B21\u6027\u5BA1\u67E5\uFF08review\uFF09\u7B49\u4E0D\u9700\u7559\u75D5\u7684\u573A\u666F\u3002\u9ED8\u8BA4 false\u3002"
|
|
22097
|
+
},
|
|
22098
|
+
batchId: {
|
|
22099
|
+
type: "string",
|
|
22100
|
+
description: "\u53EF\u9009\u3002\u6279\u6B21 id\uFF0C\u7528\u4E8E\u628A\u591A\u4E2A\u5E76\u884C run \u5F52\u4E3A\u4E00\u7EC4\uFF0C\u4FBF\u4E8E\u540E\u7EED controlAgentRun(list, batchId=...) \u6309\u6279\u67E5\u8BE2\u3002\u672A\u4F20\u65F6\u81EA\u52A8\u751F\u6210\u4E00\u4E2A\u5E76\u5728\u8FD4\u56DE\u503C\u4E2D\u5E26\u56DE\uFF0C\u8C03\u7528\u65B9\u65E0\u9700\u5148\u521B\u5EFA\u3002"
|
|
22101
|
+
},
|
|
22102
|
+
trackTodo: {
|
|
22103
|
+
type: "boolean",
|
|
22104
|
+
description: '\u53EF\u9009\u3002\u4E3A true \u65F6\u672C\u6B21 run \u4F1A\u88AB\u8BB0\u5F55\u8FDB runtime todo\uFF08~/.nolo/todos.json\uFF09\u3002\u4F20\u4E86 batchId \u65F6\u9ED8\u8BA4\u5373\u8BB0\u5F55\uFF08\u6BCF\u6279\u5BF9\u5E94\u4E00\u9879 todo\uFF09\u3002todo \u72B6\u6001\u7531\u5173\u8054 run \u72B6\u6001 + review \u7ED3\u8BBA\u63A8\u5BFC\uFF0C\u7528 controlAgentRun(action:"todo") \u67E5\u8BE2\u3002'
|
|
22050
22105
|
}
|
|
22051
22106
|
},
|
|
22052
22107
|
required: ["agentKey", "task"]
|
|
22053
22108
|
}
|
|
22054
22109
|
};
|
|
22055
22110
|
async function startAgentRunFunc(args, thunkApi, _context) {
|
|
22056
|
-
const { agentKey, task, input, agentName, ephemeral } = args;
|
|
22111
|
+
const { agentKey, task, input, agentName, ephemeral, batchId } = args;
|
|
22057
22112
|
const { dispatch } = thunkApi;
|
|
22113
|
+
const effectiveBatchId = typeof batchId === "string" && batchId.trim() ? batchId.trim() : `batch-${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}-${Math.random().toString(36).slice(2, 8)}`;
|
|
22058
22114
|
if (!agentKey) {
|
|
22059
22115
|
throw new Error("startAgentRun: \u7F3A\u5C11 agentKey \u53C2\u6570\u3002");
|
|
22060
22116
|
}
|
|
@@ -22076,14 +22132,26 @@ async function startAgentRunFunc(args, thunkApi, _context) {
|
|
|
22076
22132
|
).unwrap();
|
|
22077
22133
|
const runId = bgResult.dialogId;
|
|
22078
22134
|
const status = bgResult.status ?? "pending";
|
|
22079
|
-
const
|
|
22135
|
+
const resolvedName = agentName?.trim() || bgResult.agentName || bgResult.name;
|
|
22136
|
+
const identity = { agentName: resolvedName, agentKey, runId };
|
|
22137
|
+
const taskPreview = task.replace(/\s+/g, " ").trim().slice(0, TASK_PREVIEW_MAX);
|
|
22080
22138
|
return {
|
|
22081
22139
|
rawData: {
|
|
22082
22140
|
runId,
|
|
22083
22141
|
status,
|
|
22084
|
-
|
|
22085
|
-
|
|
22086
|
-
|
|
22142
|
+
agentKey,
|
|
22143
|
+
// batchId is always returned — minted above when the caller didn't
|
|
22144
|
+
// supply one — so controlAgentRun(list, batchId=...) works on every
|
|
22145
|
+
// host. On the server path the id lives in the tool return; on the
|
|
22146
|
+
// CLI local path it is also persisted on the run record.
|
|
22147
|
+
batchId: effectiveBatchId,
|
|
22148
|
+
...resolvedName ? { agentName: resolvedName } : {},
|
|
22149
|
+
...taskPreview ? { taskPreview } : {}
|
|
22150
|
+
},
|
|
22151
|
+
displayData: formatStartRunCard(resolveRunLabel(identity), status, {
|
|
22152
|
+
task: taskPreview,
|
|
22153
|
+
runId
|
|
22154
|
+
})
|
|
22087
22155
|
};
|
|
22088
22156
|
} catch (e) {
|
|
22089
22157
|
throw new Error(`startAgentRun \u542F\u52A8 Agent [${agentKey}] \u5931\u8D25: ${toErrorMessage(e)}`);
|
|
@@ -22093,14 +22161,14 @@ async function startAgentRunFunc(args, thunkApi, _context) {
|
|
|
22093
22161
|
// packages/ai/tools/agent/controlAgentRunTool.ts
|
|
22094
22162
|
var controlAgentRunFunctionSchema = {
|
|
22095
22163
|
name: "controlAgentRun",
|
|
22096
|
-
description: "\u89C2\u5BDF\u548C\u63A7\u5236\u540E\u53F0 agent run\u3002\u4E00\u4E2A\u5DE5\u5177\u4E09\u4E2A action\uFF1Alist\uFF08\u5217\u51FA
|
|
22164
|
+
description: "\u89C2\u5BDF\u548C\u63A7\u5236\u540E\u53F0 agent run\u3002\u4E00\u4E2A\u5DE5\u5177\u4E09\u4E2A action\uFF1Alist\uFF08\u5217\u51FA run\uFF0C\u652F\u6301\u6309\u6279\u6B21/\u72B6\u6001\u8FC7\u6EE4\u4E0E\u5206\u9875\uFF09\u3001status\uFF08\u67E5\u5355\u6761 + \u53EF\u9009\u65E5\u5FD7\uFF09\u3001stop\uFF08\u53D6\u6D88 run\uFF09\u3002\u76F8\u5F53\u4E8E Unix \u7684 wait + signal + /proc\u3002\u7528 startAgentRun \u62FF\u5230 runId \u540E\uFF0C\u7528\u672C\u5DE5\u5177\u8DDF\u8FDB\u5EA6\u6216\u53EB\u505C\u3002list \u9ED8\u8BA4\u53EA\u8FD4\u56DE\u6700\u8FD1 20 \u6761\uFF0C\u907F\u514D\u5168\u91CF\u51B2\u7206\u4E0A\u4E0B\u6587\uFF1B\u7528 status/batchId/limit/offset \u53D6\u6240\u9700\u5206\u9875\u3002\u6CE8\u610F\uFF1A\u7528\u6237\u754C\u9762\u5DF2\u7ECF\u5728\u72EC\u7ACB\u5B9E\u65F6\u663E\u793A\u6BCF\u6761 run \u7684\u72B6\u6001\uFF0C\u672C\u5DE5\u5177\u662F\u7ED9\u4F60\u81EA\u5DF1\u505A\u51B3\u7B56\u7528\u7684\uFF0C\u4E0D\u662F\u7528\u6765\u7ED9\u7528\u6237\u6C47\u62A5\u8FDB\u5EA6\u7684\u2014\u2014\u4E0D\u5FC5\u4E3A\u4E86\u300C\u8BA9\u7528\u6237\u770B\u5230\u72B6\u6001\u300D\u800C\u8F6E\u8BE2\uFF0C\u4E5F\u4E0D\u8981\u628A\u8FD4\u56DE\u503C\u590D\u8FF0\u7ED9\u7528\u6237\u3002",
|
|
22097
22165
|
parameters: {
|
|
22098
22166
|
type: "object",
|
|
22099
22167
|
properties: {
|
|
22100
22168
|
action: {
|
|
22101
22169
|
type: "string",
|
|
22102
|
-
enum: ["list", "status", "stop"],
|
|
22103
|
-
description: "\u8981\u6267\u884C\u7684\u64CD\u4F5C\uFF1Alist=\u5217\u51FA
|
|
22170
|
+
enum: ["list", "status", "stop", "todo"],
|
|
22171
|
+
description: "\u8981\u6267\u884C\u7684\u64CD\u4F5C\uFF1Alist=\u5217\u51FA run\uFF08\u7701\u7565 runId\uFF09\uFF1Bstatus=\u67E5\u5355\u6761 run \u72B6\u6001 + \u53EF\u9009\u65E5\u5FD7\uFF1Bstop=\u53D6\u6D88 run\uFF1Btodo=\u5217\u51FA runtime todo\uFF08\u7531 startAgentRun \u7684 batchId/trackTodo \u4EA7\u751F\uFF0C\u72B6\u6001\u7531\u5173\u8054 run \u63A8\u5BFC\uFF09\u3002"
|
|
22104
22172
|
},
|
|
22105
22173
|
runId: {
|
|
22106
22174
|
type: "string",
|
|
@@ -22108,26 +22176,41 @@ var controlAgentRunFunctionSchema = {
|
|
|
22108
22176
|
},
|
|
22109
22177
|
tailLines: {
|
|
22110
22178
|
type: "number",
|
|
22111
|
-
description: "\u53EF\u9009\u3002action=status \u65F6\uFF1A0=\u53EA\u8FD4\u56DE\u72B6\u6001\u6458\u8981\uFF0C>0=\u540C\u65F6\u8FD4\u56DE\u6700\u8FD1 N \u884C\u65E5\u5FD7\uFF08\u9ED8\u8BA4 0\uFF09\u3002",
|
|
22179
|
+
description: "\u53EF\u9009\u3002action=status \u65F6\uFF1A0=\u53EA\u8FD4\u56DE\u72B6\u6001\u6458\u8981\uFF0C>0=\u540C\u65F6\u8FD4\u56DE\u6700\u8FD1 N \u884C\u65E5\u5FD7\uFF08\u9ED8\u8BA4 0\uFF09\u3002\u672C\u5730 run \u7684\u72B6\u6001\u6458\u8981\u91CC\u5E26 progress\uFF08toolCalls/llmCalls/fileEdits\u3001inFlight=\u6B64\u523B\u5728\u6267\u884C\u4EC0\u4E48\u3001idleMs=\u8DDD\u4E0A\u6B21\u4E8B\u4EF6\u591A\u4E45\uFF09\uFF0C\u8DB3\u4EE5\u5224\u65AD\u300C\u5728\u5E72\u6D3B\u300D\u8FD8\u662F\u300C\u5361\u4F4F\u4E86\u300D\u2014\u2014\u5148\u770B\u5B83\uFF0C\u53EA\u6709\u786E\u5B9E\u53EF\u7591\u6216\u5DF2\u5931\u8D25\u65F6\u624D tailLines>0 \u62C9\u65E5\u5FD7\u3002",
|
|
22112
22180
|
default: 0
|
|
22113
22181
|
},
|
|
22182
|
+
batchId: {
|
|
22183
|
+
type: "string",
|
|
22184
|
+
description: "\u53EF\u9009\u3002action=list \u65F6\u53EA\u8FD4\u56DE\u8BE5\u6279\u6B21\u7684 run\uFF08startAgentRun \u8FD4\u56DE\u503C\u6216\u5165\u53C2\u4E2D\u7684 batchId\uFF09\u3002"
|
|
22185
|
+
},
|
|
22186
|
+
status: {
|
|
22187
|
+
type: "string",
|
|
22188
|
+
description: "\u53EF\u9009\u3002action=list \u65F6\u6309\u72B6\u6001\u8FC7\u6EE4\uFF0C\u652F\u6301\u5355\u503C\u6216\u9017\u53F7\u5206\u9694\u591A\u503C\uFF08\u5982 'running,orphaned'\uFF09\u3002\u4E0E statusFilter \u540C\u4E49\uFF0Cstatus \u4F18\u5148\uFF1B\u53D6\u503C\u5305\u542B orphaned\uFF08pid \u5DF2\u6B7B\u4F46\u8BB0\u5F55\u4ECD running \u7684\u5B64\u513F run\uFF09\u3002\u9ED8\u8BA4 all\uFF08\u4E0D\u8FC7\u6EE4\uFF09\u3002"
|
|
22189
|
+
},
|
|
22114
22190
|
statusFilter: {
|
|
22115
22191
|
type: "string",
|
|
22116
|
-
enum: ["running", "done", "failed", "cancelled", "all"],
|
|
22117
|
-
description: "\u53EF\u9009\u3002action=list \u65F6\u6309\u72B6\u6001\u8FC7\u6EE4\uFF0C\u9ED8\u8BA4 all\u3002"
|
|
22192
|
+
enum: ["running", "done", "failed", "cancelled", "orphaned", "all"],
|
|
22193
|
+
description: "\u53EF\u9009\u3002action=list \u65F6\u6309\u72B6\u6001\u8FC7\u6EE4\uFF0C\u9ED8\u8BA4 all\u3002\u4E0E status \u540C\u4E49\uFF08status \u4F18\u5148\uFF0C\u4E14 status \u652F\u6301\u591A\u503C\uFF09\u3002"
|
|
22118
22194
|
},
|
|
22119
22195
|
limit: {
|
|
22120
22196
|
type: "number",
|
|
22121
|
-
description: "\u53EF\u9009\u3002action=list \u65F6\u9650\u5236\u8FD4\u56DE\u6570\u91CF\uFF0C\u9ED8\u8BA4 20\u3002"
|
|
22197
|
+
description: "\u53EF\u9009\u3002action=list \u65F6\u9650\u5236\u8FD4\u56DE\u6570\u91CF\uFF0C\u9ED8\u8BA4 20\uFF0C\u4E0A\u9650 200\u3002\u4E0D\u5E26\u4EFB\u4F55\u53C2\u6570\u4E0D\u4F1A\u8FD4\u56DE\u5168\u91CF\u3002"
|
|
22198
|
+
},
|
|
22199
|
+
offset: {
|
|
22200
|
+
type: "number",
|
|
22201
|
+
description: "\u53EF\u9009\u3002action=list \u65F6\u8DF3\u8FC7\u524D N \u6761\uFF0C\u914D\u5408 limit \u7FFB\u9875\u3002\u9ED8\u8BA4 0\u3002"
|
|
22122
22202
|
}
|
|
22123
22203
|
},
|
|
22124
22204
|
required: ["action"]
|
|
22125
22205
|
}
|
|
22126
22206
|
};
|
|
22127
22207
|
async function controlAgentRunFunc(args, thunkApi, _context) {
|
|
22128
|
-
const { action, runId, tailLines, statusFilter, limit } = args;
|
|
22208
|
+
const { action, runId, tailLines, batchId, status, statusFilter, limit, offset } = args;
|
|
22129
22209
|
if (action === "list") {
|
|
22130
|
-
return handleList(thunkApi, { statusFilter, limit });
|
|
22210
|
+
return handleList(thunkApi, { batchId, status, statusFilter, limit, offset });
|
|
22211
|
+
}
|
|
22212
|
+
if (action === "todo") {
|
|
22213
|
+
return handleTodo(thunkApi, { status });
|
|
22131
22214
|
}
|
|
22132
22215
|
if (action === "status") {
|
|
22133
22216
|
if (!runId) throw new Error('controlAgentRun(action:"status"): \u7F3A\u5C11 runId\u3002');
|
|
@@ -22142,8 +22225,11 @@ async function controlAgentRunFunc(args, thunkApi, _context) {
|
|
|
22142
22225
|
async function handleList(thunkApi, opts) {
|
|
22143
22226
|
try {
|
|
22144
22227
|
const body = { action: "list" };
|
|
22145
|
-
|
|
22228
|
+
const statusVal = opts.status ?? opts.statusFilter;
|
|
22229
|
+
if (statusVal) body.statusFilter = statusVal;
|
|
22230
|
+
if (opts.batchId) body.batchId = opts.batchId;
|
|
22146
22231
|
if (opts.limit !== void 0) body.limit = opts.limit;
|
|
22232
|
+
if (opts.offset !== void 0) body.offset = opts.offset;
|
|
22147
22233
|
const data = await callToolApi(
|
|
22148
22234
|
thunkApi,
|
|
22149
22235
|
"/api/agent/runs/control",
|
|
@@ -22152,9 +22238,10 @@ async function handleList(thunkApi, opts) {
|
|
|
22152
22238
|
);
|
|
22153
22239
|
const resData = data?.data ?? data;
|
|
22154
22240
|
const runs = resData?.runs ?? [];
|
|
22155
|
-
const
|
|
22241
|
+
const total = typeof resData?.total === "number" ? resData.total : runs.length;
|
|
22242
|
+
const hasMore = typeof resData?.hasMore === "boolean" ? resData.hasMore : false;
|
|
22156
22243
|
return {
|
|
22157
|
-
rawData: { runs, count },
|
|
22244
|
+
rawData: { runs, count: runs.length, total, hasMore },
|
|
22158
22245
|
displayData: formatListRunsCard(runs)
|
|
22159
22246
|
};
|
|
22160
22247
|
} catch (e) {
|
|
@@ -22179,13 +22266,16 @@ async function handleStatus(thunkApi, opts) {
|
|
|
22179
22266
|
}
|
|
22180
22267
|
const run = resData.run;
|
|
22181
22268
|
const logLines = resData.logLines;
|
|
22182
|
-
const name = run
|
|
22269
|
+
const name = resolveRunLabel(run);
|
|
22183
22270
|
return {
|
|
22184
22271
|
rawData: { found: true, ...run, ...logLines ? { logLines } : {} },
|
|
22185
22272
|
displayData: formatStatusRunCard(name, run.status, {
|
|
22273
|
+
runId: opts.runId,
|
|
22186
22274
|
lastToolNames: run.lastToolNames,
|
|
22187
22275
|
toolCallCount: run.toolCallCount,
|
|
22276
|
+
lastAssistantText: run.lastAssistantText,
|
|
22188
22277
|
errorMessage: run.errorMessage,
|
|
22278
|
+
timing: { startedAt: run.startedAt, finishedAt: run.finishedAt },
|
|
22189
22279
|
logLines
|
|
22190
22280
|
})
|
|
22191
22281
|
};
|
|
@@ -22211,6 +22301,28 @@ async function handleStop(thunkApi, opts) {
|
|
|
22211
22301
|
throw new Error(`controlAgentRun(stop) \u5931\u8D25: ${toErrorMessage(e)}`);
|
|
22212
22302
|
}
|
|
22213
22303
|
}
|
|
22304
|
+
async function handleTodo(thunkApi, opts) {
|
|
22305
|
+
try {
|
|
22306
|
+
const body = { action: "todo" };
|
|
22307
|
+
if (opts.status) body.status = opts.status;
|
|
22308
|
+
const data = await callToolApi(
|
|
22309
|
+
thunkApi,
|
|
22310
|
+
"/api/agent/runs/control",
|
|
22311
|
+
body,
|
|
22312
|
+
{ withAuth: true }
|
|
22313
|
+
);
|
|
22314
|
+
const resData = data?.data ?? data;
|
|
22315
|
+
const todos = resData?.todos ?? [];
|
|
22316
|
+
return {
|
|
22317
|
+
rawData: { todos, count: todos.length },
|
|
22318
|
+
displayData: formatListRunsCard(
|
|
22319
|
+
todos.map((t) => ({ agentName: t?.title ?? t?.id, status: t?.status }))
|
|
22320
|
+
)
|
|
22321
|
+
};
|
|
22322
|
+
} catch (e) {
|
|
22323
|
+
throw new Error(`controlAgentRun(todo) \u5931\u8D25: ${toErrorMessage(e)}`);
|
|
22324
|
+
}
|
|
22325
|
+
}
|
|
22214
22326
|
|
|
22215
22327
|
// packages/ai/tools/agent/agentTools.ts
|
|
22216
22328
|
var agentToolDefinitions = [
|
|
@@ -23404,7 +23516,7 @@ var executeToolRun = createAsyncThunk(
|
|
|
23404
23516
|
if (!executionInput) {
|
|
23405
23517
|
throw new Error(`ToolRun ${id} has no input to execute with.`);
|
|
23406
23518
|
}
|
|
23407
|
-
const { findToolExecutor: findToolExecutor2 } = await import("./tools-
|
|
23519
|
+
const { findToolExecutor: findToolExecutor2 } = await import("./tools-RJVFXOLR.js");
|
|
23408
23520
|
const { executor } = findToolExecutor2(run.toolName);
|
|
23409
23521
|
toolRunStarted({
|
|
23410
23522
|
id: run.id,
|
|
@@ -23428,7 +23540,7 @@ var executeToolRun = createAsyncThunk(
|
|
|
23428
23540
|
const latestState = thunkApi.getState();
|
|
23429
23541
|
const userId = latestState.auth?.currentUser?.userId;
|
|
23430
23542
|
if (userId) {
|
|
23431
|
-
const { fetchUserSpaceMemberships } = await import("./spaceSlice-
|
|
23543
|
+
const { fetchUserSpaceMemberships } = await import("./spaceSlice-M4PVN5PO.js");
|
|
23432
23544
|
await thunkApi.dispatch(fetchUserSpaceMemberships(userId));
|
|
23433
23545
|
}
|
|
23434
23546
|
}
|
|
@@ -25911,7 +26023,7 @@ async function updateDocFunc(args, thunkApi) {
|
|
|
25911
26023
|
updated_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
25912
26024
|
};
|
|
25913
26025
|
await dispatch(write({ data: updatedPageData, customKey: id })).unwrap();
|
|
25914
|
-
const { getDocState, applyExternalDocUpdate } = await import("./docStore-
|
|
26026
|
+
const { getDocState, applyExternalDocUpdate } = await import("./docStore-LJXXRB5W.js");
|
|
25915
26027
|
if (getDocState().pageKey === id) {
|
|
25916
26028
|
applyExternalDocUpdate({
|
|
25917
26029
|
slateData: finalSlateData,
|
|
@@ -25936,7 +26048,7 @@ async function updateDocFunc(args, thunkApi) {
|
|
|
25936
26048
|
// packages/ai/tools/updateUserPreferenceProfileTool.ts
|
|
25937
26049
|
async function dispatchSetSettings(thunkApi, changes) {
|
|
25938
26050
|
const injectedSetSettings = thunkApi?.extra?.setSettings;
|
|
25939
|
-
const setSettings = typeof injectedSetSettings === "function" ? injectedSetSettings : (await import("./settingSlice-
|
|
26051
|
+
const setSettings = typeof injectedSetSettings === "function" ? injectedSetSettings : (await import("./settingSlice-7MNKHZ6R.js")).setSettings;
|
|
25940
26052
|
await thunkApi.dispatch(setSettings(changes)).unwrap();
|
|
25941
26053
|
}
|
|
25942
26054
|
var updateUserPreferenceProfileFunctionSchema = {
|
|
@@ -26533,12 +26645,23 @@ var baseToolDefinitions = [
|
|
|
26533
26645
|
schema: uiAskChoiceFunctionSchema,
|
|
26534
26646
|
executor: uiAskChoiceFunc,
|
|
26535
26647
|
description: {
|
|
26536
|
-
name: "
|
|
26648
|
+
name: "ask_user",
|
|
26537
26649
|
description: "\u5411\u7528\u6237\u63D0\u51FA\u4E00\u4E2A\u5E26\u591A\u4E2A\u9009\u9879\u7684\u95EE\u9898\uFF0C\u8BA9\u754C\u9762\u5C55\u793A\u6309\u94AE\u4F9B\u7528\u6237\u9009\u62E9\u3002",
|
|
26538
26650
|
category: "\u4EA4\u4E92 / UI"
|
|
26539
26651
|
},
|
|
26540
26652
|
behavior: "answer"
|
|
26541
26653
|
},
|
|
26654
|
+
{
|
|
26655
|
+
id: "queryMemory",
|
|
26656
|
+
schema: queryMemoryFunctionSchema,
|
|
26657
|
+
executor: queryMemoryFunc,
|
|
26658
|
+
description: {
|
|
26659
|
+
name: "queryMemory",
|
|
26660
|
+
description: "\u6309\u9700\u67E5\u8BE2\u5F53\u524D\u7528\u6237\u3001Space \u548C\u52A9\u624B\u4E3B\u4F53\u7684\u957F\u671F\u8BB0\u5FC6\u3002",
|
|
26661
|
+
category: "\u8BB0\u5FC6 / \u957F\u671F\u4E0A\u4E0B\u6587"
|
|
26662
|
+
},
|
|
26663
|
+
behavior: "data"
|
|
26664
|
+
},
|
|
26542
26665
|
{
|
|
26543
26666
|
id: "rememberMemory",
|
|
26544
26667
|
schema: rememberMemoryFunctionSchema,
|
|
@@ -27353,7 +27476,7 @@ var baseToolDefinitions = [
|
|
|
27353
27476
|
executor: readAgentFunc,
|
|
27354
27477
|
description: {
|
|
27355
27478
|
name: "readAgent",
|
|
27356
|
-
description: "Read a Nolo agent config.",
|
|
27479
|
+
description: "Read a Nolo agent's full config and resolve its runnable agentKey.",
|
|
27357
27480
|
category: "Nolo workspace"
|
|
27358
27481
|
},
|
|
27359
27482
|
behavior: "data",
|
|
@@ -28177,12 +28300,6 @@ export {
|
|
|
28177
28300
|
readXPostFunc,
|
|
28178
28301
|
readXhsProfileFunctionSchema,
|
|
28179
28302
|
readXhsProfileFunc,
|
|
28180
|
-
formatStartRunCard,
|
|
28181
|
-
formatStatusRunCard,
|
|
28182
|
-
formatStopRunCard,
|
|
28183
|
-
formatListRunsCard,
|
|
28184
|
-
formatNotFoundRunCard,
|
|
28185
|
-
isAgentRunTerminalStatus,
|
|
28186
28303
|
TOOL_PACKS,
|
|
28187
28304
|
resolveEffectiveEnabledPacks,
|
|
28188
28305
|
addDefaultSystemCapabilityTools,
|