nolo-cli 0.201.0-alpha.1 → 0.202.0-alpha.1

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.
Files changed (124) hide show
  1. package/{_executeModel-JGMNIGV2.js → _executeModel-IPRTPSW7.js} +34 -33
  2. package/{agentDeleteCommand-YUUEASG5.js → agentDeleteCommand-WHT2MMAP.js} +49 -47
  3. package/{agentEmailCommands-EO2WKZMM.js → agentEmailCommands-4LW2BFLY.js} +51 -49
  4. package/{agentListCommands-RQB27IJH.js → agentListCommands-2KF47HY6.js} +81 -45
  5. package/{agentMachineCommands-G3PU5ZEO.js → agentMachineCommands-QQCFQQ4T.js} +28 -26
  6. package/{agentProviderCommands-T6E3JCR6.js → agentProviderCommands-5ALOQLE5.js} +2 -2
  7. package/{agentRecordCommands-LY2HNY4R.js → agentRecordCommands-ARVXF2C2.js} +47 -45
  8. package/{agentRunCommand-6GS6JYDS.js → agentRunCommand-3IL5PW2S.js} +49 -47
  9. package/{agentRunControl-6HHESKDB.js → agentRunControl-ABDUPJLX.js} +10 -5
  10. package/{agentRuntimeLocal-75E4BYTF.js → agentRuntimeLocal-YXHJV65L.js} +24 -22
  11. package/{agentSlice-BCY3LBE4.js → agentSlice-BFDKYW6H.js} +4 -3
  12. package/{appDeleteCommands-PB6HW4NN.js → appDeleteCommands-OWJO3WFB.js} +29 -27
  13. package/{appDeployCommands-EF4OELAA.js → appDeployCommands-X7HLT27G.js} +29 -27
  14. package/{appDeployStatusCommands-CALVQWWC.js → appDeployStatusCommands-CHCZ7ZUD.js} +29 -27
  15. package/{appGetCommands-KFWCTFRM.js → appGetCommands-AZW2EE4R.js} +29 -27
  16. package/{appListCommands-Z5PW6DK7.js → appListCommands-YFN6DP6K.js} +29 -27
  17. package/{authCommand-RV5MQDWN.js → authCommand-W34UWJGR.js} +14 -13
  18. package/{builtinSkillRegistry-7RAJP7FD.js → builtinSkillRegistry-NJVHQIKY.js} +1 -1
  19. package/{chromeOpsCommands-BA6CS4DI.js → chromeOpsCommands-USKE4B4K.js} +15 -4
  20. package/{chunk-RE3B2OCC.js → chunk-266E37EL.js} +69 -14
  21. package/chunk-2BMURXSB.js +1863 -0
  22. package/{chunk-7MDGTSNI.js → chunk-2PI4QFAL.js} +174 -100
  23. package/{chunk-NABJEYPJ.js → chunk-2Q3LOAFE.js} +38 -3
  24. package/{chunk-OIVKFSFN.js → chunk-326HCB6L.js} +28 -24
  25. package/{chunk-4CEAZRZ4.js → chunk-33W4IFUU.js} +1 -1
  26. package/{chunk-V3MGT3RF.js → chunk-3CWF2EUZ.js} +8 -8
  27. package/{chunk-G6OOUQWJ.js → chunk-4KB6WQUL.js} +2 -0
  28. package/{chunk-DYQXB46J.js → chunk-4KPB3KWX.js} +2 -2
  29. package/{chunk-DGFSVNYE.js → chunk-4SH22ZG7.js} +5 -5
  30. package/{chunk-WAZ6BTSC.js → chunk-5E4FSR4J.js} +1 -1
  31. package/{chunk-PVD7CRYV.js → chunk-6I7ZP7KJ.js} +3 -3
  32. package/chunk-6UBGXX2W.js +12 -0
  33. package/{chunk-ZBCBFOWC.js → chunk-A2ZMIRLN.js} +2 -2
  34. package/{chunk-BQZNJCW3.js → chunk-ASG7VWPK.js} +3 -3
  35. package/{chunk-T2LB32MS.js → chunk-BLFZULEQ.js} +3 -3
  36. package/{chunk-JIFYXQRD.js → chunk-BTYQAODF.js} +26 -8
  37. package/{chunk-TDTTBXCO.js → chunk-C7PKPHK6.js} +334 -12
  38. package/{chunk-6WZQGT5X.js → chunk-CJ37ZMCQ.js} +6 -2
  39. package/{chunk-VHGD6FHV.js → chunk-CKAHAVMK.js} +40 -10
  40. package/{chunk-UNOILAZP.js → chunk-CLTGWJVT.js} +76 -4
  41. package/{chunk-Q6RMLYSA.js → chunk-CMLBKYEI.js} +4 -2
  42. package/{chunk-NVOYW6H4.js → chunk-CQHMBWZH.js} +12 -8
  43. package/{chunk-7KWPNGVJ.js → chunk-CTZ4O3XD.js} +1 -1
  44. package/{chunk-OHRDHS4N.js → chunk-CVCRAO6Q.js} +9 -4
  45. package/{chunk-7XSZNV4Q.js → chunk-D57YYGMD.js} +2 -2
  46. package/{chunk-TEC5UHQK.js → chunk-DHJXDGC3.js} +2 -2
  47. package/{chunk-QYOB7RVA.js → chunk-DKZJJ2NQ.js} +3 -2
  48. package/{chunk-A2LR6ORU.js → chunk-E2FC5RMU.js} +17 -14
  49. package/{chunk-R5HEP4LL.js → chunk-ETTDZBK5.js} +4 -4
  50. package/{chunk-LOVRT3E4.js → chunk-FWMOJTGR.js} +3722 -4851
  51. package/{chunk-ZWQUWF6W.js → chunk-G7Y4GXTY.js} +8 -14
  52. package/{chunk-5KTQVMCX.js → chunk-GOO6G4PY.js} +85 -0
  53. package/{chunk-FMOZ57LN.js → chunk-H7HWWNJB.js} +1 -1
  54. package/{chunk-QXM2ETU2.js → chunk-HJS5EIKS.js} +4 -4
  55. package/{chunk-EX7OZOYM.js → chunk-HKWGI3TM.js} +178 -311
  56. package/{chunk-BBGYSMUE.js → chunk-JH7KMNGT.js} +143 -19
  57. package/{chunk-BGYMAW6B.js → chunk-KDUYNEJ5.js} +43 -26
  58. package/{chunk-O5V7QQAF.js → chunk-LEX6DEH4.js} +114 -2
  59. package/{chunk-BTBT2566.js → chunk-MNUOMXJH.js} +412 -9
  60. package/{chunk-N7E3LQ4A.js → chunk-MZXWSY4E.js} +1 -1
  61. package/{chunk-ZQ3EAOY3.js → chunk-NTLJGRAT.js} +1 -1
  62. package/{chunk-WFUIXNKC.js → chunk-P4YLK2OD.js} +3 -3
  63. package/chunk-PRJ473FK.js +63 -0
  64. package/{chunk-2SHLT6JB.js → chunk-Q7GNBUT4.js} +2 -2
  65. package/{chunk-4AUOEYDB.js → chunk-RIKSN62L.js} +3 -3
  66. package/{chunk-GTP6VNWH.js → chunk-RQ22OZD7.js} +3 -3
  67. package/{chunk-XKX3NF6X.js → chunk-RS66RJLA.js} +2 -2
  68. package/{chunk-GC64WGMD.js → chunk-SM3NSZJV.js} +16 -5
  69. package/{chunk-DKLWAY3C.js → chunk-SSK4WNJA.js} +1 -1
  70. package/{chunk-LJODCHJO.js → chunk-SUBNV2JH.js} +3 -3
  71. package/{chunk-HLAL63BZ.js → chunk-T43B7LB2.js} +1 -1
  72. package/{chunk-HTLIKE5U.js → chunk-TWVVTUNG.js} +2 -2
  73. package/{chunk-X3RWBJDQ.js → chunk-U7HTU2S7.js} +1 -1
  74. package/{chunk-76YUTLOT.js → chunk-UIOEHFF6.js} +1 -1
  75. package/{chunk-IIX6VWLW.js → chunk-VCFU3BO5.js} +224 -38
  76. package/{chunk-QU3TLYBR.js → chunk-VEUSD6OF.js} +35 -11
  77. package/{chunk-4YMD7B4Y.js → chunk-WPOKOKZA.js} +2 -2
  78. package/{chunk-K6TZSON4.js → chunk-WTKYP6QO.js} +19 -5
  79. package/{chunk-2IVB6BQL.js → chunk-XW6B2RJW.js} +193 -56
  80. package/{chunk-ZSO5B6SW.js → chunk-Y2WUYX4I.js} +9 -0
  81. package/{chunk-7L7BVUKH.js → chunk-YAGFPXOX.js} +14 -14
  82. package/{chunk-TVGX5QIN.js → chunk-YUA6OAH5.js} +2 -2
  83. package/{chunk-IJBWBWP3.js → chunk-YV2RSLM4.js} +13 -13
  84. package/{chunk-MJWUBTK7.js → chunk-YZGNKHUM.js} +2 -2
  85. package/{commandRegistry-4DGK2ONJ.js → commandRegistry-HEBIO2A4.js} +87 -67
  86. package/{contentThunks-YYLEYO25.js → contentThunks-I4IHSDTM.js} +14 -13
  87. package/{cooldownCommands-KRILPXOZ.js → cooldownCommands-5SJ74DNP.js} +1 -1
  88. package/{createAgentAutomationAction-XKZ6TRRO.js → createAgentAutomationAction-WQCH5HR2.js} +14 -13
  89. package/{createDialogAction-6K5WSBCB.js → createDialogAction-CKMZK5JQ.js} +15 -14
  90. package/{createPageAction-FFFGCOUV.js → createPageAction-QAZHQGY7.js} +14 -13
  91. package/{dialogCommands-BFGCWWVT.js → dialogCommands-YMAHICPJ.js} +30 -28
  92. package/{dialogSlice-AA7672TX.js → dialogSlice-GEGACCH2.js} +13 -12
  93. package/{docCreateCommands-R3D5LUEG.js → docCreateCommands-SNMAKBXN.js} +28 -26
  94. package/{docDeleteCommands-7AGLMCJJ.js → docDeleteCommands-K52UESRC.js} +29 -27
  95. package/{docReadCommands-UVTD4FKH.js → docReadCommands-AG6LLHJ7.js} +28 -26
  96. package/{docStore-QDK5VGEH.js → docStore-B4EFT53J.js} +1 -1
  97. package/{docUpdateCommands-R2JHDAG4.js → docUpdateCommands-B5EZ7DYN.js} +28 -26
  98. package/{fetchMessages-HWBVATSE.js → fetchMessages-YY4SATNR.js} +1 -1
  99. package/{getPricing-E2PLNWCR.js → getPricing-3PQY3TGI.js} +3 -3
  100. package/{handleSendMessageAction-24WPHMZR.js → handleSendMessageAction-4BACQWOG.js} +70 -29
  101. package/index.js +7 -7
  102. package/{lib-4YTWAGY7.js → lib-5KKIBFIT.js} +439 -272
  103. package/{localDialogRead-CT5HGDMC.js → localDialogRead-FUXGZ57B.js} +1 -1
  104. package/{localRuntimeAdapter-4CC5KOMZ.js → localRuntimeAdapter-5CVSCXHI.js} +45 -43
  105. package/{machineCommands-FWTGWKAN.js → machineCommands-R7L4IBQL.js} +48 -46
  106. package/{machineWsRunDispatch-MJ5VOB7P.js → machineWsRunDispatch-KZHTW7DW.js} +46 -44
  107. package/{models-UUNO6DOL.js → models-PJBE6JDV.js} +2 -2
  108. package/{oauthTokenStore-PADKLNOC.js → oauthTokenStore-OEERZFUC.js} +2 -1
  109. package/package.json +1 -1
  110. package/{providerPresetApply-JGNMO2KX.js → providerPresetApply-HBBUUVJD.js} +6 -6
  111. package/{providerRegistry-33J3ZYFJ.js → providerRegistry-5LK2NXYE.js} +6 -6
  112. package/{readlineWorkspace-EQV6DNSG.js → readlineWorkspace-PDPEWRSG.js} +295 -137
  113. package/{runAgentClientLoop-W423XICK.js → runAgentClientLoop-QKV66PX5.js} +31 -30
  114. package/{runtimeDoctorCommands-NYBOTA6D.js → runtimeDoctorCommands-3VFVTGPI.js} +8 -7
  115. package/{secretCommands-N6CMCJDZ.js → secretCommands-MKU25CDP.js} +311 -3
  116. package/{settingThunks-YRYNPWJM.js → settingThunks-4WU7YE62.js} +2 -2
  117. package/{skillDiscovery-F3TMVQOJ.js → skillDiscovery-BKLWW2EZ.js} +2 -2
  118. package/{spaceCommands-J4OSJIYA.js → spaceCommands-VD3CZWXM.js} +27 -25
  119. package/{streamAgentChatTurn-BE3YIENW.js → streamAgentChatTurn-GM3UNSLS.js} +46 -43
  120. package/{tools-CXSCIKA4.js → tools-UJLEQBKI.js} +25 -24
  121. package/{tuiSummaryLlmCaller-FSOADMXK.js → tuiSummaryLlmCaller-73QO3HAD.js} +12 -12
  122. package/{updateCommands-KE6LP3QX.js → updateCommands-RVDAFHBT.js} +3 -3
  123. package/{updateDialogTitleAction-RCTYD5WV.js → updateDialogTitleAction-24QO27NT.js} +14 -13
  124. 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> <value|json> Set a secret (string, or JSON starting with { / [)
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> <value|json> \u8BBE\u7F6E secret\uFF08\u5B57\u7B26\u4E32\uFF0C\u6216\u4EE5 { / [ \u5F00\u5934\u7684 JSON\uFF09
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
- `--- \u9879\u76EE\u6307\u4EE4\uFF08${fileName}\uFF09---
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-PVD7CRYV.js";
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-OHRDHS4N.js";
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-4YMD7B4Y.js";
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-5KTQVMCX.js";
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
- continue;
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" && parsed?.response) {
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-Q6RMLYSA.js";
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-JIFYXQRD.js";
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-5KTQVMCX.js";
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-YYLEYO25.js");
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-FFFGCOUV.js");
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-ZQ3EAOY3.js";
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-UNOILAZP.js";
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-O5V7QQAF.js";
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-2SHLT6JB.js";
4
+ } from "./chunk-Q7GNBUT4.js";
5
5
  import {
6
6
  fetchReferenceContents,
7
7
  mergeReferences,
8
8
  resolveReferenceAssets,
9
9
  resolveToolsFromKeys
10
- } from "./chunk-4AUOEYDB.js";
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-TDTTBXCO.js";
21
+ } from "./chunk-C7PKPHK6.js";
22
22
  import {
23
23
  resolveAgentRecommendedSkillNames,
24
24
  resolveAgentRequiredPackIds
25
- } from "./chunk-QYOB7RVA.js";
25
+ } from "./chunk-DKZJJ2NQ.js";
26
26
  import {
27
27
  getDocState
28
- } from "./chunk-7XSZNV4Q.js";
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-ZBCBFOWC.js";
37
+ } from "./chunk-A2ZMIRLN.js";
38
38
  import {
39
39
  getTableState
40
- } from "./chunk-DKLWAY3C.js";
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-OIVKFSFN.js";
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-K6TZSON4.js";
81
+ } from "./chunk-WTKYP6QO.js";
82
82
  import {
83
83
  getModelContextWindow,
84
84
  planContextUsage
85
- } from "./chunk-JIFYXQRD.js";
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-Q6RMLYSA.js";
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-GC64WGMD.js";
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(agentRefs, dialogExtraRefs);
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-76YUTLOT.js";
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-JGMNIGV2.js");
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-W423XICK.js");
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-BE3YIENW.js");
498
+ const { streamAgentChatTurnHandler } = await import("./streamAgentChatTurn-GM3UNSLS.js");
499
499
  return streamAgentChatTurnHandler(args, thunkApi);
500
500
  }),
501
501
  /**