nolo-cli 0.212.0-alpha.1 → 0.222.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/README.md +3 -2
  2. package/{_executeModel-KE6MBNUJ.js → _executeModel-4GGQQHOB.js} +111 -82
  3. package/{accountResolver-4LKIHEKL.js → accountResolver-EK2S4PWF.js} +6 -6
  4. package/{action-DF5UYSJF.js → action-CK64LS6S.js} +12 -11
  5. package/{addContentAction-N2YC5IL3.js → addContentAction-GDHDOF4U.js} +18 -17
  6. package/{addDialogAgentAction-3NKVQCEC.js → addDialogAgentAction-CAKRU3ZT.js} +21 -20
  7. package/{agentDeleteCommand-NWK7VU4N.js → agentDeleteCommand-BPV2XZL7.js} +128 -119
  8. package/{agentEmailCommands-UZ4DHEX2.js → agentEmailCommands-EJOS75YL.js} +132 -124
  9. package/{agentFavoriteCommands-EDK743YA.js → agentFavoriteCommands-2LKGKSUD.js} +7 -8
  10. package/{agentGrantCommands-RQWK2TEV.js → agentGrantCommands-QQV4N4JW.js} +5 -5
  11. package/{agentListCommands-HE7L2A6L.js → agentListCommands-HIZODBF3.js} +196 -124
  12. package/{agentMachineCommands-6TE4MBMP.js → agentMachineCommands-ZMQ2CY7Y.js} +62 -53
  13. package/{agentProviderCommands-Q5O33MED.js → agentProviderCommands-WKJOAWBP.js} +5 -5
  14. package/{agentPullCommand-6EM3URVK.js → agentPullCommand-XN6ZPBUW.js} +7 -7
  15. package/agentRecordCommands-OMXVDLDX.js +176 -0
  16. package/agentRunCommand-CB34YWMV.js +206 -0
  17. package/{agentRunControl-OI3LOENH.js → agentRunControl-JNONH3RP.js} +30 -15
  18. package/{agentRuntimeLocal-HL526DNQ.js → agentRuntimeLocal-QZPFWMLG.js} +52 -45
  19. package/{agentSlice-TMYP2UEA.js → agentSlice-RD2CDU7T.js} +20 -19
  20. package/{appDeleteCommands-ZERW4AXY.js → appDeleteCommands-QCCFDIEQ.js} +61 -52
  21. package/{appDeployCommands-DUWSMYHL.js → appDeployCommands-V2T7TNMQ.js} +61 -52
  22. package/{appDeployStatusCommands-N2KIE4BF.js → appDeployStatusCommands-6PGH7ZCG.js} +61 -52
  23. package/{appGetCommands-YVR4NPVY.js → appGetCommands-3L7WWJA6.js} +61 -52
  24. package/{appListCommands-JS6HOHZS.js → appListCommands-ENJCK4PO.js} +61 -52
  25. package/{authCommand-FE2C3ZUM.js → authCommand-6V47SYGK.js} +29 -28
  26. package/{authCommands-HV3EAU3V.js → authCommands-GAJ3NIXO.js} +14 -13
  27. package/{builtinSkillRegistry-3YOIGEF6.js → builtinSkillRegistry-2ECA42FC.js} +11 -13
  28. package/{chromeCommands-REEAH4SX.js → chromeCommands-G5UDKVSV.js} +3 -3
  29. package/{chromeOpsCommands-HEN5AX2J.js → chromeOpsCommands-YKX2QX3A.js} +20 -10
  30. package/{chunk-DM6UMOEL.js → chunk-27PCUMJI.js} +2 -2
  31. package/chunk-2CI3ZFWD.js +97 -0
  32. package/{chunk-HIRC32DV.js → chunk-2GJKRKI6.js} +543 -29
  33. package/{chunk-SM3NSZJV.js → chunk-2UCBGYO4.js} +20 -1
  34. package/{chunk-PYRUW7XN.js → chunk-2VUZSVAS.js} +136 -54
  35. package/chunk-2YGBI2XB.js +30 -0
  36. package/chunk-2ZKFCIJJ.js +13 -0
  37. package/{chunk-CJRONOYL.js → chunk-34J5K2YA.js} +19 -75
  38. package/{chunk-LOEO7LRC.js → chunk-3IK6ILVW.js} +4 -1
  39. package/{chunk-CTPXME7U.js → chunk-3LMUPOHG.js} +29 -6
  40. package/chunk-44X52WOJ.js +1621 -0
  41. package/{chunk-6VLJ6YA7.js → chunk-4DESLZTK.js} +9 -9
  42. package/{chunk-MYOH447Z.js → chunk-4JVNURX4.js} +1 -1
  43. package/chunk-5CHGAKRT.js +364 -0
  44. package/{chunk-YDH3FDFQ.js → chunk-5FUN7EG4.js} +1 -1
  45. package/{chunk-LKDF3ATR.js → chunk-5RKUPJYL.js} +1 -1
  46. package/{chunk-ZC3CMUKU.js → chunk-6OVNSQHN.js} +84 -2
  47. package/{chunk-IF45XG7K.js → chunk-6WU5572L.js} +40 -24
  48. package/{chunk-OHNELDTO.js → chunk-7EEZJ6BS.js} +11 -152
  49. package/{chunk-Y6ORVLSS.js → chunk-7ET2U67U.js} +1 -1
  50. package/{chunk-G7MLNNEX.js → chunk-7JLY4WYF.js} +5 -5
  51. package/{chunk-P5L7CXOC.js → chunk-7Z6EW7AH.js} +3 -2
  52. package/{chunk-IIQ6JGRI.js → chunk-AD5EWDFD.js} +2 -2
  53. package/{chunk-WXYLV624.js → chunk-AIHYNKGV.js} +4 -4
  54. package/{chunk-HPFCI4SK.js → chunk-AK5O76CC.js} +3 -3
  55. package/{chunk-Y63ZSOR6.js → chunk-AL3TYDIF.js} +1 -1
  56. package/{chunk-PJNFNEJE.js → chunk-AMEOV5VZ.js} +59 -13
  57. package/chunk-AN74ON4G.js +675 -0
  58. package/{chunk-HRMJUN5J.js → chunk-AQZ6BMRK.js} +1 -1
  59. package/{chunk-CQ46IRNN.js → chunk-B4GOW4MT.js} +445 -201
  60. package/{chunk-4KB6WQUL.js → chunk-BGP2EDFG.js} +1 -1
  61. package/{chunk-NBTY7YJF.js → chunk-BR3GT6MR.js} +1 -0
  62. package/{chunk-7RFNTILS.js → chunk-BUDVRYES.js} +2 -2
  63. package/{chunk-D2MDMY2M.js → chunk-BV3FLP2L.js} +47 -1
  64. package/{chunk-25JZEIXN.js → chunk-C4VAR65S.js} +92 -150
  65. package/{chunk-AVTVGMDY.js → chunk-C4WTX5TU.js} +2 -2
  66. package/{chunk-ZL5RAEEB.js → chunk-CIRB724Q.js} +1 -1
  67. package/{chunk-F6UUQOG6.js → chunk-CKT6QUE2.js} +4 -4
  68. package/{chunk-M6RL5JCD.js → chunk-CMZ3Z5PT.js} +14 -14
  69. package/{secretCommands-4QS3HCA2.js → chunk-D726I5AZ.js} +191 -16
  70. package/{chunk-INSBKSBB.js → chunk-DNKTQ3IN.js} +4 -4
  71. package/chunk-DVQH4BTR.js +1137 -0
  72. package/{chunk-SOHTHFV2.js → chunk-DWX2HEVC.js} +91 -132
  73. package/{chunk-NOMIGOST.js → chunk-EIAI3PPH.js} +116 -124
  74. package/chunk-EUCFKKDM.js +247 -0
  75. package/chunk-EWQ3HGNZ.js +90 -0
  76. package/{chunk-RPQXPZZF.js → chunk-F3GRJO4Z.js} +908 -13
  77. package/{chunk-GSQNH63I.js → chunk-FIYSMXHY.js} +3 -19
  78. package/{chunk-KSTEXKL6.js → chunk-FJ23FZXF.js} +76 -31
  79. package/{chunk-INN4LTAJ.js → chunk-FJK526XH.js} +2 -2
  80. package/chunk-FS2XP5D7.js +142 -0
  81. package/{chunk-QT6PKHYJ.js → chunk-FYF2TONJ.js} +5 -5
  82. package/{chunk-OXME3PEE.js → chunk-GBWGPTA7.js} +2 -1
  83. package/{chunk-RU4SD66C.js → chunk-GYVCJABP.js} +30 -254
  84. package/{chunk-YUXQAVRD.js → chunk-HOCHUZQ7.js} +257 -90
  85. package/{chunk-Y2WUYX4I.js → chunk-HXER7YJF.js} +4 -4
  86. package/chunk-HYIETXA6.js +99 -0
  87. package/{chunk-H2TJUNCH.js → chunk-I4EADJ4P.js} +6 -6
  88. package/{chunk-TCZHTTUU.js → chunk-I7WBYGBP.js} +8 -8
  89. package/{chunk-5RYBGBQH.js → chunk-IILMY4W4.js} +14 -9
  90. package/chunk-JA3ICVJY.js +271 -0
  91. package/{chunk-ZRSNONOB.js → chunk-JWXITTQB.js} +8 -3
  92. package/{chunk-JNKSDZFS.js → chunk-KEN3N2TN.js} +310 -66
  93. package/{chunk-LEC5ALIN.js → chunk-KEPOVMF4.js} +1 -1
  94. package/{chunk-UHJGXRJ4.js → chunk-KQSYAIZR.js} +3 -3
  95. package/{chunk-4VJAC32I.js → chunk-L5I543VB.js} +3 -2
  96. package/chunk-LKA64WH4.js +227 -0
  97. package/{chunk-6OQUPIQF.js → chunk-LVL6GFCM.js} +4 -4
  98. package/{chunk-UTV2AYEG.js → chunk-MAIITKBT.js} +2 -2
  99. package/chunk-MBG66ZBH.js +226 -0
  100. package/{chunk-YUA6OAH5.js → chunk-MDLS23JK.js} +2 -2
  101. package/{chunk-VL5KOY2C.js → chunk-MK2Q7ZJD.js} +67 -5
  102. package/{chunk-B7NJ3T4A.js → chunk-MS4NZNKI.js} +10 -10
  103. package/{chunk-3AKFVZ2I.js → chunk-MYHNBEXD.js} +3 -3
  104. package/{chunk-VZKUKCA6.js → chunk-MZLE5HQ3.js} +3673 -241
  105. package/{chunk-AZMYUSVF.js → chunk-N5Z2V73W.js} +1 -1
  106. package/chunk-NIZ2BXFD.js +526 -0
  107. package/{chunk-YPD3VJZW.js → chunk-NWP2OYOX.js} +20 -20
  108. package/{chunk-3FOQHGHN.js → chunk-O6J3OTOP.js} +4 -4
  109. package/{chunk-3RQVYR4B.js → chunk-OB6DVWPF.js} +197 -65
  110. package/{chunk-YWSEPJ7C.js → chunk-OBWT45ZU.js} +3 -3
  111. package/{chunk-5AQR3DGV.js → chunk-ODJ7BVSI.js} +80 -11
  112. package/{chunk-XJWWBO34.js → chunk-OJKUU3LP.js} +5 -7
  113. package/{chunk-GNDJKC4B.js → chunk-ON37YXGX.js} +29 -29
  114. package/{chunk-D5RCRX4A.js → chunk-P5ZJRTCH.js} +9415 -5169
  115. package/{chunk-6XIE5ZGI.js → chunk-PDCV7P5W.js} +1 -1
  116. package/{chunk-EZFQ6XRV.js → chunk-PJCIP64Z.js} +861 -59
  117. package/{chunk-GPO7FCEZ.js → chunk-PJVKMGPZ.js} +1222 -1719
  118. package/{chunk-CKAHAVMK.js → chunk-PPJYZRSQ.js} +40 -26
  119. package/chunk-QHEN7NZ7.js +46 -0
  120. package/{chunk-4KH4J3G5.js → chunk-QNWG52I4.js} +19 -7
  121. package/{chunk-YGILMZ7N.js → chunk-QVBXJNZ2.js} +1 -1
  122. package/chunk-RDH5CQ4T.js +1382 -0
  123. package/{chunk-C6KNNXWU.js → chunk-RGQ4UUWZ.js} +25 -2
  124. package/{chunk-OWYYDMGJ.js → chunk-S2NTVGA2.js} +4 -2
  125. package/{chunk-KC4XDTT3.js → chunk-SOF4OWDM.js} +6 -4
  126. package/{chunk-IAPCBNEE.js → chunk-SQYIK6HO.js} +1 -1
  127. package/{chunk-22CIEBYO.js → chunk-SVT62ULE.js} +50 -48
  128. package/{chunk-KIM6CLW5.js → chunk-SY3C4SQ7.js} +42 -15
  129. package/{chunk-JY5NGFFH.js → chunk-SYTHYBMI.js} +5 -5
  130. package/{chunk-6NSSLV67.js → chunk-T6DXNI6Z.js} +52 -50
  131. package/chunk-TLE77UJ5.js +230 -0
  132. package/{chunk-4VNS5WPM.js → chunk-U67V476Y.js} +1 -8
  133. package/{chunk-F7CI2ZC5.js → chunk-UAIHKQIA.js} +2 -1
  134. package/{chunk-MMNYUVLW.js → chunk-UB3D4TRQ.js} +11 -77
  135. package/{chunk-WPORQFYN.js → chunk-UVLYNWIE.js} +2 -2
  136. package/{chunk-YOIW77S2.js → chunk-UYOICCYG.js} +29 -19
  137. package/{chunk-4I7ERB7F.js → chunk-VREDDN25.js} +1 -1
  138. package/{chunk-JIT6FSXJ.js → chunk-WAE3GFCJ.js} +3 -3
  139. package/{chunk-IJXYFTV7.js → chunk-WI67URFP.js} +20 -20
  140. package/{chunk-7OCO4TDT.js → chunk-WJVYAO6P.js} +1 -1
  141. package/{chunk-T43B7LB2.js → chunk-WKGQSYTB.js} +1 -1
  142. package/{chunk-YJMRHHGY.js → chunk-WUUH4LWZ.js} +60 -30
  143. package/{chunk-PDGKOTO7.js → chunk-X7UF53VA.js} +33 -22
  144. package/{chunk-TY3TIUJK.js → chunk-XI2BWJM5.js} +65 -0
  145. package/{chunk-OOF4UPC5.js → chunk-XWVCYUUU.js} +16 -159
  146. package/{chunk-J5JTMQIA.js → chunk-YFLVRVYK.js} +1 -1
  147. package/{chunk-EYLGAEB4.js → chunk-YGMBIXCF.js} +132 -0
  148. package/chunk-YL3EFYL3.js +199 -0
  149. package/{chunk-MMA3LZ3W.js → chunk-YNIYE47Z.js} +1 -1
  150. package/{chunk-W4S457LU.js → chunk-YU4ZPWVF.js} +41 -5
  151. package/{chunk-NJR3WKVP.js → chunk-YWWDC3O7.js} +281 -159
  152. package/chunk-YZMNK53S.js +68 -0
  153. package/{chunk-FHU44LN3.js → chunk-Z2PITYZN.js} +2179 -552
  154. package/{chunk-FY7F4Q6X.js → chunk-Z4PCXPUE.js} +2 -2
  155. package/{cliAgentConfigHelpers-WJBZQTLW.js → cliAgentConfigHelpers-TKYL43MT.js} +15 -16
  156. package/{cliAuthorityBrokerClient-PM3U6Q6J.js → cliAuthorityBrokerClient-XHH7MH2P.js} +1 -1
  157. package/{cliAuthorityStoreDriver-TKLXNNTG.js → cliAuthorityStoreDriver-6FE3BJNB.js} +1 -1
  158. package/{cliEnvHelpers-BVYTMUPJ.js → cliEnvHelpers-VPSJ4XWC.js} +3 -3
  159. package/{cliExecutor-BWBF2MTI.js → cliExecutor-4MAX3PZL.js} +2 -2
  160. package/cliLocalAgentRecordReader-MHHD4T7R.js +90 -0
  161. package/{commandRegistry-VVMTPFAX.js → commandRegistry-5DA5UP7S.js} +106 -98
  162. package/{contentThunks-N52O67MI.js → contentThunks-5GUQ7FWJ.js} +47 -43
  163. package/{cooldownCommands-YXLWOXWR.js → cooldownCommands-X7P5M2V5.js} +5 -4
  164. package/{createAgentAutomationAction-ZC57YRSV.js → createAgentAutomationAction-UCLTHQRI.js} +51 -49
  165. package/{createDialogAction-VQW5WDYX.js → createDialogAction-UPN774AF.js} +46 -48
  166. package/{createPageAction-M5VDA7SC.js → createPageAction-JRQ2TA4O.js} +50 -48
  167. package/{cursorProvider-YGGNMVWX.js → cursorProvider-2RACMEMF.js} +1 -1
  168. package/{db-HUCI5R4G.js → db-CS4ZJQKV.js} +1 -1
  169. package/{dbSlice-HP7G4LX3.js → dbSlice-WNON7TOL.js} +17 -16
  170. package/{deleteFile-7VQGLK2V.js → deleteFile-Q3YDB4ML.js} +9 -9
  171. package/{desktopFolderProjects-SFY5EZS3.js → desktopFolderProjects-4POAMVJN.js} +2 -2
  172. package/{dialogCommands-JHMR2N2Y.js → dialogCommands-VRI7VCXH.js} +64 -57
  173. package/dialogNotifyCommand-6TMCX4D2.js +36 -0
  174. package/{dialogSlice-GRSVGDTF.js → dialogSlice-LFNVUSAN.js} +42 -40
  175. package/{dialogUsageCommand-7KCPYGHG.js → dialogUsageCommand-HTVPR2CX.js} +11 -10
  176. package/{docCreateCommands-F2K3UPSQ.js → docCreateCommands-AMPXMOX3.js} +61 -54
  177. package/{docDeleteCommands-XGXB5RFT.js → docDeleteCommands-I5WFAEHP.js} +63 -57
  178. package/{docReadCommands-7HWZZV6J.js → docReadCommands-X53ELNIE.js} +61 -54
  179. package/{docStore-KNZK6Y2G.js → docStore-2VAWVLWH.js} +21 -20
  180. package/{docUpdateCommands-OZZ7NQII.js → docUpdateCommands-6QPNDC7M.js} +64 -57
  181. package/{fetchMessages-M3QU7ZCQ.js → fetchMessages-TQEUZD7H.js} +8 -7
  182. package/{getPricing-2MNMXEVG.js → getPricing-MB2GBXOK.js} +6 -6
  183. package/{handleSendMessageAction-SHIH74GJ.js → handleSendMessageAction-AAJOHXOB.js} +193 -301
  184. package/{hostCredentialCreate-X64WK4JD.js → hostCredentialCreate-GLMJ22M6.js} +123 -114
  185. package/index.js +29 -29
  186. package/{keys-BEGDOTRL.js → keys-RWF7UCB4.js} +5 -4
  187. package/legacyMigration-TF4SYJCZ.js +19 -0
  188. package/{lib-5KKIBFIT.js → lib-OT5OTXRU.js} +7087 -6664
  189. package/{localDialogRead-XRLAH4CZ.js → localDialogRead-SVTPA5GY.js} +3 -3
  190. package/{localFirstLog-DHNOY2NA.js → localFirstLog-OIETGK66.js} +1 -1
  191. package/localRecall-2J6QPOK2.js +15 -0
  192. package/{localRuntimeAdapter-A7K3ABA6.js → localRuntimeAdapter-BMP57P42.js} +119 -110
  193. package/{localRuntimeAuthority-OYH4AE4G.js → localRuntimeAuthority-IBJAT62G.js} +1 -1
  194. package/{localRuntimeDb-VBIMCWUC.js → localRuntimeDb-N7KHDXS2.js} +2 -2
  195. package/{machineCommands-DE3MR7CJ.js → machineCommands-3MLIAK5Q.js} +128 -119
  196. package/{machineInfo-UKPTZO5Y.js → machineInfo-LWHTEBHJ.js} +1 -1
  197. package/machineWsRunDispatch-FKIGROQF.js +191 -0
  198. package/{memberThunks-7WJAY5V6.js → memberThunks-ZGLZ36PK.js} +29 -28
  199. package/{memoryCommands-ASCE5STX.js → memoryCommands-5WC3T66U.js} +4 -4
  200. package/models-ULVWLSQ6.js +9 -0
  201. package/{oauthTokenStore-OEERZFUC.js → oauthTokenStore-RUYNYALS.js} +1 -1
  202. package/{offlineMarxistsAgentCommand-2QTHJCHV.js → offlineMarxistsAgentCommand-4IC3Y4C6.js} +4 -4
  203. package/overlay-THLKYIWY.js +11 -0
  204. package/package.json +2 -2
  205. package/{pdf-U6KSUEZZ.js → pdf-KE3QI2V7.js} +1 -1
  206. package/{processSpawn-ZU5QFM43.js → processSpawn-6GEO77KV.js} +1 -1
  207. package/{profileConfig-KN3N2BLF.js → profileConfig-KOWK4HOG.js} +1 -1
  208. package/{projectArchive-GGL5HLMD.js → projectArchive-HK63GMF4.js} +52 -50
  209. package/{providerPresetApply-YXGV6NXB.js → providerPresetApply-OIFQ73LH.js} +19 -12
  210. package/{providerRegistry-S6UL6UNA.js → providerRegistry-KZ3SDZ3D.js} +10 -10
  211. package/{read-4VZQODSN.js → read-MRQHJMJ2.js} +10 -10
  212. package/{readDocTool-AVD32RUJ.js → readDocTool-4BGTXTXA.js} +2 -2
  213. package/{readlineWorkspace-XKYKNL2I.js → readlineWorkspace-AKAHSCNY.js} +6505 -4634
  214. package/{removeDialogAgentAction-FKL4BYMR.js → removeDialogAgentAction-B6H7DXFM.js} +23 -22
  215. package/{runAgentClientLoop-V7E2WBVM.js → runAgentClientLoop-UVAWGEON.js} +81 -79
  216. package/{runtimeDoctorCommands-QAI3MBKQ.js → runtimeDoctorCommands-FW6XKDUG.js} +12 -12
  217. package/{runtimeModeArgs-2Y7BALTO.js → runtimeModeArgs-X7DL7PUN.js} +1 -1
  218. package/secretCommands-LJXOOYA7.js +24 -0
  219. package/{setDialogExtraReferencesAction-TLIOLWWI.js → setDialogExtraReferencesAction-EVCY3TRW.js} +22 -21
  220. package/{setPrimaryDialogAgentAction-2OLWRFYR.js → setPrimaryDialogAgentAction-KPFVPHCJ.js} +23 -22
  221. package/{settingThunks-UGBPCNYF.js → settingThunks-ENOAK2WV.js} +97 -88
  222. package/{skillDiscovery-XKHROSH2.js → skillDiscovery-B5V23AXP.js} +4 -4
  223. package/{skillSummaryMarker-42HKSXYY.js → skillSummaryMarker-62UW7HI7.js} +1 -1
  224. package/{slateToRenderMarkdown-Y5IYN73U.js → slateToRenderMarkdown-R3X74MCX.js} +1 -1
  225. package/{slateUtils-NGV2NMKM.js → slateUtils-ESQAJ6RN.js} +1 -1
  226. package/{spaceCommands-4KSLKVNF.js → spaceCommands-DTTNAS2L.js} +61 -53
  227. package/store-JRVN62NM.js +46 -0
  228. package/{streamAgentChatTurn-7FR7X2NU.js → streamAgentChatTurn-R5UY25VB.js} +875 -618
  229. package/{switchDialogAgentAction-UZSAG2N5.js → switchDialogAgentAction-SZ44XDRY.js} +21 -20
  230. package/{tableCommands-MP6VFSVT.js → tableCommands-HITDSLHS.js} +10 -10
  231. package/tombstones-FQQMEDOW.js +32 -0
  232. package/{toolApiClient-HGNO53TC.js → toolApiClient-OGQEBQVX.js} +4 -4
  233. package/{tools-ZLKCC25W.js → tools-HWFG6GMJ.js} +75 -74
  234. package/tuiSummaryLlmCaller-HQQZAMYF.js +44 -0
  235. package/{updateCommands-4744PL3P.js → updateCommands-RJVCRSBP.js} +10 -8
  236. package/{updateDialogTitleAction-U53ZT7PJ.js → updateDialogTitleAction-KNPOAMVS.js} +48 -46
  237. package/{usageCommand-F4IPVMIZ.js → usageCommand-FWZCB7AM.js} +11 -10
  238. package/{usageRebuildCommand-HAW2AD5N.js → usageRebuildCommand-SP2BLNJU.js} +12 -11
  239. package/userDataMerge-HT2ZVHBJ.js +13 -0
  240. package/{windowsSelfUpdate-XSQVF2GK.js → windowsSelfUpdate-KERHIAB4.js} +3 -3
  241. package/{workloadLifecycle-4BEQHMSD.js → workloadLifecycle-DYNEYHV5.js} +7 -6
  242. package/agentRecordCommands-L3QQ7HZ4.js +0 -167
  243. package/agentRunCommand-2IFGQHCO.js +0 -196
  244. package/chunk-3CGG2PAL.js +0 -594
  245. package/chunk-5XBUWM6I.js +0 -89
  246. package/chunk-BFM34N54.js +0 -842
  247. package/chunk-CJEIOP3E.js +0 -0
  248. package/chunk-CZM5YTZ7.js +0 -977
  249. package/chunk-EYUBHHFB.js +0 -636
  250. package/chunk-JTDORD5P.js +0 -415
  251. package/chunk-NRFKLKRU.js +0 -339
  252. package/chunk-VPAZOH2D.js +0 -115
  253. package/chunk-WJZOQR2J.js +0 -151
  254. package/chunk-ZCWRMUWT.js +0 -89
  255. package/dist-M676ULYG.js +0 -7314
  256. package/machineWsRunDispatch-R26P5V36.js +0 -182
  257. package/models-PJBE6JDV.js +0 -9
  258. package/tuiSummaryLlmCaller-WC54MVGP.js +0 -160
  259. package/{chunk-WACI5I6V.js → chunk-2THCNKE4.js} +3 -3
  260. package/{chunk-2QHFH3DR.js → chunk-47ITIXO7.js} +6 -6
  261. package/{chunk-GOO6G4PY.js → chunk-CKG3PRZ7.js} +0 -0
  262. package/{chunk-OQHIVPG4.js → chunk-SNBZZPYH.js} +3 -3
  263. package/{chunk-AETZ7AD6.js → chunk-W6RFEDN4.js} +3 -3
package/chunk-3CGG2PAL.js DELETED
@@ -1,594 +0,0 @@
1
- import {
2
- _appendRetiredStateBatch,
3
- loadMemoryVNextCatalog
4
- } from "./chunk-TY3TIUJK.js";
5
- import {
6
- resolveMachineId
7
- } from "./chunk-S73EPYNC.js";
8
- import {
9
- getDefaultCliLocalRuntimeDb
10
- } from "./chunk-AZMYUSVF.js";
11
- import {
12
- resolveAuthTokenFromEnv
13
- } from "./chunk-WACI5I6V.js";
14
- import {
15
- DEFAULT_NOLO_SERVER_URL
16
- } from "./chunk-OLZBQWZU.js";
17
- import {
18
- normalizeServerOrigin
19
- } from "./chunk-CF7PE763.js";
20
- import {
21
- buildCliRuntimeEnv,
22
- clearProfileAuthToken,
23
- getCurrentProfile,
24
- getDefaultProfileConfigPath,
25
- getProfileTokens,
26
- loadProfileConfig,
27
- saveDefaultProfile
28
- } from "./chunk-R5GO3YZP.js";
29
- import {
30
- createMemoryKey,
31
- createMemoryOwnerIndexKey,
32
- createMemorySubjectKindIndexKey,
33
- memoryOwnerRange
34
- } from "./chunk-JY5NGFFH.js";
35
- import {
36
- asTrimmedNonEmptyStringArray
37
- } from "./chunk-I42VC5KR.js";
38
- import {
39
- asTrimmedString
40
- } from "./chunk-3EUW3WEO.js";
41
-
42
- // packages/cli/authCommands.ts
43
- import { createInterface } from "node:readline/promises";
44
- import { stdin as input, stdout as output } from "node:process";
45
- import { spawn } from "node:child_process";
46
-
47
- // packages/ai/memory/delete.ts
48
- var VNEXT_STATE_ID_PREFIX = "vnext-state-";
49
- var toVNextMemoryItem = (state, owner) => ({
50
- id: `${VNEXT_STATE_ID_PREFIX}${state.id}`,
51
- ownerType: owner.ownerType,
52
- ownerId: owner.ownerId,
53
- visibility: "private",
54
- subjectType: "user",
55
- subjectId: owner.ownerId,
56
- kind: "semantic",
57
- content: state.text.trim(),
58
- createdAt: state.createdAt,
59
- lastActivatedAt: state.createdAt,
60
- activationCount: 1,
61
- importance: 0.9,
62
- confidence: 0.9,
63
- resident: state.facet === "preference" || state.facet === "style"
64
- });
65
- var matchesVNextFilters = (state, idSet, contentSub) => {
66
- if (!idSet && !contentSub) return false;
67
- if (idSet && !idSet.has(`${VNEXT_STATE_ID_PREFIX}${state.id}`)) return false;
68
- if (contentSub && !state.text.toLowerCase().includes(contentSub)) return false;
69
- return true;
70
- };
71
- function hasExplicitDeleteFilters(filters) {
72
- return Boolean(
73
- filters.ids && filters.ids.length > 0 || typeof filters.contentSubstring === "string" && filters.contentSubstring.trim().length > 0 || filters.tags && filters.tags.length > 0 || typeof filters.sourceDialogId === "string" && filters.sourceDialogId.trim().length > 0 || typeof filters.patternKeyPrefix === "string" && filters.patternKeyPrefix.trim().length > 0 || filters.facets && filters.facets.length > 0 || typeof filters.subjectId === "string" && filters.subjectId.trim().length > 0
74
- );
75
- }
76
- function generateMemoryDeletionToken(ownerId, itemIds) {
77
- const sorted = [...itemIds].sort().join(",");
78
- const seed = `${ownerId}:${sorted}`;
79
- let hash = 0;
80
- for (let i = 0; i < seed.length; i++) {
81
- hash = (hash << 5) - hash + seed.charCodeAt(i) | 0;
82
- }
83
- return `tok-${Math.abs(hash).toString(36)}-${itemIds.length}`;
84
- }
85
- var normalizeSet = (values) => {
86
- if (!Array.isArray(values) || values.length === 0) return null;
87
- const normalized = asTrimmedNonEmptyStringArray(values);
88
- return normalized.length > 0 ? new Set(normalized) : null;
89
- };
90
- var matchesFilters = (item, filters) => {
91
- const idSet = normalizeSet(filters.ids);
92
- if (idSet && !idSet.has(item.id)) return false;
93
- const kindSet = normalizeSet(filters.kinds);
94
- if (kindSet && !kindSet.has(item.kind)) return false;
95
- const facetSet = normalizeSet(filters.facets);
96
- if (facetSet && (!item.facet || !facetSet.has(item.facet))) return false;
97
- if (filters.subjectType && item.subjectType !== filters.subjectType) return false;
98
- if (filters.subjectId && item.subjectId !== filters.subjectId) return false;
99
- const prefix = asTrimmedString(filters.patternKeyPrefix);
100
- if (prefix && !(item.patternKey ?? "").startsWith(prefix)) return false;
101
- if (filters.sourceDialogId && item.sourceDialogId !== filters.sourceDialogId) {
102
- return false;
103
- }
104
- const tagSet = normalizeSet(filters.tags);
105
- if (tagSet) {
106
- const itemTags = new Set(asTrimmedNonEmptyStringArray(item.tags));
107
- for (const tag of tagSet) {
108
- if (!itemTags.has(tag)) return false;
109
- }
110
- }
111
- const contentSub = asTrimmedString(filters.contentSubstring);
112
- if (contentSub && !(item.content ?? "").toLowerCase().includes(contentSub.toLowerCase())) {
113
- return false;
114
- }
115
- return true;
116
- };
117
- var deleteMemoryItemWithIndexesInBatch = (batch, item) => {
118
- batch.del(createMemoryKey(item.ownerType, item.ownerId, item.id));
119
- batch.del(
120
- createMemoryOwnerIndexKey(
121
- item.ownerType,
122
- item.ownerId,
123
- item.createdAt,
124
- item.id
125
- )
126
- );
127
- batch.del(
128
- createMemorySubjectKindIndexKey(
129
- item.subjectType,
130
- item.subjectId,
131
- item.kind,
132
- item.createdAt,
133
- item.id
134
- )
135
- );
136
- };
137
- var deleteMemoriesForOwnerFromDb = async (db, owner, filters = {}) => {
138
- if (!hasExplicitDeleteFilters(filters)) {
139
- throw new Error(
140
- "At least one filter is required; delete operation will not delete all memory implicitly."
141
- );
142
- }
143
- const range = memoryOwnerRange(owner.ownerType, owner.ownerId);
144
- const matchedItems = [];
145
- const limit = typeof filters.limit === "number" && filters.limit > 0 ? filters.limit : Number.POSITIVE_INFINITY;
146
- for await (const [, value] of db.iterator({
147
- gte: range.start,
148
- lte: range.end,
149
- reverse: true
150
- })) {
151
- const memoryId = typeof value?.memoryId === "string" ? value.memoryId : "";
152
- if (!memoryId) continue;
153
- const item = await db.get(createMemoryKey(owner.ownerType, owner.ownerId, memoryId)).catch(() => null);
154
- if (!item) continue;
155
- if (!matchesFilters(item, filters)) continue;
156
- matchedItems.push(item);
157
- if (matchedItems.length >= limit) break;
158
- }
159
- const idSet = normalizeSet(filters.ids);
160
- const contentSub = asTrimmedString(filters.contentSubstring).toLowerCase();
161
- const vnextStateIdsToRetire = [];
162
- const vnextStatesToRetire = [];
163
- const vnextMatchedItems = [];
164
- let vnextPrincipalId = null;
165
- const hasScopingFilters = Boolean(
166
- normalizeSet(filters.kinds) || normalizeSet(filters.facets) || normalizeSet(filters.tags) || asTrimmedString(filters.subjectType) || asTrimmedString(filters.subjectId) || asTrimmedString(filters.patternKeyPrefix) || asTrimmedString(filters.sourceDialogId)
167
- );
168
- const canMatchVNext = !hasScopingFilters && (contentSub.length > 0 || idSet !== null && [...idSet].some((id) => id.startsWith(VNEXT_STATE_ID_PREFIX)));
169
- if (canMatchVNext) {
170
- vnextPrincipalId = `${owner.ownerType}:${encodeURIComponent(owner.ownerId)}`;
171
- const catalog = await loadMemoryVNextCatalog(db, vnextPrincipalId);
172
- for (const state of catalog.states) {
173
- if (matchedItems.length >= limit) break;
174
- if (state.retiredAt) continue;
175
- if (!matchesVNextFilters(state, idSet, contentSub)) continue;
176
- vnextStateIdsToRetire.push(state.id);
177
- vnextStatesToRetire.push(state);
178
- const projected = toVNextMemoryItem(state, owner);
179
- vnextMatchedItems.push(projected);
180
- matchedItems.push(projected);
181
- }
182
- }
183
- if (matchedItems.length === 0) {
184
- return { deletedCount: 0, deletedIds: [], retiredIds: [], matchedItems: [] };
185
- }
186
- const token = generateMemoryDeletionToken(
187
- owner.ownerId,
188
- matchedItems.map((i) => i.id)
189
- );
190
- if (filters.dryRun) {
191
- return {
192
- deletedCount: 0,
193
- deletedIds: [],
194
- retiredIds: [],
195
- matchedItems,
196
- deletionToken: token
197
- };
198
- }
199
- if (filters.deletionToken && filters.deletionToken !== token) {
200
- throw new Error(
201
- "deletionToken mismatch: target set differs from preview; preview exact intended targets again."
202
- );
203
- }
204
- const vnextMatchedIdSet = new Set(
205
- vnextStateIdsToRetire.map((stateId) => `${VNEXT_STATE_ID_PREFIX}${stateId}`)
206
- );
207
- const legacyItems = matchedItems.filter((item) => !vnextMatchedIdSet.has(item.id));
208
- const shouldRetireVNext = vnextStatesToRetire.length > 0;
209
- if (legacyItems.length > 0 || shouldRetireVNext) {
210
- const batch = db.batch();
211
- for (const item of legacyItems) {
212
- deleteMemoryItemWithIndexesInBatch(batch, item);
213
- }
214
- if (shouldRetireVNext) {
215
- const nowIso = (/* @__PURE__ */ new Date()).toISOString();
216
- for (const state of vnextStatesToRetire) {
217
- _appendRetiredStateBatch(batch, { ...state, retiredAt: nowIso });
218
- }
219
- }
220
- await batch.write();
221
- }
222
- return {
223
- deletedCount: matchedItems.length,
224
- deletedIds: matchedItems.map((item) => item.id),
225
- retiredIds: vnextMatchedItems.map((item) => item.id),
226
- matchedItems,
227
- deletionToken: token
228
- };
229
- };
230
-
231
- // packages/cli/client/memoryRekey.ts
232
- async function scanLocalMemoryItems(localDb, machineId) {
233
- const range = memoryOwnerRange("user", machineId);
234
- const refs = [];
235
- for await (const [, value] of localDb.iterator({
236
- gte: range.start,
237
- lte: range.end,
238
- reverse: true
239
- })) {
240
- refs.push(value ?? {});
241
- }
242
- const items = await Promise.all(
243
- refs.map(
244
- (ref) => typeof ref?.memoryId === "string" ? localDb.get(createMemoryKey("user", machineId, ref.memoryId)).catch(() => null) : Promise.resolve(null)
245
- )
246
- );
247
- return items.filter((item) => !!item);
248
- }
249
- async function performLocalMemoryRekey(args) {
250
- const { localDb, authToken, serverUrl, machineId } = args;
251
- const fetchImpl = args.fetchImpl ?? fetch;
252
- const items = await scanLocalMemoryItems(localDb, machineId);
253
- if (items.length === 0) {
254
- return { migrated: 0, merged: 0 };
255
- }
256
- const snapshotIds = items.map((item) => item.id);
257
- const response = await fetchImpl(`${serverUrl}/api/memory/rekey`, {
258
- method: "POST",
259
- headers: {
260
- Authorization: `Bearer ${authToken}`,
261
- "Content-Type": "application/json"
262
- },
263
- body: JSON.stringify({ items }),
264
- signal: AbortSignal?.timeout?.(3e4)
265
- }).catch((e) => {
266
- if (e?.name === "TimeoutError" || e?.name === "AbortError") {
267
- throw new Error("memory rekey upload timed out (30s)");
268
- }
269
- throw e;
270
- });
271
- if (!response.ok) {
272
- let detail = "";
273
- try {
274
- const body2 = await response.json();
275
- detail = body2?.error?.message ?? "";
276
- } catch {
277
- }
278
- throw new Error(
279
- `memory rekey upload failed (HTTP ${response.status})${detail ? `: ${detail}` : ""}`
280
- );
281
- }
282
- const body = await response.json().catch(() => ({}));
283
- const migrated = typeof body?.migratedCount === "number" ? body.migratedCount : 0;
284
- const merged = typeof body?.mergedCount === "number" ? body.mergedCount : 0;
285
- await deleteMemoriesForOwnerFromDb(
286
- localDb,
287
- { ownerType: "user", ownerId: machineId },
288
- { ids: snapshotIds }
289
- );
290
- return { migrated, merged };
291
- }
292
-
293
- // packages/cli/authCommands.ts
294
- var LOGIN_HELP_TEXT = `Log in to Nolo and save a local profile.
295
-
296
- Usage:
297
- nolo login [--server <url>] [--no-browser] [--token <jwt>] [--manual]
298
-
299
- Options:
300
- --server <url> Nolo server URL (default: ${DEFAULT_NOLO_SERVER_URL})
301
- --no-browser Print the authorization URL instead of opening a browser
302
- --token <jwt> Save a token directly without browser authorization
303
- --manual Prompt to paste a token interactively
304
-
305
- By default, opens the Nolo website and polls until authorization completes.
306
- In SSH sessions, use --no-browser and open the printed URL on a machine with a browser
307
- where you are already logged into Nolo.
308
-
309
- Note: nolo login only authorizes your Nolo platform account. To let your agents
310
- call third-party models using your own subscriptions, you also need:
311
- nolo auth antigravity # Google Antigravity (Gemini 3, Claude, GPT-OSS)
312
- nolo auth claude # Claude Pro/Max
313
- nolo auth chatgpt # ChatGPT Plus / OpenAI Codex
314
- nolo auth xai # xAI Grok (SuperGrok)
315
- nolo auth cloudflare # Cloudflare OAuth (email routing, etc.)
316
- See "nolo auth <provider> --help" for details.
317
- `;
318
- var LOGOUT_HELP_TEXT = `Log out of Nolo by clearing the saved auth token.
319
-
320
- Usage:
321
- nolo logout
322
-
323
- Keeps other profile settings such as server URL and default agent preferences.
324
- Does not unset AUTH_TOKEN or other auth-related environment variables.
325
- `;
326
- var WHOAMI_HELP_TEXT = `Show the current login state.
327
-
328
- Usage:
329
- nolo whoami
330
- `;
331
- function wantsHelp(args) {
332
- return args.includes("--help") || args.includes("-h");
333
- }
334
- function formatDuration(ms) {
335
- const totalSec = Math.max(0, Math.ceil(ms / 1e3));
336
- const minutes = Math.floor(totalSec / 60);
337
- const seconds = totalSec % 60;
338
- if (minutes > 0) return `${minutes}m ${seconds}s`;
339
- return `${seconds}s`;
340
- }
341
- function formatTokenPreview(token) {
342
- const trimmed = token.trim();
343
- if (!trimmed) return "";
344
- return `${trimmed.slice(0, 8)}...`;
345
- }
346
- function getArg(args, flag) {
347
- const index = args.indexOf(flag);
348
- return index >= 0 ? args[index + 1] : void 0;
349
- }
350
- var postJson = async (fetchImpl, url, body) => fetchImpl(url, {
351
- method: "POST",
352
- headers: { "Content-Type": "application/json" },
353
- body: JSON.stringify(body)
354
- });
355
- var defaultSleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
356
- var defaultOpenBrowser = async (url) => {
357
- const command = process.platform === "darwin" ? "open" : process.platform === "win32" ? "cmd" : "xdg-open";
358
- const args = process.platform === "win32" ? ["/c", "start", "", url.replace(/&/g, "^&")] : [url];
359
- try {
360
- const child = spawn(command, args, {
361
- detached: true,
362
- stdio: "ignore"
363
- });
364
- child.unref();
365
- return true;
366
- } catch {
367
- return false;
368
- }
369
- };
370
- async function saveTokenLogin(args) {
371
- if (!args.authToken.trim()) {
372
- args.error.error("No auth token provided.");
373
- return 1;
374
- }
375
- saveDefaultProfile(args.configPath, {
376
- serverUrl: args.serverUrl,
377
- authToken: args.authToken.trim()
378
- });
379
- args.output.log(`Saved profile default -> ${args.serverUrl}`);
380
- try {
381
- const localDb = await getDefaultCliLocalRuntimeDb();
382
- const machineId = resolveMachineId();
383
- const result = await performLocalMemoryRekey({
384
- localDb,
385
- authToken: args.authToken.trim(),
386
- serverUrl: args.serverUrl,
387
- machineId
388
- });
389
- if (result.migrated > 0 || result.merged > 0) {
390
- args.output.log(
391
- `[nolo] Migrated ${result.migrated} local memor${result.migrated === 1 ? "y" : "ies"} to your account` + (result.merged > 0 ? ` (${result.merged} merged with existing)` : "") + "."
392
- );
393
- }
394
- } catch (error) {
395
- args.error.error(
396
- `[nolo] Local memory migration skipped: ${error instanceof Error ? error.message : String(error)}`
397
- );
398
- }
399
- return 0;
400
- }
401
- async function runWebLogin(args) {
402
- const startResponse = await postJson(
403
- args.fetchImpl,
404
- `${args.serverUrl}/api/v1/users/cli-login/start`,
405
- { clientName: "nolo-cli" }
406
- );
407
- const start = await startResponse.json().catch(() => ({}));
408
- if (!startResponse.ok || !start?.deviceCode || !start?.verificationUriComplete) {
409
- args.error.error(
410
- `Failed to start web login (${startResponse.status}). Use --token to paste a token manually.`
411
- );
412
- return 1;
413
- }
414
- args.output.log("Open this URL to authorize nolo-cli:");
415
- args.output.log(start.verificationUriComplete);
416
- args.output.log(`Code: ${start.userCode}`);
417
- if (!args.noBrowser) {
418
- const opened = await args.openBrowser(start.verificationUriComplete);
419
- if (!opened) {
420
- args.output.log("Could not open a browser automatically. Paste the URL above.");
421
- }
422
- }
423
- const intervalMs = Math.max(1, Number(start.interval) || 2) * 1e3;
424
- const timeoutMs = Math.max(1, Number(start.expiresIn) || 600) * 1e3;
425
- const deadline = args.now() + timeoutMs;
426
- const statusLogIntervalMs = 15e3;
427
- let lastStatusLogAt = 0;
428
- args.output.log(
429
- `[nolo] Waiting for browser authorization (${formatDuration(timeoutMs)} remaining)...`
430
- );
431
- while (args.now() <= deadline) {
432
- const pollResponse = await postJson(
433
- args.fetchImpl,
434
- `${args.serverUrl}/api/v1/users/cli-login/poll`,
435
- { deviceCode: start.deviceCode }
436
- );
437
- const poll = await pollResponse.json().catch(() => ({}));
438
- if (pollResponse.status === 202) {
439
- const currentTime = args.now();
440
- if (lastStatusLogAt > 0 && currentTime - lastStatusLogAt >= statusLogIntervalMs) {
441
- const remainingMs = Math.max(0, deadline - currentTime);
442
- args.output.log(
443
- `[nolo] Still waiting... (${formatDuration(remainingMs)} remaining)`
444
- );
445
- lastStatusLogAt = currentTime;
446
- } else if (lastStatusLogAt === 0) {
447
- lastStatusLogAt = currentTime;
448
- }
449
- await args.sleep(intervalMs);
450
- continue;
451
- }
452
- if (pollResponse.ok && poll?.token) {
453
- const approvedServer = typeof poll.serverUrl === "string" && poll.serverUrl.trim() ? normalizeServerOrigin(poll.serverUrl) : args.serverUrl;
454
- return saveTokenLogin({
455
- configPath: args.configPath,
456
- serverUrl: approvedServer,
457
- authToken: poll.token,
458
- output: args.output,
459
- error: args.error
460
- });
461
- }
462
- args.error.error(
463
- `Web login failed: ${poll?.error || `HTTP ${pollResponse.status}`}. Use --token to paste a token manually.`
464
- );
465
- return 1;
466
- }
467
- args.error.error("Web login timed out. Run `nolo login` again or use --token.");
468
- return 1;
469
- }
470
- async function runLoginCommand(args, deps = {}) {
471
- const outputTarget = deps.output ?? console;
472
- const errorTarget = deps.error ?? console;
473
- if (wantsHelp(args)) {
474
- outputTarget.log(LOGIN_HELP_TEXT);
475
- return 0;
476
- }
477
- const configPath = deps.configPath ?? getDefaultProfileConfigPath();
478
- const serverArg = getArg(args, "--server");
479
- const tokenArg = getArg(args, "--token");
480
- const noBrowser = args.includes("--no-browser");
481
- const serverUrl = (serverArg || DEFAULT_NOLO_SERVER_URL).replace(/\/+$/, "");
482
- if (tokenArg) {
483
- return saveTokenLogin({
484
- configPath,
485
- serverUrl,
486
- authToken: tokenArg,
487
- output: outputTarget,
488
- error: errorTarget
489
- });
490
- }
491
- if (args.includes("--manual")) {
492
- const rl = createInterface({ input, output });
493
- const question = deps.question ?? ((prompt) => rl.question(prompt));
494
- try {
495
- const authToken = await question("paste auth token: ");
496
- return saveTokenLogin({
497
- configPath,
498
- serverUrl,
499
- authToken,
500
- output: outputTarget,
501
- error: errorTarget
502
- });
503
- } finally {
504
- rl.close();
505
- }
506
- }
507
- return runWebLogin({
508
- configPath,
509
- serverUrl,
510
- fetchImpl: deps.fetchImpl ?? fetch,
511
- openBrowser: deps.openBrowser ?? defaultOpenBrowser,
512
- sleep: deps.sleep ?? defaultSleep,
513
- now: deps.now ?? Date.now,
514
- output: outputTarget,
515
- error: errorTarget,
516
- noBrowser
517
- });
518
- }
519
- function runWhoamiCommand(deps = {}) {
520
- const output2 = deps.output ?? console;
521
- if (wantsHelp(deps.args ?? [])) {
522
- output2.log(WHOAMI_HELP_TEXT);
523
- return 0;
524
- }
525
- const env = deps.env ?? process.env;
526
- const config = loadProfileConfig(deps.configPath);
527
- const profile = getCurrentProfile(config);
528
- const profileToken = getProfileTokens(config)[0]?.trim() ?? "";
529
- const envToken = resolveAuthTokenFromEnv(env);
530
- if (!profileToken && !envToken) {
531
- output2.log("Not logged in. Run: nolo login");
532
- output2.log(
533
- 'Or skip login entirely: nolo run "<task>" (local Codex) | nolo auth <provider> (your own subscription)'
534
- );
535
- return 1;
536
- }
537
- const runtimeEnv = buildCliRuntimeEnv(env, config);
538
- const explicitServer = env.NOLO_SERVER || env.NOLO_SERVER_URL || env.BASE_URL;
539
- if (!profileToken && envToken) {
540
- output2.log("profile: not logged in (no saved token)");
541
- if (profile?.serverUrl) {
542
- output2.log(`profile server: ${profile.serverUrl}`);
543
- }
544
- output2.log(`effective server: ${runtimeEnv.NOLO_SERVER ?? resolveServerUrlFallback(profile)}`);
545
- output2.log(`server source: ${explicitServer ? "env" : profile?.serverUrl ? "profile" : "default"}`);
546
- output2.log(`env token: ${formatTokenPreview(envToken)} (source: environment)`);
547
- return 0;
548
- }
549
- const effectiveServer = runtimeEnv.NOLO_SERVER ?? profile.serverUrl;
550
- const effectiveToken = runtimeEnv.AUTH_TOKEN ?? profileToken;
551
- output2.log(`profile: ${config.currentProfile}`);
552
- output2.log(`profile server: ${profile.serverUrl}`);
553
- output2.log(`effective server: ${effectiveServer}`);
554
- output2.log(`server source: ${explicitServer ? "env" : "profile"}`);
555
- output2.log(`token: ${formatTokenPreview(effectiveToken)} (source: ${envToken && envToken !== profileToken ? "environment" : "profile"})`);
556
- if (envToken && envToken !== profileToken) {
557
- output2.log(`profile token: ${formatTokenPreview(profileToken)} (source: profile, overridden by environment)`);
558
- }
559
- return 0;
560
- }
561
- function resolveServerUrlFallback(profile) {
562
- return profile?.serverUrl ?? DEFAULT_NOLO_SERVER_URL;
563
- }
564
- function runLogoutCommand(deps = {}) {
565
- const output2 = deps.output ?? console;
566
- if (wantsHelp(deps.args ?? [])) {
567
- output2.log(LOGOUT_HELP_TEXT);
568
- return 0;
569
- }
570
- const env = deps.env ?? process.env;
571
- const configPath = deps.configPath ?? getDefaultProfileConfigPath();
572
- if (!clearProfileAuthToken(configPath)) {
573
- output2.log("Not logged in.");
574
- return 0;
575
- }
576
- output2.log("Logged out.");
577
- if (resolveAuthTokenFromEnv(env)) {
578
- output2.log(
579
- "Note: AUTH_TOKEN in the environment is unchanged and may still authenticate commands."
580
- );
581
- }
582
- return 0;
583
- }
584
-
585
- export {
586
- LOGIN_HELP_TEXT,
587
- LOGOUT_HELP_TEXT,
588
- WHOAMI_HELP_TEXT,
589
- defaultOpenBrowser,
590
- saveTokenLogin,
591
- runLoginCommand,
592
- runWhoamiCommand,
593
- runLogoutCommand
594
- };
package/chunk-5XBUWM6I.js DELETED
@@ -1,89 +0,0 @@
1
- import {
2
- normalizeSpaceId
3
- } from "./chunk-UAD2WT54.js";
4
- import {
5
- require_react
6
- } from "./chunk-YDH3FDFQ.js";
7
- import {
8
- __toESM
9
- } from "./chunk-4VNS5WPM.js";
10
-
11
- // packages/create/space/spaceCurrentStore.ts
12
- var import_react = __toESM(require_react(), 1);
13
- var VIEW_MODE_STORAGE_KEY = "nolo-space-view-mode";
14
- var readStoredViewMode = () => {
15
- try {
16
- if (typeof window === "undefined") return "all";
17
- return window.localStorage.getItem(VIEW_MODE_STORAGE_KEY) === "categories" ? "categories" : "all";
18
- } catch {
19
- return "all";
20
- }
21
- };
22
- var writeStoredViewMode = (mode) => {
23
- try {
24
- if (typeof window === "undefined") return;
25
- window.localStorage.setItem(VIEW_MODE_STORAGE_KEY, mode);
26
- } catch {
27
- }
28
- };
29
- var createInitialState = () => ({
30
- currentSpaceId: null,
31
- currentSpace: null,
32
- viewMode: readStoredViewMode()
33
- });
34
- var state = createInitialState();
35
- var listeners = /* @__PURE__ */ new Set();
36
- var version = 0;
37
- var notify = () => {
38
- version += 1;
39
- for (const listener of listeners) {
40
- try {
41
- listener();
42
- } catch {
43
- }
44
- }
45
- };
46
- function getCurrentSpaceId() {
47
- return state.viewMode === "all" ? null : state.currentSpaceId;
48
- }
49
- function getCurrentSpaceIdRaw() {
50
- return state.currentSpaceId;
51
- }
52
- function getCurrentSpaceRaw() {
53
- return state.currentSpace;
54
- }
55
- function getViewMode() {
56
- return state.viewMode;
57
- }
58
- function setViewMode(mode) {
59
- if (state.viewMode === mode) return;
60
- state = { ...state, viewMode: mode };
61
- writeStoredViewMode(mode);
62
- notify();
63
- }
64
- function setCurrentSpace(space) {
65
- state = { ...state, currentSpace: space };
66
- notify();
67
- }
68
- function setCurrentSpaceBoth(spaceId, space) {
69
- state = { ...state, currentSpaceId: spaceId, currentSpace: space };
70
- notify();
71
- }
72
- function updateCurrentSpaceIfMatch(spaceId, space) {
73
- const currentId = state.currentSpaceId;
74
- if (currentId && normalizeSpaceId(currentId) === normalizeSpaceId(spaceId)) {
75
- state = { ...state, currentSpace: space };
76
- notify();
77
- }
78
- }
79
-
80
- export {
81
- getCurrentSpaceId,
82
- getCurrentSpaceIdRaw,
83
- getCurrentSpaceRaw,
84
- getViewMode,
85
- setViewMode,
86
- setCurrentSpace,
87
- setCurrentSpaceBoth,
88
- updateCurrentSpaceIfMatch
89
- };