@talex-touch/utils 1.0.42 → 1.0.44

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 (233) hide show
  1. package/.eslintcache +1 -0
  2. package/__tests__/cloud-sync-sdk.test.ts +442 -0
  3. package/__tests__/icons/icons.test.ts +84 -0
  4. package/__tests__/plugin-sdk-lifecycle.test.ts +130 -0
  5. package/__tests__/power-sdk.test.ts +143 -0
  6. package/__tests__/preset-export-types.test.ts +108 -0
  7. package/__tests__/search/fuzzy-match.test.ts +137 -0
  8. package/__tests__/transport/port-policy.test.ts +44 -0
  9. package/__tests__/transport-domain-sdks.test.ts +152 -0
  10. package/__tests__/types/update.test.ts +67 -0
  11. package/account/account-sdk.ts +915 -0
  12. package/account/index.ts +2 -0
  13. package/account/types.ts +321 -0
  14. package/analytics/client.ts +136 -0
  15. package/analytics/index.ts +2 -0
  16. package/analytics/types.ts +156 -0
  17. package/animation/auto-resize.ts +322 -0
  18. package/animation/window-node.ts +26 -19
  19. package/auth/clerk-types.ts +12 -30
  20. package/auth/index.ts +0 -2
  21. package/auth/useAuthState.ts +6 -14
  22. package/base/index.ts +2 -0
  23. package/base/log-level.ts +105 -0
  24. package/channel/index.ts +170 -69
  25. package/cloud-sync/cloud-sync-sdk.ts +450 -0
  26. package/cloud-sync/index.ts +1 -0
  27. package/common/file-scan-utils.ts +17 -9
  28. package/common/index.ts +4 -0
  29. package/common/logger/index.ts +46 -0
  30. package/common/logger/logger-manager.ts +303 -0
  31. package/common/logger/module-logger.ts +270 -0
  32. package/common/logger/transport-logger.ts +234 -0
  33. package/common/logger/types.ts +93 -0
  34. package/common/search/gather.ts +48 -6
  35. package/common/search/index.ts +8 -0
  36. package/common/storage/constants.ts +13 -0
  37. package/common/storage/entity/app-settings.ts +245 -0
  38. package/common/storage/entity/index.ts +3 -0
  39. package/common/storage/entity/layout-atom-types.ts +147 -0
  40. package/common/storage/entity/openers.ts +1 -0
  41. package/common/storage/entity/preset-cloud-api.ts +132 -0
  42. package/common/storage/entity/preset-export-types.ts +256 -0
  43. package/common/storage/entity/shortcut-settings.ts +1 -0
  44. package/common/storage/shortcut-storage.ts +11 -0
  45. package/common/utils/clone-diagnostics.ts +105 -0
  46. package/common/utils/file.ts +16 -8
  47. package/common/utils/index.ts +6 -2
  48. package/common/utils/payload-preview.ts +173 -0
  49. package/common/utils/polling.ts +167 -13
  50. package/common/utils/safe-path.ts +103 -0
  51. package/common/utils/safe-shell.ts +115 -0
  52. package/common/utils/task-queue.ts +4 -1
  53. package/core-box/builder/tuff-builder.ts +0 -1
  54. package/core-box/index.ts +1 -1
  55. package/core-box/recommendation.ts +38 -1
  56. package/core-box/tuff/tuff-dsl.ts +32 -0
  57. package/electron/download-manager.ts +10 -7
  58. package/electron/env-tool.ts +42 -40
  59. package/electron/index.ts +0 -1
  60. package/env/index.ts +156 -0
  61. package/eslint.config.js +55 -0
  62. package/i18n/index.ts +62 -0
  63. package/i18n/locales/en.json +226 -0
  64. package/i18n/locales/zh.json +226 -0
  65. package/i18n/message-keys.ts +236 -0
  66. package/i18n/resolver.ts +181 -0
  67. package/icons/index.ts +257 -0
  68. package/icons/svg.ts +69 -0
  69. package/index.ts +9 -1
  70. package/intelligence/client.ts +72 -42
  71. package/market/constants.ts +9 -5
  72. package/market/index.ts +1 -1
  73. package/market/types.ts +19 -4
  74. package/package.json +15 -5
  75. package/permission/index.ts +143 -46
  76. package/permission/legacy.ts +26 -0
  77. package/permission/registry.ts +304 -0
  78. package/permission/types.ts +164 -0
  79. package/plugin/channel.ts +68 -39
  80. package/plugin/index.ts +80 -7
  81. package/plugin/install.ts +3 -0
  82. package/plugin/log/types.ts +22 -5
  83. package/plugin/node/logger-manager.ts +11 -3
  84. package/plugin/node/logger.ts +24 -17
  85. package/plugin/preload.ts +25 -2
  86. package/plugin/providers/index.ts +4 -4
  87. package/plugin/providers/market-client.ts +6 -3
  88. package/plugin/providers/npm-provider.ts +22 -7
  89. package/plugin/providers/tpex-provider.ts +22 -8
  90. package/plugin/sdk/box-items.ts +14 -0
  91. package/plugin/sdk/box-sdk.ts +64 -0
  92. package/plugin/sdk/channel.ts +119 -4
  93. package/plugin/sdk/clipboard.ts +26 -12
  94. package/plugin/sdk/cloud-sync.ts +113 -0
  95. package/plugin/sdk/common.ts +19 -11
  96. package/plugin/sdk/core-box.ts +6 -15
  97. package/plugin/sdk/division-box.ts +160 -65
  98. package/plugin/sdk/examples/storage-onDidChange-example.js +5 -2
  99. package/plugin/sdk/feature-sdk.ts +111 -76
  100. package/plugin/sdk/flow.ts +146 -45
  101. package/plugin/sdk/hooks/bridge.ts +13 -6
  102. package/plugin/sdk/hooks/life-cycle.ts +35 -16
  103. package/plugin/sdk/index.ts +14 -3
  104. package/plugin/sdk/intelligence.ts +87 -0
  105. package/plugin/sdk/meta/README.md +179 -0
  106. package/plugin/sdk/meta-sdk.ts +244 -0
  107. package/plugin/sdk/notification.ts +9 -0
  108. package/plugin/sdk/plugin-info.ts +64 -0
  109. package/plugin/sdk/power.ts +155 -0
  110. package/plugin/sdk/recommend.ts +21 -0
  111. package/plugin/sdk/service/index.ts +12 -8
  112. package/plugin/sdk/sqlite.ts +141 -0
  113. package/plugin/sdk/storage.ts +2 -6
  114. package/plugin/sdk/system.ts +2 -9
  115. package/plugin/sdk/temp-files.ts +41 -0
  116. package/plugin/sdk/touch-sdk.ts +18 -0
  117. package/plugin/sdk/types.ts +44 -4
  118. package/plugin/sdk/window/index.ts +12 -9
  119. package/plugin/sdk-version.ts +231 -0
  120. package/preload/renderer.ts +3 -2
  121. package/renderer/hooks/arg-mapper.ts +16 -2
  122. package/renderer/hooks/index.ts +13 -0
  123. package/renderer/hooks/initialize.ts +2 -1
  124. package/renderer/hooks/use-agent-market-sdk.ts +7 -0
  125. package/renderer/hooks/use-agent-market.ts +106 -0
  126. package/renderer/hooks/use-agents-sdk.ts +7 -0
  127. package/renderer/hooks/use-app-sdk.ts +7 -0
  128. package/renderer/hooks/use-channel.ts +33 -4
  129. package/renderer/hooks/use-download-sdk.ts +21 -0
  130. package/renderer/hooks/use-intelligence-sdk.ts +7 -0
  131. package/renderer/hooks/use-intelligence-stats.ts +290 -0
  132. package/renderer/hooks/use-intelligence.ts +55 -214
  133. package/renderer/hooks/use-market-sdk.ts +16 -0
  134. package/renderer/hooks/use-notification-sdk.ts +7 -0
  135. package/renderer/hooks/use-permission-sdk.ts +7 -0
  136. package/renderer/hooks/use-permission.ts +325 -0
  137. package/renderer/hooks/use-platform-sdk.ts +7 -0
  138. package/renderer/hooks/use-plugin-sdk.ts +16 -0
  139. package/renderer/hooks/use-settings-sdk.ts +7 -0
  140. package/renderer/hooks/use-update-sdk.ts +21 -0
  141. package/renderer/index.ts +1 -0
  142. package/renderer/ref.ts +19 -10
  143. package/renderer/shared/components/SharedPluginDetailContent.vue +84 -0
  144. package/renderer/shared/components/SharedPluginDetailHeader.vue +116 -0
  145. package/renderer/shared/components/SharedPluginDetailMetaList.vue +39 -0
  146. package/renderer/shared/components/SharedPluginDetailReadme.vue +45 -0
  147. package/renderer/shared/components/SharedPluginDetailVersions.vue +98 -0
  148. package/renderer/shared/components/index.ts +5 -0
  149. package/renderer/shared/components/shims-vue.d.ts +5 -0
  150. package/renderer/shared/index.ts +2 -0
  151. package/renderer/shared/plugin-detail.ts +62 -0
  152. package/renderer/storage/app-settings.ts +3 -1
  153. package/renderer/storage/base-storage.ts +508 -82
  154. package/renderer/storage/intelligence-storage.ts +31 -40
  155. package/renderer/storage/openers.ts +3 -1
  156. package/renderer/storage/storage-subscription.ts +126 -42
  157. package/renderer/touch-sdk/env.ts +10 -10
  158. package/renderer/touch-sdk/index.ts +114 -18
  159. package/renderer/touch-sdk/terminal.ts +24 -13
  160. package/search/feature-matcher.ts +279 -0
  161. package/search/fuzzy-match.ts +64 -34
  162. package/search/index.ts +10 -0
  163. package/search/levenshtein-utils.ts +17 -11
  164. package/transport/errors.ts +310 -0
  165. package/transport/event/builder.ts +378 -0
  166. package/transport/event/index.ts +7 -0
  167. package/transport/event/types.ts +292 -0
  168. package/transport/events/index.ts +2670 -0
  169. package/transport/events/meta-overlay.ts +79 -0
  170. package/transport/events/types/agents.ts +177 -0
  171. package/transport/events/types/app-index.ts +9 -0
  172. package/transport/events/types/app.ts +475 -0
  173. package/transport/events/types/box-item.ts +222 -0
  174. package/transport/events/types/clipboard.ts +80 -0
  175. package/transport/events/types/core-box.ts +534 -0
  176. package/transport/events/types/device-idle.ts +7 -0
  177. package/transport/events/types/division-box.ts +99 -0
  178. package/transport/events/types/download.ts +115 -0
  179. package/transport/events/types/file-index.ts +73 -0
  180. package/transport/events/types/flow.ts +149 -0
  181. package/transport/events/types/index.ts +70 -0
  182. package/transport/events/types/market.ts +39 -0
  183. package/transport/events/types/meta-overlay.ts +184 -0
  184. package/transport/events/types/notification.ts +140 -0
  185. package/transport/events/types/permission.ts +90 -0
  186. package/transport/events/types/platform.ts +8 -0
  187. package/transport/events/types/plugin.ts +620 -0
  188. package/transport/events/types/sentry.ts +20 -0
  189. package/transport/events/types/storage.ts +208 -0
  190. package/transport/events/types/transport.ts +60 -0
  191. package/transport/events/types/tray.ts +16 -0
  192. package/transport/events/types/update.ts +78 -0
  193. package/transport/index.ts +139 -0
  194. package/transport/main.ts +2 -0
  195. package/transport/sdk/constants.ts +29 -0
  196. package/transport/sdk/domains/agents-market.ts +47 -0
  197. package/transport/sdk/domains/agents.ts +62 -0
  198. package/transport/sdk/domains/app.ts +48 -0
  199. package/transport/sdk/domains/disposable.ts +35 -0
  200. package/transport/sdk/domains/download.ts +139 -0
  201. package/transport/sdk/domains/index.ts +13 -0
  202. package/transport/sdk/domains/intelligence.ts +616 -0
  203. package/transport/sdk/domains/market.ts +35 -0
  204. package/transport/sdk/domains/notification.ts +62 -0
  205. package/transport/sdk/domains/permission.ts +85 -0
  206. package/transport/sdk/domains/platform.ts +19 -0
  207. package/transport/sdk/domains/plugin.ts +144 -0
  208. package/transport/sdk/domains/settings.ts +92 -0
  209. package/transport/sdk/domains/update.ts +64 -0
  210. package/transport/sdk/index.ts +60 -0
  211. package/transport/sdk/main-transport.ts +710 -0
  212. package/transport/sdk/main.ts +9 -0
  213. package/transport/sdk/plugin-transport.ts +654 -0
  214. package/transport/sdk/port-policy.ts +38 -0
  215. package/transport/sdk/renderer-transport.ts +1165 -0
  216. package/transport/types.ts +605 -0
  217. package/types/agent.ts +399 -0
  218. package/types/cloud-sync.ts +157 -0
  219. package/types/division-box.ts +31 -31
  220. package/types/download.ts +1 -0
  221. package/types/flow.ts +63 -12
  222. package/types/icon.ts +2 -1
  223. package/types/index.ts +5 -0
  224. package/types/intelligence.ts +166 -173
  225. package/types/modules/base.ts +2 -0
  226. package/types/path-browserify.d.ts +5 -0
  227. package/types/platform.ts +12 -0
  228. package/types/startup-info.ts +32 -0
  229. package/types/touch-app-core.ts +8 -8
  230. package/types/update.ts +94 -1
  231. package/vitest.config.ts +25 -0
  232. package/auth/useClerkConfig.ts +0 -40
  233. package/auth/useClerkProvider.ts +0 -52
@@ -0,0 +1,234 @@
1
+ /**
2
+ * TuffTransport Logger
3
+ *
4
+ * Specialized logger for TuffTransport system with green branding.
5
+ * Used for IPC communication, events, and transport-related operations.
6
+ */
7
+
8
+ import { LogLevel } from './types'
9
+
10
+ /**
11
+ * ANSI color codes
12
+ */
13
+ const COLORS = {
14
+ reset: '\x1B[0m',
15
+ gray: '\x1B[90m',
16
+ green: '\x1B[32m',
17
+ bgGreen: '\x1B[42m',
18
+ white: '\x1B[37m',
19
+ yellow: '\x1B[33m',
20
+ red: '\x1B[31m',
21
+ cyan: '\x1B[36m',
22
+ bold: '\x1B[1m',
23
+ }
24
+
25
+ /**
26
+ * TuffTransport Logger
27
+ *
28
+ * Outputs with distinctive green branding:
29
+ * [TuffTransport] [module] message
30
+ */
31
+ export class TuffTransportLogger {
32
+ private readonly module: string
33
+ private readonly subModule?: string
34
+ private enabled: boolean
35
+ private level: LogLevel
36
+
37
+ constructor(
38
+ module: string,
39
+ options?: { subModule?: string, enabled?: boolean, level?: LogLevel },
40
+ ) {
41
+ this.module = module
42
+ this.subModule = options?.subModule
43
+ this.enabled = options?.enabled ?? true
44
+ this.level = options?.level ?? LogLevel.INFO
45
+ }
46
+
47
+ /**
48
+ * Check if logger is enabled
49
+ */
50
+ isEnabled(): boolean {
51
+ return this.enabled
52
+ }
53
+
54
+ /**
55
+ * Set enabled state
56
+ */
57
+ setEnabled(enabled: boolean): void {
58
+ this.enabled = enabled
59
+ }
60
+
61
+ /**
62
+ * Get log level
63
+ */
64
+ getLevel(): LogLevel {
65
+ return this.level
66
+ }
67
+
68
+ /**
69
+ * Set log level
70
+ */
71
+ setLevel(level: LogLevel): void {
72
+ this.level = level
73
+ }
74
+
75
+ /**
76
+ * Log debug message
77
+ */
78
+ debug(message: string, ...args: unknown[]): void {
79
+ this.log(LogLevel.DEBUG, message, args)
80
+ }
81
+
82
+ /**
83
+ * Log info message
84
+ */
85
+ info(message: string, ...args: unknown[]): void {
86
+ this.log(LogLevel.INFO, message, args)
87
+ }
88
+
89
+ /**
90
+ * Log warning message
91
+ */
92
+ warn(message: string, ...args: unknown[]): void {
93
+ this.log(LogLevel.WARN, message, args)
94
+ }
95
+
96
+ /**
97
+ * Log error message
98
+ */
99
+ error(message: string, ...args: unknown[]): void {
100
+ this.log(LogLevel.ERROR, message, args)
101
+ }
102
+
103
+ /**
104
+ * Log event dispatch
105
+ */
106
+ event(eventName: string, direction: 'send' | 'receive', data?: unknown): void {
107
+ if (!this.shouldLog(LogLevel.DEBUG))
108
+ return
109
+
110
+ const arrow = direction === 'send' ? '→' : '←'
111
+ const dirLabel = direction === 'send' ? 'SEND' : 'RECV'
112
+ const prefix = this.buildPrefix()
113
+
114
+ console.debug(
115
+ `${prefix} ${COLORS.cyan}${arrow} ${dirLabel}${COLORS.reset} ${eventName}`,
116
+ data !== undefined ? data : '',
117
+ )
118
+ }
119
+
120
+ /**
121
+ * Log IPC invoke
122
+ */
123
+ invoke(channel: string, payload?: unknown): void {
124
+ if (!this.shouldLog(LogLevel.DEBUG))
125
+ return
126
+
127
+ const prefix = this.buildPrefix()
128
+ console.debug(`${prefix} ${COLORS.cyan}⚡ INVOKE${COLORS.reset} ${channel}`, payload ?? '')
129
+ }
130
+
131
+ /**
132
+ * Log IPC response
133
+ */
134
+ response(channel: string, result?: unknown, error?: unknown): void {
135
+ if (!this.shouldLog(LogLevel.DEBUG))
136
+ return
137
+
138
+ const prefix = this.buildPrefix()
139
+ if (error) {
140
+ console.debug(`${prefix} ${COLORS.red}✗ RESPONSE${COLORS.reset} ${channel}`, error)
141
+ }
142
+ else {
143
+ console.debug(`${prefix} ${COLORS.green}✓ RESPONSE${COLORS.reset} ${channel}`, result ?? '')
144
+ }
145
+ }
146
+
147
+ /**
148
+ * Create child logger with sub-module
149
+ */
150
+ child(subModule: string): TuffTransportLogger {
151
+ return new TuffTransportLogger(this.module, {
152
+ subModule: this.subModule ? `${this.subModule}:${subModule}` : subModule,
153
+ enabled: this.enabled,
154
+ level: this.level,
155
+ })
156
+ }
157
+
158
+ /**
159
+ * Check if should log
160
+ */
161
+ private shouldLog(level: LogLevel): boolean {
162
+ return this.enabled && level >= this.level
163
+ }
164
+
165
+ /**
166
+ * Build log prefix
167
+ */
168
+ private buildPrefix(): string {
169
+ const brand = `${COLORS.bgGreen}${COLORS.white}${COLORS.bold} TuffTransport ${COLORS.reset}`
170
+ const moduleLabel = this.subModule
171
+ ? `${COLORS.green}[${this.module}:${this.subModule}]${COLORS.reset}`
172
+ : `${COLORS.green}[${this.module}]${COLORS.reset}`
173
+
174
+ return `${brand} ${moduleLabel}`
175
+ }
176
+
177
+ /**
178
+ * Core log method
179
+ */
180
+ private log(level: LogLevel, message: string, args: unknown[]): void {
181
+ if (!this.shouldLog(level))
182
+ return
183
+
184
+ const prefix = this.buildPrefix()
185
+ const levelColors: Record<LogLevel, string> = {
186
+ [LogLevel.DEBUG]: COLORS.gray,
187
+ [LogLevel.INFO]: COLORS.green,
188
+ [LogLevel.WARN]: COLORS.yellow,
189
+ [LogLevel.ERROR]: COLORS.red,
190
+ [LogLevel.NONE]: '',
191
+ }
192
+ const color = levelColors[level] ?? ''
193
+
194
+ const output = `${prefix} ${color}${message}${COLORS.reset}`
195
+
196
+ switch (level) {
197
+ case LogLevel.DEBUG:
198
+ console.debug(output, ...args)
199
+ break
200
+ case LogLevel.INFO:
201
+ console.info(output, ...args)
202
+ break
203
+ case LogLevel.WARN:
204
+ console.warn(output, ...args)
205
+ break
206
+ case LogLevel.ERROR:
207
+ console.error(output, ...args)
208
+ break
209
+ default:
210
+ console.log(output, ...args)
211
+ }
212
+ }
213
+ }
214
+
215
+ /**
216
+ * Create TuffTransport logger for a module
217
+ */
218
+ export function createTransportLogger(
219
+ module: string,
220
+ options?: { subModule?: string, enabled?: boolean, level?: LogLevel },
221
+ ): TuffTransportLogger {
222
+ return new TuffTransportLogger(module, options)
223
+ }
224
+
225
+ /**
226
+ * Default transport loggers for common modules
227
+ */
228
+ export const transportLoggers = {
229
+ flowBus: new TuffTransportLogger('FlowBus'),
230
+ coreBox: new TuffTransportLogger('CoreBox'),
231
+ plugin: new TuffTransportLogger('Plugin'),
232
+ storage: new TuffTransportLogger('Storage'),
233
+ divisionBox: new TuffTransportLogger('DivisionBox'),
234
+ }
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Module Logger Types
3
+ *
4
+ * Unified logging system for Talex Touch modules.
5
+ * Uses unified LogLevel from base.
6
+ */
7
+
8
+ import type { LogLevelStringLower } from '../../base/log-level'
9
+ import {
10
+ stringToLogLevel as baseStringToLogLevel,
11
+ LogLevel,
12
+
13
+ logLevelToLowerString,
14
+ } from '../../base/log-level'
15
+
16
+ // Re-export LogLevel for convenience
17
+ export { LogLevel }
18
+
19
+ /**
20
+ * Log level string type (lowercase for config files)
21
+ */
22
+ export type LogLevelString = LogLevelStringLower
23
+
24
+ /**
25
+ * Convert LogLevel to lowercase string (for config)
26
+ */
27
+ export function logLevelToString(level: LogLevel): LogLevelString {
28
+ return logLevelToLowerString(level)
29
+ }
30
+
31
+ /**
32
+ * Convert string to LogLevel
33
+ */
34
+ export function stringToLogLevel(str: LogLevelString): LogLevel {
35
+ return baseStringToLogLevel(str)
36
+ }
37
+
38
+ /**
39
+ * Module logger options
40
+ */
41
+ export interface ModuleLoggerOptions {
42
+ /** Module name (unique identifier) */
43
+ module: string
44
+ /** Log color (chalk color name) */
45
+ color?: string
46
+ /** Initial enabled state */
47
+ enabled?: boolean
48
+ /** Minimum log level */
49
+ level?: LogLevel
50
+ /** Custom prefix */
51
+ prefix?: string
52
+ }
53
+
54
+ /**
55
+ * Logging configuration
56
+ */
57
+ export interface LoggingConfig {
58
+ /** Global enabled switch */
59
+ enabled: boolean
60
+ /** Global log level */
61
+ globalLevel: LogLevelString
62
+ /** Per-module configuration */
63
+ modules: Record<string, ModuleConfig>
64
+ }
65
+
66
+ /**
67
+ * Per-module configuration
68
+ */
69
+ export interface ModuleConfig {
70
+ enabled: boolean
71
+ level: LogLevelString
72
+ }
73
+
74
+ /**
75
+ * Logger info for listing
76
+ */
77
+ export interface LoggerInfo {
78
+ module: string
79
+ enabled: boolean
80
+ level: LogLevel
81
+ color: string
82
+ }
83
+
84
+ /**
85
+ * Log entry
86
+ */
87
+ export interface LogEntry {
88
+ timestamp: string
89
+ module: string
90
+ level: LogLevel
91
+ message: string
92
+ data?: unknown[]
93
+ }
@@ -1,35 +1,77 @@
1
1
  import type { TuffUpdate } from '.'
2
2
 
3
+ /**
4
+ * Search priority layer type
5
+ */
6
+ export type SearchPriorityLayer = 'fast' | 'deferred'
7
+
3
8
  /**
4
9
  * @interface ITuffGatherOptions
5
10
  * @description Configuration options for the search result aggregator.
6
11
  */
7
12
  export interface ITuffGatherOptions {
8
13
  /**
9
- * The number of providers to run in parallel.
10
- * @default 3
14
+ * The number of providers to run in parallel (legacy, used when layered mode is disabled).
15
+ * @default 4
11
16
  */
12
17
  concurrency?: number
13
18
  /**
14
19
  * The time to wait for more results before flushing the buffer.
15
- * @default 100
20
+ * @default 50
16
21
  */
17
22
  coalesceGapMs?: number
18
23
  /**
19
24
  * A shorter grace period for the first batch to ensure a quick initial response.
20
- * @default 50
25
+ * @default 20
21
26
  */
22
27
  firstBatchGraceMs?: number
23
28
  /**
24
29
  * A small debounce delay for the push function to avoid rapid-fire updates.
25
- * @default 10
30
+ * @default 8
26
31
  */
27
32
  debouncePushMs?: number
28
33
  /**
29
34
  * The maximum time to wait for a single provider to return results.
30
- * @default 5000
35
+ * @default 3000
31
36
  */
32
37
  taskTimeoutMs?: number
38
+
39
+ // ==================== Layered Search Options ====================
40
+
41
+ /**
42
+ * Enable layered search mode (fast layer + deferred layer).
43
+ * When enabled, providers with priority='fast' run first with a timeout,
44
+ * then deferred providers run asynchronously.
45
+ * @default true
46
+ */
47
+ enableLayeredSearch?: boolean
48
+
49
+ /**
50
+ * Maximum wait time for all fast layer providers.
51
+ * After this timeout, fast layer results are returned immediately,
52
+ * even if some fast providers haven't completed.
53
+ * @default 80
54
+ */
55
+ fastLayerTimeoutMs?: number
56
+
57
+ /**
58
+ * Delay before starting deferred layer execution.
59
+ * Allows UI to render fast layer results first, avoiding CPU contention.
60
+ * @default 50
61
+ */
62
+ deferredLayerDelayMs?: number
63
+
64
+ /**
65
+ * Concurrency limit for fast layer providers.
66
+ * @default 3
67
+ */
68
+ fastLayerConcurrency?: number
69
+
70
+ /**
71
+ * Concurrency limit for deferred layer providers.
72
+ * @default 2
73
+ */
74
+ deferredLayerConcurrency?: number
33
75
  }
34
76
 
35
77
  /**
@@ -1,4 +1,5 @@
1
1
  import type { ISearchProvider, TuffQuery, TuffSearchResult } from '@talex-touch/utils'
2
+ import type { SearchPriorityLayer } from './gather'
2
3
 
3
4
  export * from './gather'
4
5
 
@@ -28,6 +29,13 @@ export interface TuffUpdate {
28
29
  * Statistics about the performance of each search provider.
29
30
  */
30
31
  sourceStats?: TuffSearchResult['sources']
32
+ /**
33
+ * Indicates which layer this update came from.
34
+ * - 'fast': Results from fast layer providers
35
+ * - 'deferred': Results from deferred layer providers
36
+ * Useful for UI to handle different layers appropriately.
37
+ */
38
+ layer?: SearchPriorityLayer
31
39
  }
32
40
 
33
41
  /**
@@ -2,8 +2,21 @@ export enum StorageList {
2
2
  APP_SETTING = 'app-setting.ini',
3
3
  SHORTCUT_SETTING = 'shortcut-setting.ini',
4
4
  OPENERS = 'openers.json',
5
+ FILE_INDEX_SETTINGS = 'file-index-settings.json',
6
+ APP_INDEX_SETTINGS = 'app-index-settings.json',
7
+ DEVICE_IDLE_SETTINGS = 'device-idle-settings.json',
5
8
  IntelligenceConfig = 'aisdk-config',
6
9
  MARKET_SOURCES = 'market-sources.json',
10
+ AGENT_MARKET = 'agent-market.json',
11
+ THEME_STYLE = 'theme-style.ini',
12
+ SEARCH_ENGINE_LOGS_ENABLED = 'search-engine-logs-enabled',
13
+ EVERYTHING_SETTINGS = 'everything-settings.json',
14
+ FLOW_CONSENT = 'flow-consent.json',
15
+ SENTRY_CONFIG = 'sentry-config.json',
16
+ NOTIFICATION_CENTER = 'notification-center.json',
17
+ STARTUP_ANALYTICS = 'startup-analytics.json',
18
+ STARTUP_ANALYTICS_REPORT_QUEUE = 'startup-analytics-report-queue.json',
19
+ TELEMETRY_CLIENT = 'telemetry-client.json',
7
20
  }
8
21
 
9
22
  /**