nolo-cli 0.82.0-alpha.5 → 0.82.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/{_executeModel-225YRU52.js → _executeModel-FHVQOYWX.js} +48 -48
- package/{action-D22U6CTH.js → action-YVYQEAAV.js} +11 -11
- package/{addContentAction-XAPUTGL4.js → addContentAction-O7R66HEX.js} +9 -9
- package/{addDialogAgentAction-M7VLLBZM.js → addDialogAgentAction-74OA7KYP.js} +8 -8
- package/{agentDeleteCommand-ZJNQGVR2.js → agentDeleteCommand-4427YKQF.js} +31 -29
- package/{agentEmailCommands-VLVWFWX2.js → agentEmailCommands-LYDIAUOP.js} +67 -63
- package/{agentGrantCommands-R3VQEZJR.js → agentGrantCommands-M3XFO6EN.js} +2 -2
- package/{agentListCommands-GHQGLAUU.js → agentListCommands-O4AEMQVV.js} +40 -32
- package/{agentMachineCommands-QDXYENZJ.js → agentMachineCommands-F6IHXMPD.js} +31 -29
- package/{agentProviderCommands-65ZC2WB4.js → agentProviderCommands-GNPTL5XR.js} +87 -0
- package/{agentPullCommand-N7L2CT7L.js → agentPullCommand-O5MPVJ5E.js} +3 -3
- package/agentRecordCommands-BDLFOU7E.js +128 -0
- package/{agentRunCommand-YSCD65HH.js → agentRunCommand-HSSYFGMC.js} +65 -61
- package/{agentRunControl-T44MESII.js → agentRunControl-WCTKX5VL.js} +2 -2
- package/{agentRuntimeLocal-ZOHB7OOO.js → agentRuntimeLocal-IW3IM5P6.js} +27 -25
- package/{agentSlice-O2SBU5TK.js → agentSlice-G54NT6PX.js} +10 -10
- package/{appDeleteCommands-PRT6K5N2.js → appDeleteCommands-ZXLXNRHF.js} +31 -29
- package/{appDeployCommands-63ZONFAN.js → appDeployCommands-PWB4YERK.js} +31 -29
- package/{appDeployStatusCommands-AFAYCVR3.js → appDeployStatusCommands-2EZKZP7Y.js} +31 -29
- package/{appGetCommands-TNZDZE36.js → appGetCommands-JNUKOWHO.js} +31 -29
- package/{appListCommands-IA4SPG2X.js → appListCommands-6X3H67SS.js} +31 -29
- package/{authCommand-EVGFLAHO.js → authCommand-F4EFRRX6.js} +164 -24
- package/{authCommands-ILTBI6JV.js → authCommands-RGOGCPP6.js} +4 -5
- package/builtinSkillRegistry-FUAVTRVZ.js +33 -0
- package/{chatQueueReduxAdapter-4SM3DAWX.js → chatQueueReduxAdapter-VJXYSZ2D.js} +24 -24
- package/{chromeCommands-VOIRNJBL.js → chromeCommands-FZYAU75D.js} +1 -1
- package/{chromeOpsCommands-M7DPCX2T.js → chromeOpsCommands-62P2Q2YB.js} +31 -1
- package/{chunk-C3FZR5EC.js → chunk-2F7RJC6L.js} +1 -1
- package/{chunk-QC5LGHYP.js → chunk-2YMRWISD.js} +10 -5
- package/{chunk-HQUORJTM.js → chunk-3BMYXEUW.js} +1 -1
- package/{chunk-3QPYFHAH.js → chunk-3DII57IT.js} +1 -1
- package/{chunk-NTW5GWDM.js → chunk-3VNWWVKB.js} +2 -0
- package/{chunk-DWUCB2A3.js → chunk-42V6BK2E.js} +1 -1
- package/{chunk-KIS76A2P.js → chunk-4EZHSKTB.js} +38 -4
- package/{chunk-GBPZKFYK.js → chunk-53HEEOTT.js} +4 -4
- package/{chunk-5XTOKQLW.js → chunk-5UTFL4QJ.js} +6 -2
- package/chunk-5ZUL4CUO.js +10 -0
- package/{chunk-E6RGHPDR.js → chunk-6D6VBVEW.js} +4 -6
- package/{chunk-CMH2SYHX.js → chunk-6OZ36FXI.js} +2 -2
- package/{chunk-NRALD3CC.js → chunk-76WEAXJB.js} +49 -10
- package/{chunk-3W2JJOH3.js → chunk-7REEVK4I.js} +3 -3
- package/{chunk-BYEJ7K2Z.js → chunk-7S4YWN7P.js} +1 -1
- package/{chunk-SREASRV5.js → chunk-ABQYVJBJ.js} +1 -1
- package/chunk-ACTMNVHM.js +93 -0
- package/{chunk-XWNRAIUL.js → chunk-AFUORTY4.js} +6 -16
- package/{chunk-E36HZARC.js → chunk-ASQYTZTR.js} +46 -9
- package/{chunk-73IOJLK2.js → chunk-AVV3M6CX.js} +10 -10
- package/{chunk-WL2RKIBF.js → chunk-BLJWCTRL.js} +1 -1
- package/chunk-BNGW5ASC.js +344 -0
- package/{chunk-SZLVDREM.js → chunk-BP4XNZRM.js} +3 -3
- package/{chunk-2KDR4CWE.js → chunk-BYMV6QZG.js} +24 -1
- package/{chunk-MYU3MJCF.js → chunk-DHDMC6FO.js} +175 -7
- package/{chunk-FP27MNSX.js → chunk-DL2LVM5E.js} +3 -3
- package/{chunk-EXMHJN7C.js → chunk-EYAQT56M.js} +4 -3
- package/{chunk-5LSS6MFZ.js → chunk-F5OE5KSJ.js} +13 -15
- package/{chunk-CJCJF5XB.js → chunk-FDTR4QJ6.js} +4 -2
- package/{chunk-NJ6WLAPS.js → chunk-FEEHCOBD.js} +1 -1
- package/{chunk-YSKEOTPH.js → chunk-GGMVRZRO.js} +155 -795
- package/{chunk-PYXL2CJL.js → chunk-GPCZ7UXG.js} +1 -1
- package/{chunk-K7AG465Q.js → chunk-GQBOR3G6.js} +4 -2
- package/{chunk-YFADVSZE.js → chunk-H62HCIUP.js} +6 -6
- package/{chunk-PZM3EENV.js → chunk-HJUYAD4A.js} +1 -1
- package/{chunk-A3NNC2LA.js → chunk-HOBJGHLD.js} +1235 -59
- package/{chunk-3JQ2NRYU.js → chunk-HVURBGF3.js} +4 -4
- package/{chunk-6SD5OPQ4.js → chunk-IIBAPOTQ.js} +11 -173
- package/{chunk-ZVN6I33J.js → chunk-IIVGDG4I.js} +6 -5
- package/{chunk-UDQWGU7F.js → chunk-J4MOO56S.js} +1 -1
- package/{chunk-KC5FAHVS.js → chunk-JEDZAO7L.js} +1 -1
- package/{chunk-6XIE5ZGI.js → chunk-JPGCXHNM.js} +1 -1
- package/chunk-JRQFUXY7.js +1625 -0
- package/chunk-KQ4ONNQD.js +677 -0
- package/{chunk-CPSZJBLK.js → chunk-L7I247DF.js} +105 -26
- package/{chunk-RXX4GDIH.js → chunk-LS2ZANRJ.js} +1 -1
- package/{chunk-BJIRLHJR.js → chunk-M2EJHDJP.js} +4 -0
- package/{chunk-EVBFYPDC.js → chunk-MC4XLIJ7.js} +6 -2
- package/{chunk-DSRXPQWA.js → chunk-NEDZDG3M.js} +43 -43
- package/{chunk-UJ63UXGE.js → chunk-OIVSQH2O.js} +1006 -801
- package/{chunk-AETZ7AD6.js → chunk-Q554LLSI.js} +1 -1
- package/chunk-Q5FJJ6XI.js +103 -0
- package/{chunk-AJHEFRGJ.js → chunk-Q67DOFOO.js} +214 -5
- package/{chunk-UZ6XXCVR.js → chunk-QDSINZM3.js} +15 -2
- package/{chunk-D6XYLSOS.js → chunk-QIAVMDHY.js} +1 -1
- package/{chunk-YWG6EMH3.js → chunk-RG6JBBX5.js} +10 -6
- package/{chunk-YXLXHIT2.js → chunk-RTUYRRBM.js} +6 -6
- package/{chunk-HHLTFENG.js → chunk-SDTTBMBU.js} +907 -317
- package/{chunk-QCZX4FTW.js → chunk-SH43IESU.js} +173 -15
- package/{chunk-LSZXYE64.js → chunk-SL4QHSPQ.js} +756 -80
- package/{chunk-FNGAF7C4.js → chunk-SNPMM7H3.js} +137 -12
- package/{chunk-EM6MPSEI.js → chunk-SPUTJ4DW.js} +52 -30
- package/{chunk-SO7B7NW3.js → chunk-STHU4Y5X.js} +413 -62
- package/{chunk-SPAQ4PVV.js → chunk-SV5IJK6K.js} +1 -1
- package/{chunk-KVDUCO4Q.js → chunk-TDRTS7QW.js} +16 -12
- package/{chunk-BJCWNHVU.js → chunk-TOP2VXOR.js} +2 -2
- package/{chunk-4EJ5QYB5.js → chunk-UKZDAFYT.js} +1 -1
- package/{chunk-PGSKWZCB.js → chunk-UZGQNTVW.js} +1 -1
- package/{chunk-ZZCJUXUI.js → chunk-V4MJDUSR.js} +2 -2
- package/{chunk-JYYZCK2Z.js → chunk-V7E4PXQD.js} +1 -1
- package/{chunk-OZX2IPKM.js → chunk-VLTIYV3X.js} +1 -1
- package/{chunk-NHRQCXIQ.js → chunk-VMFTFOWF.js} +13 -3
- package/{chunk-4UW2LDVA.js → chunk-VQW3EKYS.js} +15 -15
- package/{chunk-HH65VA5U.js → chunk-WGR3J4Q6.js} +101 -4
- package/{chunk-5J7W2VWW.js → chunk-WV42OMV7.js} +6 -265
- package/{chunk-Q46HQOW3.js → chunk-XTAZCQUT.js} +7 -7
- package/{chunk-DUJWWUGV.js → chunk-YQTQQX2H.js} +1 -1
- package/{chunk-BOYUESO7.js → chunk-Z77CRGTW.js} +1 -1
- package/{contentThunks-ENAVF2YU.js → contentThunks-D6QQKIPF.js} +25 -25
- package/{cooldownCommands-BSCH2W7P.js → cooldownCommands-REAWYVTY.js} +2 -2
- package/{createAgentAutomationAction-CH6BYC7K.js → createAgentAutomationAction-UIPWW4DG.js} +25 -25
- package/{createDialogAction-23UDOXSO.js → createDialogAction-573VVP3X.js} +28 -28
- package/{createPageAction-J6AEMLHK.js → createPageAction-LRFSS6TD.js} +26 -26
- package/{dbSlice-GKGGFNOB.js → dbSlice-XVWBAGYN.js} +8 -8
- package/{deleteFile-LWSR674W.js → deleteFile-YG6QMJLU.js} +3 -3
- package/{dialogCommands-BJJGCCQR.js → dialogCommands-KFK2FF5B.js} +35 -31
- package/{dialogSlice-F7RD6PUY.js → dialogSlice-EXLC5XTD.js} +24 -24
- package/{docCreateCommands-53GB2FU3.js → docCreateCommands-V777WOZ7.js} +32 -30
- package/{docDeleteCommands-TAW5JEBU.js → docDeleteCommands-5KHT7Z5Q.js} +33 -31
- package/{docReadCommands-F5N7N5E3.js → docReadCommands-BLROGWP3.js} +32 -30
- package/{docStore-WX4YBGXC.js → docStore-DZNGJXX7.js} +9 -9
- package/{docUpdateCommands-YQ7TRT35.js → docUpdateCommands-QXOZHQ5H.js} +32 -30
- package/{fetchMessages-DRABNDPZ.js → fetchMessages-EIU7UFFK.js} +3 -4
- package/{getPricing-HRMSOF3E.js → getPricing-LUSEABA6.js} +4 -4
- package/{handleSendMessageAction-CW4LULIR.js → handleSendMessageAction-OROTZBPO.js} +24 -24
- package/index.js +102 -85
- package/{localDialogRead-PUQKFI73.js → localDialogRead-BTFJ4V2I.js} +2 -2
- package/{localRuntimeDb-P37ZTX55.js → localRuntimeDb-SYQGUF4U.js} +1 -1
- package/{machineCommands-FIYWY5EU.js → machineCommands-IJWERHRH.js} +64 -60
- package/{machineWsRunDispatch-KQ4OFFNR.js → machineWsRunDispatch-XQ36M4L7.js} +62 -58
- package/{memberThunks-KATHH3F4.js → memberThunks-QGFLFVCI.js} +9 -9
- package/{models-GS72DVJS.js → models-T3SG6MJ5.js} +2 -2
- package/{offlineMarxistsAgentCommand-GEH6SNNA.js → offlineMarxistsAgentCommand-HGXZV4XJ.js} +1 -1
- package/package.json +1 -1
- package/providerPresetApply-FG6NZ57W.js +214 -0
- package/providerRegistry-757OWH3O.js +31 -0
- package/{read-LC6HVYBN.js → read-COE3ZYR6.js} +5 -4
- package/{readDocTool-N3ERJHHF.js → readDocTool-5USN4A6V.js} +1 -1
- package/{readlineWorkspace-QYI6BRNA.js → readlineWorkspace-EB3362L3.js} +144 -108
- package/{removeDialogAgentAction-F5GPTALR.js → removeDialogAgentAction-IX3MN2ZO.js} +11 -11
- package/{runAgentClientLoop-GZ5VUGAW.js → runAgentClientLoop-3MR2NPWR.js} +47 -47
- package/{runtimeDoctorCommands-CROTMULY.js → runtimeDoctorCommands-X6WDBEQX.js} +2 -2
- package/{setDialogExtraReferencesAction-AY4ZCF3A.js → setDialogExtraReferencesAction-X4HCPNZL.js} +9 -9
- package/{setPrimaryDialogAgentAction-HPMG7V3R.js → setPrimaryDialogAgentAction-4GMIQLOD.js} +11 -11
- package/{settingSlice-OEJA4NQO.js → settingSlice-ZQZVUPKK.js} +10 -10
- package/{spaceCommands-IYMIXCMC.js → spaceCommands-TIDVUPDV.js} +30 -28
- package/{streamAgentChatTurn-EAXIUJTK.js → streamAgentChatTurn-CLP2JWCQ.js} +59 -58
- package/{switchDialogAgentAction-HMDZTZ4I.js → switchDialogAgentAction-N52LRPA3.js} +8 -8
- package/{tableCommands-SUNTHAYX.js → tableCommands-O6NWHFKV.js} +1 -1
- package/{toolApiClient-VGYUB4P5.js → toolApiClient-QVJ6HDNN.js} +2 -2
- package/{tools-QWQOW6J4.js → tools-OXEEBABR.js} +43 -43
- package/tuiSummaryLlmCaller-VJY3YD2Q.js +127 -0
- package/{updateCommands-Y363MC3L.js → updateCommands-2M74UL7P.js} +2 -2
- package/{updateDialogTitleAction-2HCE2M7S.js → updateDialogTitleAction-4YWKF2OE.js} +45 -28
- package/agentRecordCommands-AQFYM5HS.js +0 -124
- package/chunk-3IT2PFHL.js +0 -611
- package/chunk-I42VC5KR.js +0 -15
- package/chunk-NG4UT4K4.js +0 -79
- package/codingSkills-E6KSDNSJ.js +0 -48
- package/tuiSummaryLlmCaller-3Z24VUWM.js +0 -116
- package/{chunk-3RAG2NAD.js → chunk-UKWGR5SS.js} +3 -3
- package/{db-VQSAOWAO.js → db-WK5MDZVN.js} +1 -1
- package/{localRuntimeAuthority-R5UBODT3.js → localRuntimeAuthority-6IR6BBXE.js} +3 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
fetchWithTransientRetry
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-5UTFL4QJ.js";
|
|
4
4
|
import {
|
|
5
5
|
isGatewayHttpStatus
|
|
6
6
|
} from "./chunk-NF64D32W.js";
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
formatStatusRunCard,
|
|
22
22
|
formatStopRunCard,
|
|
23
23
|
resolveRunLabel
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-3VNWWVKB.js";
|
|
25
25
|
import {
|
|
26
26
|
omitNullishAgentSummaryFields,
|
|
27
27
|
sortSafeAgentSummaries,
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
toCompactAgentSummary,
|
|
30
30
|
toSafeAgentSummary,
|
|
31
31
|
toUnavailableAgentSummary
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-RG6JBBX5.js";
|
|
33
33
|
import {
|
|
34
34
|
getUserDataItemTimestamp,
|
|
35
35
|
mergeAndDedupUserData
|
|
@@ -40,7 +40,7 @@ import {
|
|
|
40
40
|
readPageFunc,
|
|
41
41
|
readPageFunctionSchema,
|
|
42
42
|
slateToSimplifiedMarkdown
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-J4MOO56S.js";
|
|
44
44
|
import {
|
|
45
45
|
addMemberSpace,
|
|
46
46
|
fetchAuthoritativeRemoteSpace,
|
|
@@ -52,7 +52,7 @@ import {
|
|
|
52
52
|
setMembershipRejected,
|
|
53
53
|
setSpaceInitialized,
|
|
54
54
|
updateMemberSpaceName
|
|
55
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-HJUYAD4A.js";
|
|
56
56
|
import {
|
|
57
57
|
ToolApiError,
|
|
58
58
|
buildToolRequestHeaders,
|
|
@@ -60,10 +60,10 @@ import {
|
|
|
60
60
|
getRequestConfig,
|
|
61
61
|
getToolBaseUrl,
|
|
62
62
|
getToolRequestContext
|
|
63
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-VLTIYV3X.js";
|
|
64
64
|
import {
|
|
65
65
|
setDialogExtraReferencesAction
|
|
66
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-UKZDAFYT.js";
|
|
67
67
|
import {
|
|
68
68
|
waitForAbortableDelay
|
|
69
69
|
} from "./chunk-N4G4PKQ6.js";
|
|
@@ -81,14 +81,10 @@ import {
|
|
|
81
81
|
} from "./chunk-VF4K2QE6.js";
|
|
82
82
|
import {
|
|
83
83
|
createDocState
|
|
84
|
-
} from "./chunk-
|
|
84
|
+
} from "./chunk-DL2LVM5E.js";
|
|
85
85
|
import {
|
|
86
|
-
BUILTIN_OBJECT_SKILL_IDS,
|
|
87
|
-
buildBuiltinObjectSkillConfig,
|
|
88
|
-
buildBuiltinObjectSkillDbKey,
|
|
89
|
-
buildBuiltinObjectSkillPageContent,
|
|
90
86
|
createDialogAction
|
|
91
|
-
} from "./chunk-
|
|
87
|
+
} from "./chunk-IIBAPOTQ.js";
|
|
92
88
|
import {
|
|
93
89
|
DEFAULT_COLLAPSED_CATEGORIES,
|
|
94
90
|
addContentToSpace,
|
|
@@ -106,7 +102,7 @@ import {
|
|
|
106
102
|
updateContentCategory,
|
|
107
103
|
updateContentTitle,
|
|
108
104
|
writeStoredCollapsedCategories
|
|
109
|
-
} from "./chunk-
|
|
105
|
+
} from "./chunk-F5OE5KSJ.js";
|
|
110
106
|
import {
|
|
111
107
|
getCurrentSpaceId,
|
|
112
108
|
getCurrentSpaceIdRaw,
|
|
@@ -128,14 +124,14 @@ import {
|
|
|
128
124
|
selectMsgById,
|
|
129
125
|
uiAskChoiceFunc,
|
|
130
126
|
uiAskChoiceFunctionSchema
|
|
131
|
-
} from "./chunk-
|
|
127
|
+
} from "./chunk-STHU4Y5X.js";
|
|
132
128
|
import {
|
|
133
129
|
createAgent,
|
|
134
130
|
deleteServerSyncedCredential,
|
|
135
131
|
runLlm,
|
|
136
132
|
streamAgentChatTurn,
|
|
137
133
|
updateAgent
|
|
138
|
-
} from "./chunk-
|
|
134
|
+
} from "./chunk-XTAZCQUT.js";
|
|
139
135
|
import {
|
|
140
136
|
getActiveDialogKey,
|
|
141
137
|
selectCurrentDialogKey,
|
|
@@ -145,15 +141,14 @@ import {
|
|
|
145
141
|
require_react
|
|
146
142
|
} from "./chunk-YDH3FDFQ.js";
|
|
147
143
|
import {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
} from "./chunk-3IT2PFHL.js";
|
|
144
|
+
listBuiltinSkills,
|
|
145
|
+
resolveBuiltinCapability,
|
|
146
|
+
resolveBuiltinSkillByName,
|
|
147
|
+
resolveBuiltinSkillEntry
|
|
148
|
+
} from "./chunk-JRQFUXY7.js";
|
|
154
149
|
import {
|
|
155
150
|
CAPABILITY_PACKS
|
|
156
|
-
} from "./chunk-
|
|
151
|
+
} from "./chunk-DHDMC6FO.js";
|
|
157
152
|
import {
|
|
158
153
|
buildSkillDocMarkdown,
|
|
159
154
|
normalizeSkillModalities,
|
|
@@ -161,7 +156,7 @@ import {
|
|
|
161
156
|
parseExternalSkillMarkdown,
|
|
162
157
|
parseSkillDocProtocol,
|
|
163
158
|
resolvePageSkillMetadata
|
|
164
|
-
} from "./chunk-
|
|
159
|
+
} from "./chunk-Q554LLSI.js";
|
|
165
160
|
import {
|
|
166
161
|
DEFAULT_READ_DIALOG_MAX_RESPONSE_CHARS,
|
|
167
162
|
NOLO_WORKSPACE_TOOL_NAMES,
|
|
@@ -178,22 +173,22 @@ import {
|
|
|
178
173
|
redactAgentRecordForWorkspaceTool,
|
|
179
174
|
resolveNoloDialogInput,
|
|
180
175
|
verifyNoloDialogSubjectRefQuery
|
|
181
|
-
} from "./chunk-
|
|
176
|
+
} from "./chunk-IIVGDG4I.js";
|
|
182
177
|
import {
|
|
183
178
|
isAgentUnavailableNow
|
|
184
|
-
} from "./chunk-
|
|
179
|
+
} from "./chunk-FDTR4QJ6.js";
|
|
185
180
|
import {
|
|
186
181
|
buildDatabaseFileContentUrl
|
|
187
|
-
} from "./chunk-
|
|
182
|
+
} from "./chunk-ASQYTZTR.js";
|
|
188
183
|
import {
|
|
189
184
|
DEFAULT_MODEL
|
|
190
|
-
} from "./chunk-
|
|
185
|
+
} from "./chunk-OIVSQH2O.js";
|
|
191
186
|
import {
|
|
192
187
|
compactWhitespace
|
|
193
188
|
} from "./chunk-DWLEOOGR.js";
|
|
194
189
|
import {
|
|
195
190
|
createFileCredentialBroker
|
|
196
|
-
} from "./chunk-
|
|
191
|
+
} from "./chunk-HVURBGF3.js";
|
|
197
192
|
import {
|
|
198
193
|
toErrorMessage
|
|
199
194
|
} from "./chunk-HNMXYYJR.js";
|
|
@@ -203,15 +198,14 @@ import {
|
|
|
203
198
|
} from "./chunk-O6OSWFZQ.js";
|
|
204
199
|
import {
|
|
205
200
|
shareResourceAction
|
|
206
|
-
} from "./chunk-
|
|
201
|
+
} from "./chunk-BP4XNZRM.js";
|
|
207
202
|
import {
|
|
208
203
|
AGENT_UPDATE_FIELD_NAMES,
|
|
209
|
-
nolotusId,
|
|
210
204
|
normalizeAgentUpdateFieldList,
|
|
211
205
|
selectAutoApproveSelfUpdateFields,
|
|
212
206
|
selectCurrentServer,
|
|
213
207
|
selectSyncServers
|
|
214
|
-
} from "./chunk-
|
|
208
|
+
} from "./chunk-AFUORTY4.js";
|
|
215
209
|
import {
|
|
216
210
|
asRecordOrEmpty
|
|
217
211
|
} from "./chunk-KX6YBIHG.js";
|
|
@@ -219,7 +213,7 @@ import {
|
|
|
219
213
|
UNCATEGORIZED_ID,
|
|
220
214
|
addContentAction,
|
|
221
215
|
checkSpaceMembership
|
|
222
|
-
} from "./chunk-
|
|
216
|
+
} from "./chunk-V4MJDUSR.js";
|
|
223
217
|
import {
|
|
224
218
|
createSpaceKey,
|
|
225
219
|
normalizeSpaceId
|
|
@@ -234,10 +228,12 @@ import {
|
|
|
234
228
|
selectEntities,
|
|
235
229
|
toTimestampMs,
|
|
236
230
|
write
|
|
237
|
-
} from "./chunk-
|
|
231
|
+
} from "./chunk-H62HCIUP.js";
|
|
238
232
|
import {
|
|
239
233
|
SEPARATOR,
|
|
240
234
|
TYPE_STORAGE_PREFIXES,
|
|
235
|
+
asNonEmptyStringArray,
|
|
236
|
+
asTrimmedNonEmptyStringArray,
|
|
241
237
|
createAgentKey,
|
|
242
238
|
dialogMessageRange,
|
|
243
239
|
fileKey,
|
|
@@ -253,23 +249,19 @@ import {
|
|
|
253
249
|
splitKey,
|
|
254
250
|
toTrimmedString,
|
|
255
251
|
ulid
|
|
256
|
-
} from "./chunk-
|
|
252
|
+
} from "./chunk-VMFTFOWF.js";
|
|
257
253
|
import {
|
|
258
254
|
asOptionalFiniteNumber
|
|
259
255
|
} from "./chunk-WWC7I6TA.js";
|
|
260
|
-
import {
|
|
261
|
-
asNonEmptyStringArray,
|
|
262
|
-
asTrimmedNonEmptyStringArray
|
|
263
|
-
} from "./chunk-I42VC5KR.js";
|
|
264
256
|
import {
|
|
265
257
|
asTrimmedLowercaseString
|
|
266
258
|
} from "./chunk-QSJ3HFEF.js";
|
|
267
259
|
import {
|
|
268
260
|
readAction
|
|
269
|
-
} from "./chunk-
|
|
261
|
+
} from "./chunk-WV42OMV7.js";
|
|
270
262
|
import {
|
|
271
263
|
extractCustomId
|
|
272
|
-
} from "./chunk-
|
|
264
|
+
} from "./chunk-M2EJHDJP.js";
|
|
273
265
|
import {
|
|
274
266
|
DEVICE_LOCAL_OWNER_ID,
|
|
275
267
|
createAsyncThunk,
|
|
@@ -281,7 +273,7 @@ import {
|
|
|
281
273
|
resolveEffectiveSpaceActorId,
|
|
282
274
|
resolveRecordOwnerUserId,
|
|
283
275
|
selectRuntimeSnapshot
|
|
284
|
-
} from "./chunk-
|
|
276
|
+
} from "./chunk-UKWGR5SS.js";
|
|
285
277
|
import {
|
|
286
278
|
isAbortError
|
|
287
279
|
} from "./chunk-QOKAKDPE.js";
|
|
@@ -294,12 +286,12 @@ import {
|
|
|
294
286
|
buildTombstoneRecord,
|
|
295
287
|
isTombstoneRecord
|
|
296
288
|
} from "./chunk-GBRG75BQ.js";
|
|
297
|
-
import {
|
|
298
|
-
asTrimmedString
|
|
299
|
-
} from "./chunk-3EUW3WEO.js";
|
|
300
289
|
import {
|
|
301
290
|
isRecord
|
|
302
291
|
} from "./chunk-KUG52IAP.js";
|
|
292
|
+
import {
|
|
293
|
+
asTrimmedString
|
|
294
|
+
} from "./chunk-3EUW3WEO.js";
|
|
303
295
|
import {
|
|
304
296
|
API_ENDPOINTS
|
|
305
297
|
} from "./chunk-LCBAMY2M.js";
|
|
@@ -919,7 +911,7 @@ var HOSTED_EXEC_RUNTIME_TOOL_POLICY = {
|
|
|
919
911
|
workspace: { mode: "lease" }
|
|
920
912
|
};
|
|
921
913
|
var findModelConfig = async (modelName, provider) => {
|
|
922
|
-
const { ALL_MODELS } = await import("./models-
|
|
914
|
+
const { ALL_MODELS } = await import("./models-T3SG6MJ5.js");
|
|
923
915
|
const name = toTrimmedString(modelName);
|
|
924
916
|
const prov = toTrimmedString(provider ?? "");
|
|
925
917
|
if (!name) return null;
|
|
@@ -1164,7 +1156,7 @@ var buildPlatformFormDataFromArgs = async (args) => {
|
|
|
1164
1156
|
const trimmedModel = toTrimmedString(model);
|
|
1165
1157
|
const trimmedProvider = toTrimmedString(provider);
|
|
1166
1158
|
const modelConfig = await findModelConfig(trimmedModel, trimmedProvider);
|
|
1167
|
-
const { getModelPricing } = await import("./getPricing-
|
|
1159
|
+
const { getModelPricing } = await import("./getPricing-LUSEABA6.js");
|
|
1168
1160
|
const normalizedTools = tools ?? [];
|
|
1169
1161
|
const resolvedRuntimeToolPolicy = runtimeToolPolicy ?? (normalizedTools.includes("execShell") ? HOSTED_EXEC_RUNTIME_TOOL_POLICY : void 0);
|
|
1170
1162
|
const formData = {
|
|
@@ -2107,746 +2099,17 @@ Imported from: ${url}` : ""
|
|
|
2107
2099
|
});
|
|
2108
2100
|
}
|
|
2109
2101
|
|
|
2110
|
-
// packages/ai/skills/specialistSkills.ts
|
|
2111
|
-
var SPECIALIST_SKILL_SLUGS = [
|
|
2112
|
-
"feedback",
|
|
2113
|
-
"agent-creator",
|
|
2114
|
-
"app-builder"
|
|
2115
|
-
];
|
|
2116
|
-
function deterministicId(prefix, seed) {
|
|
2117
|
-
let h = 2166136261;
|
|
2118
|
-
for (let i = 0; i < seed.length; i++) {
|
|
2119
|
-
h ^= seed.charCodeAt(i);
|
|
2120
|
-
h = h * 16777619 >>> 0;
|
|
2121
|
-
}
|
|
2122
|
-
const suffix = h.toString(36).toUpperCase().padStart(14, "0");
|
|
2123
|
-
return (prefix + suffix).slice(0, 26);
|
|
2124
|
-
}
|
|
2125
|
-
function normalizeSkillSeed(input) {
|
|
2126
|
-
return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
|
|
2127
|
-
}
|
|
2128
|
-
function buildSpecialistSkillId(slug) {
|
|
2129
|
-
return deterministicId("01SK", normalizeSkillSeed(slug) || slug);
|
|
2130
|
-
}
|
|
2131
|
-
function buildSpecialistSkillPageKey(userId, slug) {
|
|
2132
|
-
return `page-${userId}-${buildSpecialistSkillId(slug)}`;
|
|
2133
|
-
}
|
|
2134
|
-
var SPECIALIST_SKILL_SEEDS = [
|
|
2135
|
-
{
|
|
2136
|
-
slug: "feedback",
|
|
2137
|
-
title: "feedback",
|
|
2138
|
-
description: "\u53CD\u9988\u6536\u96C6\uFF1A\u628A\u7528\u6237\u7684\u529F\u80FD\u9700\u6C42\u3001\u95EE\u9898\u53CD\u9988\u548C\u4F53\u9A8C\u5EFA\u8BAE\u89C4\u8303\u8BB0\u5F55\u5230\u7528\u6237\u53CD\u9988\u8868\uFF1B\u7D27\u6025\u53CD\u9988\u540C\u65F6\u5199\u5165\u4EFB\u52A1\u770B\u677F\u5E76\u901A\u77E5\u3002",
|
|
2139
|
-
body: [
|
|
2140
|
-
"\u4F60\u662F\u201C\u53CD\u9988\u5165\u53E3\u201DAgent\uFF0C\u8D1F\u8D23\u6536\u96C6\u7528\u6237\u7684\u65B0\u529F\u80FD\u9700\u6C42\u3001\u95EE\u9898\u53CD\u9988\u548C\u4F53\u9A8C\u5EFA\u8BAE\uFF0C\u5E76\u5C06\u5176\u89C4\u8303\u8BB0\u5F55\u5230\u6307\u5B9A\u8868\u683C\u4E2D\u3002",
|
|
2141
|
-
"",
|
|
2142
|
-
"\u4F60\u7684\u76EE\u6807\uFF1A",
|
|
2143
|
-
"1. \u4E3B\u52A8\u5F15\u5BFC\u7528\u6237\u63CF\u8FF0\u9047\u5230\u7684\u95EE\u9898\u3001\u60F3\u8981\u7684\u65B0\u529F\u80FD\u6216\u6539\u8FDB\u5EFA\u8BAE\u3002",
|
|
2144
|
-
"2. \u6BCF\u6B21\u6536\u5230\u53CD\u9988\u540E\uFF0C\u5148\u505A\u6781\u7B80\u6F84\u6E05\uFF1B\u5982\u679C\u4FE1\u606F\u5DF2\u7ECF\u8DB3\u591F\uFF0C\u5C31\u4E0D\u8981\u8FFD\u95EE\u8FC7\u591A\u3002",
|
|
2145
|
-
"3. \u5C06\u53CD\u9988\u6574\u7406\u6210\u7ED3\u6784\u5316\u4FE1\u606F\uFF0C\u5199\u5165\u201C\u7528\u6237\u53CD\u9988\u201D\u8868\u3002",
|
|
2146
|
-
`4. \u5982\u679C\u53CD\u9988\u8FBE\u5230\u201C\u7D27\u6025\u201D\u7EA7\u522B\uFF0C\u9664\u5199\u5165\u7528\u6237\u53CD\u9988\u8868\u5916\uFF0C\u8FD8\u8981\u76F4\u63A5\u5199\u5165 Nolo \u4EFB\u52A1\u770B\u677F\uFF0C\u5E76\u901A\u77E5\u7528\u6237 ${nolotusId}\u3002`,
|
|
2147
|
-
"5. \u8BB0\u5F55\u63D0\u4EA4\u53CD\u9988\u7684\u7528\u6237 ID\uFF0C\u65B9\u4FBF\u4EFB\u52A1\u5B8C\u6210\u6216\u8FDB\u5165 main \u540E\u901A\u77E5\u539F\u7528\u6237\u3002",
|
|
2148
|
-
"6. \u56DE\u590D\u98CE\u683C\u7B80\u6D01\u3001\u81EA\u7136\u3001\u50CF\u4EA7\u54C1\u56E2\u961F\u7684\u53CD\u9988\u6536\u96C6\u5165\u53E3\u3002",
|
|
2149
|
-
"",
|
|
2150
|
-
"\u5DE5\u4F5C\u89C4\u5219\uFF1A",
|
|
2151
|
-
"- \u4F18\u5148\u5224\u65AD\u53CD\u9988\u7C7B\u578B\uFF1A\u529F\u80FD\u9700\u6C42 / \u95EE\u9898\u53CD\u9988 / \u4F53\u9A8C\u5EFA\u8BAE / \u5176\u4ED6\u3002",
|
|
2152
|
-
"- \u9ED8\u8BA4\u72B6\u6001\u5199\u4E3A\u201C\u5F85\u5904\u7406\u201D\u3002",
|
|
2153
|
-
"- \u6839\u636E\u5185\u5BB9\u7C97\u7565\u5224\u65AD\u4F18\u5148\u7EA7\uFF1A",
|
|
2154
|
-
" - \u6570\u636E\u4E22\u5931\u3001\u65E0\u6CD5\u767B\u5F55\u3001\u65E0\u6CD5\u6253\u5F00\u4E3B\u5165\u53E3\u3001\u6838\u5FC3\u7F16\u8F91/\u521B\u5EFA/\u652F\u4ED8/\u4FDD\u5B58\u5B8C\u5168\u4E0D\u53EF\u7528\u3001\u963B\u65AD\u5927\u90E8\u5206\u7528\u6237\u6838\u5FC3\u6D41\u7A0B -> \u7D27\u6025",
|
|
2155
|
-
" - \u660E\u663E\u5F71\u54CD\u6B63\u5E38\u4F7F\u7528\u3001\u65E0\u6CD5\u5B8C\u6210\u67D0\u4E2A\u6838\u5FC3\u6D41\u7A0B\u3001\u4E25\u91CD\u4FDD\u5B58\u5931\u8D25 -> \u9AD8",
|
|
2156
|
-
" - \u4E00\u822C bug\u3001\u660E\u786E\u9700\u6C42\u3001\u5F71\u54CD\u5E38\u7528\u7F16\u8F91/\u521B\u5EFA\u6D41\u7A0B -> \u4E2D",
|
|
2157
|
-
" - \u666E\u901A\u5EFA\u8BAE\u6216\u8F7B\u5FAE\u4F53\u9A8C\u95EE\u9898 -> \u4F4E",
|
|
2158
|
-
"- \u5982\u679C\u7CFB\u7EDF\u6216\u5DE5\u5177\u4E0A\u4E0B\u6587\u80FD\u63D0\u4F9B\u5F53\u524D\u7528\u6237 ID\uFF0C\u628A\u5B83\u5199\u5165 submitterUserId\uFF1B\u5982\u679C\u770B\u4E0D\u5230\u7528\u6237 ID\uFF0C\u53EF\u4EE5\u7559\u7A7A\uFF0C\u670D\u52A1\u7AEF\u4F1A\u515C\u5E95\u8865\u5199\u3002",
|
|
2159
|
-
"- \u5982\u679C\u7528\u6237\u6CA1\u6709\u63D0\u4F9B\u8054\u7CFB\u65B9\u5F0F\uFF0C\u4E0D\u8981\u5F3A\u6C42\uFF0C\u53EF\u7559\u7A7A\u3002",
|
|
2160
|
-
"- \u5982\u679C\u7528\u6237\u63D0\u4F9B\u4E86\u7AEF\u3001\u9875\u9762\u3001\u7248\u672C\u3001\u670D\u52A1\u5668\u3001\u6D4F\u89C8\u5668\u3001\u622A\u56FE\u8BF4\u660E\u3001\u590D\u73B0\u6B65\u9AA4\u3001\u671F\u671B\u7ED3\u679C\u3001\u5B9E\u9645\u7ED3\u679C\uFF0C\u8981\u5C3D\u91CF\u5199\u8FDB\u5BF9\u5E94\u5B57\u6BB5\u3002",
|
|
2161
|
-
"- \u5982\u679C\u7F3A\u5C11\u5173\u952E\u4FE1\u606F\u4F46\u4ECD\u80FD\u7406\u89E3\u6838\u5FC3\u53CD\u9988\uFF0C\u5148\u8BB0\u5F55\uFF0C\u4E0D\u8981\u56E0\u4E3A\u5B57\u6BB5\u4E0D\u5168\u800C\u963B\u585E\u3002",
|
|
2162
|
-
"- source \u56FA\u5B9A\u5199\u201C\u53CD\u9988\u5165\u53E3\u201D\u3002",
|
|
2163
|
-
"- createdAtNote \u5199\u201C\u7531\u53CD\u9988\u5165\u53E3\u8BB0\u5F55\u201D\u3002",
|
|
2164
|
-
"",
|
|
2165
|
-
"\u666E\u901A\u5199\u8868\u89C4\u5219\uFF1A",
|
|
2166
|
-
"- \u975E\u7D27\u6025\u53CD\u9988\u53EA\u8C03\u7528\u4E00\u6B21 addTableRow\uFF0C\u5199\u5165\u7528\u6237\u53CD\u9988\u8868\uFF1B\u6210\u529F\u5199\u5165\u540E\u4E0D\u8981\u91CD\u590D\u5199\u5165\u540C\u4E00\u5185\u5BB9\u3002",
|
|
2167
|
-
`- \u4F7F\u7528 addTableRow \u5DE5\u5177\uFF0C\u628A\u53CD\u9988\u5199\u5165 dbKey \u4E3A meta-${nolotusId}-01NOLOFEEDBACKT000000000R1 \u7684\u8868\u3002`,
|
|
2168
|
-
`- \u663E\u5F0F\u4F20\u5165 tenantId="${nolotusId}" \u548C tableId="01NOLOFEEDBACKT000000000R1"\u3002`,
|
|
2169
|
-
"- \u5B57\u6BB5\u6620\u5C04\uFF1A",
|
|
2170
|
-
" - content: \u7528\u6237\u53CD\u9988\u5185\u5BB9\u7684\u7B80\u6D01\u6574\u7406\u7248\uFF0C\u4FDD\u7559\u5177\u4F53\u5BF9\u8C61\u548C\u75C7\u72B6",
|
|
2171
|
-
" - feedbackType: \u53CD\u9988\u7C7B\u578B",
|
|
2172
|
-
" - status: \u56FA\u5B9A\u4E3A\u201C\u5F85\u5904\u7406\u201D",
|
|
2173
|
-
" - priority: \u6309\u89C4\u5219\u5224\u65AD",
|
|
2174
|
-
" - contact: \u7528\u6237\u4E3B\u52A8\u63D0\u4F9B\u7684\u8054\u7CFB\u65B9\u5F0F\uFF0C\u6CA1\u6709\u5C31\u7559\u7A7A",
|
|
2175
|
-
" - source: \u56FA\u5B9A\u4E3A\u201C\u53CD\u9988\u5165\u53E3\u201D",
|
|
2176
|
-
" - submitterUserId: \u5F53\u524D\u63D0\u4EA4\u53CD\u9988\u7684\u7528\u6237 ID\uFF1B\u770B\u4E0D\u5230\u5C31\u7559\u7A7A\uFF0C\u670D\u52A1\u7AEF\u4F1A\u8865\u5199",
|
|
2177
|
-
" - environment: \u7528\u6237\u4E3B\u52A8\u63D0\u5230\u7684\u7AEF\u3001\u670D\u52A1\u5668\u3001\u9875\u9762\u3001\u6D4F\u89C8\u5668\u3001\u7CFB\u7EDF\u6216\u7248\u672C\uFF1B\u6CA1\u6709\u5C31\u7559\u7A7A",
|
|
2178
|
-
" - reproductionSteps: \u7528\u6237\u63CF\u8FF0\u7684\u590D\u73B0\u6B65\u9AA4\uFF1B\u6CA1\u6709\u5C31\u7559\u7A7A",
|
|
2179
|
-
" - expectedResult: \u7528\u6237\u8868\u8FBE\u7684\u671F\u671B\u884C\u4E3A\uFF1B\u6CA1\u6709\u5C31\u7559\u7A7A",
|
|
2180
|
-
" - actualResult: \u7528\u6237\u8868\u8FBE\u7684\u5B9E\u9645\u5F02\u5E38\uFF1B\u6CA1\u6709\u5C31\u7559\u7A7A",
|
|
2181
|
-
" - userImpact: \u5BF9\u7528\u6237\u6D41\u7A0B\u7684\u5F71\u54CD\uFF1B\u6CA1\u6709\u5C31\u6839\u636E\u5185\u5BB9\u7B80\u77ED\u5F52\u7EB3",
|
|
2182
|
-
" - createdAtNote: \u56FA\u5B9A\u4E3A\u201C\u7531\u53CD\u9988\u5165\u53E3\u8BB0\u5F55\u201D",
|
|
2183
|
-
"",
|
|
2184
|
-
"\u7D27\u6025\u53CD\u9988\u989D\u5916\u89C4\u5219\uFF1A",
|
|
2185
|
-
"- \u5F53 priority \u5224\u65AD\u4E3A\u201C\u7D27\u6025\u201D\u65F6\uFF0C\u5141\u8BB8\u989D\u5916\u8C03\u7528\u4E00\u6B21 addTableRow\uFF0C\u628A\u540C\u4E00\u4E8B\u9879\u76F4\u63A5\u5199\u5165 Nolo \u4EFB\u52A1\u770B\u677F\u3002",
|
|
2186
|
-
`- \u4EFB\u52A1\u770B\u677F\u56FA\u5B9A\u4E3A tenantId="${nolotusId}", tableId="NOLOTASKBOARD", dbKey="meta-${nolotusId}-NOLOTASKBOARD"\u3002`,
|
|
2187
|
-
"- \u4EFB\u52A1\u770B\u677F\u5B57\u6BB5\uFF1A",
|
|
2188
|
-
" - title: \u7528\u201CURGENT \u53CD\u9988\uFF1A\u201D\u5F00\u5934\uFF0C\u540E\u63A5\u95EE\u9898\u4E3B\u9898",
|
|
2189
|
-
" - status: \u201C\u5F85\u5904\u7406\u201D",
|
|
2190
|
-
" - priority: \u201C\u7D27\u6025\u201D",
|
|
2191
|
-
" - executionMode: \u201C\u7ACB\u5373\u6267\u884C\u201D",
|
|
2192
|
-
" - owner: \u201Cnolo \u9879\u76EE\u7ECF\u7406\u201D",
|
|
2193
|
-
" - source: \u201C\u53CD\u9988\u5165\u53E3\u201D",
|
|
2194
|
-
" - feedbackSubmitterUserId: \u5F53\u524D\u63D0\u4EA4\u53CD\u9988\u7684\u7528\u6237 ID\uFF1B\u770B\u4E0D\u5230\u5C31\u7559\u7A7A\uFF0C\u670D\u52A1\u7AEF\u4F1A\u8865\u5199",
|
|
2195
|
-
" - acceptance: \u590D\u8FF0\u53EF\u9A8C\u8BC1\u7684\u4FEE\u590D\u6807\u51C6",
|
|
2196
|
-
" - progress: \u201C\u7531\u53CD\u9988\u5165\u53E3\u6839\u636E\u7D27\u6025\u53CD\u9988\u81EA\u52A8\u5165\u8868\uFF0C\u7B49\u5F85\u9879\u76EE\u7ECF\u7406\u5206\u6D3E\u3002\u201D",
|
|
2197
|
-
" - codeStatus: \u201C\u672A\u5F00\u59CB\u201D",
|
|
2198
|
-
"- \u7D27\u6025\u53CD\u9988\u5199\u5165\u4EFB\u52A1\u8868\u540E\uFF0C\u8C03\u7528 notifyUser\uFF1A",
|
|
2199
|
-
" - title: \u201C\u7D27\u6025\u53CD\u9988\u5DF2\u8FDB\u5165\u4EFB\u52A1\u8868\u201D",
|
|
2200
|
-
" - message: \u7B80\u8981\u8BF4\u660E\u53CD\u9988\u5185\u5BB9\u548C\u4EFB\u52A1\u8868\u72B6\u6001",
|
|
2201
|
-
" - severity: \u201Ccritical\u201D",
|
|
2202
|
-
` - targetUserId: "${nolotusId}"`,
|
|
2203
|
-
"- \u5982\u679C notifyUser \u5DE5\u5177\u8FD4\u56DE\u9519\u8BEF\uFF0C\u4E0D\u8981\u91CD\u590D\u5199\u4EFB\u52A1\u8868\uFF1B\u5728\u56DE\u590D\u4E2D\u8BF4\u660E\u201C\u5DF2\u8FDB\u5165\u4EFB\u52A1\u8868\uFF0C\u901A\u77E5\u53D1\u9001\u5931\u8D25/\u5F85\u91CD\u8BD5\u201D\u3002",
|
|
2204
|
-
"",
|
|
2205
|
-
"\u4EA4\u4E92\u89C4\u5219\uFF1A",
|
|
2206
|
-
"- \u5982\u679C\u7528\u6237\u53EA\u8BF4\u201C\u6709\u95EE\u9898\u201D\u201C\u60F3\u63D0\u9700\u6C42\u201D\u8FD9\u7C7B\u4E0D\u5B8C\u6574\u8868\u8FBE\uFF0C\u5148\u7528\u4E00\u53E5\u8BDD\u8FFD\u95EE\u6700\u5173\u952E\u7684\u4FE1\u606F\u3002",
|
|
2207
|
-
"- \u5982\u679C\u7528\u6237\u5DF2\u7ECF\u6E05\u695A\u63CF\u8FF0\u95EE\u9898\u6216\u9700\u6C42\uFF0C\u76F4\u63A5\u8BB0\u5F55\uFF0C\u4E0D\u8981\u8FDB\u884C\u5197\u957F\u5206\u6790\u3002",
|
|
2208
|
-
"- \u6210\u529F\u8BB0\u5F55\u540E\uFF0C\u660E\u786E\u544A\u8BC9\u7528\u6237\u201C\u5DF2\u7ECF\u5E2E\u4F60\u8BB0\u4E0B\u201D\uFF0C\u5E76\u7528\u4E00\u53E5\u8BDD\u590D\u8FF0\u6838\u5FC3\u5185\u5BB9\u3002",
|
|
2209
|
-
"- \u7D27\u6025\u53CD\u9988\u6210\u529F\u8FDB\u5165\u4EFB\u52A1\u8868\u540E\uFF0C\u544A\u8BC9\u7528\u6237\u201C\u5DF2\u6309\u7D27\u6025\u53CD\u9988\u8FDB\u5165\u4EFB\u52A1\u8868\u201D\u3002",
|
|
2210
|
-
"- \u4E0D\u8981\u627F\u8BFA\u4E00\u5B9A\u4FEE\u590D\u3001\u4E00\u5B9A\u5F00\u53D1\uFF0C\u53EA\u627F\u8BFA\u201C\u5DF2\u8BB0\u5F55\u53CD\u9988\u201D\u6216\u201C\u5DF2\u8FDB\u5165\u4EFB\u52A1\u8868\u201D\u3002"
|
|
2211
|
-
].join("\n"),
|
|
2212
|
-
toolNames: ["addTableRow", "notifyUser"]
|
|
2213
|
-
},
|
|
2214
|
-
{
|
|
2215
|
-
slug: "agent-creator",
|
|
2216
|
-
title: "agent-creator",
|
|
2217
|
-
description: "\u521B\u5EFA Agent\uFF1A\u901A\u8FC7\u5BF9\u8BDD\u628A\u7528\u6237\u7684\u60F3\u6CD5\u62C6\u6210 prompt\u3001\u77E5\u8BC6\u3001\u5DE5\u5177\u3001skill/workflow \u548C eval\uFF0C\u751F\u6210\u53EF\u9884\u89C8\u8349\u7A3F\u5E76\u5728\u7528\u6237\u786E\u8BA4\u540E\u521B\u5EFA\u771F\u5B9E Agent\u3002",
|
|
2218
|
-
body: [
|
|
2219
|
-
"\u4F60\u662F Nolo \u7684 AI \u521B\u5EFA\u52A9\u624B\uFF0C\u53EA\u8D1F\u8D23\u901A\u8FC7\u5BF9\u8BDD\u5E2E\u52A9\u7528\u6237\u521B\u5EFA\u6216\u8C03\u6574\u4E00\u4E2A\u65B0\u7684 Agent\u3002",
|
|
2220
|
-
"\u6838\u5FC3\u539F\u5219\uFF1AAgent = prompt + knowledge + tools + skills/workflows + eval \u7684\u53EF\u8FD0\u884C\u5C01\u88C5\u3002",
|
|
2221
|
-
"\u521B\u5EFA\u6D41\u7A0B\u8981\u5E2E\u52A9\u7528\u6237\u628A\u4E13\u4E1A\u7ECF\u9A8C\u62C6\u5230\u5DF2\u6709\u8D44\u4EA7\u91CC\uFF0C\u4E0D\u8981\u628A\u6240\u6709\u7ECF\u9A8C\u90FD\u585E\u8FDB prompt\u3002",
|
|
2222
|
-
"\u5148\u7406\u89E3\u7528\u6237\u60F3\u8BA9\u8FD9\u4E2A AI \u670D\u52A1\u8C01\u3001\u5B8C\u6210\u4EC0\u4E48\u4EFB\u52A1\u3001\u4F7F\u7528\u4EC0\u4E48\u8BED\u6C14\u3001\u9700\u8981\u54EA\u4E9B\u80FD\u529B\u3001\u662F\u5426\u9700\u8981\u77E5\u8BC6\u5F15\u7528\uFF0C\u4EE5\u53CA\u662F\u5426\u9002\u5408\u516C\u5F00\u3002",
|
|
2223
|
-
"\u62C6\u89E3\u80FD\u529B\u65F6\u533A\u5206\uFF1Aprompt \u8D1F\u8D23\u89D2\u8272\u548C\u884C\u4E3A\u8FB9\u754C\uFF1Bknowledge/references \u8D1F\u8D23\u8D44\u6599\u6765\u6E90\uFF1Btools \u8D1F\u8D23\u52A8\u4F5C\uFF1Bskills/workflows \u8D1F\u8D23\u7A33\u5B9A\u6D41\u7A0B\u548C\u4E13\u5BB6\u65B9\u6CD5\uFF1Beval \u8D1F\u8D23\u6210\u529F/\u5931\u8D25\u6837\u4F8B\u548C\u9A8C\u6536\u3002",
|
|
2224
|
-
"\u5F53\u4FE1\u606F\u8DB3\u591F\u5F62\u6210\u521D\u7248\u914D\u7F6E\u65F6\uFF0C\u5148\u8C03\u7528 prepareAgentDraft\uFF0C\u751F\u6210\u53EF\u9884\u89C8\u8349\u7A3F\uFF1B\u4FE1\u606F\u4E0D\u8DB3\u65F6\u6BCF\u6B21\u53EA\u95EE\u4E00\u4E2A\u5173\u952E\u95EE\u9898\u3002",
|
|
2225
|
-
"prepareAgentDraft \u53EA\u751F\u6210\u8349\u7A3F\uFF0C\u4E0D\u4EE3\u8868\u5DF2\u7ECF\u521B\u5EFA\u771F\u5B9E Agent\u3002",
|
|
2226
|
-
"\u5982\u679C\u7528\u6237\u63CF\u8FF0\u4E86\u7A33\u5B9A\u6D41\u7A0B\u3001\u4E13\u5BB6\u65B9\u6CD5\u6216\u64CD\u4F5C\u6B65\u9AA4\uFF0C\u5148\u653E\u8FDB suggestedSkillIdeas / suggestedWorkflowIdeas\uFF1B\u7528\u6237\u660E\u786E\u786E\u8BA4\u8981\u6C89\u6DC0\u6D41\u7A0B\u540E\uFF0C\u624D\u53EF\u7528 createSkillDoc \u6216 updateDoc \u521B\u5EFA/\u66F4\u65B0 skill \u6216 workflow \u6587\u6863\uFF0C\u518D\u7528 updateAgent \u6302\u5230 references\u3002",
|
|
2227
|
-
"\u5982\u679C\u7528\u6237\u63CF\u8FF0\u4E86\u9A8C\u6536\u3001\u5931\u8D25\u8FB9\u754C\u6216\u771F\u5B9E\u6848\u4F8B\uFF0C\u5148\u653E\u8FDB suggestedEvalCases\uFF1B\u9ED8\u8BA4\u53EA\u751F\u6210 eval case \u8349\u7A3F\uFF0C\u4E0D\u8981\u81EA\u52A8\u8DD1 live eval\uFF0C\u4E5F\u4E0D\u8981\u6697\u4E2D\u4EA7\u751F\u4ED8\u8D39\u8BC4\u4F30\u3002",
|
|
2228
|
-
"\u8349\u7A3F\u5C55\u793A\u540E\uFF0C\u7B49\u5F85\u7528\u6237\u660E\u786E\u786E\u8BA4\uFF0C\u4F8B\u5982\u201C\u786E\u8BA4\u521B\u5EFA\u201D\u201C\u5C31\u6309\u8FD9\u4E2A\u521B\u5EFA\u201D\u201C\u521B\u5EFA\u8FD9\u4E2A AI\u201D\u3002",
|
|
2229
|
-
"\u53EA\u6709\u5F97\u5230\u660E\u786E\u786E\u8BA4\u540E\uFF0C\u624D\u8C03\u7528 createAgent \u521B\u5EFA\u771F\u5B9E Agent\u3002",
|
|
2230
|
-
"\u7528\u6237\u53EA\u662F\u8BA8\u8BBA\u3001\u8865\u5145\u3001\u4FEE\u6539\u6216\u8BF4\u201C\u5148\u770B\u770B\u201D\u65F6\uFF0C\u4E0D\u8981\u8C03\u7528 createAgent\u3002",
|
|
2231
|
-
"\u9ED8\u8BA4\u6A21\u578B\u4F7F\u7528 provider=nolo, model=deepseek-v4-flash\uFF1B\u9664\u975E\u7528\u6237\u660E\u786E\u8981\u6C42\u4E14\u5E73\u53F0\u5DF2\u77E5\u652F\u6301\uFF0C\u4E0D\u8981\u9009\u62E9 Claude/Anthropic \u7B49\u5F53\u524D runtime \u4E0D\u652F\u6301\u7684 provider\u3002",
|
|
2232
|
-
"\u516C\u5F00\u72B6\u6001\u4FDD\u6301\u4FDD\u5B88\uFF1A\u4F60\u53EF\u4EE5\u5EFA\u8BAE\u516C\u5F00\uFF0C\u4F46\u53EA\u6709\u7528\u6237\u660E\u786E\u8981\u6C42\u516C\u5F00\u53D1\u5E03\u65F6\uFF0CcreateAgent \u7684 isPublic \u624D\u80FD\u4E3A true\u3002",
|
|
2233
|
-
"\u5982\u679C\u7528\u6237\u60F3\u624B\u52A8\u5FAE\u8C03\u6A21\u578B\u3001\u5DE5\u5177\u3001\u77E5\u8BC6\u5F15\u7528\u6216\u53D1\u5E03\u72B6\u6001\uFF0C\u53EF\u4EE5\u5F15\u5BFC\u7528\u6237\u8FDB\u5165 /create/agent \u9AD8\u7EA7\u7F16\u8F91\u9875\u3002"
|
|
2234
|
-
].join("\n"),
|
|
2235
|
-
toolNames: [
|
|
2236
|
-
"prepareAgentDraft",
|
|
2237
|
-
"createAgent",
|
|
2238
|
-
"createSkillDoc",
|
|
2239
|
-
"readDoc",
|
|
2240
|
-
"updateDoc",
|
|
2241
|
-
"updateAgent"
|
|
2242
|
-
]
|
|
2243
|
-
},
|
|
2244
|
-
{
|
|
2245
|
-
slug: "app-builder",
|
|
2246
|
-
title: "app-builder",
|
|
2247
|
-
description: "\u5E94\u7528\u6784\u5EFA\uFF1A\u5E2E\u7528\u6237\u6784\u5EFA\u548C\u4FEE\u6539 Web \u5E94\u7528\uFF08\u54C1\u724C\u7AD9\u3001\u535A\u5BA2\u3001\u9884\u7EA6\u7AD9\u3001\u4F5C\u54C1\u96C6\u3001\u77E5\u8BC6\u7AD9\u3001\u8F7B\u5DE5\u5177\uFF09\uFF0C\u652F\u6301\u5BF9\u8BDD\u521B\u5EFA\u3001\u8FED\u4EE3\u4FEE\u6539\u3001\u9884\u68C0\u548C\u53D1\u5E03\uFF0C\u65E0\u9700\u7F16\u7A0B\u7ECF\u9A8C\u3002",
|
|
2248
|
-
body: [
|
|
2249
|
-
"\u4F60\u662F\u300C\u5E94\u7528\u6784\u5EFA\u52A9\u624B\u300D\uFF0C\u5E2E\u7528\u6237\u6784\u5EFA\u548C\u4FEE\u6539 Web \u5E94\u7528\u3002\u6838\u5FC3\u539F\u5219\uFF1A**\u7528\u6700\u5C11\u7684\u6B65\u9AA4\u548C\u6700\u5C11\u7684\u8BDD\u628A\u4E8B\u505A\u6210**\u3002",
|
|
2250
|
-
"",
|
|
2251
|
-
"## \u89D2\u8272",
|
|
2252
|
-
"- \u670D\u52A1\u5BF9\u8C61\uFF1A\u6CA1\u6709\u7F16\u7A0B\u7ECF\u9A8C\u7684\u7528\u6237\u3002\u8BED\u6C14\u8F7B\u677E\u53CB\u597D\uFF0C\u907F\u514D\u6280\u672F\u672F\u8BED\uFF08Worker\u3001JavaScript\u3001API \u7B49\uFF09\u3002",
|
|
2253
|
-
"- \u9664\u975E\u7528\u6237\u660E\u786E\u8981\u770B\u4EE3\u7801\uFF0C\u5426\u5219\u4E0D\u5C55\u793A\u5927\u6BB5\u4EE3\u7801\u3002",
|
|
2254
|
-
"- \u4F18\u5148\u6536\u655B\u6210\u5185\u5BB9\u9A71\u52A8\u7684\u7F51\u7AD9\u578B\u5C0F\u5E94\u7528\uFF1A\u54C1\u724C\u7AD9\u3001\u535A\u5BA2\u3001\u9884\u7EA6\u7AD9\u3001\u4F5C\u54C1\u96C6\u3001\u77E5\u8BC6\u7AD9\u3001\u8F7B\u5DE5\u5177\u3002",
|
|
2255
|
-
"",
|
|
2256
|
-
"## \u5DE5\u4F5C\u65B9\u5F0F",
|
|
2257
|
-
"1. \u7406\u89E3\u9700\u6C42\uFF1A\u7528\u7B80\u5355\u5BF9\u8BDD\u4E86\u89E3\u7528\u6237\u60F3\u8981\u4EC0\u4E48\uFF0C\u6700\u591A\u95EE 1-2 \u4E2A\u5173\u952E\u95EE\u9898\u3002",
|
|
2258
|
-
"2. \u81EA\u52A8\u6784\u5EFA\uFF1A\u6839\u636E\u63CF\u8FF0\u751F\u6210\u6216\u4FEE\u6539\u5E94\u7528\uFF0C\u7528\u6237\u9ED8\u8BA4\u4E0D\u9700\u8981\u770B\u5230\u4EE3\u7801\u3002",
|
|
2259
|
-
"3. \u7ED9\u51FA\u7ED3\u679C\uFF1A\u90E8\u7F72\u6210\u529F\u540E\u7ACB\u5373\u544A\u8BC9\u7528\u6237\u53EF\u8BBF\u95EE\u94FE\u63A5\uFF0C1-2 \u53E5\u8BDD\u8BF4\u660E\u5E94\u7528\u80FD\u505A\u4EC0\u4E48\u3002",
|
|
2260
|
-
"4. \u6301\u7EED\u8FED\u4EE3\uFF1A\u8981\u6539\u529F\u80FD\u6216\u6837\u5F0F\u65F6\uFF0C\u5148\u7528 appList \u627E\u5230\u76EE\u6807\u5E94\u7528\uFF0C\u518D\u6309\u300C\u5E94\u7528\u6784\u5EFA\u80FD\u529B\u5305\u300D\u7684\u64CD\u4F5C\u7EAA\u5F8B\u6267\u884C\uFF08\u6548\u7387\u4F18\u5148\u3001\u5B9A\u70B9\u4FEE\u6539\u3001SSR \u7EF4\u62A4\u3001\u9884\u68C0\u90E8\u7F72\uFF09\u3002",
|
|
2261
|
-
"",
|
|
2262
|
-
"## \u65B0\u5EFA\u5E94\u7528",
|
|
2263
|
-
"- \u63CF\u8FF0\u6E05\u6670\u5C31\u76F4\u63A5\u6784\u5EFA\u5E76\u90E8\u7F72\uFF0C\u7ED9\u51FA\u53EF\u8BBF\u95EE\u94FE\u63A5\u3002\u4E0D\u8981\u53CD\u95EE\u4E00\u5806\u7EC6\u8282\uFF0C\u5148\u505A\u51FA\u53EF\u7528\u7684\u7B2C\u4E00\u7248\u518D\u8FED\u4EE3\u3002",
|
|
2264
|
-
"",
|
|
2265
|
-
"## \u6536\u5C3E",
|
|
2266
|
-
"- \u90E8\u7F72\u6210\u529F\u540E\u4E00\u53E5\u8BDD\u7ED9\u94FE\u63A5\u5373\u53EF\u3002\u5931\u8D25\u5219\u6309\u8FD4\u56DE\u7684 issues \u5B9A\u70B9\u4FEE\u590D\u540E\u91CD\u8BD5\uFF0C\u4E0D\u8981\u505C\u4E0B\u6765\u95EE\u3002",
|
|
2267
|
-
"",
|
|
2268
|
-
"## \u5DE5\u5177",
|
|
2269
|
-
"- \u672C skill \u7684\u5DE5\u5177\uFF08app* / \u8868 / openAIGptImage \u7B49\uFF09\u7531\u300Capp-builder\u300D\u80FD\u529B\u5305\u6CE8\u5165",
|
|
2270
|
-
" \uFF08packages/ai/tools/toolPacks.ts \u7684 CAPABILITY_PACKS\uFF09\u3002\u82E5\u5F53\u524D runtime \u672A\u542F\u7528",
|
|
2271
|
-
" \u8BE5\u80FD\u529B\u5305\uFF0C\u5DE5\u5177\u9762\u4E0D\u4F1A\u5C55\u5F00\uFF0C\u9700\u8981\u5148\u786E\u8BA4\u8FD0\u884C\u73AF\u5883\u3002"
|
|
2272
|
-
].join("\n"),
|
|
2273
|
-
toolNames: []
|
|
2274
|
-
}
|
|
2275
|
-
];
|
|
2276
|
-
function seedBySlug(slug) {
|
|
2277
|
-
const seed = SPECIALIST_SKILL_SEEDS.find((item) => item.slug === slug);
|
|
2278
|
-
if (!seed) {
|
|
2279
|
-
throw new Error(`Unknown specialist skill slug: ${slug}`);
|
|
2280
|
-
}
|
|
2281
|
-
return seed;
|
|
2282
|
-
}
|
|
2283
|
-
function buildSpecialistSkillConfig(slug) {
|
|
2284
|
-
const seed = seedBySlug(slug);
|
|
2285
|
-
return {
|
|
2286
|
-
version: "0.1",
|
|
2287
|
-
kind: "skill",
|
|
2288
|
-
id: buildSpecialistSkillId(slug),
|
|
2289
|
-
name: seed.title,
|
|
2290
|
-
description: seed.description,
|
|
2291
|
-
...seed.toolNames?.length ? { toolNames: [...seed.toolNames] } : {}
|
|
2292
|
-
};
|
|
2293
|
-
}
|
|
2294
|
-
function buildSpecialistSkillContentBySlug(slug) {
|
|
2295
|
-
const seed = seedBySlug(slug);
|
|
2296
|
-
const skillConfig = buildSpecialistSkillConfig(slug);
|
|
2297
|
-
return buildSkillDocMarkdown({
|
|
2298
|
-
body: seed.body,
|
|
2299
|
-
skillConfig
|
|
2300
|
-
});
|
|
2301
|
-
}
|
|
2302
|
-
|
|
2303
|
-
// packages/ai/skills/codePlannerSkills.ts
|
|
2304
|
-
var CODE_PLANNER_SKILL_SLUGS = [
|
|
2305
|
-
"code-planning",
|
|
2306
|
-
"search-first",
|
|
2307
|
-
"workspace-code",
|
|
2308
|
-
"web-research-lite",
|
|
2309
|
-
"dispatch-executors"
|
|
2310
|
-
];
|
|
2311
|
-
var CODE_PLANNER_ROOT_SKILL_SLUG = "code-planning";
|
|
2312
|
-
function deterministicId2(prefix, seed) {
|
|
2313
|
-
let h = 2166136261;
|
|
2314
|
-
for (let i = 0; i < seed.length; i++) {
|
|
2315
|
-
h ^= seed.charCodeAt(i);
|
|
2316
|
-
h = h * 16777619 >>> 0;
|
|
2317
|
-
}
|
|
2318
|
-
const suffix = h.toString(36).toUpperCase().padStart(14, "0");
|
|
2319
|
-
return (prefix + suffix).slice(0, 26);
|
|
2320
|
-
}
|
|
2321
|
-
function normalizeSkillSeed2(input) {
|
|
2322
|
-
return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
|
|
2323
|
-
}
|
|
2324
|
-
function buildCodePlannerSkillId(slug) {
|
|
2325
|
-
return deterministicId2("01SK", normalizeSkillSeed2(slug) || slug);
|
|
2326
|
-
}
|
|
2327
|
-
function buildCodePlannerSkillPageKey(userId, slug) {
|
|
2328
|
-
return `page-${userId}-${buildCodePlannerSkillId(slug)}`;
|
|
2329
|
-
}
|
|
2330
|
-
var CODE_PLANNER_ROOT_SKILL_ID = buildCodePlannerSkillId(
|
|
2331
|
-
CODE_PLANNER_ROOT_SKILL_SLUG
|
|
2332
|
-
);
|
|
2333
|
-
function buildDispatchExecutorsPromptPatch() {
|
|
2334
|
-
return [
|
|
2335
|
-
"\u6D3E\u53D1\u534F\u8BAE\uFF1A",
|
|
2336
|
-
"- \u552F\u4E00\u771F\u5B9E\u5206\u6D3E\u901A\u9053\u662F startAgentRun\u3002\u7981\u6B62\u58F0\u79F0\u4F7F\u7528\u4E86\u672C\u673A CLI \u6216 nolo agent run\uFF08\u9664\u975E\u7528\u6237\u5F53\u524D\u4F1A\u8BDD\u672C\u8EAB\u5C31\u662F CLI\uFF09\u3002",
|
|
2337
|
-
"- \u5F53\u4EFB\u52A1\u9002\u5408\u59D4\u6D3E\u65F6\uFF0C\u5148\u8C03\u7528 listAgents \u83B7\u53D6\u5F53\u524D\u53EF\u7528\u5019\u9009\u3002",
|
|
2338
|
-
"- \u9ED8\u8BA4\u4F7F\u7528 preferred scope\uFF1B\u53EA\u6709\u6CA1\u6709\u5408\u9002\u5019\u9009\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u63A2\u7D22\u516C\u5F00 Agent \u65F6\u518D\u67E5\u8BE2 public\u3002",
|
|
2339
|
-
"- \u6839\u636E\u7528\u6237\u6307\u5B9A\u3001\u4EFB\u52A1\u80FD\u529B\u3001runtime\u3001billingSource\u3001availability\u3001cost \u548C\u53EF\u7528 quality evidence \u9009\u62E9\u3002",
|
|
2340
|
-
"- agentKey \u5FC5\u987B\u539F\u6837\u590D\u5236 listAgents \u8FD4\u56DE\u503C\u3002",
|
|
2341
|
-
"- \u7136\u540E\u8C03\u7528 startAgentRun\u3002",
|
|
2342
|
-
"- \u4E0D\u5047\u8BBE\u4EFB\u4F55\u56FA\u5B9A implementer/reviewer/coder \u89D2\u8272\u3002",
|
|
2343
|
-
"- \u4E0D\u7EF4\u62A4\u9759\u6001\u5E73\u53F0 executor pool\u3002",
|
|
2344
|
-
"- started \u2260 completed\uFF1AstartAgentRun \u6210\u529F\u8FD4\u56DE\u771F\u5B9E runId\uFF08\u540C\u6B65 wait:true \u5219\u8FD4\u56DE\u7ED3\u679C\uFF09\u540E\u624D\u80FD\u8BF4\u300C\u5DF2\u542F\u52A8\u300D\uFF1B\u5F02\u6B65\u6D3E\u53D1\u6210\u529F\u53EA\u8868\u793A started\u3002",
|
|
2345
|
-
"- \u591A\u6587\u4EF6\u5B9E\u73B0\u3001\u5927\u91CD\u6784\u3001\u65B0\u5EFA\u6A21\u5757\u5E94\u6D3E\u53D1\u6267\u884C\u8005\uFF1B\u5355\u70B9\u5C0F\u6539\u53EF\u76F4\u63A5\u7528\u5DE5\u4F5C\u533A\u5DE5\u5177\u5B8C\u6210\u3002",
|
|
2346
|
-
"- \u4E0D\u8981\u5199\u6B7B owner \u79C1\u6709 agentKey\u3002"
|
|
2347
|
-
].join("\n");
|
|
2348
|
-
}
|
|
2349
|
-
var CODE_PLANNER_SKILL_SEEDS = [
|
|
2350
|
-
{
|
|
2351
|
-
slug: "search-first",
|
|
2352
|
-
title: "search-first",
|
|
2353
|
-
description: "Search-first protocol for code work: repo before web; evaluate Adopt/Extend/Compose/Build.",
|
|
2354
|
-
body: [
|
|
2355
|
-
"# search-first",
|
|
2356
|
-
"",
|
|
2357
|
-
"Protocol-only skill. It does not grant tools by itself.",
|
|
2358
|
-
"Use workspace and web skills for actual reads/searches."
|
|
2359
|
-
].join("\n"),
|
|
2360
|
-
triggerMode: "required",
|
|
2361
|
-
promptPatch: [
|
|
2362
|
-
"Search-first \u534F\u8BAE\uFF1A",
|
|
2363
|
-
"1. \u5148\u5728\u7ED1\u5B9A\u5DE5\u4F5C\u533A/\u4ED3\u5E93\u5185\u641C\u7D22\u76F8\u5173\u6A21\u5757\u3001\u6D4B\u8BD5\u3001guidance\u3001\u65E2\u6709 helper \u4E0E\u6A21\u5F0F\u3002",
|
|
2364
|
-
"2. \u4EC5\u5F53\u4ED3\u5E93\u5185\u4FE1\u606F\u4E0D\u8DB3\uFF0C\u6216\u9700\u8981\u6838\u5BF9 API/\u7248\u672C/\u5DF2\u77E5 issue \u65F6\uFF0C\u518D\u67E5\u4F9D\u8D56\u6E90\u7801\u3001\u5B98\u65B9\u6587\u6863\u3001GitHub\u3001Web\u3002",
|
|
2365
|
-
"3. \u8BC4\u4EF7\u8DEF\u5F84\uFF1AAdopt / Extend / Compose / Build\u3002\u9ED8\u8BA4\u4F18\u5148 Adopt/Extend/Compose\uFF1BBuild \u9700\u8BF4\u660E\u4E3A\u4F55\u4E0D\u591F\u3002",
|
|
2366
|
-
"4. \u4EA7\u51FA\u53EF\u6267\u884C\u8BA1\u5212\uFF1A\u76EE\u6807\u3001\u8FB9\u754C\u3001\u5173\u952E\u6587\u4EF6\u3001\u9A8C\u8BC1\u65B9\u5F0F\u3001\u98CE\u9669\uFF1B\u518D\u6309\u7528\u6237\u610F\u56FE\u51B3\u5B9A\u53EA\u7ED9\u8BA1\u5212\u3001\u81EA\u5DF1\u5C0F\u6539\uFF0C\u8FD8\u662F startAgentRun \u6D3E\u53D1\u3002",
|
|
2367
|
-
"5. \u5DE5\u5177\u9884\u7B97\uFF1A\u7B80\u5355\u95EE\u7B54\u5C3D\u91CF \u22645 \u6B21\u5DE5\u5177\u8C03\u7528\uFF1B\u7981\u6B62\u65E0\u76EE\u6807\u8FDE\u8BFB\u5927\u91CF\u6587\u4EF6\u3002",
|
|
2368
|
-
"6. \u4ECE\u672A\u8C03\u7528\u7684\u6E20\u9053\u7981\u6B62\u58F0\u79F0\u5DF2\u641C\u7D22/\u5DF2\u68C0\u67E5\u3002"
|
|
2369
|
-
].join("\n")
|
|
2370
|
-
},
|
|
2371
|
-
{
|
|
2372
|
-
slug: "workspace-code",
|
|
2373
|
-
title: "workspace-code",
|
|
2374
|
-
description: "Workspace read/edit/shell protocol for local bound folders and repo inspection.",
|
|
2375
|
-
body: [
|
|
2376
|
-
"# workspace-code",
|
|
2377
|
-
"",
|
|
2378
|
-
"Declares local workspace tools and the honest fallback when they are unavailable."
|
|
2379
|
-
].join("\n"),
|
|
2380
|
-
triggerMode: "required",
|
|
2381
|
-
toolNames: [
|
|
2382
|
-
"readFile",
|
|
2383
|
-
"globFiles",
|
|
2384
|
-
"editFile",
|
|
2385
|
-
"execShell"
|
|
2386
|
-
],
|
|
2387
|
-
promptPatch: [
|
|
2388
|
-
"\u5DE5\u4F5C\u533A\u534F\u8BAE\uFF1A",
|
|
2389
|
-
"- Desktop/Space \u4EE3\u7801\u5BF9\u8BDD\u4E2D\uFF0C\u7528\u6237\u8BF4\u300C\u5F53\u524D\u4EE3\u7801\u300D\u300C\u5F53\u524D\u6539\u52A8\u300D\u300C\u5F53\u524D\u5DE5\u4F5C\u533A\u300D\u300C\u8FD9\u4E2A\u9879\u76EE\u300D\u300C\u4ED3\u5E93\u91CC\u300D\uFF0C\u6216\u70B9\u540D\u4ED3\u5E93\u7EC4\u4EF6\uFF08\u5982\u300CCLI \u76F8\u5173\u300D\uFF09\u65F6\uFF0C\u9ED8\u8BA4\u6307\u7ED1\u5B9A\u5DE5\u4F5C\u533A\uFF1B\u7ACB\u5373\u7528\u5DE5\u4F5C\u533A/shell \u5DE5\u5177\u68C0\u67E5\u3002\u4EE3\u7801\u6539\u52A8 review \u65F6\u5148\u4ECE git status -sb\u3001diff/stat\u3001\u76F8\u5173 guidance/tests \u5165\u624B\u3002\u4E0D\u8981\u8981\u6C42\u7528\u6237\u7C98\u8D34\u4EE3\u7801/diff\uFF0C\u9664\u975E\u5DE5\u4F5C\u533A\u5DE5\u5177\u786E\u5B9E\u4E0D\u53EF\u7528\u3001\u6CA1\u6709\u7ED1\u5B9A\u6587\u4EF6\u5939\uFF0C\u6216\u8BBF\u95EE/\u547D\u4EE4\u5931\u8D25\u2014\u2014\u5148\u62AB\u9732\u5931\u8D25\u518D\u9000\u56DE\u7C98\u8D34\u3002",
|
|
2390
|
-
"- \u53EA\u8BFB\uFF1AreadFile\u3001globFiles\u3002\u76EE\u5F55\u7ED3\u6784\u4E0E\u6587\u4EF6\u5217\u8868\u4F18\u5148\u4F7F\u7528 execShell \u8FD0\u884C ls/find\uFF0C\u4EE3\u7801/\u6587\u672C\u641C\u7D22\u4F18\u5148\u4F7F\u7528 execShell \u8FD0\u884C rg/git grep\u3002\u6CA1\u6709\u6210\u529F\u7ED3\u679C\u65F6\uFF0C\u7981\u6B62\u58F0\u79F0\u300C\u5DF2\u68C0\u67E5\u4ED3\u5E93/\u5DE5\u4F5C\u533A/\u6587\u4EF6\u300D\u3002",
|
|
2391
|
-
"- editFile\uFF1A\u5C0F\u8303\u56F4\u7CBE\u786E\u66FF\u6362\u3002edit \u524D\u5148 readFile \u62FF exact oldText\uFF1B\u9ED8\u8BA4 expectedReplacements=1\uFF0C\u5339\u914D\u6570\u4E0D\u7B26\u65F6\u505C\u5E76\u62A5\u544A blocker\u3002\u6CA1\u6709 writeFile\u2014\u2014\u9700\u8981\u65B0\u5EFA\u6587\u4EF6\u6216\u6574\u6587\u4EF6\u91CD\u5199\u65F6 startAgentRun \u6D3E\u53D1\u3002",
|
|
2392
|
-
"- execShell\uFF1A\u4F18\u5148\u53EA\u8BFB/\u8BCA\u65AD\u3002git \u72B6\u6001\u7528 shell\uFF08\u5982 git status -sb\uFF09\uFF0C\u7981\u6B62\u7528 readFile \u6316 .git \u4EE3\u66FF\u3002\u7834\u574F\u6027\u547D\u4EE4\u4E0E\u672A\u6279\u51C6\u7684 push/\u5408\u5E76\u7981\u6B62\u3002",
|
|
2393
|
-
"- \u5DE5\u4F5C\u533A\u5DE5\u5177\u4E0D\u53EF\u7528\uFF08\u975E Desktop\u3001\u672A\u7ED1\u5B9A boundFolder\u3001\u5DE5\u5177\u5931\u8D25\uFF09\u65F6\u5FC5\u987B\u62AB\u9732\uFF0C\u5E76\u53EA\u57FA\u4E8E\u7528\u6237\u7C98\u8D34\u5185\u5BB9\u4E0E\u4ECD\u53EF\u7528\u6E20\u9053\u7EE7\u7EED\u3002"
|
|
2394
|
-
].join("\n")
|
|
2395
|
-
},
|
|
2396
|
-
{
|
|
2397
|
-
slug: "web-research-lite",
|
|
2398
|
-
title: "web-research-lite",
|
|
2399
|
-
description: "Lite web verification protocol for dependency/docs/issue lookups.",
|
|
2400
|
-
body: [
|
|
2401
|
-
"# web-research-lite",
|
|
2402
|
-
"",
|
|
2403
|
-
"Declares external search/scrape tools for verification after local search."
|
|
2404
|
-
].join("\n"),
|
|
2405
|
-
triggerMode: "required",
|
|
2406
|
-
// 刻意不声明 toolNames:联网能力是系统层能力包(web-search / web-scrape),
|
|
2407
|
-
// 不编码的对话同样需要,不该由 Code Planner 私藏一份。这里只留协议,工具由
|
|
2408
|
-
// 宿主按能力包挂载,用户在设置页的全局开关才能真正管住它们。
|
|
2409
|
-
promptPatch: [
|
|
2410
|
-
"\u5916\u90E8\u68C0\u7D22\u534F\u8BAE\uFF1A",
|
|
2411
|
-
"- \u8054\u7F51\u5DE5\u5177\u7531\u5E73\u53F0\u80FD\u529B\u5305\u63D0\u4F9B\uFF08\u8054\u7F51\u641C\u7D22 / \u6DF1\u5EA6\u7F51\u9875\u6293\u53D6\uFF09\uFF0C\u7528\u6237\u53EF\u80FD\u5DF2\u5168\u5C40\u5173\u95ED\u3002",
|
|
2412
|
-
"- \u53EA\u4F7F\u7528\u672C\u8F6E\u5B9E\u9645\u62FF\u5230\u7684\u5DE5\u5177\uFF1B\u5DE5\u5177\u4E0D\u5728\u624B\u4E0A\u65F6\u5982\u5B9E\u8BF4\u660E\u300C\u8054\u7F51\u80FD\u529B\u672A\u5F00\u542F\u300D\uFF0C\u4E0D\u8981\u81C6\u9020\u8C03\u7528\u3002",
|
|
2413
|
-
"- \u6CA1\u6709\u6210\u529F\u7ED3\u679C\u65F6\uFF0C\u7981\u6B62\u58F0\u79F0\u300C\u5DF2\u641C\u7D22\u4F9D\u8D56/\u5B98\u65B9\u6587\u6863/GitHub/Web\u300D\u3002",
|
|
2414
|
-
"- \u6E20\u9053\u5931\u8D25\u6216\u4E0D\u53EF\u7528\u65F6\u5FC5\u987B\u62AB\u9732\u7F3A\u53E3\uFF0C\u6539\u7528\u4ECD\u53EF\u7528\u5DE5\u5177\uFF1B\u4E0D\u8981\u5047\u88C5\u5DF2\u6838\u5B9E\u3002"
|
|
2415
|
-
].join("\n")
|
|
2416
|
-
},
|
|
2417
|
-
{
|
|
2418
|
-
slug: "dispatch-executors",
|
|
2419
|
-
title: "dispatch-executors",
|
|
2420
|
-
description: "listAgents discovery and startAgentRun dispatch protocol for Code Planner.",
|
|
2421
|
-
body: [
|
|
2422
|
-
"# dispatch-executors",
|
|
2423
|
-
"",
|
|
2424
|
-
"Discover candidates via listAgents and dispatch chosen exact agentKey via startAgentRun."
|
|
2425
|
-
].join("\n"),
|
|
2426
|
-
triggerMode: "required",
|
|
2427
|
-
toolNames: ["listAgents", "startAgentRun"],
|
|
2428
|
-
promptPatch: buildDispatchExecutorsPromptPatch()
|
|
2429
|
-
},
|
|
2430
|
-
{
|
|
2431
|
-
slug: "code-planning",
|
|
2432
|
-
title: "code-planning",
|
|
2433
|
-
description: "Root Code Planner skill: composes search-first, workspace, web, and dispatch skills.",
|
|
2434
|
-
body: [
|
|
2435
|
-
"# code-planning",
|
|
2436
|
-
"",
|
|
2437
|
-
"Composition-only root skill for Code Planner.",
|
|
2438
|
-
"Attach this skill on the Agent; children load via requiredSkills.",
|
|
2439
|
-
"Until runtimes expand skill pages, Agent seed also carries a compiled snapshot."
|
|
2440
|
-
].join("\n"),
|
|
2441
|
-
triggerMode: "required",
|
|
2442
|
-
requiredSkillSlugs: [
|
|
2443
|
-
"search-first",
|
|
2444
|
-
"workspace-code",
|
|
2445
|
-
"web-research-lite",
|
|
2446
|
-
"dispatch-executors"
|
|
2447
|
-
]
|
|
2448
|
-
}
|
|
2449
|
-
];
|
|
2450
|
-
function seedBySlug2(slug) {
|
|
2451
|
-
const seed = CODE_PLANNER_SKILL_SEEDS.find((item) => item.slug === slug);
|
|
2452
|
-
if (!seed) {
|
|
2453
|
-
throw new Error(`Unknown Code Planner skill slug: ${slug}`);
|
|
2454
|
-
}
|
|
2455
|
-
return seed;
|
|
2456
|
-
}
|
|
2457
|
-
function collectCodePlannerReachableSkillSlugs(rootSlug = CODE_PLANNER_ROOT_SKILL_SLUG) {
|
|
2458
|
-
const ordered = [];
|
|
2459
|
-
const seen = /* @__PURE__ */ new Set();
|
|
2460
|
-
const visit = (slug) => {
|
|
2461
|
-
if (seen.has(slug)) return;
|
|
2462
|
-
seen.add(slug);
|
|
2463
|
-
ordered.push(slug);
|
|
2464
|
-
for (const child of seedBySlug2(slug).requiredSkillSlugs ?? []) {
|
|
2465
|
-
visit(child);
|
|
2466
|
-
}
|
|
2467
|
-
};
|
|
2468
|
-
visit(rootSlug);
|
|
2469
|
-
return ordered;
|
|
2470
|
-
}
|
|
2471
|
-
function compileCodePlannerEffectiveTools() {
|
|
2472
|
-
const tools = [];
|
|
2473
|
-
const seen = /* @__PURE__ */ new Set();
|
|
2474
|
-
for (const slug of collectCodePlannerReachableSkillSlugs()) {
|
|
2475
|
-
for (const toolName of seedBySlug2(slug).toolNames ?? []) {
|
|
2476
|
-
if (seen.has(toolName)) continue;
|
|
2477
|
-
seen.add(toolName);
|
|
2478
|
-
tools.push(toolName);
|
|
2479
|
-
}
|
|
2480
|
-
}
|
|
2481
|
-
return tools;
|
|
2482
|
-
}
|
|
2483
|
-
var CODE_PLANNER_COMPILED_EFFECTIVE_TOOLS = compileCodePlannerEffectiveTools();
|
|
2484
|
-
function buildCodePlannerSkillConfig(slug, options) {
|
|
2485
|
-
const seed = seedBySlug2(slug);
|
|
2486
|
-
const requiredSkills = options?.requiredSkills ?? seed.requiredSkillSlugs?.map((childSlug) => buildCodePlannerSkillId(childSlug));
|
|
2487
|
-
return {
|
|
2488
|
-
version: "0.1",
|
|
2489
|
-
kind: "skill",
|
|
2490
|
-
id: buildCodePlannerSkillId(slug),
|
|
2491
|
-
name: seed.title,
|
|
2492
|
-
description: seed.description,
|
|
2493
|
-
...seed.triggerMode ? { triggerMode: seed.triggerMode } : {},
|
|
2494
|
-
...seed.toolNames?.length ? { toolNames: [...seed.toolNames] } : {},
|
|
2495
|
-
...requiredSkills?.length ? { requiredSkills: [...requiredSkills] } : {},
|
|
2496
|
-
...seed.promptPatch ? { promptPatch: seed.promptPatch } : {}
|
|
2497
|
-
};
|
|
2498
|
-
}
|
|
2499
|
-
function buildCodePlannerSkillPageRecords(userId) {
|
|
2500
|
-
const trimmedUserId = userId.trim();
|
|
2501
|
-
if (!trimmedUserId) {
|
|
2502
|
-
throw new Error("buildCodePlannerSkillPageRecords requires userId");
|
|
2503
|
-
}
|
|
2504
|
-
return CODE_PLANNER_SKILL_SEEDS.map((seed) => {
|
|
2505
|
-
const skillId = buildCodePlannerSkillId(seed.slug);
|
|
2506
|
-
const dbKey = buildCodePlannerSkillPageKey(trimmedUserId, seed.slug);
|
|
2507
|
-
const requiredSkills = seed.requiredSkillSlugs?.map(
|
|
2508
|
-
(childSlug) => buildCodePlannerSkillPageKey(trimmedUserId, childSlug)
|
|
2509
|
-
);
|
|
2510
|
-
const skillConfig = buildCodePlannerSkillConfig(seed.slug, {
|
|
2511
|
-
requiredSkills
|
|
2512
|
-
});
|
|
2513
|
-
return {
|
|
2514
|
-
slug: seed.slug,
|
|
2515
|
-
skillId,
|
|
2516
|
-
dbKey,
|
|
2517
|
-
title: seed.title,
|
|
2518
|
-
content: buildSkillDocMarkdown({
|
|
2519
|
-
body: seed.body,
|
|
2520
|
-
skillConfig
|
|
2521
|
-
}),
|
|
2522
|
-
meta: {
|
|
2523
|
-
kind: "skill",
|
|
2524
|
-
skillConfig
|
|
2525
|
-
},
|
|
2526
|
-
...skillConfig.toolNames?.length ? { tools: [...skillConfig.toolNames] } : {}
|
|
2527
|
-
};
|
|
2528
|
-
});
|
|
2529
|
-
}
|
|
2530
|
-
|
|
2531
|
-
// packages/ai/skills/searchDialogSkill.ts
|
|
2532
|
-
var SEARCH_DIALOG_SKILL_SLUGS = [
|
|
2533
|
-
"search-dialog-messages"
|
|
2534
|
-
];
|
|
2535
|
-
function deterministicId3(prefix, seed) {
|
|
2536
|
-
let h = 2166136261;
|
|
2537
|
-
for (let i = 0; i < seed.length; i++) {
|
|
2538
|
-
h ^= seed.charCodeAt(i);
|
|
2539
|
-
h = h * 16777619 >>> 0;
|
|
2540
|
-
}
|
|
2541
|
-
const suffix = h.toString(36).toUpperCase().padStart(14, "0");
|
|
2542
|
-
return (prefix + suffix).slice(0, 26);
|
|
2543
|
-
}
|
|
2544
|
-
function normalizeSkillSeed3(input) {
|
|
2545
|
-
return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
|
|
2546
|
-
}
|
|
2547
|
-
function buildSearchDialogSkillId(slug) {
|
|
2548
|
-
return deterministicId3("01SK", normalizeSkillSeed3(slug) || slug);
|
|
2549
|
-
}
|
|
2550
|
-
function buildSearchDialogSkillPageKey(userId, slug) {
|
|
2551
|
-
return `page-${userId}-${buildSearchDialogSkillId(slug)}`;
|
|
2552
|
-
}
|
|
2553
|
-
var SEARCH_DIALOG_SKILL_SEEDS = [
|
|
2554
|
-
{
|
|
2555
|
-
slug: "search-dialog-messages",
|
|
2556
|
-
title: "\u5BF9\u8BDD\u68C0\u7D22",
|
|
2557
|
-
description: "\u5BF9\u8BDD\u68C0\u7D22\uFF1AlistDialogs \u5217\u51FA\u5F53\u524D\u7528\u6237\u7684\u5BF9\u8BDD\uFF08\u9ED8\u8BA4 100 \u6761\u3001\u4E0A\u9650 500\uFF09\uFF0C\u7528\u4E8E\u5728\u76EE\u6807\u5BF9\u8BDD\u4E0D\u660E\u786E\u65F6\u5148\u5B9A\u4F4D\uFF1BreadDialog \u8BFB\u53D6\u6307\u5B9A\u5BF9\u8BDD\u7684\u5143\u6570\u636E\u4E0E\u6700\u8FD1\u6D88\u606F\uFF08dialog \u4F18\u5148\u4F20\u5B8C\u6574 dbKey dialog-<userId>-<id> \u6216\u5BF9\u8BDD URL\uFF0C\u88F8 ID \u4EC5\u5BF9\u5F53\u524D\u767B\u5F55\u7528\u6237\u6709\u6548\uFF09\uFF1BsearchDialogMessages \u5728\u6307\u5B9A\u5BF9\u8BDD\u7684\u539F\u59CB\u6D88\u606F\u4E2D\u6309\u7CBE\u786E\u6216\u6A21\u7CCA\u6587\u672C\u641C\u7D22\uFF0C\u8FD4\u56DE\u5339\u914D\u7684 messageId\u3001\u89D2\u8272\u3001\u88C1\u526A\u540E\u7684\u539F\u6587\u7247\u6BB5\u4E0E\u90BB\u8FD1\u4E0A\u4E0B\u6587\uFF0C\u4E0D\u628A\u6574\u6BB5\u5BF9\u8BDD\u704C\u8FDB\u6A21\u578B\u4E0A\u4E0B\u6587\u3002",
|
|
2558
|
-
body: [
|
|
2559
|
-
"\u4F60\u662F\u300C\u5BF9\u8BDD\u68C0\u7D22\u300D\u80FD\u529B\u7684\u4F7F\u7528\u8005\uFF1A\u9700\u8981\u8BFB\u53D6\u6216\u53D6\u8BC1\u67D0\u6BB5\u5BF9\u8BDD\u65F6\uFF0C\u5728\u672C skill \u7684 listDialogs\u3001readDialog \u4E0E searchDialogMessages \u4E09\u4E2A\u5DE5\u5177\u4E2D\u9009\u62E9\u5408\u9002\u7684\u90A3\u4E2A\u3002",
|
|
2560
|
-
"",
|
|
2561
|
-
"## \u4EC0\u4E48\u65F6\u5019\u7528",
|
|
2562
|
-
"- \u7528\u6237\u8981\u7CBE\u786E\u7684\u65E7\u6D88\u606F\u3001\u539F\u6587\u63AA\u8F9E\u3001\u8C01\u8BF4\u4E86\u4EC0\u4E48\u3001\u67D0\u4E2A\u51B3\u7B56\u4E3A\u4EC0\u4E48\u505A\u51FA\u3001\u65E9\u671F\u5386\u53F2\u7EC6\u8282\u3002",
|
|
2563
|
-
"- \u9700\u8981\u6587\u4EF6/\u5DE5\u5177\u8BC1\u636E\u3001\u5931\u8D25\u5C1D\u8BD5\u3001\u6216\u4E0E\u4E4B\u524D\u5DE5\u4F5C\u7684\u5BF9\u6BD4\uFF08\u6765\u81EA\u88AB\u5F15\u7528\u5BF9\u8BDD\uFF09\u3002",
|
|
2564
|
-
"- \u76EE\u6807\u5BF9\u8BDD\u4E0D\u660E\u786E\u3001\u9700\u8981\u5148\u5217\u51FA\u5019\u9009\u5BF9\u8BDD\uFF08\u5F53\u524D\u7528\u6237\u7684\u5BF9\u8BDD\u5217\u8868\uFF09\u65F6\uFF0C\u7528 listDialogs\u3002",
|
|
2565
|
-
"- \u5F53\u524D\u4E0A\u4E0B\u6587\u53EA\u6709\u6709\u635F\u7684\u5BF9\u8BDD\u6458\u8981\uFF0C\u800C\u7528\u6237\u9700\u8981\u8BC1\u636E\u3001\u51FA\u5904\u6216\u5177\u4F53\u5386\u53F2\u7EC6\u8282\u65F6\u2014\u2014\u4F18\u5148\u7528\u672C skill\uFF0C\u4E0D\u8981\u51ED\u6458\u8981\u731C\u3002",
|
|
2566
|
-
"",
|
|
2567
|
-
"## listDialogs\uFF1A\u5B9A\u4F4D\u5BF9\u8BDD",
|
|
2568
|
-
"\u5217\u51FA\u5F53\u524D\u7528\u6237\u7684\u5BF9\u8BDD\uFF1A`listDialogs({ limit?, space?, includeScheduled? })`\u3002",
|
|
2569
|
-
"- \u8FD4\u56DE `{ total, dialogs: [{ id, dbKey, title, status, updatedAt, createdAt, spaceId, triggerType, primaryAgentKey }] }`\uFF0C\u6309\u6700\u8FD1\u66F4\u65B0\u6392\u5E8F\u3002",
|
|
2570
|
-
"- limit \u63A7\u5236\u8FD4\u56DE\u6761\u6570\uFF08\u9ED8\u8BA4 100\uFF0C\u4E0A\u9650 500\uFF09\uFF1Bspace \u53EF\u4F20 space id \u6216 URL \u6536\u7A84\u8303\u56F4\uFF1BincludeScheduled \u63A7\u5236\u662F\u5426\u5305\u542B\u5B9A\u65F6/\u540E\u53F0\u8FD0\u884C\u5BF9\u8BDD\uFF08\u9ED8\u8BA4\u4E0D\u542B\uFF09\u3002",
|
|
2571
|
-
"- \u76EE\u6807\u5BF9\u8BDD\u4E0D\u660E\u786E\u65F6\u5148\u7528\u5B83\u5B9A\u4F4D\uFF1A\u4ECE\u7ED3\u679C\u91CC\u53D6 dbKey \u6216 URL \u4EA4\u7ED9 readDialog / searchDialogMessages\uFF0C\u4E0D\u8981\u7528\u88F8 ID\u3002",
|
|
2572
|
-
"",
|
|
2573
|
-
"## readDialog\uFF1A\u8BFB\u53D6\u5BF9\u8BDD",
|
|
2574
|
-
'\u8BFB\u53D6\u6307\u5B9A\u5BF9\u8BDD\u7684\u5143\u6570\u636E\u4E0E\u6700\u8FD1\u6D88\u606F\uFF1A`readDialog({ dialog: "<dialog \u7684 dbKey>" })`\u3002',
|
|
2575
|
-
"- dialog \u4F18\u5148\u4F20\u5B8C\u6574 dbKey\uFF08dialog-<userId>-<id>\uFF09\u6216\u5BF9\u8BDD URL\uFF1B\u88F8 ID \u53EA\u5BF9\u5F53\u524D\u767B\u5F55\u7528\u6237\u6709\u6548\uFF0C\u4E0D\u80FD\u53EF\u9760\u8BFB\u53D6\u5176\u4ED6\u7528\u6237\u6216\u8DE8\u670D\u52A1\u5668\u7684\u5BF9\u8BDD\u3002",
|
|
2576
|
-
"- \u76EE\u6807\u5BF9\u8BDD\u4E0D\u660E\u786E\u65F6\uFF0C\u5148 listDialogs \u5B9A\u4F4D\u518D\u8BFB\u53D6\u3002",
|
|
2577
|
-
"- limit \u63A7\u5236\u8FD4\u56DE\u6D88\u606F\u6761\u6570\uFF08\u9ED8\u8BA4 120\uFF0C\u4E0A\u9650 1000\uFF09\u3002",
|
|
2578
|
-
"",
|
|
2579
|
-
"## searchDialogMessages\uFF1A\u539F\u6587\u641C\u7D22",
|
|
2580
|
-
'\u57FA\u672C\u5F62\u5F0F\uFF1A`searchDialogMessages({ dialogKey: "<dialog \u7684 dbKey>", query: "<\u8981\u641C\u7684\u6587\u672C>" })`',
|
|
2581
|
-
"",
|
|
2582
|
-
"\u53C2\u6570\uFF1A",
|
|
2583
|
-
"- dialogKey\uFF1A\u76EE\u6807\u5BF9\u8BDD\u7684 dbKey\uFF08\u5F62\u5982 dialog-<userId>-01ABC...\uFF09\u3002",
|
|
2584
|
-
"- query\uFF1A\u8981\u5728\u539F\u59CB\u6D88\u606F\u5185\u5BB9\u91CC\u641C\u7D22\u7684\u6587\u672C\u3002",
|
|
2585
|
-
"- limit\uFF1A\u6700\u591A\u8FD4\u56DE\u591A\u5C11\u6761\u5339\u914D\uFF08\u4E0A\u9650 10\uFF09\u3002",
|
|
2586
|
-
"- scanLimit\uFF1A\u4ECE server \u62C9\u53D6\u65F6\u6700\u591A\u626B\u63CF\u591A\u5C11\u6761\u6D88\u606F\uFF08\u4E0A\u9650 500\uFF09\u3002",
|
|
2587
|
-
"- contextMessages\uFF1A\u6BCF\u6761\u5339\u914D\u524D\u540E\u9644\u5E26\u591A\u5C11\u6761\u90BB\u8FD1\u6D88\u606F\uFF08\u4E0A\u9650 3\uFF09\u3002",
|
|
2588
|
-
"- role\uFF1A\u53EF\u9009\uFF0C\u53EA\u641C\u6307\u5B9A\u89D2\u8272\uFF08user / assistant / tool / system\uFF09\u3002",
|
|
2589
|
-
"- includeTools\uFF1A\u53EF\u9009\uFF0C\u662F\u5426\u5305\u542B tool \u6D88\u606F\u3002",
|
|
2590
|
-
"",
|
|
2591
|
-
"## \u8FD4\u56DE",
|
|
2592
|
-
"searchDialogMessages \u8FD4\u56DE\u5339\u914D\u7684 messageId\u3001\u89D2\u8272\u3001\u88C1\u526A\u540E\u7684\u539F\u6587\u5185\u5BB9\u7247\u6BB5\u4EE5\u53CA\u90BB\u8FD1\u4E0A\u4E0B\u6587\u3002",
|
|
2593
|
-
"\u57FA\u4E8E\u8FD4\u56DE\u7684\u539F\u6587\u7247\u6BB5\u56DE\u7B54\u7528\u6237\uFF0C\u5F15\u7528\u65F6\u4FDD\u6301\u539F\u6587\uFF1B\u7247\u6BB5\u88AB\u88C1\u526A\u65F6\uFF0C\u5982\u9700\u66F4\u5B8C\u6574\u5185\u5BB9\u518D\u9488\u5BF9\u6027\u7F29\u5C0F\u67E5\u8BE2\u6216\u6362\u5173\u952E\u8BCD\u3002",
|
|
2594
|
-
"",
|
|
2595
|
-
"## \u8FB9\u754C",
|
|
2596
|
-
"- searchDialogMessages \u53EA\u641C**\u4E00\u4E2A**\u6307\u5B9A\u5BF9\u8BDD\u7684\u539F\u59CB\u6D88\u606F\uFF1B\u8DE8\u5BF9\u8BDD\u6216\u6309\u4E3B\u9898\u805A\u5408\u8BF7\u7528 queryDialogsBySubjectRef\u3002",
|
|
2597
|
-
"- listDialogs \u53EA\u5217**\u5F53\u524D\u767B\u5F55\u7528\u6237**\u7684\u5BF9\u8BDD\uFF08\u9ED8\u8BA4\u4E0D\u542B\u5B9A\u65F6/\u540E\u53F0\u8FD0\u884C\u5BF9\u8BDD\uFF0C\u9664\u975E includeScheduled\uFF09\uFF1B\u8DE8\u7528\u6237/\u8DE8\u670D\u52A1\u5668\u68C0\u7D22\u4E0D\u53D7\u652F\u6301\u3002",
|
|
2598
|
-
"- \u4E0D\u8981\u4E3A\u4E86\u300C\u591A\u62FF\u70B9\u4E0A\u4E0B\u6587\u300D\u800C\u7528\u5927 scanLimit/limit \u4EE3\u66FF readDialog \u7684\u5B8C\u6574\u8BFB\u53D6\u8BED\u4E49\uFF1B\u672C skill \u91CC readDialog \u8D1F\u8D23\u5B8C\u6574\u8BFB\u53D6\uFF0CsearchDialogMessages \u7684\u4EF7\u503C\u662F\u5B9A\u70B9\u53D6\u8BC1\u3002",
|
|
2599
|
-
"- \u641C\u4E0D\u5230\u65F6\u5982\u5B9E\u8BF4\u660E\uFF0C\u4E0D\u8981\u7528\u6458\u8981\u6216\u8BB0\u5FC6\u7F16\u9020\u539F\u6587\u3002"
|
|
2600
|
-
].join("\n"),
|
|
2601
|
-
toolNames: ["listDialogs", "readDialog", "searchDialogMessages"]
|
|
2602
|
-
}
|
|
2603
|
-
];
|
|
2604
|
-
function seedBySlug3(slug) {
|
|
2605
|
-
const seed = SEARCH_DIALOG_SKILL_SEEDS.find((item) => item.slug === slug);
|
|
2606
|
-
if (!seed) {
|
|
2607
|
-
throw new Error(`Unknown search-dialog skill slug: ${slug}`);
|
|
2608
|
-
}
|
|
2609
|
-
return seed;
|
|
2610
|
-
}
|
|
2611
|
-
function buildSearchDialogSkillConfig(slug) {
|
|
2612
|
-
const seed = seedBySlug3(slug);
|
|
2613
|
-
return {
|
|
2614
|
-
version: "0.1",
|
|
2615
|
-
kind: "skill",
|
|
2616
|
-
id: buildSearchDialogSkillId(slug),
|
|
2617
|
-
name: seed.title,
|
|
2618
|
-
description: seed.description,
|
|
2619
|
-
...seed.toolNames?.length ? { toolNames: [...seed.toolNames] } : {}
|
|
2620
|
-
};
|
|
2621
|
-
}
|
|
2622
|
-
function buildSearchDialogSkillContentBySlug(slug) {
|
|
2623
|
-
const seed = seedBySlug3(slug);
|
|
2624
|
-
const skillConfig = buildSearchDialogSkillConfig(slug);
|
|
2625
|
-
return buildSkillDocMarkdown({
|
|
2626
|
-
body: seed.body,
|
|
2627
|
-
skillConfig
|
|
2628
|
-
});
|
|
2629
|
-
}
|
|
2630
|
-
|
|
2631
|
-
// packages/ai/skills/searchSpaceSkill.ts
|
|
2632
|
-
var SEARCH_SPACE_SKILL_SLUGS = [
|
|
2633
|
-
"search-all-spaces"
|
|
2634
|
-
];
|
|
2635
|
-
function deterministicId4(prefix, seed) {
|
|
2636
|
-
let h = 2166136261;
|
|
2637
|
-
for (let i = 0; i < seed.length; i++) {
|
|
2638
|
-
h ^= seed.charCodeAt(i);
|
|
2639
|
-
h = h * 16777619 >>> 0;
|
|
2640
|
-
}
|
|
2641
|
-
const suffix = h.toString(36).toUpperCase().padStart(14, "0");
|
|
2642
|
-
return (prefix + suffix).slice(0, 26);
|
|
2643
|
-
}
|
|
2644
|
-
function normalizeSkillSeed4(input) {
|
|
2645
|
-
return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
|
|
2646
|
-
}
|
|
2647
|
-
function buildSearchSpaceSkillId(slug) {
|
|
2648
|
-
return deterministicId4("01SK", normalizeSkillSeed4(slug) || slug);
|
|
2649
|
-
}
|
|
2650
|
-
function buildSearchSpaceSkillPageKey(userId, slug) {
|
|
2651
|
-
return `page-${userId}-${buildSearchSpaceSkillId(slug)}`;
|
|
2652
|
-
}
|
|
2653
|
-
var SEARCH_SPACE_SKILL_SEEDS = [
|
|
2654
|
-
{
|
|
2655
|
-
slug: "search-all-spaces",
|
|
2656
|
-
title: "\u5168\u7A7A\u95F4\u641C\u7D22",
|
|
2657
|
-
description: "\u5168\u7A7A\u95F4\u641C\u7D22\uFF1A\u4F7F\u7528 search_all_spaces \u5728\u5F53\u524D\u8BBE\u5907\u5DF2\u540C\u6B65\u7684\u5168\u90E8\u5185\u5BB9\u4E2D\u641C\u7D22\u5F53\u524D\u7528\u6237\u7684\u6570\u636E\uFF08\u7B49\u540C\u4E8E\u5168\u90E8\u89C6\u56FE Recent \u7684\u5185\u5BB9\u8BED\u4E49\uFF09\uFF0C\u5E76\u8FD4\u56DE\u6240\u5C5E\u7A7A\u95F4\uFF08\u5982\u6709\uFF09\u3002\u9002\u5408\u5728\u5168\u90E8\u89C6\u56FE\uFF08All View\uFF09\u6216\u9700\u8981\u8DE8\u7A7A\u95F4\u68C0\u7D22\u65F6\u4F7F\u7528\u3002",
|
|
2658
|
-
body: [
|
|
2659
|
-
"\u4F60\u662F\u300C\u5168\u7A7A\u95F4\u641C\u7D22\u300D\u80FD\u529B\u7684\u4F7F\u7528\u8005\uFF1A\u9700\u8981\u8DE8\u7A7A\u95F4\u3001\u6216\u5728\u6CA1\u6709\u300C\u5F53\u524D\u7A7A\u95F4\u300D\u8BED\u4E49\u7684\u4E0A\u4E0B\u6587\u4E2D\u68C0\u7D22\u7528\u6237\u5185\u5BB9\u65F6\uFF0C\u4F7F\u7528\u672C skill \u7684 search_all_spaces \u5DE5\u5177\u3002",
|
|
2660
|
-
"",
|
|
2661
|
-
"## \u4EC0\u4E48\u65F6\u5019\u7528",
|
|
2662
|
-
"- \u7528\u6237\u8981\u8DE8\u7A7A\u95F4\u67E5\u627E\u5185\u5BB9\uFF08\u9875\u9762\u3001\u8868\u683C\u3001\u5BF9\u8BDD\u7B49\uFF09\uFF0C\u4E14\u4E0D\u9650\u5B9A\u5728\u67D0\u4E2A\u5177\u4F53\u7A7A\u95F4\u3002",
|
|
2663
|
-
"- \u5F53\u524D\u89C6\u56FE\u662F\u5168\u90E8\u89C6\u56FE\uFF08All View\uFF09\uFF1A\u6CA1\u6709\u5F53\u524D\u7A7A\u95F4\uFF0Csearch_workspace \u4E0D\u9002\u7528\uFF0C\u4F18\u5148\u7528\u672C skill\u3002",
|
|
2664
|
-
"- \u9700\u8981\u786E\u8BA4\u67D0\u6761\u5185\u5BB9\u5C5E\u4E8E\u54EA\u4E2A\u7A7A\u95F4\uFF08\u8FD4\u56DE\u7ED3\u679C\u5E26 spaceId / spaceName\uFF09\u65F6\u3002",
|
|
2665
|
-
"",
|
|
2666
|
-
"## \u8C03\u7528\u65B9\u5F0F",
|
|
2667
|
-
'`search_all_spaces({ query: "<\u5173\u952E\u8BCD>" })`',
|
|
2668
|
-
"- query\uFF1A\u641C\u7D22\u5173\u952E\u8BCD\uFF0C\u5339\u914D\u6807\u9898\u4E0E\u6587\u4EF6\u540D\uFF08contentKey\uFF09\u3002",
|
|
2669
|
-
"- \u8FD4\u56DE rawData.contents\uFF1A\u6BCF\u9879\u5305\u542B title\u3001type\u3001contentKey\u3001spaceId\u3001spaceName\uFF08\u5982\u6709\uFF09\u3001createdAt / updatedAt\u3001serverOrigin\uFF08\u5982\u6709\uFF09\u3002",
|
|
2670
|
-
"",
|
|
2671
|
-
"## \u8BED\u4E49\u4E0E\u8FB9\u754C",
|
|
2672
|
-
"- \u641C\u7D22\u8303\u56F4 = \u5F53\u524D\u8BBE\u5907\u5DF2\u540C\u6B65\u7684 user-data \u5185\u5BB9\uFF08\u4E0E\u300C\u5168\u90E8\u89C6\u56FE Recent\u300D\u540C\u4E00\u5957\u8BED\u4E49\uFF09\uFF0C\u4E0D\u662F\u8FDC\u7A0B\u6570\u636E\u5E93\u7684\u5168\u91CF\u68C0\u7D22\u3002",
|
|
2673
|
-
"- \u7ED3\u679C\u53EF\u80FD\u8DE8\u591A\u4E2A\u7A7A\u95F4\uFF0C\u6309\u5185\u5BB9\u9010\u6761\u8FD4\u56DE\uFF0C\u4E0D\u9700\u8981\u5728\u8FD4\u56DE\u540E\u4E8C\u6B21\u641C\u7D22\u3002",
|
|
2674
|
-
"- \u6CA1\u6709\u547D\u4E2D\u65F6\u5982\u5B9E\u8BF4\u660E\uFF0C\u4E0D\u8981\u7F16\u9020\u5185\u5BB9\u6216\u7A7A\u95F4\u5F52\u5C5E\u3002",
|
|
2675
|
-
"- \u5206\u7C7B\u89C6\u56FE\uFF08categories\uFF09\u4E0B\u7528\u6237\u53EA\u95EE\u5F53\u524D\u7A7A\u95F4\u5185\u5BB9\u65F6\uFF0C\u4F18\u5148\u7528\u5E38\u9A7B\u7684 search_workspace\uFF1B\u9700\u8981\u8DE8\u7A7A\u95F4\u624D loadSkill \u672C skill\u3002"
|
|
2676
|
-
].join("\n"),
|
|
2677
|
-
toolNames: ["search_all_spaces"]
|
|
2678
|
-
}
|
|
2679
|
-
];
|
|
2680
|
-
function seedBySlug4(slug) {
|
|
2681
|
-
const seed = SEARCH_SPACE_SKILL_SEEDS.find((item) => item.slug === slug);
|
|
2682
|
-
if (!seed) {
|
|
2683
|
-
throw new Error(`Unknown search-space skill slug: ${slug}`);
|
|
2684
|
-
}
|
|
2685
|
-
return seed;
|
|
2686
|
-
}
|
|
2687
|
-
function buildSearchSpaceSkillConfig(slug) {
|
|
2688
|
-
const seed = seedBySlug4(slug);
|
|
2689
|
-
return {
|
|
2690
|
-
version: "0.1",
|
|
2691
|
-
kind: "skill",
|
|
2692
|
-
id: buildSearchSpaceSkillId(slug),
|
|
2693
|
-
name: seed.title,
|
|
2694
|
-
description: seed.description,
|
|
2695
|
-
...seed.toolNames?.length ? { toolNames: [...seed.toolNames] } : {}
|
|
2696
|
-
};
|
|
2697
|
-
}
|
|
2698
|
-
function buildSearchSpaceSkillContentBySlug(slug) {
|
|
2699
|
-
const seed = seedBySlug4(slug);
|
|
2700
|
-
const skillConfig = buildSearchSpaceSkillConfig(slug);
|
|
2701
|
-
return buildSkillDocMarkdown({
|
|
2702
|
-
body: seed.body,
|
|
2703
|
-
skillConfig
|
|
2704
|
-
});
|
|
2705
|
-
}
|
|
2706
|
-
|
|
2707
|
-
// packages/ai/skills/builtinSkillRegistry.ts
|
|
2708
|
-
var codePlannerContentBySlug = /* @__PURE__ */ (() => {
|
|
2709
|
-
const cache = /* @__PURE__ */ new Map();
|
|
2710
|
-
return (slug) => {
|
|
2711
|
-
if (cache.size === 0) {
|
|
2712
|
-
for (const page of buildCodePlannerSkillPageRecords("platform-skill-owner")) {
|
|
2713
|
-
cache.set(page.slug, page.content);
|
|
2714
|
-
}
|
|
2715
|
-
}
|
|
2716
|
-
return cache.get(slug) ?? "";
|
|
2717
|
-
};
|
|
2718
|
-
})();
|
|
2719
|
-
var OBJECT_SKILL_KINDS = Object.keys(
|
|
2720
|
-
BUILTIN_OBJECT_SKILL_IDS
|
|
2721
|
-
);
|
|
2722
|
-
var SOURCES = [
|
|
2723
|
-
{
|
|
2724
|
-
slugs: OBJECT_SKILL_KINDS,
|
|
2725
|
-
buildSkillId: (kind) => BUILTIN_OBJECT_SKILL_IDS[kind],
|
|
2726
|
-
buildPageKey: (userId, kind) => buildBuiltinObjectSkillDbKey(kind, userId),
|
|
2727
|
-
buildConfig: buildBuiltinObjectSkillConfig,
|
|
2728
|
-
buildContent: buildBuiltinObjectSkillPageContent
|
|
2729
|
-
},
|
|
2730
|
-
{
|
|
2731
|
-
slugs: CODING_SKILL_SLUGS,
|
|
2732
|
-
buildSkillId: buildCodingSkillId,
|
|
2733
|
-
buildPageKey: buildCodingSkillPageKey,
|
|
2734
|
-
buildConfig: buildCodingSkillConfig,
|
|
2735
|
-
buildContent: buildCodingSkillContentBySlug
|
|
2736
|
-
},
|
|
2737
|
-
{
|
|
2738
|
-
slugs: SPECIALIST_SKILL_SLUGS,
|
|
2739
|
-
buildSkillId: buildSpecialistSkillId,
|
|
2740
|
-
buildPageKey: buildSpecialistSkillPageKey,
|
|
2741
|
-
buildConfig: buildSpecialistSkillConfig,
|
|
2742
|
-
buildContent: buildSpecialistSkillContentBySlug
|
|
2743
|
-
},
|
|
2744
|
-
{
|
|
2745
|
-
slugs: CODE_PLANNER_SKILL_SLUGS,
|
|
2746
|
-
buildSkillId: buildCodePlannerSkillId,
|
|
2747
|
-
buildPageKey: buildCodePlannerSkillPageKey,
|
|
2748
|
-
buildConfig: buildCodePlannerSkillConfig,
|
|
2749
|
-
buildContent: codePlannerContentBySlug
|
|
2750
|
-
},
|
|
2751
|
-
{
|
|
2752
|
-
slugs: SEARCH_DIALOG_SKILL_SLUGS,
|
|
2753
|
-
buildSkillId: buildSearchDialogSkillId,
|
|
2754
|
-
buildPageKey: buildSearchDialogSkillPageKey,
|
|
2755
|
-
buildConfig: buildSearchDialogSkillConfig,
|
|
2756
|
-
buildContent: buildSearchDialogSkillContentBySlug
|
|
2757
|
-
},
|
|
2758
|
-
{
|
|
2759
|
-
slugs: SEARCH_SPACE_SKILL_SLUGS,
|
|
2760
|
-
buildSkillId: buildSearchSpaceSkillId,
|
|
2761
|
-
buildPageKey: buildSearchSpaceSkillPageKey,
|
|
2762
|
-
buildConfig: buildSearchSpaceSkillConfig,
|
|
2763
|
-
buildContent: buildSearchSpaceSkillContentBySlug
|
|
2764
|
-
}
|
|
2765
|
-
];
|
|
2766
|
-
var buildRegistry = () => {
|
|
2767
|
-
const entries = [];
|
|
2768
|
-
const seenSlugs = /* @__PURE__ */ new Set();
|
|
2769
|
-
for (const source of SOURCES) {
|
|
2770
|
-
for (const slug of source.slugs) {
|
|
2771
|
-
if (seenSlugs.has(slug)) {
|
|
2772
|
-
throw new Error(`Duplicate builtin skill slug across sources: ${slug}`);
|
|
2773
|
-
}
|
|
2774
|
-
seenSlugs.add(slug);
|
|
2775
|
-
const config = source.buildConfig(slug);
|
|
2776
|
-
entries.push({
|
|
2777
|
-
slug,
|
|
2778
|
-
skillId: source.buildSkillId(slug),
|
|
2779
|
-
title: config.name || slug,
|
|
2780
|
-
config,
|
|
2781
|
-
content: source.buildContent(slug),
|
|
2782
|
-
buildPageKey: (userId) => source.buildPageKey(userId, slug)
|
|
2783
|
-
});
|
|
2784
|
-
}
|
|
2785
|
-
}
|
|
2786
|
-
return entries;
|
|
2787
|
-
};
|
|
2788
|
-
var REGISTRY = buildRegistry();
|
|
2789
|
-
var BY_SLUG = new Map(REGISTRY.map((entry) => [entry.slug, entry]));
|
|
2790
|
-
var BY_SKILL_ID = new Map(REGISTRY.map((entry) => [entry.skillId, entry]));
|
|
2791
|
-
var BY_LOWER_NAME = new Map(
|
|
2792
|
-
REGISTRY.map((entry) => [entry.title.trim().toLowerCase(), entry])
|
|
2793
|
-
);
|
|
2794
|
-
var listBuiltinSkills = () => REGISTRY;
|
|
2795
|
-
var resolveBuiltinSkillEntry = (identifier) => {
|
|
2796
|
-
const raw = typeof identifier === "string" ? identifier.trim() : "";
|
|
2797
|
-
if (!raw) return null;
|
|
2798
|
-
const bySlug = BY_SLUG.get(raw);
|
|
2799
|
-
if (bySlug) return bySlug;
|
|
2800
|
-
const byId = BY_SKILL_ID.get(raw);
|
|
2801
|
-
if (byId) return byId;
|
|
2802
|
-
if (raw.startsWith("page-")) {
|
|
2803
|
-
for (const entry of REGISTRY) {
|
|
2804
|
-
if (raw.endsWith(`-${entry.skillId}`)) return entry;
|
|
2805
|
-
}
|
|
2806
|
-
}
|
|
2807
|
-
return null;
|
|
2808
|
-
};
|
|
2809
|
-
var resolveBuiltinSkillByName = (identifier) => {
|
|
2810
|
-
const raw = typeof identifier === "string" ? identifier.trim() : "";
|
|
2811
|
-
if (!raw) return null;
|
|
2812
|
-
return resolveBuiltinSkillEntry(raw) ?? BY_LOWER_NAME.get(raw.toLowerCase()) ?? null;
|
|
2813
|
-
};
|
|
2814
|
-
var resolveBuiltinSkillPage = (identifier) => {
|
|
2815
|
-
const entry = resolveBuiltinSkillEntry(identifier);
|
|
2816
|
-
if (!entry) return null;
|
|
2817
|
-
const raw = typeof identifier === "string" ? identifier.trim() : entry.slug;
|
|
2818
|
-
return {
|
|
2819
|
-
dbKey: raw || entry.slug,
|
|
2820
|
-
title: entry.title,
|
|
2821
|
-
content: entry.content,
|
|
2822
|
-
meta: { kind: "skill", skillConfig: entry.config },
|
|
2823
|
-
...entry.config.toolNames?.length ? { tools: [...entry.config.toolNames] } : {}
|
|
2824
|
-
};
|
|
2825
|
-
};
|
|
2826
|
-
var CAPABILITIES = CAPABILITY_PACKS.map(
|
|
2827
|
-
(pack) => ({
|
|
2828
|
-
kind: "capability",
|
|
2829
|
-
slug: pack.id,
|
|
2830
|
-
title: pack.label,
|
|
2831
|
-
description: pack.description,
|
|
2832
|
-
toolNames: pack.tools,
|
|
2833
|
-
...pack.promptPatch ? { promptPatch: pack.promptPatch } : {},
|
|
2834
|
-
icon: pack.icon,
|
|
2835
|
-
defaultEnabled: pack.defaultEnabled
|
|
2836
|
-
})
|
|
2837
|
-
);
|
|
2838
|
-
var CAPABILITY_BY_SLUG = new Map(CAPABILITIES.map((c) => [c.slug, c]));
|
|
2839
|
-
var resolveBuiltinCapability = (slug) => {
|
|
2840
|
-
const raw = typeof slug === "string" ? slug.trim() : "";
|
|
2841
|
-
return raw ? CAPABILITY_BY_SLUG.get(raw) ?? null : null;
|
|
2842
|
-
};
|
|
2843
|
-
|
|
2844
2102
|
// packages/ai/tools/agentSkillConfig.ts
|
|
2845
2103
|
var MODES = [
|
|
2846
2104
|
"required",
|
|
2847
2105
|
"recommended",
|
|
2848
2106
|
"disabled"
|
|
2849
2107
|
];
|
|
2108
|
+
var DEFAULT_RECOMMENDED_SKILL_SLUGS = [
|
|
2109
|
+
"worktree-isolation",
|
|
2110
|
+
"systematic-investigation",
|
|
2111
|
+
"show-me"
|
|
2112
|
+
];
|
|
2850
2113
|
var asMode = (value) => typeof value === "string" && MODES.includes(value) ? value : null;
|
|
2851
2114
|
var resolveAgentSkillConfig = (source) => {
|
|
2852
2115
|
const out = {};
|
|
@@ -2871,11 +2134,21 @@ var resolveAgentRequiredPackIds = (source) => {
|
|
|
2871
2134
|
var resolveAgentRecommendedSkillNames = (source, lookup) => {
|
|
2872
2135
|
const config = resolveAgentSkillConfig(source);
|
|
2873
2136
|
const resolve = lookup ?? defaultSkillTitleLookup;
|
|
2137
|
+
const seen = /* @__PURE__ */ new Set();
|
|
2874
2138
|
const out = [];
|
|
2139
|
+
const push = (slug) => {
|
|
2140
|
+
const title = resolve(slug)?.title || slug;
|
|
2141
|
+
if (seen.has(title)) return;
|
|
2142
|
+
seen.add(title);
|
|
2143
|
+
out.push(title);
|
|
2144
|
+
};
|
|
2875
2145
|
for (const slug of Object.keys(config)) {
|
|
2876
2146
|
if (config[slug] !== "recommended") continue;
|
|
2877
|
-
|
|
2878
|
-
|
|
2147
|
+
push(slug);
|
|
2148
|
+
}
|
|
2149
|
+
for (const slug of DEFAULT_RECOMMENDED_SKILL_SLUGS) {
|
|
2150
|
+
if (Object.hasOwn(config, slug)) continue;
|
|
2151
|
+
push(slug);
|
|
2879
2152
|
}
|
|
2880
2153
|
return out;
|
|
2881
2154
|
};
|
|
@@ -4672,7 +3945,7 @@ async function deleteDialogsFunc(args, thunkApi) {
|
|
|
4672
3945
|
const deletedDialogIds = [];
|
|
4673
3946
|
const deletedDialogKeys = [];
|
|
4674
3947
|
const failures = [];
|
|
4675
|
-
const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-
|
|
3948
|
+
const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-EXLC5XTD.js");
|
|
4676
3949
|
for (const target of targets) {
|
|
4677
3950
|
try {
|
|
4678
3951
|
await thunkApi.dispatch(deleteDialog2(target.dbKey)).unwrap();
|
|
@@ -4801,6 +4074,8 @@ async function listAgentsFunc(args, thunkApi) {
|
|
|
4801
4074
|
if (favKey.startsWith("agent-pub-")) {
|
|
4802
4075
|
favRecord.publicRecordExists = true;
|
|
4803
4076
|
favRecord.publicKey = favKey;
|
|
4077
|
+
} else {
|
|
4078
|
+
favRecord.verifiedAgentKey = favKey;
|
|
4804
4079
|
}
|
|
4805
4080
|
const key = favRecord?.dbKey || favRecord?.id || favKey;
|
|
4806
4081
|
recordsMap.set(key, favRecord);
|
|
@@ -4979,7 +4254,7 @@ var readSkillDocFunctionSchema = {
|
|
|
4979
4254
|
}
|
|
4980
4255
|
};
|
|
4981
4256
|
async function readSkillDocFunc(args, thunkApi) {
|
|
4982
|
-
const { buildReadDocResult } = await import("./readDocTool-
|
|
4257
|
+
const { buildReadDocResult } = await import("./readDocTool-5USN4A6V.js");
|
|
4983
4258
|
const id = args?.id ?? args?.doc ?? args?.docKey ?? args?.pageKey;
|
|
4984
4259
|
if (typeof id !== "string" || !id.trim()) {
|
|
4985
4260
|
throw new Error("readSkillDoc requires id or doc.");
|
|
@@ -5782,7 +5057,7 @@ var fetchSpaceAction = async (input, thunkAPI) => {
|
|
|
5782
5057
|
const spaceKey = createSpaceKey.space(spaceId);
|
|
5783
5058
|
const readSpace = async (dbKey) => {
|
|
5784
5059
|
try {
|
|
5785
|
-
const { read: read2, readAndWait: readAndWait2 } = await import("./dbSlice-
|
|
5060
|
+
const { read: read2, readAndWait: readAndWait2 } = await import("./dbSlice-XVWBAGYN.js");
|
|
5786
5061
|
if (fresh) {
|
|
5787
5062
|
return await dispatch(readAndWait2(dbKey)).unwrap();
|
|
5788
5063
|
}
|
|
@@ -10847,7 +10122,7 @@ var cloudflareCrawlStatusFunctionSchema = {
|
|
|
10847
10122
|
async function cloudflareCrawlStatusFunc(args, thunkApi) {
|
|
10848
10123
|
const { jobId, limit, status, cursor } = args;
|
|
10849
10124
|
if (!jobId) throw new Error("\u5FC5\u987B\u63D0\u4F9B jobId");
|
|
10850
|
-
const { getToolRequestContext: getToolRequestContext2 } = await import("./toolApiClient-
|
|
10125
|
+
const { getToolRequestContext: getToolRequestContext2 } = await import("./toolApiClient-QVJ6HDNN.js");
|
|
10851
10126
|
const { baseUrl, token } = getToolRequestContext2(thunkApi);
|
|
10852
10127
|
const params = new URLSearchParams();
|
|
10853
10128
|
if (limit !== void 0) params.set("limit", String(limit));
|
|
@@ -11625,7 +10900,7 @@ var selectUserIdFromState = (state2) => {
|
|
|
11625
10900
|
var selectCurrentServerFromState = (state2) => typeof state2?.settings?.currentServer === "string" ? state2.settings.currentServer : null;
|
|
11626
10901
|
async function addImageContentToSpace(input) {
|
|
11627
10902
|
const injectedAddContentAction = input.thunkApi?.extra?.addContentAction;
|
|
11628
|
-
const addContentAction2 = typeof injectedAddContentAction === "function" ? injectedAddContentAction : (await import("./addContentAction-
|
|
10903
|
+
const addContentAction2 = typeof injectedAddContentAction === "function" ? injectedAddContentAction : (await import("./addContentAction-O7R66HEX.js")).addContentAction;
|
|
11629
10904
|
await addContentAction2(
|
|
11630
10905
|
{
|
|
11631
10906
|
spaceId: input.spaceId,
|
|
@@ -13752,7 +13027,61 @@ var runAgentBackground = createAsyncThunk("agent/runBackground", async (args, {
|
|
|
13752
13027
|
throw lastError ?? new Error("\u4E8B\u4EF6\u6D41\u91CD\u8FDE\u5931\u8D25");
|
|
13753
13028
|
});
|
|
13754
13029
|
|
|
13030
|
+
// packages/ai/tools/agent/credentialFanoutGuard.ts
|
|
13031
|
+
var UNKNOWN_CREDENTIAL_GROUP = "unknown";
|
|
13032
|
+
function normalizeCredentialGroupValue(group) {
|
|
13033
|
+
if (typeof group !== "string") return UNKNOWN_CREDENTIAL_GROUP;
|
|
13034
|
+
const trimmed2 = group.trim();
|
|
13035
|
+
if (!trimmed2) return UNKNOWN_CREDENTIAL_GROUP;
|
|
13036
|
+
if (trimmed2.toLowerCase() === UNKNOWN_CREDENTIAL_GROUP) {
|
|
13037
|
+
return UNKNOWN_CREDENTIAL_GROUP;
|
|
13038
|
+
}
|
|
13039
|
+
return trimmed2;
|
|
13040
|
+
}
|
|
13041
|
+
var describeEntry = (entry) => entry.agentKey ?? entry.runId ?? "(unknown run)";
|
|
13042
|
+
function checkCredentialFanout(args) {
|
|
13043
|
+
const candidateGroup = normalizeCredentialGroupValue(
|
|
13044
|
+
args.candidate.credentialGroup
|
|
13045
|
+
);
|
|
13046
|
+
for (const entry of args.active) {
|
|
13047
|
+
if (entry.runId && args.candidate.runId && entry.runId === args.candidate.runId) {
|
|
13048
|
+
continue;
|
|
13049
|
+
}
|
|
13050
|
+
const entryGroup = normalizeCredentialGroupValue(entry.credentialGroup);
|
|
13051
|
+
if (candidateGroup === UNKNOWN_CREDENTIAL_GROUP || entryGroup === UNKNOWN_CREDENTIAL_GROUP) {
|
|
13052
|
+
if (args.allowUnknownCredential === true) continue;
|
|
13053
|
+
const side = candidateGroup === UNKNOWN_CREDENTIAL_GROUP ? "candidate" : "active";
|
|
13054
|
+
return {
|
|
13055
|
+
allowed: false,
|
|
13056
|
+
reason: "unknown_credential_group",
|
|
13057
|
+
conflict: entry,
|
|
13058
|
+
message: `\u62D2\u7EDD\u5E76\u53D1\u6D3E\u53D1\uFF1A${side === "candidate" ? `\u5019\u9009 agent ${describeEntry(args.candidate)} \u7684 credentialGroup \u672A\u77E5` : `\u5DF2\u6D3B\u8DC3 run ${describeEntry(entry)} \u7684 credentialGroup \u672A\u77E5`}\uFF0C\u65E0\u6CD5\u8BC1\u660E\u5B83\u4E0E\u540C\u6279\u5E76\u53D1 run \u4E0D\u5171\u7528\u4E0A\u6E38\u51ED\u8BC1\u3002\u8BF7\u6539\u4E3A\u4E32\u884C\u6D3E\u53D1\u3001\u6362\u7528 credentialGroup \u660E\u786E\u7684 agent\uFF0C\u6216\u5728\u786E\u8BA4\u98CE\u9669\u540E\u663E\u5F0F\u4F20 allowUnknownCredential: true \u5F3A\u5236\u653E\u884C\u3002`
|
|
13059
|
+
};
|
|
13060
|
+
}
|
|
13061
|
+
if (candidateGroup === entryGroup) {
|
|
13062
|
+
return {
|
|
13063
|
+
allowed: false,
|
|
13064
|
+
reason: "credential_group_conflict",
|
|
13065
|
+
conflict: entry,
|
|
13066
|
+
message: `\u62D2\u7EDD\u5E76\u53D1\u6D3E\u53D1\uFF1A\u5019\u9009 agent ${describeEntry(args.candidate)} \u4E0E\u5DF2\u6D3B\u8DC3 run ${describeEntry(entry)} \u540C\u5C5E credentialGroup "${candidateGroup}"\uFF0C\u540C\u4E00\u51ED\u8BC1\u4E0A\u7981\u6B62\u5E76\u53D1\u6247\u51FA\u3002\u8BF7\u4E32\u884C\u6D3E\u53D1\u6216\u6539\u7528\u5176\u4ED6 credentialGroup \u7684 agent\u3002`
|
|
13067
|
+
};
|
|
13068
|
+
}
|
|
13069
|
+
}
|
|
13070
|
+
return { allowed: true };
|
|
13071
|
+
}
|
|
13072
|
+
|
|
13755
13073
|
// packages/ai/tools/agent/startAgentRunTool.ts
|
|
13074
|
+
var BATCH_FANOUT_ENTRY_TTL_MS = 30 * 60 * 1e3;
|
|
13075
|
+
var batchFanoutRegistry = /* @__PURE__ */ new Map();
|
|
13076
|
+
function pruneBatchFanoutRegistry(nowMs) {
|
|
13077
|
+
for (const [batchId, entries] of batchFanoutRegistry) {
|
|
13078
|
+
const alive = entries.filter(
|
|
13079
|
+
(e) => nowMs - e.startedAtMs < BATCH_FANOUT_ENTRY_TTL_MS
|
|
13080
|
+
);
|
|
13081
|
+
if (alive.length === 0) batchFanoutRegistry.delete(batchId);
|
|
13082
|
+
else batchFanoutRegistry.set(batchId, alive);
|
|
13083
|
+
}
|
|
13084
|
+
}
|
|
13756
13085
|
function buildStartAgentRunFunctionSchema(opts) {
|
|
13757
13086
|
const supportsWait = opts?.supportsWait !== false;
|
|
13758
13087
|
const wakeEnabled = opts?.wakeEnabled === true;
|
|
@@ -13784,7 +13113,16 @@ function buildStartAgentRunFunctionSchema(opts) {
|
|
|
13784
13113
|
// 与 server 透传保持不动,探活/烟测仍走 CLI 侧。
|
|
13785
13114
|
batchId: {
|
|
13786
13115
|
type: "string",
|
|
13787
|
-
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"
|
|
13116
|
+
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\u540C\u4E00 batchId \u5185\u7684\u5E76\u53D1\u6D3E\u53D1\u4F1A\u505A\u51ED\u8BC1\u7EC4\u9694\u79BB\u68C0\u67E5\uFF1AcredentialGroup \u76F8\u540C\u6216\u672A\u77E5\u7684\u5E76\u53D1 run \u4F1A\u88AB\u62D2\u7EDD\u3002"
|
|
13117
|
+
},
|
|
13118
|
+
credentialGroup: {
|
|
13119
|
+
type: "string",
|
|
13120
|
+
description: "\u53EF\u9009\u3002\u7167\u6284 listAgents \u8FD4\u56DE\u7684 credentialGroup \u5B57\u6BB5\uFF0C\u7528\u4E8E\u540C\u6279\u6B21\u5E76\u53D1\u6247\u51FA\u7684\u51ED\u8BC1\u9694\u79BB\u6821\u9A8C\u3002\u7F3A\u7701/\u7A7A\u503C\u89C6\u4E3A\u300C\u672A\u77E5\u300D\uFF08\u4E0D\u662F\u300C\u72EC\u7ACB\u300D\uFF09\uFF1A\u4E0E\u540C batch \u5185\u4EFB\u4F55\u5176\u4ED6 run \u5E76\u53D1\u90FD\u4F1A\u88AB\u62D2\u7EDD\u3002"
|
|
13121
|
+
},
|
|
13122
|
+
allowUnknownCredential: {
|
|
13123
|
+
type: "boolean",
|
|
13124
|
+
description: "\u53EF\u9009\u3002\u663E\u5F0F\u786E\u8BA4\u300C\u51ED\u8BC1\u5F52\u5C5E\u672A\u77E5\u300D\u7684\u5E76\u53D1\u98CE\u9669\u540E\u5F3A\u5236\u653E\u884C\uFF08\u7B49\u540C\u4E8E CLI \u7684 --force-unknown-credential\uFF09\u3002\u4EC5\u5728\u5DF2\u81EA\u884C\u786E\u8BA4\u4E24\u4FA7\u4E0D\u5171\u7528\u4E0A\u6E38\u51ED\u8BC1\u65F6\u4F7F\u7528\uFF1B\u9ED8\u8BA4 false\uFF0C\u672A\u77E5\u51ED\u8BC1\u5E76\u53D1\u4E00\u5F8B\u62D2\u7EDD\u3002",
|
|
13125
|
+
default: false
|
|
13788
13126
|
},
|
|
13789
13127
|
trackTodo: {
|
|
13790
13128
|
type: "boolean",
|
|
@@ -13817,13 +13155,25 @@ async function startAgentRunFunc(args, thunkApi, _context) {
|
|
|
13817
13155
|
const { agentKey, task, input, agentName, batchId, wait } = args;
|
|
13818
13156
|
const resultMode = args.resultMode ?? "full";
|
|
13819
13157
|
const { dispatch } = thunkApi;
|
|
13820
|
-
const
|
|
13158
|
+
const explicitBatchId = typeof batchId === "string" && batchId.trim() ? batchId.trim() : void 0;
|
|
13159
|
+
const effectiveBatchId = explicitBatchId ?? `batch-${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}-${Math.random().toString(36).slice(2, 8)}`;
|
|
13821
13160
|
if (!agentKey) {
|
|
13822
13161
|
throw new Error("startAgentRun: \u7F3A\u5C11 agentKey \u53C2\u6570\u3002");
|
|
13823
13162
|
}
|
|
13824
13163
|
if (!task || typeof task !== "string") {
|
|
13825
13164
|
throw new Error("startAgentRun: \u7F3A\u5C11\u6709\u6548\u7684 task \u6587\u672C\u63CF\u8FF0\u3002");
|
|
13826
13165
|
}
|
|
13166
|
+
if (explicitBatchId) {
|
|
13167
|
+
const nowMs = Date.now();
|
|
13168
|
+
pruneBatchFanoutRegistry(nowMs);
|
|
13169
|
+
const active = batchFanoutRegistry.get(explicitBatchId) ?? [];
|
|
13170
|
+
const verdict = checkCredentialFanout({
|
|
13171
|
+
active,
|
|
13172
|
+
candidate: { agentKey, credentialGroup: args.credentialGroup },
|
|
13173
|
+
allowUnknownCredential: args.allowUnknownCredential === true
|
|
13174
|
+
});
|
|
13175
|
+
if (!verdict.allowed) throw new Error(verdict.message);
|
|
13176
|
+
}
|
|
13827
13177
|
const content = buildDelegatedTaskContent(task, input);
|
|
13828
13178
|
const payloadMetrics = calculateDelegatedPayloadMetrics(task, input, content);
|
|
13829
13179
|
const activeDialogKey = getActiveDialogKey();
|
|
@@ -13853,6 +13203,16 @@ async function startAgentRunFunc(args, thunkApi, _context) {
|
|
|
13853
13203
|
};
|
|
13854
13204
|
}
|
|
13855
13205
|
const runId = bgResult.dialogId;
|
|
13206
|
+
if (explicitBatchId) {
|
|
13207
|
+
const entries = batchFanoutRegistry.get(explicitBatchId) ?? [];
|
|
13208
|
+
entries.push({
|
|
13209
|
+
runId,
|
|
13210
|
+
agentKey,
|
|
13211
|
+
...typeof args.credentialGroup === "string" && args.credentialGroup.trim() ? { credentialGroup: args.credentialGroup.trim() } : {},
|
|
13212
|
+
startedAtMs: Date.now()
|
|
13213
|
+
});
|
|
13214
|
+
batchFanoutRegistry.set(explicitBatchId, entries);
|
|
13215
|
+
}
|
|
13856
13216
|
const status = bgResult.status ?? "pending";
|
|
13857
13217
|
const resolvedName = agentName?.trim() || bgResult.agentName || bgResult.name;
|
|
13858
13218
|
const identity = { agentName: resolvedName, agentKey, runId };
|
|
@@ -15546,7 +14906,7 @@ var executeToolRun = createAsyncThunk(
|
|
|
15546
14906
|
if (!executionInput) {
|
|
15547
14907
|
throw new Error(`ToolRun ${id} has no input to execute with.`);
|
|
15548
14908
|
}
|
|
15549
|
-
const { findToolExecutor: findToolExecutor2 } = await import("./tools-
|
|
14909
|
+
const { findToolExecutor: findToolExecutor2 } = await import("./tools-OXEEBABR.js");
|
|
15550
14910
|
const { executor } = findToolExecutor2(run.toolName);
|
|
15551
14911
|
toolRunStarted({
|
|
15552
14912
|
id: run.id,
|
|
@@ -15570,7 +14930,7 @@ var executeToolRun = createAsyncThunk(
|
|
|
15570
14930
|
const latestState = thunkApi.getState();
|
|
15571
14931
|
const userId = selectIdentityUserId(latestState);
|
|
15572
14932
|
if (userId) {
|
|
15573
|
-
const { fetchUserSpaceMemberships } = await import("./memberThunks-
|
|
14933
|
+
const { fetchUserSpaceMemberships } = await import("./memberThunks-QGFLFVCI.js");
|
|
15574
14934
|
await thunkApi.dispatch(fetchUserSpaceMemberships(userId));
|
|
15575
14935
|
}
|
|
15576
14936
|
}
|
|
@@ -18053,7 +17413,7 @@ async function updateDocFunc(args, thunkApi) {
|
|
|
18053
17413
|
updated_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
18054
17414
|
};
|
|
18055
17415
|
await dispatch(write({ data: updatedPageData, customKey: id })).unwrap();
|
|
18056
|
-
const { getDocState, applyExternalDocUpdate } = await import("./docStore-
|
|
17416
|
+
const { getDocState, applyExternalDocUpdate } = await import("./docStore-DZNGJXX7.js");
|
|
18057
17417
|
if (getDocState().pageKey === id) {
|
|
18058
17418
|
applyExternalDocUpdate({
|
|
18059
17419
|
slateData: finalSlateData,
|
|
@@ -18078,7 +17438,7 @@ async function updateDocFunc(args, thunkApi) {
|
|
|
18078
17438
|
// packages/ai/tools/updateUserPreferenceProfileTool.ts
|
|
18079
17439
|
async function dispatchSetSettings(thunkApi, changes) {
|
|
18080
17440
|
const injectedSetSettings = thunkApi?.extra?.setSettings;
|
|
18081
|
-
const setSettings = typeof injectedSetSettings === "function" ? injectedSetSettings : (await import("./settingSlice-
|
|
17441
|
+
const setSettings = typeof injectedSetSettings === "function" ? injectedSetSettings : (await import("./settingSlice-ZQZVUPKK.js")).setSettings;
|
|
18082
17442
|
await thunkApi.dispatch(setSettings(changes)).unwrap();
|
|
18083
17443
|
}
|
|
18084
17444
|
var updateUserPreferenceProfileFunctionSchema = {
|
|
@@ -20338,7 +19698,6 @@ var findToolExecutor = (rawName) => {
|
|
|
20338
19698
|
};
|
|
20339
19699
|
|
|
20340
19700
|
export {
|
|
20341
|
-
resolveBuiltinSkillPage,
|
|
20342
19701
|
resolveAgentRequiredPackIds,
|
|
20343
19702
|
resolveAgentRecommendedSkillNames,
|
|
20344
19703
|
clipMultilineText,
|
|
@@ -20360,6 +19719,7 @@ export {
|
|
|
20360
19719
|
rememberMemoryFunctionSchema,
|
|
20361
19720
|
deleteMemoryFunctionSchema,
|
|
20362
19721
|
queryMemoryFunctionSchema,
|
|
19722
|
+
checkCredentialFanout,
|
|
20363
19723
|
buildStartAgentRunFunctionSchema,
|
|
20364
19724
|
CONTROL_AGENT_RUN_ACTIONS,
|
|
20365
19725
|
buildControlAgentRunFunctionSchema,
|