nolo-cli 0.157.0-alpha.1 → 0.157.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/{_executeModel-5WS2PA62.js → _executeModel-ZIQHOREX.js} +55 -55
  2. package/{accountResolver-7RYB4D2P.js → accountResolver-55EDKEIK.js} +1 -1
  3. package/{action-ZJYUBXFC.js → action-GPPJC5TI.js} +5 -5
  4. package/{addContentAction-TVHB4526.js → addContentAction-XJQEJ4XW.js} +8 -8
  5. package/{addDialogAgentAction-FDPBU6K6.js → addDialogAgentAction-5WZX5CAY.js} +7 -7
  6. package/{agentDeleteCommand-Q6M4F3U6.js → agentDeleteCommand-LQSOJEXY.js} +75 -76
  7. package/{agentEmailCommands-FNH6FEHS.js → agentEmailCommands-HTPKXONW.js} +78 -79
  8. package/{agentListCommands-JUNMFS6E.js → agentListCommands-GOCGOQUB.js} +36 -36
  9. package/{agentMachineCommands-VNLDEKNT.js → agentMachineCommands-T7DAZG77.js} +35 -32
  10. package/{agentProviderCommands-X2HQE6HY.js → agentProviderCommands-CXBHNONN.js} +5 -5
  11. package/{agentPullCommand-FA43RBRU.js → agentPullCommand-GXXEDOSA.js} +4 -4
  12. package/{agentRecordCommands-47XXRVPI.js → agentRecordCommands-HSW3RJ4H.js} +72 -73
  13. package/{agentRunCommand-QEXFJUXQ.js → agentRunCommand-TIRJ57DK.js} +75 -75
  14. package/{agentRunControl-2C5GM3BW.js → agentRunControl-QWFFIAQY.js} +9 -7
  15. package/{agentRuntimeLocal-O5GDAFTN.js → agentRuntimeLocal-J6I63NZC.js} +21 -19
  16. package/{agentSlice-E3XS5FTQ.js → agentSlice-JNM3HF3V.js} +8 -8
  17. package/{appDeleteCommands-C2J5RQ3I.js → appDeleteCommands-KKLAK2UR.js} +31 -29
  18. package/{appDeployCommands-3YRK7PSU.js → appDeployCommands-PXWK4FAX.js} +31 -29
  19. package/{appDeployStatusCommands-FPAX7MOK.js → appDeployStatusCommands-3NGWDZTX.js} +31 -29
  20. package/{appGetCommands-XAC2V766.js → appGetCommands-APWYPEO3.js} +31 -29
  21. package/{appListCommands-ZJL2W5O7.js → appListCommands-OP7IRALO.js} +31 -29
  22. package/{authCommand-J3XILHWW.js → authCommand-3Z52KJID.js} +22 -302
  23. package/{authCommands-77CHYBGF.js → authCommands-QOCKVPX3.js} +5 -5
  24. package/{builtinSkillRegistry-A6VSPJEJ.js → builtinSkillRegistry-LJV7FHNI.js} +4 -4
  25. package/{chromeCommands-OBBNJCLS.js → chromeCommands-IY4NVSXZ.js} +17 -10
  26. package/{chunk-SW4S4XYB.js → chunk-2AB2HA4M.js} +84 -34
  27. package/{chunk-C5VPAHIU.js → chunk-32ZKZET7.js} +1 -1
  28. package/{chunk-XPWGOTBQ.js → chunk-3L2WKC3W.js} +1 -8
  29. package/{chunk-3XZKV7QQ.js → chunk-3L5MSPWX.js} +1 -1
  30. package/{chunk-QLQ573SU.js → chunk-3M52COK5.js} +120 -0
  31. package/{chunk-VSOWPETY.js → chunk-4226O6F7.js} +10 -10
  32. package/{chunk-Z6KQDSZW.js → chunk-43OFVLWJ.js} +6 -6
  33. package/{chunk-TJ2VPCBE.js → chunk-4JCAW7TO.js} +2 -2
  34. package/{chunk-6TF64IF2.js → chunk-4L4K6YR7.js} +16 -2
  35. package/{chunk-PEO24UB5.js → chunk-5E5VB7PS.js} +324 -57
  36. package/{chunk-ZD2BLOY6.js → chunk-5EDQTOUR.js} +7 -7
  37. package/{chunk-HKT6QXP3.js → chunk-5IKRTRRR.js} +5 -5
  38. package/{chunk-P5QACQDK.js → chunk-62TBKWTV.js} +1 -1
  39. package/{chunk-TRW43TSC.js → chunk-6EQD4AQL.js} +41 -1
  40. package/{chunk-YLMMECCH.js → chunk-6XIE5ZGI.js} +1 -1
  41. package/{chunk-OH2M7WEU.js → chunk-6Y3ETA2Y.js} +3 -3
  42. package/{chunk-7A4LJCDR.js → chunk-B3ZIFOFI.js} +5 -5
  43. package/{chunk-WZ6OU4NX.js → chunk-BAWAKW7X.js} +2 -2
  44. package/{chunk-UUPR3TD7.js → chunk-BL4HFN6L.js} +2 -4
  45. package/{chunk-2GGXHQIW.js → chunk-BLVSFYQ3.js} +4 -2
  46. package/{chunk-HP6O6LTV.js → chunk-CDLP56BS.js} +9 -9
  47. package/{chunk-UTIMX333.js → chunk-DJ2BOPJY.js} +1 -1
  48. package/{chunk-36OMEXXR.js → chunk-DLV3H464.js} +8 -8
  49. package/{chunk-CE7PIHQD.js → chunk-ESMZW5PE.js} +3 -3
  50. package/{chunk-PSJWPSKS.js → chunk-EWO77ZGF.js} +9 -43
  51. package/{chunk-ZWG3C7VI.js → chunk-F3SOW2EU.js} +81 -1
  52. package/{chunk-FY4SDK2E.js → chunk-FDLDMJTM.js} +1 -1
  53. package/{chunk-KOB75UNU.js → chunk-FHG46N5C.js} +53 -4
  54. package/{chunk-7KYVUFDG.js → chunk-G3VYRPTV.js} +5 -267
  55. package/{chunk-DW7MGLMG.js → chunk-GGUTTH6C.js} +35 -207
  56. package/{chunk-6MJNEXUU.js → chunk-HGDKT2D6.js} +4 -0
  57. package/{chunk-B2EGWZJG.js → chunk-I7S63QUU.js} +1 -1
  58. package/{chunk-ROPSATAB.js → chunk-IF7V3CBU.js} +1 -1
  59. package/chunk-IKOKYBYJ.js +2685 -0
  60. package/{chunk-T6CBQ6BN.js → chunk-INFHX73M.js} +1 -1
  61. package/{chunk-YBNHPX4S.js → chunk-IW64YHXL.js} +155 -31
  62. package/{chunk-K43ZF2C3.js → chunk-JPPQ3GUO.js} +1 -1
  63. package/{chunk-TZTWMGE3.js → chunk-JWEXJ573.js} +3 -3
  64. package/{chunk-RUNKPFM5.js → chunk-K6Y5T4GE.js} +12 -8
  65. package/{chunk-MVJVF4ED.js → chunk-KESKU5BG.js} +18 -17
  66. package/{chunk-I2ZMGXXF.js → chunk-KFHREHUQ.js} +1 -1
  67. package/{chunk-3C2QLERX.js → chunk-KMDDG73K.js} +1 -1
  68. package/{chunk-5MM7NNO6.js → chunk-KSTEXKL6.js} +78 -39
  69. package/{chunk-EM3YOZJ4.js → chunk-L2JMH4I5.js} +3 -3
  70. package/{chunk-MM3662RS.js → chunk-LPO6AMQU.js} +780 -64
  71. package/{chunk-D4OWHT5Y.js → chunk-MAYW6V3E.js} +2 -2
  72. package/{chunk-IPAW7XLD.js → chunk-MFVOJ6KF.js} +2 -2
  73. package/{chunk-FDT27L7S.js → chunk-MLEANT7D.js} +19 -17
  74. package/{chunk-7GC3EKUG.js → chunk-MMSQTZCJ.js} +3 -3
  75. package/{chunk-XFKZ3MCV.js → chunk-MR3ITQEV.js} +344 -88
  76. package/{chunk-CBHGZRCE.js → chunk-MYOH447Z.js} +1 -1
  77. package/{chunk-6MPAEODB.js → chunk-NHEWV5FD.js} +17 -3
  78. package/{chunk-ZEHTARJA.js → chunk-NLFTBC6S.js} +321 -150
  79. package/{chunk-SKPPKHD3.js → chunk-OLUKIUX6.js} +2 -2
  80. package/{chunk-SUKSWFLP.js → chunk-PIG2IUVZ.js} +1 -1
  81. package/{chunk-SEJ5OS6F.js → chunk-PXYBUFDB.js} +4 -0
  82. package/{chunk-2MTE2PEH.js → chunk-QA2C5NKI.js} +5 -739
  83. package/{chunk-L6EQV5OC.js → chunk-QXZH5UDF.js} +3 -3
  84. package/{chunk-TNIX77YM.js → chunk-R5GO3YZP.js} +34 -1
  85. package/{chunk-X5SUT4CN.js → chunk-R7GCGOGZ.js} +6 -6
  86. package/{chunk-4Z245KOA.js → chunk-SH3XD4E2.js} +8 -4
  87. package/{chunk-JGRPBIZZ.js → chunk-SQX235S2.js} +1 -1
  88. package/chunk-TT644UJD.js +188 -0
  89. package/{chunk-IYBIRCQV.js → chunk-U34KT53V.js} +29 -11
  90. package/{chunk-ANJTRG52.js → chunk-ULQAD7ZY.js} +18 -43
  91. package/{chunk-QDA4Y5O6.js → chunk-UVYSBQ2M.js} +21 -17
  92. package/{chunk-I2RMFLLH.js → chunk-V7PCFWX3.js} +1 -1
  93. package/{chunk-HXHSTRGH.js → chunk-VYNMQ6HW.js} +0 -27
  94. package/{chunk-G47IPDOK.js → chunk-W7FGZRLK.js} +1 -1
  95. package/{chunk-7BSQK2UC.js → chunk-WRCZXJ4N.js} +2 -2
  96. package/{chunk-KX6LPG7W.js → chunk-WYJTNSVL.js} +9 -9
  97. package/{chunk-H4KACZMG.js → chunk-XZIW3Q5B.js} +271 -138
  98. package/chunk-Y5GCAMGP.js +9 -0
  99. package/{chunk-JZX2XLKC.js → chunk-YCRROBDY.js} +1 -1
  100. package/{chunk-FPWT3RH2.js → chunk-YN5DT4JS.js} +22 -22
  101. package/{chunk-SCJD2PNK.js → chunk-YPG7TUQD.js} +3 -3
  102. package/{chunk-EJU23ST5.js → chunk-ZKVS36H3.js} +5069 -3730
  103. package/{chunk-YANF2RR4.js → chunk-ZPKUJROL.js} +1 -1
  104. package/{chunk-TYND6RDQ.js → chunk-ZZDVBZOP.js} +74 -3
  105. package/{commandRegistry-OUBQIF62.js → commandRegistry-DR2RPWK6.js} +88 -96
  106. package/{contentThunks-B3FRQGP7.js → contentThunks-CSJDJDEJ.js} +21 -21
  107. package/{createAgentAutomationAction-T2YFJ6MY.js → createAgentAutomationAction-ISEUEQSY.js} +21 -21
  108. package/{createDialogAction-2NFGFBXW.js → createDialogAction-HUCFOZY3.js} +25 -25
  109. package/{createPageAction-LDAVZDN7.js → createPageAction-DT5CYXCL.js} +24 -25
  110. package/{dbSlice-5QGKMQLO.js → dbSlice-6PVPY44C.js} +7 -7
  111. package/{deleteFile-EW6QNRRT.js → deleteFile-YM6NDPAR.js} +5 -5
  112. package/{dialogCommands-ZLBEAQHE.js → dialogCommands-3W6AIUXT.js} +35 -32
  113. package/{dialogSlice-64S3J6CP.js → dialogSlice-WJEEPG4W.js} +20 -20
  114. package/{dist-NJC2W7I4.js → dist-Q2JSMAKA.js} +7 -361
  115. package/{docCreateCommands-XOG5BBFQ.js → docCreateCommands-KQHQNLRX.js} +32 -30
  116. package/{docDeleteCommands-NCW3BBRX.js → docDeleteCommands-O3DWFX2W.js} +33 -31
  117. package/{docReadCommands-OT7X44Y3.js → docReadCommands-2U2BUONC.js} +32 -30
  118. package/{docStore-NIP7OO4I.js → docStore-7JPYT25V.js} +8 -8
  119. package/{docUpdateCommands-JW7OWW2J.js → docUpdateCommands-MF3C52XI.js} +32 -30
  120. package/{getPricing-TX35D7PI.js → getPricing-XQ3N3RBP.js} +2 -2
  121. package/{handleSendMessageAction-TOKA7ED7.js → handleSendMessageAction-BV5FMID4.js} +43 -39
  122. package/index.js +8 -8
  123. package/{localRuntimeAdapter-EQM6LFYC.js → localRuntimeAdapter-6FBEJJ4D.js} +70 -69
  124. package/{localRuntimeAuthority-JDAD7CB6.js → localRuntimeAuthority-BPN5OAQG.js} +2 -2
  125. package/{localRuntimeDb-CVC62PM5.js → localRuntimeDb-QIVAXMUL.js} +1 -1
  126. package/{machineCommands-WJ7FZ67T.js → machineCommands-WCAFDI5N.js} +80 -79
  127. package/{machineWsRunDispatch-BQT4DEA2.js → machineWsRunDispatch-ZF6BBQ3X.js} +70 -71
  128. package/{memberThunks-KRV5YXOB.js → memberThunks-AZINUM4S.js} +10 -10
  129. package/package.json +6 -2
  130. package/{profileConfig-ZGOFORWV.js → profileConfig-KN3N2BLF.js} +7 -1
  131. package/{providerPresetApply-CRZFMQD5.js → providerPresetApply-PKUOHQJT.js} +5 -5
  132. package/{providerRegistry-7IS43D3X.js → providerRegistry-HNQLIFN2.js} +5 -5
  133. package/{read-5KAZHHDM.js → read-7JPIWRBQ.js} +5 -5
  134. package/{readDocTool-5QO34OSX.js → readDocTool-AAQTB2Y3.js} +1 -1
  135. package/{readlineWorkspace-JHJSU5DS.js → readlineWorkspace-I5MHMEUE.js} +375 -200
  136. package/{removeDialogAgentAction-6X63HMI3.js → removeDialogAgentAction-RMVRILLK.js} +9 -9
  137. package/{runAgentClientLoop-5QIGEALK.js → runAgentClientLoop-TSNSRQEP.js} +59 -54
  138. package/{runtimeDoctorCommands-56NWKNON.js → runtimeDoctorCommands-MMCP4B4U.js} +12 -12
  139. package/{secretCommands-ZXZRLR3R.js → secretCommands-DNY56NSU.js} +11 -1
  140. package/{setDialogExtraReferencesAction-4MAYKKYW.js → setDialogExtraReferencesAction-L3V7JTMG.js} +8 -8
  141. package/{setPrimaryDialogAgentAction-EGBAMREH.js → setPrimaryDialogAgentAction-X52JQGTJ.js} +9 -9
  142. package/settingThunks-N6XFWPOU.js +923 -0
  143. package/{spaceCommands-ZWDPTURU.js → spaceCommands-NDPGHDMD.js} +29 -27
  144. package/{streamAgentChatTurn-456DWXNY.js → streamAgentChatTurn-RJLDV4WZ.js} +154 -95
  145. package/{switchDialogAgentAction-YBKTD6DO.js → switchDialogAgentAction-ZJ5CGU7J.js} +7 -7
  146. package/{tableCommands-U3QDY4L6.js → tableCommands-IVC5S7Y3.js} +11 -11
  147. package/{toolApiClient-7WSJJJBV.js → toolApiClient-HGNO53TC.js} +2 -2
  148. package/{tools-IWNXKK4Y.js → tools-X6QNIYFJ.js} +43 -44
  149. package/{tuiSummaryLlmCaller-KLK6K3Q3.js → tuiSummaryLlmCaller-FESHBDTT.js} +7 -7
  150. package/{updateCommands-NQXAGFM7.js → updateCommands-FJHGWD3Q.js} +5 -3
  151. package/{updateDialogTitleAction-SX53FZWO.js → updateDialogTitleAction-6LURCTMG.js} +21 -21
  152. package/{workloadLifecycle-36DXRZKU.js → workloadLifecycle-6O6PMISX.js} +2 -2
  153. package/chunk-IA7TRNNR.js +0 -11
  154. package/chunk-UKZX3NHN.js +0 -48
  155. package/chunk-VAZHH6FO.js +0 -7012
  156. package/chunk-W4S6OTSC.js +0 -35
  157. package/clipboardy-GCO3GT3I.js +0 -11793
  158. package/settingThunks-FTDRZNSJ.js +0 -1371
  159. package/{agentGrantCommands-HOJ3JBBQ.js → agentGrantCommands-5DPHYEKP.js} +3 -3
  160. package/{chromeOpsCommands-3Z34RKSE.js → chromeOpsCommands-GZVVK7HU.js} +4 -4
  161. package/{chunk-XETG4RIX.js → chunk-AETZ7AD6.js} +4 -4
  162. package/{chunk-2IXDJNZI.js → chunk-GAGGEA7D.js} +3 -3
  163. package/{memoryCommands-CUNBFRVS.js → memoryCommands-ZS3VQJAL.js} +3 -3
  164. package/{offlineMarxistsAgentCommand-2QTHJCHV.js → offlineMarxistsAgentCommand-3GLX4QQY.js} +3 -3
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DEFAULT_AGENT_BASE_POLICY,
3
3
  DEFAULT_USER_PREFERENCE_PROFILE
4
- } from "./chunk-HXHSTRGH.js";
4
+ } from "./chunk-VYNMQ6HW.js";
5
5
 
6
6
  // packages/ai/policy/runtimePolicy.ts
7
7
  var clampLevel = (value, fallback) => {
@@ -4,15 +4,15 @@ import {
4
4
  import {
5
5
  DEFAULT_NOLO_SERVER_URL
6
6
  } from "./chunk-OLZBQWZU.js";
7
- import {
8
- normalizeServerOrigin
9
- } from "./chunk-CF7PE763.js";
10
7
  import {
11
8
  loadProfileConfig
12
- } from "./chunk-TNIX77YM.js";
9
+ } from "./chunk-R5GO3YZP.js";
13
10
  import {
14
11
  resolveDefaultSpawn
15
12
  } from "./chunk-Y6ROFCZO.js";
13
+ import {
14
+ normalizeServerOrigin
15
+ } from "./chunk-CF7PE763.js";
16
16
 
17
17
  // packages/cli/updateCommands.ts
18
18
  import { existsSync as existsSync2, readFileSync as readFileSync2, accessSync, constants } from "node:fs";
@@ -912,6 +912,144 @@ async function runShellScript(script, {
912
912
  ]);
913
913
  return exitCode;
914
914
  }
915
+ function shellQuote(value) {
916
+ return "'" + value.replace(/'/g, "'\\''") + "'";
917
+ }
918
+ function buildStandaloneUpdateScript(args) {
919
+ const curl = "curl -fL --progress-bar --connect-timeout 20 --max-time 600 --speed-limit 1 --speed-time 60";
920
+ return `set -eu
921
+ EXTRACT_DIR=${shellQuote(args.extractDir)}
922
+ ENTRY=${shellQuote(args.symlinkPath)}
923
+ CURRENT_VERSION=${shellQuote(args.currentVersion)}
924
+ STAGING="$EXTRACT_DIR.new.$$"
925
+ BACKUP="$EXTRACT_DIR.old.$$"
926
+ LINK="$ENTRY.new.$$"
927
+ old_moved=0
928
+ new_moved=0
929
+ committed=0
930
+ cleanup() {
931
+ status=$?
932
+ trap - 0 HUP INT TERM
933
+ if [ "$committed" = 0 ]; then
934
+ if [ "$new_moved" = 1 ] && [ -d "$EXTRACT_DIR" ]; then
935
+ mv "$EXTRACT_DIR" "$STAGING" || exit 1
936
+ fi
937
+ if [ "$old_moved" = 1 ] && [ -d "$BACKUP" ]; then
938
+ mv "$BACKUP" "$EXTRACT_DIR" || exit 1
939
+ fi
940
+ fi
941
+ rm -rf "$STAGING" || true
942
+ rm -f "$LINK" || true
943
+ exit "$status"
944
+ }
945
+ # Refuse collisions before installing cleanup: never remove somebody else's path.
946
+ if [ -e "$STAGING" ] || [ -L "$STAGING" ] ||
947
+ [ -e "$BACKUP" ] || [ -L "$BACKUP" ] ||
948
+ [ -e "$LINK" ] || [ -L "$LINK" ]; then
949
+ echo "Error: update staging path already exists" >&2
950
+ exit 1
951
+ fi
952
+ mkdir -p "\${EXTRACT_DIR%/*}"
953
+ mkdir "$STAGING"
954
+ trap cleanup 0
955
+ trap 'exit 1' HUP INT TERM
956
+
957
+ echo ${shellQuote(`Downloading nolo from ${args.tarballUrl}...`)}
958
+ if ! ${curl} ${shellQuote(args.tarballUrl)} -o "$STAGING/bundle.tar.gz"; then
959
+ ${args.tarballUrl !== args.fallbackUrl ? `echo ${shellQuote(`Primary source unavailable, trying ${args.fallbackUrl}...`)}
960
+ if ! ${curl} ${shellQuote(args.fallbackUrl)} -o "$STAGING/bundle.tar.gz"; then
961
+ echo "Error: download failed" >&2
962
+ exit 1
963
+ fi` : `echo "Error: download failed" >&2
964
+ exit 1`}
965
+ fi
966
+ tar -xzf "$STAGING/bundle.tar.gz" -C "$STAGING"
967
+ rm -f "$STAGING/bundle.tar.gz"
968
+ chmod +x "$STAGING/nolo"
969
+ # A failing, empty or malformed version response must not touch the live install.
970
+ VERSION_TEXT=$("$STAGING/nolo" -v)
971
+ case "$VERSION_TEXT" in
972
+ "nolo-cli "*) VERSION=\${VERSION_TEXT#nolo-cli } ;;
973
+ *) VERSION=$VERSION_TEXT ;;
974
+ esac
975
+ CORE=\${VERSION%%[-+]*}
976
+ MAJOR=\${CORE%%.*}
977
+ REST=\${CORE#*.}
978
+ MINOR=\${REST%%.*}
979
+ PATCH=\${REST#*.}
980
+ case "$MAJOR:$MINOR:$PATCH" in
981
+ *[!0-9:]*|:*|*::*|*:) echo "Error: invalid bundle version" >&2; exit 1 ;;
982
+ esac
983
+ if [ "$CORE" != "$MAJOR.$MINOR.$PATCH" ]; then
984
+ echo "Error: invalid bundle version" >&2
985
+ exit 1
986
+ fi
987
+ case "$VERSION" in
988
+ *[!0-9A-Za-z.+-]*) echo "Error: invalid bundle version" >&2; exit 1 ;;
989
+ esac
990
+ case "$CURRENT_VERSION" in
991
+ "nolo-cli "*) CUR_VER=\${CURRENT_VERSION#nolo-cli } ;;
992
+ *) CUR_VER=$CURRENT_VERSION ;;
993
+ esac
994
+ CUR_CORE=\${CUR_VER%%[-+]*}
995
+ CUR_MAJOR=\${CUR_CORE%%.*}
996
+ CUR_REST=\${CUR_CORE#*.}
997
+ CUR_MINOR=\${CUR_REST%%.*}
998
+ CUR_PATCH=\${CUR_REST#*.}
999
+ if [ -n "$CUR_MAJOR" ] && [ -n "$CUR_MINOR" ] && [ -n "$CUR_PATCH" ]; then
1000
+ case "$CUR_MAJOR:$CUR_MINOR:$CUR_PATCH" in
1001
+ *[!0-9:]*|:*|*::*|*:) ;;
1002
+ *)
1003
+ if [ "$CUR_CORE" = "$CUR_MAJOR.$CUR_MINOR.$CUR_PATCH" ]; then
1004
+ is_downgrade=0
1005
+ if [ "$MAJOR" -lt "$CUR_MAJOR" ]; then
1006
+ is_downgrade=1
1007
+ elif [ "$MAJOR" -eq "$CUR_MAJOR" ]; then
1008
+ if [ "$MINOR" -lt "$CUR_MINOR" ]; then
1009
+ is_downgrade=1
1010
+ elif [ "$MINOR" -eq "$CUR_MINOR" ]; then
1011
+ if [ "$PATCH" -lt "$CUR_PATCH" ]; then
1012
+ is_downgrade=1
1013
+ fi
1014
+ fi
1015
+ fi
1016
+ if [ "$is_downgrade" = 1 ]; then
1017
+ echo "Error: refusing downgrade from $CURRENT_VERSION to $VERSION" >&2
1018
+ exit 11
1019
+ fi
1020
+ fi
1021
+ ;;
1022
+ esac
1023
+ fi
1024
+ if [ "$VERSION" = "$CURRENT_VERSION" ]; then
1025
+ echo "\u2713 Already up to date (nolo-cli $VERSION)."
1026
+ exit 10
1027
+ fi
1028
+ mkdir -p "\${ENTRY%/*}"
1029
+ # mv without -T is portable only when the destination is not a directory.
1030
+ if [ -d "$ENTRY" ] || [ -L "$EXTRACT_DIR" ]; then
1031
+ echo "Error: refusing directory entrypoint or symlink bundle directory" >&2
1032
+ exit 1
1033
+ fi
1034
+ ln -s "$EXTRACT_DIR/nolo" "$LINK"
1035
+ if [ -e "$EXTRACT_DIR" ]; then
1036
+ old_moved=1
1037
+ mv "$EXTRACT_DIR" "$BACKUP"
1038
+ fi
1039
+ new_moved=1
1040
+ mv "$STAGING" "$EXTRACT_DIR"
1041
+ mv -f "$LINK" "$ENTRY"
1042
+ committed=1
1043
+ # Retain only the newest recovery copy from this run; prune older backups.
1044
+ for old_copy in "$EXTRACT_DIR.old."*; do
1045
+ if [ -d "$old_copy" ] && [ ! -L "$old_copy" ] && [ "$old_copy" != "$BACKUP" ]; then
1046
+ rm -rf "$old_copy" || true
1047
+ fi
1048
+ done
1049
+ # Retain the previous bundle as a recovery copy; never unlink the live entry.
1050
+ echo "nolo updated to $ENTRY"
1051
+ `;
1052
+ }
915
1053
  async function runStandaloneBundleUpdate(options) {
916
1054
  const output = options.output ?? process.stdout;
917
1055
  const spawn2 = options.spawn ?? resolveDefaultSpawn();
@@ -937,33 +1075,13 @@ async function runStandaloneBundleUpdate(options) {
937
1075
  const extractDir = join2(homedir2(), ".nolo", extractSubdir);
938
1076
  const installDir = resolveStandaloneInstallDir();
939
1077
  const symlinkPath = join2(installDir, "nolo");
940
- const script = `set -euo pipefail
941
- TEMP_DIR=$(mktemp -d)
942
- trap 'rm -rf "$TEMP_DIR"' EXIT
943
-
944
- echo "Downloading nolo from ${tarballUrl}..."
945
- if ! curl -fL --progress-bar "${tarballUrl}" -o "$TEMP_DIR/${tarballName}"; then
946
- ${tarballUrl !== fallbackUrl ? `echo "Primary source unavailable, trying ${fallbackUrl}..."
947
- if ! curl -fL --progress-bar "${fallbackUrl}" -o "$TEMP_DIR/${tarballName}"; then
948
- echo "Error: download failed from ${fallbackUrl}" >&2
949
- exit 1
950
- fi` : `echo "Error: download failed from ${tarballUrl}" >&2
951
- exit 1`}
952
- fi
953
-
954
- mkdir -p "${extractDir}"
955
- tar -xzf "$TEMP_DIR/${tarballName}" -C "${extractDir}"
956
- chmod +x "${extractDir}/nolo"
957
-
958
- mkdir -p "${installDir}"
959
- if [ -e "${symlinkPath}" ] || [ -L "${symlinkPath}" ]; then
960
- rm -f "${symlinkPath}"
961
- fi
962
- ln -s "${extractDir}/nolo" "${symlinkPath}"
963
- trap - EXIT
964
-
965
- echo "nolo updated to ${installDir}/nolo"
966
- `;
1078
+ const script = buildStandaloneUpdateScript({
1079
+ tarballUrl,
1080
+ fallbackUrl,
1081
+ extractDir,
1082
+ symlinkPath,
1083
+ currentVersion: readPackageInfo().version
1084
+ });
967
1085
  output.write(`
968
1086
  Nolo Agent CLI Installer & Updater
969
1087
  `);
@@ -980,6 +1098,11 @@ Nolo Agent CLI Installer & Updater
980
1098
  env,
981
1099
  useCustomSink
982
1100
  });
1101
+ if (exitCode === 10) {
1102
+ output.write(` ${renderProgressBar(100)}
1103
+ `);
1104
+ return 0;
1105
+ }
983
1106
  if (exitCode === 0) {
984
1107
  output.write(` ${renderProgressBar(100)}
985
1108
  `);
@@ -1167,6 +1290,7 @@ export {
1167
1290
  buildSelfUpdateCommand,
1168
1291
  resolveSelfUpdateServerUrl,
1169
1292
  buildCliDoctorText,
1293
+ buildStandaloneUpdateScript,
1170
1294
  runStandaloneBundleUpdate,
1171
1295
  NOLO_UPDATE_CHECK_KILL_SWITCH,
1172
1296
  compareCliVersions,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolvePlatformAuthToken
3
- } from "./chunk-SUKSWFLP.js";
3
+ } from "./chunk-PIG2IUVZ.js";
4
4
  import {
5
5
  getCredentialsDir
6
6
  } from "./chunk-ZWQUWF6W.js";
@@ -4,14 +4,14 @@ import {
4
4
  import {
5
5
  patch,
6
6
  read
7
- } from "./chunk-HP6O6LTV.js";
7
+ } from "./chunk-CDLP56BS.js";
8
8
  import {
9
9
  DEVICE_LOCAL_OWNER_ID,
10
10
  isDeviceLocalSpaceBody
11
- } from "./chunk-Z6KQDSZW.js";
11
+ } from "./chunk-43OFVLWJ.js";
12
12
  import {
13
13
  selectIdentityUserId
14
- } from "./chunk-SEJ5OS6F.js";
14
+ } from "./chunk-PXYBUFDB.js";
15
15
 
16
16
  // packages/create/space/utils/permissions.ts
17
17
  var checkSpaceMembership = (spaceData, userId) => {
@@ -5,24 +5,24 @@ import {
5
5
  normalizePolicyLevelSetting,
6
6
  normalizeSystemBuiltinSkills,
7
7
  normalizeTonePresetSetting
8
- } from "./chunk-HXHSTRGH.js";
8
+ } from "./chunk-VYNMQ6HW.js";
9
9
  import {
10
10
  fetchAndCacheTableRows
11
- } from "./chunk-VAZHH6FO.js";
11
+ } from "./chunk-IKOKYBYJ.js";
12
12
  import {
13
13
  require_react
14
14
  } from "./chunk-YDH3FDFQ.js";
15
15
  import {
16
16
  createAsyncThunk,
17
17
  createSelector
18
- } from "./chunk-7BSQK2UC.js";
18
+ } from "./chunk-WRCZXJ4N.js";
19
19
  import {
20
20
  selectIdentityUserId
21
- } from "./chunk-SEJ5OS6F.js";
21
+ } from "./chunk-PXYBUFDB.js";
22
22
  import {
23
23
  resolveBuiltinCapability,
24
24
  resolveBuiltinSkillEntry
25
- } from "./chunk-4Z245KOA.js";
25
+ } from "./chunk-SH3XD4E2.js";
26
26
  import {
27
27
  DEFAULT_SYSTEM_AGENT_CAPABILITIES
28
28
  } from "./chunk-EUGTFFO6.js";
@@ -287,7 +287,11 @@ var MODES = [
287
287
  var DEFAULT_RECOMMENDED_SKILL_SLUGS = [
288
288
  "worktree-isolation",
289
289
  "systematic-investigation",
290
- "show-me"
290
+ "show-me",
291
+ // 凭据管理:仓库已有 nolo secret(set/list/run/bind),但技能发现只扫
292
+ // `.agents/skills`,内置的 secrets-manager 不会出现在"可用技能"里。放进默认
293
+ // 提示名单让它至少以一行提示出现(不授工具、不放宽权限)。
294
+ "secrets-manager"
291
295
  ];
292
296
  var asMode = (value) => typeof value === "string" && MODES.includes(value) ? value : null;
293
297
  var resolveAgentSkillConfig = (source) => {
@@ -517,7 +521,7 @@ var executeToolRun = createAsyncThunk(
517
521
  if (!executionInput) {
518
522
  throw new Error(`ToolRun ${id} has no input to execute with.`);
519
523
  }
520
- const { findToolExecutor } = await import("./tools-IWNXKK4Y.js");
524
+ const { findToolExecutor } = await import("./tools-X6QNIYFJ.js");
521
525
  const { executor } = findToolExecutor(run.toolName);
522
526
  toolRunStarted({
523
527
  id: run.id,
@@ -541,7 +545,7 @@ var executeToolRun = createAsyncThunk(
541
545
  const latestState = thunkApi.getState();
542
546
  const userId = selectIdentityUserId(latestState);
543
547
  if (userId) {
544
- const { fetchUserSpaceMemberships } = await import("./memberThunks-KRV5YXOB.js");
548
+ const { fetchUserSpaceMemberships } = await import("./memberThunks-AZINUM4S.js");
545
549
  await thunkApi.dispatch(fetchUserSpaceMemberships(userId));
546
550
  }
547
551
  }
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  createCliLocalRuntimeAdapter,
3
3
  summarizeEndpoint
4
- } from "./chunk-EJU23ST5.js";
4
+ } from "./chunk-ZKVS36H3.js";
5
5
  import {
6
6
  t
7
- } from "./chunk-SW4S4XYB.js";
7
+ } from "./chunk-2AB2HA4M.js";
8
8
  import {
9
9
  clipMultilineText
10
- } from "./chunk-RUNKPFM5.js";
10
+ } from "./chunk-K6Y5T4GE.js";
11
11
  import {
12
12
  runLocalAgentTurn
13
- } from "./chunk-PEO24UB5.js";
13
+ } from "./chunk-5E5VB7PS.js";
14
14
  import {
15
15
  applyToolSurfaceConstraints
16
- } from "./chunk-QLQ573SU.js";
16
+ } from "./chunk-3M52COK5.js";
17
17
  import {
18
18
  resolveLocalRuntimeEnvFromPolicy
19
19
  } from "./chunk-LIQJTQRN.js";
@@ -29,6 +29,16 @@ import {
29
29
  import {
30
30
  asOptionalPositiveFiniteNumber
31
31
  } from "./chunk-U6VC4MU4.js";
32
+ import {
33
+ parseUserIdFromAuthToken
34
+ } from "./chunk-A7GB5UGH.js";
35
+ import {
36
+ DEFAULT_NOLO_SERVER_URL
37
+ } from "./chunk-OLZBQWZU.js";
38
+ import {
39
+ readPipeText,
40
+ spawnProcess
41
+ } from "./chunk-Y6ROFCZO.js";
32
42
  import {
33
43
  isRecord
34
44
  } from "./chunk-KUG52IAP.js";
@@ -38,19 +48,9 @@ import {
38
48
  import {
39
49
  toErrorMessage
40
50
  } from "./chunk-HNMXYYJR.js";
41
- import {
42
- parseUserIdFromAuthToken
43
- } from "./chunk-A7GB5UGH.js";
44
- import {
45
- DEFAULT_NOLO_SERVER_URL
46
- } from "./chunk-OLZBQWZU.js";
47
51
  import {
48
52
  asOptionalTrimmedString
49
53
  } from "./chunk-G3SUCT4W.js";
50
- import {
51
- readPipeText,
52
- spawnProcess
53
- } from "./chunk-Y6ROFCZO.js";
54
54
 
55
55
  // packages/ai/agent/machineRunPermissions.ts
56
56
  var DEFAULT_POLICY = {
@@ -672,8 +672,9 @@ ${Date.now()}
672
672
  async function runOracleGenerateImage(args) {
673
673
  const proc = args.spawn({
674
674
  cmd: [
675
- "npx",
676
- "-y",
675
+ "bun",
676
+ "x",
677
+ "--bun",
677
678
  "@steipete/oracle",
678
679
  "--engine",
679
680
  "browser",
@@ -3,7 +3,7 @@ import {
3
3
  isCoreDrainingBody,
4
4
  normalizeNonNegativeMs,
5
5
  parseRetryAfterHeaderMs
6
- } from "./chunk-XPWGOTBQ.js";
6
+ } from "./chunk-3L2WKC3W.js";
7
7
  import {
8
8
  toErrorMessage
9
9
  } from "./chunk-HNMXYYJR.js";
@@ -5,7 +5,7 @@ import {
5
5
  getAntigravityUserAgent,
6
6
  readAntigravityProjectId,
7
7
  resolveAntigravityCloudCodeBaseUrl
8
- } from "./chunk-JGRPBIZZ.js";
8
+ } from "./chunk-SQX235S2.js";
9
9
  import {
10
10
  asOptionalTrimmedString
11
11
  } from "./chunk-G3SUCT4W.js";
@@ -1,6 +1,3 @@
1
- import {
2
- escapeStringRegexp
3
- } from "./chunk-IA7TRNNR.js";
4
1
  import {
5
2
  asTrimmedString
6
3
  } from "./chunk-3EUW3WEO.js";
@@ -7141,6 +7138,14 @@ function ccount(value, character) {
7141
7138
  function ok() {
7142
7139
  }
7143
7140
 
7141
+ // node_modules/escape-string-regexp/index.js
7142
+ function escapeStringRegexp(string3) {
7143
+ if (typeof string3 !== "string") {
7144
+ throw new TypeError("Expected a string");
7145
+ }
7146
+ return string3.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
7147
+ }
7148
+
7144
7149
  // node_modules/unist-util-is/lib/index.js
7145
7150
  var convert = (
7146
7151
  // Note: overloads in JSDoc can’t yet use different `@template`s.
@@ -7250,16 +7255,50 @@ var empty = [];
7250
7255
  var CONTINUE = true;
7251
7256
  var EXIT = false;
7252
7257
  var SKIP = "skip";
7253
- function visitParents(tree, test, visitor, reverse) {
7258
+ function visitParents(tree, testOrEnterOrVisitors, enterOrVisitorsOrReverse, reverse) {
7259
+ if (!tree || typeof tree !== "object") {
7260
+ throw new Error("Unexpected value `" + tree + "` for `tree`, expected node");
7261
+ }
7262
+ let preorder = true;
7254
7263
  let check;
7255
- if (typeof test === "function" && typeof visitor !== "function") {
7256
- reverse = visitor;
7257
- visitor = test;
7264
+ let visitors;
7265
+ let enter;
7266
+ let exit3;
7267
+ if (typeof enterOrVisitorsOrReverse === "function" || enterOrVisitorsOrReverse && typeof enterOrVisitorsOrReverse === "object") {
7268
+ check = /** @type {Test} */
7269
+ testOrEnterOrVisitors;
7270
+ visitors = enterOrVisitorsOrReverse;
7271
+ if (reverse) preorder = false;
7258
7272
  } else {
7259
- check = test;
7273
+ visitors = /** @type {Visitors | Visitor} */
7274
+ testOrEnterOrVisitors;
7275
+ if (enterOrVisitorsOrReverse) preorder = false;
7276
+ }
7277
+ if (typeof visitors === "function") {
7278
+ enter = visitors;
7279
+ } else if (visitors && typeof visitors === "object") {
7280
+ if (visitors.enter === null || visitors.enter === void 0) {
7281
+ } else if (typeof visitors.enter === "function") {
7282
+ enter = visitors.enter;
7283
+ } else {
7284
+ throw new Error(
7285
+ "Unexpected value `" + visitors.enter + "` for `visitors.enter`, expected optional visitor"
7286
+ );
7287
+ }
7288
+ if (typeof visitors.exit === "function") {
7289
+ exit3 = visitors.exit;
7290
+ } else {
7291
+ throw new Error(
7292
+ "Unexpected value `" + visitors.exit + "` for `visitors.exit`, expected visitor (pass a visitor directly if you only want an enter visitor)"
7293
+ );
7294
+ }
7295
+ } else {
7296
+ throw new Error(
7297
+ "Unexpected value `" + visitors + "` for `enter` or `visitors`, expected visitor or object with visitors"
7298
+ );
7260
7299
  }
7261
7300
  const is2 = convert(check);
7262
- const step = reverse ? -1 : 1;
7301
+ const step = preorder ? 1 : -1;
7263
7302
  factory(tree, void 0, [])();
7264
7303
  function factory(node2, index2, parents) {
7265
7304
  const value = (
@@ -7280,12 +7319,10 @@ function visitParents(tree, test, visitor, reverse) {
7280
7319
  }
7281
7320
  return visit;
7282
7321
  function visit() {
7322
+ const matches = !check || is2(node2, index2, parents[parents.length - 1] || void 0);
7283
7323
  let result = empty;
7284
- let subresult;
7285
- let offset;
7286
- let grandparents;
7287
- if (!test || is2(node2, index2, parents[parents.length - 1] || void 0)) {
7288
- result = toResult(visitor(node2, parents));
7324
+ if (enter && matches) {
7325
+ result = toResult(enter(node2, parents, index2));
7289
7326
  if (result[0] === EXIT) {
7290
7327
  return result;
7291
7328
  }
@@ -7296,11 +7333,11 @@ function visitParents(tree, test, visitor, reverse) {
7296
7333
  node2
7297
7334
  );
7298
7335
  if (nodeAsParent.children && result[0] !== SKIP) {
7299
- offset = (reverse ? nodeAsParent.children.length : -1) + step;
7300
- grandparents = parents.concat(nodeAsParent);
7336
+ let offset = (preorder ? -1 : nodeAsParent.children.length) + step;
7337
+ const grandparents = [...parents, nodeAsParent];
7301
7338
  while (offset > -1 && offset < nodeAsParent.children.length) {
7302
7339
  const child = nodeAsParent.children[offset];
7303
- subresult = factory(child, offset, grandparents)();
7340
+ const subresult = factory(child, offset, grandparents)();
7304
7341
  if (subresult[0] === EXIT) {
7305
7342
  return subresult;
7306
7343
  }
@@ -7308,6 +7345,17 @@ function visitParents(tree, test, visitor, reverse) {
7308
7345
  }
7309
7346
  }
7310
7347
  }
7348
+ if (exit3 && matches) {
7349
+ const exitResult = toResult(exit3(node2, parents, index2));
7350
+ if (exitResult[0] === SKIP) {
7351
+ throw new Error(
7352
+ "Unexpected value `" + exitResult[0] + "` from `exit`, expected `CONTINUE`, `EXIT`, index, or nothing"
7353
+ );
7354
+ }
7355
+ if (exitResult[0] === EXIT || typeof exitResult[1] === "number") {
7356
+ return exitResult;
7357
+ }
7358
+ }
7311
7359
  return result;
7312
7360
  }
7313
7361
  }
@@ -7329,34 +7377,19 @@ function findAndReplace(tree, list2, options) {
7329
7377
  const pairs = toPairs(list2);
7330
7378
  let pairIndex = -1;
7331
7379
  while (++pairIndex < pairs.length) {
7332
- visitParents(tree, "text", visitor);
7380
+ visitParents(tree, visitor);
7333
7381
  }
7334
- function visitor(node2, parents) {
7335
- let index2 = -1;
7336
- let grandparent;
7337
- while (++index2 < parents.length) {
7338
- const parent = parents[index2];
7339
- const siblings = grandparent ? grandparent.children : void 0;
7340
- if (ignored(
7341
- parent,
7342
- siblings ? siblings.indexOf(parent) : void 0,
7343
- grandparent
7344
- )) {
7345
- return;
7346
- }
7347
- grandparent = parent;
7348
- }
7349
- if (grandparent) {
7350
- return handler(node2, parents);
7382
+ function visitor(node2, parents, index2) {
7383
+ if (node2.type === "text" && typeof index2 === "number") {
7384
+ return handler(node2, parents, index2);
7351
7385
  }
7386
+ if (ignored(node2, index2, parents[parents.length - 1])) return SKIP;
7352
7387
  }
7353
- function handler(node2, parents) {
7388
+ function handler(node2, parents, index2) {
7354
7389
  const parent = parents[parents.length - 1];
7355
7390
  const find = pairs[pairIndex][0];
7356
7391
  const replace2 = pairs[pairIndex][1];
7357
7392
  let start = 0;
7358
- const siblings = parent.children;
7359
- const index2 = siblings.indexOf(node2);
7360
7393
  let change = false;
7361
7394
  let nodes = [];
7362
7395
  find.lastIndex = 0;
@@ -7415,7 +7448,13 @@ function toPairs(tupleOrList) {
7415
7448
  throw new TypeError("Expected find and replace tuple or list of tuples");
7416
7449
  }
7417
7450
  const result = [];
7418
- const list2 = !tupleOrList[0] || Array.isArray(tupleOrList[0]) ? tupleOrList : [tupleOrList];
7451
+ const list2 = !tupleOrList[0] || Array.isArray(tupleOrList[0]) ? (
7452
+ /** @type {FindAndReplaceList} */
7453
+ tupleOrList
7454
+ ) : [
7455
+ /** @type {FindAndReplaceTuple} */
7456
+ tupleOrList
7457
+ ];
7419
7458
  let index2 = -1;
7420
7459
  while (++index2 < list2.length) {
7421
7460
  const tuple = list2[index2];
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  listUserRecordsFromServers,
3
3
  readLiveDbRecordAfterTombstoneMerge
4
- } from "./chunk-G47IPDOK.js";
4
+ } from "./chunk-W7FGZRLK.js";
5
5
  import {
6
6
  agentRecordHasConfiguredCredential
7
- } from "./chunk-HKT6QXP3.js";
7
+ } from "./chunk-5IKRTRRR.js";
8
8
  import {
9
9
  deriveCredentialGroup
10
- } from "./chunk-KX6LPG7W.js";
10
+ } from "./chunk-WYJTNSVL.js";
11
11
  import {
12
12
  isTombstoneRecord
13
13
  } from "./chunk-D2MDMY2M.js";