nolo-cli 0.101.0-alpha.1 → 0.101.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-LUNEV235.js → _executeModel-WLFACVFR.js} +74 -67
- package/action-PNPQLJHG.js +20 -0
- package/{addContentAction-O7R66HEX.js → addContentAction-RBOUD7SJ.js} +12 -11
- package/{addDialogAgentAction-74OA7KYP.js → addDialogAgentAction-IODCR6TB.js} +18 -19
- package/{agentDeleteCommand-2YAHAZFJ.js → agentDeleteCommand-EFWZSSZA.js} +47 -42
- package/{agentEmailCommands-G6A7IRPQ.js → agentEmailCommands-FJ2DAY5M.js} +97 -87
- package/agentListCommands-EDV4RJ4D.js +742 -0
- package/{agentMachineCommands-W2SMNSQ3.js → agentMachineCommands-UOEI4TPN.js} +48 -43
- package/{agentProviderCommands-GNPTL5XR.js → agentProviderCommands-XPJYZSCE.js} +97 -2
- package/{agentPullCommand-O5MPVJ5E.js → agentPullCommand-B4T2DJ5H.js} +1 -1
- package/agentRecordCommands-MLDVCTFN.js +138 -0
- package/agentRunCommand-SY7N2BDL.js +167 -0
- package/{agentRunControl-AVJR4JW4.js → agentRunControl-3HWA2LLQ.js} +2 -2
- package/{agentRuntimeLocal-VXZSDIGT.js → agentRuntimeLocal-SXYAKX3A.js} +48 -39
- package/{agentSlice-5YJHUO47.js → agentSlice-WBSSBKBB.js} +14 -13
- package/{appDeleteCommands-32MHLR4L.js → appDeleteCommands-GTTBG53T.js} +46 -41
- package/{appDeployCommands-WCQOUSOB.js → appDeployCommands-ZZCHUJAT.js} +46 -41
- package/{appDeployStatusCommands-6QKB7DYN.js → appDeployStatusCommands-GZLLGY7Z.js} +46 -41
- package/{appGetCommands-SFAPP5PB.js → appGetCommands-ZRLWHJ3C.js} +46 -41
- package/{appListCommands-EKUBDRUO.js → appListCommands-OHARWLIL.js} +46 -41
- package/{authCommand-F4EFRRX6.js → authCommand-NHDLY3IB.js} +118 -24
- package/{authCommands-RGOGCPP6.js → authCommands-UDBJVSZU.js} +7 -5
- package/{builtinSkillRegistry-FUAVTRVZ.js → builtinSkillRegistry-MAR5LPAC.js} +10 -8
- package/{chromeCommands-FZYAU75D.js → chromeCommands-K27J4OVZ.js} +124 -28
- package/{chromeOpsCommands-62P2Q2YB.js → chromeOpsCommands-IXRLN57H.js} +4 -3
- package/{chunk-6OZ36FXI.js → chunk-27ONFIEY.js} +22 -4
- 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-ABQYVJBJ.js → chunk-46Y5D2BZ.js} +5 -5
- package/{chunk-EYAQT56M.js → chunk-4DPP773Q.js} +2 -2
- package/{chunk-H62HCIUP.js → chunk-4FFUDT6D.js} +24 -21
- package/chunk-4LCOCOR5.js +50 -0
- package/{chunk-2GRGFCF6.js → chunk-4VJAC32I.js} +2 -1
- package/{chunk-IIVGDG4I.js → chunk-4YSOUKUR.js} +13 -7
- package/{chunk-MC4XLIJ7.js → chunk-523DITKR.js} +1 -1
- package/{chunk-E4MARS3Q.js → chunk-5GVBDNTO.js} +1 -1
- package/chunk-5J3PYNUP.js +255 -0
- package/{chunk-DRGSDQBL.js → chunk-5LTAPGPV.js} +10 -10
- package/chunk-5MMAK75Q.js +15 -0
- package/{chunk-JPGCXHNM.js → chunk-5OA5HMTL.js} +1 -1
- package/{chunk-42V6BK2E.js → chunk-62IL3KQV.js} +4 -34
- package/{chunk-3BMYXEUW.js → chunk-6O4IK4V2.js} +1 -1
- package/{chunk-GQBOR3G6.js → chunk-7KVZ5LDQ.js} +2 -2
- package/{chunk-DNCEALKX.js → chunk-7MMSLEPA.js} +22 -29
- package/{chunk-L5UXH3B2.js → chunk-7TKWCTSY.js} +22 -6
- package/chunk-A4SQRTZ6.js +15 -0
- package/{chunk-7S4YWN7P.js → chunk-ADBZWMFB.js} +4 -4
- package/chunk-AGIM7IMJ.js +147 -0
- package/{chunk-5UTFL4QJ.js → chunk-AOTBKDRK.js} +7 -0
- package/{chunk-Q554LLSI.js → chunk-AUDNYVRC.js} +1 -1
- package/chunk-BMQ2MJUK.js +153 -0
- package/{chunk-6YTOJY35.js → chunk-BZ7NPA6G.js} +35 -2
- package/{chunk-4S5QUMJP.js → chunk-CHNCM7EF.js} +11 -9
- package/chunk-CHOZJMJS.js +78 -0
- package/chunk-CJN5OERD.js +13545 -0
- package/{chunk-ACTMNVHM.js → chunk-CYSYR67N.js} +1 -1
- package/{chunk-GBRG75BQ.js → chunk-D2MDMY2M.js} +1 -0
- package/{chunk-RFCKMYDK.js → chunk-DNHENQ3T.js} +23 -28
- package/chunk-DZ7R5V3Y.js +164 -0
- package/{chunk-3VNWWVKB.js → chunk-E3YWHWCR.js} +50 -18
- package/{chunk-V4MJDUSR.js → chunk-E73ON47R.js} +2 -2
- package/{chunk-KQ4ONNQD.js → chunk-EKPKW6RM.js} +155 -8
- package/{chunk-TRV2MIDW.js → chunk-EXAJ6DCR.js} +1 -0
- package/{chunk-HJUYAD4A.js → chunk-FJ5BGMNM.js} +5 -5
- package/{chunk-2F7RJC6L.js → chunk-FOXQ7BAB.js} +1 -1
- package/{chunk-6IG4XSS6.js → chunk-FY7DCYW7.js} +88 -17
- package/{chunk-6VFARHZW.js → chunk-G53AA7RW.js} +934 -1091
- package/{chunk-J4MOO56S.js → chunk-GARACBQB.js} +10 -2
- package/chunk-GMZLP5DV.js +82 -0
- package/{chunk-5FBTLSFG.js → chunk-GUYEMTRK.js} +551 -516
- package/{chunk-FDTR4QJ6.js → chunk-H6A6X4EK.js} +32 -1
- 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-GPCZ7UXG.js → chunk-K6U4NKFJ.js} +1 -1
- package/{chunk-6Q33GUCC.js → chunk-KLUBZL6X.js} +1 -1
- package/{chunk-4OEFYTWL.js → chunk-LKERWYPX.js} +67 -48
- package/{chunk-OEVAY4J6.js → chunk-LNVJHIGA.js} +18 -20
- package/{chunk-LS2ZANRJ.js → chunk-LOCNXNOU.js} +1 -1
- package/{chunk-PUOC4YRO.js → chunk-M7VLQGQP.js} +11 -0
- package/{chunk-BFU6C242.js → chunk-NMFV26UG.js} +1 -1
- package/{chunk-X6DN5HBD.js → chunk-NRUSXKH7.js} +24 -5
- package/{chunk-FZGV4FGK.js → chunk-NUHHBEJC.js} +378 -187
- package/chunk-NWENLDMM.js +42 -0
- package/{chunk-AEOE4Z6Q.js → chunk-NZWAO6LH.js} +13 -15
- package/chunk-OCZKATRC.js +129 -0
- package/{chunk-G2O6V3HJ.js → chunk-ODTDLPBV.js} +20 -11
- package/chunk-OW4APERY.js +870 -0
- package/{chunk-KQHGZWSV.js → chunk-OXME3PEE.js} +1 -1
- package/{chunk-Q2XN3EOZ.js → chunk-OYPMWCIQ.js} +67 -45
- package/{chunk-TOP2VXOR.js → chunk-PCF3QU5Q.js} +5 -5
- package/chunk-PH275YDS.js +7881 -0
- package/{chunk-WV42OMV7.js → chunk-PTDYOADJ.js} +8 -8
- package/{chunk-5H7KJX7J.js → chunk-SEB5HAUU.js} +5 -5
- package/{chunk-6D6VBVEW.js → chunk-SNMQMOD2.js} +80 -14
- package/{chunk-BYMV6QZG.js → chunk-TNIX77YM.js} +4 -0
- package/{chunk-Z77CRGTW.js → chunk-TVCAR26G.js} +1 -1
- package/chunk-TY3TIUJK.js +89 -0
- package/{chunk-I3TQJXQ7.js → chunk-U3C3IA32.js} +9 -2
- package/{chunk-ORYWEJO4.js → chunk-U6IGAJT4.js} +47 -67
- package/{chunk-RG6JBBX5.js → chunk-U7XXEI5R.js} +166 -13
- package/{chunk-UZGQNTVW.js → chunk-UA324D4O.js} +8 -6
- package/chunk-UJXNKP5V.js +760 -0
- package/{chunk-UKZDAFYT.js → chunk-UM4PH574.js} +6 -10
- package/{chunk-GEPUP7OO.js → chunk-UVKDJUTL.js} +3 -3
- package/{chunk-ZCYXJSTU.js → chunk-V5OWQOJZ.js} +19 -88
- package/{chunk-NA35QHCF.js → chunk-V7Y6KRAH.js} +1 -1
- package/{chunk-3DII57IT.js → chunk-VCAQFMVN.js} +1 -1
- package/{chunk-JRQFUXY7.js → chunk-VEYL5MO5.js} +99 -22
- package/chunk-VIWDGTDA.js +8 -0
- package/chunk-VJVNU77E.js +83 -0
- package/{chunk-UKWGR5SS.js → chunk-VY6VFGKR.js} +194 -1144
- package/{chunk-BP4XNZRM.js → chunk-W72ISAKC.js} +4 -4
- package/{chunk-DHDMC6FO.js → chunk-WCGC6S77.js} +14 -9
- package/{chunk-QDSINZM3.js → chunk-WJ3B6FX6.js} +1 -14
- package/{chunk-SSDAAEC2.js → chunk-X34KOYU2.js} +873 -227
- package/{chunk-HVURBGF3.js → chunk-XFUBXRVI.js} +6 -6
- package/{chunk-45C5ER5U.js → chunk-XIRXOUBV.js} +19 -17
- package/{chunk-O6OSWFZQ.js → chunk-XUWRURDF.js} +6 -0
- package/{chunk-Q67DOFOO.js → chunk-Y3PMXGLH.js} +2 -0
- package/{chunk-ETI2NYVF.js → chunk-YPOPJAKN.js} +4 -4
- package/{chunk-SH43IESU.js → chunk-YUNJN43V.js} +44 -9
- package/chunk-YV25TM3R.js +780 -0
- package/{chunk-BTI7PJDX.js → chunk-Z56IK6UT.js} +29 -78
- package/chunk-ZRAU6T47.js +56 -0
- package/commandRegistry-2HPRUR3I.js +833 -0
- package/{contentThunks-GJV22WVZ.js → contentThunks-F2BNWOZV.js} +36 -34
- package/{cooldownCommands-REAWYVTY.js → cooldownCommands-ZLEPIB4A.js} +2 -2
- package/{createAgentAutomationAction-6V25TZEO.js → createAgentAutomationAction-5N2NRNR7.js} +38 -36
- package/createDialogAction-DSEG4L5Y.js +69 -0
- package/{createPageAction-IR4BGJSI.js → createPageAction-K32FYQPE.js} +45 -42
- package/{chunk-YFE4A4O7.js → cursorProvider-YGGNMVWX.js} +2496 -9897
- package/{dbSlice-XVWBAGYN.js → dbSlice-Q25STFGJ.js} +11 -10
- package/{deleteFile-YG6QMJLU.js → deleteFile-AJ2EZMHT.js} +7 -6
- package/{dialogCommands-5J56DFWN.js → dialogCommands-LF7PLYAD.js} +49 -45
- package/{dialogSlice-UNX2FAPZ.js → dialogSlice-4GBOUTGL.js} +40 -33
- package/{dist-VODFSGNG.js → dist-NJC2W7I4.js} +61 -54
- package/{docCreateCommands-KYI2DC2U.js → docCreateCommands-NQR3S7A4.js} +48 -43
- package/{docDeleteCommands-67REUSRY.js → docDeleteCommands-V3IAQ2HT.js} +49 -44
- package/{docReadCommands-HOSVSBDJ.js → docReadCommands-GDX4CLSU.js} +47 -42
- package/{docStore-JWVG5NDO.js → docStore-ZTYSP3YE.js} +16 -12
- package/{docUpdateCommands-EMGCSMXY.js → docUpdateCommands-QMYXWQOU.js} +48 -43
- package/{fetchMessages-EIU7UFFK.js → fetchMessages-I5ICDDHM.js} +5 -5
- package/{getPricing-LUSEABA6.js → getPricing-NMMFT3YI.js} +4 -4
- package/{handleSendMessageAction-B75UOJKF.js → handleSendMessageAction-XFZH2TQS.js} +110 -86
- package/index.js +87 -884
- package/{lib-FRRS27KN.js → lib-PU2G2MSO.js} +523 -191
- package/{localDialogRead-BTFJ4V2I.js → localDialogRead-ZHZ3KXDM.js} +2 -2
- package/{localRuntimeAuthority-6IR6BBXE.js → localRuntimeAuthority-TU6OBC76.js} +9 -6
- package/{localRuntimeDb-SYQGUF4U.js → localRuntimeDb-VKWVOPPI.js} +1 -1
- package/{machineCommands-GFPTOY6L.js → machineCommands-KMU3D5I5.js} +91 -81
- package/machineWsRunDispatch-6GJ5YOSW.js +154 -0
- package/{memberThunks-QGFLFVCI.js → memberThunks-R75S3RWP.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-SRQMNO26.js} +7 -6
- package/{readDocTool-5USN4A6V.js → readDocTool-RC3JUNJ2.js} +5 -3
- package/{readlineWorkspace-UFSWHFKD.js → readlineWorkspace-ZMNRQXMC.js} +2704 -2060
- package/{removeDialogAgentAction-IX3MN2ZO.js → removeDialogAgentAction-46XQV5Q7.js} +21 -25
- package/{runAgentClientLoop-25LJ4XGV.js → runAgentClientLoop-URRDZ5WG.js} +75 -69
- package/{runtimeDoctorCommands-X6WDBEQX.js → runtimeDoctorCommands-PIVSBZRZ.js} +4 -4
- package/runtimeModeArgs-2Y7BALTO.js +31 -0
- package/{setDialogExtraReferencesAction-X4HCPNZL.js → setDialogExtraReferencesAction-J4V5ADQF.js} +15 -13
- package/{setPrimaryDialogAgentAction-4GMIQLOD.js → setPrimaryDialogAgentAction-UHHV2QZW.js} +22 -26
- package/{chunk-AFUORTY4.js → settingThunks-PPZZZOWN.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-2P2X37MC.js} +51 -46
- package/{streamAgentChatTurn-A46QFV4O.js → streamAgentChatTurn-YPUYKXDX.js} +206 -105
- package/{switchDialogAgentAction-N52LRPA3.js → switchDialogAgentAction-A2TMVGAE.js} +18 -19
- package/{tableCommands-O6NWHFKV.js → tableCommands-6U4BMLRR.js} +10 -10
- package/{toolApiClient-QVJ6HDNN.js → toolApiClient-EJT6TMFG.js} +3 -3
- package/tools-M5ENXZRJ.js +116 -0
- package/{tuiSummaryLlmCaller-WFRWERGK.js → tuiSummaryLlmCaller-Q65IBDGO.js} +24 -21
- package/{updateCommands-2M74UL7P.js → updateCommands-4EHDLF5J.js} +3 -3
- package/{updateDialogTitleAction-QJPZGF52.js → updateDialogTitleAction-7PNUE23W.js} +82 -44
- package/action-YVYQEAAV.js +0 -31
- package/agentListCommands-KMS675GZ.js +0 -406
- package/agentRecordCommands-D7BRMFNI.js +0 -128
- package/agentRunCommand-VL6MMEUB.js +0 -155
- package/browser-image-compression-MFDTD7K6.js +0 -1763
- package/chatQueueReduxAdapter-PQMRR2PK.js +0 -186
- package/chunk-M76ECQRD.js +0 -13658
- package/chunk-MEYIRKDN.js +0 -8967
- package/chunk-Q5FJJ6XI.js +0 -103
- package/chunk-QVKRR2SS.js +0 -20782
- package/chunk-S7Z2HMCN.js +0 -25
- package/chunk-Y5GCAMGP.js +0 -9
- package/chunk-YPREESF4.js +0 -225
- package/createDialogAction-SX36BGSX.js +0 -65
- package/machineWsRunDispatch-46PSZ3DJ.js +0 -144
- package/settingSlice-ZQZVUPKK.js +0 -204
- package/syncMapping-N6RGXGBW.js +0 -437
- package/tools-TTDGRNY6.js +0 -110
- package/{chunk-VMFTFOWF.js → chunk-3AH7LNUB.js} +7 -7
- package/{chunk-X7HHHIOZ.js → chunk-Y6ROFCZO.js} +0 -0
- package/{db-WK5MDZVN.js → db-VQSAOWAO.js} +1 -1
|
@@ -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
|
+
};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
toolRegistry
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GUYEMTRK.js";
|
|
4
4
|
import {
|
|
5
|
-
|
|
6
|
-
} from "./chunk-
|
|
5
|
+
runtime_default
|
|
6
|
+
} from "./chunk-CJN5OERD.js";
|
|
7
7
|
import {
|
|
8
8
|
canonicalizeToolNames
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-XUWRURDF.js";
|
|
10
10
|
import {
|
|
11
11
|
isNoloHostedProvider
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-Y3PMXGLH.js";
|
|
13
13
|
import {
|
|
14
14
|
asTrimmedLowercaseString
|
|
15
15
|
} from "./chunk-QSJ3HFEF.js";
|
|
@@ -151,12 +151,12 @@ var PREPARE_TOOLS_CACHE_LIMIT = 128;
|
|
|
151
151
|
var warnedUnknownToolNames = /* @__PURE__ */ new Set();
|
|
152
152
|
function getTranslation(keys, defaultVal) {
|
|
153
153
|
for (const key of keys) {
|
|
154
|
-
if (
|
|
155
|
-
return
|
|
154
|
+
if (runtime_default.exists(key)) {
|
|
155
|
+
return runtime_default.t(key);
|
|
156
156
|
}
|
|
157
157
|
const aiKey = key.startsWith("ai:") ? key : `ai:${key}`;
|
|
158
|
-
if (
|
|
159
|
-
return
|
|
158
|
+
if (runtime_default.exists(aiKey)) {
|
|
159
|
+
return runtime_default.t(aiKey);
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
return defaultVal;
|
|
@@ -203,7 +203,7 @@ function translateSchema(schema) {
|
|
|
203
203
|
return nextSchema;
|
|
204
204
|
}
|
|
205
205
|
function currentI18nLanguage() {
|
|
206
|
-
return typeof
|
|
206
|
+
return typeof runtime_default.language === "string" ? runtime_default.language : "";
|
|
207
207
|
}
|
|
208
208
|
function translateSchemaCached(schema) {
|
|
209
209
|
if (!schema || typeof schema !== "object") return schema;
|
|
@@ -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
|
+
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
-
mergeAvailabilityDeadline
|
|
3
|
-
|
|
2
|
+
mergeAvailabilityDeadline,
|
|
3
|
+
resolveCredentialKeyWithFallback
|
|
4
|
+
} from "./chunk-H6A6X4EK.js";
|
|
4
5
|
|
|
5
|
-
// packages/
|
|
6
|
+
// packages/agent-runtime/credentialAvailability.ts
|
|
6
7
|
import { homedir } from "node:os";
|
|
7
8
|
import { join } from "node:path";
|
|
8
9
|
import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
|
|
@@ -13,36 +14,6 @@ function resolveNoloHome(env = process.env) {
|
|
|
13
14
|
function resolveCredentialAvailabilityPath(env = process.env) {
|
|
14
15
|
return join(resolveNoloHome(env), FILE_NAME);
|
|
15
16
|
}
|
|
16
|
-
function resolveCredentialKey(agent) {
|
|
17
|
-
if (!agent || typeof agent !== "object") return void 0;
|
|
18
|
-
for (const field of ["apiKeyRef", "credentialRef"]) {
|
|
19
|
-
const value = agent[field];
|
|
20
|
-
if (typeof value === "string") {
|
|
21
|
-
const trimmed = value.trim();
|
|
22
|
-
if (trimmed) return trimmed;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return void 0;
|
|
26
|
-
}
|
|
27
|
-
function resolveCredentialKeyWithFallback(agent) {
|
|
28
|
-
const byRef = resolveCredentialKey(agent);
|
|
29
|
-
if (byRef) return byRef;
|
|
30
|
-
if (!agent || typeof agent !== "object") return void 0;
|
|
31
|
-
const endpoint = agent.customProviderUrl;
|
|
32
|
-
if (typeof endpoint === "string") {
|
|
33
|
-
const trimmed = endpoint.trim();
|
|
34
|
-
if (trimmed) {
|
|
35
|
-
try {
|
|
36
|
-
const origin = new URL(trimmed).origin;
|
|
37
|
-
if (origin && origin !== "null") return `custom-endpoint:${origin}`;
|
|
38
|
-
} catch {
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
const key = agent.key;
|
|
43
|
-
if (typeof key === "string" && key.trim()) return `custom-agent:${key.trim()}`;
|
|
44
|
-
return void 0;
|
|
45
|
-
}
|
|
46
17
|
function parseFile(raw) {
|
|
47
18
|
const parsed = JSON.parse(raw);
|
|
48
19
|
if (!parsed || typeof parsed !== "object") return { entries: {} };
|
|
@@ -155,7 +126,6 @@ function applyCredentialAvailability(agents, credentialAvailability) {
|
|
|
155
126
|
}
|
|
156
127
|
|
|
157
128
|
export {
|
|
158
|
-
resolveCredentialKeyWithFallback,
|
|
159
129
|
readCredentialAvailability,
|
|
160
130
|
readCredentialEntry,
|
|
161
131
|
markCredentialUnavailable,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getModelConfig
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-3BXNTXYI.js";
|
|
4
4
|
import {
|
|
5
5
|
isPlatformHostedDeepseekModel,
|
|
6
6
|
isPlatformHostedOpenAIImageModel,
|
|
7
7
|
resolvePlatformHostedRouting
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-Y3PMXGLH.js";
|
|
9
9
|
import {
|
|
10
10
|
asTrimmedLowercaseString
|
|
11
11
|
} from "./chunk-QSJ3HFEF.js";
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
estimateTokenCount
|
|
3
3
|
} from "./chunk-PSCNXBYA.js";
|
|
4
|
-
import {
|
|
5
|
-
compactWhitespace
|
|
6
|
-
} from "./chunk-DWLEOOGR.js";
|
|
7
4
|
import {
|
|
8
5
|
addContentAction
|
|
9
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-E73ON47R.js";
|
|
10
7
|
import {
|
|
11
8
|
upload
|
|
12
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-4FFUDT6D.js";
|
|
13
10
|
import {
|
|
14
11
|
getRuntimeServerContext
|
|
15
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-UJXNKP5V.js";
|
|
16
13
|
import {
|
|
17
14
|
API_ENDPOINTS
|
|
18
15
|
} from "./chunk-LCBAMY2M.js";
|
|
@@ -42,8 +39,7 @@ var serializeMessageContent = (content, imagePlaceholder = "[\u56FE\u7247]") =>
|
|
|
42
39
|
return null;
|
|
43
40
|
};
|
|
44
41
|
|
|
45
|
-
// packages/
|
|
46
|
-
var BYTES_PER_MB = 1024 * 1024;
|
|
42
|
+
// packages/core/file/dataUrl.ts
|
|
47
43
|
var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
48
44
|
var parseDataUrl = (dataUrl) => {
|
|
49
45
|
const trimmed = dataUrl.trim();
|
|
@@ -615,7 +611,7 @@ function planCompression(input) {
|
|
|
615
611
|
}
|
|
616
612
|
|
|
617
613
|
// packages/ai/context/compactionShared.ts
|
|
618
|
-
var COMPACTION_SUMMARY_SCHEMA_VERSION =
|
|
614
|
+
var COMPACTION_SUMMARY_SCHEMA_VERSION = 2;
|
|
619
615
|
var COMPACTION_SUMMARY_SYSTEM_PROMPT = `\u4F60\u662F\u5BF9\u8BDD\u4E0A\u4E0B\u6587\u538B\u7F29\u5668\u3002\u6839\u636E\u3010\u73B0\u6709\u8BB0\u5FC6\u3011\u548C\u3010\u65B0\u589E\u5BF9\u8BDD\u3011\uFF0C\u8F93\u51FA\u53EF\u66FF\u4EE3\u539F\u59CB\u6D88\u606F\u7684\u4E8B\u5B9E\u6027\u8981\u70B9\uFF0C\u4F9B\u540E\u7EED\u5BF9\u8BDD\u76F4\u63A5\u4F7F\u7528\u3002
|
|
620
616
|
|
|
621
617
|
\u4E25\u683C\u53EA\u8F93\u51FA\u4E0B\u9762\u4E09\u90E8\u5206\uFF0C\u6807\u9898\u5FC5\u987B\u5B8C\u5168\u4E00\u81F4\uFF1A
|
|
@@ -628,10 +624,16 @@ var COMPACTION_SUMMARY_SYSTEM_PROMPT = `\u4F60\u662F\u5BF9\u8BDD\u4E0A\u4E0B\u65
|
|
|
628
624
|
|
|
629
625
|
\u8981\u6C42\uFF1A
|
|
630
626
|
1) \u4F7F\u7528\u5BF9\u8BDD\u4E3B\u8BED\u8A00\uFF1B\u6DF7\u5408\u8BED\u8A00\u65F6\u4F18\u5148\u7528\u6237\u4E3B\u8981\u8BED\u8A00\uFF1B\u4E13\u6709\u540D\u8BCD\u3001\u6587\u4EF6\u8DEF\u5F84\u3001\u6807\u8BC6\u7B26\u3001\u547D\u4EE4\u4FDD\u7559\u539F\u6587\uFF0C\u4E0D\u8981\u7FFB\u8BD1\u6216\u8F6C\u8FF0\u3002
|
|
631
|
-
2) \u5173\u952E\u4E8B\u5B9E\u6863\u6848\
|
|
627
|
+
2) \u5173\u952E\u4E8B\u5B9E\u6863\u6848\u7684**\u524D\u4E24\u9879\u56FA\u5B9A\u662F**\uFF1A
|
|
628
|
+
- \u300C\u539F\u59CB\u76EE\u6807\u300D\uFF1A\u7528\u6237\u6700\u521D\u4E3A\u4EC0\u4E48\u5F00\u8FD9\u6BB5\u5BF9\u8BDD\uFF08\u5C3D\u91CF\u4FDD\u7559\u4ED6\u7684\u539F\u8BDD\u4E0E\u7528\u8BCD\uFF0C\u4E0D\u8981\u6539\u5199\u6210\u4EFB\u52A1\u6E05\u5355\uFF09\u3002
|
|
629
|
+
\u589E\u91CF\u66F4\u65B0\u65F6\u6CBF\u7528\u3010\u73B0\u6709\u8BB0\u5FC6\u3011\u91CC\u5DF2\u6709\u7684\u300C\u539F\u59CB\u76EE\u6807\u300D\uFF0C\u4E0D\u8981\u88AB\u65B0\u589E\u5BF9\u8BDD\u6539\u5199\u2014\u2014\u5B83\u662F\u7A33\u5B9A\u5B57\u6BB5\uFF1B
|
|
630
|
+
\u4EC5\u5F53\u65B0\u5BF9\u8BDD\u660E\u786E\u8868\u660E\u539F\u6587\u6709\u4E8B\u5B9E\u6027\u9519\u8BEF\u65F6\u624D\u4FEE\u6B63\uFF0C\u5E76\u5728\u300C\u76EE\u6807\u6F14\u5316\u300D\u91CC\u6CE8\u660E\u3002
|
|
631
|
+
- \u300C\u76EE\u6807\u6F14\u5316\u300D\uFF1A\u82E5\u4E2D\u9014\u8F6C\u5411\uFF0C\u5199\u6E05\u8F6C\u5411\u4E86\u4EC0\u4E48\u3001\u56E0\u4E3A\u4EC0\u4E48\uFF1B\u6CA1\u6709\u8F6C\u5411\u5C31\u5199\u300C\u65E0\u8F6C\u5411\u300D\u6216\u7701\u7565\u8FD9\u4E00\u9879\uFF0C\u4E0D\u8981\u786C\u51D1\u3002
|
|
632
|
+
\u88AB\u540E\u7EED\u5DE5\u4F5C\u53D6\u4EE3\u7684\u662F"\u65B9\u6848"\uFF0C\u4E0D\u662F"\u7528\u6237\u7684\u521D\u59CB\u610F\u56FE"\u2014\u2014\u521D\u59CB\u610F\u56FE\u4E0D\u5F97\u7701\u7565\u3002
|
|
633
|
+
\u5176\u540E\u624D\u662F\uFF1A\u7528\u6237\u504F\u597D\u3001\u7EA6\u675F\u3001\u6280\u672F\u6808\u3001\u786E\u5B9A\u7684\u6587\u4EF6\u8DEF\u5F84\u3001\u6838\u5FC3\u51B3\u7B56\u3001\u672A\u5B8C\u6210\u5F85\u529E\u3002\u4FDD\u7559\u786E\u5207\u503C\uFF08\u7AEF\u53E3\u53F7\u3001\u7248\u672C\u53F7\u3001\u8DEF\u5F84\u3001\u53D8\u91CF\u540D\u3001\u9519\u8BEF\u4FE1\u606F\u539F\u6587\uFF09\uFF0C\u4E0D\u8981\u6982\u62EC\u6210"\u67D0\u4E2A\u7AEF\u53E3"\u6216"\u67D0\u4E2A\u6587\u4EF6"\u6216"\u67D0\u62A5\u9519"\u3002
|
|
632
634
|
3) \u5BF9\u8BDD\u8FDB\u5C55\u4E0E\u5F85\u529E\u4EE5\u7B2C\u4E00\u4EBA\u79F0\u7EED\u4F5C\u7B14\u8BB0\u7684\u53E3\u543B\u5199\uFF08"\u6211\u505A\u4E86\u2026""\u7528\u6237\u8981\u6C42\u2026""\u4E0B\u4E00\u6B65\u6211\u9700\u8981\u2026"\uFF09\uFF0C\u4E0D\u8981\u5199\u6210\u7B2C\u4E09\u65B9\u89C2\u5BDF\u62A5\u544A\u3002\u5148\u6781\u7B80\u6982\u62EC\u65E7\u4E0A\u4E0B\u6587\uFF0C\u518D\u66F4\u8BE6\u7EC6\u8BB0\u5F55\u6700\u8FD1\u8FDB\u5C55\u3001\u7ED3\u8BBA\u3001\u5206\u6B67\u4E0E\u4E0B\u4E00\u6B65\u3002\u5BF9\u4E8E\u58F0\u79F0\u5DF2\u5B8C\u6210\u4F46\u5C1A\u672A\u9A8C\u8BC1\u7684\u5DE5\u4F5C\uFF08\u5982\u5DE5\u5177\u8C03\u7528\u8FD4\u56DE\u6210\u529F\u4F46\u7ED3\u679C\u672A\u4EBA\u5DE5\u786E\u8BA4\uFF09\uFF0C\u660E\u786E\u6807\u6CE8"\uFF08\u5F85\u9A8C\u8BC1\uFF09"\u2014\u2014\u4E0D\u8981\u9ED8\u8BA4\u4FE1\u4EFB\u5DE5\u5177\u8FD4\u56DE\u503C\u3002
|
|
633
635
|
4) \u6587\u4EF6\u64CD\u4F5C\u6E05\u5355\uFF1A\u5217\u51FA\u672C\u6B21\u538B\u7F29\u8303\u56F4\u5185\u8BFB\u53D6\u3001\u5199\u5165\u3001\u7F16\u8F91\u8FC7\u7684\u6587\u4EF6\u8DEF\u5F84\u53CA\u64CD\u4F5C\u7C7B\u578B\uFF08\u5982: - \u8BFB\u53D6: path/to/file\uFF1B\u82E5\u672A\u6D89\u53CA\u6587\u4EF6\u64CD\u4F5C\u5199"\u65E0"\uFF09\u3002
|
|
634
|
-
5) \u5FFD\u7565\u5BD2\u6684\u3001\u91CD\u590D\u5C1D\u8BD5\
|
|
636
|
+
5) \u5FFD\u7565\u5BD2\u6684\u3001\u91CD\u590D\u5C1D\u8BD5\u548C\u65E0\u4EF7\u503C\u5E9F\u8BDD\uFF1B**\u5DF2\u653E\u5F03\u7684\u65B9\u6848/\u5C1D\u8BD5**\u53EF\u4EE5\u7701\u7565\uFF0C\u4F46\u7528\u6237\u5F53\u521D\u7684\u610F\u56FE\u4E0E\u7406\u7531\u4E0D\u53EF\u7701\u7565\uFF08\u89C1\u7B2C 2 \u6761\uFF09\u3002
|
|
635
637
|
6) \u4E0D\u8981\u7F16\u9020\u672A\u51FA\u73B0\u7684\u4FE1\u606F\uFF1B\u4E0D\u8981\u5F00\u573A\u767D\u3001\u7ED3\u675F\u8BED\u3001markdown \u4EE3\u7801\u5757\u6216\u989D\u5916\u7AE0\u8282\uFF1B\u4E0D\u8981\u8C03\u7528\u4EFB\u4F55\u5DE5\u5177\u3002`;
|
|
636
638
|
function formatMessageContentFallback(msg) {
|
|
637
639
|
const content = serializeMessageContent(msg.content);
|
|
@@ -767,14 +769,6 @@ function formatCompactionMetricsLog(metrics) {
|
|
|
767
769
|
return `[Compaction] reason=${metrics.reason} compressed=${metrics.compressedCount}->${metrics.retainedCount} msgs, tokens=${totalBefore}->${totalAfter} (ratio=${ratio})${llmInfo}`;
|
|
768
770
|
}
|
|
769
771
|
|
|
770
|
-
// packages/core/clipCompactText.ts
|
|
771
|
-
function clipCompactText(value, max, ellipsis = "...") {
|
|
772
|
-
const compact = compactWhitespace(value);
|
|
773
|
-
if (compact.length <= max) return compact;
|
|
774
|
-
if (max <= ellipsis.length) return compact.slice(0, max);
|
|
775
|
-
return `${compact.slice(0, max - ellipsis.length)}${ellipsis}`;
|
|
776
|
-
}
|
|
777
|
-
|
|
778
772
|
// packages/ai/token/providerCallTiming.ts
|
|
779
773
|
var defaultNow = () => {
|
|
780
774
|
const perf = globalThis.performance;
|
|
@@ -846,7 +840,14 @@ var isMeaningfulResponsesOutput = (event) => {
|
|
|
846
840
|
};
|
|
847
841
|
|
|
848
842
|
export {
|
|
849
|
-
|
|
843
|
+
normalizeTimingMs,
|
|
844
|
+
createProviderCallTimingTracker,
|
|
845
|
+
observeMeaningfulProviderResponseAt,
|
|
846
|
+
observeMeaningfulProviderResponse,
|
|
847
|
+
finalizeProviderCallTiming,
|
|
848
|
+
withProviderCallTimingFields,
|
|
849
|
+
isMeaningfulChatCompletionOutput,
|
|
850
|
+
isMeaningfulResponsesOutput,
|
|
850
851
|
planContextUsage,
|
|
851
852
|
buildDatabaseFileContentUrl,
|
|
852
853
|
serializeMessageContent,
|
|
@@ -860,13 +861,5 @@ export {
|
|
|
860
861
|
formatFileOperationsFromMessages,
|
|
861
862
|
formatMessagesForSummaryWithTruncation,
|
|
862
863
|
buildCompactionMetricsFromPlan,
|
|
863
|
-
formatCompactionMetricsLog
|
|
864
|
-
normalizeTimingMs,
|
|
865
|
-
createProviderCallTimingTracker,
|
|
866
|
-
observeMeaningfulProviderResponseAt,
|
|
867
|
-
observeMeaningfulProviderResponse,
|
|
868
|
-
finalizeProviderCallTiming,
|
|
869
|
-
withProviderCallTimingFields,
|
|
870
|
-
isMeaningfulChatCompletionOutput,
|
|
871
|
-
isMeaningfulResponsesOutput
|
|
864
|
+
formatCompactionMetricsLog
|
|
872
865
|
};
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isImageUrlPart,
|
|
3
3
|
isOllamaEndpoint
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-M7VLQGQP.js";
|
|
5
5
|
import {
|
|
6
6
|
AGENT_SELECTION_PRIORITY_INSTRUCTIONS
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-4YSOUKUR.js";
|
|
8
8
|
import {
|
|
9
9
|
getModelContextWindow
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-LKERWYPX.js";
|
|
11
11
|
import {
|
|
12
12
|
estimateTokenCount
|
|
13
13
|
} from "./chunk-PSCNXBYA.js";
|
|
14
14
|
import {
|
|
15
15
|
canonicalizeToolNames
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-XUWRURDF.js";
|
|
17
17
|
import {
|
|
18
18
|
PLATFORM_HOSTED_KIMI_K3_MODEL,
|
|
19
19
|
isFireworksKimiModel,
|
|
20
20
|
isNoloHostedProvider
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-Y3PMXGLH.js";
|
|
22
22
|
import {
|
|
23
23
|
asTrimmedLowercaseString
|
|
24
24
|
} from "./chunk-QSJ3HFEF.js";
|
|
@@ -37,6 +37,12 @@ var buildIdentityBlock = (input) => {
|
|
|
37
37
|
return lines.join("\n");
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
+
// packages/agent-runtime/deleteSafety.ts
|
|
41
|
+
var DELETE_SAFETY_RED_LINE = [
|
|
42
|
+
"\u3010\u5220\u9664\u5B89\u5168\u7EA2\u7EBF \xB7 \u6700\u9AD8\u4F18\u5148\u7EA7\u3011",
|
|
43
|
+
"\u4EFB\u4F55\u5220\u9664\u64CD\u4F5C\uFF08\u6587\u4EF6\u3001\u6570\u636E\u3001\u5E73\u53F0/\u8FDC\u7AEF\u5185\u5BB9\u3001\u6D88\u606F\u7B49\uFF0C\u65E0\u8BBA\u5355\u6761\u6216\u6279\u91CF\uFF09\u6267\u884C\u524D\uFF0C\u5FC5\u987B\u5148\u5411\u7528\u6237\u5448\u73B0\u5B8C\u6574\u5F85\u5220\u6E05\u5355\uFF08\u540D\u79F0/\u8DEF\u5F84/\u6807\u9898\u7B49\u53EF\u8BC6\u522B\u4FE1\u606F\uFF0C\u4E0D\u5F97\u622A\u65AD\uFF09\uFF0C\u5E76\u83B7\u5F97\u7528\u6237\u660E\u786E\u786E\u8BA4\u540E\u624D\u53EF\u6267\u884C\uFF1B\u4E25\u7981\u7528\u6A21\u7CCA\u5B9A\u4F4D\uFF08\u5982\u201C\u5217\u8868\u6700\u4E0B\u65B9\u201D\uFF09\u6307\u4EE3\u5220\u9664\u76EE\u6807\uFF0C\u4E25\u7981\u5148\u5220\u540E\u62A5\u3002\uFF082026-09-26 \u6279\u91CF\u8BEF\u5220\u4E8B\u6545\u6559\u8BAD\uFF09"
|
|
44
|
+
].join("\n");
|
|
45
|
+
|
|
40
46
|
// packages/agent-runtime/contextLayerContract.ts
|
|
41
47
|
var buildContextLayerContractBlock = (options = {}) => {
|
|
42
48
|
const lines = [
|
|
@@ -258,7 +264,7 @@ ${AGENT_SELECTION_PRIORITY_INSTRUCTIONS}
|
|
|
258
264
|
var AGENT_COMMIT_REVIEW_GATE = `**commit \u524D\u786C\u95E8\uFF08\u9636\u6BB5\u5212\u5206\u4E0E\u72EC\u7ACB\u5BA1\u67E5\uFF09**\uFF1A
|
|
259
265
|
- **\u9636\u6BB5\u533A\u5206**\uFF1A\u4E25\u683C\u533A\u5206\u300C\u5B9E\u73B0/\u6784\u5EFA/\u5B89\u88C5/\u7528\u6237\u6D4B\u8BD5/\u6839\u636E\u53CD\u9988\u8FED\u4EE3\u300D\u4E0E\u300C\u51C6\u5907\u63D0\u4EA4/\u5408\u5E76\u300D\u9636\u6BB5\u3002UI/\u524D\u7AEF\u7B49\u9700\u7528\u6237\u9A8C\u6536\u7684\u529F\u80FD\u5728\u5B9E\u73B0\u9636\u6BB5**\u4E0D\u5F97\u89E6\u53D1\u6216\u7B49\u5F85\u6700\u7EC8\u72EC\u7ACB review**\uFF0C\u5148\u4EA4\u4ED8\u53EF\u6D4B\u8BD5\u4EA7\u7269\uFF0C\u7B49\u5F85\u7528\u6237\u6D4B\u8BD5\u4E0E\u53CD\u9988\uFF1B\u5B89\u5168\u5173\u952E\u53D8\u66F4\u7684\u5FC5\u8981\u5BA1\u67E5\u4E0D\u53D7\u5F71\u54CD\uFF1B\u72EC\u7ACB\u7684\u53EA\u8BFB\u5BA1\u8BA1\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u7684\u63D0\u524D review \u53EF\u63D0\u524D\u8FDB\u884C\uFF0C\u4F46\u4E0D\u5F97\u963B\u585E\u7528\u6237\u6D4B\u8BD5\u6216\u4F5C\u4E3A\u63D0\u524D\u7684\u63D0\u4EA4\u95E8\u3002
|
|
260
266
|
- **\u6700\u7EC8\u5BA1\u67E5\u65F6\u673A**\uFF1A\u53EA\u6709\u5F53\u7528\u6237\u660E\u786E\u786E\u8BA4\u51C6\u5907\u63D0\u4EA4/\u5408\u5E76\u65F6\uFF0C\u624D\u6D3E\u53D1\u6700\u7EC8 review\u3002\u9664 \u22642 \u6B65\u96F6\u903B\u8F91\u98CE\u9669\u7684\u673A\u68B0\u6539\u52A8\u5916\uFF0C\u6240\u6709\u4EE3\u7801\u53D8\u66F4 commit \u524D\u5FC5\u987B\u5148\u6D3E\u4E0E\u6267\u884C\u8005\u4E0D\u540C\u5B9E\u4F8B\uFF08\u4E0A\u4E0B\u6587\u9694\u79BB\u5373\u53EF\uFF09\u7684 reviewer \u5BA1\u5DE5\u4F5C\u533A diff\uFF0Creviewer \u4E0D\u53EF\u662F\u672C\u6B21\u6539\u52A8\u7684\u4F5C\u8005\uFF1B\u65E0 review \u4E0D commit\u3002\u63D0\u4EA4\u524D review \u5FAA\u73AF\uFF1A\u7528\u6237\u786E\u8BA4\u51C6\u5907\u63D0\u4EA4 \u2192 startAgentRun \u6D3E reviewer \u5BA1 diff \u2192 \u4FEE finding \u2192 \u590D\u5BA1\u76F4\u5230 APPROVE\uFF08\u65E0 CRITICAL/HIGH\uFF09\u624D\u63D0\u4EA4\uFF1BBLOCK \u5FC5\u4FEE\u3001WARNING \u62A5\u7528\u6237\u3002
|
|
261
|
-
- **review \u8BC1\u636E\u786C\u95E8**\uFF1A\u4EC5\u5F53 reviewer \u8FD4\u56DE\u53EF\u8BFB\u7684\u6700\u7EC8\u6587\u672C\u4E14\u660E\u786E\u542B APPROVE\u3001\u65E0 CRITICAL/HIGH \u624D\u7B97\u901A\u8FC7\uFF1Bdone\u3001exit 0\u3001\u7A7A dialog\u3001messagesCount=0\u3001agentReply=null\u3001\u8D85\u65F6\u5747\u89C6\u4E3A\u672A\u5BA1\u67E5\uFF0C\u4E25\u7981\u63D0\u4EA4\u3002review context contract\uFF1A\u6D3E reviewer \u524D\u6309\u6539\u52A8\u8303\u56F4\u52A0\u8F7D\u8BE5\u4ED3\u5E93\u7684\u9879\u76EE\u6307\u4EE4\uFF08AGENTS.md \u7C7B\uFF09\u3001\u5DE5\u4F5C\u6D41/\u8BA1\u5212\u6587\u6863\u3001\u547D\u4E2D\u7684 skill \u4E0E references\uFF0C\u4EE5\u53CA touched files \u7684\u5B8C\u6574 diff\uFF0Cbrief \u91CC\u5217\u51FA\u5B9E\u9645\u52A0\u8F7D\u7684 context\uFF1B\u5177\u4F53\u6E05\u5355\u4EE5\u8BE5\u4ED3\u5E93\u81EA\u5DF1\u7684 review \u89C4\u8303\u4E3A\u51C6\uFF08bun-nolo \u89C1 nolo-plan\u300C\u5408\u5E76\u95E8\u300D\u8282\uFF09\u3002\u5BA1\u67E5\u6E05\u5355\uFF1A\u53EF\u8BFB\u6027/\u53EF\u641C\u7D22\u6027\u3001\u53EF\u7EF4\u62A4\u6027/\u5220\u9664\u6210\u672C\u3001\u53EF\u7EC4\u5408\u6027/\u590D\u7528\u3001\u91CD\u590D\u5B9E\u73B0\u3001\u53EF\u5220\u9664\u4EE3\u7801\u3002\u82E5\u5904\u4E8E\u5355 Agent \u72EC\u5360\u73AF\u5883\u3001\u5176\u4ED6 agent \u4E0D\u53EF\u8FBE\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u76F4\u63A5\u63D0\u4EA4\uFF0C\
|
|
267
|
+
- **review \u8BC1\u636E\u786C\u95E8**\uFF1A\u4EC5\u5F53 reviewer \u8FD4\u56DE\u53EF\u8BFB\u7684\u6700\u7EC8\u6587\u672C\u4E14\u660E\u786E\u542B APPROVE\u3001\u65E0 CRITICAL/HIGH \u624D\u7B97\u901A\u8FC7\uFF1Bdone\u3001exit 0\u3001\u7A7A dialog\u3001messagesCount=0\u3001agentReply=null\u3001\u8D85\u65F6\u5747\u89C6\u4E3A\u672A\u5BA1\u67E5\uFF0C\u4E25\u7981\u63D0\u4EA4\u3002review context contract\uFF1A\u6D3E reviewer \u524D\u6309\u6539\u52A8\u8303\u56F4\u52A0\u8F7D\u8BE5\u4ED3\u5E93\u7684\u9879\u76EE\u6307\u4EE4\uFF08AGENTS.md \u7C7B\uFF09\u3001\u5DE5\u4F5C\u6D41/\u8BA1\u5212\u6587\u6863\u3001\u547D\u4E2D\u7684 skill \u4E0E references\uFF0C\u4EE5\u53CA touched files \u7684\u5B8C\u6574 diff\uFF0Cbrief \u91CC\u5217\u51FA\u5B9E\u9645\u52A0\u8F7D\u7684 context\uFF1B\u5177\u4F53\u6E05\u5355\u4EE5\u8BE5\u4ED3\u5E93\u81EA\u5DF1\u7684 review \u89C4\u8303\u4E3A\u51C6\uFF08bun-nolo \u89C1 nolo-plan\u300C\u5408\u5E76\u95E8\u300D\u8282\uFF09\u3002\u5BA1\u67E5\u6E05\u5355\uFF1A\u53EF\u8BFB\u6027/\u53EF\u641C\u7D22\u6027\u3001\u53EF\u7EF4\u62A4\u6027/\u5220\u9664\u6210\u672C\u3001\u53EF\u7EC4\u5408\u6027/\u590D\u7528\u3001\u91CD\u590D\u5B9E\u73B0\u3001\u53EF\u5220\u9664\u4EE3\u7801\u3002\u82E5\u5904\u4E8E\u5355 Agent \u72EC\u5360\u73AF\u5883\u3001\u5176\u4ED6 agent \u4E0D\u53EF\u8FBE\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u76F4\u63A5\u63D0\u4EA4\uFF0C**\u4E0D\u5F97\u51ED [no-review: \u2026] \u8DF3\u8FC7**\u2014\u2014\u8BE5\u5199\u6CD5\u4EFB\u4F55\u5224\u636E\u90FD\u89E3\u6790\u4E0D\u4E86\uFF08\u5199\u4E86\u7167\u6837\u88AB\u62E6\uFF09\u3002\u81EA\u6709\u95F8\u95E8\u8BA4 Reviewed-by: <\u975E\u7A7A\u7F72\u540D> \u52A0 Review: \u5E26\u7ED3\u8BBA\uFF08APPROVE / Approved / WARNING\uFF09\uFF1Bpre-push / pre-merge \u53E6\u8BA4\u4E00\u6761 owner-only \u8C41\u514D\uFF08\u6B63\u6587 No-Review: <\u539F\u56E0> \u52A0 author email \u547D\u4E2D NO_REVIEW_OWNER_EMAILS \u767D\u540D\u5355\uFF0C\u89C1 packages/nolo-ci/core/src/mapping.ts\uFF09\uFF0Cagent \u8EAB\u4EFD\u4E0D\u9002\u7528\u3002\u88AB\u5361\u4F4F\u5C31\u5982\u5B9E\u62A5\u544A\u5361\u70B9\uFF0C\u7531 owner \u51B3\u5B9A\u3002\u6D89\u53CA\u4ED3\u5E93\u6587\u4EF6\u5199\u5165\u5FC5\u987B\u7528\u72EC\u7ACB worktree\u3002\u4ED3\u5E93\u7EA7 plan / review / worktree \u7EAA\u5F8B\u4EE5 AGENTS.md \u4E3A\u51C6\u3002`;
|
|
262
268
|
var AGENT_CONFIRM_BOUNDARY = `--- \u786E\u8BA4\u8FB9\u754C ---
|
|
263
269
|
- \u6D89\u53CA\u4E0D\u53EF\u9006\u64CD\u4F5C\uFF08\u4FEE\u6539\u6587\u4EF6\u3001\u5220\u9664\u6570\u636E\u3001\u53D1\u9001\u6D88\u606F\u3001\u751F\u6210\u6B63\u5F0F\u6587\u4EF6\u3001\u6267\u884C\u4EA4\u6613\uFF09\u6216\u9AD8\u6210\u672C\u52A8\u4F5C\uFF08\u5927\u89C4\u6A21\u91CD\u6784/\u957F\u65F6\u8FD0\u884C/\u5927\u91CF token\uFF09\u65F6\uFF0C\u4F18\u5148\u9884\u89C8\u6216\u5411\u7528\u6237\u786E\u8BA4\uFF1B\u5DE5\u5177\u8FD4\u56DE"\u9884\u89C8/\u5F85\u786E\u8BA4"\u65F6\u6682\u505C\uFF0C\u7B49\u660E\u786E\u786E\u8BA4\u518D\u7EE7\u7EED\uFF0C\u672A\u786E\u8BA4\u524D\u4E0D\u8FDE\u7EED\u53D1\u591A\u6B21\u7834\u574F\u6027\u4FEE\u6539\u3002
|
|
264
270
|
- \u6536\u5230\u300C\u5B50\u5BF9\u8BDD\u7981\u6B62\u518D\u521B\u5EFA\u5B59\u5BF9\u8BDD\u300D\uFF1D\u4F60\u5DF2\u662F\u5B50\u5BF9\u8BDD\uFF0C\u7981\u6B62\u518D\u6D3E\u53D1\uFF0C\u628A\u7ED3\u679C\u8FD4\u56DE\u7236\u5BF9\u8BDD\u5373\u53EF\u3002`;
|
|
@@ -324,6 +330,9 @@ var PRIVILEGE_ESCALATION_INSTRUCTIONS = `--- \u6743\u9650\u63D0\u5347 ---
|
|
|
324
330
|
- \u786E\u5B9E\u7ED5\u4E0D\u5F00\uFF1A\u7ED9\u51FA\u4E00\u6761\u53EF\u76F4\u63A5\u7C98\u8D34\u7684\u547D\u4EE4\uFF08\u591A\u6B65\u5408\u5E76\u6210\u4E00\u6761\uFF09\uFF0C\u4E00\u6B21\u6027\u8BF4\u6E05\u526F\u4F5C\u7528\uFF0C\u7B49\u7528\u6237\u56DE\u62A5\u7ED3\u679C\u518D\u7EE7\u7EED\uFF1B\u4E0D\u8981\u8BA9\u7528\u6237\u6765\u56DE\u8DD1\u591A\u6B65\u3001\u4E0D\u8981\u91CD\u590D\u7D22\u8981\u3002
|
|
325
331
|
3. Windows \u7528 \`Start-Process -Verb RunAs\`\uFF08UAC \u5F39\u7A97\uFF09\u3001macOS \u7528 \`osascript ... with administrator privileges\`\uFF0C\u4EA4\u4E92\u539F\u5219\u76F8\u540C\uFF1A\u5F39\u7A97\u524D\u5148\u8BF4\u660E\u3001\u5931\u8D25\u540E\u4E0D\u91CD\u590D\u6253\u6270\u3002
|
|
326
332
|
4. \u7981\u6B62\u9759\u9ED8\u7ED5\u8FC7\uFF1A\u4E0D\u91CD\u8BD5\u540C\u4E00\u7279\u6743\u547D\u4EE4\u8D4C\u8FD0\u6C14\u3001\u4E0D\u7528\u7BA1\u9053/\u73AF\u5883\u53D8\u91CF\u5582\u5BC6\u7801\u7ED9 sudo\u3001\u4E0D\u4FEE\u6539 polkit/sudoers \u653E\u5BBD\u6388\u6743\u3002`;
|
|
333
|
+
var SHELL_TASK_LIFECYCLE_INSTRUCTIONS = `--- Shell \u4EFB\u52A1\u751F\u547D\u5468\u671F\u7EAA\u5F8B\uFF08execShell / launchProcess\uFF09 ---
|
|
334
|
+
1. **\u6CA1\u6709 taskId\uFF0C\u5C31\u4E0D\u5F97\u7ED3\u675F\u56DE\u5408\u5E76\u627F\u8BFA\u7A0D\u540E\u81EA\u52A8\u6C47\u62A5\u3002** execShell \u540C\u6B65\u8FD4\u56DE\uFF08\u7ED3\u679C\u91CC\u6709 exitCode\u3001\u6CA1\u6709 metadata.detached:true + taskId\uFF09\u8868\u793A\u547D\u4EE4\u5DF2\u7ECF\u7ED3\u675F\u2014\u2014\u6700\u7EC8\u7ED3\u679C\u5C31\u5728\u672C\u56DE\u5408\u91CC\uFF0C\u5FC5\u987B\u7ACB\u5373\u89E3\u6790\uFF1B\u4E0D\u5F97\u628A stdout \u91CC\u7684 \`LAUNCHED\`/\`STARTED\`/\`BACKGROUND\` \u7B49\u56DE\u6267\u5F53\u6210"\u5DF2\u653E\u540E\u53F0"\uFF08\u90A3\u53EA\u662F\u547D\u4EE4\u81EA\u5DF1\u6253\u5370\u7684\u666E\u901A\u8F93\u51FA\uFF0C\u6CA1\u6709\u4EFB\u4F55\u751F\u547D\u5468\u671F\u8BED\u4E49\uFF09\uFF0C\u4E0D\u5F97\u4EE5"\u5B8C\u6210\u540E\u6211\u4F1A\u81EA\u52A8\u56DE\u6765\u6C47\u62A5"\u7ED3\u675F\u56DE\u5408\u3002\u53EA\u6709 metadata.detached === true \u4E14\u5E26 taskId \u7684\u7ED3\u679C\u624D\u662F\u53D7\u8DDF\u8E2A\u7684\u540E\u53F0\u4EFB\u52A1\uFF0C\u624D\u53EF\u80FD\u7EC8\u6001\u81EA\u52A8\u5524\u9192\uFF1BlaunchProcess \u8FD4\u56DE\u7684 taskId \u4E5F\u53EA\u5728\u4E0B\u4E00\u6B21\u771F\u5B9E turn \u6CE8\u5165\u5B8C\u6210\u901A\u77E5\uFF0C\u4E0D\u4F1A\u81EA\u52A8\u5F00\u65B0\u56DE\u5408\u3002
|
|
335
|
+
2. **\u540C\u6B65\u8FD4\u56DE exitCode \u540E\u5FC5\u987B\u7ACB\u5373\u89E3\u6790\u7ED3\u679C\uFF1B\u82E5\u6838\u5FC3\u8F93\u51FA\u88AB\u91CD\u5B9A\u5411\u5230\u6587\u4EF6\uFF0C\u5FC5\u987B\u5728\u5F53\u524D\u56DE\u5408\u5185\u8BFB\u53D6\u8BE5\u6587\u4EF6\u3002** \u540C\u6B65\u547D\u4EE4\u6CA1\u6709\u4EFB\u4F55\u540E\u7EED\u4E8B\u4EF6\u4F1A\u63D0\u9192\u4F60\uFF0C"\u56DE\u5934\u518D\u8BFB\u6587\u4EF6"\u7B49\u4E8E\u6C38\u4E45\u4E22\u5931\u3002\u786E\u5B9E\u9700\u8981"\u7A0D\u540E\u53D6\u7ED3\u679C"\u7684\u6709\u9650\u540E\u53F0\u4F5C\u4E1A\uFF08\u6D4B\u8BD5\u3001\u6784\u5EFA\u3001\u6279\u5904\u7406\uFF09\uFF0C\u7528 execShell({ background: true })\u2014\u2014\u5B83\u7ACB\u5373\u8F6C\u4E3A\u53D7\u8DDF\u8E2A\u540E\u53F0\u4EFB\u52A1\uFF0C\u7EC8\u6001\u4F1A\u628A\u6709\u754C\u7ED3\u679C\u5E26\u56DE\u672C\u5BF9\u8BDD\u3002`;
|
|
327
336
|
var TOOL_GUIDED_SECTIONS = [
|
|
328
337
|
{
|
|
329
338
|
id: "toolRoundEconomy",
|
|
@@ -341,6 +350,11 @@ var TOOL_GUIDED_SECTIONS = [
|
|
|
341
350
|
triggerTools: ["execShell"],
|
|
342
351
|
build: () => PRIVILEGE_ESCALATION_INSTRUCTIONS
|
|
343
352
|
},
|
|
353
|
+
{
|
|
354
|
+
id: "shellTaskLifecycle",
|
|
355
|
+
triggerTools: ["execShell", "launchProcess"],
|
|
356
|
+
build: () => SHELL_TASK_LIFECYCLE_INSTRUCTIONS
|
|
357
|
+
},
|
|
344
358
|
{
|
|
345
359
|
id: "agentOrchestration",
|
|
346
360
|
triggerTools: [
|
|
@@ -379,6 +393,7 @@ var TOOL_GUIDED_SECTION_ORDER = [
|
|
|
379
393
|
"toolRoundEconomy",
|
|
380
394
|
"toolUseGuidance",
|
|
381
395
|
"privilegeEscalation",
|
|
396
|
+
"shellTaskLifecycle",
|
|
382
397
|
"agentOrchestration",
|
|
383
398
|
"agentCollaboration",
|
|
384
399
|
"webAccess",
|
|
@@ -590,6 +605,7 @@ var normalizeChatCompletionsBodyForProvider = ({
|
|
|
590
605
|
|
|
591
606
|
export {
|
|
592
607
|
buildIdentityBlock,
|
|
608
|
+
DELETE_SAFETY_RED_LINE,
|
|
593
609
|
buildRuntimeGuidanceBlocks,
|
|
594
610
|
TOOL_GUIDED_SECTION_ORDER,
|
|
595
611
|
resolveToolGuidedSections,
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BUILTIN_NOLO_AGENT_KEY
|
|
3
|
+
} from "./chunk-BNGW5ASC.js";
|
|
4
|
+
|
|
5
|
+
// packages/core/init.ts
|
|
6
|
+
var nolotusId = "0e95801d90";
|
|
7
|
+
var ADMIN_IDS = /* @__PURE__ */ new Set([nolotusId]);
|
|
8
|
+
var isSystemAdmin = (userId) => userId != null && ADMIN_IDS.has(userId);
|
|
9
|
+
var noloAgentId = BUILTIN_NOLO_AGENT_KEY;
|
|
10
|
+
|
|
11
|
+
export {
|
|
12
|
+
nolotusId,
|
|
13
|
+
isSystemAdmin,
|
|
14
|
+
noloAgentId
|
|
15
|
+
};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
dialogMessageRange
|
|
3
|
-
} from "./chunk-VMFTFOWF.js";
|
|
4
1
|
import {
|
|
5
2
|
isTombstoneRecord
|
|
6
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-D2MDMY2M.js";
|
|
7
4
|
import {
|
|
8
5
|
isRecord
|
|
9
6
|
} from "./chunk-KUG52IAP.js";
|
|
7
|
+
import {
|
|
8
|
+
dialogMessageRange
|
|
9
|
+
} from "./chunk-3AH7LNUB.js";
|
|
10
10
|
|
|
11
11
|
// packages/chat/messages/fetchMessages.ts
|
|
12
12
|
function isUnboundedMessageLimit(limit) {
|