nolo-cli 0.149.0-alpha.1 → 0.151.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{_executeModel-OW3H7ICR.js → _executeModel-XHAFJ2MM.js} +134 -91
- package/accountResolver-7RYB4D2P.js +300 -0
- package/action-SXJD5N5R.js +23 -0
- package/{addContentAction-B2DRF7P6.js → addContentAction-ZV774PHH.js} +20 -14
- package/{addDialogAgentAction-2P2FLTLD.js → addDialogAgentAction-A6SMKAGH.js} +26 -22
- package/{agentDeleteCommand-7IDWF6E3.js → agentDeleteCommand-DPUUS56Z.js} +181 -93
- package/{agentEmailCommands-A6XBQZBN.js → agentEmailCommands-V4P5EFLP.js} +132 -112
- package/{agentGrantCommands-M3XFO6EN.js → agentGrantCommands-HOJ3JBBQ.js} +3 -3
- package/agentListCommands-TWFLUYIZ.js +802 -0
- package/{agentMachineCommands-DQPUIMAC.js → agentMachineCommands-MELPAZZI.js} +58 -62
- package/{agentProviderCommands-YK2BIIXZ.js → agentProviderCommands-HL6MBLCL.js} +149 -2
- package/{agentPullCommand-HF4A42D4.js → agentPullCommand-FA43RBRU.js} +7 -7
- package/agentRecordCommands-FSWSSQIO.js +154 -0
- package/agentRunCommand-GDBJVOAT.js +183 -0
- package/{agentRunControl-2SKCR4SB.js → agentRunControl-IFM7IGMG.js} +10 -2
- package/{agentRuntimeLocal-AK2QVJHY.js → agentRuntimeLocal-KKSQJMTE.js} +47 -50
- package/{agentSlice-O4RUQUMT.js → agentSlice-YO2ZLJMD.js} +23 -16
- package/{appDeleteCommands-N3XEVVYC.js → appDeleteCommands-4PL4KYRN.js} +58 -59
- package/{appDeployCommands-AWFIXYVW.js → appDeployCommands-EEEXCEB6.js} +67 -63
- package/{appDeployStatusCommands-CZRON2FO.js → appDeployStatusCommands-35ZX7T66.js} +56 -56
- package/{appGetCommands-XQIUY4TD.js → appGetCommands-WFCHXJWF.js} +56 -56
- package/{appListCommands-NNG4H36Y.js → appListCommands-XY2U6DPF.js} +57 -59
- package/{authCommand-UBJ4EWYZ.js → authCommand-QYN47CQD.js} +371 -68
- package/{authCommands-H6WKKCRW.js → authCommands-77CHYBGF.js} +12 -9
- package/{builtinSkillRegistry-ZMF6YGNO.js → builtinSkillRegistry-TDQ6JB2E.js} +13 -11
- package/{chromeCommands-2N6MEWRU.js → chromeCommands-OBBNJCLS.js} +314 -13
- package/chromeOpsCommands-3Z34RKSE.js +472 -0
- package/{chunk-ALXHV7NK.js → chunk-2GGXHQIW.js} +43 -4
- package/{localRuntimeAuthority-5W6IJRAD.js → chunk-2IXDJNZI.js} +154 -75
- package/{chunk-IVZJWTDI.js → chunk-36OMEXXR.js} +89 -21
- package/{chunk-H6A6X4EK.js → chunk-3MZAGMYY.js} +16 -0
- package/chunk-3PVYUPXK.js +40 -0
- package/chunk-3SZA4U64.js +1192 -0
- package/{chunk-GNMAFAIS.js → chunk-44WXLHFI.js} +1 -1
- package/{chunk-AGGIDPCZ.js → chunk-4JH2UMJR.js} +6 -0
- package/chunk-4LCOCOR5.js +50 -0
- package/chunk-4YRTZIVN.js +871 -0
- package/chunk-556RW72X.js +14110 -0
- package/{chunk-N7J63Q6C.js → chunk-56GBUMO5.js} +10 -1
- package/{chunk-W7XHHYWM.js → chunk-5BHQICF2.js} +5 -1
- package/{chunk-XUWRURDF.js → chunk-5EBLANFT.js} +1 -1
- package/{chunk-3AH7LNUB.js → chunk-5EMSBTQ6.js} +33 -14
- package/{chunk-YRRASA5Q.js → chunk-5MM7NNO6.js} +113 -52
- package/chunk-5MMAK75Q.js +15 -0
- package/{chunk-M5PVFLD4.js → chunk-64K7WX26.js} +90 -21
- package/{chunk-AKG5W4LG.js → chunk-6CCFTVBP.js} +76 -221
- package/chunk-6MJNEXUU.js +614 -0
- package/{chunk-62IL3KQV.js → chunk-6MXDOUMH.js} +15 -3
- package/{chunk-QOKAKDPE.js → chunk-6Q7UTJKR.js} +6 -94
- package/chunk-6QDYSCPW.js +223 -0
- package/{chunk-HYZIYH2H.js → chunk-74RAWNQN.js} +56 -63
- package/chunk-7DPNBQSV.js +9 -0
- package/chunk-7MOXKPHC.js +119 -0
- package/{chunk-ZUEK6A6C.js → chunk-7XKL25PW.js} +1973 -754
- package/{chunk-IAESIMK7.js → chunk-A4MW3YZL.js} +10 -14
- package/chunk-AGIM7IMJ.js +147 -0
- package/{chunk-7CHC4W22.js → chunk-AIZE5TDM.js} +3 -3
- package/{chunk-YAQJJDC2.js → chunk-AOCM7HPT.js} +214 -51
- package/{chunk-5GVBDNTO.js → chunk-AU7AXHUL.js} +1 -1
- package/{chunk-4H22P2JV.js → chunk-AUIJZACN.js} +2073 -1275
- package/{chunk-CIF4X6ZM.js → chunk-AWVFQMOV.js} +25 -3
- package/{chunk-RYZINGPM.js → chunk-BPMPOFWP.js} +347 -235
- package/{chunk-YUNJN43V.js → chunk-BU2YQBV4.js} +215 -28
- package/{chunk-XPRWFQQK.js → chunk-CBHGZRCE.js} +38 -12
- package/{chunk-Y3PMXGLH.js → chunk-CHCS6XPJ.js} +365 -144
- package/chunk-CHOZJMJS.js +78 -0
- package/{chunk-GBRG75BQ.js → chunk-D2MDMY2M.js} +1 -0
- package/{chunk-3SV7RM24.js → chunk-D2QN6CTI.js} +117 -72
- package/{chunk-5TEEECZM.js → chunk-E2AKSW7L.js} +10 -7
- package/{chunk-RSEEDUMS.js → chunk-EDX5XSJM.js} +2 -2
- package/{chunk-ATLTFRYJ.js → chunk-ES633ZS5.js} +280 -98
- package/{chunk-QDSINZM3.js → chunk-EUGTFFO6.js} +2 -23
- package/{chunk-UNYJU5L6.js → chunk-EYLGAEB4.js} +5 -1
- package/{chunk-CU3QB4HW.js → chunk-EYWJT7A2.js} +12 -12
- package/{chunk-BNGW5ASC.js → chunk-EZVK3N5L.js} +66 -18
- package/{chunk-6FGTMQCL.js → chunk-F32Z66T4.js} +6 -10
- package/chunk-FJMRBOPO.js +11507 -0
- package/{chunk-ZOVKKMF6.js → chunk-FY4SDK2E.js} +1 -1
- package/chunk-G6OOUQWJ.js +417 -0
- package/{chunk-PQWU42UQ.js → chunk-GCKHQECX.js} +6 -6
- package/chunk-GKXCHNTE.js +15 -0
- package/{chunk-TXH4IWJL.js → chunk-GQN2WLAI.js} +20 -11
- package/{chunk-P6GMCCAT.js → chunk-GQV5KHJU.js} +78 -12
- package/{chunk-B2XUQXQX.js → chunk-HIQ4GF53.js} +191 -68
- package/{chunk-MST6R3E4.js → chunk-HKX3ULQB.js} +34 -22
- package/{chunk-GMZLP5DV.js → chunk-HNUWUO75.js} +30 -19
- package/{chunk-5UTFL4QJ.js → chunk-I2ZMGXXF.js} +10 -5
- package/chunk-I42VC5KR.js +15 -0
- package/{chunk-3BXNTXYI.js → chunk-I4SN4NUQ.js} +1199 -56
- package/chunk-IA7TRNNR.js +11 -0
- package/{chunk-WIWM4FE3.js → chunk-IJERIUXS.js} +55 -748
- package/{chunk-CPUFH46E.js → chunk-ILU2NPWY.js} +10 -10
- package/{chunk-SLLGJZDT.js → chunk-ISQL4V7C.js} +4 -4
- package/chunk-IT3ZZRJE.js +12 -0
- package/{chunk-TZZ2WRBL.js → chunk-IZ7OJB6K.js} +20 -16
- package/{chunk-DY7ANLKG.js → chunk-JKMLSTZK.js} +43 -12
- package/{chunk-6TPOEJMQ.js → chunk-JZX2XLKC.js} +64 -23
- package/{chunk-27ONFIEY.js → chunk-K2AER7RX.js} +19 -12
- package/{chunk-O2OWEFII.js → chunk-KFHQQ3NO.js} +1 -1
- package/{chunk-QXGPFY6J.js → chunk-LGN377P3.js} +27 -17
- package/{chunk-L36OWPP3.js → chunk-LIQJTQRN.js} +118 -139
- package/{chunk-UASIEDKM.js → chunk-LTRUTOHX.js} +36 -31
- package/{chunk-BFU6C242.js → chunk-NMFV26UG.js} +1 -1
- package/{chunk-5J3PYNUP.js → chunk-NYYFIKHI.js} +17 -3
- package/{chunk-6O4IK4V2.js → chunk-OFFL4DCR.js} +1 -1
- package/{chunk-B6SAMB33.js → chunk-OWYYDMGJ.js} +209 -9
- package/{chunk-KQHGZWSV.js → chunk-OXME3PEE.js} +1 -1
- package/{chunk-CTUQJVQM.js → chunk-P5QACQDK.js} +1 -1
- package/{chunk-DXHL7G2L.js → chunk-PCKVQXYV.js} +274 -93
- package/{chunk-4JMDLJAD.js → chunk-PJNFNEJE.js} +114 -37
- package/{chunk-Z4CSIXYP.js → chunk-PLSVXHSA.js} +3 -3
- package/{chunk-BIDGLJQ3.js → chunk-PLXDDGBK.js} +45 -8
- package/chunk-PWTNI4N7.js +47 -0
- package/chunk-QFEW2ULV.js +42 -0
- package/{chunk-RGNEEJ3Y.js → chunk-QLQ573SU.js} +35 -9
- package/chunk-QQ56R7KS.js +88 -0
- package/chunk-QYPE3TS3.js +43 -0
- package/{chunk-4DPP773Q.js → chunk-RSHPU4PD.js} +59 -11
- package/chunk-RVWMAFIT.js +134 -0
- package/{chunk-ESHYE7WU.js → chunk-S73EPYNC.js} +10 -7
- package/{chunk-UQNS32WZ.js → chunk-SCMHQUMK.js} +1 -1
- package/{chunk-HTVYCXBP.js → chunk-SMENBO3M.js} +354 -120
- package/{chunk-OMRJYNCI.js → chunk-SSFDFOVT.js} +26 -31
- package/chunk-SW4S4XYB.js +1794 -0
- package/{chunk-TB3MIBRC.js → chunk-T6X3D7NB.js} +572 -430
- package/chunk-TY3TIUJK.js +89 -0
- package/{chunk-X2QRZXZH.js → chunk-TYJ5XFEA.js} +4 -4
- package/{chunk-ALFH24P3.js → chunk-TYYRSFBG.js} +197 -155
- package/{chunk-7KVZ5LDQ.js → chunk-UBUH2TCC.js} +18 -4
- package/chunk-UEILX4EV.js +15 -0
- package/chunk-UHTDNB5Y.js +140 -0
- package/{chunk-YYLHWIW6.js → chunk-UKZX3NHN.js} +1 -1
- package/{chunk-OHOVNO7I.js → chunk-UOKFKFPO.js} +6 -3
- package/{chunk-XISEYOGH.js → chunk-USHQX6VT.js} +5 -5
- package/chunk-UUPR3TD7.js +53 -0
- package/{chunk-HDLLCBRF.js → chunk-VEA7H5FG.js} +2 -2
- package/chunk-VHGD6FHV.js +116 -0
- package/chunk-VIWDGTDA.js +8 -0
- package/{chunk-GOH6RW6F.js → chunk-VJXHL6MH.js} +34 -11
- package/{chunk-4XEYAFLY.js → chunk-VL5KOY2C.js} +623 -94
- package/{chunk-EADNWBAZ.js → chunk-VP3BINY7.js} +13 -0
- package/{chunk-EOARMOVD.js → chunk-W4S6OTSC.js} +6 -3
- package/chunk-WD4XYDYC.js +567 -0
- package/chunk-WJZOQR2J.js +151 -0
- package/{chunk-AUDNYVRC.js → chunk-XETG4RIX.js} +5 -5
- package/{chunk-MX574M24.js → chunk-XI7DGLUK.js} +4 -4
- package/{chunk-3L2WKC3W.js → chunk-XPWGOTBQ.js} +8 -1
- package/chunk-XRUSXPCQ.js +514 -0
- package/{chunk-I4OPU5TK.js → chunk-XS47QOFV.js} +273 -11
- package/{chunk-S5XGT6GB.js → chunk-XZNCX52W.js} +30 -9
- package/{chunk-ID7LNBWR.js → chunk-Y2DXOPSO.js} +1920 -644
- package/{chunk-5OA5HMTL.js → chunk-YLMMECCH.js} +1 -1
- package/{chunk-CFT5HBGW.js → chunk-YVLQXTUB.js} +448 -12
- package/chunk-YVPQATSC.js +709 -0
- package/{chunk-3DAVPNFT.js → chunk-Z7OJUX6S.js} +122 -107
- package/chunk-ZEZC7IIM.js +126 -0
- package/{chunk-ALGORS6Y.js → chunk-ZF6526IQ.js} +43 -8
- package/chunk-ZIWPQEFU.js +165 -0
- package/chunk-ZKZ5X2HS.js +7012 -0
- package/chunk-ZRAU6T47.js +56 -0
- package/{cliExecutor-AWYR3T33.js → cliExecutor-BWBF2MTI.js} +4 -3
- package/{clipboardy-BX4NMYHE.js → clipboardy-GCO3GT3I.js} +3 -8
- package/{commandRegistry-2KBOXZQC.js → commandRegistry-XN7C5GHO.js} +183 -107
- package/contentThunks-5L7YQI3S.js +84 -0
- package/{cooldownCommands-ZLEPIB4A.js → cooldownCommands-JFKTYS2D.js} +2 -2
- package/{createAgentAutomationAction-5UGTB26P.js → createAgentAutomationAction-QOPOLCRK.js} +53 -44
- package/createDialogAction-MZ66VY5Q.js +76 -0
- package/{createPageAction-CDLDKPRM.js → createPageAction-VQDJIXMY.js} +65 -54
- package/cursorProvider-YGGNMVWX.js +6123 -0
- package/{db-VQSAOWAO.js → db-2QOTXYGH.js} +11 -5
- package/{dbSlice-DQ32LYTJ.js → dbSlice-J37OGIXH.js} +19 -13
- package/{deleteFile-NX6QHCWZ.js → deleteFile-6JWDDRVP.js} +10 -6
- package/dialogCommands-YZLSJB6X.js +113 -0
- package/{dialogSlice-N3YB65G5.js → dialogSlice-6RODVYCK.js} +53 -39
- package/{docCreateCommands-ZSLGVBZT.js → docCreateCommands-JB2RRMRJ.js} +54 -57
- package/{docDeleteCommands-5N4GVZBG.js → docDeleteCommands-AQENULNM.js} +56 -58
- package/{docReadCommands-YJSAA7AV.js → docReadCommands-DYD25YLQ.js} +53 -56
- package/{docStore-E3CEOV5Q.js → docStore-ZZA3OPM5.js} +25 -16
- package/{docUpdateCommands-WEMLSW6W.js → docUpdateCommands-3GVS23QL.js} +54 -57
- package/{fetchMessages-67MEFPZR.js → fetchMessages-IIJWQ3HR.js} +5 -4
- package/{getPricing-NMMFT3YI.js → getPricing-FKK3F5EJ.js} +11 -9
- package/{handleSendMessageAction-DQAD5ERJ.js → handleSendMessageAction-DVG5U26T.js} +422 -118
- package/index.js +11 -7
- package/{lib-FRRS27KN.js → lib-4YTWAGY7.js} +581 -248
- package/{localDialogRead-EBRS242U.js → localDialogRead-FSOMOPDZ.js} +2 -2
- package/localRuntimeAdapter-HXRHFKRC.js +244 -0
- package/localRuntimeAuthority-JDAD7CB6.js +16 -0
- package/{localRuntimeDb-3LRMNLCM.js → localRuntimeDb-CVC62PM5.js} +1 -1
- package/{machineCommands-HAP75VSG.js → machineCommands-5KBF4RCC.js} +503 -161
- package/{machineInfo-66ZFUMLE.js → machineInfo-UKPTZO5Y.js} +2 -2
- package/machineWsRunDispatch-4OQDEDOR.js +169 -0
- package/{memberThunks-5ZXPR63F.js → memberThunks-66DH6ABQ.js} +25 -18
- package/{models-ZPU5EDF4.js → models-LAS4B2B5.js} +2 -2
- package/package.json +1 -1
- package/{providerPresetApply-DD6NGWW6.js → providerPresetApply-MY66I6NT.js} +10 -10
- package/{providerRegistry-XDRLMYGJ.js → providerRegistry-QOE2FT57.js} +13 -9
- package/{read-EPTJRAEF.js → read-DC4NUGN6.js} +12 -8
- package/{readDocTool-W4NDXNEX.js → readDocTool-NCJ5NT25.js} +1 -1
- package/{readlineWorkspace-7BC66QSX.js → readlineWorkspace-RIE62QVZ.js} +5022 -921
- package/{removeDialogAgentAction-OSYNZRX7.js → removeDialogAgentAction-E2H3OZU6.js} +29 -28
- package/{runAgentClientLoop-6E6UC3CE.js → runAgentClientLoop-KLUUXBZS.js} +154 -97
- package/{runtimeDoctorCommands-ID23PNNZ.js → runtimeDoctorCommands-GIOGC5SC.js} +17 -17
- package/secretCommands-ZXZRLR3R.js +700 -0
- package/setDialogExtraReferencesAction-SITRPMYU.js +37 -0
- package/{setPrimaryDialogAgentAction-WZ7KI3YA.js → setPrimaryDialogAgentAction-U7N45TGC.js} +30 -29
- package/{chunk-SONWNI3L.js → settingThunks-Y7SVJOMZ.js} +223 -928
- package/{skillDiscovery-ZBU76COE.js → skillDiscovery-QC35EQY4.js} +2 -2
- package/{slateUtils-RIZES3PV.js → slateUtils-NGV2NMKM.js} +1 -1
- package/{spaceCommands-UJOVU4XI.js → spaceCommands-ZR5BR3GX.js} +59 -59
- package/{streamAgentChatTurn-3UXPYFNX.js → streamAgentChatTurn-MN2SSPGA.js} +309 -165
- package/{switchDialogAgentAction-GMR7WN3P.js → switchDialogAgentAction-OMGBD3N2.js} +26 -22
- package/{tableCommands-G7RV3RU3.js → tableCommands-U3QDY4L6.js} +19 -17
- package/{toolApiClient-CVGWM4PN.js → toolApiClient-7WSJJJBV.js} +6 -5
- package/tools-W2MOLERY.js +124 -0
- package/tuiSummaryLlmCaller-BM3VSTBU.js +130 -0
- package/{updateCommands-4EHDLF5J.js → updateCommands-NQXAGFM7.js} +3 -3
- package/{updateDialogTitleAction-UPFV7TDT.js → updateDialogTitleAction-Z4JX6REN.js} +102 -57
- package/workloadLifecycle-36DXRZKU.js +320 -0
- package/action-GI44T4DR.js +0 -31
- package/agentListCommands-IW3GQVUP.js +0 -427
- package/agentRecordCommands-VCA76W6B.js +0 -134
- package/agentRunCommand-YNLDKVR7.js +0 -161
- package/browser-image-compression-MFDTD7K6.js +0 -1763
- package/chatQueueReduxAdapter-TJRMXMYA.js +0 -186
- package/chromeOpsCommands-IXRLN57H.js +0 -289
- package/chunk-36KZDDO5.js +0 -2415
- package/chunk-ACQD6YI2.js +0 -25363
- package/chunk-CQ3WA2NE.js +0 -299
- package/chunk-CYSYR67N.js +0 -93
- package/chunk-JBTJAPUF.js +0 -35
- package/chunk-K2CSUCHJ.js +0 -620
- package/chunk-LTRXGFMS.js +0 -83
- package/chunk-M76ECQRD.js +0 -13658
- package/chunk-MEYIRKDN.js +0 -8967
- package/chunk-OCZKATRC.js +0 -129
- package/chunk-OTGFTBLI.js +0 -13
- package/chunk-PUOC4YRO.js +0 -394
- package/chunk-PZZTFEKK.js +0 -34
- package/chunk-URMS4XY2.js +0 -10
- package/chunk-UV6VISQJ.js +0 -20
- package/chunk-VJVNU77E.js +0 -83
- package/chunk-XYJSY4KG.js +0 -13807
- package/chunk-Y5GCAMGP.js +0 -9
- package/chunk-YPREESF4.js +0 -225
- package/contentThunks-BDIQRZR6.js +0 -73
- package/createDialogAction-B7VGVEVU.js +0 -66
- package/dialogCommands-G7YBVAMC.js +0 -102
- package/levelLazyShim-GZBKODGI.js +0 -7
- package/machineWsRunDispatch-L32G7C4P.js +0 -149
- package/serverStoreFactory-YMXDF4NI.js +0 -20
- package/setDialogExtraReferencesAction-M32UYNCG.js +0 -30
- package/settingSlice-Q6EKL7EQ.js +0 -204
- package/syncMapping-N6RGXGBW.js +0 -437
- package/tools-MKYDMWA4.js +0 -111
- package/tuiSummaryLlmCaller-3YFNHCTW.js +0 -128
- package/{chunk-SV5IJK6K.js → chunk-NBTY7YJF.js} +3 -3
- package/{chunk-2SYTUTLI.js → chunk-YBNHPX4S.js} +3 -3
- package/{offlineMarxistsAgentCommand-HGXZV4XJ.js → offlineMarxistsAgentCommand-2QTHJCHV.js} +4 -4
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
} from "./chunk-ZWQUWF6W.js";
|
|
2
|
+
asNonEmptyStringArray,
|
|
3
|
+
asTrimmedNonEmptyStringArray
|
|
4
|
+
} from "./chunk-I42VC5KR.js";
|
|
6
5
|
import {
|
|
7
|
-
|
|
8
|
-
} from "./chunk-
|
|
6
|
+
asOptionalPositiveFiniteNumber
|
|
7
|
+
} from "./chunk-U6VC4MU4.js";
|
|
9
8
|
import {
|
|
10
9
|
isRecord
|
|
11
10
|
} from "./chunk-KUG52IAP.js";
|
|
@@ -13,136 +12,8 @@ import {
|
|
|
13
12
|
asTrimmedString
|
|
14
13
|
} from "./chunk-3EUW3WEO.js";
|
|
15
14
|
import {
|
|
16
|
-
|
|
17
|
-
} from "./chunk-
|
|
18
|
-
|
|
19
|
-
// packages/agent-runtime/fileCredentialBroker.ts
|
|
20
|
-
import {
|
|
21
|
-
chmodSync,
|
|
22
|
-
existsSync,
|
|
23
|
-
mkdirSync,
|
|
24
|
-
readFileSync,
|
|
25
|
-
unlinkSync,
|
|
26
|
-
writeFileSync
|
|
27
|
-
} from "node:fs";
|
|
28
|
-
import { homedir } from "node:os";
|
|
29
|
-
import { join } from "node:path";
|
|
30
|
-
|
|
31
|
-
// packages/agent-runtime/credentialBroker.ts
|
|
32
|
-
function assertCredentialRef(ref) {
|
|
33
|
-
const trimmed = asTrimmedString(ref);
|
|
34
|
-
if (!trimmed) {
|
|
35
|
-
throw new Error("invalid_ref");
|
|
36
|
-
}
|
|
37
|
-
if (trimmed.includes("..") || trimmed.includes("/") || trimmed.includes("\\")) {
|
|
38
|
-
throw new Error("invalid_ref");
|
|
39
|
-
}
|
|
40
|
-
return trimmed;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// packages/agent-runtime/fileCredentialBroker.ts
|
|
44
|
-
function getApiKeyCredentialsDir(homeDir) {
|
|
45
|
-
return join(getCredentialsDir(homeDir), "keys");
|
|
46
|
-
}
|
|
47
|
-
function credentialRefToFileName(ref) {
|
|
48
|
-
const safe = assertCredentialRef(ref).replace(/[^a-zA-Z0-9._-]+/g, "_");
|
|
49
|
-
if (!safe || safe === "." || safe === "..") {
|
|
50
|
-
throw new Error(`Credential ref is not filesystem-safe: ${ref}`);
|
|
51
|
-
}
|
|
52
|
-
return `${safe}.json`;
|
|
53
|
-
}
|
|
54
|
-
function getApiKeyCredentialPath(ref, homeDir) {
|
|
55
|
-
return join(getApiKeyCredentialsDir(homeDir), credentialRefToFileName(ref));
|
|
56
|
-
}
|
|
57
|
-
function ensurePrivateDir(dir) {
|
|
58
|
-
mkdirSync(dir, { recursive: true, mode: 448 });
|
|
59
|
-
try {
|
|
60
|
-
chmodSync(dir, 448);
|
|
61
|
-
} catch {
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
function writePrivateFile(path, body) {
|
|
65
|
-
writeFileSync(path, body, { encoding: "utf8", mode: 384 });
|
|
66
|
-
try {
|
|
67
|
-
chmodSync(path, 384);
|
|
68
|
-
} catch {
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
function migrateApiKeyCredentialIfNeeded(ref, homeDir, migration) {
|
|
72
|
-
if (homeDir !== void 0 || !migration?.enableLegacyMigration) return;
|
|
73
|
-
const legacyHomeDir = migration.legacyHomeDir ?? homedir();
|
|
74
|
-
const relativePath = join("keys", credentialRefToFileName(ref));
|
|
75
|
-
migrateLegacyCredentialFile({
|
|
76
|
-
canonicalPath: getApiKeyCredentialPath(ref),
|
|
77
|
-
legacyPath: getLegacyCredentialPath(relativePath, legacyHomeDir),
|
|
78
|
-
mode: migration.mode ?? (migration.legacyHomeDir ? "test" : "production"),
|
|
79
|
-
isValid: (raw) => {
|
|
80
|
-
try {
|
|
81
|
-
const parsed = JSON.parse(raw);
|
|
82
|
-
return typeof parsed?.secret === "string" && Boolean(parsed.secret);
|
|
83
|
-
} catch {
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
function readApiKeyCredential(ref, homeDir, migration) {
|
|
90
|
-
migrateApiKeyCredentialIfNeeded(ref, homeDir, migration);
|
|
91
|
-
const path = getApiKeyCredentialPath(ref, homeDir);
|
|
92
|
-
if (!existsSync(path)) return null;
|
|
93
|
-
try {
|
|
94
|
-
const raw = readFileSync(path, "utf8");
|
|
95
|
-
const parsed = JSON.parse(raw);
|
|
96
|
-
if (typeof parsed?.secret !== "string" || !parsed.secret) return null;
|
|
97
|
-
return parsed.secret;
|
|
98
|
-
} catch {
|
|
99
|
-
return null;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
function writeApiKeyCredential(ref, secret, homeDir, now = Date.now()) {
|
|
103
|
-
const trimmedSecret = secret.trim();
|
|
104
|
-
if (!trimmedSecret) {
|
|
105
|
-
throw new Error("Cannot store an empty credential secret.");
|
|
106
|
-
}
|
|
107
|
-
assertCredentialRef(ref);
|
|
108
|
-
const dir = getApiKeyCredentialsDir(homeDir);
|
|
109
|
-
ensurePrivateDir(dir);
|
|
110
|
-
const path = getApiKeyCredentialPath(ref, homeDir);
|
|
111
|
-
const payload = {
|
|
112
|
-
secret: trimmedSecret,
|
|
113
|
-
updatedAt: now
|
|
114
|
-
};
|
|
115
|
-
writePrivateFile(path, `${JSON.stringify(payload, null, 2)}
|
|
116
|
-
`);
|
|
117
|
-
}
|
|
118
|
-
function removeApiKeyCredential(ref, homeDir) {
|
|
119
|
-
assertCredentialRef(ref);
|
|
120
|
-
const path = getApiKeyCredentialPath(ref, homeDir);
|
|
121
|
-
if (!existsSync(path)) return;
|
|
122
|
-
unlinkSync(path);
|
|
123
|
-
}
|
|
124
|
-
function hasApiKeyCredential(ref, homeDir, migration) {
|
|
125
|
-
return readApiKeyCredential(ref, homeDir, migration) !== null;
|
|
126
|
-
}
|
|
127
|
-
function createFileCredentialBroker(options = {}) {
|
|
128
|
-
const homeDir = options.homeDir;
|
|
129
|
-
const migration = options.migration;
|
|
130
|
-
const now = options.now ?? Date.now;
|
|
131
|
-
return {
|
|
132
|
-
get(ref) {
|
|
133
|
-
return readApiKeyCredential(ref, homeDir, migration);
|
|
134
|
-
},
|
|
135
|
-
put(ref, secret) {
|
|
136
|
-
writeApiKeyCredential(ref, secret, homeDir, now());
|
|
137
|
-
},
|
|
138
|
-
delete(ref) {
|
|
139
|
-
removeApiKeyCredential(ref, homeDir);
|
|
140
|
-
},
|
|
141
|
-
has(ref) {
|
|
142
|
-
return hasApiKeyCredential(ref, homeDir, migration);
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
}
|
|
15
|
+
asOptionalTrimmedString
|
|
16
|
+
} from "./chunk-G3SUCT4W.js";
|
|
146
17
|
|
|
147
18
|
// packages/agent-runtime/migrateAgentSecrets.ts
|
|
148
19
|
function buildAgentApiKeyCredentialRef(agentKey) {
|
|
@@ -255,13 +126,51 @@ function applyAgentSecretMigrationUpdates(record, updates) {
|
|
|
255
126
|
function unique(values) {
|
|
256
127
|
return [...new Set(values)];
|
|
257
128
|
}
|
|
129
|
+
function mergeRecords(base, override) {
|
|
130
|
+
if (!base && !override) return void 0;
|
|
131
|
+
return {
|
|
132
|
+
...base ?? {},
|
|
133
|
+
...override ?? {}
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
function normalizeWorkspacePolicy(value) {
|
|
137
|
+
if (!isRecord(value)) return void 0;
|
|
138
|
+
const mode = value.mode === "none" || value.mode === "current" || value.mode === "lease" ? value.mode : void 0;
|
|
139
|
+
const readableRoots = unique(asNonEmptyStringArray(value.readableRoots));
|
|
140
|
+
const writableRoots = unique(asNonEmptyStringArray(value.writableRoots));
|
|
141
|
+
const cwd = asOptionalTrimmedString(value.cwd);
|
|
142
|
+
const normalized = {
|
|
143
|
+
...mode ? { mode } : {},
|
|
144
|
+
...readableRoots.length ? { readableRoots } : {},
|
|
145
|
+
...writableRoots.length ? { writableRoots } : {},
|
|
146
|
+
...cwd ? { cwd } : {}
|
|
147
|
+
};
|
|
148
|
+
return Object.keys(normalized).length > 0 ? normalized : void 0;
|
|
149
|
+
}
|
|
150
|
+
function mergeWorkspacePolicy(base, override) {
|
|
151
|
+
const readableRoots = unique([
|
|
152
|
+
...base?.readableRoots ?? [],
|
|
153
|
+
...override?.readableRoots ?? []
|
|
154
|
+
]);
|
|
155
|
+
const writableRoots = unique([
|
|
156
|
+
...base?.writableRoots ?? [],
|
|
157
|
+
...override?.writableRoots ?? []
|
|
158
|
+
]);
|
|
159
|
+
return {
|
|
160
|
+
...base ?? {},
|
|
161
|
+
...override ?? {},
|
|
162
|
+
...readableRoots.length ? { readableRoots } : {},
|
|
163
|
+
...writableRoots.length ? { writableRoots } : {}
|
|
164
|
+
};
|
|
165
|
+
}
|
|
258
166
|
function normalizeAgentRuntimeToolPolicy(value) {
|
|
259
167
|
if (!isRecord(value)) return void 0;
|
|
168
|
+
const workspace = normalizeWorkspacePolicy(value.workspace);
|
|
260
169
|
return {
|
|
261
170
|
version: 1,
|
|
262
171
|
...asNonEmptyStringArray(value.agentTools).length ? { agentTools: unique(asNonEmptyStringArray(value.agentTools)) } : {},
|
|
263
172
|
...asNonEmptyStringArray(value.runtimeTools).length ? { runtimeTools: unique(asNonEmptyStringArray(value.runtimeTools)) } : {},
|
|
264
|
-
...
|
|
173
|
+
...workspace ? { workspace } : {},
|
|
265
174
|
...isRecord(value.shell) ? { shell: { ...value.shell } } : {},
|
|
266
175
|
...isRecord(value.isolation) ? { isolation: { ...value.isolation } } : {},
|
|
267
176
|
...isRecord(value.git) ? { git: { ...value.git } } : {},
|
|
@@ -269,6 +178,21 @@ function normalizeAgentRuntimeToolPolicy(value) {
|
|
|
269
178
|
...isRecord(value.audit) ? { audit: { ...value.audit } } : {}
|
|
270
179
|
};
|
|
271
180
|
}
|
|
181
|
+
function normalizeRuntimeToolPolicyOverride(value) {
|
|
182
|
+
if (!isRecord(value)) return void 0;
|
|
183
|
+
const runtimeTools = unique(
|
|
184
|
+
asTrimmedNonEmptyStringArray(value.runtimeTools).filter(
|
|
185
|
+
(tool) => tool === "execShell"
|
|
186
|
+
)
|
|
187
|
+
);
|
|
188
|
+
const workspace = isRecord(value.workspace) && value.workspace.mode === "lease" ? { mode: "lease" } : void 0;
|
|
189
|
+
if (!runtimeTools.length && !workspace) return void 0;
|
|
190
|
+
return {
|
|
191
|
+
version: 1,
|
|
192
|
+
...runtimeTools.length ? { runtimeTools } : {},
|
|
193
|
+
...workspace ? { workspace } : {}
|
|
194
|
+
};
|
|
195
|
+
}
|
|
272
196
|
function runtimeBindingRecord(runtimeBinding) {
|
|
273
197
|
return isRecord(runtimeBinding) ? runtimeBinding : void 0;
|
|
274
198
|
}
|
|
@@ -278,6 +202,26 @@ function runtimeToolNamesFromPolicy(policy) {
|
|
|
278
202
|
function readPositiveNumber(value) {
|
|
279
203
|
return asOptionalPositiveFiniteNumber(Number(value));
|
|
280
204
|
}
|
|
205
|
+
function mergeAgentRuntimeToolPolicies(base, override) {
|
|
206
|
+
if (!base && !override) return void 0;
|
|
207
|
+
return {
|
|
208
|
+
version: 1,
|
|
209
|
+
agentTools: unique([
|
|
210
|
+
...base?.agentTools ?? [],
|
|
211
|
+
...override?.agentTools ?? []
|
|
212
|
+
]),
|
|
213
|
+
runtimeTools: unique([
|
|
214
|
+
...base?.runtimeTools ?? [],
|
|
215
|
+
...override?.runtimeTools ?? []
|
|
216
|
+
]),
|
|
217
|
+
workspace: mergeWorkspacePolicy(base?.workspace, override?.workspace),
|
|
218
|
+
shell: mergeRecords(base?.shell, override?.shell),
|
|
219
|
+
isolation: mergeRecords(base?.isolation, override?.isolation),
|
|
220
|
+
git: mergeRecords(base?.git, override?.git),
|
|
221
|
+
budget: mergeRecords(base?.budget, override?.budget),
|
|
222
|
+
audit: mergeRecords(base?.audit, override?.audit)
|
|
223
|
+
};
|
|
224
|
+
}
|
|
281
225
|
function resolveRequestedRuntimeToolNames(args) {
|
|
282
226
|
const runtimeBinding = runtimeBindingRecord(args.agentConfig.runtimeBinding);
|
|
283
227
|
const bindingPolicy = normalizeAgentRuntimeToolPolicy(
|
|
@@ -310,14 +254,49 @@ function resolveLocalWorkspaceExecutorOptionsFromPolicy(policy) {
|
|
|
310
254
|
...maxOutputBytes ? { commandOutputLimit: Math.floor(maxOutputBytes) } : {}
|
|
311
255
|
};
|
|
312
256
|
}
|
|
257
|
+
function policyRequestsHostedWorkspace(policy) {
|
|
258
|
+
if (!policy) return false;
|
|
259
|
+
const workspaceMode = policy.workspace?.mode;
|
|
260
|
+
return policy.shell?.enabled === true || policy.runtimeTools?.some((tool) => tool === "execShell") || workspaceMode === "lease";
|
|
261
|
+
}
|
|
262
|
+
function applyWebRuntimeSafetyBaseline(policy) {
|
|
263
|
+
if (!policyRequestsHostedWorkspace(policy)) return policy;
|
|
264
|
+
return mergeAgentRuntimeToolPolicies(
|
|
265
|
+
policy,
|
|
266
|
+
{
|
|
267
|
+
version: 1,
|
|
268
|
+
shell: {
|
|
269
|
+
commandPolicy: "approval",
|
|
270
|
+
networkPolicy: "default-deny"
|
|
271
|
+
},
|
|
272
|
+
isolation: {
|
|
273
|
+
mode: "os-sandbox"
|
|
274
|
+
},
|
|
275
|
+
audit: {
|
|
276
|
+
logToolCalls: true,
|
|
277
|
+
logShellCommands: true,
|
|
278
|
+
writeToDialog: true
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
);
|
|
282
|
+
}
|
|
283
|
+
function resolveEffectiveRuntimeToolPolicy(args) {
|
|
284
|
+
const agentPolicy = resolveCurrentRunRuntimeToolPolicy(args.agentConfig);
|
|
285
|
+
const requestedPolicy = normalizeRuntimeToolPolicyOverride(
|
|
286
|
+
args.runtimeToolPolicyOverride
|
|
287
|
+
);
|
|
288
|
+
const effectivePolicy = mergeAgentRuntimeToolPolicies(agentPolicy, requestedPolicy);
|
|
289
|
+
return args.host === "web" ? applyWebRuntimeSafetyBaseline(effectivePolicy) : effectivePolicy;
|
|
290
|
+
}
|
|
313
291
|
|
|
314
292
|
export {
|
|
315
|
-
createFileCredentialBroker,
|
|
316
293
|
migrateAgentSecrets,
|
|
317
294
|
applyAgentSecretMigrationUpdates,
|
|
318
295
|
normalizeAgentRuntimeToolPolicy,
|
|
296
|
+
normalizeRuntimeToolPolicyOverride,
|
|
319
297
|
resolveRequestedRuntimeToolNames,
|
|
320
298
|
resolveCurrentRunRuntimeToolPolicy,
|
|
321
299
|
resolveLocalRuntimeEnvFromPolicy,
|
|
322
|
-
resolveLocalWorkspaceExecutorOptionsFromPolicy
|
|
300
|
+
resolveLocalWorkspaceExecutorOptionsFromPolicy,
|
|
301
|
+
resolveEffectiveRuntimeToolPolicy
|
|
323
302
|
};
|
|
@@ -1,53 +1,56 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createCliLocalRuntimeAdapter,
|
|
3
3
|
summarizeEndpoint
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-FJMRBOPO.js";
|
|
5
|
+
import {
|
|
6
|
+
t
|
|
7
|
+
} from "./chunk-SW4S4XYB.js";
|
|
5
8
|
import {
|
|
6
9
|
clipMultilineText
|
|
7
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-ES633ZS5.js";
|
|
8
11
|
import {
|
|
9
12
|
runLocalAgentTurn
|
|
10
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-AUIJZACN.js";
|
|
11
14
|
import {
|
|
12
15
|
applyToolSurfaceConstraints
|
|
13
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-QLQ573SU.js";
|
|
14
17
|
import {
|
|
15
18
|
resolveLocalRuntimeEnvFromPolicy
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import {
|
|
18
|
-
toErrorMessage
|
|
19
|
-
} from "./chunk-HNMXYYJR.js";
|
|
20
|
-
import {
|
|
21
|
-
parseUserIdFromAuthToken
|
|
22
|
-
} from "./chunk-A7GB5UGH.js";
|
|
23
|
-
import {
|
|
24
|
-
DEFAULT_NOLO_SERVER_URL
|
|
25
|
-
} from "./chunk-OLZBQWZU.js";
|
|
26
|
-
import {
|
|
27
|
-
readPipeText,
|
|
28
|
-
spawnProcess
|
|
29
|
-
} from "./chunk-Y6ROFCZO.js";
|
|
19
|
+
} from "./chunk-LIQJTQRN.js";
|
|
30
20
|
import {
|
|
31
21
|
asRecordOrEmpty
|
|
32
22
|
} from "./chunk-KX6YBIHG.js";
|
|
23
|
+
import {
|
|
24
|
+
ownedAgentKey
|
|
25
|
+
} from "./chunk-M2EJHDJP.js";
|
|
33
26
|
import {
|
|
34
27
|
asTrimmedNonEmptyStringArray
|
|
35
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-I42VC5KR.js";
|
|
29
|
+
import {
|
|
30
|
+
asOptionalPositiveFiniteNumber
|
|
31
|
+
} from "./chunk-U6VC4MU4.js";
|
|
36
32
|
import {
|
|
37
33
|
isRecord
|
|
38
34
|
} from "./chunk-KUG52IAP.js";
|
|
39
|
-
import {
|
|
40
|
-
ownedAgentKey
|
|
41
|
-
} from "./chunk-M2EJHDJP.js";
|
|
42
35
|
import {
|
|
43
36
|
asTrimmedString
|
|
44
37
|
} from "./chunk-3EUW3WEO.js";
|
|
45
38
|
import {
|
|
46
|
-
|
|
47
|
-
} from "./chunk-
|
|
39
|
+
toErrorMessage
|
|
40
|
+
} from "./chunk-HNMXYYJR.js";
|
|
41
|
+
import {
|
|
42
|
+
parseUserIdFromAuthToken
|
|
43
|
+
} from "./chunk-A7GB5UGH.js";
|
|
44
|
+
import {
|
|
45
|
+
DEFAULT_NOLO_SERVER_URL
|
|
46
|
+
} from "./chunk-OLZBQWZU.js";
|
|
48
47
|
import {
|
|
49
48
|
asOptionalTrimmedString
|
|
50
49
|
} from "./chunk-G3SUCT4W.js";
|
|
50
|
+
import {
|
|
51
|
+
readPipeText,
|
|
52
|
+
spawnProcess
|
|
53
|
+
} from "./chunk-Y6ROFCZO.js";
|
|
51
54
|
|
|
52
55
|
// packages/ai/agent/machineRunPermissions.ts
|
|
53
56
|
var DEFAULT_POLICY = {
|
|
@@ -655,7 +658,7 @@ ${Date.now()}
|
|
|
655
658
|
} catch (error) {
|
|
656
659
|
const code = error && typeof error === "object" && "code" in error ? error.code : void 0;
|
|
657
660
|
if (code === "EEXIST") {
|
|
658
|
-
throw new Error("
|
|
661
|
+
throw new Error(t("chatgptWebImage.jobInProgress"));
|
|
659
662
|
}
|
|
660
663
|
throw error;
|
|
661
664
|
}
|
|
@@ -706,10 +709,10 @@ function assertOutputImage(outPath) {
|
|
|
706
709
|
try {
|
|
707
710
|
st = statSync(outPath);
|
|
708
711
|
} catch {
|
|
709
|
-
throw new Error(
|
|
712
|
+
throw new Error(t("chatgptWebImage.noOutputFile", outPath));
|
|
710
713
|
}
|
|
711
714
|
if (!st.isFile() || st.size <= 0) {
|
|
712
|
-
throw new Error(
|
|
715
|
+
throw new Error(t("chatgptWebImage.outputFileInvalid", outPath));
|
|
713
716
|
}
|
|
714
717
|
}
|
|
715
718
|
async function uploadPngToNoloFs(args) {
|
|
@@ -752,11 +755,11 @@ async function uploadPngToNoloFs(args) {
|
|
|
752
755
|
if (!response.ok) {
|
|
753
756
|
const errField = body.error;
|
|
754
757
|
const message = typeof errField === "string" && errField || isRecord(errField) && typeof errField.message === "string" && errField.message || typeof body.details === "string" && body.details || `HTTP ${response.status}`;
|
|
755
|
-
throw new Error(
|
|
758
|
+
throw new Error(t("chatgptWebImage.uploadFailed", message));
|
|
756
759
|
}
|
|
757
760
|
const fileId = asTrimmedString(body.fileId);
|
|
758
761
|
if (!fileId) {
|
|
759
|
-
throw new Error("
|
|
762
|
+
throw new Error(t("chatgptWebImage.missingUploadFileId"));
|
|
760
763
|
}
|
|
761
764
|
const metadata = asRecordOrEmpty(body.metadata);
|
|
762
765
|
return { fileId, metadata };
|
|
@@ -764,7 +767,7 @@ async function uploadPngToNoloFs(args) {
|
|
|
764
767
|
async function runChatgptWebImageLocalJob(input, deps = {}) {
|
|
765
768
|
const prompt = asTrimmedString(input.prompt);
|
|
766
769
|
if (!prompt) {
|
|
767
|
-
throw new Error("
|
|
770
|
+
throw new Error(t("chatgptWebImage.missingPrompt"));
|
|
768
771
|
}
|
|
769
772
|
const home = (deps.homedir ?? homedir)();
|
|
770
773
|
const lockPath = deps.lockPath ?? defaultLockPath(home);
|
|
@@ -781,7 +784,9 @@ async function runChatgptWebImageLocalJob(input, deps = {}) {
|
|
|
781
784
|
});
|
|
782
785
|
assertOutputImage(outPath);
|
|
783
786
|
const userAuthToken = input.userAuthToken?.trim() || "";
|
|
784
|
-
|
|
787
|
+
if (!userAuthToken) throw new Error("Cannot upload generated image without a user authentication token.");
|
|
788
|
+
const userId = parseUserIdFromAuthToken(userAuthToken);
|
|
789
|
+
if (!userId) throw new Error("Cannot determine authenticated user from the user authentication token.");
|
|
785
790
|
const serverBase = (input.serverBase?.trim() || DEFAULT_NOLO_SERVER_URL).replace(/\/+$/, "");
|
|
786
791
|
const uploaded = await uploadPngToNoloFs({
|
|
787
792
|
outPath,
|
|
@@ -37,7 +37,7 @@ function resolveCliAuthorityBrokerPort(options = {}) {
|
|
|
37
37
|
...options,
|
|
38
38
|
env: options.env ?? {}
|
|
39
39
|
});
|
|
40
|
-
return
|
|
40
|
+
return 24e3 + hashString(noloHome) % 2e3;
|
|
41
41
|
}
|
|
42
42
|
function resolveCliAuthorityStoreDriver(options = {}) {
|
|
43
43
|
return readCliAuthorityDriver(options.env ?? {}).driver;
|
|
@@ -48,7 +48,8 @@ function canonicalizeChromeConnectorToolNames(toolNames) {
|
|
|
48
48
|
}
|
|
49
49
|
var CONNECTOR_TARGET_PROPERTY = {
|
|
50
50
|
type: "string",
|
|
51
|
-
|
|
51
|
+
enum: ["chrome", "firefox"],
|
|
52
|
+
description: `Which browser's connector serves this call: "chrome" or "firefox". Omit for the default endpoint.`
|
|
52
53
|
};
|
|
53
54
|
var CHROME_CONNECTOR_READ_TOOL_NAMES = [
|
|
54
55
|
"browser_list_tabs",
|
|
@@ -112,7 +113,7 @@ var chromeCloseTabFunctionSchema = baseSchema(
|
|
|
112
113
|
);
|
|
113
114
|
var chromeReadPageFunctionSchema = baseSchema(
|
|
114
115
|
"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
|
+
"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. When the element list exceeds one page, continue by passing the returned nextOffset as offset. Does not read cookies or profile databases.",
|
|
116
117
|
{
|
|
117
118
|
tabId,
|
|
118
119
|
region: {
|
|
@@ -127,6 +128,15 @@ var chromeReadPageFunctionSchema = baseSchema(
|
|
|
127
128
|
type: "string",
|
|
128
129
|
enum: ["compact", "full"],
|
|
129
130
|
description: "compact (default) returns budgeted text; full raises the budget and adds capped HTML."
|
|
131
|
+
},
|
|
132
|
+
offset: {
|
|
133
|
+
type: "integer",
|
|
134
|
+
minimum: 0,
|
|
135
|
+
description: "Optional element offset for paging. When an element list exceeds one page, continue by passing the returned nextOffset as offset."
|
|
136
|
+
},
|
|
137
|
+
viewportOnly: {
|
|
138
|
+
type: "boolean",
|
|
139
|
+
description: "Optional. When true, only elements intersecting the current viewport are listed."
|
|
130
140
|
}
|
|
131
141
|
},
|
|
132
142
|
["tabId"]
|
|
@@ -173,9 +183,13 @@ var chromePressFunctionSchema = baseSchema(
|
|
|
173
183
|
);
|
|
174
184
|
var chromeScrollFunctionSchema = baseSchema(
|
|
175
185
|
"browser_scroll",
|
|
176
|
-
"Scroll
|
|
186
|
+
"Scroll the browser page or a CSS-selected container by pixel deltas; with selector and no deltas, observe the container's scroll position without moving it. Selector matching must resolve to exactly one valid element; invalid, missing, or ambiguous selectors fail without falling back to page scrolling. Results include targetBefore and targetAfter measurements for scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, and clientWidth.",
|
|
177
187
|
{
|
|
178
188
|
tabId,
|
|
189
|
+
selector: {
|
|
190
|
+
type: "string",
|
|
191
|
+
description: "Optional CSS selector for exactly one scroll container. When provided, only that container is scrolled; invalid, not-found, or ambiguous selectors fail without falling back. May be used without deltas to observe scroll position."
|
|
192
|
+
},
|
|
179
193
|
deltaX: {
|
|
180
194
|
type: "number",
|
|
181
195
|
description: "Horizontal scroll delta in pixels."
|