nolo-cli 0.201.0-alpha.2 → 0.202.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-BNYZLAN6.js → _executeModel-IPRTPSW7.js} +34 -33
- package/{agentDeleteCommand-4V4YSAXS.js → agentDeleteCommand-6HFA37FH.js} +49 -47
- package/{agentEmailCommands-EYIQEH6Z.js → agentEmailCommands-TDBNVIAT.js} +51 -49
- package/{agentListCommands-2KGUT7UB.js → agentListCommands-YSQSDQM3.js} +81 -45
- package/{agentMachineCommands-WUN47ILO.js → agentMachineCommands-5W23BLFR.js} +28 -26
- package/{agentProviderCommands-T6E3JCR6.js → agentProviderCommands-5ALOQLE5.js} +2 -2
- package/{agentRecordCommands-XL2CON36.js → agentRecordCommands-SRIMZZFK.js} +47 -45
- package/{agentRunCommand-R237ZGMQ.js → agentRunCommand-BLYHIN6S.js} +49 -47
- package/{agentRunControl-6HHESKDB.js → agentRunControl-ABDUPJLX.js} +10 -5
- package/{agentRuntimeLocal-XLLWFAVI.js → agentRuntimeLocal-FE66EBRC.js} +24 -22
- package/{agentSlice-Z5NKGMB7.js → agentSlice-BFDKYW6H.js} +4 -3
- package/{appDeleteCommands-IPF2VI3W.js → appDeleteCommands-BEVZGCAG.js} +29 -27
- package/{appDeployCommands-IBQ7GUXO.js → appDeployCommands-E7TFCHSP.js} +29 -27
- package/{appDeployStatusCommands-6ESVU6XE.js → appDeployStatusCommands-MYY5Z5G3.js} +29 -27
- package/{appGetCommands-VTSYTM4V.js → appGetCommands-HNED5JUU.js} +29 -27
- package/{appListCommands-VCP5TUX7.js → appListCommands-MSBFWPIY.js} +29 -27
- package/{authCommand-RV5MQDWN.js → authCommand-W34UWJGR.js} +14 -13
- package/{builtinSkillRegistry-7RAJP7FD.js → builtinSkillRegistry-NJVHQIKY.js} +1 -1
- package/{chromeOpsCommands-BA6CS4DI.js → chromeOpsCommands-USKE4B4K.js} +15 -4
- package/{chunk-RE3B2OCC.js → chunk-266E37EL.js} +69 -14
- package/chunk-2BMURXSB.js +1863 -0
- package/{chunk-NABJEYPJ.js → chunk-2Q3LOAFE.js} +38 -3
- package/{chunk-EOLPKHSB.js → chunk-326HCB6L.js} +28 -24
- package/{chunk-4CEAZRZ4.js → chunk-33W4IFUU.js} +1 -1
- package/{chunk-V3MGT3RF.js → chunk-3CWF2EUZ.js} +8 -8
- package/{chunk-G6OOUQWJ.js → chunk-4KB6WQUL.js} +2 -0
- package/{chunk-DYQXB46J.js → chunk-4KPB3KWX.js} +2 -2
- package/{chunk-WAZ6BTSC.js → chunk-5E4FSR4J.js} +1 -1
- package/{chunk-PVD7CRYV.js → chunk-6I7ZP7KJ.js} +3 -3
- package/chunk-6UBGXX2W.js +12 -0
- package/{chunk-ZBCBFOWC.js → chunk-A2ZMIRLN.js} +2 -2
- package/{chunk-Z646E5YH.js → chunk-ASG7VWPK.js} +3 -3
- package/{chunk-QWVGFBOQ.js → chunk-BLFZULEQ.js} +3 -3
- package/{chunk-RRHJJUA3.js → chunk-BRZTSZBG.js} +174 -100
- package/{chunk-JIFYXQRD.js → chunk-BTYQAODF.js} +26 -8
- package/{chunk-KORCRPLO.js → chunk-C7PKPHK6.js} +334 -12
- package/{chunk-6WZQGT5X.js → chunk-CJ37ZMCQ.js} +6 -2
- package/{chunk-VHGD6FHV.js → chunk-CKAHAVMK.js} +40 -10
- package/{chunk-UNOILAZP.js → chunk-CLTGWJVT.js} +76 -4
- package/{chunk-Q6RMLYSA.js → chunk-CMLBKYEI.js} +4 -2
- package/{chunk-NVOYW6H4.js → chunk-CQHMBWZH.js} +12 -8
- package/{chunk-7KWPNGVJ.js → chunk-CTZ4O3XD.js} +1 -1
- package/{chunk-OHRDHS4N.js → chunk-CVCRAO6Q.js} +9 -4
- package/{chunk-26CRLZFD.js → chunk-D57YYGMD.js} +2 -2
- package/{chunk-TEC5UHQK.js → chunk-DHJXDGC3.js} +2 -2
- package/{chunk-QYOB7RVA.js → chunk-DKZJJ2NQ.js} +3 -2
- package/{chunk-4YX7VQOC.js → chunk-E2FC5RMU.js} +17 -14
- package/{chunk-EH4MNUMF.js → chunk-ETTDZBK5.js} +4 -4
- package/{chunk-ZWQUWF6W.js → chunk-G7Y4GXTY.js} +8 -14
- package/{chunk-5KTQVMCX.js → chunk-GOO6G4PY.js} +85 -0
- package/{chunk-FMOZ57LN.js → chunk-H7HWWNJB.js} +1 -1
- package/{chunk-SW5AAI5D.js → chunk-HKMPGHFZ.js} +5 -5
- package/{chunk-H44LQSZ2.js → chunk-HKWGI3TM.js} +178 -311
- package/{chunk-BBGYSMUE.js → chunk-JH7KMNGT.js} +143 -19
- package/{chunk-YXMZHGNA.js → chunk-KDUYNEJ5.js} +33 -16
- package/{chunk-FEKMTBKJ.js → chunk-LAYFVGS4.js} +192 -55
- package/{chunk-O5V7QQAF.js → chunk-LEX6DEH4.js} +114 -2
- package/{chunk-BTBT2566.js → chunk-MNUOMXJH.js} +412 -9
- package/{chunk-N7E3LQ4A.js → chunk-MZXWSY4E.js} +1 -1
- package/{chunk-ZQ3EAOY3.js → chunk-NTLJGRAT.js} +1 -1
- package/{chunk-BUXH3H5M.js → chunk-OIB4GARE.js} +3743 -4848
- package/{chunk-WFUIXNKC.js → chunk-P4YLK2OD.js} +3 -3
- package/chunk-PRJ473FK.js +63 -0
- package/{chunk-2SHLT6JB.js → chunk-Q7GNBUT4.js} +2 -2
- package/{chunk-C2UXCAMB.js → chunk-RIKSN62L.js} +3 -3
- package/{chunk-GTP6VNWH.js → chunk-RQ22OZD7.js} +3 -3
- package/{chunk-H7NIQGTU.js → chunk-RS66RJLA.js} +2 -2
- package/{chunk-GC64WGMD.js → chunk-SM3NSZJV.js} +16 -5
- package/{chunk-QKDMI22S.js → chunk-SSK4WNJA.js} +1 -1
- package/{chunk-6MAFLMAO.js → chunk-SUBNV2JH.js} +3 -3
- package/{chunk-HLAL63BZ.js → chunk-T43B7LB2.js} +1 -1
- package/{chunk-HTLIKE5U.js → chunk-TWVVTUNG.js} +2 -2
- package/{chunk-X3RWBJDQ.js → chunk-U7HTU2S7.js} +1 -1
- package/{chunk-76YUTLOT.js → chunk-UIOEHFF6.js} +1 -1
- package/{chunk-IIX6VWLW.js → chunk-VCFU3BO5.js} +224 -38
- package/{chunk-QU3TLYBR.js → chunk-VEUSD6OF.js} +35 -11
- package/{chunk-4YMD7B4Y.js → chunk-WPOKOKZA.js} +2 -2
- package/{chunk-A5VR65AE.js → chunk-WPQGLJHU.js} +4 -4
- package/{chunk-K6TZSON4.js → chunk-WTKYP6QO.js} +19 -5
- package/{chunk-ZSO5B6SW.js → chunk-Y2WUYX4I.js} +9 -0
- package/{chunk-A3SXTJDE.js → chunk-YAGFPXOX.js} +14 -14
- package/{chunk-TVGX5QIN.js → chunk-YUA6OAH5.js} +2 -2
- package/{chunk-NYE2INIO.js → chunk-YV2RSLM4.js} +13 -13
- package/{chunk-MJWUBTK7.js → chunk-YZGNKHUM.js} +2 -2
- package/{commandRegistry-YFXWA5SF.js → commandRegistry-ZU3RX7A2.js} +87 -67
- package/{contentThunks-2BV7CFUP.js → contentThunks-I4IHSDTM.js} +14 -13
- package/{cooldownCommands-KRILPXOZ.js → cooldownCommands-5SJ74DNP.js} +1 -1
- package/{createAgentAutomationAction-T6CGXCSO.js → createAgentAutomationAction-WQCH5HR2.js} +14 -13
- package/{createDialogAction-X27IA3G2.js → createDialogAction-CKMZK5JQ.js} +15 -14
- package/{createPageAction-EHDHNW5P.js → createPageAction-QAZHQGY7.js} +14 -13
- package/{dialogCommands-XZXH3HSQ.js → dialogCommands-NEQ6NW5H.js} +30 -28
- package/{dialogSlice-AZNPVOCU.js → dialogSlice-GEGACCH2.js} +13 -12
- package/{docCreateCommands-Z64V5BFZ.js → docCreateCommands-EXV267FP.js} +28 -26
- package/{docDeleteCommands-7UFHIM4C.js → docDeleteCommands-TSBILA2Z.js} +29 -27
- package/{docReadCommands-NLU7Y67R.js → docReadCommands-AKVYHITD.js} +28 -26
- package/{docStore-M37Q6JFO.js → docStore-B4EFT53J.js} +1 -1
- package/{docUpdateCommands-S2KGBEG3.js → docUpdateCommands-G6GULDGZ.js} +28 -26
- package/{fetchMessages-HWBVATSE.js → fetchMessages-YY4SATNR.js} +1 -1
- package/{getPricing-E2PLNWCR.js → getPricing-3PQY3TGI.js} +3 -3
- package/{handleSendMessageAction-KUJQZ6B6.js → handleSendMessageAction-4BACQWOG.js} +70 -29
- package/index.js +7 -7
- package/{lib-4YTWAGY7.js → lib-5KKIBFIT.js} +439 -272
- package/{localDialogRead-CT5HGDMC.js → localDialogRead-FUXGZ57B.js} +1 -1
- package/{localRuntimeAdapter-5BNHO6JZ.js → localRuntimeAdapter-MTDULOUZ.js} +45 -43
- package/{machineCommands-2KDROAVV.js → machineCommands-OGHHBRV3.js} +48 -46
- package/{machineWsRunDispatch-4NP5M574.js → machineWsRunDispatch-R6DNC3H7.js} +46 -44
- package/{models-UUNO6DOL.js → models-PJBE6JDV.js} +2 -2
- package/{oauthTokenStore-PADKLNOC.js → oauthTokenStore-OEERZFUC.js} +2 -1
- package/package.json +1 -1
- package/{providerPresetApply-JGNMO2KX.js → providerPresetApply-HBBUUVJD.js} +6 -6
- package/{providerRegistry-33J3ZYFJ.js → providerRegistry-5LK2NXYE.js} +6 -6
- package/{readlineWorkspace-MKUSR6HA.js → readlineWorkspace-NC2O4DQP.js} +290 -121
- package/{runAgentClientLoop-J32KRVN7.js → runAgentClientLoop-QKV66PX5.js} +31 -30
- package/{runtimeDoctorCommands-NYBOTA6D.js → runtimeDoctorCommands-3VFVTGPI.js} +8 -7
- package/{secretCommands-N6CMCJDZ.js → secretCommands-MKU25CDP.js} +311 -3
- package/{settingThunks-YRYNPWJM.js → settingThunks-4WU7YE62.js} +2 -2
- package/{skillDiscovery-F3TMVQOJ.js → skillDiscovery-BKLWW2EZ.js} +2 -2
- package/{spaceCommands-VV4K7TGI.js → spaceCommands-J7BRTTM3.js} +27 -25
- package/{streamAgentChatTurn-S2Q7STXS.js → streamAgentChatTurn-GM3UNSLS.js} +46 -43
- package/{tools-KOIPW4ZA.js → tools-UJLEQBKI.js} +25 -24
- package/{tuiSummaryLlmCaller-FSOADMXK.js → tuiSummaryLlmCaller-73QO3HAD.js} +12 -12
- package/{updateCommands-KE6LP3QX.js → updateCommands-RVDAFHBT.js} +3 -3
- package/{updateDialogTitleAction-ILS5OIXF.js → updateDialogTitleAction-24QO27NT.js} +14 -13
- package/{windowsSelfUpdate-26TSFXEZ.js → windowsSelfUpdate-N2VH2OBW.js} +2 -2
|
@@ -976,7 +976,9 @@ var secretStrings = {
|
|
|
976
976
|
en: `Usage:
|
|
977
977
|
nolo secret list [--json] List saved secret names (without values; --json outputs machine-readable list)
|
|
978
978
|
nolo secret get <name> Print the value of a secret (for debugging; agents must not read)
|
|
979
|
-
nolo secret set <name>
|
|
979
|
+
nolo secret set <name> --prompt Set a secret via hidden interactive prompt (TTY only; does not echo secret)
|
|
980
|
+
nolo secret set <name> --stdin Set a secret securely from stdin (recommended; prevents leaking secrets in argv)
|
|
981
|
+
nolo secret set <name> <value|json> Set a secret via argv (legacy; discouraged: exposes secrets in shell history and process list)
|
|
980
982
|
nolo secret delete <name> Delete a secret
|
|
981
983
|
nolo secret run --with <names> -- <cmd> Safely inject secret environment variables and run a command
|
|
982
984
|
nolo secret bind <alias> <ref> [--env <ENV_NAME>] Bind a managed credential reference to an alias
|
|
@@ -986,7 +988,9 @@ var secretStrings = {
|
|
|
986
988
|
zh: `\u7528\u6CD5:
|
|
987
989
|
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
|
|
988
990
|
nolo secret get <name> \u6253\u5370\u6307\u5B9A secret \u7684\u503C\uFF08\u4F9B\u8C03\u8BD5\uFF1BAgent \u4E0D\u5F97\u8BFB\u53D6\uFF09
|
|
989
|
-
nolo secret set <name>
|
|
991
|
+
nolo secret set <name> --prompt \u901A\u8FC7\u9690\u85CF\u8F93\u5165\u4EA4\u4E92\u8BBE\u7F6E secret\uFF08\u4EC5\u9650 TTY\uFF0C\u4E0D\u56DE\u663E\u51ED\u636E\uFF09
|
|
992
|
+
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
|
|
993
|
+
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
|
|
990
994
|
nolo secret delete <name> \u5220\u9664\u6307\u5B9A\u7684 secret
|
|
991
995
|
nolo secret run --with <names> -- <cmd> \u5B89\u5168\u6CE8\u5165 secret \u73AF\u5883\u53D8\u91CF\u5E76\u6267\u884C\u5B50\u547D\u4EE4
|
|
992
996
|
nolo secret bind <alias> <ref> [--env <ENV_NAME>] \u5C06\u53D7\u63A7\u51ED\u636E\u5F15\u7528\u7ED1\u5B9A\u5230\u522B\u540D
|
|
@@ -1101,6 +1105,74 @@ var secretStrings = {
|
|
|
1101
1105
|
"secret.jsonScalar": {
|
|
1102
1106
|
en: "JSON values must be an object or an array, not a scalar",
|
|
1103
1107
|
zh: "JSON \u503C\u5FC5\u987B\u662F\u5BF9\u8C61\u6216\u6570\u7EC4\uFF0C\u4E0D\u80FD\u662F\u6807\u91CF"
|
|
1108
|
+
},
|
|
1109
|
+
"secret.setNameRequired": {
|
|
1110
|
+
en: "Error: Please provide a secret name. Example: nolo secret set <name> --stdin",
|
|
1111
|
+
zh: "\u9519\u8BEF: \u8BF7\u63D0\u4F9B secret \u540D\u79F0\u3002\u4F8B\u5982: nolo secret set <name> --stdin"
|
|
1112
|
+
},
|
|
1113
|
+
"secret.stdinDuplicateFlag": {
|
|
1114
|
+
en: "Error: Duplicate --stdin flag",
|
|
1115
|
+
zh: "\u9519\u8BEF: --stdin \u53C2\u6570\u91CD\u590D"
|
|
1116
|
+
},
|
|
1117
|
+
"secret.stdinMixedWithValue": {
|
|
1118
|
+
en: "Error: Cannot mix --stdin with value arguments. Pass value via stream only",
|
|
1119
|
+
zh: "\u9519\u8BEF: \u4E0D\u80FD\u5C06 --stdin \u4E0E\u503C\u53C2\u6570\u6DF7\u7528\u3002\u8BF7\u4EC5\u901A\u8FC7\u6D41\u8F93\u5165\u63D0\u4F9B\u503C"
|
|
1120
|
+
},
|
|
1121
|
+
"secret.stdinTtyNotSupported": {
|
|
1122
|
+
en: "Error: Interactive terminal (TTY) detected. --stdin is not an interactive prompt; please pipe input via stdin (e.g. pass show secret | nolo secret set <name> --stdin)",
|
|
1123
|
+
zh: "\u9519\u8BEF: \u68C0\u6D4B\u5230\u4EA4\u4E92\u5F0F\u7EC8\u7AEF (TTY)\u3002--stdin \u4E0D\u662F\u4EA4\u4E92\u5F0F\u9690\u85CF\u63D0\u793A\u7B26\uFF1B\u8BF7\u901A\u8FC7\u7BA1\u9053\u63D0\u4F9B\u8F93\u5165\uFF08\u4F8B\u5982: pass show secret | nolo secret set <name> --stdin\uFF09"
|
|
1124
|
+
},
|
|
1125
|
+
"secret.stdinEmpty": {
|
|
1126
|
+
en: "Error: Secret input from stdin cannot be empty or pure whitespace",
|
|
1127
|
+
zh: "\u9519\u8BEF: \u6765\u81EA stdin \u7684 secret \u8F93\u5165\u4E0D\u80FD\u4E3A\u7A7A\u6216\u7EAF\u7A7A\u767D"
|
|
1128
|
+
},
|
|
1129
|
+
"secret.stdinTooLarge": {
|
|
1130
|
+
en: "Error: Secret input from stdin exceeds maximum limit (64 KiB)",
|
|
1131
|
+
zh: "\u9519\u8BEF: \u6765\u81EA stdin \u7684 secret \u8F93\u5165\u8D85\u8FC7\u6700\u5927\u9650\u5236 (64 KiB)"
|
|
1132
|
+
},
|
|
1133
|
+
"secret.stdinTimeout": {
|
|
1134
|
+
en: "Error: Timed out waiting for stdin input (10s limit)",
|
|
1135
|
+
zh: "\u9519\u8BEF: \u7B49\u5F85 stdin \u8F93\u5165\u8D85\u65F6\uFF08\u9650\u5236 10 \u79D2\uFF09"
|
|
1136
|
+
},
|
|
1137
|
+
"secret.stdinReadError": {
|
|
1138
|
+
en: "Error: Failed to read secret from stdin",
|
|
1139
|
+
zh: "\u9519\u8BEF: \u4ECE stdin \u8BFB\u53D6 secret \u5931\u8D25"
|
|
1140
|
+
},
|
|
1141
|
+
"secret.promptDuplicateFlag": {
|
|
1142
|
+
en: "Error: Duplicate --prompt flag",
|
|
1143
|
+
zh: "\u9519\u8BEF: --prompt \u53C2\u6570\u91CD\u590D"
|
|
1144
|
+
},
|
|
1145
|
+
"secret.cannotMixStdinAndPrompt": {
|
|
1146
|
+
en: "Error: Cannot mix --stdin and --prompt flags",
|
|
1147
|
+
zh: "\u9519\u8BEF: \u4E0D\u80FD\u540C\u65F6\u4F7F\u7528 --stdin \u548C --prompt \u53C2\u6570"
|
|
1148
|
+
},
|
|
1149
|
+
"secret.promptMixedWithValue": {
|
|
1150
|
+
en: "Error: Cannot mix --prompt with value arguments. Pass value via interactive prompt only",
|
|
1151
|
+
zh: "\u9519\u8BEF: \u4E0D\u80FD\u5C06 --prompt \u4E0E\u503C\u53C2\u6570\u6DF7\u7528\u3002\u8BF7\u4EC5\u901A\u8FC7\u4EA4\u4E92\u63D0\u793A\u7B26\u63D0\u4F9B\u503C"
|
|
1152
|
+
},
|
|
1153
|
+
"secret.promptNameRequired": {
|
|
1154
|
+
en: "Error: Please provide a secret name. Example: nolo secret set <name> --prompt",
|
|
1155
|
+
zh: "\u9519\u8BEF: \u8BF7\u63D0\u4F9B secret \u540D\u79F0\u3002\u4F8B\u5982: nolo secret set <name> --prompt"
|
|
1156
|
+
},
|
|
1157
|
+
"secret.promptNonTtyNotSupported": {
|
|
1158
|
+
en: "Error: Interactive terminal (TTY) required for --prompt. For automated pipelines use --stdin",
|
|
1159
|
+
zh: "\u9519\u8BEF: --prompt \u9700\u8981\u4EA4\u4E92\u5F0F\u7EC8\u7AEF (TTY)\u3002\u81EA\u52A8\u5316\u6D41\u6C34\u7EBF\u8BF7\u4F7F\u7528 --stdin"
|
|
1160
|
+
},
|
|
1161
|
+
"secret.promptEmpty": {
|
|
1162
|
+
en: "Error: Secret input from prompt cannot be empty or pure whitespace",
|
|
1163
|
+
zh: "\u9519\u8BEF: \u6765\u81EA\u63D0\u793A\u7B26\u7684 secret \u8F93\u5165\u4E0D\u80FD\u4E3A\u7A7A\u6216\u7EAF\u7A7A\u767D"
|
|
1164
|
+
},
|
|
1165
|
+
"secret.promptAborted": {
|
|
1166
|
+
en: "Secret input cancelled",
|
|
1167
|
+
zh: "\u7528\u6237\u53D6\u6D88\u4E86 secret \u8F93\u5165"
|
|
1168
|
+
},
|
|
1169
|
+
"secret.promptLabel": {
|
|
1170
|
+
en: 'Enter secret value for "{0}": ',
|
|
1171
|
+
zh: '\u8BF7\u8F93\u5165 "{0}" \u7684 secret \u503C\uFF08\u8F93\u5165\u5185\u5BB9\u5DF2\u9690\u85CF\uFF09: '
|
|
1172
|
+
},
|
|
1173
|
+
"secret.promptReadError": {
|
|
1174
|
+
en: "Error: Failed to read secret from prompt",
|
|
1175
|
+
zh: "\u9519\u8BEF: \u4ECE\u4EA4\u4E92\u63D0\u793A\u7B26\u8BFB\u53D6 secret \u5931\u8D25"
|
|
1104
1176
|
}
|
|
1105
1177
|
};
|
|
1106
1178
|
|
|
@@ -2594,8 +2666,8 @@ var COMMAND_DESCRIPTIONS = {
|
|
|
2594
2666
|
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"
|
|
2595
2667
|
},
|
|
2596
2668
|
"agent status": {
|
|
2597
|
-
en: "Show status of a local agent run (--json, --watch, --interval-ms N)",
|
|
2598
|
-
zh: "\u67E5\u770B\u672C\u5730\u667A\u80FD\u4F53\u8FD0\u884C\u72B6\u6001\uFF08--json\u3001--watch\u3001--interval-ms N\uFF09"
|
|
2669
|
+
en: "Show status of a local agent run (--json, --include-checkpoint, --watch, --interval-ms N)",
|
|
2670
|
+
zh: "\u67E5\u770B\u672C\u5730\u667A\u80FD\u4F53\u8FD0\u884C\u72B6\u6001\uFF08--json\u3001--include-checkpoint\u3001--watch\u3001--interval-ms N\uFF09"
|
|
2599
2671
|
},
|
|
2600
2672
|
"agent logs": {
|
|
2601
2673
|
en: "Show logs of a local agent run",
|
|
@@ -295,13 +295,14 @@ var buildSkillDiscoveryCatalogLayer = (catalog) => {
|
|
|
295
295
|
}
|
|
296
296
|
return makeLayer("skill-discovery", lines.join("\n"), "session");
|
|
297
297
|
};
|
|
298
|
+
var buildAgentsMdLayerHeader = (fileName = "AGENTS.md") => `--- \u9879\u76EE\u6307\u4EE4\uFF08${fileName}\uFF09---
|
|
299
|
+
`;
|
|
298
300
|
var buildAgentsMdLayer = (content, fileName = "AGENTS.md") => {
|
|
299
301
|
const trimmed = content.trim();
|
|
300
302
|
if (!trimmed) return null;
|
|
301
303
|
return makeLayer(
|
|
302
304
|
"agents-md",
|
|
303
|
-
|
|
304
|
-
${trimmed}`,
|
|
305
|
+
`${buildAgentsMdLayerHeader(fileName)}${trimmed}`,
|
|
305
306
|
"session"
|
|
306
307
|
);
|
|
307
308
|
};
|
|
@@ -375,6 +376,7 @@ export {
|
|
|
375
376
|
resolveSkillCatalogSync,
|
|
376
377
|
buildSpaceContextLayer,
|
|
377
378
|
buildSkillDiscoveryCatalogLayer,
|
|
379
|
+
buildAgentsMdLayerHeader,
|
|
378
380
|
buildAgentsMdLayer,
|
|
379
381
|
buildLinkedSpacesSection,
|
|
380
382
|
renderTurnContextBlocksWithScope,
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-HNUWUO75.js";
|
|
4
4
|
import {
|
|
5
5
|
resolveToolImagePolicy
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-6I7ZP7KJ.js";
|
|
7
7
|
import {
|
|
8
8
|
accumulateToolCallDelta,
|
|
9
9
|
createThinkParserState,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
stablePromptCacheKey,
|
|
31
31
|
toOpenAiCompatibleMessages,
|
|
32
32
|
toResponsesTools
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-CVCRAO6Q.js";
|
|
34
34
|
import {
|
|
35
35
|
isMeaningfulChatCompletionOutput,
|
|
36
36
|
isMeaningfulResponsesOutput
|
|
@@ -47,14 +47,14 @@ import {
|
|
|
47
47
|
resolvePlatformAuthToken,
|
|
48
48
|
resolvePlatformServerUrl,
|
|
49
49
|
resolveProviderTransportDecision
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-WPOKOKZA.js";
|
|
51
51
|
import {
|
|
52
52
|
isRecord
|
|
53
53
|
} from "./chunk-KUG52IAP.js";
|
|
54
54
|
import {
|
|
55
55
|
NOLO_CLIENT_VERSION_HEADER,
|
|
56
56
|
isPlatformMimoProviderModel
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-GOO6G4PY.js";
|
|
58
58
|
|
|
59
59
|
// packages/ai/token/sseUsageExtract.ts
|
|
60
60
|
var TOKEN_FIELDS = [
|
|
@@ -715,7 +715,7 @@ function processPlatformChatSseEvent(event, state) {
|
|
|
715
715
|
if (!payload) continue;
|
|
716
716
|
if (payload === "[DONE]") {
|
|
717
717
|
state.sawDone = true;
|
|
718
|
-
|
|
718
|
+
return;
|
|
719
719
|
}
|
|
720
720
|
let parsed;
|
|
721
721
|
try {
|
|
@@ -782,8 +782,10 @@ function processPlatformChatSseEvent(event, state) {
|
|
|
782
782
|
applyResponsesToolEvent(state.responsesToolCalls, parsed);
|
|
783
783
|
continue;
|
|
784
784
|
}
|
|
785
|
-
if (eventType === "response.completed"
|
|
785
|
+
if (eventType === "response.completed") {
|
|
786
|
+
state.sawResponseCompleted = true;
|
|
786
787
|
state.completedResponsesPayload = parsed.response;
|
|
788
|
+
continue;
|
|
787
789
|
}
|
|
788
790
|
}
|
|
789
791
|
}
|
|
@@ -807,12 +809,14 @@ async function readPlatformChatSseCompletion(args) {
|
|
|
807
809
|
thinkState: createThinkParserState(),
|
|
808
810
|
toolCallTextState: createToolCallTextParserState(),
|
|
809
811
|
finishReason: void 0,
|
|
810
|
-
sawDone: false
|
|
812
|
+
sawDone: false,
|
|
813
|
+
sawResponseCompleted: false
|
|
811
814
|
};
|
|
812
815
|
try {
|
|
813
816
|
for await (const frame of readSseFrames(args.response)) {
|
|
814
817
|
frameCount += 1;
|
|
815
818
|
processPlatformChatSseEvent(frame, state);
|
|
819
|
+
if (state.sawDone) break;
|
|
816
820
|
}
|
|
817
821
|
} catch (cause) {
|
|
818
822
|
if (cause instanceof PlatformStreamInterruptedError) {
|
|
@@ -853,7 +857,7 @@ async function readPlatformChatSseCompletion(args) {
|
|
|
853
857
|
if (dsml.content) state.content += dsml.content;
|
|
854
858
|
}
|
|
855
859
|
throwIfChatCompletionStreamFailed(state);
|
|
856
|
-
const streamComplete = state.sawDone || Boolean(state.usage) || Boolean(state.finishReason);
|
|
860
|
+
const streamComplete = state.sawDone || state.sawResponseCompleted || Boolean(state.usage) || Boolean(state.finishReason);
|
|
857
861
|
const streamTruncated = !streamComplete;
|
|
858
862
|
if (state.usesResponsesApi) {
|
|
859
863
|
const response = state.completedResponsesPayload;
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
mapDiscoveredSkillsToCatalogEntries,
|
|
9
9
|
resolveSkillCatalog,
|
|
10
10
|
resolveSkillCatalogSync
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-CMLBKYEI.js";
|
|
12
12
|
|
|
13
13
|
// packages/agent-runtime/skillDiscovery.ts
|
|
14
14
|
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
} from "./chunk-E2BESSAW.js";
|
|
11
11
|
import {
|
|
12
12
|
getModelContextWindow
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-BTYQAODF.js";
|
|
14
14
|
import {
|
|
15
15
|
isRecord
|
|
16
16
|
} from "./chunk-KUG52IAP.js";
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
PLATFORM_HOSTED_KIMI_K3_MODEL,
|
|
22
22
|
isFireworksKimiModel,
|
|
23
23
|
isNoloHostedProvider
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-GOO6G4PY.js";
|
|
25
25
|
import {
|
|
26
26
|
asTrimmedLowercaseString
|
|
27
27
|
} from "./chunk-QSJ3HFEF.js";
|
|
@@ -914,7 +914,8 @@ var STREAM_USAGE_PROVIDERS = /* @__PURE__ */ new Set([
|
|
|
914
914
|
// prompt_tokens_details.cached_tokens.
|
|
915
915
|
"opendesign",
|
|
916
916
|
"opencode",
|
|
917
|
-
"opencode-go"
|
|
917
|
+
"opencode-go",
|
|
918
|
+
"longcat"
|
|
918
919
|
]);
|
|
919
920
|
var KIMI_CODE_ENDPOINT_MARKER = "api.kimi.com";
|
|
920
921
|
function extractHostname(endpoint) {
|
|
@@ -929,10 +930,14 @@ var isMiniMaxEndpoint = (endpoint) => {
|
|
|
929
930
|
const host = extractHostname(endpoint);
|
|
930
931
|
return host === "api.minimaxi.com" || host === "api.minimax.chat";
|
|
931
932
|
};
|
|
933
|
+
var isLongCatEndpoint = (endpoint) => {
|
|
934
|
+
const host = extractHostname(endpoint);
|
|
935
|
+
return host === "api.longcat.chat" || host === "api.longcat.ai";
|
|
936
|
+
};
|
|
932
937
|
var isSupportedCustomEndpoint = (endpoint) => {
|
|
933
938
|
if (typeof endpoint !== "string") return false;
|
|
934
939
|
const ep = endpoint.toLowerCase();
|
|
935
|
-
return isMiniMaxEndpoint(endpoint) || ep.includes(KIMI_CODE_ENDPOINT_MARKER) || ep.includes("open-design.ai") || ep.includes("opencode.ai") || isOllamaEndpoint(endpoint);
|
|
940
|
+
return isMiniMaxEndpoint(endpoint) || isLongCatEndpoint(endpoint) || ep.includes(KIMI_CODE_ENDPOINT_MARKER) || ep.includes("open-design.ai") || ep.includes("opencode.ai") || isOllamaEndpoint(endpoint);
|
|
936
941
|
};
|
|
937
942
|
var EXTRA_USAGE_FIELD_PROVIDERS = /* @__PURE__ */ new Set(["openrouter"]);
|
|
938
943
|
var normalizeProviderName = (providerName) => asTrimmedLowercaseString(providerName);
|
|
@@ -333,7 +333,7 @@ async function saveDocState(arg, { dispatch, getState }) {
|
|
|
333
333
|
).unwrap();
|
|
334
334
|
if (dbSpaceId) {
|
|
335
335
|
try {
|
|
336
|
-
const { updateContentTitle } = await import("./contentThunks-
|
|
336
|
+
const { updateContentTitle } = await import("./contentThunks-I4IHSDTM.js");
|
|
337
337
|
await dispatch(
|
|
338
338
|
updateContentTitle({
|
|
339
339
|
spaceId: dbSpaceId,
|
|
@@ -372,7 +372,7 @@ async function saveDocState(arg, { dispatch, getState }) {
|
|
|
372
372
|
}
|
|
373
373
|
}
|
|
374
374
|
async function createDocState(args, thunkApi) {
|
|
375
|
-
const { createPageAction } = await import("./createPageAction-
|
|
375
|
+
const { createPageAction } = await import("./createPageAction-QAZHQGY7.js");
|
|
376
376
|
return createPageAction(args, thunkApi);
|
|
377
377
|
}
|
|
378
378
|
function subscribe(listener) {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
requireTokenUser
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-NTLJGRAT.js";
|
|
4
4
|
import {
|
|
5
5
|
resolveServerUrl
|
|
6
6
|
} from "./chunk-WACI5I6V.js";
|
|
7
7
|
import {
|
|
8
8
|
t
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-CLTGWJVT.js";
|
|
10
10
|
|
|
11
11
|
// packages/cli/cliApiClient.ts
|
|
12
12
|
var CliApiError = class extends Error {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveBuiltinCapability,
|
|
3
3
|
resolveBuiltinSkillEntry
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-LEX6DEH4.js";
|
|
5
5
|
import {
|
|
6
6
|
noloAgentId
|
|
7
7
|
} from "./chunk-Y6ORVLSS.js";
|
|
@@ -186,7 +186,8 @@ var SUPPORTED_USER_SKILL_SLUGS = [
|
|
|
186
186
|
"skill-creator",
|
|
187
187
|
"code-planning",
|
|
188
188
|
"coding",
|
|
189
|
-
"coding-review"
|
|
189
|
+
"coding-review",
|
|
190
|
+
"android-adb"
|
|
190
191
|
];
|
|
191
192
|
var SUPPORTED_USER_SKILL_SLUG_SET = new Set(
|
|
192
193
|
SUPPORTED_USER_SKILL_SLUGS
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildStaticUserPolicyContext,
|
|
3
3
|
resolveSpaceContextPreloadPlan
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-Q7GNBUT4.js";
|
|
5
5
|
import {
|
|
6
6
|
fetchReferenceContents,
|
|
7
7
|
mergeReferences,
|
|
8
8
|
resolveReferenceAssets,
|
|
9
9
|
resolveToolsFromKeys
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-RIKSN62L.js";
|
|
11
11
|
import {
|
|
12
12
|
UI_CARD_ENVELOPE_MAX_BYTES,
|
|
13
13
|
getAllToolRuns,
|
|
@@ -18,14 +18,14 @@ import {
|
|
|
18
18
|
selectSpaceContextLevel,
|
|
19
19
|
selectUserTonePreset,
|
|
20
20
|
uiCardFallback
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-C7PKPHK6.js";
|
|
22
22
|
import {
|
|
23
23
|
resolveAgentRecommendedSkillNames,
|
|
24
24
|
resolveAgentRequiredPackIds
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-DKZJJ2NQ.js";
|
|
26
26
|
import {
|
|
27
27
|
getDocState
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-D57YYGMD.js";
|
|
29
29
|
import {
|
|
30
30
|
resolveToolBaseUrl
|
|
31
31
|
} from "./chunk-MYOH447Z.js";
|
|
@@ -34,10 +34,10 @@ import {
|
|
|
34
34
|
getModelPricing,
|
|
35
35
|
getPrices,
|
|
36
36
|
hasExplicitAgentPricing
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-A2ZMIRLN.js";
|
|
38
38
|
import {
|
|
39
39
|
getTableState
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-SSK4WNJA.js";
|
|
41
41
|
import {
|
|
42
42
|
getCurrentSpaceIdRaw,
|
|
43
43
|
getViewMode
|
|
@@ -46,7 +46,7 @@ import {
|
|
|
46
46
|
PERSONALIZATION_DIALOG_CATEGORY,
|
|
47
47
|
buildPersonalizationDialogPolicyContext,
|
|
48
48
|
selectAllMsgs
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-326HCB6L.js";
|
|
50
50
|
import {
|
|
51
51
|
selectPendingFiles
|
|
52
52
|
} from "./chunk-OWYYDMGJ.js";
|
|
@@ -78,11 +78,11 @@ import {
|
|
|
78
78
|
} from "./chunk-WJZOQR2J.js";
|
|
79
79
|
import {
|
|
80
80
|
extractReferenceKeysFromMessage
|
|
81
|
-
} from "./chunk-
|
|
81
|
+
} from "./chunk-WTKYP6QO.js";
|
|
82
82
|
import {
|
|
83
83
|
getModelContextWindow,
|
|
84
84
|
planContextUsage
|
|
85
|
-
} from "./chunk-
|
|
85
|
+
} from "./chunk-BTYQAODF.js";
|
|
86
86
|
import {
|
|
87
87
|
asRecordOrEmpty
|
|
88
88
|
} from "./chunk-KX6YBIHG.js";
|
|
@@ -92,7 +92,7 @@ import {
|
|
|
92
92
|
import {
|
|
93
93
|
buildLinkedSpacesSection,
|
|
94
94
|
buildSpaceContextLayer
|
|
95
|
-
} from "./chunk-
|
|
95
|
+
} from "./chunk-CMLBKYEI.js";
|
|
96
96
|
import {
|
|
97
97
|
canonicalizeToolNames,
|
|
98
98
|
prioritizeToolNames
|
|
@@ -106,7 +106,7 @@ import {
|
|
|
106
106
|
import {
|
|
107
107
|
getModelConfig,
|
|
108
108
|
getProviderByModelName
|
|
109
|
-
} from "./chunk-
|
|
109
|
+
} from "./chunk-SM3NSZJV.js";
|
|
110
110
|
import {
|
|
111
111
|
isRecord
|
|
112
112
|
} from "./chunk-KUG52IAP.js";
|
|
@@ -1257,7 +1257,7 @@ ${content}
|
|
|
1257
1257
|
var validateAccessAndBalance = (agentConfig, state) => {
|
|
1258
1258
|
const userBalance = selectIdentityUserBalance(state);
|
|
1259
1259
|
const currentUserId = selectIdentityUserId(state);
|
|
1260
|
-
const isCustomApi = agentConfig.apiSource === "custom";
|
|
1260
|
+
const isCustomApi = agentConfig.apiSource === "custom" || Boolean(agentConfig.customProviderUrl);
|
|
1261
1261
|
const isCliApi = agentConfig.apiSource === "cli";
|
|
1262
1262
|
const isDeviceLocalOwner = agentConfig.userId === "local" && !currentUserId;
|
|
1263
1263
|
const isOwner = isDeviceLocalOwner || Boolean(currentUserId) && agentConfig.userId === currentUserId;
|
|
@@ -1722,7 +1722,10 @@ async function resolveTurnToolContext(input) {
|
|
|
1722
1722
|
const mentionedToolNames = canonicalizeToolNames(mentionResult.toolNames);
|
|
1723
1723
|
const agentRefs = Array.isArray(input.agentConfig?.references) ? input.agentConfig.references : [];
|
|
1724
1724
|
const dialogExtraRefs = Array.isArray(input.dialogConfig?.extraReferences) ? input.dialogConfig.extraReferences : [];
|
|
1725
|
-
const mergedReferences = mergeReferences(
|
|
1725
|
+
const mergedReferences = mergeReferences(
|
|
1726
|
+
mergeReferences(agentRefs, dialogExtraRefs),
|
|
1727
|
+
input.ephemeralReferences
|
|
1728
|
+
);
|
|
1726
1729
|
let refAssets = {
|
|
1727
1730
|
references: [],
|
|
1728
1731
|
referencedTools: [],
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
} from "./chunk-TRZP7JZ7.js";
|
|
23
23
|
import {
|
|
24
24
|
createFileCredentialBroker
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-UIOEHFF6.js";
|
|
26
26
|
import {
|
|
27
27
|
asRecordOrEmpty
|
|
28
28
|
} from "./chunk-KX6YBIHG.js";
|
|
@@ -458,7 +458,7 @@ var slice = createSliceWithThunks({
|
|
|
458
458
|
const overrides = {};
|
|
459
459
|
if (args.systemPromptOverride !== void 0) overrides.prompt = args.systemPromptOverride;
|
|
460
460
|
if (args.toolsOverride !== void 0) overrides.tools = args.toolsOverride;
|
|
461
|
-
const { _executeModel } = await import("./_executeModel-
|
|
461
|
+
const { _executeModel } = await import("./_executeModel-IPRTPSW7.js");
|
|
462
462
|
return _executeModel(
|
|
463
463
|
{
|
|
464
464
|
isStreaming: args.isStreaming ?? false,
|
|
@@ -479,7 +479,7 @@ var slice = createSliceWithThunks({
|
|
|
479
479
|
* - 循环直到无工具调用或触发其他运行时停止条件
|
|
480
480
|
*/
|
|
481
481
|
runAgent: create.asyncThunk(async (args, thunkApi) => {
|
|
482
|
-
const { runAgentClientLoop } = await import("./runAgentClientLoop-
|
|
482
|
+
const { runAgentClientLoop } = await import("./runAgentClientLoop-QKV66PX5.js");
|
|
483
483
|
const { content: loopContent, toolCallCount } = await runAgentClientLoop(
|
|
484
484
|
{
|
|
485
485
|
agentKey: args.agentKey,
|
|
@@ -495,7 +495,7 @@ var slice = createSliceWithThunks({
|
|
|
495
495
|
* 聊天轮次流式 Agent 调用
|
|
496
496
|
*/
|
|
497
497
|
streamAgentChatTurn: create.asyncThunk(async (args, thunkApi) => {
|
|
498
|
-
const { streamAgentChatTurnHandler } = await import("./streamAgentChatTurn-
|
|
498
|
+
const { streamAgentChatTurnHandler } = await import("./streamAgentChatTurn-GM3UNSLS.js");
|
|
499
499
|
return streamAgentChatTurnHandler(args, thunkApi);
|
|
500
500
|
}),
|
|
501
501
|
/**
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resolveNoloStateDir
|
|
3
|
+
} from "./chunk-6UBGXX2W.js";
|
|
4
|
+
|
|
1
5
|
// packages/agent-runtime/oauthTokenStore.ts
|
|
2
6
|
import {
|
|
3
7
|
chmodSync as chmodSync2,
|
|
@@ -7,8 +11,8 @@ import {
|
|
|
7
11
|
unlinkSync as unlinkSync2,
|
|
8
12
|
writeFileSync as writeFileSync2
|
|
9
13
|
} from "node:fs";
|
|
10
|
-
import { homedir
|
|
11
|
-
import { join as
|
|
14
|
+
import { homedir } from "node:os";
|
|
15
|
+
import { join as join2 } from "node:path";
|
|
12
16
|
|
|
13
17
|
// packages/agent-runtime/credentialLocationMigration.ts
|
|
14
18
|
import {
|
|
@@ -97,22 +101,13 @@ function migrateLegacyCredentialFile(args) {
|
|
|
97
101
|
}
|
|
98
102
|
}
|
|
99
103
|
|
|
100
|
-
// packages/agent-runtime/noloStateDir.ts
|
|
101
|
-
import { homedir } from "node:os";
|
|
102
|
-
import { join as join2 } from "node:path";
|
|
103
|
-
function resolveNoloStateDir(name, homeDir) {
|
|
104
|
-
if (homeDir) return join2(homeDir, ".nolo", name);
|
|
105
|
-
const noloHome = process.env.NOLO_HOME?.trim();
|
|
106
|
-
return noloHome ? join2(noloHome, name) : join2(homedir(), ".nolo", name);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
104
|
// packages/agent-runtime/oauthTokenStore.ts
|
|
110
105
|
var DEFAULT_REFRESH_SKEW_MS = 5 * 60 * 1e3;
|
|
111
106
|
function getCredentialsDir(homeDir) {
|
|
112
107
|
return resolveNoloStateDir("credentials", homeDir);
|
|
113
108
|
}
|
|
114
109
|
function getCredentialPath(provider, homeDir) {
|
|
115
|
-
return
|
|
110
|
+
return join2(getCredentialsDir(homeDir), `${provider}.json`);
|
|
116
111
|
}
|
|
117
112
|
function ensurePrivateDir2(dir) {
|
|
118
113
|
mkdirSync2(dir, { recursive: true, mode: 448 });
|
|
@@ -138,7 +133,7 @@ function isValidOAuthCredential(raw, provider) {
|
|
|
138
133
|
}
|
|
139
134
|
function migrateOAuthCredentialIfNeeded(provider, homeDir, migration) {
|
|
140
135
|
if (homeDir !== void 0 || !migration?.enableLegacyMigration) return;
|
|
141
|
-
const legacyHomeDir = migration.legacyHomeDir ??
|
|
136
|
+
const legacyHomeDir = migration.legacyHomeDir ?? homedir();
|
|
142
137
|
const canonicalPath = getCredentialPath(provider);
|
|
143
138
|
migrateLegacyCredentialFile({
|
|
144
139
|
canonicalPath,
|
|
@@ -235,7 +230,6 @@ async function resolveFreshAccessToken(args) {
|
|
|
235
230
|
}
|
|
236
231
|
|
|
237
232
|
export {
|
|
238
|
-
resolveNoloStateDir,
|
|
239
233
|
getLegacyCredentialPath,
|
|
240
234
|
migrateLegacyCredentialFile,
|
|
241
235
|
DEFAULT_REFRESH_SKEW_MS,
|
|
@@ -62,10 +62,12 @@ var CLOUDFLARE_AI_MESSAGES_ENDPOINT_TEMPLATE = "https://api.cloudflare.com/clien
|
|
|
62
62
|
var PLATFORM_HOSTED_GROK_4_6_MODEL = "grok-4.6";
|
|
63
63
|
var PLATFORM_HOSTED_GPT_6_ASTRA_MODEL = "gpt-6-astra";
|
|
64
64
|
var PLATFORM_HOSTED_GPT_6_LUNA_MODEL = "gpt-6-luna";
|
|
65
|
+
var PLATFORM_HOSTED_GPT_6_SOL_MODEL = "gpt-6-sol";
|
|
65
66
|
var PLATFORM_HOSTED_GPT_56_SOL_MODEL = "gpt-5.6-sol";
|
|
66
67
|
var PLATFORM_HOSTED_GPT_56_TERRA_MODEL = "gpt-5.6-terra";
|
|
67
68
|
var PLATFORM_HOSTED_GPT_56_LUNA_MODEL = "gpt-5.6-luna";
|
|
68
69
|
var PLATFORM_HOSTED_GPT_6_1_SOL_MODEL = "gpt-6.1-sol";
|
|
70
|
+
var PLATFORM_HOSTED_GPT_6_1_TERRA_MODEL = "gpt-6.1-terra";
|
|
69
71
|
var PLATFORM_HOSTED_KIMI_K26_OPENROUTER_MODEL_ID = "qwen/qwen3.8-27b";
|
|
70
72
|
var PLATFORM_HOSTED_GLM_53_MODEL = "glm-5.3";
|
|
71
73
|
var PLATFORM_HOSTED_GLM_52_MODEL = "glm-5.2";
|
|
@@ -91,6 +93,7 @@ var CLOUDFLARE_GPT_6_LUNA_UPSTREAM_MODEL_ID = "openai/gpt-6-luna";
|
|
|
91
93
|
var CLOUDFLARE_GPT_56_TERRA_UPSTREAM_MODEL_ID = "openai/gpt-5.6-terra";
|
|
92
94
|
var CLOUDFLARE_GPT_56_LUNA_UPSTREAM_MODEL_ID = "openai/gpt-5.6-luna";
|
|
93
95
|
var CLOUDFLARE_GPT_6_1_SOL_UPSTREAM_MODEL_ID = "openai/gpt-6.1-sol";
|
|
96
|
+
var CLOUDFLARE_GPT_6_1_TERRA_UPSTREAM_MODEL_ID = "openai/gpt-6.1-terra";
|
|
94
97
|
var CLOUDFLARE_AI_RESPONSES_ENDPOINT_TEMPLATE = "https://api.cloudflare.com/client/v4/accounts/{account}/ai/v1/responses";
|
|
95
98
|
var PLATFORM_HOSTED_KIMI_K3_MIN_CLIENT_VERSION = "0.38.0-alpha.4";
|
|
96
99
|
var PLATFORM_HOSTED_GLM_53_FLASH_MIN_CLIENT_VERSION = "0.33.0-alpha.1";
|
|
@@ -344,6 +347,17 @@ var PLATFORM_HOSTED_ROUTING_TABLE = {
|
|
|
344
347
|
wire: "responses",
|
|
345
348
|
agentRunHosted: true
|
|
346
349
|
},
|
|
350
|
+
// GPT-6.1 Terra(2026-11-01 新增):与 6.1 Sol 同一条 Responses 线(CF 官方页同样
|
|
351
|
+
// 只声明「Responses, Chat Completions」与 reasoning.effort);上游是独立 catalog id,
|
|
352
|
+
// 不得与 sol 混用。不是任何模型的别名 —— gpt-5.6-terra 仍指它自己的 5.6 上游。
|
|
353
|
+
[PLATFORM_HOSTED_GPT_6_1_TERRA_MODEL]: {
|
|
354
|
+
endpoint: CLOUDFLARE_AI_RESPONSES_ENDPOINT_TEMPLATE,
|
|
355
|
+
usageProvider: "cloudflare",
|
|
356
|
+
keyName: "cloudflare",
|
|
357
|
+
upstreamModelId: CLOUDFLARE_GPT_6_1_TERRA_UPSTREAM_MODEL_ID,
|
|
358
|
+
wire: "responses",
|
|
359
|
+
agentRunHosted: true
|
|
360
|
+
},
|
|
347
361
|
// Grok -> xAI(server agentRun 侧未分流,保持 no upstream route 报错)
|
|
348
362
|
[PLATFORM_HOSTED_GROK_4_6_MODEL]: {
|
|
349
363
|
endpoint: "https://api.x.ai/v1/chat/completions",
|
|
@@ -435,6 +449,24 @@ var PLATFORM_MODEL_ALIASES = {
|
|
|
435
449
|
aliasOf: PLATFORM_HOSTED_GPT_6_1_SOL_MODEL,
|
|
436
450
|
since: "2026-10-13",
|
|
437
451
|
reason: "CF \u5B98\u65B9\u76EE\u5F55\u6362\u4EE3\uFF1Agpt-5.6-sol \u7531 gpt-6.1-sol \u627F\u63A5\uFF08owner \u6388\u6743\u900F\u660E\u6620\u5C04\uFF0C\u6309 6.1 \u8BA1\u8D39\uFF09\u3002"
|
|
452
|
+
},
|
|
453
|
+
// 家族内换代(owner 2026-11-01 决定):每个模型指向**自己家族的最新版本**,
|
|
454
|
+
// 不跨家族合并——故 luna 仍落 luna(不并到 terra,避免廉价档被抬到 10 倍价),
|
|
455
|
+
// astra 家族无新版、保持独立。
|
|
456
|
+
[PLATFORM_HOSTED_GPT_56_TERRA_MODEL]: {
|
|
457
|
+
aliasOf: PLATFORM_HOSTED_GPT_6_1_TERRA_MODEL,
|
|
458
|
+
since: "2026-11-01",
|
|
459
|
+
reason: "\u540C\u5BB6\u65CF\u6362\u4EE3\uFF08owner 2026-11-01 \u51B3\u5B9A\uFF09\uFF1Agpt-5.6-terra \u6307\u5411\u540C\u5BB6\u65CF\u6700\u65B0\u4EE3 gpt-6.1-terra\uFF0C\u900F\u660E\u6620\u5C04\uFF0C\u6309 6.1 Terra \u8BA1\u8D39\u3002"
|
|
460
|
+
},
|
|
461
|
+
[PLATFORM_HOSTED_GPT_56_LUNA_MODEL]: {
|
|
462
|
+
aliasOf: PLATFORM_HOSTED_GPT_6_LUNA_MODEL,
|
|
463
|
+
since: "2026-11-01",
|
|
464
|
+
reason: "\u540C\u5BB6\u65CF\u6362\u4EE3\uFF08owner 2026-11-01 \u51B3\u5B9A\uFF09\uFF1Agpt-5.6-luna \u6307\u5411\u540C\u5BB6\u65CF\u6700\u65B0\u4EE3 gpt-6-luna\uFF08\u4E0A\u6E38\u65E0 6.1-luna\uFF09\uFF0C\u900F\u660E\u6620\u5C04\uFF0C\u6309 6 Luna \u8BA1\u8D39\u3002"
|
|
465
|
+
},
|
|
466
|
+
[PLATFORM_HOSTED_GPT_6_SOL_MODEL]: {
|
|
467
|
+
aliasOf: PLATFORM_HOSTED_GPT_6_1_SOL_MODEL,
|
|
468
|
+
since: "2026-11-01",
|
|
469
|
+
reason: "\u540C\u5BB6\u65CF\u6362\u4EE3\uFF08owner 2026-11-01 \u51B3\u5B9A\uFF09\uFF1Agpt-6-sol \u6307\u5411\u540C\u5BB6\u65CF\u6700\u65B0\u4EE3 gpt-6.1-sol\uFF0C\u900F\u660E\u6620\u5C04\uFF0C\u6309 6.1 Sol \u8BA1\u8D39\u3002"
|
|
438
470
|
}
|
|
439
471
|
};
|
|
440
472
|
function resolvePlatformEffectiveModel(model) {
|
|
@@ -799,6 +831,30 @@ var PLATFORM_HOSTED_GPT_6_1_SOL_LONG_CONTEXT_PRICE = {
|
|
|
799
831
|
output: toPlatformCredits(15)
|
|
800
832
|
// 120 credits
|
|
801
833
|
};
|
|
834
|
+
var PLATFORM_HOSTED_GPT_6_1_TERRA_PRICE = {
|
|
835
|
+
input: toPlatformCredits(1),
|
|
836
|
+
// 8 credits
|
|
837
|
+
inputCacheHit: toPlatformCredits(0.05),
|
|
838
|
+
// 0.4 credits
|
|
839
|
+
cachingRead: toPlatformCredits(0.05),
|
|
840
|
+
// 0.4 credits(CF 官方短档 cached in)
|
|
841
|
+
cachingWrite: toPlatformCredits(1.25),
|
|
842
|
+
// 10 credits(CF 官方短档 cache write)
|
|
843
|
+
output: toPlatformCredits(5)
|
|
844
|
+
// 40 credits
|
|
845
|
+
};
|
|
846
|
+
var PLATFORM_HOSTED_GPT_6_1_TERRA_LONG_CONTEXT_PRICE = {
|
|
847
|
+
input: toPlatformCredits(2),
|
|
848
|
+
// 16 credits
|
|
849
|
+
inputCacheHit: toPlatformCredits(0.1),
|
|
850
|
+
// 0.8 credits
|
|
851
|
+
cachingRead: toPlatformCredits(0.1),
|
|
852
|
+
// 0.8 credits(CF 官方长档 cached in)
|
|
853
|
+
cachingWrite: toPlatformCredits(2.5),
|
|
854
|
+
// 20 credits(CF 官方长档 cache write)
|
|
855
|
+
output: toPlatformCredits(7.5)
|
|
856
|
+
// 60 credits
|
|
857
|
+
};
|
|
802
858
|
var PLATFORM_HOSTED_GLM_53_FLASH_PRICE = {
|
|
803
859
|
input: toPlatformCredits(0.1),
|
|
804
860
|
// 0.8 credits
|
|
@@ -1254,6 +1310,35 @@ var platformHostedModels = [
|
|
|
1254
1310
|
contextWindow: 105e4,
|
|
1255
1311
|
supportsReasoningEffort: true
|
|
1256
1312
|
},
|
|
1313
|
+
{
|
|
1314
|
+
// GPT-6.1 Terra(2026-11-01 收进广场,上游 Cloudflare AI Responses):
|
|
1315
|
+
// 事实仅取 CF 官方模型页(developers.cloudflare.com/ai/models/openai/gpt-6.1-terra/,
|
|
1316
|
+
// 2026-11-01 核对):上下文 1,050,000 tokens;请求格式 Responses / Chat Completions;
|
|
1317
|
+
// 官方示例使用 reasoning.effort(→ supportsReasoningEffort);价格见
|
|
1318
|
+
// PLATFORM_HOSTED_GPT_6_1_TERRA_PRICE。
|
|
1319
|
+
// hasVision:官方页模型描述明写「visual reasoning」「match product photos to catalog
|
|
1320
|
+
// entries / interpret technical drawings」= 官方声明了图像理解,故为 true(有文字依据,
|
|
1321
|
+
// 不是猜测;与 6.1 Sol 的 false 是按同一口径——Sol 页无任何视觉声明)。
|
|
1322
|
+
// 同 6.1 Sol:官方页无模型级 tools 能力与 max output 声明 → 不声明 supportsTool、
|
|
1323
|
+
// 不填 maxOutputTokens(沿用缺省,不猜数值)。
|
|
1324
|
+
name: PLATFORM_HOSTED_GPT_6_1_TERRA_MODEL,
|
|
1325
|
+
displayName: "GPT-6.1 Terra",
|
|
1326
|
+
hasVision: true,
|
|
1327
|
+
price: { ...PLATFORM_HOSTED_GPT_6_1_TERRA_PRICE },
|
|
1328
|
+
pricingStrategy: {
|
|
1329
|
+
type: "tiered_context",
|
|
1330
|
+
tiers: [
|
|
1331
|
+
{
|
|
1332
|
+
minContext: PLATFORM_HOSTED_GPT_LONG_CONTEXT_MIN_TOKENS,
|
|
1333
|
+
price: { ...PLATFORM_HOSTED_GPT_6_1_TERRA_LONG_CONTEXT_PRICE }
|
|
1334
|
+
}
|
|
1335
|
+
]
|
|
1336
|
+
},
|
|
1337
|
+
// 2026-11-01 收进广场(= 平台上架日):CF 官方页未给发布日,故不冒称发布日。
|
|
1338
|
+
releasedAtMs: catalogReleasedAt(2026, 11, 1),
|
|
1339
|
+
contextWindow: 105e4,
|
|
1340
|
+
supportsReasoningEffort: true
|
|
1341
|
+
},
|
|
1257
1342
|
// gpt-5.6-sol(2026-10-13):旧 id 是 gpt-6.1-sol 的兼容别名(PLATFORM_MODEL_ALIASES),
|
|
1258
1343
|
// 不再作为可选商品上架;平台托管请求透明落到 6.1 的上游与 6.1 目录价。
|
|
1259
1344
|
// 旧价目常量 PLATFORM_HOSTED_GPT_56_SOL_PRICE 保留给历史记录只读重放(不追溯)。
|