nolo-cli 0.99.0-alpha.1 → 0.99.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 (206) hide show
  1. package/README.md +1 -1
  2. package/{_executeModel-CJP7VSJB.js → _executeModel-WLFACVFR.js} +74 -67
  3. package/action-PNPQLJHG.js +20 -0
  4. package/{addContentAction-O7R66HEX.js → addContentAction-RBOUD7SJ.js} +12 -11
  5. package/{addDialogAgentAction-74OA7KYP.js → addDialogAgentAction-IODCR6TB.js} +18 -19
  6. package/{agentDeleteCommand-2YAHAZFJ.js → agentDeleteCommand-EFWZSSZA.js} +47 -42
  7. package/{agentEmailCommands-UH7KTTCN.js → agentEmailCommands-XQMUAB4R.js} +97 -87
  8. package/agentListCommands-EDV4RJ4D.js +742 -0
  9. package/{agentMachineCommands-6NVUXZGQ.js → agentMachineCommands-UOEI4TPN.js} +48 -43
  10. package/{agentProviderCommands-GNPTL5XR.js → agentProviderCommands-IRNZXVGE.js} +1 -1
  11. package/{agentPullCommand-O5MPVJ5E.js → agentPullCommand-B4T2DJ5H.js} +1 -1
  12. package/agentRecordCommands-BIV7NMQZ.js +138 -0
  13. package/agentRunCommand-SY7N2BDL.js +167 -0
  14. package/{agentRunControl-AVJR4JW4.js → agentRunControl-3HWA2LLQ.js} +2 -2
  15. package/{agentRuntimeLocal-VXZSDIGT.js → agentRuntimeLocal-SXYAKX3A.js} +48 -39
  16. package/{agentSlice-OU6TZKQP.js → agentSlice-WBSSBKBB.js} +14 -13
  17. package/{appDeleteCommands-32MHLR4L.js → appDeleteCommands-GTTBG53T.js} +46 -41
  18. package/{appDeployCommands-WCQOUSOB.js → appDeployCommands-ZZCHUJAT.js} +46 -41
  19. package/{appDeployStatusCommands-6QKB7DYN.js → appDeployStatusCommands-GZLLGY7Z.js} +46 -41
  20. package/{appGetCommands-SFAPP5PB.js → appGetCommands-ZRLWHJ3C.js} +46 -41
  21. package/{appListCommands-EKUBDRUO.js → appListCommands-OHARWLIL.js} +46 -41
  22. package/{authCommand-F4EFRRX6.js → authCommand-NHDLY3IB.js} +118 -24
  23. package/{authCommands-RGOGCPP6.js → authCommands-UDBJVSZU.js} +7 -5
  24. package/{builtinSkillRegistry-FUAVTRVZ.js → builtinSkillRegistry-MAR5LPAC.js} +10 -8
  25. package/{chromeCommands-FZYAU75D.js → chromeCommands-K27J4OVZ.js} +124 -28
  26. package/{chromeOpsCommands-62P2Q2YB.js → chromeOpsCommands-IXRLN57H.js} +4 -3
  27. package/{chunk-6OZ36FXI.js → chunk-27ONFIEY.js} +22 -4
  28. package/{chunk-JEDZAO7L.js → chunk-2SYTUTLI.js} +257 -37
  29. package/{chunk-53HEEOTT.js → chunk-2WJ57RJA.js} +83 -16
  30. package/{chunk-OIVSQH2O.js → chunk-3BXNTXYI.js} +299 -5
  31. package/{chunk-ABQYVJBJ.js → chunk-46Y5D2BZ.js} +5 -5
  32. package/{chunk-EYAQT56M.js → chunk-4DPP773Q.js} +2 -2
  33. package/{chunk-H62HCIUP.js → chunk-4FFUDT6D.js} +24 -21
  34. package/chunk-4LCOCOR5.js +50 -0
  35. package/{chunk-2GRGFCF6.js → chunk-4VJAC32I.js} +2 -1
  36. package/{chunk-IIVGDG4I.js → chunk-4YSOUKUR.js} +13 -7
  37. package/{chunk-MC4XLIJ7.js → chunk-523DITKR.js} +1 -1
  38. package/{chunk-E4MARS3Q.js → chunk-5GVBDNTO.js} +1 -1
  39. package/chunk-5J3PYNUP.js +255 -0
  40. package/{chunk-ICLAW6SN.js → chunk-5LTAPGPV.js} +10 -10
  41. package/chunk-5MMAK75Q.js +15 -0
  42. package/{chunk-JPGCXHNM.js → chunk-5OA5HMTL.js} +1 -1
  43. package/{chunk-42V6BK2E.js → chunk-62IL3KQV.js} +4 -34
  44. package/{chunk-3BMYXEUW.js → chunk-6O4IK4V2.js} +1 -1
  45. package/{chunk-GQBOR3G6.js → chunk-7KVZ5LDQ.js} +2 -2
  46. package/{chunk-DNCEALKX.js → chunk-7MMSLEPA.js} +22 -29
  47. package/{chunk-L5UXH3B2.js → chunk-7TKWCTSY.js} +22 -6
  48. package/chunk-A4SQRTZ6.js +15 -0
  49. package/{chunk-7S4YWN7P.js → chunk-ADBZWMFB.js} +4 -4
  50. package/chunk-AGIM7IMJ.js +147 -0
  51. package/{chunk-5UTFL4QJ.js → chunk-AOTBKDRK.js} +7 -0
  52. package/{chunk-Q554LLSI.js → chunk-AUDNYVRC.js} +1 -1
  53. package/chunk-BMQ2MJUK.js +153 -0
  54. package/{chunk-6YTOJY35.js → chunk-BZ7NPA6G.js} +35 -2
  55. package/{chunk-7KBQIEEW.js → chunk-CHNCM7EF.js} +11 -9
  56. package/chunk-CHOZJMJS.js +78 -0
  57. package/chunk-CJN5OERD.js +13545 -0
  58. package/{chunk-ACTMNVHM.js → chunk-CYSYR67N.js} +1 -1
  59. package/{chunk-GBRG75BQ.js → chunk-D2MDMY2M.js} +1 -0
  60. package/{chunk-VA2M2T36.js → chunk-DNHENQ3T.js} +23 -28
  61. package/chunk-DZ7R5V3Y.js +164 -0
  62. package/{chunk-3VNWWVKB.js → chunk-E3YWHWCR.js} +50 -18
  63. package/{chunk-V4MJDUSR.js → chunk-E73ON47R.js} +2 -2
  64. package/{chunk-KQ4ONNQD.js → chunk-EKPKW6RM.js} +155 -8
  65. package/{chunk-TRV2MIDW.js → chunk-EXAJ6DCR.js} +1 -0
  66. package/{chunk-FXRSQVU4.js → chunk-F3NUFVSP.js} +24 -5
  67. package/{chunk-HJUYAD4A.js → chunk-FJ5BGMNM.js} +5 -5
  68. package/{chunk-2F7RJC6L.js → chunk-FOXQ7BAB.js} +1 -1
  69. package/{chunk-6IG4XSS6.js → chunk-FY7DCYW7.js} +88 -17
  70. package/{chunk-6VFARHZW.js → chunk-G53AA7RW.js} +934 -1091
  71. package/{chunk-J4MOO56S.js → chunk-GARACBQB.js} +10 -2
  72. package/chunk-GMZLP5DV.js +82 -0
  73. package/{chunk-CSSGXQJ3.js → chunk-GUYEMTRK.js} +551 -516
  74. package/{chunk-FDTR4QJ6.js → chunk-H6A6X4EK.js} +32 -1
  75. package/{chunk-DVINR3PL.js → chunk-HDLLCBRF.js} +1 -1
  76. package/{chunk-QOKAKDPE.js → chunk-HIM3FCLF.js} +0 -1
  77. package/{chunk-ONXOABJR.js → chunk-HNGRBWYF.js} +3 -0
  78. package/{chunk-VLTIYV3X.js → chunk-HP57OUJO.js} +4 -4
  79. package/{chunk-GPCZ7UXG.js → chunk-K6U4NKFJ.js} +1 -1
  80. package/{chunk-BA63USCV.js → chunk-KLUBZL6X.js} +1 -1
  81. package/{chunk-4OEFYTWL.js → chunk-LKERWYPX.js} +67 -48
  82. package/{chunk-OEVAY4J6.js → chunk-LNVJHIGA.js} +18 -20
  83. package/{chunk-LS2ZANRJ.js → chunk-LOCNXNOU.js} +1 -1
  84. package/{chunk-PUOC4YRO.js → chunk-M7VLQGQP.js} +11 -0
  85. package/{chunk-BFU6C242.js → chunk-NMFV26UG.js} +1 -1
  86. package/{chunk-FZGV4FGK.js → chunk-NUHHBEJC.js} +378 -187
  87. package/chunk-NWENLDMM.js +42 -0
  88. package/{chunk-AEOE4Z6Q.js → chunk-NZWAO6LH.js} +13 -15
  89. package/chunk-OCZKATRC.js +129 -0
  90. package/{chunk-WP7SWVOM.js → chunk-ODTDLPBV.js} +20 -11
  91. package/chunk-OW4APERY.js +870 -0
  92. package/{chunk-KQHGZWSV.js → chunk-OXME3PEE.js} +1 -1
  93. package/{chunk-S2YPVYRY.js → chunk-OYPMWCIQ.js} +67 -45
  94. package/{chunk-TOP2VXOR.js → chunk-PCF3QU5Q.js} +5 -5
  95. package/chunk-PH275YDS.js +7881 -0
  96. package/{chunk-WV42OMV7.js → chunk-PTDYOADJ.js} +8 -8
  97. package/{chunk-5H7KJX7J.js → chunk-SEB5HAUU.js} +5 -5
  98. package/{chunk-6D6VBVEW.js → chunk-SNMQMOD2.js} +80 -14
  99. package/{chunk-BYMV6QZG.js → chunk-TNIX77YM.js} +4 -0
  100. package/{chunk-Z77CRGTW.js → chunk-TVCAR26G.js} +1 -1
  101. package/chunk-TY3TIUJK.js +89 -0
  102. package/{chunk-I3TQJXQ7.js → chunk-U3C3IA32.js} +9 -2
  103. package/{chunk-ZDXFQMB4.js → chunk-U6IGAJT4.js} +47 -67
  104. package/{chunk-RG6JBBX5.js → chunk-U7XXEI5R.js} +166 -13
  105. package/{chunk-UZGQNTVW.js → chunk-UA324D4O.js} +8 -6
  106. package/chunk-UJXNKP5V.js +760 -0
  107. package/{chunk-UKZDAFYT.js → chunk-UM4PH574.js} +6 -10
  108. package/{chunk-GEPUP7OO.js → chunk-UVKDJUTL.js} +3 -3
  109. package/{chunk-ZCYXJSTU.js → chunk-V5OWQOJZ.js} +19 -88
  110. package/{chunk-NA35QHCF.js → chunk-V7Y6KRAH.js} +1 -1
  111. package/{chunk-3DII57IT.js → chunk-VCAQFMVN.js} +1 -1
  112. package/{chunk-JRQFUXY7.js → chunk-VEYL5MO5.js} +99 -22
  113. package/chunk-VIWDGTDA.js +8 -0
  114. package/chunk-VJVNU77E.js +83 -0
  115. package/{chunk-UKWGR5SS.js → chunk-VY6VFGKR.js} +194 -1144
  116. package/{chunk-BP4XNZRM.js → chunk-W72ISAKC.js} +4 -4
  117. package/{chunk-DHDMC6FO.js → chunk-WCGC6S77.js} +14 -9
  118. package/{chunk-QDSINZM3.js → chunk-WJ3B6FX6.js} +1 -14
  119. package/{chunk-KIOVECFO.js → chunk-X34KOYU2.js} +873 -227
  120. package/{chunk-HVURBGF3.js → chunk-XFUBXRVI.js} +6 -6
  121. package/{chunk-53SXIJK6.js → chunk-XIRXOUBV.js} +19 -17
  122. package/{chunk-O6OSWFZQ.js → chunk-XUWRURDF.js} +6 -0
  123. package/{chunk-Q67DOFOO.js → chunk-Y3PMXGLH.js} +2 -0
  124. package/{chunk-ETI2NYVF.js → chunk-YPOPJAKN.js} +4 -4
  125. package/{chunk-SH43IESU.js → chunk-YUNJN43V.js} +44 -9
  126. package/chunk-YV25TM3R.js +780 -0
  127. package/{chunk-WCI7KQ4F.js → chunk-Z56IK6UT.js} +29 -78
  128. package/chunk-ZRAU6T47.js +56 -0
  129. package/commandRegistry-NKJIYWXB.js +833 -0
  130. package/{contentThunks-I3AWWOK4.js → contentThunks-F2BNWOZV.js} +36 -34
  131. package/{cooldownCommands-REAWYVTY.js → cooldownCommands-ZLEPIB4A.js} +2 -2
  132. package/{createAgentAutomationAction-QNNIWYI3.js → createAgentAutomationAction-5N2NRNR7.js} +38 -36
  133. package/createDialogAction-DSEG4L5Y.js +69 -0
  134. package/{createPageAction-G2ASSMFZ.js → createPageAction-K32FYQPE.js} +45 -42
  135. package/{chunk-Q6NAY3XN.js → cursorProvider-YGGNMVWX.js} +2496 -9897
  136. package/{dbSlice-XVWBAGYN.js → dbSlice-Q25STFGJ.js} +11 -10
  137. package/{deleteFile-YG6QMJLU.js → deleteFile-AJ2EZMHT.js} +7 -6
  138. package/{dialogCommands-5J56DFWN.js → dialogCommands-LF7PLYAD.js} +49 -45
  139. package/{dialogSlice-HQLYBDH7.js → dialogSlice-4GBOUTGL.js} +40 -33
  140. package/{dist-VODFSGNG.js → dist-NJC2W7I4.js} +61 -54
  141. package/{docCreateCommands-KYI2DC2U.js → docCreateCommands-NQR3S7A4.js} +48 -43
  142. package/{docDeleteCommands-67REUSRY.js → docDeleteCommands-V3IAQ2HT.js} +49 -44
  143. package/{docReadCommands-HOSVSBDJ.js → docReadCommands-GDX4CLSU.js} +47 -42
  144. package/{docStore-5LMRNCZG.js → docStore-ZTYSP3YE.js} +16 -12
  145. package/{docUpdateCommands-EMGCSMXY.js → docUpdateCommands-QMYXWQOU.js} +48 -43
  146. package/{fetchMessages-EIU7UFFK.js → fetchMessages-I5ICDDHM.js} +5 -5
  147. package/{getPricing-LUSEABA6.js → getPricing-NMMFT3YI.js} +4 -4
  148. package/{handleSendMessageAction-DMWWDWN5.js → handleSendMessageAction-XFZH2TQS.js} +110 -86
  149. package/index.js +87 -884
  150. package/{lib-FRRS27KN.js → lib-PU2G2MSO.js} +523 -191
  151. package/{localDialogRead-BTFJ4V2I.js → localDialogRead-ZHZ3KXDM.js} +2 -2
  152. package/{localRuntimeAuthority-6IR6BBXE.js → localRuntimeAuthority-TU6OBC76.js} +9 -6
  153. package/{localRuntimeDb-SYQGUF4U.js → localRuntimeDb-VKWVOPPI.js} +1 -1
  154. package/{machineCommands-T4T4AUNA.js → machineCommands-KMU3D5I5.js} +91 -81
  155. package/machineWsRunDispatch-6GJ5YOSW.js +154 -0
  156. package/{memberThunks-QGFLFVCI.js → memberThunks-R75S3RWP.js} +20 -18
  157. package/{models-T3SG6MJ5.js → models-ZPU5EDF4.js} +2 -2
  158. package/oauthTokenStore-ITEB663N.js +23 -0
  159. package/package.json +1 -1
  160. package/pdf-U6KSUEZZ.js +26435 -0
  161. package/processSpawn-SOAV3FEV.js +11 -0
  162. package/profileConfig-ZGOFORWV.js +43 -0
  163. package/{providerPresetApply-FG6NZ57W.js → providerPresetApply-TEBH7FDX.js} +7 -7
  164. package/{providerRegistry-757OWH3O.js → providerRegistry-CBJLNCET.js} +11 -7
  165. package/{read-COE3ZYR6.js → read-SRQMNO26.js} +7 -6
  166. package/{readDocTool-5USN4A6V.js → readDocTool-RC3JUNJ2.js} +5 -3
  167. package/{readlineWorkspace-LN2D7OGW.js → readlineWorkspace-ZMNRQXMC.js} +2704 -2060
  168. package/{removeDialogAgentAction-IX3MN2ZO.js → removeDialogAgentAction-46XQV5Q7.js} +21 -25
  169. package/{runAgentClientLoop-I773V27D.js → runAgentClientLoop-URRDZ5WG.js} +75 -69
  170. package/{runtimeDoctorCommands-X6WDBEQX.js → runtimeDoctorCommands-PIVSBZRZ.js} +4 -4
  171. package/runtimeModeArgs-2Y7BALTO.js +31 -0
  172. package/{setDialogExtraReferencesAction-X4HCPNZL.js → setDialogExtraReferencesAction-J4V5ADQF.js} +15 -13
  173. package/{setPrimaryDialogAgentAction-4GMIQLOD.js → setPrimaryDialogAgentAction-UHHV2QZW.js} +22 -26
  174. package/{chunk-AFUORTY4.js → settingThunks-PPZZZOWN.js} +226 -940
  175. package/{skillDiscovery-CYUCJMAG.js → skillDiscovery-ZBU76COE.js} +3 -3
  176. package/{slateUtils-RIZES3PV.js → slateUtils-NGV2NMKM.js} +1 -1
  177. package/{spaceCommands-NKJVJCQQ.js → spaceCommands-2P2X37MC.js} +51 -46
  178. package/{streamAgentChatTurn-PSF5RYKO.js → streamAgentChatTurn-YPUYKXDX.js} +206 -105
  179. package/{switchDialogAgentAction-N52LRPA3.js → switchDialogAgentAction-A2TMVGAE.js} +18 -19
  180. package/{tableCommands-O6NWHFKV.js → tableCommands-6U4BMLRR.js} +10 -10
  181. package/{toolApiClient-QVJ6HDNN.js → toolApiClient-EJT6TMFG.js} +3 -3
  182. package/tools-M5ENXZRJ.js +116 -0
  183. package/{tuiSummaryLlmCaller-WFRWERGK.js → tuiSummaryLlmCaller-Q65IBDGO.js} +24 -21
  184. package/{updateCommands-2M74UL7P.js → updateCommands-4EHDLF5J.js} +3 -3
  185. package/{updateDialogTitleAction-QBT5WOLY.js → updateDialogTitleAction-7PNUE23W.js} +82 -44
  186. package/action-YVYQEAAV.js +0 -31
  187. package/agentListCommands-KMS675GZ.js +0 -406
  188. package/agentRecordCommands-A7AIQPNG.js +0 -128
  189. package/agentRunCommand-KO5UM7O6.js +0 -155
  190. package/browser-image-compression-MFDTD7K6.js +0 -1763
  191. package/chatQueueReduxAdapter-JS633LXU.js +0 -186
  192. package/chunk-M76ECQRD.js +0 -13658
  193. package/chunk-MEYIRKDN.js +0 -8967
  194. package/chunk-Q5FJJ6XI.js +0 -103
  195. package/chunk-S7Z2HMCN.js +0 -25
  196. package/chunk-Y5GCAMGP.js +0 -9
  197. package/chunk-YHYPCMKI.js +0 -19005
  198. package/chunk-YPREESF4.js +0 -225
  199. package/createDialogAction-STKILXXW.js +0 -65
  200. package/machineWsRunDispatch-F6XWVLKA.js +0 -144
  201. package/settingSlice-ZQZVUPKK.js +0 -204
  202. package/syncMapping-N6RGXGBW.js +0 -437
  203. package/tools-2ZTTVIGF.js +0 -110
  204. package/{chunk-VMFTFOWF.js → chunk-3AH7LNUB.js} +7 -7
  205. package/{chunk-X7HHHIOZ.js → chunk-Y6ROFCZO.js} +0 -0
  206. package/{db-WK5MDZVN.js → db-VQSAOWAO.js} +1 -1
@@ -1,10 +1,21 @@
1
1
  import {
2
- parsePositiveFiniteNumberOrFallback
3
- } from "./chunk-Y5GCAMGP.js";
2
+ DEFAULT_USER_PREFERENCE_PROFILE,
3
+ SYSTEM_DEFAULT_AGENT_ID,
4
+ hasOwn,
5
+ normalizeAgentUpdateFieldList,
6
+ normalizeAuthorityHomeServerSetting,
7
+ normalizeDefaultAgentIdSetting,
8
+ normalizeFontPreset,
9
+ normalizePolicyLevelSetting,
10
+ normalizeSystemBuiltinSkills,
11
+ normalizeTonePresetSetting,
12
+ omitKeys,
13
+ resolveDefaultAgentIdSetting
14
+ } from "./chunk-DZ7R5V3Y.js";
4
15
  import {
5
- DEFAULT_SYSTEM_AGENT_CAPABILITIES,
6
- noloAgentId
7
- } from "./chunk-QDSINZM3.js";
16
+ DEFAULT_SYSTEM_AGENT_CAPABILITIES
17
+ } from "./chunk-WJ3B6FX6.js";
18
+ import "./chunk-A4SQRTZ6.js";
8
19
  import {
9
20
  asRecordOrEmpty
10
21
  } from "./chunk-KX6YBIHG.js";
@@ -14,162 +25,86 @@ import {
14
25
  toTimestampMs,
15
26
  upsert,
16
27
  write
17
- } from "./chunk-H62HCIUP.js";
28
+ } from "./chunk-4FFUDT6D.js";
29
+ import "./chunk-46Y5D2BZ.js";
30
+ import "./chunk-QSJ3HFEF.js";
31
+ import "./chunk-PTDYOADJ.js";
32
+ import "./chunk-UJXNKP5V.js";
33
+ import "./chunk-D2MDMY2M.js";
34
+ import "./chunk-BNGW5ASC.js";
35
+ import "./chunk-M2EJHDJP.js";
36
+ import "./chunk-KUG52IAP.js";
18
37
  import {
19
38
  createUserKey,
20
39
  createUserPreferenceKey,
21
40
  ulid
22
- } from "./chunk-VMFTFOWF.js";
23
- import {
24
- asTrimmedLowercaseString
25
- } from "./chunk-QSJ3HFEF.js";
41
+ } from "./chunk-3AH7LNUB.js";
42
+ import "./chunk-WWC7I6TA.js";
26
43
  import {
27
- asyncThunkCreator,
28
- buildCreateSlice,
29
44
  createAction,
30
- createAsyncThunk,
31
- createSelector
32
- } from "./chunk-UKWGR5SS.js";
33
- import {
34
- getAllServers,
35
- getIsDesktopApp,
36
- isProduction
37
- } from "./chunk-QOKAKDPE.js";
45
+ createAsyncThunk
46
+ } from "./chunk-VY6VFGKR.js";
47
+ import "./chunk-HIM3FCLF.js";
48
+ import "./chunk-OW765XBU.js";
38
49
  import {
39
50
  selectIdentityUserId
40
51
  } from "./chunk-SEJ5OS6F.js";
41
- import {
42
- SERVERS
43
- } from "./chunk-LCBAMY2M.js";
44
- import {
45
- isLocalServerUrl
46
- } from "./chunk-4SN6J65J.js";
47
- import {
48
- normalizeServerOrigin
49
- } from "./chunk-CF7PE763.js";
52
+ import "./chunk-U6VC4MU4.js";
53
+ import "./chunk-3EUW3WEO.js";
54
+ import "./chunk-LCBAMY2M.js";
55
+ import "./chunk-4SN6J65J.js";
56
+ import "./chunk-CF7PE763.js";
57
+ import "./chunk-G3SUCT4W.js";
58
+ import "./chunk-4VNS5WPM.js";
50
59
 
51
- // packages/ai/policy/types.ts
52
- var DEFAULT_AGENT_BASE_POLICY = {
53
- version: 1,
54
- tone: {
55
- preset: "default",
56
- resolutionMode: "blend"
57
- },
58
- knowledgeCaptureMaxLevel: 4,
59
- spaceContextMaxLevel: 4,
60
- selfEvolutionMode: "knowledge_only"
61
- };
62
- var DEFAULT_USER_PREFERENCE_PROFILE = {
63
- version: 1,
64
- tone: {
65
- preset: "default"
66
- },
67
- knowledgeCaptureLevel: 2,
68
- spaceContextLevel: 3
60
+ // packages/database/userPreferenceRegister.ts
61
+ var USER_PREFERENCE_NAMES = {
62
+ AUTHORITY_HOME: "authority_home",
63
+ DEFAULT_AGENT: "agent_default"
69
64
  };
70
-
71
- // packages/ai/policy/selfUpdateFields.ts
72
- var AGENT_UPDATE_FIELD_NAMES = [
73
- "name",
74
- "handle",
75
- "model",
76
- "provider",
77
- "prompt",
78
- "introduction",
79
- "greeting",
80
- "isPublic",
81
- "tags",
82
- "tools",
83
- "references",
84
- "temperature",
85
- "top_p",
86
- "frequency_penalty",
87
- "presence_penalty",
88
- "max_tokens",
89
- "reasoning_effort"
90
- ];
91
- var PRIMARY_AUTO_APPROVE_SELF_UPDATE_FIELDS = [
92
- "greeting",
93
- "introduction",
94
- "tags"
95
- ];
96
- var DEFAULT_AUTO_APPROVED_SELF_UPDATE_FIELDS = [
97
- ...PRIMARY_AUTO_APPROVE_SELF_UPDATE_FIELDS
98
- ];
99
- var VALID_AGENT_UPDATE_FIELDS = new Set(AGENT_UPDATE_FIELD_NAMES);
100
- var normalizeAgentUpdateFieldList = (value, fallback = DEFAULT_AUTO_APPROVED_SELF_UPDATE_FIELDS) => {
101
- if (!Array.isArray(value)) {
102
- return [...fallback];
103
- }
104
- const normalized = Array.from(
105
- new Set(
106
- value.filter(
107
- (item) => typeof item === "string" && VALID_AGENT_UPDATE_FIELDS.has(item)
108
- )
109
- )
65
+ var nextRegisterUpdatedAt = (previousRecord) => {
66
+ const previousTimestamp = Math.max(
67
+ toTimestampMs(previousRecord?.updatedAt),
68
+ toTimestampMs(previousRecord?.createdAt)
110
69
  );
111
- return normalized;
112
- };
113
-
114
- // packages/app/theme/fontPreference.ts
115
- var DEFAULT_FONT_PRESET = "hei";
116
- var FONT_PRESET_ALIASES = {
117
- system: "system",
118
- default: "system",
119
- hei: "hei",
120
- heiti: "hei",
121
- sans: "hei",
122
- song: "song",
123
- songti: "song",
124
- serif: "song",
125
- kai: "kai",
126
- kaiti: "kai",
127
- "kai-ti": "kai",
128
- "fang-song": "fang-song",
129
- fangsong: "fang-song",
130
- "fang song": "fang-song"
70
+ return Math.max(Date.now(), previousTimestamp + 1);
131
71
  };
132
- var normalizeFontPreset = (value) => {
133
- const normalized = asTrimmedLowercaseString(value);
134
- return FONT_PRESET_ALIASES[normalized];
72
+ var buildUserPreferenceRegisterRecord = ({
73
+ userId,
74
+ preferenceName,
75
+ value,
76
+ previousRecord
77
+ }) => {
78
+ const updatedAt = nextRegisterUpdatedAt(previousRecord ?? void 0);
79
+ return {
80
+ type: "setting" /* SETTING */,
81
+ registerType: "user_preference",
82
+ preferenceName,
83
+ schemaVersion: 1,
84
+ userId,
85
+ value,
86
+ opId: ulid(),
87
+ createdAt: toTimestampMs(previousRecord?.createdAt) || updatedAt,
88
+ updatedAt
89
+ };
135
90
  };
136
- var FONT_PRESET_CSS_VARIABLES = {
137
- system: {
138
- ui: "var(--font-ui-system)",
139
- "sans-zh": "var(--font-sans-zh-system)",
140
- "sans-en": "var(--font-sans-en-system)",
141
- "sans-ja": "var(--font-sans-ja-system)",
142
- "sans-ko": "var(--font-sans-ko-system)"
143
- },
144
- hei: {
145
- ui: "var(--font-ui-hei)",
146
- "sans-zh": "var(--font-sans-zh-hei)",
147
- "sans-en": "var(--font-sans-en-hei)",
148
- "sans-ja": "var(--font-sans-ja-system)",
149
- "sans-ko": "var(--font-sans-ko-system)"
150
- },
151
- song: {
152
- ui: "var(--font-ui-song)",
153
- "sans-zh": "var(--font-sans-zh-song)",
154
- "sans-en": "var(--font-sans-en-song)",
155
- "sans-ja": "var(--font-sans-ja-system)",
156
- "sans-ko": "var(--font-sans-ko-system)"
157
- },
158
- kai: {
159
- ui: "var(--font-ui-kai)",
160
- "sans-zh": "var(--font-sans-zh-kai)",
161
- "sans-en": "var(--font-sans-en-kai)",
162
- "sans-ja": "var(--font-sans-ja-system)",
163
- "sans-ko": "var(--font-sans-ko-system)"
164
- },
165
- "fang-song": {
166
- ui: "var(--font-ui-fang-song)",
167
- "sans-zh": "var(--font-sans-zh-fang-song)",
168
- "sans-en": "var(--font-sans-en-fang-song)",
169
- "sans-ja": "var(--font-sans-ja-system)",
170
- "sans-ko": "var(--font-sans-ko-system)"
171
- }
91
+ var readUserPreferenceRegisterValue = (record, preferenceName) => {
92
+ if (!record || typeof record !== "object") return void 0;
93
+ if (record.registerType !== "user_preference") return void 0;
94
+ if (record.preferenceName !== preferenceName) return void 0;
95
+ if (!("value" in record)) return void 0;
96
+ return record.value;
172
97
  };
98
+ var buildDefaultAgentPreferenceRegisterRecord = ({
99
+ userId,
100
+ defaultAgentId,
101
+ previousRecord
102
+ }) => buildUserPreferenceRegisterRecord({
103
+ userId,
104
+ preferenceName: USER_PREFERENCE_NAMES.DEFAULT_AGENT,
105
+ value: defaultAgentId,
106
+ previousRecord
107
+ });
173
108
 
174
109
  // packages/app/theme/colors.ts
175
110
  var semantic = {
@@ -251,13 +186,13 @@ var neutral = {
251
186
  };
252
187
  var ocean = {
253
188
  light: {
254
- primary: "#0969DA",
255
- primaryLight: "#218BFF",
256
- primaryDark: "#0550AE",
257
- primaryGradient: "linear-gradient(135deg, #0969DA, #218BFF)",
258
- primaryGhost: "rgba(9,105,218,0.08)",
259
- primaryHover: "rgba(9,105,218,0.10)",
260
- borderAccent: "#54AEFF",
189
+ primary: "#006EDC",
190
+ primaryLight: "#0874DC",
191
+ primaryDark: "#0052AD",
192
+ primaryGradient: "linear-gradient(135deg, #006EDC, #0874DC)",
193
+ primaryGhost: "rgba(0,110,220,0.08)",
194
+ primaryHover: "rgba(0,110,220,0.10)",
195
+ borderAccent: "#73BEFF",
261
196
  ...semantic.light,
262
197
  ...mkLight("#FFFFFF", "#F6F8FA", "#EBF0F4", "#1C2128", "#57606A", "#6E7781", "#D0D7DE", "#F6F8FA")
263
198
  },
@@ -724,23 +659,23 @@ var mono = {
724
659
  }
725
660
  };
726
661
  var catppuccin = {
727
- // 保留 catppuccin 的柔和圆角 + 弹性缓动;色值换成 Ghostty "GitHub Light/Dark Default"
728
- // 官方 palette,获得通透高对比的观感。合成后名字/位次不变,DEFAULT_THEME_NAME 不动。
662
+ // 保留 catppuccin 的柔和圆角 + 弹性缓动;light surface 沿用 GitHub Light palette,
663
+ // light accent 为品牌海蓝(非 GitHub 蓝),dark 为 Catppuccin Mocha。合成后名字/位次不变;默认主题已改为 nature(2026-10)。
729
664
  // Reviewer 改进:dark textTertiary/quaternary 提亮达 WCAG AA;light warning 改琥珀色;
730
665
  // light backgroundElevated 拉开与画布的层级,大圆角浮层不再粘连。
731
666
  meta: { radiusBoost: 2, motionEase: "cubic-bezier(0.22, 1, 0.36, 1)" },
732
667
  light: {
733
- // Ghostty GitHub Light Default — 纯白 canvas + blue-500 accent
734
- primary: "#0969DA",
735
- primaryLight: "#218BFF",
736
- primaryDark: "#0550AE",
737
- primaryGradient: "linear-gradient(135deg, #0969DA, #218BFF)",
738
- primaryGhost: "rgba(9,105,218,0.08)",
739
- primaryHover: "rgba(9,105,218,0.10)",
740
- borderAccent: "#54AEFF",
668
+ // 纯白 canvas + 海蓝 accent(#006EDC:白字 4.93:1,#F6F8FA 上 4.63:1;品牌见 docs/brand-outdoor-aesthetic.md)
669
+ primary: "#006EDC",
670
+ primaryLight: "#0874DC",
671
+ primaryDark: "#0052AD",
672
+ primaryGradient: "linear-gradient(135deg, #006EDC, #0874DC)",
673
+ primaryGhost: "rgba(0,110,220,0.08)",
674
+ primaryHover: "rgba(0,110,220,0.10)",
675
+ borderAccent: "#73BEFF",
741
676
  success: "#116329",
742
677
  warning: "#9A6700",
743
- info: "#0969DA",
678
+ info: "#006EDC",
744
679
  error: "#CF222E",
745
680
  background: "#FFFFFF",
746
681
  backgroundSecondary: "#F6F8FA",
@@ -803,26 +738,112 @@ var catppuccin = {
803
738
  textOnPrimary: "#1E1E2E"
804
739
  }
805
740
  };
741
+ var nature = {
742
+ meta: { radiusBoost: 2, motionEase: "cubic-bezier(0.22, 1, 0.36, 1)" },
743
+ light: {
744
+ primary: "#1A5FA4",
745
+ primaryLight: "#2879CD",
746
+ // --hl-blue
747
+ primaryDark: "#154F8A",
748
+ primaryGradient: "linear-gradient(135deg, #1A5FA4, #2879CD)",
749
+ primaryGhost: "rgba(40,121,205,0.08)",
750
+ primaryHover: "rgba(40,121,205,0.12)",
751
+ borderAccent: "#8DB8E4",
752
+ success: "#2F6B36",
753
+ // --hl-green-ink(paper 5.79:1)
754
+ warning: "#8A6320",
755
+ // --hl-sand 压暗(paper 4.89:1)
756
+ info: "#1A5FA4",
757
+ error: "#B3361F",
758
+ // --hl-danger 压暗(paper 5.48:1,surface-sub 4.98:1)
759
+ background: "#F7F3EC",
760
+ // --hl-paper
761
+ backgroundSecondary: "#EFE8DC",
762
+ // --hl-surface-sub
763
+ backgroundTertiary: "#E8E0D1",
764
+ backgroundGhost: "rgba(247,243,236,0.94)",
765
+ backgroundHover: "#E8E0D1",
766
+ backgroundSelected: "#E3D9C8",
767
+ backgroundElevated: "#FFFDF8",
768
+ // --hl-surface
769
+ text: "#1F2733",
770
+ // --hl-ink
771
+ textSecondary: "#5B6472",
772
+ // --hl-muted
773
+ textTertiary: "#5F6773",
774
+ // paper 5.17:1 / surface-sub 4.69:1(侧栏 11px 分组标题落在 surface-sub 上,需过 AA)
775
+ textQuaternary: "#8A8F96",
776
+ textLight: "#DDDBD6",
777
+ placeholder: "#5F6773",
778
+ border: "#DDDBD6",
779
+ // --hl-line:ink 12% on paper
780
+ borderHover: "#C7C6C3",
781
+ // ink 22% on paper
782
+ borderLight: "#E8E5DF",
783
+ // ink 7% on paper
784
+ messageBackground: "#EFE8DC",
785
+ codeBackground: "#FFFDF8",
786
+ shadowLight: "rgba(120,90,60,0.06)",
787
+ // --hl-shadow 调性
788
+ shadowMedium: "rgba(120,90,60,0.10)",
789
+ shadowHeavy: "rgba(120,90,60,0.16)",
790
+ textHeading: "#1F2733",
791
+ textOnPrimary: "#FFFEFA"
792
+ // --hl-on-ink
793
+ },
794
+ dark: {
795
+ primary: "#6AA8EA",
796
+ // --hl-blue(夜)
797
+ primaryLight: "#8FBEF0",
798
+ primaryDark: "#4F93DC",
799
+ primaryGradient: "linear-gradient(135deg, #6AA8EA, #8FBEF0)",
800
+ primaryGhost: "rgba(106,168,234,0.12)",
801
+ primaryHover: "rgba(106,168,234,0.16)",
802
+ borderAccent: "#6AA8EA",
803
+ success: "#8FD09B",
804
+ // --hl-green-ink(夜)
805
+ warning: "#D9B26A",
806
+ // --hl-sand(夜)
807
+ info: "#6AA8EA",
808
+ error: "#F08A7A",
809
+ // --hl-danger(夜)
810
+ background: "#1C1B20",
811
+ // --hl-paper(夜)
812
+ backgroundSecondary: "#25242A",
813
+ // --hl-surface(夜)
814
+ backgroundTertiary: "#2E2C34",
815
+ // --hl-surface-sub(夜)
816
+ backgroundGhost: "rgba(28,27,32,0.94)",
817
+ backgroundHover: "#2E2C34",
818
+ backgroundSelected: "#38363F",
819
+ backgroundElevated: "#25242A",
820
+ text: "#ECE6DC",
821
+ // --hl-ink(夜)
822
+ textSecondary: "#C9C2B6",
823
+ // --hl-nav(夜)
824
+ textTertiary: "#A7A197",
825
+ // --hl-muted(夜)
826
+ textQuaternary: "#8F8A82",
827
+ textLight: "#38363F",
828
+ placeholder: "#8F8A82",
829
+ border: "#353337",
830
+ // ink 12% on paper(夜)
831
+ borderHover: "#4A4849",
832
+ borderLight: "#2B292D",
833
+ messageBackground: "#25242A",
834
+ codeBackground: "#16151A",
835
+ shadowLight: "rgba(0,0,0,0.22)",
836
+ shadowMedium: "rgba(0,0,0,0.36)",
837
+ shadowHeavy: "rgba(0,0,0,0.52)",
838
+ textHeading: "#ECE6DC",
839
+ textOnPrimary: "#1C1B20"
840
+ // --hl-on-ink(夜)
841
+ }
842
+ };
806
843
 
807
844
  // packages/app/theme/theme.config.ts
808
- var SPACE = {
809
- 0: "0",
810
- 1: "4px",
811
- 2: "8px",
812
- 3: "12px",
813
- 4: "16px",
814
- 5: "20px",
815
- 6: "24px",
816
- 7: "28px",
817
- 8: "32px",
818
- 10: "40px",
819
- 12: "48px",
820
- 14: "56px",
821
- 16: "64px",
822
- 20: "80px",
823
- 24: "96px"
824
- };
825
845
  var THEME_COLORS = {
846
+ nature,
826
847
  catppuccin,
827
848
  trail,
828
849
  wave,
@@ -846,151 +867,20 @@ var THEME_NAME_ALIASES = {
846
867
  red: "mono",
847
868
  mocha: "catppuccin"
848
869
  };
849
- var DEFAULT_THEME_NAME = "catppuccin";
850
870
 
851
871
  // packages/app/theme/themeModeBootstrap.ts
852
- var THEME_MODE_VALUES = ["system", "light", "dark"];
853
872
  var SYSTEM_DARK_MEDIA_QUERY = "(prefers-color-scheme: dark)";
854
- var createLiteralGuard = (values) => (value) => typeof value === "string" && values.includes(value);
855
- var isThemeMode = (value) => createLiteralGuard(THEME_MODE_VALUES)(value);
856
873
  var normalizeThemeName = (value) => {
857
874
  if (typeof value !== "string") return void 0;
858
875
  const canonicalName = value in THEME_NAME_ALIASES ? THEME_NAME_ALIASES[value] : value;
859
876
  return canonicalName in THEME_COLORS ? canonicalName : void 0;
860
877
  };
861
878
  var resolveThemeModeIsDark = (themeMode, systemPrefersDark) => themeMode === "dark" ? true : themeMode === "light" ? false : systemPrefersDark;
862
- function readStoredThemeMode(storage) {
863
- try {
864
- const value = storage?.getItem("nolo-theme-mode");
865
- return isThemeMode(value) ? value : "system";
866
- } catch {
867
- return "system";
868
- }
869
- }
870
- function resolveThemeModePreload({
871
- storage,
872
- systemPrefersDark
873
- }) {
874
- const themeMode = readStoredThemeMode(storage);
875
- return {
876
- themeMode,
877
- isDark: resolveThemeModeIsDark(themeMode, systemPrefersDark)
878
- };
879
- }
880
-
881
- // packages/app/settings/settingTypes.ts
882
- var SYSTEM_DEFAULT_AGENT_ID = "system-default";
883
879
 
884
- // packages/app/settings/settingInitialState.ts
885
- var _preloadedTheme = typeof window !== "undefined" ? resolveThemeModePreload({
886
- storage: typeof localStorage !== "undefined" ? localStorage : void 0,
887
- systemPrefersDark: typeof window.matchMedia === "function" ? window.matchMedia(SYSTEM_DARK_MEDIA_QUERY).matches : false
888
- }) : { themeMode: "system", isDark: false };
889
- var initialState = {
890
- isAutoSync: false,
891
- currentServer: isProduction ? SERVERS.MAIN : SERVERS.US,
892
- syncServers: Object.values(SERVERS),
893
- showThinking: true,
894
- preferredAnimationSet: 0,
895
- maxExecutionTime: 6e5,
896
- maxCost: 1,
897
- themeName: DEFAULT_THEME_NAME,
898
- themeMode: _preloadedTheme.themeMode,
899
- isDark: _preloadedTheme.isDark,
900
- sidebarWidth: 280,
901
- headerHeight: 56,
902
- density: "compact",
903
- fontPreset: DEFAULT_FONT_PRESET,
904
- editorDefaultMode: "markdown",
905
- editorLightCodeTheme: "default",
906
- editorDarkCodeTheme: "okaidia",
907
- editorWordCountEnabled: true,
908
- editorShortcuts: {
909
- heading: true,
910
- ulist: true,
911
- olist: true,
912
- quote: true,
913
- code: true,
914
- tasklist: true
915
- },
916
- editorFontSize: 14,
917
- editorAutoSave: true,
918
- editorAutoSaveInterval: 30,
919
- editorLineNumbers: false,
920
- editorWordWrap: true,
921
- editorSpellCheck: true,
922
- editorTabSize: 2,
923
- editorFontFamily: "SF Mono, Monaco, Cascadia Code, Roboto Mono, monospace",
924
- enableReadCurrentSpace: true,
925
- globalPrompt: "",
926
- userTonePreset: "default",
927
- knowledgeCaptureLevel: DEFAULT_USER_PREFERENCE_PROFILE.knowledgeCaptureLevel,
928
- spaceContextLevel: DEFAULT_USER_PREFERENCE_PROFILE.spaceContextLevel,
929
- autoApproveSelfUpdateFields: [...DEFAULT_AUTO_APPROVED_SELF_UPDATE_FIELDS],
930
- aiRecentContentLimit: 50,
931
- defaultAgentId: SYSTEM_DEFAULT_AGENT_ID,
932
- quickChatAutoAgentId: "",
933
- ocrModel: "google_document_ocr",
934
- showScrollToTopButton: false,
935
- showScrollToBottomButton: false,
936
- createMenuOpenCount: 0,
937
- desktopChromeConnectorEnabled: false,
938
- developerModeEnabled: false,
939
- diagnosticModeEnabled: false,
940
- deleteShortcut: typeof window !== "undefined" && typeof window.navigator !== "undefined" && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform) ? "meta+backspace" : "ctrl+backspace",
941
- // 系统内置 Skill 默认全开;用户可在设置页单关。目前只有 web-search。
942
- systemBuiltinSkills: { ...DEFAULT_SYSTEM_AGENT_CAPABILITIES }
943
- };
944
- var DEFAULT_SYSTEM_BUILTIN_SKILLS = DEFAULT_SYSTEM_AGENT_CAPABILITIES;
945
-
946
- // packages/database/userPreferenceRegister.ts
947
- var USER_PREFERENCE_NAMES = {
948
- AUTHORITY_HOME: "authority_home",
949
- DEFAULT_AGENT: "agent_default"
950
- };
951
- var nextRegisterUpdatedAt = (previousRecord) => {
952
- const previousTimestamp = Math.max(
953
- toTimestampMs(previousRecord?.updatedAt),
954
- toTimestampMs(previousRecord?.createdAt)
955
- );
956
- return Math.max(Date.now(), previousTimestamp + 1);
957
- };
958
- var buildUserPreferenceRegisterRecord = ({
959
- userId,
960
- preferenceName,
961
- value,
962
- previousRecord
963
- }) => {
964
- const updatedAt = nextRegisterUpdatedAt(previousRecord ?? void 0);
965
- return {
966
- type: "setting" /* SETTING */,
967
- registerType: "user_preference",
968
- preferenceName,
969
- schemaVersion: 1,
970
- userId,
971
- value,
972
- opId: ulid(),
973
- createdAt: toTimestampMs(previousRecord?.createdAt) || updatedAt,
974
- updatedAt
975
- };
976
- };
977
- var readUserPreferenceRegisterValue = (record, preferenceName) => {
978
- if (!record || typeof record !== "object") return void 0;
979
- if (record.registerType !== "user_preference") return void 0;
980
- if (record.preferenceName !== preferenceName) return void 0;
981
- if (!("value" in record)) return void 0;
982
- return record.value;
983
- };
984
- var buildDefaultAgentPreferenceRegisterRecord = ({
985
- userId,
986
- defaultAgentId,
987
- previousRecord
988
- }) => buildUserPreferenceRegisterRecord({
989
- userId,
990
- preferenceName: USER_PREFERENCE_NAMES.DEFAULT_AGENT,
991
- value: defaultAgentId,
992
- previousRecord
993
- });
880
+ // packages/app/settings/settingActions.ts
881
+ var updateSettingsState = createAction(
882
+ "settings/_updateSettingsState"
883
+ );
994
884
 
995
885
  // packages/app/settings/dbActionThunks.ts
996
886
  var getDefaultSettingDbActionThunks = () => ({
@@ -1014,74 +904,6 @@ var withSettingsRecordSchema = (changes) => ({
1014
904
  schemaVersion: SETTINGS_RECORD_SCHEMA_VERSION
1015
905
  });
1016
906
 
1017
- // packages/app/settings/settingNormalizers.ts
1018
- var hasOwn = (target, key) => Object.prototype.hasOwnProperty.call(target, key);
1019
- var normalizeDefaultAgentIdSetting = (value) => {
1020
- if (typeof value !== "string" || value.trim() === "") {
1021
- return void 0;
1022
- }
1023
- return value === noloAgentId || value === SYSTEM_DEFAULT_AGENT_ID ? SYSTEM_DEFAULT_AGENT_ID : value;
1024
- };
1025
- var normalizeAuthorityHomeServerSetting = (value) => {
1026
- const normalized = normalizeServerOrigin(value);
1027
- return /^https?:\/\//i.test(normalized) ? normalized : null;
1028
- };
1029
- var normalizeTonePresetSetting = (value) => {
1030
- switch (value) {
1031
- case "professional":
1032
- case "friendly":
1033
- case "direct":
1034
- case "pragmatic":
1035
- case "default":
1036
- return value;
1037
- default:
1038
- return DEFAULT_USER_PREFERENCE_PROFILE.tone?.preset ?? "default";
1039
- }
1040
- };
1041
- var normalizePolicyLevelSetting = (value, fallback) => {
1042
- const n = Number(value);
1043
- if (n === 1 || n === 2 || n === 3 || n === 4) {
1044
- return n;
1045
- }
1046
- return fallback;
1047
- };
1048
- var resolveDefaultAgentIdSetting = (value) => normalizeDefaultAgentIdSetting(value) ?? SYSTEM_DEFAULT_AGENT_ID;
1049
- var selectResolvedDefaultAgentId = (value) => {
1050
- const normalizedValue = resolveDefaultAgentIdSetting(value);
1051
- return normalizedValue === SYSTEM_DEFAULT_AGENT_ID ? noloAgentId : normalizedValue;
1052
- };
1053
- var hexToRgbString = (value) => {
1054
- if (typeof value !== "string") return null;
1055
- const normalized = value.trim().replace(/^#/, "");
1056
- const safe = normalized.length === 3 ? normalized.split("").map((char) => char + char).join("") : normalized;
1057
- if (!/^[0-9a-fA-F]{6}$/.test(safe)) return null;
1058
- const intValue = Number.parseInt(safe, 16);
1059
- const r = intValue >> 16 & 255;
1060
- const g = intValue >> 8 & 255;
1061
- const b = intValue & 255;
1062
- return `${r}, ${g}, ${b}`;
1063
- };
1064
- var alphaColor = (hex, alpha, fallback) => {
1065
- const rgb = hexToRgbString(hex);
1066
- return rgb ? `rgba(${rgb}, ${alpha})` : fallback;
1067
- };
1068
- var omitKeys = (record, keys) => {
1069
- const next = { ...record };
1070
- keys.forEach((key) => {
1071
- delete next[key];
1072
- });
1073
- return next;
1074
- };
1075
- var isRecordLike = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
1076
- var normalizeSystemBuiltinSkills = (value, defaults) => {
1077
- const base = isRecordLike(value) ? value : {};
1078
- const result = { ...defaults };
1079
- for (const key of Object.keys(base)) {
1080
- result[key] = Boolean(base[key]);
1081
- }
1082
- return result;
1083
- };
1084
-
1085
907
  // packages/app/settings/settingPersistence.ts
1086
908
  var normalizeSettingChanges = (changes) => {
1087
909
  let normalizedChanges = changes;
@@ -1145,7 +967,7 @@ var normalizeSettingChanges = (changes) => {
1145
967
  ...normalizedChanges,
1146
968
  systemBuiltinSkills: normalizeSystemBuiltinSkills(
1147
969
  normalizedChanges.systemBuiltinSkills,
1148
- DEFAULT_SYSTEM_BUILTIN_SKILLS
970
+ DEFAULT_SYSTEM_AGENT_CAPABILITIES
1149
971
  )
1150
972
  };
1151
973
  }
@@ -1167,7 +989,6 @@ var LOCAL_FIRST_APPEARANCE_KEYS = Object.freeze(
1167
989
  LOCAL_APPEARANCE_KEY_NAMES.map((key) => [key, true])
1168
990
  )
1169
991
  );
1170
- var LOCAL_ONLY_SETTINGS_KEYS = LOCAL_FIRST_APPEARANCE_KEYS;
1171
992
  var GUEST_UPDATABLE_KEYS = Object.freeze(
1172
993
  Object.fromEntries(
1173
994
  GUEST_UPDATABLE_KEY_NAMES.map((key) => [key, true])
@@ -1287,439 +1108,6 @@ var persistDefaultAgentRegister = async (dispatch, getState, userId, value) => {
1287
1108
  ).unwrap();
1288
1109
  };
1289
1110
 
1290
- // packages/app/settings/serverSelectors.ts
1291
- var resolveDesktopSafeServer = (value) => {
1292
- if (!getIsDesktopApp()) return value || SERVERS.MAIN;
1293
- return isLocalServerUrl(value) ? SERVERS.MAIN : value || SERVERS.MAIN;
1294
- };
1295
- var selectSettings = (state) => state.settings;
1296
- var selectCurrentServer = createSelector(
1297
- [selectSettings],
1298
- (settings) => resolveDesktopSafeServer(settings.currentServer)
1299
- );
1300
- var selectSyncServers = createSelector(
1301
- [selectSettings],
1302
- (settings) => (settings.syncServers || []).filter(
1303
- (server) => !getIsDesktopApp() || !isLocalServerUrl(server)
1304
- )
1305
- );
1306
- var selectRemoteServer = selectCurrentServer;
1307
- var selectRemoteSyncServers = selectSyncServers;
1308
- var selectRemoteServers = createSelector(
1309
- [selectRemoteServer, selectRemoteSyncServers],
1310
- (currentServer, syncServers) => getAllServers(currentServer, syncServers)
1311
- );
1312
-
1313
- // packages/app/settings/fieldSelectors.ts
1314
- var selectPreferredAnimationSet = (state) => state.settings.preferredAnimationSet ?? 0;
1315
- var selectShowThinking = (state) => state.settings.showThinking;
1316
- var selectMaxCost = (state) => state.settings.maxCost;
1317
- var selectMaxExecutionTime = (state) => state.settings.maxExecutionTime;
1318
- var selectIsDark = (state) => state.settings.isDark;
1319
- var selectThemeMode = (state) => state.settings.themeMode ?? "system";
1320
- var selectHeaderHeight = (state) => state.settings.headerHeight;
1321
- var selectThemeName = (state) => state.settings.themeName;
1322
- var selectThemeFollowsSystem = (state) => (state.settings.themeMode ?? "system") === "system";
1323
- var selectSidebarWidth = (state) => state.settings.sidebarWidth;
1324
- var selectDensity = (state) => state.settings.density ?? "compact";
1325
- var selectFontPreset = (state) => normalizeFontPreset(state.settings.fontPreset) ?? DEFAULT_FONT_PRESET;
1326
- var selectEnableReadCurrentSpace = (state) => state.settings.enableReadCurrentSpace;
1327
- var selectGlobalPrompt = (state) => state.settings.globalPrompt;
1328
- var selectUserTonePreset = (state) => normalizeTonePresetSetting(state.settings.userTonePreset);
1329
- var selectKnowledgeCaptureLevel = (state) => normalizePolicyLevelSetting(
1330
- state.settings.knowledgeCaptureLevel,
1331
- DEFAULT_USER_PREFERENCE_PROFILE.knowledgeCaptureLevel
1332
- );
1333
- var selectSpaceContextLevel = (state) => state.settings.enableReadCurrentSpace === false ? 1 : normalizePolicyLevelSetting(
1334
- state.settings.spaceContextLevel,
1335
- DEFAULT_USER_PREFERENCE_PROFILE.spaceContextLevel
1336
- );
1337
- var selectAutoApproveSelfUpdateFields = createSelector(
1338
- [(state) => state.settings.autoApproveSelfUpdateFields],
1339
- (fields) => normalizeAgentUpdateFieldList(
1340
- fields,
1341
- DEFAULT_AUTO_APPROVED_SELF_UPDATE_FIELDS
1342
- )
1343
- );
1344
- var selectAiRecentContentLimit = (state) => state.settings.aiRecentContentLimit ?? 50;
1345
- var selectDefaultAgentPreference = (state) => resolveDefaultAgentIdSetting(state.settings.defaultAgentId);
1346
- var selectDefaultAgentId = (state) => selectResolvedDefaultAgentId(state.settings.defaultAgentId);
1347
- var selectOcrModel = (state) => {
1348
- if (state.settings.ocrModel === "none") return "none";
1349
- if (state.settings.ocrModel === "olm_ocr") return "olm_ocr";
1350
- return "google_document_ocr";
1351
- };
1352
- var selectShowScrollToTopButton = (state) => state.settings.showScrollToTopButton ?? false;
1353
- var selectShowScrollToBottomButton = (state) => state.settings.showScrollToBottomButton ?? false;
1354
- var selectCreateMenuOpenCount = (state) => Math.floor(
1355
- parsePositiveFiniteNumberOrFallback(state.settings.createMenuOpenCount, 0)
1356
- );
1357
- var selectDesktopChromeConnectorEnabled = (state) => state.settings.desktopChromeConnectorEnabled === true;
1358
- var selectDeveloperModeEnabled = (state) => state.settings.developerModeEnabled === true;
1359
- var selectDiagnosticModeEnabled = (state) => state.settings.diagnosticModeEnabled === true;
1360
- var selectCopyDiagnosticsEnabled = (state) => selectDeveloperModeEnabled(state) && selectDiagnosticModeEnabled(state);
1361
- var selectEditorDefaultMode = (state) => state.settings.editorDefaultMode;
1362
- var selectEditorLightCodeTheme = (state) => state.settings.editorLightCodeTheme;
1363
- var selectEditorDarkCodeTheme = (state) => state.settings.editorDarkCodeTheme;
1364
- var selectEditorWordCountEnabled = (state) => state.settings.editorWordCountEnabled;
1365
- var selectEditorShortcuts = (state) => state.settings.editorShortcuts;
1366
- var PLATFORM_MAC_REGEX = /Mac|iPod|iPhone|iPad/;
1367
- var isMacPlatform = () => typeof window !== "undefined" && typeof window.navigator !== "undefined" && PLATFORM_MAC_REGEX.test(window.navigator.platform);
1368
- var selectDeleteShortcut = (state) => {
1369
- const shortcut = state.settings.deleteShortcut;
1370
- if (shortcut === void 0 || shortcut === null) {
1371
- return isMacPlatform() ? "meta+backspace" : "ctrl+backspace";
1372
- }
1373
- return shortcut;
1374
- };
1375
- var selectEditorFontSize = (state) => state.settings.editorFontSize;
1376
- var selectEditorAutoSave = (state) => state.settings.editorAutoSave;
1377
- var selectEditorAutoSaveInterval = (state) => state.settings.editorAutoSaveInterval;
1378
- var selectSystemBuiltinSkills = createSelector(
1379
- [(state) => state.settings.systemBuiltinSkills],
1380
- (systemBuiltinSkills) => normalizeSystemBuiltinSkills(
1381
- systemBuiltinSkills,
1382
- DEFAULT_SYSTEM_BUILTIN_SKILLS
1383
- )
1384
- );
1385
-
1386
- // packages/app/settings/editorConfigSelectors.ts
1387
- var selectEditorCodeTheme = createSelector(
1388
- [selectEditorLightCodeTheme, selectEditorDarkCodeTheme, selectIsDark],
1389
- (lightTheme, darkTheme, isDark) => isDark ? darkTheme : lightTheme
1390
- );
1391
- var selectEditorConfig = createSelector(
1392
- [
1393
- selectEditorDefaultMode,
1394
- selectEditorLightCodeTheme,
1395
- selectEditorDarkCodeTheme,
1396
- selectEditorWordCountEnabled,
1397
- selectEditorShortcuts,
1398
- selectEditorFontSize,
1399
- selectEditorAutoSave,
1400
- selectEditorAutoSaveInterval,
1401
- selectIsDark
1402
- ],
1403
- (defaultMode, lightCodeTheme, darkCodeTheme, wordCountEnabled, shortcuts, fontSize, autoSave, autoSaveInterval, isDark) => {
1404
- const codeTheme = isDark ? darkCodeTheme : lightCodeTheme;
1405
- return {
1406
- defaultMode,
1407
- codeTheme,
1408
- lightCodeTheme,
1409
- darkCodeTheme,
1410
- wordCountEnabled,
1411
- shortcuts,
1412
- fontSize,
1413
- autoSave,
1414
- autoSaveInterval
1415
- };
1416
- }
1417
- );
1418
-
1419
- // packages/app/settings/themeSelectors.ts
1420
- var isThemeData = (value) => {
1421
- if (!value || typeof value !== "object") return false;
1422
- const candidate = value;
1423
- return typeof candidate.light === "object" && candidate.light !== null && typeof candidate.dark === "object" && candidate.dark !== null;
1424
- };
1425
- var readMeta = (themeData) => themeData.meta;
1426
- var SPACIOUS_SPACE = {
1427
- 0: "0",
1428
- 1: "5px",
1429
- 2: "10px",
1430
- 3: "14px",
1431
- 4: "20px",
1432
- 5: "24px",
1433
- 6: "30px",
1434
- 7: "34px",
1435
- 8: "40px",
1436
- 10: "50px",
1437
- 12: "60px",
1438
- 14: "70px",
1439
- 16: "80px",
1440
- 20: "100px",
1441
- 24: "120px"
1442
- };
1443
- var SPACIOUS_FONT_SIZE = {
1444
- xs: "12px",
1445
- sm: "13px",
1446
- base: "15px",
1447
- md: "15.5px",
1448
- lg: "17.5px",
1449
- xl: "22px",
1450
- "2xl": "26px",
1451
- "3xl": "30px"
1452
- };
1453
- var SPACIOUS_LEADING = {
1454
- tight: "1.4",
1455
- normal: "1.6",
1456
- relaxed: "1.75"
1457
- };
1458
- var SPACIOUS_CONTROL = {
1459
- xs: "28px",
1460
- sm: "32px",
1461
- md: "40px",
1462
- lg: "46px",
1463
- xl: "56px"
1464
- };
1465
- var COMPACT_LEADING = {
1466
- tight: "1.3",
1467
- normal: "1.45",
1468
- relaxed: "1.6"
1469
- };
1470
- var COMPACT_CONTROL = {
1471
- xs: "24px",
1472
- sm: "28px",
1473
- md: "36px",
1474
- lg: "40px",
1475
- xl: "48px"
1476
- };
1477
- var COMPACT_FONT_SIZE = {
1478
- xs: "11px",
1479
- sm: "12px",
1480
- base: "14px",
1481
- md: "14px",
1482
- lg: "16px",
1483
- xl: "20px",
1484
- "2xl": "24px",
1485
- "3xl": "28px"
1486
- };
1487
- var FONT_WEIGHT = {
1488
- normal: "400",
1489
- medium: "500",
1490
- semibold: "600",
1491
- bold: "700"
1492
- };
1493
- var TRACKING = {
1494
- tight: "-0.02em",
1495
- normal: "0",
1496
- wide: "0.02em"
1497
- };
1498
- var Z_INDEX = {
1499
- sticky: 100,
1500
- dropdown: 1e3,
1501
- modalBackdrop: 1010,
1502
- modal: 1020,
1503
- toast: 1030,
1504
- tooltip: 1040
1505
- };
1506
- var FALLBACK_PRIMARY_RGB = "59, 130, 246";
1507
- var FALLBACK_SUCCESS_GHOST = "rgba(16, 185, 129, 0.12)";
1508
- var FALLBACK_WARNING_GHOST = "rgba(245, 158, 11, 0.12)";
1509
- var FALLBACK_INFO_GHOST = "rgba(59, 130, 246, 0.12)";
1510
- var FALLBACK_ERROR_GHOST = "rgba(239, 68, 68, 0.12)";
1511
- var FALLBACK_INVALID_BG = "rgba(239, 68, 68, 0.5)";
1512
- var DEFAULT_MOTION_EASE = "cubic-bezier(0.33, 0, 0.2, 1)";
1513
- var TIDE_MOTION_EASE = "cubic-bezier(0.22, 1, 0.36, 1)";
1514
- var BREATH_MOTION_EASE = "cubic-bezier(0.4, 0, 0.6, 1)";
1515
- var selectTheme = createSelector(
1516
- [
1517
- selectThemeName,
1518
- selectIsDark,
1519
- selectSidebarWidth,
1520
- selectHeaderHeight,
1521
- selectDensity,
1522
- selectFontPreset
1523
- ],
1524
- (themeName, isDark, sidebarWidth, headerHeight, density, fontPreset) => {
1525
- const mode = isDark ? "dark" : "light";
1526
- const validThemeName = THEME_COLORS[themeName] ? themeName : DEFAULT_THEME_NAME;
1527
- const validFontPreset = normalizeFontPreset(fontPreset) ?? DEFAULT_FONT_PRESET;
1528
- const themeCandidate = THEME_COLORS[validThemeName];
1529
- if (!isThemeData(themeCandidate)) {
1530
- throw new Error(
1531
- `selectTheme: theme "${String(validThemeName)}" is missing required light/dark tables`
1532
- );
1533
- }
1534
- const themeData = themeCandidate;
1535
- const c = themeData[mode];
1536
- const meta = readMeta(themeData);
1537
- const compact = density === "compact";
1538
- return {
1539
- sidebarWidth: `${sidebarWidth}px`,
1540
- headerHeight: `${headerHeight}px`,
1541
- // Sidebar list density is intentionally tighter than form `control-md`
1542
- // (36/40): long agent/dialog lists need more rows on screen. Header chrome
1543
- // and nav rows should bind to these tokens, not control-md.
1544
- sidebarItemHeight: compact ? "32px" : "36px",
1545
- sidebarIconSize: compact ? "16px" : "18px",
1546
- sidebarItemGap: compact ? "4px" : "6px",
1547
- // Density-aware spacing scale (4px grid → 5px grid)
1548
- space: compact ? SPACE : SPACIOUS_SPACE,
1549
- // Semantic typography scale
1550
- fontSize: compact ? COMPACT_FONT_SIZE : SPACIOUS_FONT_SIZE,
1551
- // Font weight scale
1552
- fontWeight: FONT_WEIGHT,
1553
- // Letter spacing scale
1554
- tracking: TRACKING,
1555
- // Semantic line-height scale
1556
- leading: compact ? COMPACT_LEADING : SPACIOUS_LEADING,
1557
- // Component height scale (buttons, inputs, list items)
1558
- control: compact ? COMPACT_CONTROL : SPACIOUS_CONTROL,
1559
- // Border radius scale — xs/sm/md map to control/surface/overlay tiers.
1560
- // lg/xl remain as aliases for gradual migration of legacy CSS.
1561
- radius: (() => {
1562
- const boost = meta?.radiusBoost ?? 0;
1563
- const xs = compact ? "10px" : "12px";
1564
- const sm = compact ? `${14 + boost}px` : `${16 + boost}px`;
1565
- const md = compact ? "20px" : "24px";
1566
- return { xs, sm, md, lg: sm, xl: md };
1567
- })(),
1568
- motionEase: meta?.motionEase ?? DEFAULT_MOTION_EASE,
1569
- motionEaseTide: TIDE_MOTION_EASE,
1570
- motionEaseBreath: BREATH_MOTION_EASE,
1571
- motionDuration: "0.32s",
1572
- motionDurationSlow: "0.52s",
1573
- // Popover/menu/dropdown shell — the single source of truth for every
1574
- // floating panel. Consumers read --popover-* only; the radius tier is
1575
- // encapsulated here so a retune stays a one-line change.
1576
- popover: (() => {
1577
- const boost = meta?.radiusBoost ?? 0;
1578
- const radius = compact ? `${14 + boost}px` : `${16 + boost}px`;
1579
- const pad = "6px";
1580
- return {
1581
- // 弹层是最上浮的层:light 下 background(雪白)亮于下沉面板 elevated;
1582
- // dark 下相反,elevated 才是更亮的上浮面,必须取 brighter 的那个。
1583
- bg: alphaColor(
1584
- isDark ? c.backgroundElevated ?? c.background : c.background,
1585
- isDark ? 0.86 : 0.92,
1586
- isDark ? c.backgroundElevated ?? c.background : c.background
1587
- ),
1588
- border: alphaColor(c.border, isDark ? 0.5 : 0.7, c.borderLight),
1589
- // Layered: a wide ambient pool plus a tight contact edge. The pair is
1590
- // what reads as "lifted" rather than "outlined".
1591
- shadow: [
1592
- `0 18px 44px -24px ${c.shadowHeavy}`,
1593
- `0 4px 12px -6px ${c.shadowMedium}`,
1594
- `0 1px 1px -0.5px ${c.shadowLight}`
1595
- ].join(", "),
1596
- radius,
1597
- pad,
1598
- itemRadius: `calc(${radius} - ${pad})`,
1599
- blur: "24px",
1600
- // Enter/exit travel. Small on purpose: the panel should settle, not fly.
1601
- travel: "6px",
1602
- duration: "0.18s",
1603
- durationExit: "0.12s",
1604
- ease: meta?.motionEase ?? DEFAULT_MOTION_EASE
1605
- };
1606
- })(),
1607
- font: FONT_PRESET_CSS_VARIABLES[validFontPreset],
1608
- // Z-index scale aligned with existing hardcoded layers
1609
- z: Z_INDEX,
1610
- // Semantic spacing aliases
1611
- contentPadding: compact ? "16px" : "20px",
1612
- sectionGap: compact ? "32px" : "40px",
1613
- cardPadding: compact ? "16px" : "20px",
1614
- inputPadding: compact ? "8px 12px" : "10px 14px",
1615
- ...c,
1616
- borderSubtle: c.borderLight,
1617
- borderFaint: alphaColor(c.border, isDark ? 0.22 : 0.35, c.borderLight),
1618
- borderStrong: c.borderHover,
1619
- surface: c.backgroundSecondary,
1620
- surfaceElevated: c.backgroundTertiary,
1621
- surfaceCanvas: c.background,
1622
- surfaceSidebar: c.background,
1623
- surfacePanel: c.backgroundSecondary,
1624
- surfaceCard: c.messageBackground,
1625
- surfaceRaised: isDark ? c.backgroundTertiary : c.backgroundSecondary,
1626
- surfaceInset: isDark ? c.backgroundSecondary : alphaColor(c.borderHover, 0.05, c.codeBackground),
1627
- surfaceCode: c.codeBackground,
1628
- surfaceInteractive: c.backgroundTertiary,
1629
- surfaceInteractiveHover: c.backgroundHover,
1630
- textMuted: c.textSecondary,
1631
- textSubtle: c.textTertiary,
1632
- textHeading: c.textHeading ?? c.text,
1633
- borderMuted: alphaColor(
1634
- c.borderHover,
1635
- isDark ? 0.3 : 0.24,
1636
- c.borderLight
1637
- ),
1638
- accentSoft: alphaColor(c.primary, isDark ? 0.18 : 0.1, c.primaryGhost),
1639
- shadow: c.shadowMedium,
1640
- shadow1: `0 1px 2px ${c.shadowLight}`,
1641
- shadow2: `0 8px 24px -12px ${c.shadowMedium}`,
1642
- shadow3: `0 18px 44px -24px ${c.shadowHeavy}`,
1643
- primaryBorder: c.borderAccent ?? c.primary,
1644
- primaryBgStrong: alphaColor(
1645
- c.primary,
1646
- isDark ? 0.18 : 0.1,
1647
- c.primaryGhost
1648
- ),
1649
- success: c.success,
1650
- warning: c.warning,
1651
- info: c.info,
1652
- successGhost: alphaColor(
1653
- c.success,
1654
- isDark ? 0.2 : 0.12,
1655
- FALLBACK_SUCCESS_GHOST
1656
- ),
1657
- warningGhost: alphaColor(
1658
- c.warning,
1659
- isDark ? 0.2 : 0.12,
1660
- FALLBACK_WARNING_GHOST
1661
- ),
1662
- infoGhost: alphaColor(c.info, isDark ? 0.2 : 0.12, FALLBACK_INFO_GHOST),
1663
- errorGhost: alphaColor(
1664
- c.error,
1665
- isDark ? 0.2 : 0.12,
1666
- FALLBACK_ERROR_GHOST
1667
- ),
1668
- primaryRgb: hexToRgbString(c.primary) ?? FALLBACK_PRIMARY_RGB,
1669
- focusRing: alphaColor(c.primary, isDark ? 0.3 : 0.22, c.primaryGhost),
1670
- // Generic interactive state tokens (dark-mode aware)
1671
- hoverBg: alphaColor(c.text, isDark ? 0.06 : 0.04, c.backgroundTertiary),
1672
- activeBg: alphaColor(c.text, isDark ? 0.1 : 0.08, c.backgroundTertiary),
1673
- disabledText: c.textTertiary,
1674
- disabledBg: c.backgroundSecondary,
1675
- // Code block tokens
1676
- codeBg: c.codeBackground,
1677
- codeText: c.text,
1678
- // Text selection token
1679
- selectionBg: alphaColor(c.primary, isDark ? 0.2 : 0.15, c.primaryGhost),
1680
- // ── --focus 全局 token(消除 ~30 处内联 fallback)──────────
1681
- focus: alphaColor(c.primary, isDark ? 0.3 : 0.22, c.primaryGhost),
1682
- // ── RAC 别名层(让 RAC 组件自动获得项目主题色)──────────
1683
- focusRingColor: c.primary,
1684
- invalidColor: c.error,
1685
- buttonBackground: alphaColor(
1686
- c.primary,
1687
- isDark ? 0.12 : 0.08,
1688
- c.primaryGhost
1689
- ),
1690
- buttonBackgroundPressed: alphaColor(
1691
- c.primary,
1692
- isDark ? 0.18 : 0.12,
1693
- c.primaryGhost
1694
- ),
1695
- highlightBackground: c.primary,
1696
- highlightForeground: c.textOnPrimary,
1697
- highlightBackgroundPressed: c.primary,
1698
- highlightOverlay: alphaColor(
1699
- c.primary,
1700
- isDark ? 0.15 : 0.1,
1701
- c.primaryGhost
1702
- ),
1703
- highlightBackgroundInvalid: alphaColor(
1704
- c.error,
1705
- isDark ? 0.55 : 0.5,
1706
- FALLBACK_INVALID_BG
1707
- ),
1708
- fieldBackground: c.backgroundSecondary,
1709
- fieldTextColor: c.text,
1710
- linkColor: c.primary,
1711
- linkColorSecondary: c.text,
1712
- linkColorPressed: c.primaryDark,
1713
- borderColorDisabled: c.borderLight
1714
- };
1715
- }
1716
- );
1717
-
1718
- // packages/app/settings/settingActions.ts
1719
- var updateSettingsState = createAction(
1720
- "settings/_updateSettingsState"
1721
- );
1722
-
1723
1111
  // packages/app/settings/settingThunks.ts
1724
1112
  var getSettings = createAsyncThunk("settings/getSettings", async (_, { dispatch, getState }) => {
1725
1113
  const userId = selectIdentityUserId(getState());
@@ -1943,134 +1331,32 @@ var setThemeMode = createAsyncThunk(
1943
1331
  return dispatch(setSettings(changes)).unwrap();
1944
1332
  }
1945
1333
  );
1946
-
1947
- // packages/app/settings/settingSlice.tsx
1948
- var createSliceWithThunks = buildCreateSlice({
1949
- creators: { asyncThunk: asyncThunkCreator }
1950
- });
1951
- var settingSlice = createSliceWithThunks({
1952
- name: "settings",
1953
- initialState,
1954
- reducers: {
1955
- _updateSettingsState: (state, action) => {
1956
- Object.assign(state, normalizeSettingChanges(action.payload));
1957
- },
1958
- addHostToCurrentServer: (state, action) => {
1959
- const rawValue = action.payload;
1960
- if (typeof rawValue !== "string" || rawValue.trim() === "") return;
1961
- const trimmed = rawValue.trim();
1962
- if (/^https?:\/\//i.test(trimmed)) {
1963
- try {
1964
- state.currentServer = new URL(trimmed).origin;
1965
- return;
1966
- } catch {
1967
- return;
1968
- }
1969
- }
1970
- const host = trimmed.replace(/^\/+|\/+$/g, "");
1971
- const [hostname] = host.split(":");
1972
- if (!hostname) return;
1973
- const isIpAddress = /^(\d{1,3}\.){3}\d{1,3}$/.test(hostname);
1974
- const isLocal = ["nolotus.local", "localhost"].includes(hostname) || isIpAddress;
1975
- const protocol = isLocal ? "http" : "https";
1976
- state.currentServer = `${protocol}://${host}`;
1977
- }
1978
- }
1979
- });
1980
- var { addHostToCurrentServer } = settingSlice.actions;
1981
- var settingSlice_default = settingSlice.reducer;
1982
-
1983
1334
  export {
1984
- DEFAULT_AGENT_BASE_POLICY,
1985
- DEFAULT_USER_PREFERENCE_PROFILE,
1986
- AGENT_UPDATE_FIELD_NAMES,
1987
- normalizeAgentUpdateFieldList,
1988
- SYSTEM_DEFAULT_AGENT_ID,
1989
- normalizeSettingChanges,
1990
- LOCAL_FIRST_APPEARANCE_KEYS,
1991
- LOCAL_ONLY_SETTINGS_KEYS,
1992
- isLocalFirstAppearanceChange,
1993
- stripRegisterBackedFieldsFromSettingsWrite,
1994
- sanitizeStoredSettingsRecord,
1995
- hydrateStoredSettings,
1996
- buildSettingsPersistencePlan,
1997
- getCachedDefaultAgentRegisterRecord,
1998
- persistDefaultAgentRegister,
1999
- selectSettings,
2000
- selectCurrentServer,
2001
- selectSyncServers,
2002
- selectRemoteServer,
2003
- selectRemoteSyncServers,
2004
- selectRemoteServers,
2005
- selectPreferredAnimationSet,
2006
- selectShowThinking,
2007
- selectMaxCost,
2008
- selectMaxExecutionTime,
2009
- selectIsDark,
2010
- selectThemeMode,
2011
- selectHeaderHeight,
2012
- selectThemeName,
2013
- selectThemeFollowsSystem,
2014
- selectSidebarWidth,
2015
- selectDensity,
2016
- selectFontPreset,
2017
- selectEnableReadCurrentSpace,
2018
- selectGlobalPrompt,
2019
- selectUserTonePreset,
2020
- selectKnowledgeCaptureLevel,
2021
- selectSpaceContextLevel,
2022
- selectAutoApproveSelfUpdateFields,
2023
- selectAiRecentContentLimit,
2024
- selectDefaultAgentPreference,
2025
- selectDefaultAgentId,
2026
- selectOcrModel,
2027
- selectShowScrollToTopButton,
2028
- selectShowScrollToBottomButton,
2029
- selectCreateMenuOpenCount,
2030
- selectDesktopChromeConnectorEnabled,
2031
- selectDeveloperModeEnabled,
2032
- selectDiagnosticModeEnabled,
2033
- selectCopyDiagnosticsEnabled,
2034
- selectEditorDefaultMode,
2035
- selectEditorLightCodeTheme,
2036
- selectEditorDarkCodeTheme,
2037
- selectEditorWordCountEnabled,
2038
- selectEditorShortcuts,
2039
- selectDeleteShortcut,
2040
- selectEditorFontSize,
2041
- selectEditorAutoSave,
2042
- selectEditorAutoSaveInterval,
2043
- selectSystemBuiltinSkills,
2044
- selectEditorCodeTheme,
2045
- selectEditorConfig,
2046
- selectTheme,
2047
- getSettings,
2048
- setSettings,
2049
- changeTheme,
1335
+ changeDarkMode,
2050
1336
  changeDensity,
2051
1337
  changeFontPreset,
2052
- changeDarkMode,
2053
- toggleShowThinking,
2054
- setThemeFollowsSystem,
2055
- setSidebarWidth,
2056
- toggleEnableReadCurrentSpace,
2057
- setEditorDefaultMode,
2058
- setEditorLightCodeTheme,
2059
- setEditorDarkCodeTheme,
1338
+ changeTheme,
1339
+ getSettings,
1340
+ setAiRecentContentLimit,
1341
+ setDefaultAgentId,
1342
+ setEditorAutoSaveInterval,
2060
1343
  setEditorCodeTheme,
2061
- toggleEditorWordCount,
2062
- toggleEditorShortcut,
1344
+ setEditorDarkCodeTheme,
1345
+ setEditorDefaultMode,
2063
1346
  setEditorFontSize,
2064
- toggleEditorAutoSave,
2065
- setEditorAutoSaveInterval,
1347
+ setEditorLightCodeTheme,
2066
1348
  setGlobalPrompt,
2067
- setUserTonePreset,
2068
1349
  setKnowledgeCaptureLevel,
2069
- setSpaceContextLevel,
2070
- setAiRecentContentLimit,
2071
1350
  setMaxExecutionTime,
2072
- setDefaultAgentId,
1351
+ setSettings,
1352
+ setSidebarWidth,
1353
+ setSpaceContextLevel,
1354
+ setThemeFollowsSystem,
2073
1355
  setThemeMode,
2074
- addHostToCurrentServer,
2075
- settingSlice_default
1356
+ setUserTonePreset,
1357
+ toggleEditorAutoSave,
1358
+ toggleEditorShortcut,
1359
+ toggleEditorWordCount,
1360
+ toggleEnableReadCurrentSpace,
1361
+ toggleShowThinking
2076
1362
  };