@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.
- package/.eslintcache +1 -0
- package/__tests__/cloud-sync-sdk.test.ts +442 -0
- package/__tests__/icons/icons.test.ts +84 -0
- package/__tests__/plugin-sdk-lifecycle.test.ts +130 -0
- package/__tests__/power-sdk.test.ts +143 -0
- package/__tests__/preset-export-types.test.ts +108 -0
- package/__tests__/search/fuzzy-match.test.ts +137 -0
- package/__tests__/transport/port-policy.test.ts +44 -0
- package/__tests__/transport-domain-sdks.test.ts +152 -0
- package/__tests__/types/update.test.ts +67 -0
- package/account/account-sdk.ts +915 -0
- package/account/index.ts +2 -0
- package/account/types.ts +321 -0
- package/analytics/client.ts +136 -0
- package/analytics/index.ts +2 -0
- package/analytics/types.ts +156 -0
- package/animation/auto-resize.ts +322 -0
- package/animation/window-node.ts +26 -19
- package/auth/clerk-types.ts +12 -30
- package/auth/index.ts +0 -2
- package/auth/useAuthState.ts +6 -14
- package/base/index.ts +2 -0
- package/base/log-level.ts +105 -0
- package/channel/index.ts +170 -69
- package/cloud-sync/cloud-sync-sdk.ts +450 -0
- package/cloud-sync/index.ts +1 -0
- package/common/file-scan-utils.ts +17 -9
- package/common/index.ts +4 -0
- package/common/logger/index.ts +46 -0
- package/common/logger/logger-manager.ts +303 -0
- package/common/logger/module-logger.ts +270 -0
- package/common/logger/transport-logger.ts +234 -0
- package/common/logger/types.ts +93 -0
- package/common/search/gather.ts +48 -6
- package/common/search/index.ts +8 -0
- package/common/storage/constants.ts +13 -0
- package/common/storage/entity/app-settings.ts +245 -0
- package/common/storage/entity/index.ts +3 -0
- package/common/storage/entity/layout-atom-types.ts +147 -0
- package/common/storage/entity/openers.ts +1 -0
- package/common/storage/entity/preset-cloud-api.ts +132 -0
- package/common/storage/entity/preset-export-types.ts +256 -0
- package/common/storage/entity/shortcut-settings.ts +1 -0
- package/common/storage/shortcut-storage.ts +11 -0
- package/common/utils/clone-diagnostics.ts +105 -0
- package/common/utils/file.ts +16 -8
- package/common/utils/index.ts +6 -2
- package/common/utils/payload-preview.ts +173 -0
- package/common/utils/polling.ts +167 -13
- package/common/utils/safe-path.ts +103 -0
- package/common/utils/safe-shell.ts +115 -0
- package/common/utils/task-queue.ts +4 -1
- package/core-box/builder/tuff-builder.ts +0 -1
- package/core-box/index.ts +1 -1
- package/core-box/recommendation.ts +38 -1
- package/core-box/tuff/tuff-dsl.ts +32 -0
- package/electron/download-manager.ts +10 -7
- package/electron/env-tool.ts +42 -40
- package/electron/index.ts +0 -1
- package/env/index.ts +156 -0
- package/eslint.config.js +55 -0
- package/i18n/index.ts +62 -0
- package/i18n/locales/en.json +226 -0
- package/i18n/locales/zh.json +226 -0
- package/i18n/message-keys.ts +236 -0
- package/i18n/resolver.ts +181 -0
- package/icons/index.ts +257 -0
- package/icons/svg.ts +69 -0
- package/index.ts +9 -1
- package/intelligence/client.ts +72 -42
- package/market/constants.ts +9 -5
- package/market/index.ts +1 -1
- package/market/types.ts +19 -4
- package/package.json +15 -5
- package/permission/index.ts +143 -46
- package/permission/legacy.ts +26 -0
- package/permission/registry.ts +304 -0
- package/permission/types.ts +164 -0
- package/plugin/channel.ts +68 -39
- package/plugin/index.ts +80 -7
- package/plugin/install.ts +3 -0
- package/plugin/log/types.ts +22 -5
- package/plugin/node/logger-manager.ts +11 -3
- package/plugin/node/logger.ts +24 -17
- package/plugin/preload.ts +25 -2
- package/plugin/providers/index.ts +4 -4
- package/plugin/providers/market-client.ts +6 -3
- package/plugin/providers/npm-provider.ts +22 -7
- package/plugin/providers/tpex-provider.ts +22 -8
- package/plugin/sdk/box-items.ts +14 -0
- package/plugin/sdk/box-sdk.ts +64 -0
- package/plugin/sdk/channel.ts +119 -4
- package/plugin/sdk/clipboard.ts +26 -12
- package/plugin/sdk/cloud-sync.ts +113 -0
- package/plugin/sdk/common.ts +19 -11
- package/plugin/sdk/core-box.ts +6 -15
- package/plugin/sdk/division-box.ts +160 -65
- package/plugin/sdk/examples/storage-onDidChange-example.js +5 -2
- package/plugin/sdk/feature-sdk.ts +111 -76
- package/plugin/sdk/flow.ts +146 -45
- package/plugin/sdk/hooks/bridge.ts +13 -6
- package/plugin/sdk/hooks/life-cycle.ts +35 -16
- package/plugin/sdk/index.ts +14 -3
- package/plugin/sdk/intelligence.ts +87 -0
- package/plugin/sdk/meta/README.md +179 -0
- package/plugin/sdk/meta-sdk.ts +244 -0
- package/plugin/sdk/notification.ts +9 -0
- package/plugin/sdk/plugin-info.ts +64 -0
- package/plugin/sdk/power.ts +155 -0
- package/plugin/sdk/recommend.ts +21 -0
- package/plugin/sdk/service/index.ts +12 -8
- package/plugin/sdk/sqlite.ts +141 -0
- package/plugin/sdk/storage.ts +2 -6
- package/plugin/sdk/system.ts +2 -9
- package/plugin/sdk/temp-files.ts +41 -0
- package/plugin/sdk/touch-sdk.ts +18 -0
- package/plugin/sdk/types.ts +44 -4
- package/plugin/sdk/window/index.ts +12 -9
- package/plugin/sdk-version.ts +231 -0
- package/preload/renderer.ts +3 -2
- package/renderer/hooks/arg-mapper.ts +16 -2
- package/renderer/hooks/index.ts +13 -0
- package/renderer/hooks/initialize.ts +2 -1
- package/renderer/hooks/use-agent-market-sdk.ts +7 -0
- package/renderer/hooks/use-agent-market.ts +106 -0
- package/renderer/hooks/use-agents-sdk.ts +7 -0
- package/renderer/hooks/use-app-sdk.ts +7 -0
- package/renderer/hooks/use-channel.ts +33 -4
- package/renderer/hooks/use-download-sdk.ts +21 -0
- package/renderer/hooks/use-intelligence-sdk.ts +7 -0
- package/renderer/hooks/use-intelligence-stats.ts +290 -0
- package/renderer/hooks/use-intelligence.ts +55 -214
- package/renderer/hooks/use-market-sdk.ts +16 -0
- package/renderer/hooks/use-notification-sdk.ts +7 -0
- package/renderer/hooks/use-permission-sdk.ts +7 -0
- package/renderer/hooks/use-permission.ts +325 -0
- package/renderer/hooks/use-platform-sdk.ts +7 -0
- package/renderer/hooks/use-plugin-sdk.ts +16 -0
- package/renderer/hooks/use-settings-sdk.ts +7 -0
- package/renderer/hooks/use-update-sdk.ts +21 -0
- package/renderer/index.ts +1 -0
- package/renderer/ref.ts +19 -10
- package/renderer/shared/components/SharedPluginDetailContent.vue +84 -0
- package/renderer/shared/components/SharedPluginDetailHeader.vue +116 -0
- package/renderer/shared/components/SharedPluginDetailMetaList.vue +39 -0
- package/renderer/shared/components/SharedPluginDetailReadme.vue +45 -0
- package/renderer/shared/components/SharedPluginDetailVersions.vue +98 -0
- package/renderer/shared/components/index.ts +5 -0
- package/renderer/shared/components/shims-vue.d.ts +5 -0
- package/renderer/shared/index.ts +2 -0
- package/renderer/shared/plugin-detail.ts +62 -0
- package/renderer/storage/app-settings.ts +3 -1
- package/renderer/storage/base-storage.ts +508 -82
- package/renderer/storage/intelligence-storage.ts +31 -40
- package/renderer/storage/openers.ts +3 -1
- package/renderer/storage/storage-subscription.ts +126 -42
- package/renderer/touch-sdk/env.ts +10 -10
- package/renderer/touch-sdk/index.ts +114 -18
- package/renderer/touch-sdk/terminal.ts +24 -13
- package/search/feature-matcher.ts +279 -0
- package/search/fuzzy-match.ts +64 -34
- package/search/index.ts +10 -0
- package/search/levenshtein-utils.ts +17 -11
- package/transport/errors.ts +310 -0
- package/transport/event/builder.ts +378 -0
- package/transport/event/index.ts +7 -0
- package/transport/event/types.ts +292 -0
- package/transport/events/index.ts +2670 -0
- package/transport/events/meta-overlay.ts +79 -0
- package/transport/events/types/agents.ts +177 -0
- package/transport/events/types/app-index.ts +9 -0
- package/transport/events/types/app.ts +475 -0
- package/transport/events/types/box-item.ts +222 -0
- package/transport/events/types/clipboard.ts +80 -0
- package/transport/events/types/core-box.ts +534 -0
- package/transport/events/types/device-idle.ts +7 -0
- package/transport/events/types/division-box.ts +99 -0
- package/transport/events/types/download.ts +115 -0
- package/transport/events/types/file-index.ts +73 -0
- package/transport/events/types/flow.ts +149 -0
- package/transport/events/types/index.ts +70 -0
- package/transport/events/types/market.ts +39 -0
- package/transport/events/types/meta-overlay.ts +184 -0
- package/transport/events/types/notification.ts +140 -0
- package/transport/events/types/permission.ts +90 -0
- package/transport/events/types/platform.ts +8 -0
- package/transport/events/types/plugin.ts +620 -0
- package/transport/events/types/sentry.ts +20 -0
- package/transport/events/types/storage.ts +208 -0
- package/transport/events/types/transport.ts +60 -0
- package/transport/events/types/tray.ts +16 -0
- package/transport/events/types/update.ts +78 -0
- package/transport/index.ts +139 -0
- package/transport/main.ts +2 -0
- package/transport/sdk/constants.ts +29 -0
- package/transport/sdk/domains/agents-market.ts +47 -0
- package/transport/sdk/domains/agents.ts +62 -0
- package/transport/sdk/domains/app.ts +48 -0
- package/transport/sdk/domains/disposable.ts +35 -0
- package/transport/sdk/domains/download.ts +139 -0
- package/transport/sdk/domains/index.ts +13 -0
- package/transport/sdk/domains/intelligence.ts +616 -0
- package/transport/sdk/domains/market.ts +35 -0
- package/transport/sdk/domains/notification.ts +62 -0
- package/transport/sdk/domains/permission.ts +85 -0
- package/transport/sdk/domains/platform.ts +19 -0
- package/transport/sdk/domains/plugin.ts +144 -0
- package/transport/sdk/domains/settings.ts +92 -0
- package/transport/sdk/domains/update.ts +64 -0
- package/transport/sdk/index.ts +60 -0
- package/transport/sdk/main-transport.ts +710 -0
- package/transport/sdk/main.ts +9 -0
- package/transport/sdk/plugin-transport.ts +654 -0
- package/transport/sdk/port-policy.ts +38 -0
- package/transport/sdk/renderer-transport.ts +1165 -0
- package/transport/types.ts +605 -0
- package/types/agent.ts +399 -0
- package/types/cloud-sync.ts +157 -0
- package/types/division-box.ts +31 -31
- package/types/download.ts +1 -0
- package/types/flow.ts +63 -12
- package/types/icon.ts +2 -1
- package/types/index.ts +5 -0
- package/types/intelligence.ts +166 -173
- package/types/modules/base.ts +2 -0
- package/types/path-browserify.d.ts +5 -0
- package/types/platform.ts +12 -0
- package/types/startup-info.ts +32 -0
- package/types/touch-app-core.ts +8 -8
- package/types/update.ts +94 -1
- package/vitest.config.ts +25 -0
- package/auth/useClerkConfig.ts +0 -40
- 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
|
+
}
|
package/common/search/gather.ts
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
/**
|
package/common/search/index.ts
CHANGED
|
@@ -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
|
/**
|