nolo-cli 0.103.0-alpha.2 → 0.103.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/{_executeModel-3UCNJCQA.js → _executeModel-7J7Q3WXY.js} +75 -68
- package/action-C4KMTCJF.js +20 -0
- package/{addContentAction-O7R66HEX.js → addContentAction-7TNIOVZI.js} +12 -11
- package/{addDialogAgentAction-74OA7KYP.js → addDialogAgentAction-O47J3MVW.js} +18 -19
- package/{agentDeleteCommand-2YAHAZFJ.js → agentDeleteCommand-YPJHK7JA.js} +117 -42
- package/{agentEmailCommands-WLYF3JRS.js → agentEmailCommands-AWEXOHWM.js} +98 -88
- package/agentListCommands-2DTLLJZD.js +742 -0
- package/{agentMachineCommands-HNGAR5GI.js → agentMachineCommands-PGEEQ4JJ.js} +48 -43
- package/{agentProviderCommands-GNPTL5XR.js → agentProviderCommands-XPJYZSCE.js} +97 -2
- package/{agentPullCommand-O5MPVJ5E.js → agentPullCommand-B4T2DJ5H.js} +1 -1
- package/agentRecordCommands-DZVLCPLJ.js +138 -0
- package/agentRunCommand-AX5CYQ46.js +167 -0
- package/{agentRunControl-AVJR4JW4.js → agentRunControl-3HWA2LLQ.js} +2 -2
- package/{agentRuntimeLocal-VXZSDIGT.js → agentRuntimeLocal-PITRQ2EU.js} +48 -39
- package/{agentSlice-SICQBMCM.js → agentSlice-4TLSG6FB.js} +14 -13
- package/{appDeleteCommands-32MHLR4L.js → appDeleteCommands-UC2JW5FJ.js} +46 -41
- package/{appDeployCommands-WCQOUSOB.js → appDeployCommands-OL2RKVJ3.js} +46 -41
- package/{appDeployStatusCommands-6QKB7DYN.js → appDeployStatusCommands-B3PLC62M.js} +46 -41
- package/{appGetCommands-SFAPP5PB.js → appGetCommands-REESA2XQ.js} +46 -41
- package/{appListCommands-EKUBDRUO.js → appListCommands-UF6XX7HR.js} +46 -41
- package/{authCommand-F4EFRRX6.js → authCommand-NQPMGYHP.js} +118 -24
- package/{authCommands-RGOGCPP6.js → authCommands-LWLOZETU.js} +7 -5
- package/{builtinSkillRegistry-FUAVTRVZ.js → builtinSkillRegistry-GFY77VRN.js} +10 -8
- package/{chromeCommands-FZYAU75D.js → chromeCommands-K27J4OVZ.js} +124 -28
- package/{chromeOpsCommands-62P2Q2YB.js → chromeOpsCommands-IXRLN57H.js} +4 -3
- package/{chunk-UKZDAFYT.js → chunk-22RVE2PC.js} +6 -10
- package/{chunk-6OZ36FXI.js → chunk-27ONFIEY.js} +22 -4
- package/{chunk-HVURBGF3.js → chunk-2H6SEVDS.js} +6 -6
- package/{chunk-TOP2VXOR.js → chunk-2K4TM6AW.js} +5 -5
- package/{chunk-JEDZAO7L.js → chunk-2SYTUTLI.js} +257 -37
- package/{chunk-53HEEOTT.js → chunk-2WJ57RJA.js} +83 -16
- package/{chunk-OIVSQH2O.js → chunk-3BXNTXYI.js} +299 -5
- package/chunk-4A2R7KHG.js +13545 -0
- package/{chunk-EYAQT56M.js → chunk-4DPP773Q.js} +2 -2
- package/{chunk-JRQFUXY7.js → chunk-4G4C5SXT.js} +99 -22
- package/{chunk-DHDMC6FO.js → chunk-4HTMUQIZ.js} +14 -9
- package/{chunk-B3TVQ6PI.js → chunk-4IVA6UUE.js} +20 -11
- package/chunk-4LCOCOR5.js +50 -0
- package/{chunk-2GRGFCF6.js → chunk-4VJAC32I.js} +2 -1
- package/{chunk-MC4XLIJ7.js → chunk-523DITKR.js} +1 -1
- package/{chunk-H62HCIUP.js → chunk-56HJ2LAA.js} +35 -22
- package/{chunk-V4MJDUSR.js → chunk-5EPHWMP5.js} +2 -2
- package/{chunk-E4MARS3Q.js → chunk-5GVBDNTO.js} +1 -1
- package/{chunk-3WLK2JQ5.js → chunk-5IWONK6X.js} +68 -46
- package/chunk-5J3PYNUP.js +255 -0
- package/chunk-5MMAK75Q.js +15 -0
- package/{chunk-LW4VFPAY.js → chunk-5ZDLVKNG.js} +873 -228
- package/{chunk-42V6BK2E.js → chunk-62IL3KQV.js} +4 -34
- package/{chunk-AEOE4Z6Q.js → chunk-6UEJDFF7.js} +39 -15
- package/{chunk-JPGCXHNM.js → chunk-7JWCVINR.js} +1 -1
- package/{chunk-GQBOR3G6.js → chunk-7KVZ5LDQ.js} +2 -2
- package/{chunk-IIVGDG4I.js → chunk-7KWFIKKK.js} +13 -7
- package/chunk-A4SQRTZ6.js +15 -0
- package/chunk-AGIM7IMJ.js +147 -0
- package/{chunk-5UTFL4QJ.js → chunk-AOTBKDRK.js} +7 -0
- package/{chunk-L5UXH3B2.js → chunk-B455PEFD.js} +27 -8
- package/{chunk-XS5SWEDQ.js → chunk-BELZY72F.js} +1 -1
- package/chunk-BMQ2MJUK.js +153 -0
- package/{chunk-6YTOJY35.js → chunk-BZ7NPA6G.js} +35 -2
- package/chunk-CHOZJMJS.js +78 -0
- package/{chunk-3BMYXEUW.js → chunk-CUF4MYKI.js} +1 -1
- package/{chunk-ACTMNVHM.js → chunk-CYSYR67N.js} +1 -1
- package/{chunk-WV42OMV7.js → chunk-D2GQE6AF.js} +8 -8
- package/{chunk-GBRG75BQ.js → chunk-D2MDMY2M.js} +1 -0
- package/chunk-DZ7R5V3Y.js +164 -0
- package/{chunk-3VNWWVKB.js → chunk-E3YWHWCR.js} +50 -18
- package/{chunk-KQ4ONNQD.js → chunk-EKPKW6RM.js} +155 -8
- package/{chunk-ABQYVJBJ.js → chunk-EV235ILT.js} +5 -5
- package/{chunk-TRV2MIDW.js → chunk-EXAJ6DCR.js} +1 -0
- package/{chunk-AGVEIAQA.js → chunk-F442UK5V.js} +29 -78
- package/{chunk-HJUYAD4A.js → chunk-FBTNYNAL.js} +5 -5
- package/{chunk-2F7RJC6L.js → chunk-FOXQ7BAB.js} +1 -1
- package/{chunk-ETI2NYVF.js → chunk-GCTKWVLU.js} +4 -4
- package/chunk-GMZLP5DV.js +82 -0
- package/{chunk-FDTR4QJ6.js → chunk-H6A6X4EK.js} +32 -1
- package/{chunk-6VFARHZW.js → chunk-H7TQORR4.js} +994 -1079
- package/{chunk-5H7KJX7J.js → chunk-HD3S2F7U.js} +5 -5
- package/chunk-HDJRLWTG.js +8002 -0
- package/{chunk-DVINR3PL.js → chunk-HDLLCBRF.js} +1 -1
- package/{chunk-QOKAKDPE.js → chunk-HIM3FCLF.js} +0 -1
- package/{chunk-ONXOABJR.js → chunk-HNGRBWYF.js} +3 -0
- package/{chunk-VLTIYV3X.js → chunk-HP57OUJO.js} +4 -4
- package/{chunk-4OEFYTWL.js → chunk-IRZTHHNM.js} +67 -48
- package/{chunk-GPCZ7UXG.js → chunk-K6U4NKFJ.js} +1 -1
- package/{chunk-OZGZPSEG.js → chunk-KGRP4VOK.js} +47 -67
- package/{chunk-DNCEALKX.js → chunk-LB5A6JTU.js} +22 -29
- package/{chunk-LS2ZANRJ.js → chunk-LOCNXNOU.js} +1 -1
- package/{chunk-PUOC4YRO.js → chunk-M7VLQGQP.js} +11 -0
- package/{chunk-Z77CRGTW.js → chunk-MSFZ7FMO.js} +1 -1
- package/chunk-NKWIS6G2.js +442 -0
- package/{chunk-BFU6C242.js → chunk-NMFV26UG.js} +1 -1
- package/{chunk-FZGV4FGK.js → chunk-NUHHBEJC.js} +378 -187
- package/chunk-NWENLDMM.js +42 -0
- package/chunk-O7SVKKLY.js +875 -0
- package/chunk-OCZKATRC.js +129 -0
- package/{chunk-PQFHGD77.js → chunk-OM2RUOEU.js} +161 -14
- package/{chunk-KQHGZWSV.js → chunk-OXME3PEE.js} +1 -1
- package/{chunk-TQBHNYVR.js → chunk-PLRFCQ7C.js} +567 -519
- package/{chunk-6D6VBVEW.js → chunk-Q7O72MF5.js} +80 -14
- package/{chunk-J4MOO56S.js → chunk-RILRSUGC.js} +10 -2
- package/{chunk-RSONHHPE.js → chunk-RNUDNZJW.js} +10 -10
- package/{chunk-3N3W7KBB.js → chunk-RZJAZVCF.js} +11 -9
- package/{chunk-BYMV6QZG.js → chunk-TNIX77YM.js} +4 -0
- package/{chunk-GEPUP7OO.js → chunk-TSXNDTXL.js} +3 -3
- package/chunk-TY3TIUJK.js +89 -0
- package/{chunk-I3TQJXQ7.js → chunk-U3C3IA32.js} +9 -2
- package/{chunk-UZGQNTVW.js → chunk-UA324D4O.js} +8 -6
- package/{chunk-YYLHWIW6.js → chunk-UKZX3NHN.js} +1 -1
- package/{chunk-BP4XNZRM.js → chunk-UNAOTLKO.js} +4 -4
- package/{chunk-CUQEXCAU.js → chunk-UQ5P2WHS.js} +29 -9
- package/{chunk-NA35QHCF.js → chunk-V6YASAZR.js} +1 -1
- package/{chunk-3DII57IT.js → chunk-VCAQFMVN.js} +1 -1
- package/chunk-VIWDGTDA.js +8 -0
- package/chunk-VJVNU77E.js +83 -0
- package/{chunk-ZCYXJSTU.js → chunk-VL3H5ZU3.js} +66 -94
- package/{chunk-Q554LLSI.js → chunk-VLGL7FOL.js} +1 -1
- package/{chunk-UKWGR5SS.js → chunk-VY6VFGKR.js} +194 -1144
- package/{chunk-4EG4QFTK.js → chunk-WI6TUGLJ.js} +19 -17
- package/{chunk-QDSINZM3.js → chunk-WJ3B6FX6.js} +1 -14
- package/{chunk-OEVAY4J6.js → chunk-XMUZHRSB.js} +18 -20
- package/{chunk-O6OSWFZQ.js → chunk-XUWRURDF.js} +6 -0
- package/{chunk-Q67DOFOO.js → chunk-Y3PMXGLH.js} +2 -0
- package/{chunk-7S4YWN7P.js → chunk-YDO5ERB4.js} +4 -4
- package/chunk-YK5MHOWM.js +915 -0
- package/{chunk-SH43IESU.js → chunk-YUNJN43V.js} +44 -9
- package/chunk-YV25TM3R.js +780 -0
- package/{chunk-IONPPCL5.js → chunk-YZZREBID.js} +86 -16
- package/{chunk-DNUUJ45N.js → chunk-Z3WSAK6A.js} +23 -28
- package/chunk-ZRAU6T47.js +56 -0
- package/commandRegistry-VQPFWVDH.js +833 -0
- package/{contentThunks-S4S7QPSO.js → contentThunks-A26ME6OJ.js} +37 -35
- package/{cooldownCommands-REAWYVTY.js → cooldownCommands-ZLEPIB4A.js} +2 -2
- package/{createAgentAutomationAction-ODGL2YGP.js → createAgentAutomationAction-BSAMZJ5W.js} +39 -37
- package/createDialogAction-CMCQXYHD.js +69 -0
- package/{createPageAction-FBV3OWX7.js → createPageAction-ANGKJTK2.js} +46 -43
- package/{chunk-F2RNI7ZR.js → cursorProvider-YGGNMVWX.js} +2496 -9897
- package/{dbSlice-XVWBAGYN.js → dbSlice-QOLNF5GN.js} +11 -10
- package/{deleteFile-YG6QMJLU.js → deleteFile-KESP65GC.js} +7 -6
- package/{dialogCommands-5J56DFWN.js → dialogCommands-AMPAWLX4.js} +49 -45
- package/{dialogSlice-LEO27SQG.js → dialogSlice-DGWDEBYC.js} +41 -34
- package/{dist-VODFSGNG.js → dist-NJC2W7I4.js} +61 -54
- package/{docCreateCommands-KYI2DC2U.js → docCreateCommands-7NMIYL5D.js} +48 -43
- package/{docDeleteCommands-67REUSRY.js → docDeleteCommands-BD4OM5PV.js} +49 -44
- package/{docReadCommands-HOSVSBDJ.js → docReadCommands-5IOVAKU2.js} +47 -42
- package/{docStore-MNX5MHA5.js → docStore-TP4QDER4.js} +16 -12
- package/{docUpdateCommands-EMGCSMXY.js → docUpdateCommands-ZTKJ6UPC.js} +48 -43
- package/{fetchMessages-EIU7UFFK.js → fetchMessages-5L7OVM5Y.js} +5 -5
- package/{getPricing-LUSEABA6.js → getPricing-NMMFT3YI.js} +4 -4
- package/{handleSendMessageAction-YB6KQFJS.js → handleSendMessageAction-N4WKFRSQ.js} +111 -87
- package/index.js +87 -884
- package/{lib-FRRS27KN.js → lib-PU2G2MSO.js} +523 -191
- package/{localDialogRead-BTFJ4V2I.js → localDialogRead-O5A26FDK.js} +2 -2
- package/{localRuntimeAuthority-6IR6BBXE.js → localRuntimeAuthority-TU6OBC76.js} +9 -6
- package/{localRuntimeDb-SYQGUF4U.js → localRuntimeDb-VKWVOPPI.js} +1 -1
- package/{machineCommands-7GVQCUAK.js → machineCommands-47WKGY5Z.js} +92 -82
- package/machineWsRunDispatch-CYW5FJ52.js +154 -0
- package/{memberThunks-QGFLFVCI.js → memberThunks-25K6DDRA.js} +20 -18
- package/{models-T3SG6MJ5.js → models-ZPU5EDF4.js} +2 -2
- package/oauthTokenStore-ITEB663N.js +23 -0
- package/package.json +1 -1
- package/pdf-U6KSUEZZ.js +26435 -0
- package/processSpawn-SOAV3FEV.js +11 -0
- package/profileConfig-ZGOFORWV.js +43 -0
- package/{providerPresetApply-FG6NZ57W.js → providerPresetApply-TEBH7FDX.js} +7 -7
- package/{providerRegistry-757OWH3O.js → providerRegistry-CBJLNCET.js} +11 -7
- package/{read-COE3ZYR6.js → read-PJIT2YEJ.js} +7 -6
- package/{readDocTool-5USN4A6V.js → readDocTool-DRSXHGNL.js} +5 -3
- package/{readlineWorkspace-WA7JNI6J.js → readlineWorkspace-CK7GOVOC.js} +2698 -2055
- package/{removeDialogAgentAction-IX3MN2ZO.js → removeDialogAgentAction-VIWJL6MX.js} +21 -25
- package/{runAgentClientLoop-JGFQ6KIR.js → runAgentClientLoop-BGHGP5AR.js} +76 -70
- package/{runtimeDoctorCommands-X6WDBEQX.js → runtimeDoctorCommands-PIVSBZRZ.js} +4 -4
- package/runtimeModeArgs-2Y7BALTO.js +31 -0
- package/{setDialogExtraReferencesAction-X4HCPNZL.js → setDialogExtraReferencesAction-A7VA3NFM.js} +15 -13
- package/{setPrimaryDialogAgentAction-4GMIQLOD.js → setPrimaryDialogAgentAction-B4P7YQX2.js} +22 -26
- package/{chunk-AFUORTY4.js → settingThunks-KOYSAT65.js} +226 -940
- package/{skillDiscovery-CYUCJMAG.js → skillDiscovery-ZBU76COE.js} +3 -3
- package/{slateUtils-RIZES3PV.js → slateUtils-NGV2NMKM.js} +1 -1
- package/{spaceCommands-NKJVJCQQ.js → spaceCommands-QJCYG27F.js} +51 -46
- package/{streamAgentChatTurn-XLFZ66UC.js → streamAgentChatTurn-ANE7OTCZ.js} +214 -108
- package/{switchDialogAgentAction-N52LRPA3.js → switchDialogAgentAction-3VYWHZKH.js} +18 -19
- package/{tableCommands-O6NWHFKV.js → tableCommands-6U4BMLRR.js} +10 -10
- package/{toolApiClient-QVJ6HDNN.js → toolApiClient-EJT6TMFG.js} +3 -3
- package/tools-WPOVVP7M.js +116 -0
- package/{tuiSummaryLlmCaller-WFRWERGK.js → tuiSummaryLlmCaller-QCHCULPM.js} +25 -22
- package/{updateCommands-2M74UL7P.js → updateCommands-4EHDLF5J.js} +3 -3
- package/{updateDialogTitleAction-6MBTD4UE.js → updateDialogTitleAction-C4GRCXL4.js} +82 -44
- package/action-YVYQEAAV.js +0 -31
- package/agentListCommands-JP7S7PT2.js +0 -469
- package/agentRecordCommands-SXFPW3DL.js +0 -128
- package/agentRunCommand-JIQ4HY4D.js +0 -155
- package/browser-image-compression-MFDTD7K6.js +0 -1763
- package/chatQueueReduxAdapter-HHMUDNXL.js +0 -186
- package/chunk-CQ3WA2NE.js +0 -299
- package/chunk-M76ECQRD.js +0 -13658
- package/chunk-MEYIRKDN.js +0 -8967
- package/chunk-Q5FJJ6XI.js +0 -103
- package/chunk-S7Z2HMCN.js +0 -25
- package/chunk-XVZ22N6C.js +0 -20782
- package/chunk-Y5GCAMGP.js +0 -9
- package/chunk-YPREESF4.js +0 -225
- package/createDialogAction-GFKRXTK4.js +0 -65
- package/machineWsRunDispatch-XA7TD7Z7.js +0 -144
- package/settingSlice-ZQZVUPKK.js +0 -204
- package/syncMapping-N6RGXGBW.js +0 -437
- package/tools-NF5AB34X.js +0 -110
- package/{chunk-VMFTFOWF.js → chunk-ODAPITXL.js} +7 -7
- package/{chunk-X7HHHIOZ.js → chunk-Y6ROFCZO.js} +0 -0
- package/{db-WK5MDZVN.js → db-VQSAOWAO.js} +1 -1
|
@@ -1,25 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
fileKey,
|
|
3
|
-
getFileIdFromKey,
|
|
4
|
-
ulid
|
|
5
|
-
} from "./chunk-VMFTFOWF.js";
|
|
6
1
|
import {
|
|
7
2
|
loadFileFromIndexedDb,
|
|
8
3
|
removeAction,
|
|
9
4
|
saveFileToIndexedDb
|
|
10
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-EV235ILT.js";
|
|
11
6
|
import {
|
|
12
7
|
readAction,
|
|
13
8
|
readRequestManager,
|
|
14
9
|
resolveAgentReadServers
|
|
15
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-D2GQE6AF.js";
|
|
16
11
|
import {
|
|
17
|
-
|
|
18
|
-
buildCreateSlice,
|
|
12
|
+
beginWriteAck,
|
|
19
13
|
compareRemoteRecordsByComparableTime,
|
|
20
|
-
createEntityAdapter,
|
|
21
14
|
getRuntimeServerContext,
|
|
22
|
-
noloDeleteRequest,
|
|
23
15
|
pickBestSettledRemoteRecord,
|
|
24
16
|
planAuthorityReadServers,
|
|
25
17
|
resolveAuthorityReplicationServers,
|
|
@@ -32,19 +24,30 @@ import {
|
|
|
32
24
|
shouldReplaceLocalWithRemoteRecord,
|
|
33
25
|
shouldReplicateLocalRecord,
|
|
34
26
|
uploadToCurrentServer
|
|
35
|
-
} from "./chunk-
|
|
36
|
-
import {
|
|
37
|
-
fetchFromClientDb,
|
|
38
|
-
fetchFromServer,
|
|
39
|
-
logger,
|
|
40
|
-
normalizeTimeFields
|
|
41
|
-
} from "./chunk-QOKAKDPE.js";
|
|
27
|
+
} from "./chunk-O7SVKKLY.js";
|
|
42
28
|
import {
|
|
43
29
|
isTombstoneRecord
|
|
44
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-D2MDMY2M.js";
|
|
45
31
|
import {
|
|
46
32
|
isRecord
|
|
47
33
|
} from "./chunk-KUG52IAP.js";
|
|
34
|
+
import {
|
|
35
|
+
fileKey,
|
|
36
|
+
getFileIdFromKey,
|
|
37
|
+
ulid
|
|
38
|
+
} from "./chunk-ODAPITXL.js";
|
|
39
|
+
import {
|
|
40
|
+
asyncThunkCreator,
|
|
41
|
+
buildCreateSlice,
|
|
42
|
+
createEntityAdapter,
|
|
43
|
+
noloDeleteRequest
|
|
44
|
+
} from "./chunk-VY6VFGKR.js";
|
|
45
|
+
import {
|
|
46
|
+
fetchFromClientDb,
|
|
47
|
+
fetchFromServer,
|
|
48
|
+
logger,
|
|
49
|
+
normalizeTimeFields
|
|
50
|
+
} from "./chunk-HIM3FCLF.js";
|
|
48
51
|
import {
|
|
49
52
|
API_ENDPOINTS
|
|
50
53
|
} from "./chunk-LCBAMY2M.js";
|
|
@@ -260,12 +263,14 @@ var writeAction = async (writeConfig, thunkApi) => {
|
|
|
260
263
|
`Invalid data type "${data.type}" for writeAction with key ${customKey}. Proceeding anyway.`
|
|
261
264
|
);
|
|
262
265
|
}
|
|
266
|
+
let writeAck = null;
|
|
263
267
|
try {
|
|
264
268
|
const willSaveData = normalizeTimeFields({
|
|
265
269
|
...data,
|
|
266
270
|
dbKey: customKey,
|
|
267
271
|
userId: recordUserId
|
|
268
272
|
});
|
|
273
|
+
writeAck = beginWriteAck(customKey);
|
|
269
274
|
await saveToClientDb(clientDb, customKey, willSaveData);
|
|
270
275
|
const servers = resolveAuthorityReplicationServers({
|
|
271
276
|
currentServer,
|
|
@@ -283,8 +288,14 @@ var writeAction = async (writeConfig, thunkApi) => {
|
|
|
283
288
|
logger.debug(
|
|
284
289
|
`[writeAction] Initiating background sync for key: ${customKey} to ${servers.length} servers.`
|
|
285
290
|
);
|
|
286
|
-
scheduleWriteReplication(
|
|
291
|
+
const replication = scheduleWriteReplication(
|
|
292
|
+
servers,
|
|
293
|
+
serverWriteConfig,
|
|
294
|
+
state
|
|
295
|
+
);
|
|
296
|
+
writeAck.settleWithReplication(replication);
|
|
287
297
|
} else {
|
|
298
|
+
writeAck.markNotReplicated();
|
|
288
299
|
logger.warn(
|
|
289
300
|
{ customKey },
|
|
290
301
|
"[writeAction] No available servers, data only saved locally."
|
|
@@ -292,6 +303,7 @@ var writeAction = async (writeConfig, thunkApi) => {
|
|
|
292
303
|
}
|
|
293
304
|
return willSaveData;
|
|
294
305
|
} catch (error) {
|
|
306
|
+
writeAck?.markAborted();
|
|
295
307
|
const errorMessage = `Write action failed for ${customKey}: ${error?.message || "Unknown error"}`;
|
|
296
308
|
logger.error({ error }, "[writeAction] Error");
|
|
297
309
|
actionToast.error(`Failed to save data for ${customKey}.`);
|
|
@@ -712,7 +724,7 @@ var dbSlice = createSliceWithThunks({
|
|
|
712
724
|
// 动态 import 在调用期解析,避开 TDZ/求值顺序问题(同下方 share)。
|
|
713
725
|
read: create.asyncThunk(
|
|
714
726
|
async (payload, thunkApi) => {
|
|
715
|
-
const { readAction: readAction2 } = await import("./read-
|
|
727
|
+
const { readAction: readAction2 } = await import("./read-PJIT2YEJ.js");
|
|
716
728
|
return readAction2(payload, thunkApi);
|
|
717
729
|
},
|
|
718
730
|
{
|
|
@@ -786,7 +798,7 @@ var dbSlice = createSliceWithThunks({
|
|
|
786
798
|
// 这里改成动态 import,运行期才解析,彻底断开这条边。
|
|
787
799
|
share: create.asyncThunk(
|
|
788
800
|
async (config, thunkApi) => {
|
|
789
|
-
const { shareResourceAction } = await import("./action-
|
|
801
|
+
const { shareResourceAction } = await import("./action-C4KMTCJF.js");
|
|
790
802
|
return shareResourceAction(config, thunkApi);
|
|
791
803
|
}
|
|
792
804
|
),
|
|
@@ -824,6 +836,7 @@ export {
|
|
|
824
836
|
toTimestampMs,
|
|
825
837
|
resolveFileCategory,
|
|
826
838
|
uploadFileAction,
|
|
839
|
+
readFileContentAction,
|
|
827
840
|
dbAdapter,
|
|
828
841
|
selectById,
|
|
829
842
|
selectEntities,
|
|
@@ -4,11 +4,11 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
patch,
|
|
6
6
|
read
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-56HJ2LAA.js";
|
|
8
8
|
import {
|
|
9
9
|
DEVICE_LOCAL_OWNER_ID,
|
|
10
10
|
isDeviceLocalSpaceBody
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-O7SVKKLY.js";
|
|
12
12
|
import {
|
|
13
13
|
selectIdentityUserId
|
|
14
14
|
} from "./chunk-SEJ5OS6F.js";
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
clipMultilineText,
|
|
9
9
|
fetchAndSerializeTable
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-PLRFCQ7C.js";
|
|
11
11
|
import {
|
|
12
12
|
isGatewayHttpStatus
|
|
13
13
|
} from "./chunk-NF64D32W.js";
|
|
@@ -18,104 +18,106 @@ import {
|
|
|
18
18
|
parseRetryAfterHeaderMs
|
|
19
19
|
} from "./chunk-3L2WKC3W.js";
|
|
20
20
|
import {
|
|
21
|
+
resolvePageReadMarkdown,
|
|
21
22
|
slateToSimplifiedMarkdown
|
|
22
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-RILRSUGC.js";
|
|
23
24
|
import {
|
|
24
25
|
waitForAbortableDelay
|
|
25
26
|
} from "./chunk-N4G4PKQ6.js";
|
|
26
27
|
import {
|
|
27
28
|
extractCategorizedMentions
|
|
28
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-AGIM7IMJ.js";
|
|
29
30
|
import {
|
|
30
31
|
fetchAndCacheMessages
|
|
31
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-4A2R7KHG.js";
|
|
32
33
|
import {
|
|
33
34
|
shouldUseServerProxy
|
|
34
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-UKZX3NHN.js";
|
|
35
36
|
import {
|
|
36
37
|
fetchServerSyncedCredential
|
|
37
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-RZJAZVCF.js";
|
|
38
39
|
import {
|
|
39
40
|
buildSkillGuidancePromptBlock,
|
|
40
41
|
extractRuntimePageCapabilities,
|
|
41
42
|
resolveBuiltinSkillPage,
|
|
42
43
|
resolveSkillGraphFromRoots
|
|
43
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-4G4C5SXT.js";
|
|
44
45
|
import {
|
|
46
|
+
DELETE_SAFETY_RED_LINE,
|
|
45
47
|
buildIdentityBlock,
|
|
46
48
|
buildRuntimeGuidanceBlocks,
|
|
47
49
|
compileContextLayers,
|
|
48
50
|
detectDispatchIntentFromMessages,
|
|
49
51
|
normalizeChatCompletionsBodyForProvider,
|
|
50
52
|
resolveToolGuidedSections
|
|
51
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-B455PEFD.js";
|
|
52
54
|
import {
|
|
53
55
|
convertMessagesToResponsesInput,
|
|
54
56
|
getUsageRequestOptions,
|
|
55
57
|
preserveAgentStateFields,
|
|
56
58
|
stablePromptCacheKey
|
|
57
|
-
} from "./chunk-
|
|
59
|
+
} from "./chunk-M7VLQGQP.js";
|
|
60
|
+
import {
|
|
61
|
+
createFileCredentialBroker
|
|
62
|
+
} from "./chunk-2H6SEVDS.js";
|
|
63
|
+
import {
|
|
64
|
+
estimateTokenCount
|
|
65
|
+
} from "./chunk-PSCNXBYA.js";
|
|
66
|
+
import {
|
|
67
|
+
createSpaceKey
|
|
68
|
+
} from "./chunk-UAD2WT54.js";
|
|
69
|
+
import {
|
|
70
|
+
read
|
|
71
|
+
} from "./chunk-56HJ2LAA.js";
|
|
72
|
+
import {
|
|
73
|
+
MEMORY_USE_GUIDANCE,
|
|
74
|
+
buildUserResponseLanguageContext,
|
|
75
|
+
wrapHistoricalSummaryWithReplayGuard
|
|
76
|
+
} from "./chunk-4VJAC32I.js";
|
|
77
|
+
import {
|
|
78
|
+
canonicalizeToolNames
|
|
79
|
+
} from "./chunk-XUWRURDF.js";
|
|
58
80
|
import {
|
|
59
81
|
ANTIGRAVITY_CLOUD_CODE_BASE_URL,
|
|
60
82
|
isAntigravityOAuthAgent
|
|
61
|
-
} from "./chunk-
|
|
83
|
+
} from "./chunk-UA324D4O.js";
|
|
62
84
|
import {
|
|
63
85
|
buildProviderAuthHeaders
|
|
64
|
-
} from "./chunk-
|
|
65
|
-
import {
|
|
66
|
-
estimateTokenCount
|
|
67
|
-
} from "./chunk-PSCNXBYA.js";
|
|
86
|
+
} from "./chunk-27ONFIEY.js";
|
|
68
87
|
import {
|
|
69
88
|
isOpenAiResponsesModel,
|
|
70
89
|
resolvePlatformChatCompletionsEndpoint,
|
|
71
90
|
resolvePlatformResponsesEndpoint
|
|
72
|
-
} from "./chunk-
|
|
91
|
+
} from "./chunk-7KVZ5LDQ.js";
|
|
73
92
|
import {
|
|
74
93
|
clampReasoningEffort,
|
|
75
94
|
getModelConfig,
|
|
76
95
|
isModelSupportReasoningEffort
|
|
77
|
-
} from "./chunk-
|
|
78
|
-
import {
|
|
79
|
-
createFileCredentialBroker
|
|
80
|
-
} from "./chunk-HVURBGF3.js";
|
|
96
|
+
} from "./chunk-3BXNTXYI.js";
|
|
81
97
|
import {
|
|
82
98
|
toErrorMessage
|
|
83
99
|
} from "./chunk-HNMXYYJR.js";
|
|
84
|
-
import {
|
|
85
|
-
MEMORY_USE_GUIDANCE,
|
|
86
|
-
buildUserResponseLanguageContext,
|
|
87
|
-
wrapHistoricalSummaryWithReplayGuard
|
|
88
|
-
} from "./chunk-2GRGFCF6.js";
|
|
89
|
-
import {
|
|
90
|
-
canonicalizeToolNames
|
|
91
|
-
} from "./chunk-O6OSWFZQ.js";
|
|
92
100
|
import {
|
|
93
101
|
isDeepInfraKimiModel,
|
|
94
102
|
isFireworksKimiModel,
|
|
95
103
|
isPlatformMimoProviderModel,
|
|
96
104
|
resolveFireworksKimiModel
|
|
97
|
-
} from "./chunk-
|
|
98
|
-
import {
|
|
99
|
-
createSpaceKey
|
|
100
|
-
} from "./chunk-UAD2WT54.js";
|
|
101
|
-
import {
|
|
102
|
-
read
|
|
103
|
-
} from "./chunk-H62HCIUP.js";
|
|
105
|
+
} from "./chunk-Y3PMXGLH.js";
|
|
104
106
|
import {
|
|
105
107
|
asTrimmedLowercaseString
|
|
106
108
|
} from "./chunk-QSJ3HFEF.js";
|
|
107
|
-
import {
|
|
108
|
-
extractCustomId
|
|
109
|
-
} from "./chunk-M2EJHDJP.js";
|
|
110
109
|
import {
|
|
111
110
|
getRuntimeServerContext
|
|
112
|
-
} from "./chunk-
|
|
111
|
+
} from "./chunk-O7SVKKLY.js";
|
|
113
112
|
import {
|
|
114
|
-
|
|
115
|
-
} from "./chunk-
|
|
113
|
+
extractCustomId
|
|
114
|
+
} from "./chunk-M2EJHDJP.js";
|
|
116
115
|
import {
|
|
117
116
|
isRecord
|
|
118
117
|
} from "./chunk-KUG52IAP.js";
|
|
118
|
+
import {
|
|
119
|
+
isAbortError
|
|
120
|
+
} from "./chunk-HIM3FCLF.js";
|
|
119
121
|
import {
|
|
120
122
|
asTrimmedString
|
|
121
123
|
} from "./chunk-3EUW3WEO.js";
|
|
@@ -648,6 +650,14 @@ ${contexts.userGlobalPrompt.trim()} ` : "";
|
|
|
648
650
|
const dialogSummarySection = contexts.dialogSummary?.trim() ? `--- \u5386\u53F2\u5BF9\u8BDD\u6458\u8981 ---
|
|
649
651
|
${wrapHistoricalSummaryWithReplayGuard(contexts.dialogSummary)}` : "";
|
|
650
652
|
return compileContextLayers([
|
|
653
|
+
// 删除安全红线:系统层最高优先级约束,位于所有层之前(含身份信息),
|
|
654
|
+
// owner 要求常驻「根本提示词」的最顶部(2026-09-26 批量误删事故)。
|
|
655
|
+
{
|
|
656
|
+
id: "delete-safety-red-line",
|
|
657
|
+
owner: "platform",
|
|
658
|
+
cacheScope: "static",
|
|
659
|
+
content: DELETE_SAFETY_RED_LINE
|
|
660
|
+
},
|
|
651
661
|
{ id: "identity", owner: "platform", cacheScope: "session", content: identitySection },
|
|
652
662
|
{ id: "user-response-language", owner: "platform", cacheScope: "session", content: buildUserResponseLanguageContext({ language: safeLanguage }) },
|
|
653
663
|
{ id: "startup-protocol", owner: "platform", cacheScope: "static", content: startupProtocol },
|
|
@@ -655,6 +665,7 @@ ${wrapHistoricalSummaryWithReplayGuard(contexts.dialogSummary)}` : "";
|
|
|
655
665
|
{ id: "tool-round-economy", owner: "platform", cacheScope: "session", content: toolSections.toolRoundEconomy },
|
|
656
666
|
{ id: "tool-use-guidance", owner: "platform", cacheScope: "session", content: toolSections.toolUseGuidance },
|
|
657
667
|
{ id: "privilege-escalation", owner: "platform", cacheScope: "session", content: toolSections.privilegeEscalation },
|
|
668
|
+
{ id: "shell-task-lifecycle", owner: "platform", cacheScope: "session", content: toolSections.shellTaskLifecycle },
|
|
658
669
|
{ id: "agent-orchestration", owner: "platform", cacheScope: "session", content: toolSections.agentOrchestration },
|
|
659
670
|
{ id: "agent-collaboration", owner: "platform", cacheScope: "session", content: toolSections.agentCollaboration },
|
|
660
671
|
{ id: "web-access", owner: "platform", cacheScope: "session", content: toolSections.webAccess },
|
|
@@ -776,8 +787,13 @@ var buildRequestBody = (options) => {
|
|
|
776
787
|
endpoint: customProviderUrl
|
|
777
788
|
});
|
|
778
789
|
Object.assign(bodyData, usageRequestOptions);
|
|
779
|
-
|
|
780
|
-
|
|
790
|
+
const effectiveProviderForReasoning = providerName?.toLowerCase() === "openrouter" || customProviderUrl?.toLowerCase().includes("openrouter.ai") ? "openrouter" : providerName;
|
|
791
|
+
if (reasoning_effort && isModelSupportReasoningEffort(model, effectiveProviderForReasoning)) {
|
|
792
|
+
const clamped = clampReasoningEffort(
|
|
793
|
+
reasoning_effort,
|
|
794
|
+
effectiveProviderForReasoning,
|
|
795
|
+
model
|
|
796
|
+
);
|
|
781
797
|
if (clamped) {
|
|
782
798
|
bodyData.reasoning_effort = clamped;
|
|
783
799
|
}
|
|
@@ -1208,7 +1224,7 @@ var buildProxyPayload = (bodyData, api, agentConfig, dialogId) => {
|
|
|
1208
1224
|
};
|
|
1209
1225
|
};
|
|
1210
1226
|
var fetchDirectly = async (params) => {
|
|
1211
|
-
const { api, agentConfig, bodyData, signal, currentServer, token } = params;
|
|
1227
|
+
const { api, agentConfig, bodyData, signal, currentServer, token, dialogId } = params;
|
|
1212
1228
|
try {
|
|
1213
1229
|
const apiKey = await resolveDirectRequestApiKey(agentConfig, {
|
|
1214
1230
|
syncFetcher: currentServer && token ? (ref) => fetchServerSyncedCredential({ currentServer, authToken: token }, ref) : void 0,
|
|
@@ -1228,7 +1244,8 @@ var fetchDirectly = async (params) => {
|
|
|
1228
1244
|
const authHeaders = buildProviderAuthHeaders({
|
|
1229
1245
|
endpoint: api,
|
|
1230
1246
|
apiKey: apiKey ?? "",
|
|
1231
|
-
apiKeyHeader: agentConfig.apiKeyHeader
|
|
1247
|
+
apiKeyHeader: agentConfig.apiKeyHeader,
|
|
1248
|
+
sessionId: dialogId || agentConfig.dbKey || agentConfig.key
|
|
1232
1249
|
});
|
|
1233
1250
|
return await fetch(api, {
|
|
1234
1251
|
method: "POST",
|
|
@@ -1794,12 +1811,17 @@ ${tableMd}
|
|
|
1794
1811
|
`;
|
|
1795
1812
|
};
|
|
1796
1813
|
var fetchSlateReference = async (dbKey, refContent, dispatch, options) => {
|
|
1797
|
-
|
|
1814
|
+
const hasSlate = Array.isArray(refContent?.slateData) && refContent.slateData.length > 0;
|
|
1815
|
+
const legacyContent = hasSlate ? null : resolvePageReadMarkdown(refContent).trim() || null;
|
|
1816
|
+
if (!hasSlate && !legacyContent) return null;
|
|
1798
1817
|
const title = refContent.title || `Untitled (${dbKey})`;
|
|
1799
1818
|
let contentString;
|
|
1800
1819
|
let contentType;
|
|
1801
1820
|
const inlineMentionMeta = options.inlineMentionMeta ?? options.format === "simplified_markdown";
|
|
1802
|
-
|
|
1821
|
+
if (legacyContent) {
|
|
1822
|
+
contentType = "Markdown (legacy content)";
|
|
1823
|
+
contentString = legacyContent;
|
|
1824
|
+
} else switch (options.format) {
|
|
1803
1825
|
case "text":
|
|
1804
1826
|
contentType = "Plain Text";
|
|
1805
1827
|
contentString = slateToText(refContent.slateData);
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
// packages/ai/tools/chromeConnectorTools.ts
|
|
2
|
+
var CHROME_CONNECTOR_TOOL_NAMES = [
|
|
3
|
+
"browser_list_tabs",
|
|
4
|
+
"browser_open_tab",
|
|
5
|
+
"browser_close_tab",
|
|
6
|
+
"browser_read_page",
|
|
7
|
+
"browser_click_element",
|
|
8
|
+
"browser_type",
|
|
9
|
+
"browser_press",
|
|
10
|
+
"browser_scroll",
|
|
11
|
+
"browser_screenshot",
|
|
12
|
+
"browser_read_console",
|
|
13
|
+
"browser_read_network"
|
|
14
|
+
];
|
|
15
|
+
var CHROME_CONNECTOR_LEGACY_TOOL_ALIASES = {
|
|
16
|
+
chrome_list_tabs: "browser_list_tabs",
|
|
17
|
+
chrome_open_tab: "browser_open_tab",
|
|
18
|
+
chrome_close_tab: "browser_close_tab",
|
|
19
|
+
chrome_read_page: "browser_read_page",
|
|
20
|
+
chrome_click: "browser_click_element",
|
|
21
|
+
chrome_type: "browser_type",
|
|
22
|
+
chrome_press: "browser_press",
|
|
23
|
+
chrome_scroll: "browser_scroll",
|
|
24
|
+
chrome_screenshot: "browser_screenshot",
|
|
25
|
+
chrome_read_console: "browser_read_console",
|
|
26
|
+
chrome_read_network: "browser_read_network"
|
|
27
|
+
};
|
|
28
|
+
var CHROME_CONNECTOR_LEGACY_TOOL_NAMES = Object.keys(
|
|
29
|
+
CHROME_CONNECTOR_LEGACY_TOOL_ALIASES
|
|
30
|
+
);
|
|
31
|
+
var CHROME_CONNECTOR_ACCEPTED_TOOL_NAMES = [
|
|
32
|
+
...CHROME_CONNECTOR_TOOL_NAMES,
|
|
33
|
+
...CHROME_CONNECTOR_LEGACY_TOOL_NAMES
|
|
34
|
+
];
|
|
35
|
+
function resolveChromeConnectorToolName(name) {
|
|
36
|
+
if (CHROME_CONNECTOR_TOOL_NAMES.includes(name)) {
|
|
37
|
+
return name;
|
|
38
|
+
}
|
|
39
|
+
return CHROME_CONNECTOR_LEGACY_TOOL_ALIASES[name];
|
|
40
|
+
}
|
|
41
|
+
function canonicalizeChromeConnectorToolNames(toolNames) {
|
|
42
|
+
const out = [];
|
|
43
|
+
for (const name of toolNames ?? []) {
|
|
44
|
+
const resolved = typeof name === "string" ? resolveChromeConnectorToolName(name) : void 0;
|
|
45
|
+
if (resolved && !out.includes(resolved)) out.push(resolved);
|
|
46
|
+
}
|
|
47
|
+
return out;
|
|
48
|
+
}
|
|
49
|
+
var CONNECTOR_TARGET_PROPERTY = {
|
|
50
|
+
type: "string",
|
|
51
|
+
description: "Reserved and ignored for now; future multi-provider targeting."
|
|
52
|
+
};
|
|
53
|
+
var CHROME_CONNECTOR_READ_TOOL_NAMES = [
|
|
54
|
+
"browser_list_tabs",
|
|
55
|
+
"browser_read_page",
|
|
56
|
+
"browser_screenshot",
|
|
57
|
+
"browser_read_console",
|
|
58
|
+
"browser_read_network"
|
|
59
|
+
];
|
|
60
|
+
var getChromeConnectorToolBehavior = (name) => CHROME_CONNECTOR_READ_TOOL_NAMES.includes(resolveChromeConnectorToolName(name)) ? "data" : "action";
|
|
61
|
+
var getChromeConnectorToolDefaultConsent = (name) => CHROME_CONNECTOR_READ_TOOL_NAMES.includes(resolveChromeConnectorToolName(name)) ? "auto" : "ask";
|
|
62
|
+
function baseSchema(name, description, properties, required = []) {
|
|
63
|
+
return {
|
|
64
|
+
name,
|
|
65
|
+
description,
|
|
66
|
+
parameters: {
|
|
67
|
+
type: "object",
|
|
68
|
+
properties: { ...properties, target: CONNECTOR_TARGET_PROPERTY },
|
|
69
|
+
required
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
var tabId = {
|
|
74
|
+
type: "string",
|
|
75
|
+
description: "Browser tab id returned by browser_list_tabs or browser_open_tab."
|
|
76
|
+
};
|
|
77
|
+
var elementRef = {
|
|
78
|
+
type: "string",
|
|
79
|
+
description: "Revision-scoped ref like 1a2b3c4d-e2, copied verbatim from browser_read_page; preferred over selector when available."
|
|
80
|
+
};
|
|
81
|
+
var selector = {
|
|
82
|
+
type: "string",
|
|
83
|
+
description: "CSS selector for the visible page element to operate on; fallback when no elementRef is available."
|
|
84
|
+
};
|
|
85
|
+
var chromeListTabsFunctionSchema = baseSchema(
|
|
86
|
+
"browser_list_tabs",
|
|
87
|
+
"List controllable browser tabs from the user's browser profile through the Nolo Browser Connector.",
|
|
88
|
+
{}
|
|
89
|
+
);
|
|
90
|
+
var chromeOpenTabFunctionSchema = baseSchema(
|
|
91
|
+
"browser_open_tab",
|
|
92
|
+
"Open a URL in the user's browser (Chrome or Firefox) through the Nolo Browser Connector.",
|
|
93
|
+
{
|
|
94
|
+
url: {
|
|
95
|
+
type: "string",
|
|
96
|
+
description: "HTTP or HTTPS URL to open in the browser."
|
|
97
|
+
},
|
|
98
|
+
active: {
|
|
99
|
+
type: "boolean",
|
|
100
|
+
description: "Whether to focus the new browser tab. Defaults to true."
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
["url"]
|
|
104
|
+
);
|
|
105
|
+
var chromeCloseTabFunctionSchema = baseSchema(
|
|
106
|
+
"browser_close_tab",
|
|
107
|
+
"Close a browser tab through the Nolo Browser Connector. Prefer closing the tabs your own run opened with browser_open_tab, and ask the user before closing a tab they are using. Pinned tabs are refused (TAB_PINNED); unknown tab ids fail (TAB_NOT_FOUND).",
|
|
108
|
+
{
|
|
109
|
+
tabId
|
|
110
|
+
},
|
|
111
|
+
["tabId"]
|
|
112
|
+
);
|
|
113
|
+
var chromeReadPageFunctionSchema = baseSchema(
|
|
114
|
+
"browser_read_page",
|
|
115
|
+
"Read a compact view of a browser tab: visible text (hard cap 6000 chars) plus short-lived elementRefs (hard cap 35) and a pageRevision. Reuse those refs for browser_click_element and browser_type instead of guessing selectors; use region to focus a big page. Does not read cookies or profile databases.",
|
|
116
|
+
{
|
|
117
|
+
tabId,
|
|
118
|
+
region: {
|
|
119
|
+
type: "string",
|
|
120
|
+
description: "Optional CSS selector limiting the read to part of the page."
|
|
121
|
+
},
|
|
122
|
+
maxChars: {
|
|
123
|
+
type: "number",
|
|
124
|
+
description: "Optional text character budget; the connector clamps it to a hard maximum."
|
|
125
|
+
},
|
|
126
|
+
detail: {
|
|
127
|
+
type: "string",
|
|
128
|
+
enum: ["compact", "full"],
|
|
129
|
+
description: "compact (default) returns budgeted text; full raises the budget and adds capped HTML."
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
["tabId"]
|
|
133
|
+
);
|
|
134
|
+
var chromeClickFunctionSchema = baseSchema(
|
|
135
|
+
"browser_click_element",
|
|
136
|
+
"Click a visible element in a browser tab by elementRef from browser_read_page, or by CSS selector. Controls whose name indicates an irreversible external action (payment, send, delete, publish, permission change) are refused with SENSITIVE_ACTION_REQUIRES_CONFIRMATION: this desktop runtime has no approval channel, so name the control and ask the user to activate it themselves.",
|
|
137
|
+
{
|
|
138
|
+
tabId,
|
|
139
|
+
elementRef,
|
|
140
|
+
selector
|
|
141
|
+
},
|
|
142
|
+
["tabId"]
|
|
143
|
+
);
|
|
144
|
+
var chromeTypeFunctionSchema = baseSchema(
|
|
145
|
+
"browser_type",
|
|
146
|
+
"Type text into a browser page element identified by elementRef from browser_read_page or by CSS selector. Typing into a control whose name indicates an irreversible external action is refused with SENSITIVE_ACTION_REQUIRES_CONFIRMATION, same as clicking it.",
|
|
147
|
+
{
|
|
148
|
+
tabId,
|
|
149
|
+
elementRef,
|
|
150
|
+
selector,
|
|
151
|
+
text: {
|
|
152
|
+
type: "string",
|
|
153
|
+
description: "Text to type into the selected element."
|
|
154
|
+
},
|
|
155
|
+
clearFirst: {
|
|
156
|
+
type: "boolean",
|
|
157
|
+
description: "Whether to clear the field before typing. Defaults to true."
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
["tabId", "text"]
|
|
161
|
+
);
|
|
162
|
+
var chromePressFunctionSchema = baseSchema(
|
|
163
|
+
"browser_press",
|
|
164
|
+
"Send a keyboard key or shortcut to a browser tab. Enter-like keys are refused with SENSITIVE_ACTION_REQUIRES_CONFIRMATION when the focused control is an irreversible action.",
|
|
165
|
+
{
|
|
166
|
+
tabId,
|
|
167
|
+
key: {
|
|
168
|
+
type: "string",
|
|
169
|
+
description: "Key or shortcut, for example Enter, Escape, ArrowDown, or Meta+L."
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
["tabId", "key"]
|
|
173
|
+
);
|
|
174
|
+
var chromeScrollFunctionSchema = baseSchema(
|
|
175
|
+
"browser_scroll",
|
|
176
|
+
"Scroll a browser tab by pixel deltas.",
|
|
177
|
+
{
|
|
178
|
+
tabId,
|
|
179
|
+
deltaX: {
|
|
180
|
+
type: "number",
|
|
181
|
+
description: "Horizontal scroll delta in pixels."
|
|
182
|
+
},
|
|
183
|
+
deltaY: {
|
|
184
|
+
type: "number",
|
|
185
|
+
description: "Vertical scroll delta in pixels."
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
["tabId"]
|
|
189
|
+
);
|
|
190
|
+
var chromeScreenshotFunctionSchema = baseSchema(
|
|
191
|
+
"browser_screenshot",
|
|
192
|
+
"Capture a screenshot from a browser tab through the Nolo Browser Connector.",
|
|
193
|
+
{
|
|
194
|
+
tabId,
|
|
195
|
+
fullPage: {
|
|
196
|
+
type: "boolean",
|
|
197
|
+
description: "Whether to capture the full page. Defaults to false."
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
["tabId"]
|
|
201
|
+
);
|
|
202
|
+
var chromeReadConsoleFunctionSchema = baseSchema(
|
|
203
|
+
"browser_read_console",
|
|
204
|
+
"Read recent console messages from a browser tab using debugger-backed connector state.",
|
|
205
|
+
{
|
|
206
|
+
tabId,
|
|
207
|
+
limit: {
|
|
208
|
+
type: "number",
|
|
209
|
+
description: "Maximum number of recent console messages to return."
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
["tabId"]
|
|
213
|
+
);
|
|
214
|
+
var chromeReadNetworkFunctionSchema = baseSchema(
|
|
215
|
+
"browser_read_network",
|
|
216
|
+
"Read a deduplicated recent network summary from a browser tab using debugger-backed connector state. Static assets are filtered unless includeAssets is set.",
|
|
217
|
+
{
|
|
218
|
+
tabId,
|
|
219
|
+
limit: {
|
|
220
|
+
type: "number",
|
|
221
|
+
description: "Maximum number of recent network entries to return."
|
|
222
|
+
},
|
|
223
|
+
includeAssets: {
|
|
224
|
+
type: "boolean",
|
|
225
|
+
description: "Include images, CSS, fonts and other static assets. Defaults to false."
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
["tabId"]
|
|
229
|
+
);
|
|
230
|
+
var chromeConnectorToolSchemas = [
|
|
231
|
+
chromeListTabsFunctionSchema,
|
|
232
|
+
chromeOpenTabFunctionSchema,
|
|
233
|
+
chromeCloseTabFunctionSchema,
|
|
234
|
+
chromeReadPageFunctionSchema,
|
|
235
|
+
chromeClickFunctionSchema,
|
|
236
|
+
chromeTypeFunctionSchema,
|
|
237
|
+
chromePressFunctionSchema,
|
|
238
|
+
chromeScrollFunctionSchema,
|
|
239
|
+
chromeScreenshotFunctionSchema,
|
|
240
|
+
chromeReadConsoleFunctionSchema,
|
|
241
|
+
chromeReadNetworkFunctionSchema
|
|
242
|
+
];
|
|
243
|
+
async function chromeConnectorUnavailableFunc() {
|
|
244
|
+
throw new Error("Browser connector tools are only executable in the Nolo desktop local runtime.");
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
export {
|
|
248
|
+
CHROME_CONNECTOR_LEGACY_TOOL_ALIASES,
|
|
249
|
+
CHROME_CONNECTOR_ACCEPTED_TOOL_NAMES,
|
|
250
|
+
canonicalizeChromeConnectorToolNames,
|
|
251
|
+
getChromeConnectorToolBehavior,
|
|
252
|
+
getChromeConnectorToolDefaultConsent,
|
|
253
|
+
chromeConnectorToolSchemas,
|
|
254
|
+
chromeConnectorUnavailableFunc
|
|
255
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {
|
|
2
|
+
compactWhitespace
|
|
3
|
+
} from "./chunk-DWLEOOGR.js";
|
|
4
|
+
|
|
5
|
+
// packages/core/clipCompactText.ts
|
|
6
|
+
function clipCompactText(value, max, ellipsis = "...") {
|
|
7
|
+
const compact = compactWhitespace(value);
|
|
8
|
+
if (compact.length <= max) return compact;
|
|
9
|
+
if (max <= ellipsis.length) return compact.slice(0, max);
|
|
10
|
+
return `${compact.slice(0, max - ellipsis.length)}${ellipsis}`;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export {
|
|
14
|
+
clipCompactText
|
|
15
|
+
};
|