nolo-cli 0.157.0-alpha.1 → 0.158.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 (126) hide show
  1. package/{_executeModel-5WS2PA62.js → _executeModel-6BMU3URY.js} +35 -35
  2. package/{accountResolver-7RYB4D2P.js → accountResolver-55EDKEIK.js} +1 -1
  3. package/{action-ZJYUBXFC.js → action-GPPJC5TI.js} +4 -4
  4. package/{addContentAction-TVHB4526.js → addContentAction-BI6RDRTQ.js} +7 -7
  5. package/{addDialogAgentAction-FDPBU6K6.js → addDialogAgentAction-4RJYUSIK.js} +6 -6
  6. package/{agentDeleteCommand-Q6M4F3U6.js → agentDeleteCommand-Q2XWGBC2.js} +42 -42
  7. package/{agentEmailCommands-FNH6FEHS.js → agentEmailCommands-XFBE2A3F.js} +44 -44
  8. package/{agentListCommands-JUNMFS6E.js → agentListCommands-OROMT4P3.js} +12 -12
  9. package/{agentMachineCommands-VNLDEKNT.js → agentMachineCommands-ULK5YKKJ.js} +11 -10
  10. package/{agentProviderCommands-X2HQE6HY.js → agentProviderCommands-MKG2OOEY.js} +2 -2
  11. package/{agentRecordCommands-47XXRVPI.js → agentRecordCommands-3VHBLS6P.js} +42 -42
  12. package/{agentRunCommand-QEXFJUXQ.js → agentRunCommand-LCIMEAQY.js} +44 -43
  13. package/{agentRuntimeLocal-O5GDAFTN.js → agentRuntimeLocal-NPJS2QDP.js} +5 -5
  14. package/{agentSlice-E3XS5FTQ.js → agentSlice-VRAPG6CH.js} +7 -7
  15. package/{appDeleteCommands-C2J5RQ3I.js → appDeleteCommands-AZ3KS4HK.js} +10 -10
  16. package/{appDeployCommands-3YRK7PSU.js → appDeployCommands-BTV22ICJ.js} +10 -10
  17. package/{appDeployStatusCommands-FPAX7MOK.js → appDeployStatusCommands-JSW3HPIW.js} +10 -10
  18. package/{appGetCommands-XAC2V766.js → appGetCommands-5KTTFIMV.js} +10 -10
  19. package/{appListCommands-ZJL2W5O7.js → appListCommands-3BJPAE2U.js} +10 -10
  20. package/{authCommand-J3XILHWW.js → authCommand-NIV3DKPF.js} +7 -287
  21. package/{authCommands-77CHYBGF.js → authCommands-AMNIAKEG.js} +2 -2
  22. package/{builtinSkillRegistry-A6VSPJEJ.js → builtinSkillRegistry-H3AY27TR.js} +1 -1
  23. package/{chromeCommands-OBBNJCLS.js → chromeCommands-IY4NVSXZ.js} +17 -10
  24. package/{chunk-SW4S4XYB.js → chunk-2AB2HA4M.js} +84 -34
  25. package/{chunk-VSOWPETY.js → chunk-2BKUVRC5.js} +7 -7
  26. package/{chunk-Z6KQDSZW.js → chunk-2SGAI64X.js} +2 -2
  27. package/{chunk-KOB75UNU.js → chunk-2SOS7OSQ.js} +18 -2
  28. package/{chunk-C5VPAHIU.js → chunk-32ZKZET7.js} +1 -1
  29. package/{chunk-XPWGOTBQ.js → chunk-3L2WKC3W.js} +1 -8
  30. package/{chunk-PEO24UB5.js → chunk-3TBHZPNG.js} +33 -6
  31. package/{chunk-YBNHPX4S.js → chunk-4RJJDA57.js} +1 -1
  32. package/{chunk-X5SUT4CN.js → chunk-4UOEOHY3.js} +6 -6
  33. package/{chunk-UUPR3TD7.js → chunk-7RF4O6AT.js} +1 -3
  34. package/{chunk-FPWT3RH2.js → chunk-AJ4V34SG.js} +10 -10
  35. package/{chunk-2GGXHQIW.js → chunk-BLVSFYQ3.js} +4 -2
  36. package/{chunk-SKPPKHD3.js → chunk-BYQOCH75.js} +2 -2
  37. package/{chunk-UTIMX333.js → chunk-C3OK72G3.js} +1 -1
  38. package/{chunk-ZWG3C7VI.js → chunk-C6FY7HWI.js} +35 -0
  39. package/{chunk-RUNKPFM5.js → chunk-CDWHHLK5.js} +12 -8
  40. package/{chunk-ROPSATAB.js → chunk-CON6SI7N.js} +1 -1
  41. package/{chunk-4Z245KOA.js → chunk-DC3SZCRR.js} +6 -2
  42. package/{chunk-OH2M7WEU.js → chunk-EQGFFDNA.js} +3 -3
  43. package/{chunk-ANJTRG52.js → chunk-G2WP7VPD.js} +0 -37
  44. package/{chunk-7A4LJCDR.js → chunk-G476FQ7Q.js} +4 -4
  45. package/{chunk-DW7MGLMG.js → chunk-GAVUTXM5.js} +21 -17
  46. package/{chunk-PSJWPSKS.js → chunk-HB4XPBC7.js} +0 -32
  47. package/{chunk-6MJNEXUU.js → chunk-HGDKT2D6.js} +4 -0
  48. package/{chunk-EM3YOZJ4.js → chunk-ICRRXBRN.js} +3 -3
  49. package/{chunk-7KYVUFDG.js → chunk-IE5PXKVU.js} +1 -263
  50. package/{chunk-T6CBQ6BN.js → chunk-INFHX73M.js} +1 -1
  51. package/{chunk-CE7PIHQD.js → chunk-IRTOYSA2.js} +3 -3
  52. package/{chunk-WZ6OU4NX.js → chunk-J2ATF74A.js} +2 -2
  53. package/{chunk-TJ2VPCBE.js → chunk-JPJGMOIM.js} +2 -2
  54. package/{chunk-I2ZMGXXF.js → chunk-KFHREHUQ.js} +1 -1
  55. package/{chunk-7GC3EKUG.js → chunk-KKKHAF3P.js} +2 -2
  56. package/{chunk-KX6LPG7W.js → chunk-KLA62VVE.js} +1 -1
  57. package/{chunk-TYND6RDQ.js → chunk-LV4LV2B4.js} +72 -1
  58. package/{chunk-TZTWMGE3.js → chunk-M2P3OGXZ.js} +3 -3
  59. package/{chunk-CBHGZRCE.js → chunk-MYOH447Z.js} +1 -1
  60. package/{chunk-6MPAEODB.js → chunk-NDZOXXIM.js} +17 -3
  61. package/{chunk-MVJVF4ED.js → chunk-NKPAHRMA.js} +7 -6
  62. package/{chunk-ZD2BLOY6.js → chunk-O4ZERG3M.js} +3 -3
  63. package/{chunk-36OMEXXR.js → chunk-OON4OBWI.js} +1 -1
  64. package/{chunk-SEJ5OS6F.js → chunk-PXYBUFDB.js} +4 -0
  65. package/{chunk-G47IPDOK.js → chunk-QPY264HO.js} +1 -1
  66. package/{chunk-TNIX77YM.js → chunk-R5GO3YZP.js} +34 -1
  67. package/{chunk-EJU23ST5.js → chunk-S72LMV7T.js} +670 -627
  68. package/{chunk-D4OWHT5Y.js → chunk-SPKLALBU.js} +2 -2
  69. package/{chunk-FDT27L7S.js → chunk-UCLSOLX4.js} +7 -5
  70. package/{chunk-B2EGWZJG.js → chunk-UFYBYB26.js} +1 -1
  71. package/{chunk-3XZKV7QQ.js → chunk-US6MKPE7.js} +1 -1
  72. package/{chunk-VAZHH6FO.js → chunk-VDEVDGEM.js} +18 -12
  73. package/{chunk-HXHSTRGH.js → chunk-VYNMQ6HW.js} +0 -27
  74. package/{chunk-7BSQK2UC.js → chunk-WRCZXJ4N.js} +2 -2
  75. package/{chunk-H4KACZMG.js → chunk-WTFRBJT5.js} +261 -126
  76. package/{chunk-QDA4Y5O6.js → chunk-WXFZ4P6O.js} +18 -14
  77. package/chunk-Y5GCAMGP.js +9 -0
  78. package/{chunk-SCJD2PNK.js → chunk-YPG7TUQD.js} +3 -3
  79. package/{chunk-XFKZ3MCV.js → chunk-YTXQ2U2X.js} +221 -65
  80. package/{chunk-ZEHTARJA.js → chunk-ZBXIKCZ4.js} +38 -92
  81. package/{chunk-HKT6QXP3.js → chunk-ZEY4NJRE.js} +2 -2
  82. package/{chunk-HP6O6LTV.js → chunk-ZVQHBIWV.js} +6 -6
  83. package/{commandRegistry-OUBQIF62.js → commandRegistry-D6JTVYKG.js} +73 -81
  84. package/{contentThunks-B3FRQGP7.js → contentThunks-DYQO4CTI.js} +14 -13
  85. package/{createAgentAutomationAction-T2YFJ6MY.js → createAgentAutomationAction-LW26KIBP.js} +14 -13
  86. package/{createDialogAction-2NFGFBXW.js → createDialogAction-VLLBRD52.js} +15 -14
  87. package/{createPageAction-LDAVZDN7.js → createPageAction-PDACOLI6.js} +14 -13
  88. package/{dbSlice-5QGKMQLO.js → dbSlice-DC2J53RC.js} +6 -6
  89. package/{deleteFile-EW6QNRRT.js → deleteFile-KYWEMNFX.js} +4 -4
  90. package/{dialogCommands-ZLBEAQHE.js → dialogCommands-F3Y4KCPZ.js} +12 -11
  91. package/{dialogSlice-64S3J6CP.js → dialogSlice-ERMZYMS6.js} +13 -12
  92. package/{docCreateCommands-XOG5BBFQ.js → docCreateCommands-YMWZLW64.js} +8 -8
  93. package/{docDeleteCommands-NCW3BBRX.js → docDeleteCommands-6KJ3ESK4.js} +9 -9
  94. package/{docReadCommands-OT7X44Y3.js → docReadCommands-YQGFVLWI.js} +8 -8
  95. package/{docStore-NIP7OO4I.js → docStore-HXKI6W5D.js} +7 -7
  96. package/{docUpdateCommands-JW7OWW2J.js → docUpdateCommands-QLSGXUEX.js} +8 -8
  97. package/{handleSendMessageAction-TOKA7ED7.js → handleSendMessageAction-2XCOZPXY.js} +25 -24
  98. package/index.js +6 -6
  99. package/{localRuntimeAdapter-EQM6LFYC.js → localRuntimeAdapter-VOFUPXNF.js} +42 -40
  100. package/{machineCommands-WJ7FZ67T.js → machineCommands-IN5O7CIO.js} +46 -44
  101. package/{machineWsRunDispatch-BQT4DEA2.js → machineWsRunDispatch-TH3GMSR3.js} +41 -41
  102. package/{memberThunks-KRV5YXOB.js → memberThunks-2DWKLE6W.js} +7 -7
  103. package/package.json +1 -1
  104. package/{profileConfig-ZGOFORWV.js → profileConfig-KN3N2BLF.js} +7 -1
  105. package/{providerPresetApply-CRZFMQD5.js → providerPresetApply-GSJI4JBJ.js} +1 -1
  106. package/{providerRegistry-7IS43D3X.js → providerRegistry-TSSTPGWF.js} +1 -1
  107. package/{read-5KAZHHDM.js → read-L7QEJETH.js} +4 -4
  108. package/{readDocTool-5QO34OSX.js → readDocTool-QELXV2GW.js} +1 -1
  109. package/{readlineWorkspace-JHJSU5DS.js → readlineWorkspace-EIEQUTEZ.js} +317 -104
  110. package/{removeDialogAgentAction-6X63HMI3.js → removeDialogAgentAction-376XSUP2.js} +8 -8
  111. package/{runAgentClientLoop-5QIGEALK.js → runAgentClientLoop-3KHKKBZI.js} +39 -34
  112. package/{secretCommands-ZXZRLR3R.js → secretCommands-DNY56NSU.js} +11 -1
  113. package/{setDialogExtraReferencesAction-4MAYKKYW.js → setDialogExtraReferencesAction-QBDSH63D.js} +7 -7
  114. package/{setPrimaryDialogAgentAction-EGBAMREH.js → setPrimaryDialogAgentAction-537QFGW3.js} +8 -8
  115. package/settingThunks-4Z43ZSAT.js +923 -0
  116. package/{spaceCommands-ZWDPTURU.js → spaceCommands-T5Z4U7HP.js} +8 -8
  117. package/{streamAgentChatTurn-456DWXNY.js → streamAgentChatTurn-DMXXSEVX.js} +39 -39
  118. package/{switchDialogAgentAction-YBKTD6DO.js → switchDialogAgentAction-CSO6AKRL.js} +6 -6
  119. package/{tableCommands-U3QDY4L6.js → tableCommands-LBH3QPPO.js} +1 -1
  120. package/{toolApiClient-7WSJJJBV.js → toolApiClient-HGNO53TC.js} +2 -2
  121. package/{tools-IWNXKK4Y.js → tools-RMT7NAMC.js} +29 -28
  122. package/{updateCommands-NQXAGFM7.js → updateCommands-LXZLG44Y.js} +2 -2
  123. package/{updateDialogTitleAction-SX53FZWO.js → updateDialogTitleAction-Z4WNUH6Y.js} +14 -13
  124. package/{workloadLifecycle-36DXRZKU.js → workloadLifecycle-6O6PMISX.js} +2 -2
  125. package/chunk-W4S6OTSC.js +0 -35
  126. package/settingThunks-FTDRZNSJ.js +0 -1371
@@ -1,1371 +0,0 @@
1
- import {
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-HXHSTRGH.js";
15
- import {
16
- patch,
17
- readAndWait,
18
- toTimestampMs,
19
- upsert,
20
- write
21
- } from "./chunk-HP6O6LTV.js";
22
- import "./chunk-3PVYUPXK.js";
23
- import "./chunk-6MPAEODB.js";
24
- import "./chunk-D4OWHT5Y.js";
25
- import "./chunk-Z6KQDSZW.js";
26
- import "./chunk-UEILX4EV.js";
27
- import {
28
- createAction,
29
- createAsyncThunk
30
- } from "./chunk-7BSQK2UC.js";
31
- import "./chunk-6Q7UTJKR.js";
32
- import "./chunk-QQ56R7KS.js";
33
- import "./chunk-OW765XBU.js";
34
- import {
35
- selectIdentityUserId
36
- } from "./chunk-SEJ5OS6F.js";
37
- import "./chunk-D2MDMY2M.js";
38
- import {
39
- DEFAULT_SYSTEM_AGENT_CAPABILITIES
40
- } from "./chunk-EUGTFFO6.js";
41
- import "./chunk-Y6ORVLSS.js";
42
- import {
43
- asRecordOrEmpty
44
- } from "./chunk-KX6YBIHG.js";
45
- import "./chunk-7DPNBQSV.js";
46
- import "./chunk-LOEO7LRC.js";
47
- import "./chunk-M2EJHDJP.js";
48
- import {
49
- createUserKey,
50
- createUserPreferenceKey,
51
- ulid
52
- } from "./chunk-5EMSBTQ6.js";
53
- import "./chunk-I42VC5KR.js";
54
- import "./chunk-U6VC4MU4.js";
55
- import "./chunk-WWC7I6TA.js";
56
- import "./chunk-KUG52IAP.js";
57
- import "./chunk-3EUW3WEO.js";
58
- import "./chunk-LCBAMY2M.js";
59
- import "./chunk-4SN6J65J.js";
60
- import "./chunk-CF7PE763.js";
61
- import "./chunk-G3SUCT4W.js";
62
- import "./chunk-QSJ3HFEF.js";
63
- import "./chunk-4VNS5WPM.js";
64
-
65
- // packages/database/userPreferenceRegister.ts
66
- var USER_PREFERENCE_NAMES = {
67
- AUTHORITY_HOME: "authority_home",
68
- DEFAULT_AGENT: "agent_default"
69
- };
70
- var nextRegisterUpdatedAt = (previousRecord) => {
71
- const previousTimestamp = Math.max(
72
- toTimestampMs(previousRecord?.updatedAt),
73
- toTimestampMs(previousRecord?.createdAt)
74
- );
75
- return Math.max(Date.now(), previousTimestamp + 1);
76
- };
77
- var buildUserPreferenceRegisterRecord = ({
78
- userId,
79
- preferenceName,
80
- value,
81
- previousRecord
82
- }) => {
83
- const updatedAt = nextRegisterUpdatedAt(previousRecord ?? void 0);
84
- return {
85
- type: "setting" /* SETTING */,
86
- registerType: "user_preference",
87
- preferenceName,
88
- schemaVersion: 1,
89
- userId,
90
- value,
91
- opId: ulid(),
92
- createdAt: toTimestampMs(previousRecord?.createdAt) || updatedAt,
93
- updatedAt
94
- };
95
- };
96
- var readUserPreferenceRegisterValue = (record, preferenceName) => {
97
- if (!record || typeof record !== "object") return void 0;
98
- if (record.registerType !== "user_preference") return void 0;
99
- if (record.preferenceName !== preferenceName) return void 0;
100
- if (!("value" in record)) return void 0;
101
- return record.value;
102
- };
103
- var buildDefaultAgentPreferenceRegisterRecord = ({
104
- userId,
105
- defaultAgentId,
106
- previousRecord
107
- }) => buildUserPreferenceRegisterRecord({
108
- userId,
109
- preferenceName: USER_PREFERENCE_NAMES.DEFAULT_AGENT,
110
- value: defaultAgentId,
111
- previousRecord
112
- });
113
-
114
- // packages/app/theme/colors.ts
115
- var semantic = {
116
- light: { success: "#16A34A", warning: "#D97706", info: "#2563EB", error: "#DC2626" },
117
- dark: { success: "#4ADE80", warning: "#FCD34D", info: "#60A5FA", error: "#F87171" }
118
- };
119
- var mkLight = (bg, bg2, bg3, textPrimary, textSec, textTer, border, borderL) => ({
120
- background: bg,
121
- backgroundSecondary: bg2,
122
- backgroundTertiary: bg3,
123
- backgroundGhost: bg + "F0",
124
- backgroundHover: bg3,
125
- backgroundSelected: border,
126
- backgroundElevated: bg2,
127
- text: textPrimary,
128
- textSecondary: textSec,
129
- textTertiary: textTer,
130
- textQuaternary: textTer + "99",
131
- textLight: border,
132
- placeholder: textTer,
133
- border,
134
- borderLight: borderL,
135
- borderHover: textTer,
136
- messageBackground: bg2,
137
- codeBackground: bg3,
138
- shadowLight: `rgba(0,0,0,0.04)`,
139
- shadowMedium: `rgba(0,0,0,0.08)`,
140
- shadowHeavy: `rgba(0,0,0,0.14)`,
141
- textOnPrimary: "#FFFFFF"
142
- });
143
- var mkDark = (bg, bg2, bg3, textPrimary, textSec, textTer, border, borderL, shadowBase = "0,0,0") => ({
144
- background: bg,
145
- backgroundSecondary: bg2,
146
- backgroundTertiary: bg3,
147
- backgroundGhost: bg2 + "F0",
148
- backgroundHover: bg3,
149
- backgroundSelected: border,
150
- backgroundElevated: bg3,
151
- text: textPrimary,
152
- textSecondary: textSec,
153
- textTertiary: textTer,
154
- textQuaternary: textTer + "88",
155
- textLight: border,
156
- placeholder: textTer,
157
- border,
158
- borderLight: borderL,
159
- borderHover: textTer,
160
- messageBackground: bg2,
161
- codeBackground: bg2,
162
- shadowLight: `rgba(${shadowBase},0.18)`,
163
- shadowMedium: `rgba(${shadowBase},0.30)`,
164
- shadowHeavy: `rgba(${shadowBase},0.44)`,
165
- textOnPrimary: "#FFFFFF"
166
- });
167
- var neutral = {
168
- light: {
169
- primary: "#71717A",
170
- primaryLight: "#A1A1AA",
171
- primaryDark: "#52525B",
172
- primaryGradient: "linear-gradient(135deg, #71717A, #A1A1AA)",
173
- primaryGhost: "rgba(113,113,122,0.08)",
174
- primaryHover: "rgba(113,113,122,0.10)",
175
- borderAccent: "#D4D4D8",
176
- ...semantic.light,
177
- ...mkLight("#FFFFFF", "#F4F4F5", "#E4E4E7", "#18181B", "#52525B", "#71717A", "#E4E4E7", "#F4F4F5")
178
- },
179
- dark: {
180
- primary: "#A1A1AA",
181
- primaryLight: "#D4D4D8",
182
- primaryDark: "#71717A",
183
- primaryGradient: "linear-gradient(135deg, #A1A1AA, #D4D4D8)",
184
- primaryGhost: "rgba(161,161,170,0.10)",
185
- primaryHover: "rgba(161,161,170,0.12)",
186
- borderAccent: "#52525B",
187
- ...semantic.dark,
188
- ...mkDark("#18181B", "#27272A", "#3F3F46", "#FAFAFA", "#D4D4D8", "#A1A1AA", "#3F3F46", "#27272A", "24,24,27"),
189
- textOnPrimary: "#18181B"
190
- }
191
- };
192
- var ocean = {
193
- light: {
194
- primary: "#006EDC",
195
- primaryLight: "#0874DC",
196
- primaryDark: "#0052AD",
197
- primaryGradient: "linear-gradient(135deg, #006EDC, #0874DC)",
198
- primaryGhost: "rgba(0,110,220,0.08)",
199
- primaryHover: "rgba(0,110,220,0.10)",
200
- borderAccent: "#73BEFF",
201
- ...semantic.light,
202
- ...mkLight("#FFFFFF", "#F6F8FA", "#EBF0F4", "#1C2128", "#57606A", "#6E7781", "#D0D7DE", "#F6F8FA")
203
- },
204
- dark: {
205
- primary: "#58A6FF",
206
- primaryLight: "#79C0FF",
207
- primaryDark: "#388BFD",
208
- primaryGradient: "linear-gradient(135deg, #58A6FF, #79C0FF)",
209
- primaryGhost: "rgba(88,166,255,0.10)",
210
- primaryHover: "rgba(88,166,255,0.12)",
211
- borderAccent: "#1F6FEB",
212
- ...semantic.dark,
213
- ...mkDark("#0D1117", "#161B22", "#21262D", "#E6EDF3", "#8B949E", "#6E7681", "#30363D", "#161B22", "13,17,23"),
214
- textHeading: "#E6EDF3",
215
- textOnPrimary: "#0D1117"
216
- }
217
- };
218
- var iris = {
219
- meta: { radiusBoost: -2, motionEase: "cubic-bezier(0.16, 1, 0.3, 1)" },
220
- light: {
221
- primary: "#5E6AD2",
222
- primaryLight: "#8B9CF4",
223
- primaryDark: "#4A55C0",
224
- primaryGradient: "linear-gradient(135deg, #5E6AD2, #8B9CF4)",
225
- primaryGhost: "rgba(94, 106, 210, 0.07)",
226
- primaryHover: "rgba(94, 106, 210, 0.10)",
227
- borderAccent: "#ADB5F7",
228
- success: "#16A34A",
229
- warning: "#D97706",
230
- info: "#5E6AD2",
231
- error: "#E5484D",
232
- background: "#FBFBFD",
233
- backgroundSecondary: "#F4F4F9",
234
- backgroundTertiary: "#ECECF3",
235
- backgroundGhost: "rgba(251, 251, 253, 0.94)",
236
- backgroundHover: "#E4E4ED",
237
- backgroundSelected: "#D8D8E3",
238
- backgroundElevated: "#F7F7FB",
239
- text: "#1A1730",
240
- textSecondary: "#4E4B6B",
241
- textTertiary: "#6E6A8A",
242
- textQuaternary: "#9E9AB5",
243
- textLight: "#C4C2D4",
244
- placeholder: "#9E9AB5",
245
- border: "#E4E4ED",
246
- borderHover: "#CFCFD9",
247
- borderLight: "#F2F2F7",
248
- messageBackground: "#FFFFFF",
249
- codeBackground: "#F2F2F7",
250
- shadowLight: "rgba(26, 23, 48, 0.04)",
251
- shadowMedium: "rgba(26, 23, 48, 0.08)",
252
- shadowHeavy: "rgba(26, 23, 48, 0.13)",
253
- textHeading: "#1A1730",
254
- textOnPrimary: "#FFFFFF"
255
- },
256
- dark: {
257
- primary: "#8B9CF4",
258
- primaryLight: "#ADB5F7",
259
- primaryDark: "#5E6AD2",
260
- primaryGradient: "linear-gradient(135deg, #8B9CF4, #ADB5F7)",
261
- primaryGhost: "rgba(139, 156, 244, 0.10)",
262
- primaryHover: "rgba(139, 156, 244, 0.14)",
263
- borderAccent: "#4A55C0",
264
- success: "#26BD6C",
265
- warning: "#F5A623",
266
- info: "#8B9CF4",
267
- error: "#EC5B6E",
268
- background: "#0F0E17",
269
- backgroundSecondary: "#16141F",
270
- backgroundTertiary: "#1E1B2E",
271
- backgroundGhost: "rgba(15, 14, 23, 0.94)",
272
- backgroundHover: "#28253A",
273
- backgroundSelected: "#36334D",
274
- backgroundElevated: "#1E1B2E",
275
- text: "#E8E5F7",
276
- textSecondary: "#C0BDD8",
277
- textTertiary: "#938AA9",
278
- textQuaternary: "#5A5772",
279
- textLight: "#36334D",
280
- placeholder: "#5A5772",
281
- border: "#272435",
282
- borderHover: "#3A3650",
283
- borderLight: "#16141F",
284
- messageBackground: "#16141F",
285
- codeBackground: "#0A0911",
286
- shadowLight: "rgba(10, 9, 17, 0.20)",
287
- shadowMedium: "rgba(10, 9, 17, 0.32)",
288
- shadowHeavy: "rgba(10, 9, 17, 0.44)",
289
- textHeading: "#E8E5F7",
290
- textOnPrimary: "#0F0E17"
291
- }
292
- };
293
- var forest = {
294
- light: {
295
- primary: "#059669",
296
- primaryLight: "#10B981",
297
- primaryDark: "#047857",
298
- primaryGradient: "linear-gradient(135deg, #059669, #10B981)",
299
- primaryGhost: "rgba(5,150,105,0.08)",
300
- primaryHover: "rgba(5,150,105,0.10)",
301
- borderAccent: "#6EE7B7",
302
- ...semantic.light,
303
- ...mkLight("#F6FAF6", "#EDF5EC", "#DDF0DB", "#1A2E18", "#3D6B3A", "#5C8A58", "#C3E0C0", "#EDF5EC")
304
- },
305
- dark: {
306
- primary: "#34D399",
307
- primaryLight: "#6EE7B7",
308
- primaryDark: "#10B981",
309
- primaryGradient: "linear-gradient(135deg, #34D399, #6EE7B7)",
310
- primaryGhost: "rgba(52,211,153,0.10)",
311
- primaryHover: "rgba(52,211,153,0.12)",
312
- borderAccent: "#059669",
313
- ...semantic.dark,
314
- ...mkDark("#0C1209", "#121A0E", "#1A2416", "#E4F0E2", "#87A882", "#5E7A5A", "#1A2416", "#121A0E", "12,18,9"),
315
- success: "#4ADE80",
316
- textHeading: "#C8EEC4",
317
- textOnPrimary: "#0C1209"
318
- }
319
- };
320
- var trail = {
321
- meta: { radiusBoost: 1, motionEase: "cubic-bezier(0.22, 1, 0.36, 1)" },
322
- light: {
323
- primary: "#2E7DB5",
324
- primaryLight: "#6BB5E0",
325
- primaryDark: "#1F5F94",
326
- primaryGradient: "linear-gradient(135deg, #2E7DB5, #6BB5E0)",
327
- primaryGhost: "rgba(46, 125, 181, 0.08)",
328
- primaryHover: "rgba(46, 125, 181, 0.11)",
329
- borderAccent: "#9EC9E8",
330
- success: "#3F8F5C",
331
- warning: "#D4A054",
332
- info: "#4A9FD4",
333
- error: "#C45C4A",
334
- accentTrail: "#C9924E",
335
- accentMoss: "#7A9B6E",
336
- accentTrailGhost: "rgba(201, 146, 78, 0.10)",
337
- accentMossGhost: "rgba(122, 155, 110, 0.10)",
338
- background: "#FAFBFC",
339
- backgroundSecondary: "#F4F7FA",
340
- backgroundTertiary: "#E8EDF2",
341
- backgroundGhost: "rgba(250, 251, 252, 0.94)",
342
- backgroundHover: "#DCE4EC",
343
- backgroundSelected: "#C8D4E0",
344
- text: "#1C2430",
345
- textSecondary: "#5C6775",
346
- textTertiary: "#7A8796",
347
- textQuaternary: "#A3B0BD",
348
- textLight: "#C5CED8",
349
- placeholder: "#A3B0BD",
350
- border: "#D8E0E8",
351
- borderHover: "#B8C5D4",
352
- borderLight: "#EEF2F6",
353
- messageBackground: "#FFFFFF",
354
- codeBackground: "#EEF2F6",
355
- shadowLight: "rgba(28, 36, 48, 0.05)",
356
- shadowMedium: "rgba(28, 36, 48, 0.09)",
357
- shadowHeavy: "rgba(28, 36, 48, 0.14)",
358
- textHeading: "#1C2430",
359
- textOnPrimary: "#FFFFFF"
360
- },
361
- dark: {
362
- primary: "#5BA3D9",
363
- primaryLight: "#7FBEE8",
364
- primaryDark: "#3D85BF",
365
- primaryGradient: "linear-gradient(135deg, #5BA3D9, #7FBEE8)",
366
- primaryGhost: "rgba(91, 163, 217, 0.12)",
367
- primaryHover: "rgba(91, 163, 217, 0.16)",
368
- borderAccent: "#2F5F78",
369
- success: "#5CB87A",
370
- warning: "#E6B35C",
371
- info: "#6BB8E8",
372
- error: "#E07060",
373
- accentTrail: "#D4A96A",
374
- accentMoss: "#8FB896",
375
- accentTrailGhost: "rgba(212, 169, 106, 0.12)",
376
- accentMossGhost: "rgba(143, 184, 150, 0.12)",
377
- background: "#0B1218",
378
- backgroundSecondary: "#111A22",
379
- backgroundTertiary: "#1A2630",
380
- backgroundGhost: "rgba(11, 18, 24, 0.94)",
381
- backgroundHover: "#243240",
382
- backgroundSelected: "#2E4050",
383
- text: "#EEF3F8",
384
- textSecondary: "#A8B8C8",
385
- textTertiary: "#7A8FA3",
386
- textQuaternary: "#5A6F82",
387
- textLight: "#3A4F62",
388
- placeholder: "#5A6F82",
389
- border: "#243240",
390
- borderHover: "#3A5060",
391
- borderLight: "#111A22",
392
- messageBackground: "#111A22",
393
- codeBackground: "#070D12",
394
- shadowLight: "rgba(4, 8, 12, 0.22)",
395
- shadowMedium: "rgba(4, 8, 12, 0.34)",
396
- shadowHeavy: "rgba(4, 8, 12, 0.46)",
397
- textHeading: "#E8F4FC",
398
- textOnPrimary: "#0B1218"
399
- }
400
- };
401
- var wave = {
402
- light: {
403
- // Kanagawa Lotus — lotusBlue3 accent(日式水墨蓝,与 Wave dark 气质呼应)
404
- primary: "#4D699B",
405
- primaryLight: "#6680B3",
406
- primaryDark: "#3C5585",
407
- primaryGradient: "linear-gradient(135deg, #4D699B, #6680B3)",
408
- primaryGhost: "rgba(77, 105, 155, 0.08)",
409
- primaryHover: "rgba(77, 105, 155, 0.10)",
410
- borderAccent: "#8CA6CF",
411
- success: "#6F894E",
412
- warning: "#836F4A",
413
- info: "#4D699B",
414
- error: "#C84053",
415
- // Surface overrides — Kanagawa Lotus palette
416
- background: "#F5F4EF",
417
- backgroundSecondary: "#FFFFFF",
418
- backgroundTertiary: "#ECEAE3",
419
- backgroundGhost: "rgba(245, 244, 239, 0.94)",
420
- backgroundHover: "#E8E6DE",
421
- backgroundSelected: "#DEDAD0",
422
- text: "#1A1A22",
423
- textSecondary: "#3D3B4F",
424
- textTertiary: "#716E61",
425
- textQuaternary: "#9E9B8E",
426
- textLight: "#C3BBAA",
427
- placeholder: "#9E9B8E",
428
- border: "#D8D5C8",
429
- borderHover: "#C4C0B2",
430
- borderLight: "#ECEAE3",
431
- messageBackground: "#FFFFFF",
432
- codeBackground: "#ECEAE3",
433
- shadowLight: "rgba(26, 26, 34, 0.05)",
434
- shadowMedium: "rgba(26, 26, 34, 0.09)",
435
- shadowHeavy: "rgba(26, 26, 34, 0.14)",
436
- textOnPrimary: "#FFFFFF"
437
- },
438
- dark: {
439
- // Kanagawa Wave — crystalBlue accent(#7E9CD8 是函数名颜色,最标志性的 Kanagawa 蓝)
440
- primary: "#7E9CD8",
441
- primaryLight: "#9DB4E8",
442
- primaryDark: "#6688BC",
443
- primaryGradient: "linear-gradient(135deg, #7E9CD8, #9DB4E8)",
444
- primaryGhost: "rgba(126, 156, 216, 0.10)",
445
- primaryHover: "rgba(126, 156, 216, 0.16)",
446
- borderAccent: "#2D4F67",
447
- success: "#98BB6C",
448
- // bamboo green
449
- warning: "#E6C384",
450
- // autumn gold
451
- info: "#7FB4CA",
452
- // waveBlue
453
- error: "#E82424",
454
- // Surface overrides — Kanagawa Wave palette
455
- background: "#1F1F28",
456
- // surumiBlack — 墨色
457
- backgroundSecondary: "#16161D",
458
- // deeper ink
459
- backgroundTertiary: "#2A2A37",
460
- // waveBlue-dark
461
- backgroundGhost: "rgba(22, 22, 29, 0.94)",
462
- backgroundHover: "#363646",
463
- backgroundSelected: "#54546D",
464
- text: "#DCD7BA",
465
- // fujiWhite — 宣纸暖白,365天的护眼体验
466
- textSecondary: "#C8C093",
467
- // oldWhite — 次级暖白
468
- textTertiary: "#938AA9",
469
- // springViolet2 — 注释紫,Kanagawa 气质核心
470
- textQuaternary: "#727169",
471
- // fujiGray
472
- textLight: "#54546D",
473
- placeholder: "#727169",
474
- border: "#2A2A37",
475
- borderHover: "#54546D",
476
- borderLight: "#1F1F28",
477
- messageBackground: "#16161D",
478
- codeBackground: "#0D0C0C",
479
- // 比背景更深的墨黑
480
- shadowLight: "rgba(13, 12, 12, 0.18)",
481
- shadowMedium: "rgba(13, 12, 12, 0.28)",
482
- shadowHeavy: "rgba(13, 12, 12, 0.38)",
483
- textHeading: "#DCD7BA",
484
- // fujiWhite — 暖色标题
485
- textOnPrimary: "#1F1F28"
486
- }
487
- };
488
- var rose = {
489
- light: {
490
- // Rosé Pine Dawn
491
- primary: "#D14D72",
492
- primaryLight: "#E87C9D",
493
- primaryDark: "#B03060",
494
- primaryGradient: "linear-gradient(135deg, #D14D72, #E87C9D)",
495
- primaryGhost: "rgba(209, 77, 114, 0.08)",
496
- primaryHover: "rgba(209, 77, 114, 0.10)",
497
- borderAccent: "#F2BFCC",
498
- success: "#56949F",
499
- warning: "#EA9D34",
500
- info: "#286983",
501
- error: "#B4637A",
502
- background: "#FAF4ED",
503
- backgroundSecondary: "#FFFAF3",
504
- backgroundTertiary: "#F2E9E1",
505
- backgroundGhost: "rgba(250, 244, 237, 0.94)",
506
- backgroundHover: "#EDE3DA",
507
- backgroundSelected: "#DFD3C7",
508
- text: "#575279",
509
- textSecondary: "#6E6A86",
510
- textTertiary: "#797593",
511
- textQuaternary: "#9893A5",
512
- textLight: "#CECACD",
513
- placeholder: "#9893A5",
514
- border: "#DFDAD9",
515
- borderHover: "#C5BFB3",
516
- borderLight: "#F2E9E1",
517
- messageBackground: "#FFFAF3",
518
- codeBackground: "#F2E9E1",
519
- shadowLight: "rgba(87, 82, 121, 0.05)",
520
- shadowMedium: "rgba(87, 82, 121, 0.09)",
521
- shadowHeavy: "rgba(87, 82, 121, 0.14)",
522
- textOnPrimary: "#FFFFFF"
523
- },
524
- dark: {
525
- // Rosé Pine main
526
- primary: "#EB6F92",
527
- primaryLight: "#F0A8BF",
528
- primaryDark: "#C4637A",
529
- primaryGradient: "linear-gradient(135deg, #EB6F92, #F0A8BF)",
530
- primaryGhost: "rgba(235, 111, 146, 0.10)",
531
- primaryHover: "rgba(235, 111, 146, 0.14)",
532
- borderAccent: "#6E3050",
533
- success: "#9CCFD8",
534
- warning: "#F6C177",
535
- info: "#C4A7E7",
536
- error: "#EB6F92",
537
- background: "#191724",
538
- backgroundSecondary: "#1F1D2E",
539
- backgroundTertiary: "#26233A",
540
- backgroundGhost: "rgba(25, 23, 36, 0.94)",
541
- backgroundHover: "#312E45",
542
- backgroundSelected: "#403D52",
543
- text: "#E0DEF4",
544
- textSecondary: "#C4C1D9",
545
- textTertiary: "#908CAA",
546
- textQuaternary: "#6E6A86",
547
- textLight: "#403D52",
548
- placeholder: "#6E6A86",
549
- border: "#26233A",
550
- borderHover: "#6E6A86",
551
- borderLight: "#1F1D2E",
552
- messageBackground: "#1F1D2E",
553
- codeBackground: "#12101E",
554
- shadowLight: "rgba(12, 10, 20, 0.20)",
555
- shadowMedium: "rgba(12, 10, 20, 0.30)",
556
- shadowHeavy: "rgba(12, 10, 20, 0.44)",
557
- textHeading: "#E0DEF4",
558
- textOnPrimary: "#191724"
559
- }
560
- };
561
- var mono = {
562
- meta: { radiusBoost: 0, motionEase: "cubic-bezier(0.4, 0, 0.2, 1)" },
563
- light: {
564
- // open-props: --orange-6 = #FF9500, --orange-3 = #FFD599, --orange-7 = #E68600
565
- primary: "#FF9500",
566
- primaryLight: "#FFD599",
567
- primaryDark: "#E68600",
568
- primaryGradient: "linear-gradient(135deg, #FF9500, #FFD599)",
569
- primaryGhost: "rgba(255,149,0,0.08)",
570
- primaryHover: "rgba(255,149,0,0.12)",
571
- borderAccent: "#FFBF66",
572
- success: "#16A34A",
573
- warning: "#D97706",
574
- info: "#2563EB",
575
- error: "#DC2626",
576
- // 采用 open-props 默认的冷系 slate-gray 调色(H=210, S=10%),完美消除泥土发灰感
577
- background: "#FCFCFD",
578
- // gray-0
579
- backgroundSecondary: "#F9FAFA",
580
- // gray-1
581
- backgroundTertiary: "#F1F2F4",
582
- // gray-2
583
- backgroundGhost: "rgba(252,252,253,0.94)",
584
- backgroundHover: "#EBEDEF",
585
- // gray-3
586
- backgroundSelected: "#C1C7CD",
587
- // gray-6
588
- backgroundElevated: "#FFFFFF",
589
- text: "#292E32",
590
- // gray-12
591
- textSecondary: "#57616B",
592
- // gray-10
593
- textTertiary: "#7B8793",
594
- // gray-8
595
- textQuaternary: "#9DA6AF",
596
- // gray-7
597
- textLight: "#C1C7CD",
598
- placeholder: "#9DA6AF",
599
- border: "#E6E8EA",
600
- // gray-4
601
- borderHover: "#C1C7CD",
602
- borderLight: "#F1F2F4",
603
- messageBackground: "#FFFFFF",
604
- codeBackground: "#F1F2F4",
605
- // 基于 slate-gray 调色 #292E32 (RGB 41, 46, 50) 的有机冷调阴影
606
- shadowLight: "rgba(41, 46, 50, 0.05)",
607
- shadowMedium: "rgba(41, 46, 50, 0.09)",
608
- shadowHeavy: "rgba(41, 46, 50, 0.15)",
609
- textHeading: "#292E32",
610
- textOnPrimary: "#FFFFFF"
611
- },
612
- // dim 是 mono 的"主"暗态:用 open-props 经典 slate-gray 暗色(gray-12..9)做画布,
613
- // 完美对应参考图中的深石墨色/冷灰色调,对比极强、层次细腻。
614
- dark: {
615
- // open-props: --orange-3 = #FFD599, --orange-4 = #FFBF66, --orange-5 = #FFAA33
616
- primary: "#FFBF66",
617
- primaryLight: "#FFD599",
618
- primaryDark: "#FFAA33",
619
- primaryGradient: "linear-gradient(135deg, #FFBF66, #FFAA33)",
620
- primaryGhost: "rgba(255,191,102,0.12)",
621
- primaryHover: "rgba(255,191,102,0.18)",
622
- borderAccent: "#FFAA33",
623
- success: "#4ADE80",
624
- warning: "#FCD34D",
625
- info: "#60A5FA",
626
- error: "#F87171",
627
- // open-props 冷系 slate-gray 暗色画布(H=210, S=10%)
628
- background: "#292E32",
629
- // gray-12
630
- backgroundSecondary: "#3E454C",
631
- // gray-11
632
- backgroundTertiary: "#57616B",
633
- // gray-10
634
- backgroundGhost: "rgba(41,46,50,0.94)",
635
- backgroundHover: "#4F5862",
636
- // ~gray-10.5
637
- backgroundSelected: "#6E7A87",
638
- // gray-9
639
- backgroundElevated: "#3E454C",
640
- text: "#EBEDEF",
641
- // gray-3
642
- textSecondary: "#DDE0E3",
643
- // gray-5
644
- textTertiary: "#C1C7CD",
645
- // gray-6
646
- textQuaternary: "#7B8793",
647
- // gray-8
648
- textLight: "#3E454C",
649
- placeholder: "#7B8793",
650
- // 边框必须比所在表面亮一档,否则夜间卡片/分割线全部融进背景
651
- border: "#4A525A",
652
- borderHover: "#6E7A87",
653
- borderLight: "#343A40",
654
- messageBackground: "#3E454C",
655
- codeBackground: "#1A1D20",
656
- // 略深于 canvas 的冷墨色
657
- // 基于深 slate-gray #0F1113 (RGB 15, 17, 19) 的有机阴影,在冷深色背景上极其细腻浮空
658
- shadowLight: "rgba(15, 17, 19, 0.28)",
659
- shadowMedium: "rgba(15, 17, 19, 0.45)",
660
- shadowHeavy: "rgba(15, 17, 19, 0.65)",
661
- textHeading: "#F1F2F4",
662
- // 近白标题;橙色 heading 在夜间大标题上过于突兀
663
- textOnPrimary: "#2E2E2E"
664
- }
665
- };
666
- var catppuccin = {
667
- // 保留 catppuccin 的柔和圆角 + 弹性缓动;light surface 沿用 GitHub Light palette,
668
- // light accent 为品牌海蓝(非 GitHub 蓝),dark 为 Catppuccin Mocha。合成后名字/位次不变;默认主题已改为 nature(2026-10)。
669
- // Reviewer 改进:dark textTertiary/quaternary 提亮达 WCAG AA;light warning 改琥珀色;
670
- // light backgroundElevated 拉开与画布的层级,大圆角浮层不再粘连。
671
- meta: { radiusBoost: 2, motionEase: "cubic-bezier(0.22, 1, 0.36, 1)" },
672
- light: {
673
- // 纯白 canvas + 海蓝 accent(#006EDC:白字 4.93:1,#F6F8FA 上 4.63:1;品牌见 docs/brand-outdoor-aesthetic.md)
674
- primary: "#006EDC",
675
- primaryLight: "#0874DC",
676
- primaryDark: "#0052AD",
677
- primaryGradient: "linear-gradient(135deg, #006EDC, #0874DC)",
678
- primaryGhost: "rgba(0,110,220,0.08)",
679
- primaryHover: "rgba(0,110,220,0.10)",
680
- borderAccent: "#73BEFF",
681
- success: "#116329",
682
- warning: "#9A6700",
683
- info: "#006EDC",
684
- error: "#CF222E",
685
- background: "#FFFFFF",
686
- backgroundSecondary: "#F6F8FA",
687
- backgroundTertiary: "#E8ECF0",
688
- backgroundGhost: "rgba(255,255,255,0.94)",
689
- backgroundHover: "#E8ECF0",
690
- backgroundSelected: "#D0D7DE",
691
- backgroundElevated: "#F6F8FA",
692
- text: "#1F2328",
693
- textSecondary: "#57606A",
694
- textTertiary: "#6E7781",
695
- textQuaternary: "#8C959F",
696
- textLight: "#D0D7DE",
697
- placeholder: "#6E7781",
698
- border: "#D0D7DE",
699
- borderHover: "#B1BAC4",
700
- borderLight: "#D8DEE4",
701
- messageBackground: "#F6F8FA",
702
- codeBackground: "#F6F8FA",
703
- shadowLight: "rgba(0,0,0,0.04)",
704
- shadowMedium: "rgba(0,0,0,0.08)",
705
- shadowHeavy: "rgba(0,0,0,0.14)",
706
- textOnPrimary: "#FFFFFF"
707
- },
708
- dark: {
709
- // Catppuccin Mocha — 柔和夜间色调(告别高对比刺眼黑白,偏向 Ghostty Catppuccin Mocha)
710
- primary: "#89B4FA",
711
- primaryLight: "#B4BEFE",
712
- primaryDark: "#74C7EC",
713
- primaryGradient: "linear-gradient(135deg, #89B4FA, #B4BEFE)",
714
- primaryGhost: "rgba(137,180,250,0.12)",
715
- primaryHover: "rgba(137,180,250,0.16)",
716
- borderAccent: "#89B4FA",
717
- success: "#A6E3A1",
718
- warning: "#F9E2AF",
719
- info: "#89B4FA",
720
- error: "#F38BA8",
721
- background: "#1E1E2E",
722
- backgroundSecondary: "#181825",
723
- backgroundTertiary: "#313244",
724
- backgroundGhost: "rgba(30,30,46,0.94)",
725
- backgroundHover: "#313244",
726
- backgroundSelected: "#45475A",
727
- backgroundElevated: "#181825",
728
- text: "#CDD6F4",
729
- textSecondary: "#BAC2DE",
730
- textTertiary: "#A6ADC8",
731
- textQuaternary: "#6C7086",
732
- textLight: "#45475A",
733
- placeholder: "#6C7086",
734
- border: "#313244",
735
- borderHover: "#45475A",
736
- borderLight: "#181825",
737
- messageBackground: "#181825",
738
- codeBackground: "#11111B",
739
- shadowLight: "rgba(17,17,27,0.22)",
740
- shadowMedium: "rgba(17,17,27,0.36)",
741
- shadowHeavy: "rgba(17,17,27,0.52)",
742
- textHeading: "#CDD6F4",
743
- textOnPrimary: "#1E1E2E"
744
- }
745
- };
746
- var nature = {
747
- meta: { radiusBoost: 2, motionEase: "cubic-bezier(0.22, 1, 0.36, 1)" },
748
- light: {
749
- primary: "#1A5FA4",
750
- primaryLight: "#2879CD",
751
- // --hl-blue
752
- primaryDark: "#154F8A",
753
- primaryGradient: "linear-gradient(135deg, #1A5FA4, #2879CD)",
754
- primaryGhost: "rgba(40,121,205,0.08)",
755
- primaryHover: "rgba(40,121,205,0.12)",
756
- borderAccent: "#8DB8E4",
757
- success: "#2F6B36",
758
- // --hl-green-ink(paper 5.79:1)
759
- warning: "#8A6320",
760
- // --hl-sand 压暗(paper 4.89:1)
761
- info: "#1A5FA4",
762
- error: "#B3361F",
763
- // --hl-danger 压暗(paper 5.48:1,surface-sub 4.98:1)
764
- background: "#FAF8F4",
765
- // --hl-paper
766
- backgroundSecondary: "#F3F0EA",
767
- // --hl-surface-sub
768
- backgroundTertiary: "#EBE7DF",
769
- backgroundGhost: "rgba(250,248,244,0.94)",
770
- backgroundHover: "#EBE7DF",
771
- backgroundSelected: "#E4DFD5",
772
- backgroundElevated: "#FFFEFB",
773
- // --hl-surface
774
- text: "#1F2733",
775
- // --hl-ink
776
- textSecondary: "#5B6472",
777
- // --hl-muted
778
- textTertiary: "#5F6773",
779
- // paper 5.17:1 / surface-sub 4.69:1(侧栏 11px 分组标题落在 surface-sub 上,需过 AA)
780
- textQuaternary: "#8A8F96",
781
- textLight: "#E0DFDD",
782
- placeholder: "#5F6773",
783
- border: "#E0DFDD",
784
- // --hl-line:ink 12% on paper
785
- borderHover: "#CACAC9",
786
- // ink 22% on paper
787
- borderLight: "#EBE9E7",
788
- // ink 7% on paper
789
- messageBackground: "#F3F0EA",
790
- codeBackground: "#FFFEFB",
791
- shadowLight: "rgba(120,90,60,0.06)",
792
- // --hl-shadow 调性
793
- shadowMedium: "rgba(120,90,60,0.10)",
794
- shadowHeavy: "rgba(120,90,60,0.16)",
795
- textHeading: "#1F2733",
796
- textOnPrimary: "#FFFEFA"
797
- // --hl-on-ink
798
- },
799
- dark: {
800
- primary: "#6AA8EA",
801
- // --hl-blue(夜)
802
- primaryLight: "#8FBEF0",
803
- primaryDark: "#4F93DC",
804
- primaryGradient: "linear-gradient(135deg, #6AA8EA, #8FBEF0)",
805
- primaryGhost: "rgba(106,168,234,0.12)",
806
- primaryHover: "rgba(106,168,234,0.16)",
807
- borderAccent: "#6AA8EA",
808
- success: "#8FD09B",
809
- // --hl-green-ink(夜)
810
- warning: "#D9B26A",
811
- // --hl-sand(夜)
812
- info: "#6AA8EA",
813
- error: "#F08A7A",
814
- // --hl-danger(夜)
815
- background: "#1C1B20",
816
- // --hl-paper(夜)
817
- backgroundSecondary: "#25242A",
818
- // --hl-surface(夜)
819
- backgroundTertiary: "#2E2C34",
820
- // --hl-surface-sub(夜)
821
- backgroundGhost: "rgba(28,27,32,0.94)",
822
- backgroundHover: "#2E2C34",
823
- backgroundSelected: "#38363F",
824
- backgroundElevated: "#25242A",
825
- text: "#ECE6DC",
826
- // --hl-ink(夜)
827
- textSecondary: "#C9C2B6",
828
- // --hl-nav(夜)
829
- textTertiary: "#A7A197",
830
- // --hl-muted(夜)
831
- textQuaternary: "#8F8A82",
832
- textLight: "#38363F",
833
- placeholder: "#8F8A82",
834
- border: "#353337",
835
- // ink 12% on paper(夜)
836
- borderHover: "#4A4849",
837
- borderLight: "#2B292D",
838
- messageBackground: "#25242A",
839
- codeBackground: "#16151A",
840
- shadowLight: "rgba(0,0,0,0.22)",
841
- shadowMedium: "rgba(0,0,0,0.36)",
842
- shadowHeavy: "rgba(0,0,0,0.52)",
843
- textHeading: "#ECE6DC",
844
- textOnPrimary: "#1C1B20"
845
- // --hl-on-ink(夜)
846
- }
847
- };
848
-
849
- // packages/app/theme/theme.config.ts
850
- var THEME_COLORS = {
851
- nature,
852
- catppuccin,
853
- trail,
854
- wave,
855
- iris,
856
- rose,
857
- mono
858
- };
859
- var THEME_NAME_ALIASES = {
860
- // 原核心主题被精简
861
- ocean: "catppuccin",
862
- forest: "wave",
863
- neutral: "catppuccin",
864
- // 原向后兼容 alias
865
- blue: "catppuccin",
866
- purple: "iris",
867
- green: "wave",
868
- orange: "mono",
869
- yellow: "mono",
870
- graphite: "catppuccin",
871
- pink: "rose",
872
- red: "mono",
873
- mocha: "catppuccin"
874
- };
875
-
876
- // packages/app/theme/themeModeBootstrap.ts
877
- var SYSTEM_DARK_MEDIA_QUERY = "(prefers-color-scheme: dark)";
878
- var normalizeThemeName = (value) => {
879
- if (typeof value !== "string") return void 0;
880
- const canonicalName = value in THEME_NAME_ALIASES ? THEME_NAME_ALIASES[value] : value;
881
- return canonicalName in THEME_COLORS ? canonicalName : void 0;
882
- };
883
- var resolveThemeModeIsDark = (themeMode, systemPrefersDark) => themeMode === "dark" ? true : themeMode === "light" ? false : systemPrefersDark;
884
-
885
- // packages/app/settings/settingActions.ts
886
- var updateSettingsState = createAction(
887
- "settings/_updateSettingsState"
888
- );
889
-
890
- // packages/app/settings/dbActionThunks.ts
891
- var getDefaultSettingDbActionThunks = () => ({
892
- readAndWait,
893
- patch,
894
- upsert,
895
- write
896
- });
897
- var settingDbActionThunksOverrideKey = Symbol.for(
898
- "bun-nolo.app.settings.dbActionThunksOverride"
899
- );
900
- var getSettingDbActionThunks = () => {
901
- const globalOverride = globalThis[settingDbActionThunksOverrideKey];
902
- return globalOverride ?? getDefaultSettingDbActionThunks();
903
- };
904
-
905
- // packages/app/settings/settingsRecord.ts
906
- var SETTINGS_RECORD_SCHEMA_VERSION = 1;
907
- var withSettingsRecordSchema = (changes) => ({
908
- ...changes,
909
- schemaVersion: SETTINGS_RECORD_SCHEMA_VERSION
910
- });
911
-
912
- // packages/app/settings/settingPersistence.ts
913
- var normalizeSettingChanges = (changes) => {
914
- let normalizedChanges = changes;
915
- if (hasOwn(normalizedChanges, "defaultAgentId")) {
916
- normalizedChanges = {
917
- ...normalizedChanges,
918
- defaultAgentId: normalizeDefaultAgentIdSetting(
919
- normalizedChanges.defaultAgentId
920
- )
921
- };
922
- }
923
- if (hasOwn(normalizedChanges, "defaultSpaceId")) {
924
- normalizedChanges = omitKeys(normalizedChanges, [
925
- "defaultSpaceId"
926
- ]);
927
- }
928
- if (hasOwn(normalizedChanges, "themeName")) {
929
- const themeName = normalizeThemeName(normalizedChanges.themeName);
930
- normalizedChanges = themeName ? { ...normalizedChanges, themeName } : omitKeys(normalizedChanges, ["themeName"]);
931
- }
932
- if (hasOwn(normalizedChanges, "fontPreset")) {
933
- const fontPreset = normalizeFontPreset(normalizedChanges.fontPreset);
934
- normalizedChanges = fontPreset ? { ...normalizedChanges, fontPreset } : omitKeys(normalizedChanges, ["fontPreset"]);
935
- }
936
- if (hasOwn(normalizedChanges, "userTonePreset")) {
937
- normalizedChanges = {
938
- ...normalizedChanges,
939
- userTonePreset: normalizeTonePresetSetting(
940
- normalizedChanges.userTonePreset
941
- )
942
- };
943
- }
944
- if (hasOwn(normalizedChanges, "knowledgeCaptureLevel")) {
945
- normalizedChanges = {
946
- ...normalizedChanges,
947
- knowledgeCaptureLevel: normalizePolicyLevelSetting(
948
- normalizedChanges.knowledgeCaptureLevel,
949
- DEFAULT_USER_PREFERENCE_PROFILE.knowledgeCaptureLevel
950
- )
951
- };
952
- }
953
- if (hasOwn(normalizedChanges, "spaceContextLevel")) {
954
- normalizedChanges = {
955
- ...normalizedChanges,
956
- spaceContextLevel: normalizePolicyLevelSetting(
957
- normalizedChanges.spaceContextLevel,
958
- DEFAULT_USER_PREFERENCE_PROFILE.spaceContextLevel
959
- )
960
- };
961
- }
962
- if (hasOwn(normalizedChanges, "autoApproveSelfUpdateFields")) {
963
- normalizedChanges = {
964
- ...normalizedChanges,
965
- autoApproveSelfUpdateFields: normalizeAgentUpdateFieldList(
966
- normalizedChanges.autoApproveSelfUpdateFields
967
- )
968
- };
969
- }
970
- if (hasOwn(normalizedChanges, "systemBuiltinSkills")) {
971
- normalizedChanges = {
972
- ...normalizedChanges,
973
- systemBuiltinSkills: normalizeSystemBuiltinSkills(
974
- normalizedChanges.systemBuiltinSkills,
975
- DEFAULT_SYSTEM_AGENT_CAPABILITIES
976
- )
977
- };
978
- }
979
- return normalizedChanges;
980
- };
981
- var LOCAL_APPEARANCE_KEY_NAMES = [
982
- "themeName",
983
- "themeMode",
984
- "isDark",
985
- "density",
986
- "fontPreset"
987
- ];
988
- var GUEST_UPDATABLE_KEY_NAMES = [
989
- ...LOCAL_APPEARANCE_KEY_NAMES,
990
- "sidebarWidth"
991
- ];
992
- var LOCAL_FIRST_APPEARANCE_KEYS = Object.freeze(
993
- Object.fromEntries(
994
- LOCAL_APPEARANCE_KEY_NAMES.map((key) => [key, true])
995
- )
996
- );
997
- var GUEST_UPDATABLE_KEYS = Object.freeze(
998
- Object.fromEntries(
999
- GUEST_UPDATABLE_KEY_NAMES.map((key) => [key, true])
1000
- )
1001
- );
1002
- var isGuestUpdatableKey = (key) => key in GUEST_UPDATABLE_KEYS;
1003
- var isLocalFirstAppearanceChange = (changes) => {
1004
- const keys = Object.keys(changes);
1005
- if (keys.length === 0) return false;
1006
- return keys.every(
1007
- (key) => isGuestUpdatableKey(key)
1008
- );
1009
- };
1010
- var stripRegisterBackedFieldsFromSettingsWrite = (changes) => {
1011
- return omitKeys(changes, [
1012
- "autoApproveCredits",
1013
- "defaultSpaceId",
1014
- "userAuthorityRegistry",
1015
- ...LOCAL_APPEARANCE_KEY_NAMES
1016
- ]);
1017
- };
1018
- var sanitizeStoredSettingsRecord = (settingsRecord) => {
1019
- if (!settingsRecord || typeof settingsRecord !== "object") {
1020
- return null;
1021
- }
1022
- const record = settingsRecord;
1023
- const sanitizedSettings = omitKeys(record, [
1024
- "autoApproveCredits",
1025
- "defaultSpaceId",
1026
- "schemaVersion",
1027
- ...LOCAL_APPEARANCE_KEY_NAMES
1028
- ]);
1029
- return Object.keys(sanitizedSettings).length > 0 ? sanitizedSettings : null;
1030
- };
1031
- var hydrateStoredSettings = ({
1032
- userId,
1033
- settingsRecord,
1034
- authorityHomeServer
1035
- }) => {
1036
- const record = settingsRecord ?? {};
1037
- const resolvedDefaultAgentId = normalizeDefaultAgentIdSetting(record.defaultAgentId) ?? SYSTEM_DEFAULT_AGENT_ID;
1038
- const baseSettings = sanitizeStoredSettingsRecord(settingsRecord) ?? {};
1039
- const normalizedAuthorityHome = normalizeAuthorityHomeServerSetting(authorityHomeServer);
1040
- const existingRegistry = asRecordOrEmpty(
1041
- baseSettings.userAuthorityRegistry
1042
- );
1043
- const userAuthorityRegistry = userId && normalizedAuthorityHome ? { ...existingRegistry, [userId]: normalizedAuthorityHome } : existingRegistry;
1044
- const userAuthorityRegistryIsEmpty = Object.keys(userAuthorityRegistry).length === 0;
1045
- const hydratedSettings = {
1046
- ...baseSettings,
1047
- // 服务端独占字段:只读回显(缺失时沿用初始值 0,非法值按 0)
1048
- ...hasOwn(record, "autoApproveCredits") ? { autoApproveCredits: typeof record.autoApproveCredits === "number" && Number.isFinite(record.autoApproveCredits) && record.autoApproveCredits >= 0 ? record.autoApproveCredits : 0 } : {},
1049
- ...userAuthorityRegistryIsEmpty ? {} : { userAuthorityRegistry },
1050
- defaultAgentId: resolvedDefaultAgentId
1051
- };
1052
- return Object.keys(hydratedSettings).length > 0 ? hydratedSettings : null;
1053
- };
1054
- var buildSettingsPersistencePlan = ({
1055
- userId,
1056
- currentSettings,
1057
- changes,
1058
- previousDefaultAgentRecord
1059
- }) => {
1060
- const normalizedChanges = normalizeSettingChanges(changes);
1061
- const persistedChanges = stripRegisterBackedFieldsFromSettingsWrite(normalizedChanges);
1062
- const previousDefaultAgentId = normalizeDefaultAgentIdSetting(currentSettings.defaultAgentId) ?? SYSTEM_DEFAULT_AGENT_ID;
1063
- const nextDefaultAgentId = normalizeDefaultAgentIdSetting(normalizedChanges.defaultAgentId) ?? null;
1064
- const previousDefaultAgentValue = readUserPreferenceRegisterValue(
1065
- previousDefaultAgentRecord,
1066
- USER_PREFERENCE_NAMES.DEFAULT_AGENT
1067
- ) ?? null;
1068
- const defaultAgentRegisterWrite = hasOwn(normalizedChanges, "defaultAgentId") && previousDefaultAgentId !== (nextDefaultAgentId ?? SYSTEM_DEFAULT_AGENT_ID) && (!previousDefaultAgentRecord || previousDefaultAgentValue !== nextDefaultAgentId) ? {
1069
- customKey: createUserPreferenceKey.defaultAgent(userId),
1070
- data: buildDefaultAgentPreferenceRegisterRecord({
1071
- userId,
1072
- defaultAgentId: nextDefaultAgentId,
1073
- previousRecord: previousDefaultAgentRecord
1074
- })
1075
- } : null;
1076
- const settingsPatch = Object.keys(persistedChanges).length > 0 ? {
1077
- dbKey: createUserKey.settings(userId),
1078
- changes: withSettingsRecordSchema(
1079
- persistedChanges
1080
- )
1081
- } : null;
1082
- return {
1083
- normalizedChanges,
1084
- defaultAgentRegisterWrite,
1085
- settingsPatch
1086
- };
1087
- };
1088
- var getCachedDefaultAgentRegisterRecord = (getState, registerKey) => {
1089
- const record = getState().db.entities[registerKey];
1090
- if (!record || typeof record !== "object") return null;
1091
- return record;
1092
- };
1093
- var persistDefaultAgentRegister = async (dispatch, getState, userId, value) => {
1094
- const registerKey = createUserPreferenceKey.defaultAgent(userId);
1095
- let previousRecord = getCachedDefaultAgentRegisterRecord(getState, registerKey);
1096
- if (!previousRecord) {
1097
- previousRecord = await dispatch(
1098
- getSettingDbActionThunks().readAndWait(registerKey)
1099
- ).unwrap().catch(() => null);
1100
- }
1101
- const previousValue = readUserPreferenceRegisterValue(
1102
- previousRecord,
1103
- USER_PREFERENCE_NAMES.DEFAULT_AGENT
1104
- ) ?? null;
1105
- if (previousRecord && previousValue === value) {
1106
- return;
1107
- }
1108
- await dispatch(
1109
- getSettingDbActionThunks().write({
1110
- customKey: registerKey,
1111
- data: buildDefaultAgentPreferenceRegisterRecord({
1112
- userId,
1113
- defaultAgentId: value,
1114
- previousRecord
1115
- })
1116
- })
1117
- ).unwrap();
1118
- };
1119
-
1120
- // packages/app/settings/settingThunks.ts
1121
- var getSettings = createAsyncThunk("settings/getSettings", async (_, { dispatch, getState }) => {
1122
- const userId = selectIdentityUserId(getState());
1123
- if (!userId) return null;
1124
- const settingsKey = createUserKey.settings(userId);
1125
- const authorityHomeKey = createUserPreferenceKey.authorityHome(userId);
1126
- const [settingsRecord, authorityHomeRecord] = await Promise.all([
1127
- dispatch(getSettingDbActionThunks().readAndWait(settingsKey)).unwrap().catch(() => null),
1128
- dispatch(getSettingDbActionThunks().readAndWait(authorityHomeKey)).unwrap().catch(() => null)
1129
- ]);
1130
- const authorityHomeServer = readUserPreferenceRegisterValue(
1131
- authorityHomeRecord,
1132
- USER_PREFERENCE_NAMES.AUTHORITY_HOME
1133
- ) ?? null;
1134
- const hydrated = hydrateStoredSettings({
1135
- userId,
1136
- settingsRecord,
1137
- authorityHomeServer
1138
- });
1139
- if (hydrated) {
1140
- const normalizedPayload = normalizeSettingChanges(
1141
- hydrated
1142
- );
1143
- const { currentServer: _ignored, ...settingsToApply } = normalizedPayload;
1144
- dispatch(updateSettingsState(settingsToApply));
1145
- }
1146
- return hydrated;
1147
- });
1148
- var setSettings = createAsyncThunk("settings/setSettings", async (changes, { dispatch, getState }) => {
1149
- const currentSettings = getState().settings;
1150
- const normalizedChanges = normalizeSettingChanges(changes);
1151
- const previousDefaultAgentId = normalizeDefaultAgentIdSetting(currentSettings.defaultAgentId) ?? SYSTEM_DEFAULT_AGENT_ID;
1152
- const userId = selectIdentityUserId(getState());
1153
- if (!userId) {
1154
- const hasAppearanceChanges = Object.keys(normalizedChanges).length > 0;
1155
- if (hasAppearanceChanges) {
1156
- if (!isLocalFirstAppearanceChange(normalizedChanges)) {
1157
- throw new Error("User not found for persisting settings.");
1158
- }
1159
- } else {
1160
- throw new Error("User not found for persisting settings.");
1161
- }
1162
- dispatch(updateSettingsState(normalizedChanges));
1163
- return normalizedChanges;
1164
- }
1165
- const persistencePlan = buildSettingsPersistencePlan({
1166
- userId,
1167
- currentSettings,
1168
- changes: normalizedChanges,
1169
- previousDefaultAgentRecord: null
1170
- });
1171
- dispatch(updateSettingsState(persistencePlan.normalizedChanges));
1172
- const nextDefaultAgentId = normalizeDefaultAgentIdSetting(
1173
- persistencePlan.normalizedChanges.defaultAgentId
1174
- ) ?? null;
1175
- if (hasOwn(changes, "defaultAgentId") && previousDefaultAgentId !== (nextDefaultAgentId ?? SYSTEM_DEFAULT_AGENT_ID)) {
1176
- await persistDefaultAgentRegister(
1177
- dispatch,
1178
- getState,
1179
- userId,
1180
- nextDefaultAgentId
1181
- );
1182
- }
1183
- if (persistencePlan.settingsPatch) {
1184
- await dispatch(
1185
- getSettingDbActionThunks().upsert({
1186
- dbKey: persistencePlan.settingsPatch.dbKey,
1187
- data: persistencePlan.settingsPatch.changes
1188
- })
1189
- ).unwrap();
1190
- }
1191
- return persistencePlan.normalizedChanges;
1192
- });
1193
- var changeTheme = createAsyncThunk(
1194
- "settings/changeTheme",
1195
- async (themeName, { dispatch }) => dispatch(setSettings({ themeName })).unwrap()
1196
- );
1197
- var changeDensity = createAsyncThunk(
1198
- "settings/changeDensity",
1199
- async (density, { dispatch }) => dispatch(setSettings({ density })).unwrap()
1200
- );
1201
- var changeFontPreset = createAsyncThunk(
1202
- "settings/changeFontPreset",
1203
- async (fontPreset, { dispatch }) => {
1204
- const normalized = normalizeFontPreset(fontPreset) ?? fontPreset;
1205
- return dispatch(setSettings({ fontPreset: normalized })).unwrap();
1206
- }
1207
- );
1208
- var changeDarkMode = createAsyncThunk(
1209
- "settings/changeDarkMode",
1210
- async (isDark, { dispatch }) => dispatch(
1211
- setSettings({ isDark, themeMode: isDark ? "dark" : "light" })
1212
- ).unwrap()
1213
- );
1214
- var toggleShowThinking = createAsyncThunk(
1215
- "settings/toggleShowThinking",
1216
- async (_, { dispatch, getState }) => {
1217
- const currentShowThinking = getState().settings.showThinking;
1218
- return dispatch(
1219
- setSettings({ showThinking: !currentShowThinking })
1220
- ).unwrap();
1221
- }
1222
- );
1223
- var setThemeFollowsSystem = createAsyncThunk(
1224
- "settings/setThemeFollowsSystem",
1225
- async (follows, { dispatch }) => dispatch(setSettings({ themeMode: follows ? "system" : "light" })).unwrap()
1226
- );
1227
- var setSidebarWidth = createAsyncThunk(
1228
- "settings/setSidebarWidth",
1229
- async (sidebarWidth, { dispatch }) => dispatch(setSettings({ sidebarWidth })).unwrap()
1230
- );
1231
- var toggleEnableReadCurrentSpace = createAsyncThunk(
1232
- "settings/toggleEnableReadCurrentSpace",
1233
- async (_, { dispatch, getState }) => {
1234
- const current = getState().settings.enableReadCurrentSpace;
1235
- return dispatch(
1236
- setSettings({
1237
- enableReadCurrentSpace: !current,
1238
- spaceContextLevel: current ? 1 : DEFAULT_USER_PREFERENCE_PROFILE.spaceContextLevel
1239
- })
1240
- ).unwrap();
1241
- }
1242
- );
1243
- var setEditorDefaultMode = createAsyncThunk(
1244
- "settings/setEditorDefaultMode",
1245
- async (mode, { dispatch }) => dispatch(setSettings({ editorDefaultMode: mode })).unwrap()
1246
- );
1247
- var setEditorLightCodeTheme = createAsyncThunk(
1248
- "settings/setEditorLightCodeTheme",
1249
- async (theme, { dispatch }) => dispatch(setSettings({ editorLightCodeTheme: theme })).unwrap()
1250
- );
1251
- var setEditorDarkCodeTheme = createAsyncThunk(
1252
- "settings/setEditorDarkCodeTheme",
1253
- async (theme, { dispatch }) => dispatch(setSettings({ editorDarkCodeTheme: theme })).unwrap()
1254
- );
1255
- var setEditorCodeTheme = createAsyncThunk(
1256
- "settings/setEditorCodeTheme",
1257
- async (theme, { dispatch }) => dispatch(
1258
- setSettings({
1259
- editorLightCodeTheme: theme,
1260
- editorDarkCodeTheme: theme
1261
- })
1262
- ).unwrap()
1263
- );
1264
- var toggleEditorWordCount = createAsyncThunk(
1265
- "settings/toggleEditorWordCount",
1266
- async (_, { dispatch, getState }) => {
1267
- const current = getState().settings.editorWordCountEnabled;
1268
- return dispatch(setSettings({ editorWordCountEnabled: !current })).unwrap();
1269
- }
1270
- );
1271
- var toggleEditorShortcut = createAsyncThunk(
1272
- "settings/toggleEditorShortcut",
1273
- async (key, { dispatch, getState }) => {
1274
- const currentShortcuts = getState().settings.editorShortcuts;
1275
- const newShortcuts = {
1276
- ...currentShortcuts,
1277
- [key]: !currentShortcuts[key]
1278
- };
1279
- return dispatch(setSettings({ editorShortcuts: newShortcuts })).unwrap();
1280
- }
1281
- );
1282
- var setEditorFontSize = createAsyncThunk(
1283
- "settings/setEditorFontSize",
1284
- async (fontSize, { dispatch }) => dispatch(setSettings({ editorFontSize: fontSize })).unwrap()
1285
- );
1286
- var toggleEditorAutoSave = createAsyncThunk(
1287
- "settings/toggleEditorAutoSave",
1288
- async (_, { dispatch, getState }) => {
1289
- const current = getState().settings.editorAutoSave;
1290
- return dispatch(setSettings({ editorAutoSave: !current })).unwrap();
1291
- }
1292
- );
1293
- var setEditorAutoSaveInterval = createAsyncThunk(
1294
- "settings/setEditorAutoSaveInterval",
1295
- async (interval, { dispatch }) => dispatch(setSettings({ editorAutoSaveInterval: interval })).unwrap()
1296
- );
1297
- var setGlobalPrompt = createAsyncThunk(
1298
- "settings/setGlobalPrompt",
1299
- async (prompt, { dispatch }) => dispatch(setSettings({ globalPrompt: prompt })).unwrap()
1300
- );
1301
- var setUserTonePreset = createAsyncThunk(
1302
- "settings/setUserTonePreset",
1303
- async (tone, { dispatch }) => dispatch(setSettings({ userTonePreset: tone })).unwrap()
1304
- );
1305
- var setKnowledgeCaptureLevel = createAsyncThunk(
1306
- "settings/setKnowledgeCaptureLevel",
1307
- async (level, { dispatch }) => dispatch(setSettings({ knowledgeCaptureLevel: level })).unwrap()
1308
- );
1309
- var setSpaceContextLevel = createAsyncThunk(
1310
- "settings/setSpaceContextLevel",
1311
- async (level, { dispatch }) => dispatch(
1312
- setSettings({
1313
- spaceContextLevel: level,
1314
- enableReadCurrentSpace: level > 1
1315
- })
1316
- ).unwrap()
1317
- );
1318
- var setAiRecentContentLimit = createAsyncThunk(
1319
- "settings/setAiRecentContentLimit",
1320
- async (limit, { dispatch }) => dispatch(setSettings({ aiRecentContentLimit: limit })).unwrap()
1321
- );
1322
- var setMaxExecutionTime = createAsyncThunk(
1323
- "settings/setMaxExecutionTime",
1324
- async (time, { dispatch }) => dispatch(setSettings({ maxExecutionTime: time })).unwrap()
1325
- );
1326
- var setDefaultAgentId = createAsyncThunk(
1327
- "settings/setDefaultAgentId",
1328
- async (agentId, { dispatch }) => dispatch(
1329
- setSettings({
1330
- defaultAgentId: resolveDefaultAgentIdSetting(agentId)
1331
- })
1332
- ).unwrap()
1333
- );
1334
- var setThemeMode = createAsyncThunk(
1335
- "settings/setThemeMode",
1336
- async (mode, { dispatch }) => {
1337
- const changes = { themeMode: mode };
1338
- const systemPrefersDark = typeof window !== "undefined" && window.matchMedia(SYSTEM_DARK_MEDIA_QUERY).matches;
1339
- changes.isDark = resolveThemeModeIsDark(mode, systemPrefersDark);
1340
- return dispatch(setSettings(changes)).unwrap();
1341
- }
1342
- );
1343
- export {
1344
- changeDarkMode,
1345
- changeDensity,
1346
- changeFontPreset,
1347
- changeTheme,
1348
- getSettings,
1349
- setAiRecentContentLimit,
1350
- setDefaultAgentId,
1351
- setEditorAutoSaveInterval,
1352
- setEditorCodeTheme,
1353
- setEditorDarkCodeTheme,
1354
- setEditorDefaultMode,
1355
- setEditorFontSize,
1356
- setEditorLightCodeTheme,
1357
- setGlobalPrompt,
1358
- setKnowledgeCaptureLevel,
1359
- setMaxExecutionTime,
1360
- setSettings,
1361
- setSidebarWidth,
1362
- setSpaceContextLevel,
1363
- setThemeFollowsSystem,
1364
- setThemeMode,
1365
- setUserTonePreset,
1366
- toggleEditorAutoSave,
1367
- toggleEditorShortcut,
1368
- toggleEditorWordCount,
1369
- toggleEnableReadCurrentSpace,
1370
- toggleShowThinking
1371
- };