nolo-cli 0.212.0-alpha.1 → 0.222.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/README.md +3 -2
- package/{_executeModel-KE6MBNUJ.js → _executeModel-4GGQQHOB.js} +111 -82
- package/{accountResolver-4LKIHEKL.js → accountResolver-EK2S4PWF.js} +6 -6
- package/{action-DF5UYSJF.js → action-CK64LS6S.js} +12 -11
- package/{addContentAction-N2YC5IL3.js → addContentAction-GDHDOF4U.js} +18 -17
- package/{addDialogAgentAction-3NKVQCEC.js → addDialogAgentAction-CAKRU3ZT.js} +21 -20
- package/{agentDeleteCommand-NWK7VU4N.js → agentDeleteCommand-BPV2XZL7.js} +128 -119
- package/{agentEmailCommands-UZ4DHEX2.js → agentEmailCommands-EJOS75YL.js} +132 -124
- package/{agentFavoriteCommands-EDK743YA.js → agentFavoriteCommands-2LKGKSUD.js} +7 -8
- package/{agentGrantCommands-RQWK2TEV.js → agentGrantCommands-QQV4N4JW.js} +5 -5
- package/{agentListCommands-HE7L2A6L.js → agentListCommands-HIZODBF3.js} +196 -124
- package/{agentMachineCommands-6TE4MBMP.js → agentMachineCommands-ZMQ2CY7Y.js} +62 -53
- package/{agentProviderCommands-Q5O33MED.js → agentProviderCommands-WKJOAWBP.js} +5 -5
- package/{agentPullCommand-6EM3URVK.js → agentPullCommand-XN6ZPBUW.js} +7 -7
- package/agentRecordCommands-OMXVDLDX.js +176 -0
- package/agentRunCommand-CB34YWMV.js +206 -0
- package/{agentRunControl-OI3LOENH.js → agentRunControl-JNONH3RP.js} +30 -15
- package/{agentRuntimeLocal-HL526DNQ.js → agentRuntimeLocal-QZPFWMLG.js} +52 -45
- package/{agentSlice-TMYP2UEA.js → agentSlice-RD2CDU7T.js} +20 -19
- package/{appDeleteCommands-ZERW4AXY.js → appDeleteCommands-QCCFDIEQ.js} +61 -52
- package/{appDeployCommands-DUWSMYHL.js → appDeployCommands-V2T7TNMQ.js} +61 -52
- package/{appDeployStatusCommands-N2KIE4BF.js → appDeployStatusCommands-6PGH7ZCG.js} +61 -52
- package/{appGetCommands-YVR4NPVY.js → appGetCommands-3L7WWJA6.js} +61 -52
- package/{appListCommands-JS6HOHZS.js → appListCommands-ENJCK4PO.js} +61 -52
- package/{authCommand-FE2C3ZUM.js → authCommand-6V47SYGK.js} +29 -28
- package/{authCommands-HV3EAU3V.js → authCommands-GAJ3NIXO.js} +14 -13
- package/{builtinSkillRegistry-3YOIGEF6.js → builtinSkillRegistry-2ECA42FC.js} +11 -13
- package/{chromeCommands-REEAH4SX.js → chromeCommands-G5UDKVSV.js} +3 -3
- package/{chromeOpsCommands-HEN5AX2J.js → chromeOpsCommands-YKX2QX3A.js} +20 -10
- package/{chunk-DM6UMOEL.js → chunk-27PCUMJI.js} +2 -2
- package/chunk-2CI3ZFWD.js +97 -0
- package/{chunk-HIRC32DV.js → chunk-2GJKRKI6.js} +543 -29
- package/{chunk-SM3NSZJV.js → chunk-2UCBGYO4.js} +20 -1
- package/{chunk-PYRUW7XN.js → chunk-2VUZSVAS.js} +136 -54
- package/chunk-2YGBI2XB.js +30 -0
- package/chunk-2ZKFCIJJ.js +13 -0
- package/{chunk-CJRONOYL.js → chunk-34J5K2YA.js} +19 -75
- package/{chunk-LOEO7LRC.js → chunk-3IK6ILVW.js} +4 -1
- package/{chunk-CTPXME7U.js → chunk-3LMUPOHG.js} +29 -6
- package/chunk-44X52WOJ.js +1621 -0
- package/{chunk-6VLJ6YA7.js → chunk-4DESLZTK.js} +9 -9
- package/{chunk-MYOH447Z.js → chunk-4JVNURX4.js} +1 -1
- package/chunk-5CHGAKRT.js +364 -0
- package/{chunk-YDH3FDFQ.js → chunk-5FUN7EG4.js} +1 -1
- package/{chunk-LKDF3ATR.js → chunk-5RKUPJYL.js} +1 -1
- package/{chunk-ZC3CMUKU.js → chunk-6OVNSQHN.js} +84 -2
- package/{chunk-IF45XG7K.js → chunk-6WU5572L.js} +40 -24
- package/{chunk-OHNELDTO.js → chunk-7EEZJ6BS.js} +11 -152
- package/{chunk-Y6ORVLSS.js → chunk-7ET2U67U.js} +1 -1
- package/{chunk-G7MLNNEX.js → chunk-7JLY4WYF.js} +5 -5
- package/{chunk-P5L7CXOC.js → chunk-7Z6EW7AH.js} +3 -2
- package/{chunk-IIQ6JGRI.js → chunk-AD5EWDFD.js} +2 -2
- package/{chunk-WXYLV624.js → chunk-AIHYNKGV.js} +4 -4
- package/{chunk-HPFCI4SK.js → chunk-AK5O76CC.js} +3 -3
- package/{chunk-Y63ZSOR6.js → chunk-AL3TYDIF.js} +1 -1
- package/{chunk-PJNFNEJE.js → chunk-AMEOV5VZ.js} +59 -13
- package/chunk-AN74ON4G.js +675 -0
- package/{chunk-HRMJUN5J.js → chunk-AQZ6BMRK.js} +1 -1
- package/{chunk-CQ46IRNN.js → chunk-B4GOW4MT.js} +445 -201
- package/{chunk-4KB6WQUL.js → chunk-BGP2EDFG.js} +1 -1
- package/{chunk-NBTY7YJF.js → chunk-BR3GT6MR.js} +1 -0
- package/{chunk-7RFNTILS.js → chunk-BUDVRYES.js} +2 -2
- package/{chunk-D2MDMY2M.js → chunk-BV3FLP2L.js} +47 -1
- package/{chunk-25JZEIXN.js → chunk-C4VAR65S.js} +92 -150
- package/{chunk-AVTVGMDY.js → chunk-C4WTX5TU.js} +2 -2
- package/{chunk-ZL5RAEEB.js → chunk-CIRB724Q.js} +1 -1
- package/{chunk-F6UUQOG6.js → chunk-CKT6QUE2.js} +4 -4
- package/{chunk-M6RL5JCD.js → chunk-CMZ3Z5PT.js} +14 -14
- package/{secretCommands-4QS3HCA2.js → chunk-D726I5AZ.js} +191 -16
- package/{chunk-INSBKSBB.js → chunk-DNKTQ3IN.js} +4 -4
- package/chunk-DVQH4BTR.js +1137 -0
- package/{chunk-SOHTHFV2.js → chunk-DWX2HEVC.js} +91 -132
- package/{chunk-NOMIGOST.js → chunk-EIAI3PPH.js} +116 -124
- package/chunk-EUCFKKDM.js +247 -0
- package/chunk-EWQ3HGNZ.js +90 -0
- package/{chunk-RPQXPZZF.js → chunk-F3GRJO4Z.js} +908 -13
- package/{chunk-GSQNH63I.js → chunk-FIYSMXHY.js} +3 -19
- package/{chunk-KSTEXKL6.js → chunk-FJ23FZXF.js} +76 -31
- package/{chunk-INN4LTAJ.js → chunk-FJK526XH.js} +2 -2
- package/chunk-FS2XP5D7.js +142 -0
- package/{chunk-QT6PKHYJ.js → chunk-FYF2TONJ.js} +5 -5
- package/{chunk-OXME3PEE.js → chunk-GBWGPTA7.js} +2 -1
- package/{chunk-RU4SD66C.js → chunk-GYVCJABP.js} +30 -254
- package/{chunk-YUXQAVRD.js → chunk-HOCHUZQ7.js} +257 -90
- package/{chunk-Y2WUYX4I.js → chunk-HXER7YJF.js} +4 -4
- package/chunk-HYIETXA6.js +99 -0
- package/{chunk-H2TJUNCH.js → chunk-I4EADJ4P.js} +6 -6
- package/{chunk-TCZHTTUU.js → chunk-I7WBYGBP.js} +8 -8
- package/{chunk-5RYBGBQH.js → chunk-IILMY4W4.js} +14 -9
- package/chunk-JA3ICVJY.js +271 -0
- package/{chunk-ZRSNONOB.js → chunk-JWXITTQB.js} +8 -3
- package/{chunk-JNKSDZFS.js → chunk-KEN3N2TN.js} +310 -66
- package/{chunk-LEC5ALIN.js → chunk-KEPOVMF4.js} +1 -1
- package/{chunk-UHJGXRJ4.js → chunk-KQSYAIZR.js} +3 -3
- package/{chunk-4VJAC32I.js → chunk-L5I543VB.js} +3 -2
- package/chunk-LKA64WH4.js +227 -0
- package/{chunk-6OQUPIQF.js → chunk-LVL6GFCM.js} +4 -4
- package/{chunk-UTV2AYEG.js → chunk-MAIITKBT.js} +2 -2
- package/chunk-MBG66ZBH.js +226 -0
- package/{chunk-YUA6OAH5.js → chunk-MDLS23JK.js} +2 -2
- package/{chunk-VL5KOY2C.js → chunk-MK2Q7ZJD.js} +67 -5
- package/{chunk-B7NJ3T4A.js → chunk-MS4NZNKI.js} +10 -10
- package/{chunk-3AKFVZ2I.js → chunk-MYHNBEXD.js} +3 -3
- package/{chunk-VZKUKCA6.js → chunk-MZLE5HQ3.js} +3673 -241
- package/{chunk-AZMYUSVF.js → chunk-N5Z2V73W.js} +1 -1
- package/chunk-NIZ2BXFD.js +526 -0
- package/{chunk-YPD3VJZW.js → chunk-NWP2OYOX.js} +20 -20
- package/{chunk-3FOQHGHN.js → chunk-O6J3OTOP.js} +4 -4
- package/{chunk-3RQVYR4B.js → chunk-OB6DVWPF.js} +197 -65
- package/{chunk-YWSEPJ7C.js → chunk-OBWT45ZU.js} +3 -3
- package/{chunk-5AQR3DGV.js → chunk-ODJ7BVSI.js} +80 -11
- package/{chunk-XJWWBO34.js → chunk-OJKUU3LP.js} +5 -7
- package/{chunk-GNDJKC4B.js → chunk-ON37YXGX.js} +29 -29
- package/{chunk-D5RCRX4A.js → chunk-P5ZJRTCH.js} +9415 -5169
- package/{chunk-6XIE5ZGI.js → chunk-PDCV7P5W.js} +1 -1
- package/{chunk-EZFQ6XRV.js → chunk-PJCIP64Z.js} +861 -59
- package/{chunk-GPO7FCEZ.js → chunk-PJVKMGPZ.js} +1222 -1719
- package/{chunk-CKAHAVMK.js → chunk-PPJYZRSQ.js} +40 -26
- package/chunk-QHEN7NZ7.js +46 -0
- package/{chunk-4KH4J3G5.js → chunk-QNWG52I4.js} +19 -7
- package/{chunk-YGILMZ7N.js → chunk-QVBXJNZ2.js} +1 -1
- package/chunk-RDH5CQ4T.js +1382 -0
- package/{chunk-C6KNNXWU.js → chunk-RGQ4UUWZ.js} +25 -2
- package/{chunk-OWYYDMGJ.js → chunk-S2NTVGA2.js} +4 -2
- package/{chunk-KC4XDTT3.js → chunk-SOF4OWDM.js} +6 -4
- package/{chunk-IAPCBNEE.js → chunk-SQYIK6HO.js} +1 -1
- package/{chunk-22CIEBYO.js → chunk-SVT62ULE.js} +50 -48
- package/{chunk-KIM6CLW5.js → chunk-SY3C4SQ7.js} +42 -15
- package/{chunk-JY5NGFFH.js → chunk-SYTHYBMI.js} +5 -5
- package/{chunk-6NSSLV67.js → chunk-T6DXNI6Z.js} +52 -50
- package/chunk-TLE77UJ5.js +230 -0
- package/{chunk-4VNS5WPM.js → chunk-U67V476Y.js} +1 -8
- package/{chunk-F7CI2ZC5.js → chunk-UAIHKQIA.js} +2 -1
- package/{chunk-MMNYUVLW.js → chunk-UB3D4TRQ.js} +11 -77
- package/{chunk-WPORQFYN.js → chunk-UVLYNWIE.js} +2 -2
- package/{chunk-YOIW77S2.js → chunk-UYOICCYG.js} +29 -19
- package/{chunk-4I7ERB7F.js → chunk-VREDDN25.js} +1 -1
- package/{chunk-JIT6FSXJ.js → chunk-WAE3GFCJ.js} +3 -3
- package/{chunk-IJXYFTV7.js → chunk-WI67URFP.js} +20 -20
- package/{chunk-7OCO4TDT.js → chunk-WJVYAO6P.js} +1 -1
- package/{chunk-T43B7LB2.js → chunk-WKGQSYTB.js} +1 -1
- package/{chunk-YJMRHHGY.js → chunk-WUUH4LWZ.js} +60 -30
- package/{chunk-PDGKOTO7.js → chunk-X7UF53VA.js} +33 -22
- package/{chunk-TY3TIUJK.js → chunk-XI2BWJM5.js} +65 -0
- package/{chunk-OOF4UPC5.js → chunk-XWVCYUUU.js} +16 -159
- package/{chunk-J5JTMQIA.js → chunk-YFLVRVYK.js} +1 -1
- package/{chunk-EYLGAEB4.js → chunk-YGMBIXCF.js} +132 -0
- package/chunk-YL3EFYL3.js +199 -0
- package/{chunk-MMA3LZ3W.js → chunk-YNIYE47Z.js} +1 -1
- package/{chunk-W4S457LU.js → chunk-YU4ZPWVF.js} +41 -5
- package/{chunk-NJR3WKVP.js → chunk-YWWDC3O7.js} +281 -159
- package/chunk-YZMNK53S.js +68 -0
- package/{chunk-FHU44LN3.js → chunk-Z2PITYZN.js} +2179 -552
- package/{chunk-FY7F4Q6X.js → chunk-Z4PCXPUE.js} +2 -2
- package/{cliAgentConfigHelpers-WJBZQTLW.js → cliAgentConfigHelpers-TKYL43MT.js} +15 -16
- package/{cliAuthorityBrokerClient-PM3U6Q6J.js → cliAuthorityBrokerClient-XHH7MH2P.js} +1 -1
- package/{cliAuthorityStoreDriver-TKLXNNTG.js → cliAuthorityStoreDriver-6FE3BJNB.js} +1 -1
- package/{cliEnvHelpers-BVYTMUPJ.js → cliEnvHelpers-VPSJ4XWC.js} +3 -3
- package/{cliExecutor-BWBF2MTI.js → cliExecutor-4MAX3PZL.js} +2 -2
- package/cliLocalAgentRecordReader-MHHD4T7R.js +90 -0
- package/{commandRegistry-VVMTPFAX.js → commandRegistry-5DA5UP7S.js} +106 -98
- package/{contentThunks-N52O67MI.js → contentThunks-5GUQ7FWJ.js} +47 -43
- package/{cooldownCommands-YXLWOXWR.js → cooldownCommands-X7P5M2V5.js} +5 -4
- package/{createAgentAutomationAction-ZC57YRSV.js → createAgentAutomationAction-UCLTHQRI.js} +51 -49
- package/{createDialogAction-VQW5WDYX.js → createDialogAction-UPN774AF.js} +46 -48
- package/{createPageAction-M5VDA7SC.js → createPageAction-JRQ2TA4O.js} +50 -48
- package/{cursorProvider-YGGNMVWX.js → cursorProvider-2RACMEMF.js} +1 -1
- package/{db-HUCI5R4G.js → db-CS4ZJQKV.js} +1 -1
- package/{dbSlice-HP7G4LX3.js → dbSlice-WNON7TOL.js} +17 -16
- package/{deleteFile-7VQGLK2V.js → deleteFile-Q3YDB4ML.js} +9 -9
- package/{desktopFolderProjects-SFY5EZS3.js → desktopFolderProjects-4POAMVJN.js} +2 -2
- package/{dialogCommands-JHMR2N2Y.js → dialogCommands-VRI7VCXH.js} +64 -57
- package/dialogNotifyCommand-6TMCX4D2.js +36 -0
- package/{dialogSlice-GRSVGDTF.js → dialogSlice-LFNVUSAN.js} +42 -40
- package/{dialogUsageCommand-7KCPYGHG.js → dialogUsageCommand-HTVPR2CX.js} +11 -10
- package/{docCreateCommands-F2K3UPSQ.js → docCreateCommands-AMPXMOX3.js} +61 -54
- package/{docDeleteCommands-XGXB5RFT.js → docDeleteCommands-I5WFAEHP.js} +63 -57
- package/{docReadCommands-7HWZZV6J.js → docReadCommands-X53ELNIE.js} +61 -54
- package/{docStore-KNZK6Y2G.js → docStore-2VAWVLWH.js} +21 -20
- package/{docUpdateCommands-OZZ7NQII.js → docUpdateCommands-6QPNDC7M.js} +64 -57
- package/{fetchMessages-M3QU7ZCQ.js → fetchMessages-TQEUZD7H.js} +8 -7
- package/{getPricing-2MNMXEVG.js → getPricing-MB2GBXOK.js} +6 -6
- package/{handleSendMessageAction-SHIH74GJ.js → handleSendMessageAction-AAJOHXOB.js} +193 -301
- package/{hostCredentialCreate-X64WK4JD.js → hostCredentialCreate-GLMJ22M6.js} +123 -114
- package/index.js +29 -29
- package/{keys-BEGDOTRL.js → keys-RWF7UCB4.js} +5 -4
- package/legacyMigration-TF4SYJCZ.js +19 -0
- package/{lib-5KKIBFIT.js → lib-OT5OTXRU.js} +7087 -6664
- package/{localDialogRead-XRLAH4CZ.js → localDialogRead-SVTPA5GY.js} +3 -3
- package/{localFirstLog-DHNOY2NA.js → localFirstLog-OIETGK66.js} +1 -1
- package/localRecall-2J6QPOK2.js +15 -0
- package/{localRuntimeAdapter-A7K3ABA6.js → localRuntimeAdapter-BMP57P42.js} +119 -110
- package/{localRuntimeAuthority-OYH4AE4G.js → localRuntimeAuthority-IBJAT62G.js} +1 -1
- package/{localRuntimeDb-VBIMCWUC.js → localRuntimeDb-N7KHDXS2.js} +2 -2
- package/{machineCommands-DE3MR7CJ.js → machineCommands-3MLIAK5Q.js} +128 -119
- package/{machineInfo-UKPTZO5Y.js → machineInfo-LWHTEBHJ.js} +1 -1
- package/machineWsRunDispatch-FKIGROQF.js +191 -0
- package/{memberThunks-7WJAY5V6.js → memberThunks-ZGLZ36PK.js} +29 -28
- package/{memoryCommands-ASCE5STX.js → memoryCommands-5WC3T66U.js} +4 -4
- package/models-ULVWLSQ6.js +9 -0
- package/{oauthTokenStore-OEERZFUC.js → oauthTokenStore-RUYNYALS.js} +1 -1
- package/{offlineMarxistsAgentCommand-2QTHJCHV.js → offlineMarxistsAgentCommand-4IC3Y4C6.js} +4 -4
- package/overlay-THLKYIWY.js +11 -0
- package/package.json +2 -2
- package/{pdf-U6KSUEZZ.js → pdf-KE3QI2V7.js} +1 -1
- package/{processSpawn-ZU5QFM43.js → processSpawn-6GEO77KV.js} +1 -1
- package/{profileConfig-KN3N2BLF.js → profileConfig-KOWK4HOG.js} +1 -1
- package/{projectArchive-GGL5HLMD.js → projectArchive-HK63GMF4.js} +52 -50
- package/{providerPresetApply-YXGV6NXB.js → providerPresetApply-OIFQ73LH.js} +19 -12
- package/{providerRegistry-S6UL6UNA.js → providerRegistry-KZ3SDZ3D.js} +10 -10
- package/{read-4VZQODSN.js → read-MRQHJMJ2.js} +10 -10
- package/{readDocTool-AVD32RUJ.js → readDocTool-4BGTXTXA.js} +2 -2
- package/{readlineWorkspace-XKYKNL2I.js → readlineWorkspace-AKAHSCNY.js} +6505 -4634
- package/{removeDialogAgentAction-FKL4BYMR.js → removeDialogAgentAction-B6H7DXFM.js} +23 -22
- package/{runAgentClientLoop-V7E2WBVM.js → runAgentClientLoop-UVAWGEON.js} +81 -79
- package/{runtimeDoctorCommands-QAI3MBKQ.js → runtimeDoctorCommands-FW6XKDUG.js} +12 -12
- package/{runtimeModeArgs-2Y7BALTO.js → runtimeModeArgs-X7DL7PUN.js} +1 -1
- package/secretCommands-LJXOOYA7.js +24 -0
- package/{setDialogExtraReferencesAction-TLIOLWWI.js → setDialogExtraReferencesAction-EVCY3TRW.js} +22 -21
- package/{setPrimaryDialogAgentAction-2OLWRFYR.js → setPrimaryDialogAgentAction-KPFVPHCJ.js} +23 -22
- package/{settingThunks-UGBPCNYF.js → settingThunks-ENOAK2WV.js} +97 -88
- package/{skillDiscovery-XKHROSH2.js → skillDiscovery-B5V23AXP.js} +4 -4
- package/{skillSummaryMarker-42HKSXYY.js → skillSummaryMarker-62UW7HI7.js} +1 -1
- package/{slateToRenderMarkdown-Y5IYN73U.js → slateToRenderMarkdown-R3X74MCX.js} +1 -1
- package/{slateUtils-NGV2NMKM.js → slateUtils-ESQAJ6RN.js} +1 -1
- package/{spaceCommands-4KSLKVNF.js → spaceCommands-DTTNAS2L.js} +61 -53
- package/store-JRVN62NM.js +46 -0
- package/{streamAgentChatTurn-7FR7X2NU.js → streamAgentChatTurn-R5UY25VB.js} +875 -618
- package/{switchDialogAgentAction-UZSAG2N5.js → switchDialogAgentAction-SZ44XDRY.js} +21 -20
- package/{tableCommands-MP6VFSVT.js → tableCommands-HITDSLHS.js} +10 -10
- package/tombstones-FQQMEDOW.js +32 -0
- package/{toolApiClient-HGNO53TC.js → toolApiClient-OGQEBQVX.js} +4 -4
- package/{tools-ZLKCC25W.js → tools-HWFG6GMJ.js} +75 -74
- package/tuiSummaryLlmCaller-HQQZAMYF.js +44 -0
- package/{updateCommands-4744PL3P.js → updateCommands-RJVCRSBP.js} +10 -8
- package/{updateDialogTitleAction-U53ZT7PJ.js → updateDialogTitleAction-KNPOAMVS.js} +48 -46
- package/{usageCommand-F4IPVMIZ.js → usageCommand-FWZCB7AM.js} +11 -10
- package/{usageRebuildCommand-HAW2AD5N.js → usageRebuildCommand-SP2BLNJU.js} +12 -11
- package/userDataMerge-HT2ZVHBJ.js +13 -0
- package/{windowsSelfUpdate-XSQVF2GK.js → windowsSelfUpdate-KERHIAB4.js} +3 -3
- package/{workloadLifecycle-4BEQHMSD.js → workloadLifecycle-DYNEYHV5.js} +7 -6
- package/agentRecordCommands-L3QQ7HZ4.js +0 -167
- package/agentRunCommand-2IFGQHCO.js +0 -196
- package/chunk-3CGG2PAL.js +0 -594
- package/chunk-5XBUWM6I.js +0 -89
- package/chunk-BFM34N54.js +0 -842
- package/chunk-CJEIOP3E.js +0 -0
- package/chunk-CZM5YTZ7.js +0 -977
- package/chunk-EYUBHHFB.js +0 -636
- package/chunk-JTDORD5P.js +0 -415
- package/chunk-NRFKLKRU.js +0 -339
- package/chunk-VPAZOH2D.js +0 -115
- package/chunk-WJZOQR2J.js +0 -151
- package/chunk-ZCWRMUWT.js +0 -89
- package/dist-M676ULYG.js +0 -7314
- package/machineWsRunDispatch-R26P5V36.js +0 -182
- package/models-PJBE6JDV.js +0 -9
- package/tuiSummaryLlmCaller-WC54MVGP.js +0 -160
- package/{chunk-WACI5I6V.js → chunk-2THCNKE4.js} +3 -3
- package/{chunk-2QHFH3DR.js → chunk-47ITIXO7.js} +6 -6
- package/{chunk-GOO6G4PY.js → chunk-CKG3PRZ7.js} +0 -0
- package/{chunk-OQHIVPG4.js → chunk-SNBZZPYH.js} +3 -3
- package/{chunk-AETZ7AD6.js → chunk-W6RFEDN4.js} +3 -3
|
@@ -77,6 +77,10 @@ var turnStrings = {
|
|
|
77
77
|
en: "Stopped waiting. {0} may still be finishing in the background \u2014 its result won't be added to this conversation.",
|
|
78
78
|
zh: "\u5DF2\u505C\u6B62\u7B49\u5F85\u3002{0} \u53EF\u80FD\u4ECD\u5728\u540E\u53F0\u5B8C\u6210\uFF0C\u5176\u7ED3\u679C\u4E0D\u4F1A\u8BA1\u5165\u672C\u6B21\u5BF9\u8BDD\u3002"
|
|
79
79
|
},
|
|
80
|
+
wakeQueuedWhileStopped: {
|
|
81
|
+
en: "Stopped. {0} queued background result(s) are waiting \u2014 press Enter to continue (Ctrl+S sends all at once).",
|
|
82
|
+
zh: "\u5DF2\u505C\u6B62\u3002\u8FD8\u6709 {0} \u9879\u540E\u53F0\u7ED3\u679C\u5728\u961F\u5217\u91CC\u7B49\u7740\u2014\u2014\u6309 Enter \u7EE7\u7EED\uFF08Ctrl+S \u5408\u5E76\u53D1\u9001\uFF09\u3002"
|
|
83
|
+
},
|
|
80
84
|
turnStopping: {
|
|
81
85
|
en: "Stopping\u2026 press Esc again to force",
|
|
82
86
|
zh: "\u6B63\u5728\u505C\u6B62\u2026\u518D\u6309\u4E00\u6B21 Esc \u5F3A\u5236\u505C\u6B62"
|
|
@@ -91,13 +95,45 @@ var turnStrings = {
|
|
|
91
95
|
zh: "\u8F93\u51FA {0}"
|
|
92
96
|
},
|
|
93
97
|
// --- Ask choice (ask_user) ------------------------------------------
|
|
94
|
-
|
|
95
|
-
en: "
|
|
96
|
-
zh: "\
|
|
98
|
+
askChoiceHintMove: {
|
|
99
|
+
en: "\u2191\u2193 select",
|
|
100
|
+
zh: "\u2191\u2193 \u9009\u62E9"
|
|
101
|
+
},
|
|
102
|
+
askChoiceHintPick: {
|
|
103
|
+
en: "Enter pick",
|
|
104
|
+
zh: "Enter \u9009\u62E9"
|
|
105
|
+
},
|
|
106
|
+
askChoiceHintToggle: {
|
|
107
|
+
en: "Enter toggle",
|
|
108
|
+
zh: "Enter \u5207\u6362"
|
|
109
|
+
},
|
|
110
|
+
askChoiceHintSkip: {
|
|
111
|
+
en: "skip",
|
|
112
|
+
zh: "\u53EF\u8DF3\u8FC7"
|
|
113
|
+
},
|
|
114
|
+
askChoiceHintSend: {
|
|
115
|
+
en: "\u2193 Done sends",
|
|
116
|
+
zh: "\u2193 \u5B8C\u6210\u53D1\u9001"
|
|
117
|
+
},
|
|
118
|
+
askChoiceHintOther: {
|
|
119
|
+
en: "Other: text",
|
|
120
|
+
zh: "\u5176\u4ED6\u53EF\u8F93\u5165"
|
|
121
|
+
},
|
|
122
|
+
askChoiceHintTab: {
|
|
123
|
+
en: "Tab",
|
|
124
|
+
zh: "Tab \u5207\u6362"
|
|
125
|
+
},
|
|
126
|
+
askChoiceHintCancel: {
|
|
127
|
+
en: "Esc cancels",
|
|
128
|
+
zh: "Esc \u53D6\u6D88"
|
|
129
|
+
},
|
|
130
|
+
askChoiceHintWheelHistory: {
|
|
131
|
+
en: "wheel: history",
|
|
132
|
+
zh: "\u6EDA\u8F6E\u770B\u4E0A\u6587"
|
|
97
133
|
},
|
|
98
|
-
|
|
99
|
-
en: "
|
|
100
|
-
zh: "\
|
|
134
|
+
askChoiceHintWheelSelect: {
|
|
135
|
+
en: "wheel: list",
|
|
136
|
+
zh: "\u6EDA\u8F6E\u9009\u62E9"
|
|
101
137
|
},
|
|
102
138
|
askChoiceSubmit: {
|
|
103
139
|
en: "submit \u2193",
|
|
@@ -115,30 +151,6 @@ var turnStrings = {
|
|
|
115
151
|
en: "Other",
|
|
116
152
|
zh: "\u5176\u4ED6"
|
|
117
153
|
},
|
|
118
|
-
askChoiceHintSingle: {
|
|
119
|
-
en: "Enter/Space picks \xB7 single question sends \xB7 multi-question jumps to the next unanswered \xB7 Enter in Other confirms and continues",
|
|
120
|
-
zh: "Enter/\u7A7A\u683C \u9009\u62E9\uFF1A\u5355\u9898\u76F4\u63A5\u53D1\u9001\u3001\u591A\u9898\u8DF3\u5230\u4E0B\u4E00\u672A\u7B54\u9898 \xB7 \u5176\u4ED6\u8F93\u5165\u540E Enter \u786E\u8BA4\u5E76\u7EE7\u7EED"
|
|
121
|
-
},
|
|
122
|
-
askChoiceHintOptional: {
|
|
123
|
-
en: "Optional question \u2014 Enter/Space picks (one step) \xB7 skip if you don't want to answer",
|
|
124
|
-
zh: "\u53EF\u9009\u9898 \u2014 Enter/\u7A7A\u683C \u9009\u62E9\u5373\u5B8C\u6210 \xB7 \u4E0D\u60F3\u56DE\u7B54\u53EF\u8DF3\u8FC7"
|
|
125
|
-
},
|
|
126
|
-
askChoiceHintMulti: {
|
|
127
|
-
en: "Enter/Space toggles \xB7 \u2193 to Done row, Enter sends",
|
|
128
|
-
zh: "Enter/\u7A7A\u683C \u5207\u6362\u9009\u4E2D \xB7 \u2193 \u5230\u5B8C\u6210\u884C Enter \u53D1\u9001"
|
|
129
|
-
},
|
|
130
|
-
askChoiceFooterSingle: {
|
|
131
|
-
en: "\u21B5 pick/send \xB7 tab switch \xB7 esc cancel",
|
|
132
|
-
zh: "\u21B5 \u9009\u62E9/\u53D1\u9001 \xB7 tab \u5207\u6362 \xB7 esc \u53D6\u6D88"
|
|
133
|
-
},
|
|
134
|
-
askChoiceFooterSkip: {
|
|
135
|
-
en: "\u21B5 pick/send \xB7 \u2193 skip row \u21B5 skip \xB7 tab switch \xB7 esc cancel",
|
|
136
|
-
zh: "\u21B5 \u9009\u62E9/\u53D1\u9001 \xB7 \u2193 \u8DF3\u8FC7\u884C \u21B5 \u8DF3\u8FC7 \xB7 tab \u5207\u6362 \xB7 esc \u53D6\u6D88"
|
|
137
|
-
},
|
|
138
|
-
askChoiceFooterMulti: {
|
|
139
|
-
en: "\u21B5 toggle \xB7 \u2193 done row \u21B5 send \xB7 ctrl+s send \xB7 tab switch \xB7 esc cancel",
|
|
140
|
-
zh: "\u21B5 \u5207\u6362 \xB7 \u2193 \u5B8C\u6210\u884C \u21B5 \u53D1\u9001 \xB7 ctrl+s \u53D1\u9001 \xB7 tab \u5207\u6362 \xB7 esc \u53D6\u6D88"
|
|
141
|
-
},
|
|
142
154
|
askChoiceValidationRequired: {
|
|
143
155
|
en: "Required questions are unanswered \u2014 jumped to the first one.",
|
|
144
156
|
zh: "\u5FC5\u586B\u95EE\u9898\u5C1A\u672A\u56DE\u7B54 \u2014 \u5DF2\u8DF3\u8F6C\u5230\u7B2C\u4E00\u4E2A\u672A\u7B54\u9898\u3002"
|
|
@@ -241,12 +253,12 @@ var sessionStrings = {
|
|
|
241
253
|
" /skill detach <ref> Detach a skill",
|
|
242
254
|
" /skill clear Detach all skills",
|
|
243
255
|
" /customize Describe how you want to tune nolo",
|
|
244
|
-
" /tasks List
|
|
256
|
+
" /tasks List child agent runs and background processes",
|
|
245
257
|
" /stop <pid|all> Stop background process tasks",
|
|
246
258
|
" /login Show login/profile hint (/login --server <url> to log in here)",
|
|
247
259
|
" /auth Show provider OAuth status (/auth <provider> to authorize, /auth logout <provider> to remove)",
|
|
248
260
|
" /profile Show active profile",
|
|
249
|
-
" /update
|
|
261
|
+
" /update Check for updates and install (status|force)",
|
|
250
262
|
" /version Show version/update hint",
|
|
251
263
|
" /logs Show recent diagnostics and the log file path",
|
|
252
264
|
" /learn Review this dialog for reusable tool/prompt improvements",
|
|
@@ -288,12 +300,12 @@ var sessionStrings = {
|
|
|
288
300
|
" /skill detach <ref> \u5378\u8F7D\u6307\u5B9A\u6280\u80FD",
|
|
289
301
|
" /skill clear \u5378\u8F7D\u5168\u90E8\u6280\u80FD",
|
|
290
302
|
" /customize \u63CF\u8FF0\u4F60\u60F3\u600E\u4E48\u8C03\u6559 nolo",
|
|
291
|
-
" /tasks \u5217\u51FA\
|
|
303
|
+
" /tasks \u5217\u51FA\u5B50 agent \u8FD0\u884C\u548C\u540E\u53F0\u8FDB\u7A0B",
|
|
292
304
|
" /stop <pid|all> \u505C\u6B62\u6307\u5B9A\u7684\u540E\u53F0\u4EFB\u52A1",
|
|
293
305
|
" /login \u67E5\u770B\u767B\u5F55 / \u914D\u7F6E\u63D0\u793A\uFF08/login --server <url> \u53EF\u5728\u672C\u4F1A\u8BDD\u5185\u767B\u5F55\uFF09",
|
|
294
306
|
" /auth \u67E5\u770B\u6A21\u578B provider \u6388\u6743\u72B6\u6001\uFF08/auth <provider> \u5F00\u59CB\u6388\u6743\uFF0C/auth logout <provider> \u6CE8\u9500\uFF09",
|
|
295
307
|
" /profile \u67E5\u770B\u5F53\u524D\u914D\u7F6E\u73AF\u5883",
|
|
296
|
-
" /update \u66F4\u65B0
|
|
308
|
+
" /update \u68C0\u67E5\u5E76\u5B89\u88C5\u66F4\u65B0\uFF08status|force\uFF09",
|
|
297
309
|
" /version \u67E5\u770B\u7248\u672C\u4E0E\u66F4\u65B0\u63D0\u793A",
|
|
298
310
|
" /logs \u67E5\u770B\u6700\u8FD1\u8BCA\u65AD\u8BB0\u5F55\u4E0E\u65E5\u5FD7\u6587\u4EF6\u4F4D\u7F6E",
|
|
299
311
|
" /learn \u4ECE\u5F53\u524D\u5BF9\u8BDD\u590D\u76D8\u53EF\u590D\u7528\u7684\u5DE5\u5177/\u63D0\u793A\u8BCD\u6539\u8FDB",
|
|
@@ -464,11 +476,6 @@ var agentStrings = {
|
|
|
464
476
|
en: "\u26A0 {0} favorite(s) unavailable right now",
|
|
465
477
|
zh: "\u26A0 {0} \u4E2A\u6536\u85CF\u9879\u6682\u65F6\u4E0D\u53EF\u7528"
|
|
466
478
|
},
|
|
467
|
-
// 派发前的本地冷却拦截(原两行英文 → 本地化单行压缩)。
|
|
468
|
-
agentCooldownBlocked: {
|
|
469
|
-
en: "[nolo] Agent {0} is in 429 cooldown until {1}. This dispatch was not sent \u2014 pick another agent, or retry after the cooldown.",
|
|
470
|
-
zh: "[nolo] Agent {0} \u51B7\u5374\u4E2D\uFF0C\u81F3 {1}\u3002\u672C\u6B21\u6D3E\u53D1\u672A\u53D1\u51FA\u2014\u2014\u6362\u4E00\u4E2A agent\uFF0C\u6216\u5230\u70B9\u540E\u91CD\u8BD5\u3002"
|
|
471
|
-
},
|
|
472
479
|
// --- Agent-run orchestration cards (injected into packages/ai helpers) ---
|
|
473
480
|
runStatusLabel: {
|
|
474
481
|
en: "Run status",
|
|
@@ -478,6 +485,9 @@ var agentStrings = {
|
|
|
478
485
|
en: "Run started",
|
|
479
486
|
zh: "\u8FD0\u884C\u5DF2\u542F\u52A8"
|
|
480
487
|
},
|
|
488
|
+
agentStartingLabel: { en: "Starting agent", zh: "\u6B63\u5728\u542F\u52A8\u667A\u80FD\u4F53" },
|
|
489
|
+
agentStartedLabel: { en: "Agent started", zh: "\u667A\u80FD\u4F53\u5DF2\u542F\u52A8" },
|
|
490
|
+
agentStartFailedLabel: { en: "Agent start failed", zh: "\u667A\u80FD\u4F53\u542F\u52A8\u5931\u8D25" },
|
|
481
491
|
runStoppedLabel: {
|
|
482
492
|
en: "Run stopped",
|
|
483
493
|
zh: "\u8FD0\u884C\u5DF2\u505C\u6B62"
|
|
@@ -510,13 +520,21 @@ var agentStrings = {
|
|
|
510
520
|
runRowNote: { en: "note", zh: "\u5907\u6CE8" },
|
|
511
521
|
runRowError: { en: "error", zh: "\u9519\u8BEF" },
|
|
512
522
|
runRowTask: { en: "task", zh: "\u4EFB\u52A1" },
|
|
513
|
-
// listAgents card header (
|
|
514
|
-
//
|
|
515
|
-
|
|
523
|
+
// listAgents card header (`🤖 (3)` / `🤖 · 3 个`). The 🤖 marker replaces the
|
|
524
|
+
// stiff type word ("Agents" / "智能体"), the same way the run zone labels an
|
|
525
|
+
// agent run; the count stays a plain number. The shared ai renderer keeps the
|
|
526
|
+
// English default; the CLI relabels the header line.
|
|
527
|
+
agentsListLabel: { en: "\u{1F916} ({0})", zh: "\u{1F916} ({0})" },
|
|
528
|
+
agentsCompactCount: { en: "\u{1F916} \xB7 {0}", zh: "\u{1F916} \xB7 {0} \u4E2A" },
|
|
529
|
+
agentsPageCount: { en: "{0} on this page", zh: "\u672C\u9875 {0} \u4E2A" },
|
|
530
|
+
agentsTruncated: { en: "incomplete", zh: "\u7ED3\u679C\u4E0D\u5B8C\u6574" },
|
|
516
531
|
// Fallback identity for auto-generated agent ids (run zone / dock / panel).
|
|
517
532
|
subAgentName: {
|
|
518
|
-
|
|
519
|
-
|
|
533
|
+
// Type marker for an agent row without a real name. The emoji replaces the
|
|
534
|
+
// stiff type words ("Sub-agent" / "智能体"); real names, titles and
|
|
535
|
+
// status keep their own slots.
|
|
536
|
+
en: "\u{1F916}",
|
|
537
|
+
zh: "\u{1F916}"
|
|
520
538
|
},
|
|
521
539
|
// Status vocabulary the fixed run zone does not label (running shows only its
|
|
522
540
|
// elapsed time there). `en` must stay equal to the raw store status so a
|
|
@@ -538,13 +556,14 @@ var agentStrings = {
|
|
|
538
556
|
zh: "{0}\uFF08\u5F85\u5BF9\u8D26\uFF09"
|
|
539
557
|
},
|
|
540
558
|
// --- Fixed run zone (top of composer, replaces the ⚙ running status chip) --
|
|
541
|
-
// Each active run renders as
|
|
559
|
+
// Each active run renders as `↳ agent <title> · <agent> · <elapsed> · N tools`.
|
|
542
560
|
// runZoneFor is the elapsed-time fact for a *running* run (`for 1m23s` /
|
|
543
561
|
// `已运行 1m23s`); terminal runs print `<status> <age>` instead and don't use it.
|
|
544
562
|
runZoneFor: {
|
|
545
563
|
en: "for {0}",
|
|
546
564
|
zh: "\u5DF2\u8FD0\u884C {0}"
|
|
547
565
|
},
|
|
566
|
+
runZoneAgentType: { en: "\u{1F916}", zh: "\u{1F916}" },
|
|
548
567
|
// Terminal linger line: `✓ <run> · done · took 12m03s`.
|
|
549
568
|
runZoneDone: { en: "done", zh: "\u5B8C\u6210" },
|
|
550
569
|
runZoneFailed: { en: "failed", zh: "\u5931\u8D25" },
|
|
@@ -605,13 +624,13 @@ Use /switch, /switch list, /switch minimax-m3, or a full agent key.`,
|
|
|
605
624
|
zh: "API"
|
|
606
625
|
},
|
|
607
626
|
// ── Non-TUI CLI output: nolo agent / nolo run ─────────────────────────────
|
|
608
|
-
"agent.
|
|
609
|
-
en: "
|
|
610
|
-
zh: "
|
|
627
|
+
"agent.rateLimitedSummary": {
|
|
628
|
+
en: "[nolo] {0} agent(s) have quota/cooldown restrictions (reference info; dispatch is not restricted).\n",
|
|
629
|
+
zh: "[nolo] {0} \u4E2A agent \u6709\u989D\u5EA6/\u51B7\u5374\u53D7\u9650\u8BB0\u5F55\uFF08\u53C2\u8003\u4FE1\u606F\uFF0C\u4E0D\u9650\u5236\u6D3E\u53D1\uFF09\u3002\n"
|
|
611
630
|
},
|
|
612
631
|
"agent.rateLimitedRecovery": {
|
|
613
|
-
en: " -
|
|
614
|
-
zh: " -
|
|
632
|
+
en: " - {0} (id: {1}) quota-limited until {4} ({2}s remaining; reference info, dispatch is not restricted){3}\n",
|
|
633
|
+
zh: " - {0} (id: {1}) \u989D\u5EA6\u53D7\u9650\u81F3 {4}\uFF08\u5269\u4F59 {2} \u79D2\uFF1B\u53C2\u8003\u4FE1\u606F\uFF0C\u4E0D\u9650\u5236\u6D3E\u53D1\uFF09{3}\n"
|
|
615
634
|
},
|
|
616
635
|
"agentRun.autoRouteOverrideFailed": {
|
|
617
636
|
en: "[nolo] auto-route: could not read the source agent, running the selected agent as-is.\n",
|
|
@@ -783,12 +802,16 @@ var authStrings = {
|
|
|
783
802
|
zh: "\u767B\u5F55\u6210\u529F\u3002Token \u5DF2\u5199\u5165 profile\uFF0C\u5F53\u524D\u4F1A\u8BDD\u7ACB\u5373\u751F\u6548\u3002"
|
|
784
803
|
},
|
|
785
804
|
loginFailed: {
|
|
786
|
-
en: "Login failed: {0}",
|
|
787
|
-
zh: "\u767B\u5F55\u5931\u8D25\uFF1A{0}"
|
|
805
|
+
en: "Login failed: {0}. Run /login again.",
|
|
806
|
+
zh: "\u767B\u5F55\u5931\u8D25\uFF1A{0}\u3002\u8BF7\u91CD\u65B0\u6267\u884C /login\u3002"
|
|
788
807
|
},
|
|
789
808
|
loginTimeout: {
|
|
790
|
-
en: "Login timed out. Run /login again
|
|
791
|
-
zh: "\u767B\u5F55\u8D85\u65F6\u3002\u8BF7\u91CD\u65B0\u6267\u884C /login\
|
|
809
|
+
en: "Login timed out. Run /login again.",
|
|
810
|
+
zh: "\u767B\u5F55\u8D85\u65F6\u3002\u8BF7\u91CD\u65B0\u6267\u884C /login\u3002"
|
|
811
|
+
},
|
|
812
|
+
loginAlreadyRunning: {
|
|
813
|
+
en: "Login is already running. Press Esc or Ctrl+C to cancel it before retrying /login.",
|
|
814
|
+
zh: "\u767B\u5F55\u6B63\u5728\u8FDB\u884C\u3002\u8BF7\u5148\u6309 Esc \u6216 Ctrl+C \u53D6\u6D88\uFF0C\u518D\u91CD\u65B0\u6267\u884C /login\u3002"
|
|
792
815
|
},
|
|
793
816
|
loginCancelled: {
|
|
794
817
|
en: "Login cancelled.",
|
|
@@ -1082,7 +1105,22 @@ var updateStrings = {
|
|
|
1082
1105
|
updateNotifyFinished: { "en": "Update finished - the next Nolo launch uses the new version", "zh": "\u66F4\u65B0\u5B8C\u6210\uFF0C\u4E0B\u6B21\u542F\u52A8 Nolo \u5373\u4F7F\u7528\u65B0\u7248\u672C" },
|
|
1083
1106
|
updateUsage: { "en": "Usage:\n nolo update Install the latest CLI\n nolo update status Show version, channel, and background-update state", "zh": "\u7528\u6CD5\uFF1A\n nolo update \u5B89\u88C5\u6700\u65B0 CLI\n nolo update status \u663E\u793A\u7248\u672C\u3001channel \u4E0E\u540E\u53F0\u66F4\u65B0\u72B6\u6001" },
|
|
1084
1107
|
updateNotifyFailed: { "en": "Update failed - see log: {0}", "zh": "\u66F4\u65B0\u5931\u8D25\uFF0C\u8BF7\u67E5\u770B\u65E5\u5FD7\uFF1A{0}" },
|
|
1085
|
-
updateVersionChanged: { "en": "\u25B8 Nolo version changed: {0} \u2192 {1}", "zh": "\u25B8 Nolo \u7248\u672C\u53D8\u5316\uFF1A{0} \u2192 {1}" }
|
|
1108
|
+
updateVersionChanged: { "en": "\u25B8 Nolo version changed: {0} \u2192 {1}", "zh": "\u25B8 Nolo \u7248\u672C\u53D8\u5316\uFF1A{0} \u2192 {1}" },
|
|
1109
|
+
// ── /update 在 TUI 里的可见文案 ──────────────────────────────────────────
|
|
1110
|
+
// 检查先于安装:确知已最新时直接告知并跳过安装,检查失败(离线/超时)如实
|
|
1111
|
+
// 说明后照常安装——不确定的信息不得否决用户的正常操作。
|
|
1112
|
+
updateChecking: { en: "\u25B8 Checking for a newer version\u2026", zh: "\u25B8 \u6B63\u5728\u68C0\u67E5\u662F\u5426\u6709\u65B0\u7248\u672C\u2026" },
|
|
1113
|
+
updateAlreadyLatest: { en: "\u2713 nolo {0} is already the latest version. Reinstall anyway with: /update force", zh: "\u2713 nolo {0} \u5DF2\u662F\u6700\u65B0\u7248\u672C\u3002\u5982\u9700\u5F3A\u5236\u91CD\u88C5\uFF1A/update force" },
|
|
1114
|
+
updateCheckSkipped: { en: "\u25B8 Could not check for a newer version (offline or timeout) \u2014 installing anyway.", zh: "\u25B8 \u65E0\u6CD5\u68C0\u67E5\u6700\u65B0\u7248\u672C\uFF08\u79BB\u7EBF\u6216\u8D85\u65F6\uFF09\uFF0C\u7EE7\u7EED\u5B89\u88C5\u3002" },
|
|
1115
|
+
updateTuiScheduled: { en: "\u2713 Update is ready. Nolo now exits so the installer can replace this build.", zh: "\u2713 \u66F4\u65B0\u5DF2\u5C31\u7EEA\u3002Nolo \u73B0\u5728\u9000\u51FA\uFF0C\u4EE5\u4FBF\u5B89\u88C5\u7A0B\u5E8F\u66FF\u6362\u5F53\u524D\u7248\u672C\u3002" },
|
|
1116
|
+
updateTuiFinished: { en: "\u2713 Update finished. Restart nolo to use the new version.", zh: "\u2713 \u66F4\u65B0\u5B8C\u6210\u3002\u91CD\u542F nolo \u540E\u751F\u6548\u3002" },
|
|
1117
|
+
updateTuiFailed: { en: "\u2717 Update failed. See the error above, then run /update again or `nolo update`.", zh: "\u2717 \u66F4\u65B0\u5931\u8D25\u3002\u8BF7\u67E5\u770B\u4E0A\u9762\u7684\u9519\u8BEF\uFF0C\u7136\u540E\u91CD\u8BD5 /update \u6216\u4F7F\u7528 `nolo update`\u3002" },
|
|
1118
|
+
updateTuiUsage: { en: "Usage:\n /update Check for a newer version and install it\n /update status Show version, channel, and whether a newer version exists\n /update force Reinstall even when already up to date", zh: "\u7528\u6CD5\uFF1A\n /update \u68C0\u67E5\u5E76\u5B89\u88C5\u6700\u65B0\u7248\u672C\n /update status \u663E\u793A\u7248\u672C\u3001\u6E20\u9053\uFF0C\u4EE5\u53CA\u662F\u5426\u6709\u65B0\u7248\u672C\n /update force \u5373\u4F7F\u5DF2\u662F\u6700\u65B0\u4E5F\u5F3A\u5236\u91CD\u88C5" },
|
|
1119
|
+
updateTuiUnknownArg: { en: "\u2717 Unknown argument: {0}", zh: "\u2717 \u672A\u77E5\u53C2\u6570\uFF1A{0}" },
|
|
1120
|
+
updateTuiStatus: { en: "nolo {0}\nchannel {1}", zh: "nolo {0}\n\u6E20\u9053 {1}" },
|
|
1121
|
+
updateUpToDate: { en: "\u2713 Already up to date", zh: "\u2713 \u5DF2\u662F\u6700\u65B0\u7248\u672C" },
|
|
1122
|
+
updateCheckUnavailable: { en: "? Could not check for a newer version (offline or timeout)", zh: "? \u65E0\u6CD5\u68C0\u67E5\u6700\u65B0\u7248\u672C\uFF08\u79BB\u7EBF\u6216\u8D85\u65F6\uFF09" },
|
|
1123
|
+
profileCurrent: { en: "Profile: {0}", zh: "\u5F53\u524D\u914D\u7F6E\u73AF\u5883 (Profile)\uFF1A{0}" }
|
|
1086
1124
|
};
|
|
1087
1125
|
|
|
1088
1126
|
// packages/cli/i18n/strings/secret.ts
|
|
@@ -1090,8 +1128,8 @@ var secretStrings = {
|
|
|
1090
1128
|
"secret.help": {
|
|
1091
1129
|
en: `Usage:
|
|
1092
1130
|
nolo secret list [--json] List saved secret names (without values; --json outputs machine-readable list)
|
|
1093
|
-
nolo secret get <name>
|
|
1094
|
-
nolo secret set <name> --prompt Set a secret via hidden interactive prompt (TTY
|
|
1131
|
+
nolo secret get <name> [--reveal] Print masked secret preview (default masked; --reveal requires interactive TTY confirmation)
|
|
1132
|
+
nolo secret set <name> --prompt Set a secret via hidden interactive prompt (masked TTY prompt; opens a graphical dialog when no TTY)
|
|
1095
1133
|
nolo secret set <name> --stdin Set a secret securely from stdin (recommended; prevents leaking secrets in argv)
|
|
1096
1134
|
nolo secret set <name> <value|json> Set a secret via argv (legacy; discouraged: exposes secrets in shell history and process list)
|
|
1097
1135
|
nolo secret delete <name> Delete a secret
|
|
@@ -1103,8 +1141,8 @@ var secretStrings = {
|
|
|
1103
1141
|
`,
|
|
1104
1142
|
zh: `\u7528\u6CD5:
|
|
1105
1143
|
nolo secret list [--json] \u5217\u51FA\u5DF2\u4FDD\u5B58\u7684 secret \u540D\u79F0\uFF08\u4E0D\u663E\u793A\u503C\uFF1B--json \u8F93\u51FA\u673A\u5668\u53EF\u8BFB\u6E05\u5355\uFF09
|
|
1106
|
-
nolo secret get <name>
|
|
1107
|
-
nolo secret set <name> --prompt \u901A\u8FC7\u9690\u85CF\u8F93\u5165\u4EA4\u4E92\u8BBE\u7F6E secret\
|
|
1144
|
+
nolo secret get <name> [--reveal] \u6253\u5370\u8131\u654F\u9884\u89C8\uFF08\u9ED8\u8BA4\u8131\u654F\uFF1B\u660E\u6587\u9700\u5728\u4EA4\u4E92\u5F0F TTY \u4E0B\u4F7F\u7528 --reveal \u5E76\u7ECF\u786E\u8BA4\uFF09
|
|
1145
|
+
nolo secret set <name> --prompt \u901A\u8FC7\u9690\u85CF\u8F93\u5165\u4EA4\u4E92\u8BBE\u7F6E secret\uFF08TTY \u4E0B\u4E3A\u63A9\u7801\u8F93\u5165\uFF1B\u65E0 TTY \u65F6\u5F39\u51FA\u56FE\u5F62\u8F93\u5165\u6846\uFF09
|
|
1108
1146
|
nolo secret set <name> --stdin \u4ECE stdin \u5B89\u5168\u8BBE\u7F6E secret\uFF08\u63A8\u8350\uFF1B\u907F\u514D\u901A\u8FC7\u547D\u4EE4\u884C\u53C2\u6570\u6CC4\u9732\u51ED\u636E\uFF09
|
|
1109
1147
|
nolo secret set <name> <value|json> \u901A\u8FC7\u547D\u4EE4\u884C\u53C2\u6570\u8BBE\u7F6E secret\uFF08\u517C\u5BB9\u65E7\u8BED\u6CD5\uFF1B\u4E0D\u63A8\u8350\uFF1A\u51ED\u636E\u4F1A\u66B4\u9732\u5728\u8FDB\u7A0B\u5217\u8868\u4E0E shell \u5386\u53F2\u4E2D\uFF09
|
|
1110
1148
|
nolo secret delete <name> \u5220\u9664\u6307\u5B9A\u7684 secret
|
|
@@ -1135,6 +1173,22 @@ var secretStrings = {
|
|
|
1135
1173
|
en: 'Error: Secret "{0}" not found',
|
|
1136
1174
|
zh: '\u9519\u8BEF: \u672A\u627E\u5230\u540D\u4E3A "{0}" \u7684 secret'
|
|
1137
1175
|
},
|
|
1176
|
+
"secret.getRevealHint": {
|
|
1177
|
+
en: "To view plaintext, run 'nolo secret get {0} --reveal' in an interactive terminal",
|
|
1178
|
+
zh: "\u5982\u9700\u67E5\u770B\u660E\u6587\uFF0C\u8BF7\u5728\u4EA4\u4E92\u5F0F\u7EC8\u7AEF\u4E2D\u8FD0\u884C 'nolo secret get {0} --reveal'"
|
|
1179
|
+
},
|
|
1180
|
+
"secret.getRevealNonTty": {
|
|
1181
|
+
en: "Error: --reveal requires an interactive terminal (TTY) and cannot be used in scripts or automated pipelines",
|
|
1182
|
+
zh: "\u9519\u8BEF: --reveal \u9700\u8981\u4EA4\u4E92\u5F0F\u7EC8\u7AEF (TTY)\uFF0C\u4E0D\u5F97\u5728\u811A\u672C\u6216\u81EA\u52A8\u5316\u6D41\u7A0B\u4E2D\u4F7F\u7528"
|
|
1183
|
+
},
|
|
1184
|
+
"secret.getRevealConfirmPrompt": {
|
|
1185
|
+
en: 'Reveal plaintext for secret "{0}"? (y/N) ',
|
|
1186
|
+
zh: '\u786E\u8BA4\u663E\u793A secret "{0}" \u7684\u660E\u6587\u5185\u5BB9\uFF1F(y/N) '
|
|
1187
|
+
},
|
|
1188
|
+
"secret.getRevealCancelled": {
|
|
1189
|
+
en: "Aborted: secret plaintext was not revealed",
|
|
1190
|
+
zh: "\u5DF2\u53D6\u6D88: \u672A\u663E\u793A secret \u660E\u6587"
|
|
1191
|
+
},
|
|
1138
1192
|
"secret.setNameAndValueRequired": {
|
|
1139
1193
|
en: "Error: Please provide both secret name and value",
|
|
1140
1194
|
zh: "\u9519\u8BEF: \u8BF7\u63D0\u4F9B secret \u540D\u79F0\u4E0E\u503C"
|
|
@@ -1275,6 +1329,10 @@ var secretStrings = {
|
|
|
1275
1329
|
en: "Error: Interactive terminal (TTY) required for --prompt. For automated pipelines use --stdin",
|
|
1276
1330
|
zh: "\u9519\u8BEF: --prompt \u9700\u8981\u4EA4\u4E92\u5F0F\u7EC8\u7AEF (TTY)\u3002\u81EA\u52A8\u5316\u6D41\u6C34\u7EBF\u8BF7\u4F7F\u7528 --stdin"
|
|
1277
1331
|
},
|
|
1332
|
+
"secret.promptGuiUnavailable": {
|
|
1333
|
+
en: "Error: --prompt has no input channel here: stdin is not a terminal and no graphical password dialog (zenity/kdialog/yad) is available in this environment. Pipe the value instead: nolo secret set <name> --stdin (recommended), or run --prompt inside an interactive terminal",
|
|
1334
|
+
zh: "\u9519\u8BEF: --prompt \u5728\u5F53\u524D\u73AF\u5883\u6CA1\u6709\u53EF\u7528\u7684\u8F93\u5165\u901A\u9053\uFF1Astdin \u4E0D\u662F\u7EC8\u7AEF\uFF0C\u4E14\u6CA1\u6709\u53EF\u7528\u7684\u56FE\u5F62\u5BC6\u7801\u8F93\u5165\u6846\uFF08zenity/kdialog/yad\uFF09\u3002\u8BF7\u6539\u7528\u7BA1\u9053\u8F93\u5165\uFF1Anolo secret set <name> --stdin\uFF08\u63A8\u8350\uFF09\uFF0C\u6216\u5728\u4EA4\u4E92\u5F0F\u7EC8\u7AEF\u4E2D\u8FD0\u884C --prompt"
|
|
1335
|
+
},
|
|
1278
1336
|
"secret.promptEmpty": {
|
|
1279
1337
|
en: "Error: Secret input from prompt cannot be empty or pure whitespace",
|
|
1280
1338
|
zh: "\u9519\u8BEF: \u6765\u81EA\u63D0\u793A\u7B26\u7684 secret \u8F93\u5165\u4E0D\u80FD\u4E3A\u7A7A\u6216\u7EAF\u7A7A\u767D"
|
|
@@ -1684,8 +1742,8 @@ var cliSurfaceStrings = {
|
|
|
1684
1742
|
"zh": "\u672A\u77E5\u547D\u4EE4\uFF1A{0}"
|
|
1685
1743
|
},
|
|
1686
1744
|
"cliCooldownHelp": {
|
|
1687
|
-
"en": "Manage per-credential availability cooldowns (429 rate-limit cooldown).\n\nUsage:\n nolo auth cooldown List all active cooldowns\n nolo auth cooldown --clear <credential> Clear one credential's cooldown\n nolo auth cooldown --clear-all Clear all cooldowns\n\nOptions:\n --clear <credential> Clear the cooldown for the given credential\n (e.g. chatgpt / claude / antigravity, or a custom API credential).\n --clear-all Clear every credential cooldown.\n --help Show this help.\n\nNo argument lists the currently cooled credentials with their human-readable\nrecovery time and remaining duration.\n",
|
|
1688
|
-
"zh": "\u7BA1\u7406\u5404\u51ED\u636E\u7684\u53EF\u7528\u6027\u51B7\u5374\uFF08429 \u9650\u6D41\u51B7\u5374\uFF09\u3002\n\n\u7528\u6CD5\uFF1A\n nolo auth cooldown \u5217\u51FA\u6240\u6709\u751F\u6548\u4E2D\u7684\u51B7\u5374\n nolo auth cooldown --clear <credential> \u6E05\u9664\u6307\u5B9A\u51ED\u636E\u7684\u51B7\u5374\n nolo auth cooldown --clear-all \u6E05\u9664\u6240\u6709\u51B7\u5374\n\n\u9009\u9879\uFF1A\n --clear <credential> \u6E05\u9664\u6307\u5B9A\u51ED\u636E\u7684\u51B7\u5374\n \uFF08\u4F8B\u5982 chatgpt / claude / antigravity\uFF0C\u6216\u81EA\u5B9A\u4E49 API \u51ED\u636E\uFF09\u3002\n --clear-all \u6E05\u9664\u5168\u90E8\u51ED\u636E\u51B7\u5374\u3002\n --help \u663E\u793A\u6B64\u5E2E\u52A9\u3002\n\n\u4E0D\u5E26\u53C2\u6570\u65F6\u5217\u51FA\u5904\u4E8E\u51B7\u5374\u4E2D\u7684\u51ED\u636E\u3001\u6062\u590D\u65F6\u95F4\u548C\u5269\u4F59\u65F6\u957F\u3002\n"
|
|
1745
|
+
"en": "Manage per-credential availability cooldowns (429 rate-limit cooldown).\n\nNote: cooldowns no longer block requests - quota/cooldown is reference info only\nand every dispatch still goes upstream. This command is for reading that reference\ninfo and for clearing stale entries (e.g. after topping up an account).\n\nUsage:\n nolo auth cooldown List all active cooldowns\n nolo auth cooldown --clear <credential> Clear one credential's cooldown\n nolo auth cooldown --clear-all Clear all cooldowns\n\nOptions:\n --clear <credential> Clear the cooldown for the given credential\n (e.g. chatgpt / claude / antigravity, or a custom API credential).\n --clear-all Clear every credential cooldown.\n --help Show this help.\n\nNo argument lists the currently cooled credentials with their human-readable\nrecovery time and remaining duration.\n",
|
|
1746
|
+
"zh": "\u7BA1\u7406\u5404\u51ED\u636E\u7684\u53EF\u7528\u6027\u51B7\u5374\uFF08429 \u9650\u6D41\u51B7\u5374\uFF09\u3002\n\n\u8BF4\u660E\uFF1A\u51B7\u5374\u4E0D\u518D\u62E6\u622A\u8BF7\u6C42\u2014\u2014\u989D\u5EA6/\u51B7\u5374\u53EA\u4F5C\u53C2\u8003\u4FE1\u606F\uFF0C\u4EFB\u4F55\u6D3E\u53D1\u90FD\u4F1A\u76F4\u8FBE\u4E0A\u6E38\u3002\n\u6B64\u547D\u4EE4\u7528\u4E8E\u67E5\u770B\u8FD9\u4EFD\u53C2\u8003\u4FE1\u606F\uFF0C\u4EE5\u53CA\u6E05\u7406\u9648\u65E7\u8BB0\u5F55\uFF08\u4F8B\u5982\u5145\u503C\u540E\uFF09\u3002\n\n\u7528\u6CD5\uFF1A\n nolo auth cooldown \u5217\u51FA\u6240\u6709\u751F\u6548\u4E2D\u7684\u51B7\u5374\n nolo auth cooldown --clear <credential> \u6E05\u9664\u6307\u5B9A\u51ED\u636E\u7684\u51B7\u5374\n nolo auth cooldown --clear-all \u6E05\u9664\u6240\u6709\u51B7\u5374\n\n\u9009\u9879\uFF1A\n --clear <credential> \u6E05\u9664\u6307\u5B9A\u51ED\u636E\u7684\u51B7\u5374\n \uFF08\u4F8B\u5982 chatgpt / claude / antigravity\uFF0C\u6216\u81EA\u5B9A\u4E49 API \u51ED\u636E\uFF09\u3002\n --clear-all \u6E05\u9664\u5168\u90E8\u51ED\u636E\u51B7\u5374\u3002\n --help \u663E\u793A\u6B64\u5E2E\u52A9\u3002\n\n\u4E0D\u5E26\u53C2\u6570\u65F6\u5217\u51FA\u5904\u4E8E\u51B7\u5374\u4E2D\u7684\u51ED\u636E\u3001\u6062\u590D\u65F6\u95F4\u548C\u5269\u4F59\u65F6\u957F\u3002\n"
|
|
1689
1747
|
},
|
|
1690
1748
|
"cliCooldownClearedCount": {
|
|
1691
1749
|
"en": "Cleared {0} credential cooldown(s).",
|
|
@@ -1908,6 +1966,30 @@ var commonStrings = {
|
|
|
1908
1966
|
en: 'This turn failed, but the dialog is kept. Send another message (or say "continue") to keep going in the same conversation.',
|
|
1909
1967
|
zh: "\u672C\u8F6E\u5931\u8D25\u4E86\uFF0C\u4F46\u5BF9\u8BDD\u5DF2\u4FDD\u7559\u3002\u76F4\u63A5\u518D\u8BF4\u4E00\u53E5\uFF08\u6216\u8BF4\u300C\u7EE7\u7EED\u300D\uFF09\u5373\u53EF\u5728\u540C\u4E00\u5BF9\u8BDD\u91CC\u63A5\u7740\u804A\u3002"
|
|
1910
1968
|
},
|
|
1969
|
+
contextRefusalBudgetDetail: {
|
|
1970
|
+
en: "History {0} / budget {1}. ",
|
|
1971
|
+
zh: "\u5386\u53F2 {0} / \u9884\u7B97 {1}\uFF0C"
|
|
1972
|
+
},
|
|
1973
|
+
contextRefusalSummaryBusy: {
|
|
1974
|
+
en: "Not sent: summary channel busy. {0}Retry in about 30 seconds.",
|
|
1975
|
+
zh: "\u6CA1\u53D1\u51FA\u53BB\uFF1A\u6458\u8981\u901A\u9053\u5FD9\u3002{0}\u7EA6 30 \u79D2\u540E\u91CD\u8BD5\u5373\u53EF\u3002"
|
|
1976
|
+
},
|
|
1977
|
+
contextRefusalSummaryFailed: {
|
|
1978
|
+
en: "Not sent: summary compaction failed. {0}Retry, or run /compact first.",
|
|
1979
|
+
zh: "\u6CA1\u53D1\u51FA\u53BB\uFF1A\u6458\u8981\u538B\u7F29\u5931\u8D25\u3002{0}\u53EF\u91CD\u8BD5\uFF0C\u6216\u5148 /compact\u3002"
|
|
1980
|
+
},
|
|
1981
|
+
contextRefusalNoCompactableContent: {
|
|
1982
|
+
en: "Not sent: history cannot shrink further. Run /compact, or switch to a model with a larger context window.",
|
|
1983
|
+
zh: "\u6CA1\u53D1\u51FA\u53BB\uFF1A\u5386\u53F2\u538B\u4E0D\u52A8\u4E86\u3002\u5148 /compact\uFF0C\u6216\u6362\u66F4\u5927\u7A97\u53E3\u7684\u6A21\u578B\u3002"
|
|
1984
|
+
},
|
|
1985
|
+
contextRefusalSingleMessageTooLarge: {
|
|
1986
|
+
en: "Not sent: this message alone is {0}, meeting or exceeding the {1} budget. Split it, or use a model with a larger context window.",
|
|
1987
|
+
zh: "\u6CA1\u53D1\u51FA\u53BB\uFF1A\u8FD9\u6761\u6D88\u606F\u672C\u8EAB {0}\uFF0C\u8FBE\u5230\u6216\u8D85\u8FC7\u53EF\u7528\u9884\u7B97 {1}\u3002\u62C6\u5F00\u53D1\u9001\uFF0C\u6216\u6362\u66F4\u5927\u7A97\u53E3\u7684\u6A21\u578B\u3002"
|
|
1988
|
+
},
|
|
1989
|
+
contextPreflightBlockedHint: {
|
|
1990
|
+
en: "Not sent: the context does not fit. Your input is kept; retry or run /compact.",
|
|
1991
|
+
zh: "\u6CA1\u53D1\u51FA\u53BB\uFF1A\u4E0A\u4E0B\u6587\u88C5\u4E0D\u4E0B\u3002\u4F60\u7684\u8BDD\u5DF2\u4FDD\u7559\uFF0C\u91CD\u8BD5\u6216 /compact\u3002"
|
|
1992
|
+
},
|
|
1911
1993
|
dialogNotSavedHint: {
|
|
1912
1994
|
en: "This turn did not create a dialog. Your next message will start a new conversation \u2014 restate what you need.",
|
|
1913
1995
|
zh: "\u672C\u8F6E\u6CA1\u6709\u5EFA\u6210\u5BF9\u8BDD\u3002\u4E0B\u4E00\u53E5\u4F1A\u662F\u65B0\u5BF9\u8BDD\u2014\u2014\u8BF7\u628A\u4F60\u60F3\u505A\u7684\u4E8B\u518D\u8BF4\u4E00\u904D\u3002"
|
|
@@ -2018,6 +2100,10 @@ var commonStrings = {
|
|
|
2018
2100
|
en: "Compacting history\u2026 (Esc/Ctrl+C to cancel)",
|
|
2019
2101
|
zh: "\u6B63\u5728\u538B\u7F29\u5386\u53F2\u8BB0\u5F55\u2026\uFF08Esc/Ctrl+C \u53D6\u6D88\uFF09"
|
|
2020
2102
|
},
|
|
2103
|
+
contextCompactingRetry: {
|
|
2104
|
+
en: "Compacting history\u2026 (summary channel busy, retry {0}/{1}) (Esc/Ctrl+C to cancel)",
|
|
2105
|
+
zh: "\u6B63\u5728\u538B\u7F29\u5386\u53F2\u8BB0\u5F55\u2026\uFF08\u6458\u8981\u901A\u9053\u5FD9\uFF0C\u91CD\u8BD5 {0}/{1}\uFF09\uFF08Esc/Ctrl+C \u53D6\u6D88\uFF09"
|
|
2106
|
+
},
|
|
2021
2107
|
waitingForModel: {
|
|
2022
2108
|
en: "Waiting for the model\u2026",
|
|
2023
2109
|
zh: "\u6B63\u5728\u7B49\u5F85\u6A21\u578B\u54CD\u5E94\u2026"
|
|
@@ -2059,10 +2145,12 @@ var commonStrings = {
|
|
|
2059
2145
|
zh: "\uFF08\u4E0A\u6E38\u7EA6 {0}\u540E\u590D\u4F4D\uFF09"
|
|
2060
2146
|
},
|
|
2061
2147
|
// 第 2 行:{0} = 冷却截止(本地时间,当天 HH:MM / 跨天 MM-DD HH:MM),
|
|
2062
|
-
// {1} =
|
|
2148
|
+
// {1} = 复位提示或空串。无 cooldownUntil 时整行省略。
|
|
2149
|
+
// 冷却只作参考:额度信息不再有否决权,请求不会被本地拦下,故文案不得承诺
|
|
2150
|
+
// 「每 N 分钟自动试探一次」——那套 gate 节流已随否决权一并拆除。
|
|
2063
2151
|
localRunRateLimitCooldown: {
|
|
2064
|
-
en: " Cooldown until {0}{1};
|
|
2065
|
-
zh: " \u51B7\u5374\u81F3 {0}{1}\uFF1B\
|
|
2152
|
+
en: " Cooldown until {0}{1}; requests are not blocked locally by this timestamp \u2014 it is only a reference for when the upstream may recover (it may not have recovered by then).",
|
|
2153
|
+
zh: " \u51B7\u5374\u81F3 {0}{1}\uFF1B\u672C\u5730\u4E0D\u636E\u6B64\u62E6\u622A\u8BF7\u6C42\uFF0C\u8BE5\u65F6\u523B\u4EC5\u4F5C\u53C2\u8003\uFF08\u4E0A\u6E38\u672A\u5FC5\u5C4A\u65F6\u6062\u590D\uFF09\u3002"
|
|
2066
2154
|
},
|
|
2067
2155
|
// 第 3 行:三个出口(换 agent / 强制走服务器 / 已充值清冷却)。
|
|
2068
2156
|
localRunRateLimitExits: {
|
|
@@ -2106,6 +2194,14 @@ var commonStrings = {
|
|
|
2106
2194
|
en: "Used Skill",
|
|
2107
2195
|
zh: "\u5DF2\u52A0\u8F7D\u6280\u80FD"
|
|
2108
2196
|
},
|
|
2197
|
+
loadSkillLabel: {
|
|
2198
|
+
en: "Load Skill",
|
|
2199
|
+
zh: "\u52A0\u8F7D\u6280\u80FD"
|
|
2200
|
+
},
|
|
2201
|
+
unnamedSkillReference: {
|
|
2202
|
+
en: "unknown reference",
|
|
2203
|
+
zh: "\u672A\u77E5\u5F15\u7528"
|
|
2204
|
+
},
|
|
2109
2205
|
// Background-process rows in the same zone (`❯ npm run dev · 已运行 3m · pid 123`).
|
|
2110
2206
|
// The pid is how the user targets /stop, so it is a fact, not decoration.
|
|
2111
2207
|
procZonePid: { en: "pid {0}", zh: "pid {0}" },
|
|
@@ -2626,6 +2722,15 @@ var commonStrings = {
|
|
|
2626
2722
|
};
|
|
2627
2723
|
|
|
2628
2724
|
// packages/cli/i18n/index.ts
|
|
2725
|
+
var controlMessageStrings = {
|
|
2726
|
+
controlQueued: { en: "queued", zh: "\u5DF2\u5165\u961F" },
|
|
2727
|
+
controlEnqueued: { en: "[enqueued {0}]", zh: "[\u5DF2\u5165\u961F {0}]" },
|
|
2728
|
+
controlContinued: { en: "continued", zh: "\u5DF2\u7EED\u8DD1" },
|
|
2729
|
+
controlConsumed: { en: "consumed", zh: "\u5DF2\u6D88\u8D39" },
|
|
2730
|
+
controlRun: { en: "run", zh: "\u4EFB\u52A1" },
|
|
2731
|
+
controlTarget: { en: "target", zh: "\u76EE\u6807" },
|
|
2732
|
+
controlMessage: { en: "message", zh: "\u6D88\u606F" }
|
|
2733
|
+
};
|
|
2629
2734
|
var STRINGS = {
|
|
2630
2735
|
...turnStrings,
|
|
2631
2736
|
...sessionStrings,
|
|
@@ -2638,7 +2743,8 @@ var STRINGS = {
|
|
|
2638
2743
|
...docCommandStrings,
|
|
2639
2744
|
...cliSurfaceStrings,
|
|
2640
2745
|
...dialogCommandStrings,
|
|
2641
|
-
...commonStrings
|
|
2746
|
+
...commonStrings,
|
|
2747
|
+
...controlMessageStrings
|
|
2642
2748
|
};
|
|
2643
2749
|
function t(key, ...params) {
|
|
2644
2750
|
const text = STRINGS[key][getCliLocale()];
|
|
@@ -2778,6 +2884,10 @@ var COMMAND_DESCRIPTIONS = {
|
|
|
2778
2884
|
en: "Run an agent",
|
|
2779
2885
|
zh: "\u8FD0\u884C\u667A\u80FD\u4F53"
|
|
2780
2886
|
},
|
|
2887
|
+
"agent recover-prepared-writer": {
|
|
2888
|
+
en: "Revoke an exact fenced-launch-v1 prepared writer attempt (--attempt-id required; no force)",
|
|
2889
|
+
zh: "\u64A4\u9500\u67D0\u4E2A\u7CBE\u786E\u5339\u914D\u7684 fenced-launch-v1 \u5DF2\u51C6\u5907\u5199\u5165\u8005\u5C1D\u8BD5\uFF08\u5FC5\u987B\u5E26 --attempt-id\uFF0C\u4E0D\u652F\u6301\u5F3A\u5236\uFF09"
|
|
2890
|
+
},
|
|
2781
2891
|
"agent ps": {
|
|
2782
2892
|
en: "List active and recent local agent runs (--json for machine-readable output)",
|
|
2783
2893
|
zh: "\u5217\u51FA\u6D3B\u8DC3\u4E0E\u8FD1\u671F\u7684\u672C\u5730\u667A\u80FD\u4F53\u8FD0\u884C\uFF08--json \u8F93\u51FA\u673A\u5668\u53EF\u8BFB\u683C\u5F0F\uFF09"
|
|
@@ -2882,6 +2992,11 @@ var COMMAND_DESCRIPTIONS = {
|
|
|
2882
2992
|
en: "Read compact dialog status",
|
|
2883
2993
|
zh: "\u8BFB\u53D6\u7CBE\u7B80\u7684\u5BF9\u8BDD\u72B6\u6001"
|
|
2884
2994
|
},
|
|
2995
|
+
"dialog notify": {
|
|
2996
|
+
// 与 dialogInternalCommandEntries 的 registry 描述逐字一致(门禁按字节比对)。
|
|
2997
|
+
en: "Deliver a notification into a live CLI dialog's existing queue (--message/--file, --idempotency-key; --status for the receipt)",
|
|
2998
|
+
zh: "\u5411\u6B63\u5728\u8FD0\u884C\u7684 CLI \u5BF9\u8BDD\u961F\u5217\u6295\u9012\u901A\u77E5\uFF08--message/--file\u3001--idempotency-key\uFF1B--status \u67E5\u6295\u9012\u56DE\u6267\uFF09"
|
|
2999
|
+
},
|
|
2885
3000
|
"doc create": {
|
|
2886
3001
|
en: "Create a normal doc",
|
|
2887
3002
|
zh: "\u521B\u5EFA\u666E\u901A\u6587\u6863"
|
|
@@ -3150,6 +3265,10 @@ var COMMAND_DESCRIPTIONS = {
|
|
|
3150
3265
|
en: "Evaluate JS in a tab, user-approved per call (--tab <id> --expr <js> [--await] [--timeout-ms N]) (Compatibility alias of `nolo browser eval`)",
|
|
3151
3266
|
zh: "\u5728\u6807\u7B7E\u9875\u4E2D\u6267\u884C JS\uFF0C\u6BCF\u6B21\u8C03\u7528\u9700\u7528\u6237\u6279\u51C6\uFF08--tab <id> --expr <js> [--await] [--timeout-ms N]\uFF09\uFF08`nolo browser eval` \u7684\u517C\u5BB9\u522B\u540D\uFF09"
|
|
3152
3267
|
},
|
|
3268
|
+
"ci cancel": {
|
|
3269
|
+
en: "Cancel an alpha deploy job",
|
|
3270
|
+
zh: "\u53D6\u6D88 alpha \u90E8\u7F72\u4EFB\u52A1"
|
|
3271
|
+
},
|
|
3153
3272
|
"ci status": {
|
|
3154
3273
|
en: "Show recent nolo-ci deploy jobs (alpha / main)",
|
|
3155
3274
|
zh: "\u67E5\u770B\u6700\u8FD1\u7684 nolo-ci \u90E8\u7F72\u4EFB\u52A1\uFF08alpha / main\uFF09"
|
|
@@ -3158,6 +3277,10 @@ var COMMAND_DESCRIPTIONS = {
|
|
|
3158
3277
|
en: "Show dialog tokens, recorded duration and speed by basis",
|
|
3159
3278
|
zh: "\u663E\u793A\u5BF9\u8BDD\u7684 token \u6570\u3001\u8BB0\u5F55\u65F6\u957F\u4E0E\u6309\u57FA\u51C6\u8BA1\u7B97\u7684\u901F\u5EA6"
|
|
3160
3279
|
},
|
|
3280
|
+
"usage": {
|
|
3281
|
+
en: "Summarize local token usage by day/provider/model/agent (reads DayStats via LevelDB iterator)",
|
|
3282
|
+
zh: "\u6309\u65E5\u3001\u63D0\u4F9B\u5546\u3001\u6A21\u578B\u548C\u667A\u80FD\u4F53\u6C47\u603B\u672C\u5730 token \u7528\u91CF\uFF08\u901A\u8FC7 LevelDB \u8FED\u4EE3\u5668\u8BFB\u53D6 DayStats\uFF09"
|
|
3283
|
+
},
|
|
3161
3284
|
"login": {
|
|
3162
3285
|
en: "Log in to Nolo",
|
|
3163
3286
|
zh: "\u767B\u5F55 Nolo"
|
|
@@ -3300,6 +3423,15 @@ function agentRunStatusWord(status) {
|
|
|
3300
3423
|
}
|
|
3301
3424
|
function agentRunCardLabels() {
|
|
3302
3425
|
return {
|
|
3426
|
+
controlMessage: {
|
|
3427
|
+
queued: t("controlQueued"),
|
|
3428
|
+
enqueued: (count) => t("controlEnqueued", String(count)),
|
|
3429
|
+
continued: t("controlContinued"),
|
|
3430
|
+
consumed: t("controlConsumed"),
|
|
3431
|
+
run: t("controlRun"),
|
|
3432
|
+
target: t("controlTarget"),
|
|
3433
|
+
message: t("controlMessage")
|
|
3434
|
+
},
|
|
3303
3435
|
runStatus: t("runStatusLabel"),
|
|
3304
3436
|
runStarted: t("runStartedLabel"),
|
|
3305
3437
|
runStopped: t("runStoppedLabel"),
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveAgentCallPlan
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-KQSYAIZR.js";
|
|
4
4
|
import {
|
|
5
5
|
SUBSCRIPTION_OAUTH_PROVIDERS
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-SY3C4SQ7.js";
|
|
7
7
|
import {
|
|
8
8
|
findModelConfig,
|
|
9
9
|
getProviderByModelName
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-2UCBGYO4.js";
|
|
11
11
|
import {
|
|
12
12
|
asTrimmedLowercaseString
|
|
13
13
|
} from "./chunk-QSJ3HFEF.js";
|
|
@@ -1,32 +1,101 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DEFAULT_AGENT_BASE_POLICY,
|
|
3
3
|
DEFAULT_USER_PREFERENCE_PROFILE,
|
|
4
|
-
|
|
5
|
-
resolveAgentSkillConfig,
|
|
4
|
+
isAccountOnDemandWorkflowSkill,
|
|
6
5
|
resolveUserEnabledSkills
|
|
7
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-UB3D4TRQ.js";
|
|
7
|
+
import {
|
|
8
|
+
collectAgentSkillConfigIssues,
|
|
9
|
+
describeAgentSkillModeValue,
|
|
10
|
+
isAgentSkillDisabled,
|
|
11
|
+
resolveAgentSkillConfig
|
|
12
|
+
} from "./chunk-FS2XP5D7.js";
|
|
8
13
|
import {
|
|
9
14
|
resolveBuiltinSkillEntry,
|
|
10
15
|
resolveBuiltinSkillPage,
|
|
11
16
|
resolveSkillGraphFromRoots
|
|
12
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-PJCIP64Z.js";
|
|
13
18
|
import {
|
|
14
19
|
parseSkillDocProtocol
|
|
15
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-W6RFEDN4.js";
|
|
21
|
+
|
|
22
|
+
// packages/ai/skills/agentSkillPreferenceDiagnostics.ts
|
|
23
|
+
var hasOwn = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
|
|
24
|
+
var resolveAgentSkillPreferenceSource = (preferences) => {
|
|
25
|
+
if (!preferences || typeof preferences !== "object") {
|
|
26
|
+
return { source: "empty", field: null };
|
|
27
|
+
}
|
|
28
|
+
if (hasOwn(preferences, "enabledSkills")) {
|
|
29
|
+
return { source: "settings-record", field: "enabledSkills" };
|
|
30
|
+
}
|
|
31
|
+
if (hasOwn(preferences, "enabledPromptSkills")) {
|
|
32
|
+
return { source: "legacy-field", field: "enabledPromptSkills" };
|
|
33
|
+
}
|
|
34
|
+
return { source: "empty", field: null };
|
|
35
|
+
};
|
|
36
|
+
var buildAgentSkillPreferenceDiagnostic = (input) => {
|
|
37
|
+
const { source, field } = resolveAgentSkillPreferenceSource(input.preferences);
|
|
38
|
+
const config = resolveAgentSkillConfig(input.agentConfig);
|
|
39
|
+
const agentSkillModes = {};
|
|
40
|
+
for (const slug of Object.keys(config).sort()) {
|
|
41
|
+
agentSkillModes[slug] = config[slug];
|
|
42
|
+
}
|
|
43
|
+
const discardedSkills = collectAgentSkillConfigIssues(input.agentConfig).map(
|
|
44
|
+
(issue) => ({
|
|
45
|
+
slug: issue.slug,
|
|
46
|
+
value: describeAgentSkillModeValue(issue.value),
|
|
47
|
+
reason: issue.reason
|
|
48
|
+
})
|
|
49
|
+
);
|
|
50
|
+
return {
|
|
51
|
+
event: "agent_skill_preference_resolved",
|
|
52
|
+
preferenceSource: source,
|
|
53
|
+
preferenceField: field,
|
|
54
|
+
enabledSkills: [...input.enabledSkills],
|
|
55
|
+
enabledSkillCount: input.enabledSkills.length,
|
|
56
|
+
agentSkillModes,
|
|
57
|
+
agentSkillCount: Object.keys(agentSkillModes).length,
|
|
58
|
+
discardedSkills,
|
|
59
|
+
discardedSkillCount: discardedSkills.length
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
var DIAGNOSTIC_PREFIX = "[nolo.skill.diagnostics] ";
|
|
63
|
+
var seenSignatures = /* @__PURE__ */ new Set();
|
|
64
|
+
var reportAgentSkillPreferenceDiagnostic = (diagnostic, sink) => {
|
|
65
|
+
const signature = JSON.stringify(diagnostic);
|
|
66
|
+
if (seenSignatures.has(signature)) return false;
|
|
67
|
+
seenSignatures.add(signature);
|
|
68
|
+
const write = sink ?? ((line) => {
|
|
69
|
+
process.stderr.write(line);
|
|
70
|
+
});
|
|
71
|
+
write(`${DIAGNOSTIC_PREFIX}${signature}
|
|
72
|
+
`);
|
|
73
|
+
return true;
|
|
74
|
+
};
|
|
16
75
|
|
|
17
76
|
// packages/ai/skills/userSkillRuntime.ts
|
|
18
77
|
async function resolveUserSkillRuntime(agentConfig, preferences) {
|
|
19
78
|
const effectiveConfig = agentConfig && typeof agentConfig === "object" ? "rawRecord" in agentConfig && agentConfig.rawRecord && typeof agentConfig.rawRecord === "object" ? agentConfig.rawRecord : agentConfig : null;
|
|
20
79
|
const disabledSlugs = /* @__PURE__ */ new Set();
|
|
21
|
-
|
|
22
|
-
|
|
80
|
+
const requiredSlugs = /* @__PURE__ */ new Set();
|
|
81
|
+
for (const [identifier, mode] of Object.entries(resolveAgentSkillConfig(effectiveConfig))) {
|
|
23
82
|
const entry = resolveBuiltinSkillEntry(identifier);
|
|
24
|
-
if (entry)
|
|
83
|
+
if (!entry) continue;
|
|
84
|
+
if (mode === "disabled") disabledSlugs.add(entry.slug);
|
|
85
|
+
if (mode === "required") requiredSlugs.add(entry.slug);
|
|
25
86
|
}
|
|
87
|
+
const enabledSkills = resolveUserEnabledSkills(preferences);
|
|
88
|
+
reportAgentSkillPreferenceDiagnostic(
|
|
89
|
+
buildAgentSkillPreferenceDiagnostic({
|
|
90
|
+
agentConfig: effectiveConfig,
|
|
91
|
+
preferences,
|
|
92
|
+
enabledSkills
|
|
93
|
+
})
|
|
94
|
+
);
|
|
26
95
|
const graph = await resolveSkillGraphFromRoots({
|
|
27
|
-
roots:
|
|
96
|
+
roots: enabledSkills.map((identifier) => ({
|
|
28
97
|
identifier,
|
|
29
|
-
mode: "required"
|
|
98
|
+
mode: isAccountOnDemandWorkflowSkill(identifier) && !requiredSlugs.has(identifier) ? "recommended" : "required"
|
|
30
99
|
})),
|
|
31
100
|
loadPage: async (identifier) => {
|
|
32
101
|
const entry = resolveBuiltinSkillEntry(identifier);
|
|
@@ -45,7 +114,7 @@ async function resolveUserSkillRuntime(agentConfig, preferences) {
|
|
|
45
114
|
const skillPromptPatches = /* @__PURE__ */ new Set();
|
|
46
115
|
const seen = /* @__PURE__ */ new Set();
|
|
47
116
|
for (const visit of graph.visits) {
|
|
48
|
-
if (seen.has(visit.dbKey)) continue;
|
|
117
|
+
if (visit.mode !== "required" || seen.has(visit.dbKey)) continue;
|
|
49
118
|
seen.add(visit.dbKey);
|
|
50
119
|
const page = contentByKey.get(visit.dbKey);
|
|
51
120
|
const patch = (visit.meta?.skillConfig?.promptPatch || parseSkillDocProtocol(page?.content ?? "", visit.meta).content).trim();
|