nolo-cli 0.213.0 → 0.223.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 (262) hide show
  1. package/README.md +3 -2
  2. package/{_executeModel-CUJLCFWR.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-WERAONNY.js → addContentAction-GDHDOF4U.js} +18 -17
  6. package/{addDialogAgentAction-7VI7YRML.js → addDialogAgentAction-CAKRU3ZT.js} +21 -20
  7. package/{agentDeleteCommand-XJORXPGU.js → agentDeleteCommand-BPV2XZL7.js} +128 -119
  8. package/{agentEmailCommands-XTYYFR6Z.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-OBLRBLHS.js → agentListCommands-HIZODBF3.js} +155 -92
  12. package/{agentMachineCommands-5FMT3OT5.js → agentMachineCommands-ZMQ2CY7Y.js} +62 -54
  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-TAMHJQSR.js → agentRunControl-JNONH3RP.js} +30 -15
  18. package/{agentRuntimeLocal-SOO2OPJG.js → agentRuntimeLocal-QZPFWMLG.js} +52 -45
  19. package/{agentSlice-CHR6KOZN.js → agentSlice-RD2CDU7T.js} +20 -19
  20. package/{appDeleteCommands-GUP6P5YE.js → appDeleteCommands-QCCFDIEQ.js} +61 -53
  21. package/{appDeployCommands-MH2FX4O5.js → appDeployCommands-V2T7TNMQ.js} +61 -53
  22. package/{appDeployStatusCommands-SUHN3HPJ.js → appDeployStatusCommands-6PGH7ZCG.js} +61 -53
  23. package/{appGetCommands-YWDEX6Z4.js → appGetCommands-3L7WWJA6.js} +61 -53
  24. package/{appListCommands-ZQVMLPAY.js → appListCommands-ENJCK4PO.js} +61 -53
  25. package/{authCommand-PWX2ZNUP.js → authCommand-6V47SYGK.js} +29 -28
  26. package/{authCommands-HV3EAU3V.js → authCommands-GAJ3NIXO.js} +14 -13
  27. package/{builtinSkillRegistry-2QETTQPM.js → builtinSkillRegistry-2ECA42FC.js} +11 -13
  28. package/{chromeCommands-REEAH4SX.js → chromeCommands-G5UDKVSV.js} +3 -3
  29. package/{chromeOpsCommands-DIVM2K3T.js → chromeOpsCommands-YKX2QX3A.js} +20 -10
  30. package/{chunk-CRHOO2ZR.js → chunk-27PCUMJI.js} +2 -2
  31. package/chunk-2CI3ZFWD.js +97 -0
  32. package/{chunk-NSAPDIN2.js → chunk-2GJKRKI6.js} +541 -31
  33. package/{chunk-SM3NSZJV.js → chunk-2UCBGYO4.js} +20 -1
  34. package/{chunk-PYRUW7XN.js → chunk-2VUZSVAS.js} +136 -54
  35. package/{chunk-YB3YZK56.js → chunk-2WZXXAQD.js} +1 -67
  36. package/chunk-2YGBI2XB.js +30 -0
  37. package/chunk-2ZKFCIJJ.js +13 -0
  38. package/{chunk-QG4AOSON.js → chunk-34J5K2YA.js} +13 -32
  39. package/{chunk-LOEO7LRC.js → chunk-3IK6ILVW.js} +4 -1
  40. package/{chunk-CTPXME7U.js → chunk-3LMUPOHG.js} +29 -6
  41. package/chunk-44X52WOJ.js +1621 -0
  42. package/{chunk-6VLJ6YA7.js → chunk-4DESLZTK.js} +9 -9
  43. package/{chunk-MYOH447Z.js → chunk-4JVNURX4.js} +1 -1
  44. package/chunk-5CHGAKRT.js +364 -0
  45. package/{chunk-YDH3FDFQ.js → chunk-5FUN7EG4.js} +1 -1
  46. package/{chunk-INUFILG6.js → chunk-5RKUPJYL.js} +1 -1
  47. package/{chunk-ZC3CMUKU.js → chunk-6OVNSQHN.js} +84 -2
  48. package/{chunk-MOIJOHA5.js → chunk-6WU5572L.js} +36 -25
  49. package/{chunk-IXNGOHV5.js → chunk-7EEZJ6BS.js} +11 -152
  50. package/{chunk-Y6ORVLSS.js → chunk-7ET2U67U.js} +1 -1
  51. package/{chunk-G7MLNNEX.js → chunk-7JLY4WYF.js} +5 -5
  52. package/{chunk-P5L7CXOC.js → chunk-7Z6EW7AH.js} +3 -2
  53. package/{chunk-NJLL224W.js → chunk-AD5EWDFD.js} +2 -2
  54. package/{chunk-J2NHJ7WX.js → chunk-AIHYNKGV.js} +4 -4
  55. package/{chunk-HPFCI4SK.js → chunk-AK5O76CC.js} +3 -3
  56. package/{chunk-Y63ZSOR6.js → chunk-AL3TYDIF.js} +1 -1
  57. package/{chunk-ALQ3657A.js → chunk-AMEOV5VZ.js} +32 -12
  58. package/chunk-AN74ON4G.js +675 -0
  59. package/{chunk-HRMJUN5J.js → chunk-AQZ6BMRK.js} +1 -1
  60. package/{chunk-XHQC4PXX.js → chunk-B4GOW4MT.js} +424 -194
  61. package/{chunk-4KB6WQUL.js → chunk-BGP2EDFG.js} +1 -1
  62. package/{chunk-NBTY7YJF.js → chunk-BR3GT6MR.js} +1 -0
  63. package/{chunk-7RFNTILS.js → chunk-BUDVRYES.js} +2 -2
  64. package/{chunk-SVYO6AO7.js → chunk-BV3FLP2L.js} +41 -1
  65. package/{chunk-RZOV7OMV.js → chunk-C4VAR65S.js} +83 -141
  66. package/{chunk-COFEN36Z.js → chunk-C4WTX5TU.js} +2 -2
  67. package/{chunk-ZL5RAEEB.js → chunk-CIRB724Q.js} +1 -1
  68. package/{chunk-F6UUQOG6.js → chunk-CKT6QUE2.js} +4 -4
  69. package/{chunk-X7SDOJUM.js → chunk-CMZ3Z5PT.js} +14 -14
  70. package/{secretCommands-LXDWOLZ6.js → chunk-D726I5AZ.js} +191 -16
  71. package/{chunk-TAKB25RM.js → chunk-DNKTQ3IN.js} +4 -4
  72. package/chunk-DVQH4BTR.js +1137 -0
  73. package/{chunk-WYDI6TGM.js → chunk-DWX2HEVC.js} +91 -132
  74. package/{chunk-5MQRBSMW.js → chunk-EIAI3PPH.js} +111 -113
  75. package/chunk-EUCFKKDM.js +247 -0
  76. package/chunk-EWQ3HGNZ.js +90 -0
  77. package/{chunk-RPQXPZZF.js → chunk-F3GRJO4Z.js} +908 -13
  78. package/{chunk-YTF4WH7J.js → chunk-FIYSMXHY.js} +1 -1
  79. package/{chunk-75XIDFBW.js → chunk-FJ23FZXF.js} +72 -28
  80. package/{chunk-INN4LTAJ.js → chunk-FJK526XH.js} +2 -2
  81. package/chunk-FS2XP5D7.js +142 -0
  82. package/{chunk-FUGMREBO.js → chunk-FYF2TONJ.js} +5 -5
  83. package/{chunk-PCLE46CE.js → chunk-GBWGPTA7.js} +2 -1
  84. package/{chunk-TX5EYMGT.js → chunk-GYVCJABP.js} +30 -254
  85. package/{chunk-3UKL3HPD.js → chunk-HOCHUZQ7.js} +8 -78
  86. package/{chunk-EHSZD5OI.js → chunk-HXER7YJF.js} +4 -4
  87. package/chunk-HYIETXA6.js +99 -0
  88. package/{chunk-H2TJUNCH.js → chunk-I4EADJ4P.js} +6 -6
  89. package/{chunk-TCZHTTUU.js → chunk-I7WBYGBP.js} +8 -8
  90. package/{chunk-6DWMYIUY.js → chunk-IILMY4W4.js} +14 -9
  91. package/chunk-JA3ICVJY.js +271 -0
  92. package/{chunk-ZRSNONOB.js → chunk-JWXITTQB.js} +8 -3
  93. package/{chunk-H4UOTUOX.js → chunk-KEN3N2TN.js} +148 -18
  94. package/{chunk-LEC5ALIN.js → chunk-KEPOVMF4.js} +1 -1
  95. package/{chunk-UHJGXRJ4.js → chunk-KQSYAIZR.js} +3 -3
  96. package/{chunk-4VJAC32I.js → chunk-L5I543VB.js} +3 -2
  97. package/chunk-LKA64WH4.js +227 -0
  98. package/{chunk-QHPRUL4O.js → chunk-LVL6GFCM.js} +4 -4
  99. package/{chunk-H5HF7TJA.js → chunk-MAIITKBT.js} +2 -2
  100. package/chunk-MBG66ZBH.js +226 -0
  101. package/{chunk-YUA6OAH5.js → chunk-MDLS23JK.js} +2 -2
  102. package/{chunk-VL5KOY2C.js → chunk-MK2Q7ZJD.js} +67 -5
  103. package/{chunk-MDB67IWP.js → chunk-MS4NZNKI.js} +10 -10
  104. package/{chunk-VO4WSAVP.js → chunk-MYHNBEXD.js} +3 -3
  105. package/{chunk-ZXOUUDCG.js → chunk-MZLE5HQ3.js} +3654 -231
  106. package/{chunk-AZMYUSVF.js → chunk-N5Z2V73W.js} +1 -1
  107. package/{chunk-V5Y3R6BT.js → chunk-NIZ2BXFD.js} +213 -210
  108. package/{chunk-KFLT5KAD.js → chunk-NWP2OYOX.js} +20 -20
  109. package/{chunk-G2BQWAVT.js → chunk-O6J3OTOP.js} +4 -4
  110. package/{chunk-VNYYOX3V.js → chunk-OB6DVWPF.js} +141 -48
  111. package/{chunk-YWSEPJ7C.js → chunk-OBWT45ZU.js} +3 -3
  112. package/{chunk-ZNWI6OVT.js → chunk-ODJ7BVSI.js} +80 -11
  113. package/{chunk-XJWWBO34.js → chunk-OJKUU3LP.js} +5 -7
  114. package/{chunk-HUBHAQK2.js → chunk-ON37YXGX.js} +29 -29
  115. package/{chunk-UYD5HQ6T.js → chunk-P5ZJRTCH.js} +5429 -1752
  116. package/{chunk-6XIE5ZGI.js → chunk-PDCV7P5W.js} +1 -1
  117. package/{chunk-WRYQ35LQ.js → chunk-PJCIP64Z.js} +859 -57
  118. package/{chunk-7QTZCMKL.js → chunk-PJVKMGPZ.js} +1089 -1639
  119. package/{chunk-A7TFUNZO.js → chunk-PPJYZRSQ.js} +6 -2
  120. package/chunk-QHEN7NZ7.js +46 -0
  121. package/{chunk-OQPKUBPB.js → chunk-QNWG52I4.js} +19 -7
  122. package/{chunk-YGILMZ7N.js → chunk-QVBXJNZ2.js} +1 -1
  123. package/{chunk-7BT37FK3.js → chunk-RDH5CQ4T.js} +648 -131
  124. package/{chunk-C6KNNXWU.js → chunk-RGQ4UUWZ.js} +25 -2
  125. package/{chunk-OWYYDMGJ.js → chunk-S2NTVGA2.js} +4 -2
  126. package/{chunk-KC4XDTT3.js → chunk-SOF4OWDM.js} +6 -4
  127. package/{chunk-RLBNLZVC.js → chunk-SQYIK6HO.js} +1 -1
  128. package/{chunk-YJAFKXMU.js → chunk-SVT62ULE.js} +50 -48
  129. package/{chunk-KIM6CLW5.js → chunk-SY3C4SQ7.js} +42 -15
  130. package/{chunk-JY5NGFFH.js → chunk-SYTHYBMI.js} +5 -5
  131. package/{chunk-WMTBPBMP.js → chunk-T6DXNI6Z.js} +52 -50
  132. package/chunk-TLE77UJ5.js +230 -0
  133. package/{chunk-4VNS5WPM.js → chunk-U67V476Y.js} +1 -8
  134. package/{chunk-F7CI2ZC5.js → chunk-UAIHKQIA.js} +2 -1
  135. package/{chunk-R5O4QAWG.js → chunk-UB3D4TRQ.js} +11 -77
  136. package/{chunk-WPORQFYN.js → chunk-UVLYNWIE.js} +2 -2
  137. package/{chunk-NOKUNJON.js → chunk-UYOICCYG.js} +29 -19
  138. package/{chunk-4I7ERB7F.js → chunk-VREDDN25.js} +1 -1
  139. package/{chunk-O2TZF4AI.js → chunk-WAE3GFCJ.js} +3 -3
  140. package/{chunk-H7PPIYWP.js → chunk-WI67URFP.js} +20 -20
  141. package/{chunk-7OCO4TDT.js → chunk-WJVYAO6P.js} +1 -1
  142. package/{chunk-T43B7LB2.js → chunk-WKGQSYTB.js} +1 -1
  143. package/{chunk-BBJ22CLB.js → chunk-WUUH4LWZ.js} +60 -30
  144. package/{chunk-4T2WNOY7.js → chunk-X7UF53VA.js} +33 -22
  145. package/{chunk-TY3TIUJK.js → chunk-XI2BWJM5.js} +65 -0
  146. package/{chunk-LLRPJECG.js → chunk-XWVCYUUU.js} +16 -159
  147. package/{chunk-J5JTMQIA.js → chunk-YFLVRVYK.js} +1 -1
  148. package/{chunk-EYLGAEB4.js → chunk-YGMBIXCF.js} +132 -0
  149. package/chunk-YL3EFYL3.js +199 -0
  150. package/{chunk-MMA3LZ3W.js → chunk-YNIYE47Z.js} +1 -1
  151. package/{chunk-W4S457LU.js → chunk-YU4ZPWVF.js} +41 -5
  152. package/{chunk-7Y4YTDQF.js → chunk-YWWDC3O7.js} +281 -159
  153. package/chunk-YZMNK53S.js +68 -0
  154. package/{chunk-RSHTSUEG.js → chunk-Z2PITYZN.js} +2060 -602
  155. package/{chunk-FY7F4Q6X.js → chunk-Z4PCXPUE.js} +2 -2
  156. package/{cliAgentConfigHelpers-WJBZQTLW.js → cliAgentConfigHelpers-TKYL43MT.js} +15 -16
  157. package/{cliAuthorityBrokerClient-PM3U6Q6J.js → cliAuthorityBrokerClient-XHH7MH2P.js} +1 -1
  158. package/{cliAuthorityStoreDriver-TKLXNNTG.js → cliAuthorityStoreDriver-6FE3BJNB.js} +1 -1
  159. package/{cliEnvHelpers-BVYTMUPJ.js → cliEnvHelpers-VPSJ4XWC.js} +3 -3
  160. package/{cliExecutor-BWBF2MTI.js → cliExecutor-4MAX3PZL.js} +2 -2
  161. package/cliLocalAgentRecordReader-MHHD4T7R.js +90 -0
  162. package/{commandRegistry-W63CYRZJ.js → commandRegistry-5DA5UP7S.js} +105 -97
  163. package/{contentThunks-U7PL5MQD.js → contentThunks-5GUQ7FWJ.js} +47 -43
  164. package/{cooldownCommands-TIGUHXTD.js → cooldownCommands-X7P5M2V5.js} +5 -4
  165. package/{createAgentAutomationAction-OLBQDD6R.js → createAgentAutomationAction-UCLTHQRI.js} +51 -49
  166. package/{createDialogAction-SVH6B3SB.js → createDialogAction-UPN774AF.js} +46 -48
  167. package/{createPageAction-F4DIWZ2Z.js → createPageAction-JRQ2TA4O.js} +50 -48
  168. package/{cursorProvider-YGGNMVWX.js → cursorProvider-2RACMEMF.js} +1 -1
  169. package/{db-HUCI5R4G.js → db-CS4ZJQKV.js} +1 -1
  170. package/{dbSlice-BVH2YZPQ.js → dbSlice-WNON7TOL.js} +17 -16
  171. package/{deleteFile-5YOEKV4U.js → deleteFile-Q3YDB4ML.js} +9 -9
  172. package/{desktopFolderProjects-SFY5EZS3.js → desktopFolderProjects-4POAMVJN.js} +2 -2
  173. package/{dialogCommands-KHIEPY3M.js → dialogCommands-VRI7VCXH.js} +64 -57
  174. package/dialogNotifyCommand-6TMCX4D2.js +36 -0
  175. package/{dialogSlice-ZCTDV2PZ.js → dialogSlice-LFNVUSAN.js} +42 -40
  176. package/{dialogUsageCommand-7KCPYGHG.js → dialogUsageCommand-HTVPR2CX.js} +11 -10
  177. package/{docCreateCommands-DPMZI7G5.js → docCreateCommands-AMPXMOX3.js} +61 -55
  178. package/{docDeleteCommands-IRQQLUBT.js → docDeleteCommands-I5WFAEHP.js} +63 -57
  179. package/{docReadCommands-LK37XH6L.js → docReadCommands-X53ELNIE.js} +61 -55
  180. package/{docStore-V2KECILA.js → docStore-2VAWVLWH.js} +21 -20
  181. package/{docUpdateCommands-O6T3HJHH.js → docUpdateCommands-6QPNDC7M.js} +64 -58
  182. package/{fetchMessages-NR4KNQLO.js → fetchMessages-TQEUZD7H.js} +8 -7
  183. package/{getPricing-2MNMXEVG.js → getPricing-MB2GBXOK.js} +6 -6
  184. package/{handleSendMessageAction-2PE25WM3.js → handleSendMessageAction-AAJOHXOB.js} +194 -302
  185. package/{hostCredentialCreate-S233UMAP.js → hostCredentialCreate-GLMJ22M6.js} +123 -114
  186. package/index.js +29 -29
  187. package/{keys-BEGDOTRL.js → keys-RWF7UCB4.js} +5 -4
  188. package/legacyMigration-TF4SYJCZ.js +19 -0
  189. package/{lib-5KKIBFIT.js → lib-OT5OTXRU.js} +7087 -6664
  190. package/{localDialogRead-7NNDVVF7.js → localDialogRead-SVTPA5GY.js} +3 -3
  191. package/{localFirstLog-DHNOY2NA.js → localFirstLog-OIETGK66.js} +1 -1
  192. package/localRecall-2J6QPOK2.js +15 -0
  193. package/{localRuntimeAdapter-KY6WXNBR.js → localRuntimeAdapter-BMP57P42.js} +119 -110
  194. package/{localRuntimeAuthority-OYH4AE4G.js → localRuntimeAuthority-IBJAT62G.js} +1 -1
  195. package/{localRuntimeDb-VBIMCWUC.js → localRuntimeDb-N7KHDXS2.js} +2 -2
  196. package/{machineCommands-Q6HA3IXF.js → machineCommands-3MLIAK5Q.js} +128 -119
  197. package/{machineInfo-UKPTZO5Y.js → machineInfo-LWHTEBHJ.js} +1 -1
  198. package/machineWsRunDispatch-FKIGROQF.js +191 -0
  199. package/{memberThunks-7EDJADWU.js → memberThunks-ZGLZ36PK.js} +29 -28
  200. package/{memoryCommands-ASCE5STX.js → memoryCommands-5WC3T66U.js} +4 -4
  201. package/models-ULVWLSQ6.js +9 -0
  202. package/{oauthTokenStore-OEERZFUC.js → oauthTokenStore-RUYNYALS.js} +1 -1
  203. package/{offlineMarxistsAgentCommand-2QTHJCHV.js → offlineMarxistsAgentCommand-4IC3Y4C6.js} +4 -4
  204. package/overlay-THLKYIWY.js +11 -0
  205. package/package.json +2 -2
  206. package/{pdf-U6KSUEZZ.js → pdf-KE3QI2V7.js} +1 -1
  207. package/{processSpawn-ZU5QFM43.js → processSpawn-6GEO77KV.js} +1 -1
  208. package/{profileConfig-KN3N2BLF.js → profileConfig-KOWK4HOG.js} +1 -1
  209. package/{projectArchive-DRTDIMEV.js → projectArchive-HK63GMF4.js} +52 -50
  210. package/{providerPresetApply-YXGV6NXB.js → providerPresetApply-OIFQ73LH.js} +19 -12
  211. package/{providerRegistry-S6UL6UNA.js → providerRegistry-KZ3SDZ3D.js} +10 -10
  212. package/{read-4V2RMG7N.js → read-MRQHJMJ2.js} +10 -10
  213. package/{readDocTool-BH6ATGQO.js → readDocTool-4BGTXTXA.js} +2 -2
  214. package/{readlineWorkspace-2W4WRCOU.js → readlineWorkspace-AKAHSCNY.js} +7982 -6274
  215. package/{removeDialogAgentAction-LYAZGNKW.js → removeDialogAgentAction-B6H7DXFM.js} +23 -22
  216. package/{runAgentClientLoop-J2VQBS2Z.js → runAgentClientLoop-UVAWGEON.js} +81 -79
  217. package/{runtimeDoctorCommands-QAI3MBKQ.js → runtimeDoctorCommands-FW6XKDUG.js} +12 -12
  218. package/{runtimeModeArgs-2Y7BALTO.js → runtimeModeArgs-X7DL7PUN.js} +1 -1
  219. package/secretCommands-LJXOOYA7.js +24 -0
  220. package/{setDialogExtraReferencesAction-OCRPGPYH.js → setDialogExtraReferencesAction-EVCY3TRW.js} +22 -21
  221. package/{setPrimaryDialogAgentAction-HFJDQIBU.js → setPrimaryDialogAgentAction-KPFVPHCJ.js} +23 -22
  222. package/{settingThunks-RAMHMTGM.js → settingThunks-ENOAK2WV.js} +97 -88
  223. package/{skillDiscovery-XKHROSH2.js → skillDiscovery-B5V23AXP.js} +4 -4
  224. package/{skillSummaryMarker-42HKSXYY.js → skillSummaryMarker-62UW7HI7.js} +1 -1
  225. package/{slateToRenderMarkdown-Y5IYN73U.js → slateToRenderMarkdown-R3X74MCX.js} +1 -1
  226. package/{slateUtils-NGV2NMKM.js → slateUtils-ESQAJ6RN.js} +1 -1
  227. package/{spaceCommands-KVJZVKVO.js → spaceCommands-DTTNAS2L.js} +61 -53
  228. package/store-JRVN62NM.js +46 -0
  229. package/{streamAgentChatTurn-GHBMJJ6S.js → streamAgentChatTurn-R5UY25VB.js} +875 -618
  230. package/{switchDialogAgentAction-EBRMW3RA.js → switchDialogAgentAction-SZ44XDRY.js} +21 -20
  231. package/{tableCommands-MP6VFSVT.js → tableCommands-HITDSLHS.js} +10 -10
  232. package/tombstones-FQQMEDOW.js +32 -0
  233. package/{toolApiClient-HGNO53TC.js → toolApiClient-OGQEBQVX.js} +4 -4
  234. package/{tools-EWKCPKMS.js → tools-HWFG6GMJ.js} +75 -74
  235. package/tuiSummaryLlmCaller-HQQZAMYF.js +44 -0
  236. package/{updateCommands-ZQYU6SCI.js → updateCommands-RJVCRSBP.js} +10 -8
  237. package/{updateDialogTitleAction-5GGMBTDF.js → updateDialogTitleAction-KNPOAMVS.js} +48 -46
  238. package/{usageCommand-F4IPVMIZ.js → usageCommand-FWZCB7AM.js} +11 -10
  239. package/{usageRebuildCommand-HAW2AD5N.js → usageRebuildCommand-SP2BLNJU.js} +12 -11
  240. package/userDataMerge-HT2ZVHBJ.js +13 -0
  241. package/{windowsSelfUpdate-257DV2T6.js → windowsSelfUpdate-KERHIAB4.js} +3 -3
  242. package/{workloadLifecycle-4C42SVBD.js → workloadLifecycle-DYNEYHV5.js} +6 -6
  243. package/agentRecordCommands-ZQ7SVYGG.js +0 -167
  244. package/agentRunCommand-WS7IGO2W.js +0 -196
  245. package/chunk-3CGG2PAL.js +0 -594
  246. package/chunk-5XBUWM6I.js +0 -89
  247. package/chunk-CJEIOP3E.js +0 -0
  248. package/chunk-EHGEOAHI.js +0 -636
  249. package/chunk-FW6YHHLI.js +0 -842
  250. package/chunk-GPVRUGGY.js +0 -115
  251. package/chunk-HSVBJRF4.js +0 -339
  252. package/chunk-WJZOQR2J.js +0 -151
  253. package/chunk-ZCWRMUWT.js +0 -89
  254. package/dist-M676ULYG.js +0 -7314
  255. package/machineWsRunDispatch-WWJQ6WR3.js +0 -182
  256. package/models-PJBE6JDV.js +0 -9
  257. package/tuiSummaryLlmCaller-ALQYUUWB.js +0 -189
  258. package/{chunk-WACI5I6V.js → chunk-2THCNKE4.js} +3 -3
  259. package/{chunk-2QHFH3DR.js → chunk-47ITIXO7.js} +6 -6
  260. package/{chunk-GOO6G4PY.js → chunk-CKG3PRZ7.js} +0 -0
  261. package/{chunk-OQHIVPG4.js → chunk-SNBZZPYH.js} +3 -3
  262. package/{chunk-AETZ7AD6.js → chunk-W6RFEDN4.js} +3 -3
@@ -1,3 +1,26 @@
1
+ // packages/chat/web/spaceWorkspaces.ts
2
+ var SPACE_WORKSPACES_KEY = "nolo:space-workspaces:v1";
3
+ var isAbsolutePath = (value) => typeof value === "string" && /^(\/|[A-Za-z]:[\\/]|\\\\[^\\]+\\)/.test(value.trim());
4
+ function readAll(storage, userId) {
5
+ if (!userId) return /* @__PURE__ */ Object.create(null);
6
+ const raw = storage.getItem(SPACE_WORKSPACES_KEY);
7
+ if (!raw) return /* @__PURE__ */ Object.create(null);
8
+ try {
9
+ const value = JSON.parse(raw);
10
+ if (!value || typeof value !== "object" || Array.isArray(value)) return /* @__PURE__ */ Object.create(null);
11
+ const record = value;
12
+ if (record.userId !== userId || !record.folders || typeof record.folders !== "object" || Array.isArray(record.folders)) return /* @__PURE__ */ Object.create(null);
13
+ return Object.fromEntries(Object.entries(record.folders).filter(([, path]) => isAbsolutePath(path)));
14
+ } catch {
15
+ return /* @__PURE__ */ Object.create(null);
16
+ }
17
+ }
18
+ function readSpaceWorkspaceFolder(storage, spaceId, userId) {
19
+ if (!spaceId) return null;
20
+ const paths = readAll(storage, userId);
21
+ return Object.hasOwn(paths, spaceId) ? paths[spaceId].trim() : null;
22
+ }
23
+
1
24
  // packages/chat/web/desktopFolderProjects.ts
2
25
  var DESKTOP_FOLDER_PROJECTS_KEY = "nolo:desktop-folder-projects:v1";
3
26
  function updateDesktopProject(storage, projectId, patch) {
@@ -148,7 +171,7 @@ function readDesktopDefaultWorkspacePath() {
148
171
  if (typeof window === "undefined") return null;
149
172
  return window.__NOLO_DESKTOP_CWD__?.trim() || null;
150
173
  }
151
- function resolveDialogWorkspaceFolder(storage, dialogKey) {
174
+ function resolveDialogWorkspaceFolder(storage, dialogKey, spaceId, userId) {
152
175
  const projectId = readDialogProjectId(storage, dialogKey);
153
176
  const projectPath = projectId ? resolveSelectedDesktopFolder(
154
177
  readDesktopFolderProjects(storage.getItem(DESKTOP_FOLDER_PROJECTS_KEY)),
@@ -158,7 +181,7 @@ function resolveDialogWorkspaceFolder(storage, dialogKey) {
158
181
  const exists = readDesktopFolderProjects(storage.getItem(DESKTOP_FOLDER_PROJECTS_KEY)).some((p) => p.id === projectId);
159
182
  return { cwd: projectPath || null, projectId, missing: !exists };
160
183
  }
161
- return { cwd: readDesktopDefaultWorkspacePath(), projectId: null, missing: false };
184
+ return { cwd: readSpaceWorkspaceFolder(storage, spaceId, userId) ?? readDesktopDefaultWorkspacePath(), projectId: null, missing: false };
162
185
  }
163
186
 
164
187
  export {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  require_react
3
- } from "./chunk-YDH3FDFQ.js";
3
+ } from "./chunk-5FUN7EG4.js";
4
4
  import {
5
5
  __toESM
6
- } from "./chunk-4VNS5WPM.js";
6
+ } from "./chunk-U67V476Y.js";
7
7
 
8
8
  // packages/chat/dialog/dialogRuntimeTypes.ts
9
9
  var GLOBAL_DIALOG_RUNTIME_KEY = "__global__";
@@ -580,6 +580,7 @@ export {
580
580
  applyClearDialogStateRuntime,
581
581
  deleteDialogRuntime,
582
582
  abortActiveControllers,
583
+ getDialogRuntimeState,
583
584
  getDialogRuntimeTokens,
584
585
  getRecoveredForegroundTurn,
585
586
  selectDialogRuntimeByKey,
@@ -592,6 +593,7 @@ export {
592
593
  selectLoopStopReason,
593
594
  selectCurrentDialogKey,
594
595
  selectConfigError,
596
+ subscribe,
595
597
  usePendingFiles,
596
598
  useActiveControllers,
597
599
  usePendingUserInputQueue,
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  canonicalizeToolName
3
- } from "./chunk-ZCWRMUWT.js";
3
+ } from "./chunk-6OVNSQHN.js";
4
4
  import {
5
5
  isOwnedAgentKey
6
6
  } from "./chunk-M2EJHDJP.js";
7
- import {
8
- isRecord
9
- } from "./chunk-KUG52IAP.js";
10
7
  import {
11
8
  asTrimmedNonEmptyStringArray
12
9
  } from "./chunk-I42VC5KR.js";
10
+ import {
11
+ isRecord
12
+ } from "./chunk-KUG52IAP.js";
13
13
 
14
14
  // packages/agent-runtime/runtimeToolSurface.ts
15
15
  var DEFAULT_PRIVATE_NOLO_WORKSPACE_TOOLS = [
@@ -67,6 +67,8 @@ var HIGH_RISK_MUTATION_TOOL_NAMES = [
67
67
  // 编排副作用:startAgentRun 会另起一次 run(子 run 的只读与否由调用方参数决定),
68
68
  // controlAgentRun 能追加指令/停止它;只读 run 不应拿到这两个(review A-1)。
69
69
  "startAgentRun",
70
+ "requestTaskReview",
71
+ "recordTaskReviewDecision",
70
72
  "controlAgentRun",
71
73
  // 受控云端执行:在用户拥有的云资源上跑任意命令,不可重放、副作用在云端。
72
74
  // 硬边界:它永不进 DEFAULT_PRIVATE_NOLO_WORKSPACE_TOOLS(见该清单注释),
@@ -206,7 +206,7 @@ async function readDocFunc(args, thunkApi) {
206
206
  throw new Error(`\u65E0\u6548\u7684\u9875\u9762 ID: ${id}\u3002\u9875\u9762 ID \u901A\u5E38\u4EE5 "page-" \u5F00\u5934\u3002`);
207
207
  }
208
208
  try {
209
- const { readAction } = await import("./read-4V2RMG7N.js");
209
+ const { readAction } = await import("./read-MRQHJMJ2.js");
210
210
  const pageData = await readAction({ dbKey: id }, thunkApi);
211
211
  if (!pageData) {
212
212
  throw new Error(`\u672A\u627E\u5230 ID \u4E3A ${id} \u7684\u9875\u9762\u3002`);
@@ -5,7 +5,7 @@ import {
5
5
  inlineImageUrlsForCustomProvider,
6
6
  prepareTools,
7
7
  shouldInlineImageUrlsForAgent
8
- } from "./chunk-G2BQWAVT.js";
8
+ } from "./chunk-O6J3OTOP.js";
9
9
  import {
10
10
  CONFIRMATION_INPUT_KEYS,
11
11
  INVALID_TOOL_ARGS_REPLACEMENT,
@@ -14,16 +14,11 @@ import {
14
14
  performFetchRequest,
15
15
  sanitizeOutboundMessages,
16
16
  stripModelToolArgs
17
- } from "./chunk-BBJ22CLB.js";
17
+ } from "./chunk-WUUH4LWZ.js";
18
18
  import {
19
19
  findToolExecutor,
20
20
  toolDefinitionsByName
21
- } from "./chunk-XHQC4PXX.js";
22
- import {
23
- classifyApiError,
24
- classifyGenerationError,
25
- extractErrorDiagnostics
26
- } from "./chunk-TX5EYMGT.js";
21
+ } from "./chunk-B4GOW4MT.js";
27
22
  import {
28
23
  createSSEParser,
29
24
  createToolRunId,
@@ -32,10 +27,7 @@ import {
32
27
  toolRunSetPending,
33
28
  toolRunStarted,
34
29
  toolRunSucceeded
35
- } from "./chunk-HUBHAQK2.js";
36
- import {
37
- getPublicImageAgentMode
38
- } from "./chunk-VIDPVFP3.js";
30
+ } from "./chunk-ON37YXGX.js";
39
31
  import {
40
32
  addToolMessage,
41
33
  messageStreamEnd,
@@ -43,31 +35,31 @@ import {
43
35
  toast,
44
36
  toolResultNeedsUserConfirmation,
45
37
  updateToolMessage
46
- } from "./chunk-ZXOUUDCG.js";
38
+ } from "./chunk-MZLE5HQ3.js";
47
39
  import {
48
40
  streamAgentChatTurn
49
- } from "./chunk-KFLT5KAD.js";
41
+ } from "./chunk-NWP2OYOX.js";
50
42
  import {
51
43
  getCurrentSpaceId
52
- } from "./chunk-5XBUWM6I.js";
44
+ } from "./chunk-MBG66ZBH.js";
53
45
  import {
54
46
  addActiveController,
55
47
  getActiveDialogKey,
56
48
  removeActiveController,
57
49
  tokenUsageLiveUpdate
58
- } from "./chunk-OWYYDMGJ.js";
50
+ } from "./chunk-S2NTVGA2.js";
59
51
  import {
60
52
  require_react
61
- } from "./chunk-YDH3FDFQ.js";
53
+ } from "./chunk-5FUN7EG4.js";
62
54
  import {
63
55
  selectCurrentServer
64
- } from "./chunk-4I7ERB7F.js";
56
+ } from "./chunk-VREDDN25.js";
65
57
  import {
66
58
  write
67
- } from "./chunk-FW6YHHLI.js";
59
+ } from "./chunk-44X52WOJ.js";
68
60
  import {
69
61
  createAsyncThunk
70
- } from "./chunk-P5L7CXOC.js";
62
+ } from "./chunk-7Z6EW7AH.js";
71
63
  import {
72
64
  selectIdentityToken
73
65
  } from "./chunk-PXYBUFDB.js";
@@ -78,7 +70,7 @@ import {
78
70
  projectUserPartForModel,
79
71
  resolveOutboundDiagnosticSink,
80
72
  resolveOutboundWire
81
- } from "./chunk-4KB6WQUL.js";
73
+ } from "./chunk-BGP2EDFG.js";
82
74
  import {
83
75
  accumulateToolCallDelta,
84
76
  createThinkParserState,
@@ -90,44 +82,52 @@ import {
90
82
  } from "./chunk-56GBUMO5.js";
91
83
  import {
92
84
  normalizeChatCompletionsBodyForProvider
93
- } from "./chunk-H5HF7TJA.js";
85
+ } from "./chunk-MAIITKBT.js";
86
+ import {
87
+ classifyApiError,
88
+ classifyGenerationError,
89
+ extractErrorDiagnostics
90
+ } from "./chunk-TLE77UJ5.js";
94
91
  import {
95
92
  EMPTY_ASSISTANT_REPAIR_PROMPT
96
- } from "./chunk-V5Y3R6BT.js";
93
+ } from "./chunk-NIZ2BXFD.js";
97
94
  import {
98
95
  getModelInfo
99
- } from "./chunk-7BT37FK3.js";
96
+ } from "./chunk-RDH5CQ4T.js";
100
97
  import {
101
98
  isAbortError
102
99
  } from "./chunk-7DPNBQSV.js";
103
100
  import {
104
101
  extractCustomId
105
102
  } from "./chunk-M2EJHDJP.js";
106
- import {
107
- getApiEndpoint
108
- } from "./chunk-SM3NSZJV.js";
109
- import {
110
- toErrorMessage
111
- } from "./chunk-HNMXYYJR.js";
112
- import {
113
- isRecord
114
- } from "./chunk-KUG52IAP.js";
115
103
  import {
116
104
  toTrimmedString
117
- } from "./chunk-JY5NGFFH.js";
105
+ } from "./chunk-SYTHYBMI.js";
118
106
  import {
119
107
  createDialogMessageKeyAndId,
120
108
  dialogMessageKey
121
- } from "./chunk-XJWWBO34.js";
109
+ } from "./chunk-OJKUU3LP.js";
110
+ import {
111
+ getPublicImageAgentMode
112
+ } from "./chunk-VIDPVFP3.js";
113
+ import {
114
+ toErrorMessage
115
+ } from "./chunk-HNMXYYJR.js";
122
116
  import {
123
117
  asTrimmedString
124
118
  } from "./chunk-3EUW3WEO.js";
119
+ import {
120
+ getApiEndpoint
121
+ } from "./chunk-2UCBGYO4.js";
122
+ import {
123
+ isRecord
124
+ } from "./chunk-KUG52IAP.js";
125
125
  import {
126
126
  asOptionalTrimmedString
127
127
  } from "./chunk-G3SUCT4W.js";
128
128
  import {
129
129
  __toESM
130
- } from "./chunk-4VNS5WPM.js";
130
+ } from "./chunk-U67V476Y.js";
131
131
 
132
132
  // packages/integrations/openai/filterAndCleanMessages.ts
133
133
  var isValidMessagePart = (part) => {
@@ -1178,6 +1178,16 @@ function shouldSkipBillingForUserAbort(error, totalUsage) {
1178
1178
  const hasCost = Object.prototype.hasOwnProperty.call(totalUsage, "cost") && typeof totalUsage.cost === "number";
1179
1179
  return !(hasTokenField || hasCost);
1180
1180
  }
1181
+ function buildFinalCompletionsRequestBody(bodyData, agentConfig, disableTools) {
1182
+ return normalizeChatCompletionsBodyForProvider({
1183
+ body: buildRequestBodyWithTools(bodyData, agentConfig, disableTools),
1184
+ provider: agentConfig.provider ?? "",
1185
+ model: agentConfig.model
1186
+ });
1187
+ }
1188
+ function buildEmptyCompletionRepairBody(body) {
1189
+ return { ...body, messages: [...body.messages ?? [], { role: "user", content: EMPTY_ASSISTANT_REPAIR_PROMPT }] };
1190
+ }
1181
1191
  function buildRequestBodyWithTools(bodyData, agentConfig, disableToolsForThisRequest) {
1182
1192
  const messagesForBody = Array.isArray(bodyData?.messages) ? sanitizeOutboundMessages(bodyData.messages) : bodyData?.messages;
1183
1193
  const baseBody = messagesForBody !== bodyData?.messages ? { ...bodyData, messages: messagesForBody } : bodyData;
@@ -1659,11 +1669,7 @@ var sendOpenAICompletionsRequest = async ({
1659
1669
  }
1660
1670
  dispatch(addActiveController({ messageId, controller, dialogKey }));
1661
1671
  const requestBody = await inlineImageUrlsForCustomProvider(
1662
- normalizeChatCompletionsBodyForProvider({
1663
- body: buildRequestBodyWithTools(bodyData, agentConfig, disableToolsForThisRequest),
1664
- provider: agentConfig.provider ?? "",
1665
- model: agentConfig.model
1666
- }),
1672
+ buildFinalCompletionsRequestBody(bodyData, agentConfig, disableToolsForThisRequest),
1667
1673
  {
1668
1674
  shouldInline: shouldInlineImageUrlsForAgent(agentConfig)
1669
1675
  }
@@ -1893,13 +1899,7 @@ var sendOpenAICompletionsRequest = async ({
1893
1899
  if (producedNothing && !emptyCompletionRetryUsed && !streamState.hasHandedOff && !streamState.alreadyFinalized && !signal.aborted) {
1894
1900
  emptyCompletionRetryUsed = true;
1895
1901
  closeDiagnosticAttempt(diagnosticCurrentAttempt, "stream-error");
1896
- const repairRequestBody = {
1897
- ...requestBody,
1898
- messages: [
1899
- ...requestBody.messages ?? [],
1900
- { role: "user", content: EMPTY_ASSISTANT_REPAIR_PROMPT }
1901
- ]
1902
- };
1902
+ const repairRequestBody = buildEmptyCompletionRepairBody(requestBody);
1903
1903
  const repairAttempt = beginDiagnosticAttempt(repairRequestBody);
1904
1904
  const retryResponse = await performFetchRequest({
1905
1905
  agentConfig,
@@ -2099,5 +2099,7 @@ export {
2099
2099
  handleToolCalls,
2100
2100
  updateTotalUsage,
2101
2101
  readStreamChunk,
2102
+ buildFinalCompletionsRequestBody,
2103
+ buildEmptyCompletionRepairBody,
2102
2104
  sendOpenAICompletionsRequest
2103
2105
  };
@@ -1,6 +1,9 @@
1
1
  import {
2
2
  trimTrailingSlash
3
- } from "./chunk-TCZHTTUU.js";
3
+ } from "./chunk-I7WBYGBP.js";
4
+ import {
5
+ toErrorMessage
6
+ } from "./chunk-HNMXYYJR.js";
4
7
  import {
5
8
  commandCodeModels,
6
9
  kimiCodeModels,
@@ -11,16 +14,13 @@ import {
11
14
  qwenTokenPlanModels,
12
15
  stepfunModels,
13
16
  stepfunStepPlanModels
14
- } from "./chunk-SM3NSZJV.js";
15
- import {
16
- toErrorMessage
17
- } from "./chunk-HNMXYYJR.js";
17
+ } from "./chunk-2UCBGYO4.js";
18
18
  import {
19
19
  PLATFORM_HOSTED_DEEPSEEK_FLASH_OFF_PEAK_PRICE,
20
20
  PLATFORM_HOSTED_DEEPSEEK_FLASH_PEAK_PRICE,
21
21
  PLATFORM_HOSTED_DEEPSEEK_PRO_OFF_PEAK_PRICE,
22
22
  PLATFORM_HOSTED_DEEPSEEK_PRO_PEAK_PRICE
23
- } from "./chunk-GOO6G4PY.js";
23
+ } from "./chunk-CKG3PRZ7.js";
24
24
  import {
25
25
  asTrimmedLowercaseString
26
26
  } from "./chunk-QSJ3HFEF.js";
@@ -422,7 +422,15 @@ var SUBSCRIPTION_OAUTH_PROVIDERS = [
422
422
  { id: "claude-sonnet-5", label: "Claude Sonnet 5", hasVision: true },
423
423
  { id: "claude-opus-4-6-thinking", label: "Claude Opus 4.6 Thinking", hasVision: true }
424
424
  ],
425
- cloudCodeBaseUrl: ANTIGRAVITY_CLOUD_CODE_BASE_URL
425
+ cloudCodeBaseUrl: ANTIGRAVITY_CLOUD_CODE_BASE_URL,
426
+ // Google 的 Antigravity 条款不允许第三方客户端登录,且已有账号因此被停用的
427
+ // 报告(oh-my-pi #18341,该仓库据此停用了同一通道)。保留条目与运行时支持,
428
+ // 只是不再进入新建选择器。
429
+ officialBan: {
430
+ reason: "Google \u7684 Antigravity \u6761\u6B3E\u4E0D\u5141\u8BB8\u7B2C\u4E09\u65B9\u767B\u5F55\uFF0C\u5DF2\u6709\u8D26\u53F7\u56E0\u6B64\u88AB\u505C\u7528",
431
+ guidance: "\u6539\u7528 GEMINI_API_KEY\uFF08AI Studio\uFF09\u6216 google-vertex \u901A\u9053",
432
+ source: "oh-my-pi #18341"
433
+ }
426
434
  },
427
435
  {
428
436
  kind: "oauth",
@@ -537,14 +545,32 @@ var CUSTOM_API_KEY_TEMPLATES = [
537
545
  label: "Ollama Cloud",
538
546
  description: "Ollama Cloud \u8BA2\u9605\uFF08API Key + Base URL\uFF09",
539
547
  provider: "ollama-cloud",
540
- baseUrl: "https://ollama.com/v1",
548
+ // Ollama Cloud 订阅(API Key + Base URL)。默认走 **Responses 线**
549
+ // (/v1/responses):2026-11-10 实测 10 个现役模型在 /v1/responses 上逐个 200,
550
+ // function_call(工具调用)与 reasoning item 都正常,nolo 端到端跑通
551
+ // (agent 回复 PONG)。chat.completions(/v1)同样可用,保留为可切换的备选。
552
+ baseUrl: "https://ollama.com/v1/responses",
541
553
  keyFormatHint: "Key \u5F62\u5982 xxx.xxx\uFF08\u5728 ollama.com/settings/api-keys \u83B7\u53D6\u5B8C\u6574 Key\uFF0C\u542B\u70B9\u53F7\u540E\u534A\u6BB5\uFF09",
542
- defaultModel: "deepseek-v4-flash:cloud",
554
+ // 2026-11-10 按上游实拉清单(GET https://ollama.com/v1/models)+ 逐个 chat
555
+ // 探针校准:默认值与下拉都换成现役 id。旧的 deepseek-v4-flash:cloud 已被上游
556
+ // 下线(chat 返回 410 "deepseek-v4-flash:0731 was retired on September 25, 2026"),
557
+ // 留着它等于让新用户第一步就撞死模型。裸 id(deepseek-v4.1-flash)与带
558
+ // `:cloud` 后缀的别名当前都可用,这里统一用上游清单给出的裸 id。
559
+ // 探针记录(同一天、同一把 key、POST /v1/chat/completions、max_tokens=8):
560
+ // 下面这 10 个 id **逐个原样请求**均返回 200(含无版本后缀的 deepseek-v4-pro);
561
+ // 只有 deepseek-v4-flash:cloud 返回 410,因此从列表移除。
562
+ defaultModel: "deepseek-v4.1-flash",
543
563
  modelOptions: [
544
- { id: "glm-5.2:cloud", label: "GLM 5.2" },
545
- { id: "deepseek-v4-flash:cloud", label: "DeepSeek V4 Flash", recommended: true },
546
- { id: "deepseek-v4-pro:cloud", label: "DeepSeek V4 Pro" },
547
- { id: "kimi-k3:cloud", label: "Kimi K3" }
564
+ { id: "deepseek-v4.1-flash", label: "DeepSeek V4.1 Flash", recommended: true },
565
+ { id: "deepseek-v4-pro", label: "DeepSeek V4 Pro" },
566
+ { id: "glm-5.3-flash", label: "GLM 5.3 Flash" },
567
+ { id: "glm-5.3", label: "GLM 5.3" },
568
+ { id: "kimi-k3.1-pro", label: "Kimi K3.1 Pro" },
569
+ { id: "kimi-k3", label: "Kimi K3" },
570
+ { id: "kimi-k2.7-code", label: "Kimi K2.7 Code" },
571
+ { id: "minimax-m3.1-flash", label: "MiniMax M3.1 Flash" },
572
+ { id: "mimo-v2.6-flash", label: "MiMo V2.6 Flash" },
573
+ { id: "mistral-large-4", label: "Mistral Large 4" }
548
574
  ],
549
575
  commercialKind: "subscription",
550
576
  accessVariant: "token_plan_endpoint"
@@ -660,8 +686,9 @@ var CUSTOM_API_KEY_TEMPLATES = [
660
686
  // OpenDesign 聚合网关(open-design.ai):一个 Key 聚合 GPT / Claude / DeepSeek /
661
687
  // GLM / Kimi / MiMo,OpenAI 兼容。modelOptions 按「品牌知名度」排序(GPT > Claude >
662
688
  // DeepSeek > GLM > Kimi > MiMo,同品牌内按能力/成本排),快照取自 2026-10-11 的
663
- // GET /v1/models;上游增删模型时以 `nolo agent models --url <baseUrl>`(或 `--preset opendesign`)实测为准,
664
- // CLI 的 --model 仍可填列表外的 ID。
689
+ // GET /v1/models;上游增删模型时以 `nolo agent models --preset opendesign`(服务端
690
+ // 实时发现,需 --api-key;发现不可用时回退到本快照)实测为准,CLI 的 --model 仍可填
691
+ // 列表外的 ID。
665
692
  {
666
693
  kind: "api_key_template",
667
694
  id: "opendesign",
@@ -1,22 +1,22 @@
1
1
  import {
2
2
  ulid
3
- } from "./chunk-XJWWBO34.js";
3
+ } from "./chunk-OJKUU3LP.js";
4
4
  import {
5
5
  asNonEmptyStringArray
6
6
  } from "./chunk-I42VC5KR.js";
7
- import {
8
- asOptionalFiniteNumber
9
- } from "./chunk-WWC7I6TA.js";
10
7
  import {
11
8
  asTrimmedString
12
9
  } from "./chunk-3EUW3WEO.js";
10
+ import {
11
+ asOptionalFiniteNumber
12
+ } from "./chunk-WWC7I6TA.js";
13
13
  import {
14
14
  asOptionalTrimmedString
15
15
  } from "./chunk-G3SUCT4W.js";
16
16
  import {
17
17
  __commonJS,
18
18
  __toESM
19
- } from "./chunk-4VNS5WPM.js";
19
+ } from "./chunk-U67V476Y.js";
20
20
 
21
21
  // node_modules/rambda/dist/rambda.js
22
22
  var require_rambda = __commonJS({
@@ -7,7 +7,7 @@ import {
7
7
  listUserRecordsFromServers,
8
8
  readDbRecordFromServers,
9
9
  readLiveDbRecordAfterTombstoneMerge
10
- } from "./chunk-VO4WSAVP.js";
10
+ } from "./chunk-MYHNBEXD.js";
11
11
  import {
12
12
  parsePositiveFiniteNumberOrFallback
13
13
  } from "./chunk-Y5GCAMGP.js";
@@ -21,7 +21,7 @@ import {
21
21
  import {
22
22
  buildDialogAttachmentPlan,
23
23
  extractFileContentIds
24
- } from "./chunk-LEC5ALIN.js";
24
+ } from "./chunk-KEPOVMF4.js";
25
25
  import {
26
26
  getDefaultCliLocalRuntimeDb
27
27
  } from "./chunk-P2ZLUIW2.js";
@@ -36,23 +36,39 @@ import {
36
36
  import {
37
37
  createClientLogger
38
38
  } from "./chunk-QQ56R7KS.js";
39
- import {
40
- isLevelNotFoundError
41
- } from "./chunk-OW765XBU.js";
42
39
  import {
43
40
  boundSummaryText,
44
41
  buildDialogReadEnvelope,
45
42
  projectDialogReadForAgent
46
- } from "./chunk-RZOV7OMV.js";
43
+ } from "./chunk-C4VAR65S.js";
47
44
  import {
48
45
  asRecordOrEmpty
49
46
  } from "./chunk-KX6YBIHG.js";
47
+ import {
48
+ isLevelNotFoundError
49
+ } from "./chunk-OW765XBU.js";
50
+ import {
51
+ dialogIdFromKey,
52
+ isSupportedDialogId,
53
+ parseDialogPathIdentity,
54
+ splitDialogKeyIdentity
55
+ } from "./chunk-YZMNK53S.js";
56
+ import {
57
+ asNonEmptyStringArray,
58
+ asTrimmedNonEmptyStringArray
59
+ } from "./chunk-I42VC5KR.js";
60
+ import {
61
+ t
62
+ } from "./chunk-OB6DVWPF.js";
50
63
  import {
51
64
  resolveRunsDir
52
- } from "./chunk-NSAPDIN2.js";
65
+ } from "./chunk-2GJKRKI6.js";
53
66
  import {
54
67
  toErrorMessage
55
68
  } from "./chunk-HNMXYYJR.js";
69
+ import {
70
+ asTrimmedString
71
+ } from "./chunk-3EUW3WEO.js";
56
72
  import {
57
73
  isRecord
58
74
  } from "./chunk-KUG52IAP.js";
@@ -63,23 +79,13 @@ import {
63
79
  resolveDeleteServerCandidates,
64
80
  resolveServerCandidates,
65
81
  resolveServerUrl
66
- } from "./chunk-WACI5I6V.js";
67
- import {
68
- DEFAULT_LOCAL_API_ORIGIN
69
- } from "./chunk-4SN6J65J.js";
70
- import {
71
- t
72
- } from "./chunk-VNYYOX3V.js";
73
- import {
74
- asNonEmptyStringArray,
75
- asTrimmedNonEmptyStringArray
76
- } from "./chunk-I42VC5KR.js";
77
- import {
78
- asTrimmedString
79
- } from "./chunk-3EUW3WEO.js";
82
+ } from "./chunk-2THCNKE4.js";
80
83
  import {
81
84
  asOptionalTrimmedString
82
85
  } from "./chunk-G3SUCT4W.js";
86
+ import {
87
+ DEFAULT_LOCAL_API_ORIGIN
88
+ } from "./chunk-4SN6J65J.js";
83
89
 
84
90
  // packages/cli/dialogAttachmentCleanup.ts
85
91
  function asText(value) {
@@ -227,8 +233,6 @@ function loadLocalRunChildDialogIds(args = {}) {
227
233
 
228
234
  // packages/cli/dialogCommands.ts
229
235
  var logger = createClientLogger("cli:dialog");
230
- var DIALOG_ID_RE = /^[0-9A-HJKMNP-TV-Z]{26}$/i;
231
- var DIALOG_PATH_RE = /^\/(?:space\/([^/]+)\/)?dialog-(.+)-([0-9A-HJKMNP-TV-Z]{26})\/?$/i;
232
236
  var DEFAULT_DIALOG_LIST_LIMIT = 50;
233
237
  var DEFAULT_DIALOG_QUERY_LIMIT = 50;
234
238
  var UNBOUNDED_DIALOG_CAP = 1e5;
@@ -347,35 +351,34 @@ function writeJsonlStream(output, items) {
347
351
  }
348
352
  }
349
353
  function getDialogIdFromKey(dbKey) {
350
- const index = dbKey.lastIndexOf("-");
351
- return index >= 0 ? dbKey.slice(index + 1) : dbKey;
354
+ return dialogIdFromKey(dbKey);
352
355
  }
353
356
  function resolveDialogInput(rawInput, userId) {
354
357
  const raw = rawInput.trim();
355
358
  if (raw.startsWith("http://") || raw.startsWith("https://")) {
356
359
  const url = new URL(raw);
357
- const match = url.pathname.match(DIALOG_PATH_RE);
358
- if (!match) {
360
+ const identity = parseDialogPathIdentity(url.pathname);
361
+ if (!identity) {
359
362
  throw new Error(`Unsupported dialog URL path: ${url.pathname}`);
360
363
  }
361
- const [, spaceId, ownerId, dialogId] = match;
362
364
  return {
363
- dbKey: `dialog-${ownerId}-${dialogId}`,
364
- dialogId,
365
- ownerId,
366
- spaceId: spaceId ? decodeURIComponent(spaceId) : null
365
+ dbKey: `dialog-${identity.ownerId}-${identity.dialogId}`,
366
+ dialogId: identity.dialogId,
367
+ ownerId: identity.ownerId,
368
+ spaceId: identity.spaceId
367
369
  };
368
370
  }
369
371
  if (raw.startsWith("dialog-")) {
370
- const dialogId = getDialogIdFromKey(raw);
372
+ const identity = splitDialogKeyIdentity(raw);
373
+ if (!identity) throw new Error(`Unsupported dialog key: ${raw}`);
371
374
  return {
372
375
  dbKey: raw,
373
- dialogId,
374
- ownerId: raw.slice("dialog-".length, Math.max("dialog-".length, raw.length - dialogId.length - 1)),
376
+ dialogId: identity.dialogId,
377
+ ownerId: identity.userId,
375
378
  spaceId: null
376
379
  };
377
380
  }
378
- if (!DIALOG_ID_RE.test(raw)) {
381
+ if (!isSupportedDialogId(raw)) {
379
382
  throw new Error(`Unsupported dialog id: ${raw}`);
380
383
  }
381
384
  return {
@@ -550,29 +553,28 @@ function resolveDialogReadTarget(args, env, authToken) {
550
553
  const raw = rawInput.trim();
551
554
  if (raw.startsWith("http://") || raw.startsWith("https://")) {
552
555
  const url = new URL(raw);
553
- const match = url.pathname.match(DIALOG_PATH_RE);
554
- if (!match) throw new Error(`Unsupported dialog URL path: ${url.pathname}`);
555
- const [, spaceId, ownerId, dialogId] = match;
556
+ const identity = parseDialogPathIdentity(url.pathname);
557
+ if (!identity) throw new Error(`Unsupported dialog URL path: ${url.pathname}`);
556
558
  const base = preferredServer ?? env.READ_DIALOG_BASE ?? url.origin;
557
559
  return {
558
560
  base,
559
- dialogId,
560
- dialogKey: `dialog-${ownerId}-${dialogId}`,
561
- userId: ownerId,
562
- spaceId: spaceId ? decodeURIComponent(spaceId) : void 0
561
+ dialogId: identity.dialogId,
562
+ dialogKey: `dialog-${identity.ownerId}-${identity.dialogId}`,
563
+ userId: identity.ownerId,
564
+ spaceId: identity.spaceId ?? void 0
563
565
  };
564
566
  }
565
567
  if (raw.startsWith("dialog-")) {
566
- const dialogId = getDialogIdFromKey(raw);
567
- const ownerId = raw.slice("dialog-".length, Math.max("dialog-".length, raw.length - dialogId.length - 1));
568
+ const identity = splitDialogKeyIdentity(raw);
569
+ if (!identity) throw new Error(`Unsupported dialog key: ${raw}`);
568
570
  return {
569
571
  base: preferredServer ?? env.READ_DIALOG_BASE ?? resolveServerUrl(args, env),
570
- dialogId,
572
+ dialogId: identity.dialogId,
571
573
  dialogKey: raw,
572
- userId: ownerId || ownerFallback
574
+ userId: identity.userId
573
575
  };
574
576
  }
575
- if (!DIALOG_ID_RE.test(raw)) {
577
+ if (!isSupportedDialogId(raw)) {
576
578
  throw new Error(`Unsupported dialog id: ${raw}`);
577
579
  }
578
580
  if (!ownerFallback) {
@@ -780,7 +782,7 @@ function isExplicitDialogIdMismatch(meta, dialogId) {
780
782
  return meta && typeof meta === "object" && "id" in meta && meta.id != null && String(meta.id) !== dialogId;
781
783
  }
782
784
  async function readDialogFromLocalDb(dialogKey, dialogId, limit, readLocalDialog) {
783
- const reader = readLocalDialog ?? (await import("./localDialogRead-7NNDVVF7.js")).readDialogFromLocalDb;
785
+ const reader = readLocalDialog ?? (await import("./localDialogRead-SVTPA5GY.js")).readDialogFromLocalDb;
784
786
  const result = await reader({ dialogKey, dialogId, limit });
785
787
  return {
786
788
  ...result,
@@ -795,7 +797,7 @@ async function readLocalDialogAtDbPathDefault(args) {
795
797
  );
796
798
  }
797
799
  const db = await getDefaultCliLocalRuntimeDb();
798
- const { readDialogFromLocalDb: reader } = await import("./localDialogRead-7NNDVVF7.js");
800
+ const { readDialogFromLocalDb: reader } = await import("./localDialogRead-SVTPA5GY.js");
799
801
  return reader({ ...args, db });
800
802
  }
801
803
  async function readDialogFromLocalDbWithFallback(args) {