@talex-touch/utils 1.0.42 → 1.0.45

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 (234) 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 +2690 -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 +20 -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 +84 -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 +631 -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 +141 -0
  194. package/transport/main.ts +2 -0
  195. package/transport/prelude.ts +208 -0
  196. package/transport/sdk/constants.ts +29 -0
  197. package/transport/sdk/domains/agents-market.ts +47 -0
  198. package/transport/sdk/domains/agents.ts +62 -0
  199. package/transport/sdk/domains/app.ts +48 -0
  200. package/transport/sdk/domains/disposable.ts +35 -0
  201. package/transport/sdk/domains/download.ts +139 -0
  202. package/transport/sdk/domains/index.ts +13 -0
  203. package/transport/sdk/domains/intelligence.ts +616 -0
  204. package/transport/sdk/domains/market.ts +35 -0
  205. package/transport/sdk/domains/notification.ts +62 -0
  206. package/transport/sdk/domains/permission.ts +85 -0
  207. package/transport/sdk/domains/platform.ts +19 -0
  208. package/transport/sdk/domains/plugin.ts +144 -0
  209. package/transport/sdk/domains/settings.ts +102 -0
  210. package/transport/sdk/domains/update.ts +64 -0
  211. package/transport/sdk/index.ts +60 -0
  212. package/transport/sdk/main-transport.ts +710 -0
  213. package/transport/sdk/main.ts +9 -0
  214. package/transport/sdk/plugin-transport.ts +654 -0
  215. package/transport/sdk/port-policy.ts +38 -0
  216. package/transport/sdk/renderer-transport.ts +1165 -0
  217. package/transport/types.ts +605 -0
  218. package/types/agent.ts +399 -0
  219. package/types/cloud-sync.ts +157 -0
  220. package/types/division-box.ts +31 -31
  221. package/types/download.ts +1 -0
  222. package/types/flow.ts +63 -12
  223. package/types/icon.ts +2 -1
  224. package/types/index.ts +5 -0
  225. package/types/intelligence.ts +166 -173
  226. package/types/modules/base.ts +2 -0
  227. package/types/path-browserify.d.ts +5 -0
  228. package/types/platform.ts +12 -0
  229. package/types/startup-info.ts +32 -0
  230. package/types/touch-app-core.ts +8 -8
  231. package/types/update.ts +94 -1
  232. package/vitest.config.ts +25 -0
  233. package/auth/useClerkConfig.ts +0 -40
  234. package/auth/useClerkProvider.ts +0 -52
@@ -0,0 +1,2690 @@
1
+ /**
2
+ * @fileoverview Predefined TuffEvents for all application domains
3
+ * @module @talex-touch/utils/transport/events
4
+ *
5
+ * @description
6
+ * This module exports all predefined TuffEvents organized by domain.
7
+ * Each event is type-safe with request/response types enforced at compile time.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { CoreBoxEvents, StorageEvents } from '@talex-touch/utils/transport/events'
12
+ *
13
+ * // Send a typed request
14
+ * await transport.send(CoreBoxEvents.search.query, { text: 'hello' })
15
+ *
16
+ * // Register a typed handler
17
+ * transport.on(StorageEvents.app.get, async ({ key }) => {
18
+ * return storage.get(key)
19
+ * })
20
+ * ```
21
+ */
22
+
23
+ import type {
24
+ AgentsCancelRequest,
25
+ AgentsCancelResponse,
26
+ AgentsExecuteImmediateRequest,
27
+ AgentsExecuteImmediateResponse,
28
+ AgentsExecuteRequest,
29
+ AgentsExecuteResponse,
30
+ AgentsGetRequest,
31
+ AgentsGetResponse,
32
+ AgentsListResponse,
33
+ AgentsMarketCategoriesResponse,
34
+ AgentsMarketCheckUpdatesResponse,
35
+ AgentsMarketFeaturedResponse,
36
+ AgentsMarketGetRequest,
37
+ AgentsMarketGetResponse,
38
+ AgentsMarketInstallRequest,
39
+ AgentsMarketInstallResponse,
40
+ AgentsMarketInstalledResponse,
41
+ AgentsMarketSearchRequest,
42
+ AgentsMarketSearchResponse,
43
+ AgentsMarketUninstallRequest,
44
+ AgentsMarketUninstallResponse,
45
+ AgentsStatsResponse,
46
+ AgentsTaskCancelledPayload,
47
+ AgentsTaskCompletedPayload,
48
+ AgentsTaskFailedPayload,
49
+ AgentsTaskProgressPayload,
50
+ AgentsTaskStartedPayload,
51
+ AgentsTaskStatusRequest,
52
+ AgentsTaskStatusResponse,
53
+ AgentsToolsGetRequest,
54
+ AgentsToolsGetResponse,
55
+ AgentsToolsListResponse,
56
+ AgentsUpdatePriorityRequest,
57
+ AgentsUpdatePriorityResponse,
58
+ } from './types/agents'
59
+
60
+ import type {
61
+ AnalyticsExportPayload,
62
+ AnalyticsExportResult,
63
+ AnalyticsMessage,
64
+ AnalyticsMessageListRequest,
65
+ AnalyticsMessageUpdateRequest,
66
+ AnalyticsRangeRequest,
67
+ AnalyticsSnapshot,
68
+ AnalyticsSnapshotRequest,
69
+ AnalyticsToggleRequest,
70
+ BatteryStatusPayload,
71
+ BuildVerificationStatus,
72
+ CounterPayload,
73
+ CurrentMetrics,
74
+ DevToolsOptions,
75
+ ExecuteCommandRequest,
76
+ ExecuteCommandResponse,
77
+ FeatureStats,
78
+ GaugePayload,
79
+ GetPathRequest,
80
+ HistogramPayload,
81
+ NavigateRequest,
82
+ OpenAppRequest,
83
+ OpenExternalRequest,
84
+ OSInfo,
85
+ PackageInfo,
86
+ PerformanceHistoryEntry,
87
+ PerformanceSummary,
88
+ PluginStats,
89
+ ReadFileRequest,
90
+ RendererPerfReport,
91
+ ReportMetricsRequest,
92
+ ReportMetricsResponse,
93
+ SecureValueGetRequest,
94
+ SecureValueSetRequest,
95
+ SetLocaleRequest,
96
+ ShowInFolderRequest,
97
+ StartupRequest,
98
+ StartupResponse,
99
+ TrackDurationPayload,
100
+ TrackEventPayload,
101
+ } from './types/app'
102
+
103
+ import type { AppIndexAddPathRequest, AppIndexAddPathResult, AppIndexSettings } from './types/app-index'
104
+
105
+ // ============================================================================
106
+ // App Events
107
+ // ============================================================================
108
+
109
+ import type {
110
+ BoxItem,
111
+ BoxItemBatchDeleteResponse,
112
+ BoxItemBatchUpsertResponse,
113
+ BoxItemClearRequest,
114
+ BoxItemClearResponse,
115
+ BoxItemCreateRequest,
116
+ BoxItemDeleteRequest,
117
+ BoxItemSyncResponse,
118
+ BoxItemUpdateRequest,
119
+ BoxItemUpsertRequest,
120
+ } from './types/box-item'
121
+
122
+ // ============================================================================
123
+ // Transport Events
124
+ // ============================================================================
125
+
126
+ import type {
127
+ ClipboardApplyRequest,
128
+ ClipboardChangePayload,
129
+ ClipboardDeleteRequest,
130
+ ClipboardItem,
131
+ ClipboardQueryRequest,
132
+ ClipboardQueryResponse,
133
+ ClipboardSetFavoriteRequest,
134
+ ClipboardWriteRequest,
135
+ } from './types/clipboard'
136
+
137
+ // ============================================================================
138
+ // CoreBox Events
139
+ // ============================================================================
140
+
141
+ import type {
142
+ ActivationState,
143
+ AllowClipboardRequest,
144
+ AllowClipboardResponse,
145
+ AllowInputMonitoringResponse,
146
+ CancelSearchRequest,
147
+ CancelSearchResponse,
148
+ ClearInputResponse,
149
+ CoreBoxClearItemsPayload,
150
+ CoreBoxExecuteRequest,
151
+ CoreBoxForwardKeyEvent,
152
+ CoreBoxInputChangeRequest,
153
+ CoreBoxLayoutUpdateRequest,
154
+ CoreBoxNoResultsPayload,
155
+ CoreBoxSearchEndPayload,
156
+ CoreBoxSearchUpdatePayload,
157
+ CoreBoxTogglePinRequest,
158
+ CoreBoxTogglePinResponse,
159
+ CoreBoxUIModeExitedPayload,
160
+ CoreBoxUIViewStateResponse,
161
+ DeactivateProviderRequest,
162
+ EnterUIModeRequest,
163
+ ExpandOptions,
164
+ FocusWindowResponse,
165
+ GetInputResponse,
166
+ GetProviderDetailsRequest,
167
+ IProviderActivate,
168
+ ProviderDetail,
169
+ SetInputRequest,
170
+ SetInputResponse,
171
+ SetInputVisibilityRequest,
172
+ TuffQuery,
173
+ TuffSearchResult,
174
+ } from './types/core-box'
175
+
176
+ // ============================================================================
177
+ // Storage Events
178
+ // ============================================================================
179
+
180
+ import type { DeviceIdleSettings } from './types/device-idle'
181
+
182
+ // ============================================================================
183
+ // Plugin Events
184
+ // ============================================================================
185
+
186
+ import type {
187
+ DivisionBoxCloseRequest,
188
+ DivisionBoxCloseResponse,
189
+ DivisionBoxFlowTriggerRequest,
190
+ DivisionBoxFlowTriggerResponse,
191
+ DivisionBoxGetActiveSessionsRequest,
192
+ DivisionBoxGetActiveSessionsResponse,
193
+ DivisionBoxGetStateRequest,
194
+ DivisionBoxGetStateResponse,
195
+ DivisionBoxGetWindowStateRequest,
196
+ DivisionBoxGetWindowStateResponse,
197
+ DivisionBoxInputChangeRequest,
198
+ DivisionBoxInputChangeResponse,
199
+ DivisionBoxOpenRequest,
200
+ DivisionBoxOpenResponse,
201
+ DivisionBoxSessionDestroyedPayload,
202
+ DivisionBoxSetOpacityRequest,
203
+ DivisionBoxSetOpacityResponse,
204
+ DivisionBoxStateChangedPayload,
205
+ DivisionBoxToggleDevToolsRequest,
206
+ DivisionBoxToggleDevToolsResponse,
207
+ DivisionBoxTogglePinRequest,
208
+ DivisionBoxTogglePinResponse,
209
+ DivisionBoxUpdateStateRequest,
210
+ DivisionBoxUpdateStateResponse,
211
+ } from './types/division-box'
212
+
213
+ import type {
214
+ DownloadAddTaskRequest,
215
+ DownloadAddTaskResponse,
216
+ DownloadClearHistoryItemRequest,
217
+ DownloadGetConfigResponse,
218
+ DownloadGetErrorStatsResponse,
219
+ DownloadGetHistoryRequest,
220
+ DownloadGetHistoryResponse,
221
+ DownloadGetLogsResponse,
222
+ DownloadGetNotificationConfigResponse,
223
+ DownloadGetStatsResponse,
224
+ DownloadGetTasksByStatusRequest,
225
+ DownloadGetTasksResponse,
226
+ DownloadGetTaskStatusResponse,
227
+ DownloadGetTempStatsResponse,
228
+ DownloadMigrationNeededResponse,
229
+ DownloadMigrationRetryResponse,
230
+ DownloadMigrationStartResponse,
231
+ DownloadMigrationStatusResponse,
232
+ DownloadNotificationClickedPayload,
233
+ DownloadOpResponse,
234
+ DownloadTaskIdRequest,
235
+ DownloadTaskPayload,
236
+ DownloadTaskRetryingPayload,
237
+ DownloadUpdateConfigRequest,
238
+ DownloadUpdateNotificationConfigRequest,
239
+ DownloadUpdatePriorityRequest,
240
+ } from './types/download'
241
+
242
+ // ============================================================================
243
+ // BoxItem Events
244
+ // ============================================================================
245
+
246
+ import type {
247
+ FileIndexAddPathRequest,
248
+ FileIndexAddPathResult,
249
+ FileIndexBatteryStatus,
250
+ FileIndexFailedFile,
251
+ FileIndexProgress,
252
+ FileIndexRebuildRequest,
253
+ FileIndexRebuildResult,
254
+ FileIndexStats,
255
+ FileIndexStatus,
256
+ } from './types/file-index'
257
+ import type {
258
+ FlowAcknowledgeRequest,
259
+ FlowAcknowledgeResponse,
260
+ FlowCancelResponse,
261
+ FlowConsentCheckRequest,
262
+ FlowConsentCheckResponse,
263
+ FlowConsentGrantRequest,
264
+ FlowConsentGrantResponse,
265
+ FlowDeliverPayload,
266
+ FlowDispatchRequest,
267
+ FlowDispatchResponse,
268
+ FlowGetTargetsRequest,
269
+ FlowGetTargetsResponse,
270
+ FlowNativeShareRequest,
271
+ FlowNativeShareResponse,
272
+ FlowRegisterTargetsRequest,
273
+ FlowReportErrorRequest,
274
+ FlowReportErrorResponse,
275
+ FlowSelectTargetRequest,
276
+ FlowSelectTargetResponse,
277
+ FlowSessionUpdatePayload,
278
+ FlowSetPluginEnabledRequest,
279
+ FlowSetPluginHandlerRequest,
280
+ FlowUnregisterTargetsRequest,
281
+ } from './types/flow'
282
+ import type {
283
+ MarketCheckUpdatesResponse,
284
+ MarketGetPluginRequest,
285
+ MarketGetPluginResponse,
286
+ MarketHttpRequest,
287
+ MarketHttpRequestResponse,
288
+ MarketSearchRequest,
289
+ MarketSearchResponse,
290
+ MarketUpdatesAvailablePayload,
291
+ } from './types/market'
292
+
293
+ // ============================================================================
294
+ // Market Events
295
+ // ============================================================================
296
+
297
+ import type {
298
+ NotificationActionPayload,
299
+ NotificationDismissPayload,
300
+ NotificationDismissRequest,
301
+ NotificationInboxArchiveRequest,
302
+ NotificationInboxClearRequest,
303
+ NotificationInboxClearResponse,
304
+ NotificationInboxDeleteRequest,
305
+ NotificationInboxDeleteResponse,
306
+ NotificationInboxEntry,
307
+ NotificationInboxListRequest,
308
+ NotificationInboxListResponse,
309
+ NotificationInboxMarkReadRequest,
310
+ NotificationInboxUpdatedPayload,
311
+ NotificationPushPayload,
312
+ NotificationRequest,
313
+ NotificationResult,
314
+ NotificationUpdatePayload,
315
+ NotificationUpdateRequest,
316
+ } from './types/notification'
317
+
318
+ // ============================================================================
319
+ // Permission Events
320
+ // ============================================================================
321
+
322
+ import type {
323
+ PermissionCheckRequest,
324
+ PermissionCheckResponse,
325
+ PermissionGetAllResponse,
326
+ PermissionGetAuditLogsRequest,
327
+ PermissionGetAuditLogsResponse,
328
+ PermissionGetPerformanceResponse,
329
+ PermissionGetPluginRequest,
330
+ PermissionGetPluginResponse,
331
+ PermissionGetRegistryResponse,
332
+ PermissionGetStatusRequest,
333
+ PermissionGetStatusResponse,
334
+ PermissionGrantMultipleRequest,
335
+ PermissionGrantRequest,
336
+ PermissionOperationResult,
337
+ PermissionRevokeAllRequest,
338
+ PermissionRevokeRequest,
339
+ PermissionStartupRequestPayload,
340
+ PermissionUpdatedPayload,
341
+ } from './types/permission'
342
+
343
+ // ============================================================================
344
+ // Agents Events
345
+ // ============================================================================
346
+
347
+ import type {
348
+ PlatformCapabilityListRequest,
349
+ PlatformCapabilityListResponse,
350
+ } from './types/platform'
351
+
352
+ // ============================================================================
353
+ // Platform Events
354
+ // ============================================================================
355
+
356
+ import type {
357
+ FeatureTriggerRequest,
358
+ FeatureTriggerResponse,
359
+ PluginApiFeatureInputChangedRequest,
360
+ PluginApiGetManifestRequest,
361
+ PluginApiGetManifestResponse,
362
+ PluginApiGetOfficialListRequest,
363
+ PluginApiGetOfficialListResponse,
364
+ PluginApiGetPathsRequest,
365
+ PluginApiGetPathsResponse,
366
+ PluginApiGetPerformanceRequest,
367
+ PluginApiGetPerformanceResponse,
368
+ PluginApiGetRequest,
369
+ PluginApiGetResponse,
370
+ PluginApiGetRuntimeStatsRequest,
371
+ PluginApiGetRuntimeStatsResponse,
372
+ PluginApiGetStatusRequest,
373
+ PluginApiGetStatusResponse,
374
+ PluginApiInstallRequest,
375
+ PluginApiInstallResponse,
376
+ PluginApiListRequest,
377
+ PluginApiListResponse,
378
+ PluginApiOpenFolderRequest,
379
+ PluginApiOpenPathRequest,
380
+ PluginApiOpenPathResponse,
381
+ PluginApiRevealPathRequest,
382
+ PluginApiRevealPathResponse,
383
+ PluginApiOperationRequest,
384
+ PluginApiOperationResponse,
385
+ PluginApiRegisterWidgetRequest,
386
+ PluginApiRegisterWidgetResponse,
387
+ PluginApiSaveManifestRequest,
388
+ PluginApiSaveManifestResponse,
389
+ PluginApiSaveWidgetFileRequest,
390
+ PluginApiSaveWidgetFileResponse,
391
+ PluginApiTriggerFeatureRequest,
392
+ PluginApiTriggerFeatureResponse,
393
+ PluginDevServerStatusRequest,
394
+ PluginDevServerStatusResponse,
395
+ PluginDisableRequest,
396
+ PluginEnableRequest,
397
+ PluginInfo,
398
+ PluginInstallConfirmPayload,
399
+ PluginInstallConfirmResponsePayload,
400
+ PluginInstallCompletedPayload,
401
+ PluginInstallProgressPayload,
402
+ PluginInstallSourceRequest,
403
+ PluginInstallSourceResponse,
404
+ PluginLoadRequest,
405
+ PluginLogEntry,
406
+ PluginPerformanceGetMetricsResponse,
407
+ PluginPerformanceGetPathsResponse,
408
+ PluginPushCrashedPayload,
409
+ PluginPushReloadPayload,
410
+ PluginPushReloadReadmePayload,
411
+ PluginPushStateChangedPayload,
412
+ PluginPushStatusUpdatedPayload,
413
+ PluginReconnectDevServerRequest,
414
+ PluginReconnectDevServerResponse,
415
+ PluginReloadRequest,
416
+ PluginStorageClearRequest,
417
+ PluginStorageApplySyncItemRequest,
418
+ PluginStorageDeleteSyncItemRequest,
419
+ PluginStorageFileDetailsRequest,
420
+ PluginStorageFileRequest,
421
+ PluginStorageListFilesRequest,
422
+ PluginStorageListSyncItemsRequest,
423
+ PluginStorageOpenFolderRequest,
424
+ PluginStorageOpenInEditorRequest,
425
+ PluginStorageSetFileRequest,
426
+ PluginStorageSyncItem,
427
+ PluginStorageStatsRequest,
428
+ PluginStorageTreeRequest,
429
+ PluginStorageUpdatePayload,
430
+ PluginSqliteExecuteRequest,
431
+ PluginSqliteExecuteResponse,
432
+ PluginSqliteQueryRequest,
433
+ PluginSqliteQueryResponse,
434
+ PluginSqliteTransactionRequest,
435
+ PluginSqliteTransactionResponse,
436
+ PluginUnloadRequest,
437
+ } from './types/plugin'
438
+
439
+ import type { WidgetRegistrationPayload } from '../../plugin/widget'
440
+
441
+ // ============================================================================
442
+ // Tray Events
443
+ // ============================================================================
444
+
445
+ import type {
446
+ SentryGetConfigResponse,
447
+ SentryGetSearchCountResponse,
448
+ SentryGetTelemetryStatsResponse,
449
+ SentryRecordPerformanceRequest,
450
+ SentryRecordPerformanceResponse,
451
+ SentryUpdateUserRequest,
452
+ } from './types/sentry'
453
+
454
+ // ============================================================================
455
+ // Sentry Events
456
+ // ============================================================================
457
+
458
+ import type {
459
+ PluginStorageDeleteRequest,
460
+ PluginStorageGetRequest,
461
+ PluginStorageSetRequest,
462
+ StorageDeleteRequest,
463
+ StorageGetRequest,
464
+ StorageGetVersionedResponse,
465
+ StorageSaveRequest,
466
+ StorageSaveResult,
467
+ StorageSetRequest,
468
+ StorageLegacyUpdatePayload,
469
+ StorageUpdateNotification,
470
+ } from './types/storage'
471
+
472
+ import type {
473
+ TransportPortClosePayload,
474
+ TransportPortConfirmPayload,
475
+ TransportPortErrorPayload,
476
+ TransportPortUpgradeRequest,
477
+ TransportPortUpgradeResponse,
478
+ } from './types/transport'
479
+
480
+ import type {
481
+ TrayAutostartGetResponse,
482
+ TrayAutostartUpdateRequest,
483
+ TrayAutostartUpdateResponse,
484
+ TrayHideDockSetResponse,
485
+ TrayShowGetResponse,
486
+ TrayShowSetRequest,
487
+ TrayShowSetResponse,
488
+ } from './types/tray'
489
+
490
+ // ============================================================================
491
+ // Clipboard Events
492
+ // ============================================================================
493
+
494
+ import type {
495
+ UpdateAutoCheckRequest,
496
+ UpdateAutoDownloadRequest,
497
+ UpdateAvailablePayload,
498
+ UpdateCachedReleaseRequest,
499
+ UpdateCheckRequest,
500
+ UpdateCheckResponse,
501
+ UpdateDownloadRequest,
502
+ UpdateDownloadResponse,
503
+ UpdateGetCachedReleaseResponse,
504
+ UpdateGetSettingsResponse,
505
+ UpdateGetStatusResponse,
506
+ UpdateIgnoreVersionRequest,
507
+ UpdateInstallRequest,
508
+ UpdateOpResponse,
509
+ UpdateRecordActionRequest,
510
+ UpdateUpdateSettingsRequest,
511
+ } from './types/update'
512
+
513
+ // ============================================================================
514
+ // MetaOverlay Events
515
+ // ============================================================================
516
+
517
+ import { defineEvent, defineRawEvent } from '../event/builder'
518
+
519
+ // ============================================================================
520
+ // File Index Events
521
+ // ============================================================================
522
+
523
+ import { MetaOverlayEvents } from './meta-overlay'
524
+
525
+ // Re-export all types for convenience
526
+ export * from './types'
527
+
528
+ /**
529
+ * Application-level events for window management, system info, and analytics.
530
+ */
531
+ export const AppEvents = {
532
+ /**
533
+ * Window management events.
534
+ */
535
+ window: {
536
+ /**
537
+ * Close the application window.
538
+ */
539
+ close: defineEvent('app')
540
+ .module('window')
541
+ .event('close')
542
+ .define<void, void>(),
543
+
544
+ /**
545
+ * Minimize the application window.
546
+ */
547
+ minimize: defineEvent('app')
548
+ .module('window')
549
+ .event('minimize')
550
+ .define<void, void>(),
551
+
552
+ /**
553
+ * Hide the application window.
554
+ */
555
+ hide: defineEvent('app')
556
+ .module('window')
557
+ .event('hide')
558
+ .define<void, void>(),
559
+
560
+ /**
561
+ * Focus the application window.
562
+ */
563
+ focus: defineEvent('app')
564
+ .module('window')
565
+ .event('focus')
566
+ .define<void, void>(),
567
+
568
+ /**
569
+ * Request renderer to navigate.
570
+ */
571
+ navigate: defineEvent('app')
572
+ .module('window')
573
+ .event('navigate')
574
+ .define<NavigateRequest, void>(),
575
+
576
+ /**
577
+ * Request renderer to open download center.
578
+ */
579
+ openDownloadCenter: defineEvent('app')
580
+ .module('window')
581
+ .event('open-download-center')
582
+ .define<void, void>(),
583
+ },
584
+
585
+ /**
586
+ * App lifecycle events.
587
+ */
588
+ lifecycle: {
589
+ /**
590
+ * Fired before the app begins shutdown.
591
+ */
592
+ beforeQuit: defineEvent('app')
593
+ .module('lifecycle')
594
+ .event('before-quit')
595
+ .define<void, void>(),
596
+ },
597
+
598
+ /**
599
+ * I18n / locale events.
600
+ */
601
+ i18n: {
602
+ /**
603
+ * Set main-process locale.
604
+ */
605
+ setLocale: defineEvent('app')
606
+ .module('i18n')
607
+ .event('set-locale')
608
+ .define<SetLocaleRequest, void>(),
609
+ },
610
+
611
+ /**
612
+ * System information events.
613
+ */
614
+ system: {
615
+ /**
616
+ * Get operating system information.
617
+ */
618
+ getOS: defineEvent('app')
619
+ .module('system')
620
+ .event('get-os')
621
+ .define<void, OSInfo>(),
622
+
623
+ /**
624
+ * Get application package information.
625
+ */
626
+ getPackage: defineEvent('app')
627
+ .module('system')
628
+ .event('get-package')
629
+ .define<void, PackageInfo>(),
630
+
631
+ /**
632
+ * Open an external URL in the default browser.
633
+ */
634
+ openExternal: defineEvent('app')
635
+ .module('system')
636
+ .event('open-external')
637
+ .define<OpenExternalRequest, void>(),
638
+
639
+ /**
640
+ * Show a file/folder in the system file manager.
641
+ */
642
+ showInFolder: defineEvent('app')
643
+ .module('system')
644
+ .event('show-in-folder')
645
+ .define<ShowInFolderRequest, void>(),
646
+
647
+ /**
648
+ * Open an application.
649
+ */
650
+ openApp: defineEvent('app')
651
+ .module('system')
652
+ .event('open-app')
653
+ .define<OpenAppRequest, void>(),
654
+
655
+ /**
656
+ * Open intelligence prompts folder.
657
+ */
658
+ openPromptsFolder: defineEvent('app')
659
+ .module('system')
660
+ .event('open-prompts-folder')
661
+ .define<void, void>(),
662
+
663
+ /**
664
+ * Execute a command/open a path.
665
+ */
666
+ executeCommand: defineEvent('app')
667
+ .module('system')
668
+ .event('execute-command')
669
+ .define<ExecuteCommandRequest, ExecuteCommandResponse>(),
670
+
671
+ /**
672
+ * Get current working directory.
673
+ */
674
+ getCwd: defineEvent('app')
675
+ .module('system')
676
+ .event('get-cwd')
677
+ .define<void, string>(),
678
+
679
+ /**
680
+ * Resolve an Electron app path.
681
+ */
682
+ getPath: defineEvent('app')
683
+ .module('system')
684
+ .event('get-path')
685
+ .define<GetPathRequest, string | null>(),
686
+
687
+ /**
688
+ * Read a secure local value.
689
+ */
690
+ getSecureValue: defineEvent('app')
691
+ .module('system')
692
+ .event('get-secure-value')
693
+ .define<SecureValueGetRequest, string | null>(),
694
+
695
+ /**
696
+ * Write a secure local value.
697
+ */
698
+ setSecureValue: defineEvent('app')
699
+ .module('system')
700
+ .event('set-secure-value')
701
+ .define<SecureValueSetRequest, void>(),
702
+
703
+ /**
704
+ * Read a local file as text.
705
+ */
706
+ readFile: defineEvent('app')
707
+ .module('system')
708
+ .event('read-file')
709
+ .define<ReadFileRequest, string>(),
710
+
711
+ /**
712
+ * Get startup handshake info.
713
+ */
714
+ startup: defineEvent('app')
715
+ .module('system')
716
+ .event('startup')
717
+ .define<StartupRequest, StartupResponse>(),
718
+ },
719
+
720
+ /**
721
+ * Power / battery events.
722
+ */
723
+ power: {
724
+ /**
725
+ * Battery status broadcast.
726
+ */
727
+ batteryStatus: defineRawEvent<BatteryStatusPayload, void>('power:battery-status'),
728
+ },
729
+
730
+ /**
731
+ * File index events.
732
+ */
733
+ fileIndex: {
734
+ /**
735
+ * Get current indexing status.
736
+ */
737
+ status: defineEvent('app')
738
+ .module('file-index')
739
+ .event('status')
740
+ .define<void, FileIndexStatus>(),
741
+
742
+ /**
743
+ * Get indexing statistics.
744
+ */
745
+ stats: defineEvent('app')
746
+ .module('file-index')
747
+ .event('stats')
748
+ .define<void, FileIndexStats>(),
749
+
750
+ /**
751
+ * Trigger a full index rebuild.
752
+ */
753
+ rebuild: defineEvent('app')
754
+ .module('file-index')
755
+ .event('rebuild')
756
+ .define<FileIndexRebuildRequest | void, FileIndexRebuildResult>(),
757
+
758
+ /**
759
+ * Get current battery status (for indexing throttling UI).
760
+ */
761
+ batteryLevel: defineEvent('app')
762
+ .module('file-index')
763
+ .event('battery-level')
764
+ .define<void, FileIndexBatteryStatus | null>(),
765
+
766
+ /**
767
+ * Stream indexing progress updates.
768
+ */
769
+ progress: defineEvent('app')
770
+ .module('file-index')
771
+ .event('progress')
772
+ .define<void, AsyncIterable<FileIndexProgress>>({
773
+ stream: { enabled: true },
774
+ }),
775
+
776
+ /**
777
+ * Get list of failed files with error details.
778
+ */
779
+ failedFiles: defineEvent('app')
780
+ .module('file-index')
781
+ .event('failed-files')
782
+ .define<void, FileIndexFailedFile[]>(),
783
+
784
+ /**
785
+ * Add a path to file index watch list.
786
+ */
787
+ addPath: defineEvent('app')
788
+ .module('file-index')
789
+ .event('add-path')
790
+ .define<FileIndexAddPathRequest, FileIndexAddPathResult>(),
791
+ },
792
+
793
+ /**
794
+ * Device idle policy events.
795
+ */
796
+ deviceIdle: {
797
+ /**
798
+ * Get device idle settings.
799
+ */
800
+ getSettings: defineEvent('app')
801
+ .module('device-idle')
802
+ .event('settings.get')
803
+ .define<void, DeviceIdleSettings>(),
804
+
805
+ /**
806
+ * Update device idle settings.
807
+ */
808
+ updateSettings: defineEvent('app')
809
+ .module('device-idle')
810
+ .event('settings.update')
811
+ .define<Partial<DeviceIdleSettings>, DeviceIdleSettings>(),
812
+ },
813
+
814
+ /**
815
+ * App index scheduling events.
816
+ */
817
+ appIndex: {
818
+ /**
819
+ * Get app index settings.
820
+ */
821
+ getSettings: defineEvent('app')
822
+ .module('app-index')
823
+ .event('settings.get')
824
+ .define<void, AppIndexSettings>(),
825
+
826
+ /**
827
+ * Update app index settings.
828
+ */
829
+ updateSettings: defineEvent('app')
830
+ .module('app-index')
831
+ .event('settings.update')
832
+ .define<Partial<AppIndexSettings>, AppIndexSettings>(),
833
+
834
+ /**
835
+ * Add an application path to the index list.
836
+ */
837
+ addPath: defineEvent('app')
838
+ .module('app-index')
839
+ .event('add-path')
840
+ .define<AppIndexAddPathRequest, AppIndexAddPathResult>(),
841
+ },
842
+
843
+ /**
844
+ * Debug and developer tools events.
845
+ */
846
+ debug: {
847
+ /**
848
+ * Open developer tools.
849
+ */
850
+ openDevTools: defineEvent('app')
851
+ .module('debug')
852
+ .event('open-devtools')
853
+ .define<DevToolsOptions | void, void>(),
854
+ },
855
+
856
+ /**
857
+ * Build verification events.
858
+ */
859
+ build: {
860
+ /**
861
+ * Get build verification status.
862
+ */
863
+ getVerificationStatus: defineEvent('app')
864
+ .module('build')
865
+ .event('get-verification-status')
866
+ .define<void, BuildVerificationStatus>(),
867
+
868
+ /**
869
+ * Legacy build verification status request.
870
+ */
871
+ getVerificationStatusLegacy: defineRawEvent<void, BuildVerificationStatus>(
872
+ 'build:get-verification-status',
873
+ ),
874
+
875
+ /**
876
+ * Build verification status broadcast.
877
+ */
878
+ statusUpdated: defineRawEvent<BuildVerificationStatus, void>(
879
+ 'build:verification-status',
880
+ ),
881
+ },
882
+
883
+ /**
884
+ * Analytics and metrics events.
885
+ */
886
+ analytics: {
887
+ /**
888
+ * Get aggregated metrics snapshot for a specific window.
889
+ */
890
+ getSnapshot: defineEvent('app')
891
+ .module('analytics')
892
+ .event('get-snapshot')
893
+ .define<AnalyticsSnapshotRequest, AnalyticsSnapshot>(),
894
+
895
+ /**
896
+ * Get metrics snapshots within a time range.
897
+ */
898
+ getRange: defineEvent('app')
899
+ .module('analytics')
900
+ .event('get-range')
901
+ .define<AnalyticsRangeRequest, AnalyticsSnapshot[]>(),
902
+
903
+ /**
904
+ * Export metrics for a window/range.
905
+ */
906
+ export: defineEvent('app')
907
+ .module('analytics')
908
+ .event('export')
909
+ .define<AnalyticsExportPayload, AnalyticsExportResult>(),
910
+
911
+ /**
912
+ * Toggle analytics reporting.
913
+ */
914
+ toggleReporting: defineEvent('app')
915
+ .module('analytics')
916
+ .event('toggle-reporting')
917
+ .define<AnalyticsToggleRequest, { enabled: boolean }>(),
918
+
919
+ /**
920
+ * Analytics message center events.
921
+ */
922
+ messages: {
923
+ list: defineEvent('app')
924
+ .module('analytics')
925
+ .event('messages.list')
926
+ .define<AnalyticsMessageListRequest, AnalyticsMessage[]>(),
927
+
928
+ mark: defineEvent('app')
929
+ .module('analytics')
930
+ .event('messages.mark')
931
+ .define<AnalyticsMessageUpdateRequest, AnalyticsMessage | null>(),
932
+ },
933
+
934
+ /**
935
+ * SDK-level plugin analytics events.
936
+ */
937
+ sdk: {
938
+ trackEvent: defineEvent('app')
939
+ .module('analytics')
940
+ .event('sdk.track-event')
941
+ .define<TrackEventPayload, { ok: true }>(),
942
+
943
+ trackDuration: defineEvent('app')
944
+ .module('analytics')
945
+ .event('sdk.track-duration')
946
+ .define<TrackDurationPayload, { ok: true }>(),
947
+
948
+ getStats: defineEvent('app')
949
+ .module('analytics')
950
+ .event('sdk.get-stats')
951
+ .define<{ pluginName?: string, pluginVersion?: string }, PluginStats>(),
952
+
953
+ getFeatureStats: defineEvent('app')
954
+ .module('analytics')
955
+ .event('sdk.get-feature-stats')
956
+ .define<{ pluginName?: string, pluginVersion?: string, featureId: string }, FeatureStats>(),
957
+
958
+ getTopFeatures: defineEvent('app')
959
+ .module('analytics')
960
+ .event('sdk.get-top-features')
961
+ .define<{ pluginName?: string, pluginVersion?: string, limit?: number }, Array<{ id: string, count: number }>>(),
962
+
963
+ incrementCounter: defineEvent('app')
964
+ .module('analytics')
965
+ .event('sdk.increment-counter')
966
+ .define<CounterPayload, { ok: true }>(),
967
+
968
+ setGauge: defineEvent('app')
969
+ .module('analytics')
970
+ .event('sdk.set-gauge')
971
+ .define<GaugePayload, { ok: true }>(),
972
+
973
+ recordHistogram: defineEvent('app')
974
+ .module('analytics')
975
+ .event('sdk.record-histogram')
976
+ .define<HistogramPayload, { ok: true }>(),
977
+ },
978
+
979
+ /**
980
+ * Get current performance metrics.
981
+ * @deprecated Use analytics.getSnapshot instead.
982
+ */
983
+ getCurrent: defineEvent('app')
984
+ .module('analytics')
985
+ .event('get-current')
986
+ .define<void, CurrentMetrics>(),
987
+
988
+ /**
989
+ * Get performance history.
990
+ */
991
+ getHistory: defineEvent('app')
992
+ .module('analytics')
993
+ .event('get-history')
994
+ .define<void, PerformanceHistoryEntry[]>(),
995
+
996
+ /**
997
+ * Get performance summary.
998
+ */
999
+ getSummary: defineEvent('app')
1000
+ .module('analytics')
1001
+ .event('get-summary')
1002
+ .define<void, PerformanceSummary>(),
1003
+
1004
+ /**
1005
+ * Report metrics to an endpoint (legacy).
1006
+ * @deprecated Use analytics.export instead.
1007
+ */
1008
+ report: defineEvent('app')
1009
+ .module('analytics')
1010
+ .event('report')
1011
+ .define<ReportMetricsRequest, ReportMetricsResponse>(),
1012
+
1013
+ /**
1014
+ * Report renderer performance incidents.
1015
+ */
1016
+ perfReport: defineEvent('app')
1017
+ .module('analytics')
1018
+ .event('perf-report')
1019
+ .define<RendererPerfReport, void>(),
1020
+ },
1021
+ } as const
1022
+
1023
+ // ============================================================================
1024
+ // Download Events
1025
+ // ============================================================================
1026
+
1027
+ export const DownloadEvents = {
1028
+ task: {
1029
+ add: defineEvent('download')
1030
+ .module('task')
1031
+ .event('add')
1032
+ .define<DownloadAddTaskRequest, DownloadAddTaskResponse>(),
1033
+
1034
+ pause: defineEvent('download')
1035
+ .module('task')
1036
+ .event('pause')
1037
+ .define<DownloadTaskIdRequest, DownloadOpResponse>(),
1038
+
1039
+ resume: defineEvent('download')
1040
+ .module('task')
1041
+ .event('resume')
1042
+ .define<DownloadTaskIdRequest, DownloadOpResponse>(),
1043
+
1044
+ cancel: defineEvent('download')
1045
+ .module('task')
1046
+ .event('cancel')
1047
+ .define<DownloadTaskIdRequest, DownloadOpResponse>(),
1048
+
1049
+ retry: defineEvent('download')
1050
+ .module('task')
1051
+ .event('retry')
1052
+ .define<DownloadTaskIdRequest, DownloadOpResponse>(),
1053
+
1054
+ remove: defineEvent('download')
1055
+ .module('task')
1056
+ .event('remove')
1057
+ .define<DownloadTaskIdRequest, DownloadOpResponse>(),
1058
+
1059
+ getStatus: defineEvent('download')
1060
+ .module('task')
1061
+ .event('get-status')
1062
+ .define<DownloadTaskIdRequest, DownloadGetTaskStatusResponse>(),
1063
+
1064
+ updatePriority: defineEvent('download')
1065
+ .module('task')
1066
+ .event('update-priority')
1067
+ .define<DownloadUpdatePriorityRequest, DownloadOpResponse>(),
1068
+
1069
+ pauseAll: defineEvent('download')
1070
+ .module('task')
1071
+ .event('pause-all')
1072
+ .define<void, DownloadOpResponse>(),
1073
+
1074
+ resumeAll: defineEvent('download')
1075
+ .module('task')
1076
+ .event('resume-all')
1077
+ .define<void, DownloadOpResponse>(),
1078
+
1079
+ cancelAll: defineEvent('download')
1080
+ .module('task')
1081
+ .event('cancel-all')
1082
+ .define<void, DownloadOpResponse>(),
1083
+ },
1084
+
1085
+ list: {
1086
+ getAll: defineEvent('download')
1087
+ .module('list')
1088
+ .event('get')
1089
+ .define<void, DownloadGetTasksResponse>(),
1090
+
1091
+ getByStatus: defineEvent('download')
1092
+ .module('list')
1093
+ .event('get-by-status')
1094
+ .define<DownloadGetTasksByStatusRequest, DownloadGetTasksResponse>(),
1095
+ },
1096
+
1097
+ config: {
1098
+ get: defineEvent('download')
1099
+ .module('config')
1100
+ .event('get')
1101
+ .define<void, DownloadGetConfigResponse>(),
1102
+
1103
+ update: defineEvent('download')
1104
+ .module('config')
1105
+ .event('update')
1106
+ .define<DownloadUpdateConfigRequest, DownloadOpResponse>(),
1107
+
1108
+ getNotification: defineEvent('download')
1109
+ .module('config')
1110
+ .event('get-notification')
1111
+ .define<void, DownloadGetNotificationConfigResponse>(),
1112
+
1113
+ updateNotification: defineEvent('download')
1114
+ .module('config')
1115
+ .event('update-notification')
1116
+ .define<DownloadUpdateNotificationConfigRequest, DownloadOpResponse>(),
1117
+ },
1118
+
1119
+ history: {
1120
+ get: defineEvent('download')
1121
+ .module('history')
1122
+ .event('get')
1123
+ .define<DownloadGetHistoryRequest, DownloadGetHistoryResponse>(),
1124
+
1125
+ clear: defineEvent('download')
1126
+ .module('history')
1127
+ .event('clear')
1128
+ .define<void, DownloadOpResponse>(),
1129
+
1130
+ clearItem: defineEvent('download')
1131
+ .module('history')
1132
+ .event('clear-item')
1133
+ .define<DownloadClearHistoryItemRequest, DownloadOpResponse>(),
1134
+ },
1135
+
1136
+ file: {
1137
+ open: defineEvent('download')
1138
+ .module('file')
1139
+ .event('open')
1140
+ .define<DownloadTaskIdRequest, DownloadOpResponse>(),
1141
+
1142
+ showInFolder: defineEvent('download')
1143
+ .module('file')
1144
+ .event('show-in-folder')
1145
+ .define<DownloadTaskIdRequest, DownloadOpResponse>(),
1146
+
1147
+ delete: defineEvent('download')
1148
+ .module('file')
1149
+ .event('delete')
1150
+ .define<DownloadTaskIdRequest, DownloadOpResponse>(),
1151
+ },
1152
+
1153
+ maintenance: {
1154
+ cleanupTemp: defineEvent('download')
1155
+ .module('maintenance')
1156
+ .event('cleanup-temp')
1157
+ .define<void, DownloadOpResponse>(),
1158
+ },
1159
+
1160
+ logs: {
1161
+ get: defineEvent('download')
1162
+ .module('logs')
1163
+ .event('get')
1164
+ .define<{ limit?: number }, DownloadGetLogsResponse>(),
1165
+
1166
+ getErrorStats: defineEvent('download')
1167
+ .module('logs')
1168
+ .event('get-error-stats')
1169
+ .define<void, DownloadGetErrorStatsResponse>(),
1170
+
1171
+ clear: defineEvent('download')
1172
+ .module('logs')
1173
+ .event('clear')
1174
+ .define<void, DownloadOpResponse>(),
1175
+ },
1176
+
1177
+ temp: {
1178
+ getStats: defineEvent('download')
1179
+ .module('temp')
1180
+ .event('get-stats')
1181
+ .define<void, DownloadGetTempStatsResponse>(),
1182
+ },
1183
+
1184
+ stats: {
1185
+ get: defineEvent('download')
1186
+ .module('stats')
1187
+ .event('get')
1188
+ .define<void, DownloadGetStatsResponse>(),
1189
+ },
1190
+
1191
+ migration: {
1192
+ checkNeeded: defineEvent('download')
1193
+ .module('migration')
1194
+ .event('check-needed')
1195
+ .define<void, DownloadMigrationNeededResponse>(),
1196
+
1197
+ start: defineEvent('download')
1198
+ .module('migration')
1199
+ .event('start')
1200
+ .define<void, DownloadMigrationStartResponse>(),
1201
+
1202
+ retry: defineEvent('download')
1203
+ .module('migration')
1204
+ .event('retry')
1205
+ .define<void, DownloadMigrationRetryResponse>(),
1206
+
1207
+ status: defineEvent('download')
1208
+ .module('migration')
1209
+ .event('status')
1210
+ .define<void, DownloadMigrationStatusResponse>(),
1211
+ },
1212
+
1213
+ push: {
1214
+ taskAdded: defineEvent('download')
1215
+ .module('push')
1216
+ .event('task-added')
1217
+ .define<DownloadTaskPayload, void>(),
1218
+
1219
+ taskProgress: defineEvent('download')
1220
+ .module('push')
1221
+ .event('task-progress')
1222
+ .define<DownloadTaskPayload, void>(),
1223
+
1224
+ taskCompleted: defineEvent('download')
1225
+ .module('push')
1226
+ .event('task-completed')
1227
+ .define<DownloadTaskPayload, void>(),
1228
+
1229
+ taskFailed: defineEvent('download')
1230
+ .module('push')
1231
+ .event('task-failed')
1232
+ .define<DownloadTaskPayload, void>(),
1233
+
1234
+ taskUpdated: defineEvent('download')
1235
+ .module('push')
1236
+ .event('task-updated')
1237
+ .define<DownloadTaskPayload, void>(),
1238
+
1239
+ taskRetrying: defineEvent('download')
1240
+ .module('push')
1241
+ .event('task-retrying')
1242
+ .define<DownloadTaskRetryingPayload, void>(),
1243
+
1244
+ notificationClicked: defineEvent('download')
1245
+ .module('push')
1246
+ .event('notification-clicked')
1247
+ .define<DownloadNotificationClickedPayload, void>(),
1248
+ },
1249
+ } as const
1250
+
1251
+ // ============================================================================
1252
+ // Update Events
1253
+ // ============================================================================
1254
+
1255
+ export const UpdateEvents = {
1256
+ check: defineEvent('update')
1257
+ .module('service')
1258
+ .event('check')
1259
+ .define<UpdateCheckRequest, UpdateCheckResponse>(),
1260
+
1261
+ getSettings: defineEvent('update')
1262
+ .module('service')
1263
+ .event('get-settings')
1264
+ .define<void, UpdateGetSettingsResponse>(),
1265
+
1266
+ updateSettings: defineEvent('update')
1267
+ .module('service')
1268
+ .event('update-settings')
1269
+ .define<UpdateUpdateSettingsRequest, UpdateOpResponse>(),
1270
+
1271
+ getStatus: defineEvent('update')
1272
+ .module('service')
1273
+ .event('get-status')
1274
+ .define<void, UpdateGetStatusResponse>(),
1275
+
1276
+ clearCache: defineEvent('update')
1277
+ .module('service')
1278
+ .event('clear-cache')
1279
+ .define<void, UpdateOpResponse>(),
1280
+
1281
+ getCachedRelease: defineEvent('update')
1282
+ .module('service')
1283
+ .event('get-cached-release')
1284
+ .define<UpdateCachedReleaseRequest, UpdateGetCachedReleaseResponse>(),
1285
+
1286
+ recordAction: defineEvent('update')
1287
+ .module('service')
1288
+ .event('record-action')
1289
+ .define<UpdateRecordActionRequest, UpdateOpResponse>(),
1290
+
1291
+ download: defineEvent('update')
1292
+ .module('service')
1293
+ .event('download')
1294
+ .define<UpdateDownloadRequest, UpdateDownloadResponse>(),
1295
+
1296
+ install: defineEvent('update')
1297
+ .module('service')
1298
+ .event('install')
1299
+ .define<UpdateInstallRequest, UpdateOpResponse>(),
1300
+
1301
+ ignoreVersion: defineEvent('update')
1302
+ .module('service')
1303
+ .event('ignore-version')
1304
+ .define<UpdateIgnoreVersionRequest, UpdateOpResponse>(),
1305
+
1306
+ setAutoDownload: defineEvent('update')
1307
+ .module('service')
1308
+ .event('set-auto-download')
1309
+ .define<UpdateAutoDownloadRequest, UpdateOpResponse>(),
1310
+
1311
+ setAutoCheck: defineEvent('update')
1312
+ .module('service')
1313
+ .event('set-auto-check')
1314
+ .define<UpdateAutoCheckRequest, UpdateOpResponse>(),
1315
+
1316
+ available: defineEvent('update')
1317
+ .module('push')
1318
+ .event('available')
1319
+ .define<UpdateAvailablePayload, void>(),
1320
+ } as const
1321
+
1322
+ // ============================================================================
1323
+ // Flow Events
1324
+ // ============================================================================
1325
+
1326
+ export const FlowEvents = {
1327
+ dispatch: defineEvent('flow')
1328
+ .module('bus')
1329
+ .event('dispatch')
1330
+ .define<FlowDispatchRequest, FlowDispatchResponse>(),
1331
+
1332
+ getTargets: defineEvent('flow')
1333
+ .module('bus')
1334
+ .event('get-targets')
1335
+ .define<FlowGetTargetsRequest, FlowGetTargetsResponse>(),
1336
+
1337
+ cancel: defineEvent('flow')
1338
+ .module('bus')
1339
+ .event('cancel')
1340
+ .define<{ sessionId: string, _sdkapi?: number }, FlowCancelResponse>(),
1341
+
1342
+ acknowledge: defineEvent('flow')
1343
+ .module('bus')
1344
+ .event('acknowledge')
1345
+ .define<FlowAcknowledgeRequest, FlowAcknowledgeResponse>(),
1346
+
1347
+ reportError: defineEvent('flow')
1348
+ .module('bus')
1349
+ .event('report-error')
1350
+ .define<FlowReportErrorRequest, FlowReportErrorResponse>(),
1351
+
1352
+ selectTarget: defineEvent('flow')
1353
+ .module('bus')
1354
+ .event('select-target')
1355
+ .define<FlowSelectTargetRequest, FlowSelectTargetResponse>(),
1356
+
1357
+ checkConsent: defineEvent('flow')
1358
+ .module('consent')
1359
+ .event('check')
1360
+ .define<FlowConsentCheckRequest, FlowConsentCheckResponse>(),
1361
+
1362
+ grantConsent: defineEvent('flow')
1363
+ .module('consent')
1364
+ .event('grant')
1365
+ .define<FlowConsentGrantRequest, FlowConsentGrantResponse>(),
1366
+
1367
+ sessionUpdate: defineEvent('flow')
1368
+ .module('session')
1369
+ .event('update')
1370
+ .define<FlowSessionUpdatePayload, void>(),
1371
+
1372
+ deliver: defineEvent('flow')
1373
+ .module('session')
1374
+ .event('deliver')
1375
+ .define<FlowDeliverPayload, void>(),
1376
+
1377
+ triggerTransfer: defineEvent('flow')
1378
+ .module('ui')
1379
+ .event('trigger-transfer')
1380
+ .define<void, void>(),
1381
+
1382
+ triggerDetach: defineEvent('flow')
1383
+ .module('ui')
1384
+ .event('trigger-detach')
1385
+ .define<void, void>(),
1386
+
1387
+ registerTargets: defineEvent('flow')
1388
+ .module('plugin')
1389
+ .event('register-targets')
1390
+ .define<FlowRegisterTargetsRequest, { success: boolean }>(),
1391
+
1392
+ unregisterTargets: defineEvent('flow')
1393
+ .module('plugin')
1394
+ .event('unregister-targets')
1395
+ .define<FlowUnregisterTargetsRequest, { success: boolean }>(),
1396
+
1397
+ setPluginEnabled: defineEvent('flow')
1398
+ .module('plugin')
1399
+ .event('set-plugin-enabled')
1400
+ .define<FlowSetPluginEnabledRequest, { success: boolean }>(),
1401
+
1402
+ setPluginHandler: defineEvent('flow')
1403
+ .module('plugin')
1404
+ .event('set-plugin-handler')
1405
+ .define<FlowSetPluginHandlerRequest, { success: boolean }>(),
1406
+
1407
+ nativeShare: defineEvent('flow')
1408
+ .module('native')
1409
+ .event('share')
1410
+ .define<FlowNativeShareRequest, FlowNativeShareResponse>(),
1411
+ } as const
1412
+
1413
+ // ============================================================================
1414
+ // DivisionBox Events
1415
+ // ============================================================================
1416
+
1417
+ export const DivisionBoxEvents = {
1418
+ open: defineEvent('division-box')
1419
+ .module('session')
1420
+ .event('open')
1421
+ .define<DivisionBoxOpenRequest, DivisionBoxOpenResponse>(),
1422
+
1423
+ close: defineEvent('division-box')
1424
+ .module('session')
1425
+ .event('close')
1426
+ .define<DivisionBoxCloseRequest, DivisionBoxCloseResponse>(),
1427
+
1428
+ getState: defineEvent('division-box')
1429
+ .module('session')
1430
+ .event('get-state')
1431
+ .define<DivisionBoxGetStateRequest, DivisionBoxGetStateResponse>(),
1432
+
1433
+ updateState: defineEvent('division-box')
1434
+ .module('session')
1435
+ .event('update-state')
1436
+ .define<DivisionBoxUpdateStateRequest, DivisionBoxUpdateStateResponse>(),
1437
+
1438
+ getActiveSessions: defineEvent('division-box')
1439
+ .module('session')
1440
+ .event('get-active-sessions')
1441
+ .define<DivisionBoxGetActiveSessionsRequest, DivisionBoxGetActiveSessionsResponse>(),
1442
+
1443
+ stateChanged: defineEvent('division-box')
1444
+ .module('session')
1445
+ .event('state-changed')
1446
+ .define<DivisionBoxStateChangedPayload, void>(),
1447
+
1448
+ sessionDestroyed: defineEvent('division-box')
1449
+ .module('session')
1450
+ .event('session-destroyed')
1451
+ .define<DivisionBoxSessionDestroyedPayload, void>(),
1452
+
1453
+ togglePin: defineEvent('division-box')
1454
+ .module('window')
1455
+ .event('toggle-pin')
1456
+ .define<DivisionBoxTogglePinRequest, DivisionBoxTogglePinResponse>(),
1457
+
1458
+ setOpacity: defineEvent('division-box')
1459
+ .module('window')
1460
+ .event('set-opacity')
1461
+ .define<DivisionBoxSetOpacityRequest, DivisionBoxSetOpacityResponse>(),
1462
+
1463
+ toggleDevTools: defineEvent('division-box')
1464
+ .module('window')
1465
+ .event('toggle-devtools')
1466
+ .define<DivisionBoxToggleDevToolsRequest, DivisionBoxToggleDevToolsResponse>(),
1467
+
1468
+ getWindowState: defineEvent('division-box')
1469
+ .module('window')
1470
+ .event('get-window-state')
1471
+ .define<DivisionBoxGetWindowStateRequest, DivisionBoxGetWindowStateResponse>(),
1472
+
1473
+ inputChange: defineEvent('division-box')
1474
+ .module('ui')
1475
+ .event('input-change')
1476
+ .define<DivisionBoxInputChangeRequest, DivisionBoxInputChangeResponse>(),
1477
+
1478
+ flowTrigger: defineEvent('division-box')
1479
+ .module('flow')
1480
+ .event('trigger')
1481
+ .define<DivisionBoxFlowTriggerRequest, DivisionBoxFlowTriggerResponse>(),
1482
+ } as const
1483
+
1484
+ /**
1485
+ * CoreBox events for search, UI control, and input management.
1486
+ */
1487
+ export const CoreBoxEvents = {
1488
+ /**
1489
+ * UI control events.
1490
+ */
1491
+ ui: {
1492
+ /**
1493
+ * Show the CoreBox window.
1494
+ */
1495
+ show: defineRawEvent<void, void>('core-box:show'),
1496
+
1497
+ /**
1498
+ * Hide the CoreBox window.
1499
+ */
1500
+ hide: defineRawEvent<void, void>('core-box:hide'),
1501
+
1502
+ /**
1503
+ * Expand or collapse the CoreBox.
1504
+ */
1505
+ expand: defineRawEvent<ExpandOptions | number, void>('core-box:expand'),
1506
+
1507
+ /**
1508
+ * Focus the CoreBox window.
1509
+ */
1510
+ focusWindow: defineRawEvent<void, FocusWindowResponse>('core-box:focus-window'),
1511
+
1512
+ /**
1513
+ * Forward a key event to the attached UI view.
1514
+ */
1515
+ forwardKeyEvent: defineRawEvent<CoreBoxForwardKeyEvent, void>('core-box:forward-key-event'),
1516
+
1517
+ /**
1518
+ * Query current UI view state.
1519
+ */
1520
+ getUIViewState: defineRawEvent<void, CoreBoxUIViewStateResponse>('core-box:get-ui-view-state'),
1521
+
1522
+ /**
1523
+ * Notify renderer that CoreBox was triggered by shortcut.
1524
+ */
1525
+ shortcutTriggered: defineRawEvent<void, void>('core-box:shortcut-triggered'),
1526
+
1527
+ /**
1528
+ * Notify renderer that UI mode exited.
1529
+ */
1530
+ uiModeExited: defineRawEvent<CoreBoxUIModeExitedPayload, void>('core-box:ui-mode-exited'),
1531
+ },
1532
+
1533
+ /**
1534
+ * Layout events (renderer -> main).
1535
+ */
1536
+ layout: {
1537
+ /**
1538
+ * Report current desired window height and state flags.
1539
+ *
1540
+ * @remarks
1541
+ * This event is expected to be sent frequently. The main process should
1542
+ * coalesce updates and decide when/how to resize the window.
1543
+ */
1544
+ update: defineEvent('core-box')
1545
+ .module('layout')
1546
+ .event('update')
1547
+ .define<CoreBoxLayoutUpdateRequest, void>({
1548
+ batch: { enabled: true, windowMs: 16, mergeStrategy: 'latest' },
1549
+ }),
1550
+ },
1551
+
1552
+ /**
1553
+ * Search events.
1554
+ */
1555
+ search: {
1556
+ /**
1557
+ * Execute a search query.
1558
+ *
1559
+ * @remarks
1560
+ * This event supports streaming results via MessagePort.
1561
+ */
1562
+ query: defineRawEvent<{ query: TuffQuery }, TuffSearchResult>('core-box:query', {
1563
+ stream: { enabled: true, bufferSize: 100 },
1564
+ }),
1565
+
1566
+ /**
1567
+ * Cancel an in-progress search.
1568
+ */
1569
+ cancel: defineRawEvent<CancelSearchRequest, CancelSearchResponse>('core-box:cancel-search'),
1570
+
1571
+ /**
1572
+ * Push incremental search results to renderer.
1573
+ */
1574
+ update: defineRawEvent<CoreBoxSearchUpdatePayload, void>('core-box:search-update'),
1575
+
1576
+ /**
1577
+ * Mark search finished/cancelled.
1578
+ */
1579
+ end: defineRawEvent<CoreBoxSearchEndPayload, void>('core-box:search-end'),
1580
+
1581
+ /**
1582
+ * Notify renderer about empty results (UI sizing hint).
1583
+ */
1584
+ noResults: defineRawEvent<CoreBoxNoResultsPayload, void>('core-box:no-results'),
1585
+ },
1586
+
1587
+ /**
1588
+ * Input field events.
1589
+ */
1590
+ input: {
1591
+ /**
1592
+ * Get current input value.
1593
+ */
1594
+ get: defineRawEvent<void, GetInputResponse>('core-box:get-input'),
1595
+
1596
+ /**
1597
+ * Set input value.
1598
+ */
1599
+ set: defineRawEvent<SetInputRequest, SetInputResponse>('core-box:set-input'),
1600
+
1601
+ /**
1602
+ * Clear input value.
1603
+ */
1604
+ clear: defineRawEvent<void, ClearInputResponse>('core-box:clear-input'),
1605
+
1606
+ /**
1607
+ * Set input visibility.
1608
+ */
1609
+ setVisibility: defineRawEvent<SetInputVisibilityRequest, void>('core-box:set-input-visibility'),
1610
+
1611
+ /**
1612
+ * Broadcast input changes from renderer.
1613
+ */
1614
+ change: defineRawEvent<CoreBoxInputChangeRequest, void>('core-box:input-change'),
1615
+
1616
+ /**
1617
+ * Request input value from renderer.
1618
+ */
1619
+ requestValue: defineRawEvent<void, GetInputResponse>('core-box:request-input-value'),
1620
+
1621
+ /**
1622
+ * Set query from main process.
1623
+ */
1624
+ setQuery: defineRawEvent<SetInputRequest, void>('core-box:set-query'),
1625
+ },
1626
+
1627
+ /**
1628
+ * Item execution and mutations.
1629
+ */
1630
+ item: {
1631
+ execute: defineRawEvent<CoreBoxExecuteRequest, IProviderActivate[] | null>('core-box:execute'),
1632
+
1633
+ clear: defineRawEvent<CoreBoxClearItemsPayload | void, void>('core-box:clear-items'),
1634
+
1635
+ togglePin: defineRawEvent<CoreBoxTogglePinRequest, CoreBoxTogglePinResponse>('core-box:toggle-pin'),
1636
+ },
1637
+
1638
+ /**
1639
+ * Provider management events.
1640
+ */
1641
+ provider: {
1642
+ /**
1643
+ * Deactivate a specific provider.
1644
+ */
1645
+ deactivate: defineRawEvent<DeactivateProviderRequest, ActivationState>('core-box:deactivate-provider'),
1646
+
1647
+ /**
1648
+ * Deactivate all providers.
1649
+ */
1650
+ deactivateAll: defineRawEvent<void, ActivationState>('core-box:deactivate-providers'),
1651
+
1652
+ /**
1653
+ * Get current activated providers.
1654
+ */
1655
+ getActivated: defineRawEvent<void, ActivationState>('core-box:get-activated-providers'),
1656
+
1657
+ /**
1658
+ * Get details for multiple providers.
1659
+ *
1660
+ * @remarks
1661
+ * This event supports batching for efficiency.
1662
+ */
1663
+ getDetails: defineRawEvent<GetProviderDetailsRequest, ProviderDetail[]>('core-box:get-provider-details', {
1664
+ batch: { enabled: true, windowMs: 50, mergeStrategy: 'dedupe' },
1665
+ }),
1666
+ },
1667
+
1668
+ /**
1669
+ * UI mode events.
1670
+ */
1671
+ uiMode: {
1672
+ /**
1673
+ * Enter plugin UI mode.
1674
+ */
1675
+ enter: defineRawEvent<EnterUIModeRequest, void>('core-box:enter-ui-mode'),
1676
+
1677
+ /**
1678
+ * Exit plugin UI mode.
1679
+ */
1680
+ exit: defineRawEvent<void, void>('core-box:exit-ui-mode'),
1681
+ },
1682
+
1683
+ /**
1684
+ * Clipboard monitoring events.
1685
+ */
1686
+ clipboard: {
1687
+ /**
1688
+ * Allow clipboard monitoring for specific types.
1689
+ */
1690
+ allow: defineRawEvent<AllowClipboardRequest, AllowClipboardResponse>('core-box:allow-clipboard'),
1691
+ },
1692
+
1693
+ /**
1694
+ * Input monitoring events.
1695
+ */
1696
+ inputMonitoring: {
1697
+ /**
1698
+ * Allow input monitoring.
1699
+ */
1700
+ allow: defineEvent('core-box')
1701
+ .module('input-monitoring')
1702
+ .event('allow')
1703
+ .define<void, AllowInputMonitoringResponse>(),
1704
+ },
1705
+ } as const
1706
+
1707
+ /**
1708
+ * Storage events for app and plugin configuration persistence.
1709
+ */
1710
+ export const StorageEvents = {
1711
+ /**
1712
+ * Application storage events.
1713
+ */
1714
+ app: {
1715
+ /**
1716
+ * Get a value from app storage.
1717
+ *
1718
+ * @remarks
1719
+ * This event supports batching for efficiency.
1720
+ */
1721
+ get: defineEvent('storage')
1722
+ .module('app')
1723
+ .event('get')
1724
+ .define<StorageGetRequest, unknown>({
1725
+ batch: { enabled: true, windowMs: 16, maxSize: 20 },
1726
+ }),
1727
+
1728
+ /**
1729
+ * Get a value with version info from app storage.
1730
+ */
1731
+ getVersioned: defineEvent('storage')
1732
+ .module('app')
1733
+ .event('get-versioned')
1734
+ .define<StorageGetRequest, StorageGetVersionedResponse | null>({
1735
+ batch: { enabled: true, windowMs: 16, maxSize: 20 },
1736
+ }),
1737
+
1738
+ /**
1739
+ * Set a value in app storage.
1740
+ *
1741
+ * @remarks
1742
+ * This event supports batching with 'latest' strategy.
1743
+ */
1744
+ set: defineEvent('storage')
1745
+ .module('app')
1746
+ .event('set')
1747
+ .define<StorageSetRequest, void>({
1748
+ batch: { enabled: true, windowMs: 100, mergeStrategy: 'latest' },
1749
+ }),
1750
+
1751
+ /**
1752
+ * Save a value with version tracking in app storage.
1753
+ */
1754
+ save: defineEvent('storage')
1755
+ .module('app')
1756
+ .event('save')
1757
+ .define<StorageSaveRequest, StorageSaveResult>(),
1758
+
1759
+ /**
1760
+ * Delete a value from app storage.
1761
+ */
1762
+ delete: defineEvent('storage')
1763
+ .module('app')
1764
+ .event('delete')
1765
+ .define<StorageDeleteRequest, void>(),
1766
+
1767
+ /**
1768
+ * Subscribe to storage updates.
1769
+ */
1770
+ updated: defineEvent('storage')
1771
+ .module('app')
1772
+ .event('updated')
1773
+ .define<void, AsyncIterable<StorageUpdateNotification>>({
1774
+ stream: { enabled: true },
1775
+ }),
1776
+ },
1777
+
1778
+ /**
1779
+ * Plugin storage events.
1780
+ */
1781
+ plugin: {
1782
+ /**
1783
+ * Get a value from plugin storage.
1784
+ *
1785
+ * @remarks
1786
+ * This event supports batching for efficiency.
1787
+ */
1788
+ get: defineEvent('storage')
1789
+ .module('plugin')
1790
+ .event('get')
1791
+ .define<PluginStorageGetRequest, unknown>({
1792
+ batch: { enabled: true, windowMs: 16 },
1793
+ }),
1794
+
1795
+ /**
1796
+ * Set a value in plugin storage.
1797
+ *
1798
+ * @remarks
1799
+ * This event supports batching with 'latest' strategy.
1800
+ */
1801
+ set: defineEvent('storage')
1802
+ .module('plugin')
1803
+ .event('set')
1804
+ .define<PluginStorageSetRequest, void>({
1805
+ batch: { enabled: true, windowMs: 100, mergeStrategy: 'latest' },
1806
+ }),
1807
+
1808
+ /**
1809
+ * Delete a value from plugin storage.
1810
+ */
1811
+ delete: defineEvent('storage')
1812
+ .module('plugin')
1813
+ .event('delete')
1814
+ .define<PluginStorageDeleteRequest, void>(),
1815
+ },
1816
+
1817
+ /**
1818
+ * Legacy storage events (raw channels).
1819
+ */
1820
+ legacy: {
1821
+ /**
1822
+ * Legacy storage update broadcast.
1823
+ */
1824
+ update: defineRawEvent<StorageLegacyUpdatePayload, void>('storage:update'),
1825
+ },
1826
+ } as const
1827
+
1828
+ /**
1829
+ * Plugin lifecycle and feature events.
1830
+ */
1831
+ export const PluginEvents = {
1832
+ /**
1833
+ * Plugin lifecycle events.
1834
+ */
1835
+ lifecycle: {
1836
+ /**
1837
+ * Load a plugin.
1838
+ */
1839
+ load: defineEvent('plugin')
1840
+ .module('lifecycle')
1841
+ .event('load')
1842
+ .define<PluginLoadRequest, PluginInfo>(),
1843
+
1844
+ /**
1845
+ * Unload a plugin.
1846
+ */
1847
+ unload: defineEvent('plugin')
1848
+ .module('lifecycle')
1849
+ .event('unload')
1850
+ .define<PluginUnloadRequest, void>(),
1851
+
1852
+ /**
1853
+ * Reload a plugin.
1854
+ */
1855
+ reload: defineEvent('plugin')
1856
+ .module('lifecycle')
1857
+ .event('reload')
1858
+ .define<PluginReloadRequest, PluginInfo>(),
1859
+
1860
+ /**
1861
+ * Enable a plugin.
1862
+ */
1863
+ enable: defineEvent('plugin')
1864
+ .module('lifecycle')
1865
+ .event('enable')
1866
+ .define<PluginEnableRequest, void>(),
1867
+
1868
+ /**
1869
+ * Disable a plugin.
1870
+ */
1871
+ disable: defineEvent('plugin')
1872
+ .module('lifecycle')
1873
+ .event('disable')
1874
+ .define<PluginDisableRequest, void>(),
1875
+ },
1876
+
1877
+ /**
1878
+ * Lifecycle notifications pushed to plugin renderer processes.
1879
+ */
1880
+ lifecycleSignal: {
1881
+ active: defineEvent('plugin')
1882
+ .module('lifecycle')
1883
+ .event('active')
1884
+ .define<void, void>(),
1885
+
1886
+ inactive: defineEvent('plugin')
1887
+ .module('lifecycle')
1888
+ .event('inactive')
1889
+ .define<void, void>(),
1890
+
1891
+ enabled: defineEvent('plugin')
1892
+ .module('lifecycle')
1893
+ .event('enabled')
1894
+ .define<unknown, void>(),
1895
+
1896
+ disabled: defineEvent('plugin')
1897
+ .module('lifecycle')
1898
+ .event('disabled')
1899
+ .define<unknown, void>(),
1900
+
1901
+ crashed: defineEvent('plugin')
1902
+ .module('lifecycle')
1903
+ .event('crashed')
1904
+ .define<unknown, void>(),
1905
+ },
1906
+
1907
+ /**
1908
+ * Renderer-facing push/broadcast events.
1909
+ */
1910
+ push: {
1911
+ stateChanged: defineRawEvent<PluginPushStateChangedPayload, void>('plugin:state-changed'),
1912
+ statusUpdated: defineRawEvent<PluginPushStatusUpdatedPayload, void>('plugin-status-updated'),
1913
+ reloadReadme: defineRawEvent<PluginPushReloadReadmePayload, void>('plugin:reload-readme'),
1914
+ reload: defineRawEvent<PluginPushReloadPayload, void>('plugin:reload'),
1915
+ crashed: defineRawEvent<PluginPushCrashedPayload, void>('plugin-crashed'),
1916
+ },
1917
+
1918
+ /**
1919
+ * Plugin widget events.
1920
+ */
1921
+ widget: {
1922
+ register: defineRawEvent<WidgetRegistrationPayload, void>('plugin:widget:register'),
1923
+ update: defineRawEvent<WidgetRegistrationPayload, void>('plugin:widget:update'),
1924
+ unregister: defineRawEvent<{ widgetId: string }, void>('plugin:widget:unregister'),
1925
+ },
1926
+
1927
+ /**
1928
+ * Plugin management APIs (renderer/main).
1929
+ */
1930
+ api: {
1931
+ list: defineEvent('plugin')
1932
+ .module('api')
1933
+ .event('list')
1934
+ .define<PluginApiListRequest, PluginApiListResponse>(),
1935
+
1936
+ get: defineEvent('plugin')
1937
+ .module('api')
1938
+ .event('get')
1939
+ .define<PluginApiGetRequest, PluginApiGetResponse>(),
1940
+
1941
+ getStatus: defineEvent('plugin')
1942
+ .module('api')
1943
+ .event('get-status')
1944
+ .define<PluginApiGetStatusRequest, PluginApiGetStatusResponse>(),
1945
+
1946
+ enable: defineEvent('plugin')
1947
+ .module('api')
1948
+ .event('enable')
1949
+ .define<PluginApiOperationRequest, PluginApiOperationResponse>(),
1950
+
1951
+ disable: defineEvent('plugin')
1952
+ .module('api')
1953
+ .event('disable')
1954
+ .define<PluginApiOperationRequest, PluginApiOperationResponse>(),
1955
+
1956
+ reload: defineEvent('plugin')
1957
+ .module('api')
1958
+ .event('reload')
1959
+ .define<PluginApiOperationRequest, PluginApiOperationResponse>(),
1960
+
1961
+ install: defineEvent('plugin')
1962
+ .module('api')
1963
+ .event('install')
1964
+ .define<PluginApiInstallRequest, PluginApiInstallResponse>(),
1965
+
1966
+ uninstall: defineEvent('plugin')
1967
+ .module('api')
1968
+ .event('uninstall')
1969
+ .define<PluginApiOperationRequest, PluginApiOperationResponse>(),
1970
+
1971
+ triggerFeature: defineEvent('plugin')
1972
+ .module('api')
1973
+ .event('trigger-feature')
1974
+ .define<PluginApiTriggerFeatureRequest, PluginApiTriggerFeatureResponse>(),
1975
+
1976
+ registerWidget: defineEvent('plugin')
1977
+ .module('api')
1978
+ .event('register-widget')
1979
+ .define<PluginApiRegisterWidgetRequest, PluginApiRegisterWidgetResponse>(),
1980
+
1981
+ featureInputChanged: defineEvent('plugin')
1982
+ .module('api')
1983
+ .event('feature-input-changed')
1984
+ .define<PluginApiFeatureInputChangedRequest, void>(),
1985
+
1986
+ openFolder: defineEvent('plugin')
1987
+ .module('api')
1988
+ .event('open-folder')
1989
+ .define<PluginApiOpenFolderRequest, void>(),
1990
+
1991
+ getOfficialList: defineEvent('plugin')
1992
+ .module('api')
1993
+ .event('get-official-list')
1994
+ .define<PluginApiGetOfficialListRequest, PluginApiGetOfficialListResponse>(),
1995
+
1996
+ getManifest: defineEvent('plugin')
1997
+ .module('api')
1998
+ .event('get-manifest')
1999
+ .define<PluginApiGetManifestRequest, PluginApiGetManifestResponse>(),
2000
+
2001
+ saveManifest: defineEvent('plugin')
2002
+ .module('api')
2003
+ .event('save-manifest')
2004
+ .define<PluginApiSaveManifestRequest, PluginApiSaveManifestResponse>(),
2005
+
2006
+ saveWidgetFile: defineEvent('plugin')
2007
+ .module('api')
2008
+ .event('save-widget-file')
2009
+ .define<PluginApiSaveWidgetFileRequest, PluginApiSaveWidgetFileResponse>(),
2010
+
2011
+ getPaths: defineEvent('plugin')
2012
+ .module('api')
2013
+ .event('get-paths')
2014
+ .define<PluginApiGetPathsRequest, PluginApiGetPathsResponse>(),
2015
+
2016
+ openPath: defineEvent('plugin')
2017
+ .module('api')
2018
+ .event('open-path')
2019
+ .define<PluginApiOpenPathRequest, PluginApiOpenPathResponse>(),
2020
+
2021
+ revealPath: defineEvent('plugin')
2022
+ .module('api')
2023
+ .event('reveal-path')
2024
+ .define<PluginApiRevealPathRequest, PluginApiRevealPathResponse>(),
2025
+
2026
+ getPerformance: defineEvent('plugin')
2027
+ .module('api')
2028
+ .event('get-performance')
2029
+ .define<PluginApiGetPerformanceRequest, PluginApiGetPerformanceResponse>(),
2030
+
2031
+ getRuntimeStats: defineEvent('plugin')
2032
+ .module('api')
2033
+ .event('get-runtime-stats')
2034
+ .define<PluginApiGetRuntimeStatsRequest, PluginApiGetRuntimeStatsResponse>(),
2035
+ },
2036
+
2037
+ install: {
2038
+ progress: defineRawEvent<PluginInstallProgressPayload, void>('plugin:install-progress'),
2039
+ confirm: defineRawEvent<PluginInstallConfirmPayload, void>('plugin:install-confirm'),
2040
+ confirmResponse: defineRawEvent<PluginInstallConfirmResponsePayload, void>('plugin:install-confirm-response'),
2041
+ source: defineRawEvent<PluginInstallSourceRequest, PluginInstallSourceResponse>('plugin:install-source'),
2042
+ completed: defineRawEvent<PluginInstallCompletedPayload, void>('plugin:install-completed'),
2043
+ },
2044
+
2045
+ devServer: {
2046
+ reconnect: defineRawEvent<PluginReconnectDevServerRequest, PluginReconnectDevServerResponse>('plugin:reconnect-dev-server'),
2047
+ status: defineRawEvent<PluginDevServerStatusRequest, PluginDevServerStatusResponse>('plugin:dev-server-status'),
2048
+ },
2049
+
2050
+ storage: {
2051
+ getFile: defineEvent('plugin')
2052
+ .module('storage')
2053
+ .event('get-file')
2054
+ .define<PluginStorageFileRequest, unknown>(),
2055
+
2056
+ setFile: defineEvent('plugin')
2057
+ .module('storage')
2058
+ .event('set-file')
2059
+ .define<PluginStorageSetFileRequest, { success: boolean, error?: string }>(),
2060
+
2061
+ deleteFile: defineEvent('plugin')
2062
+ .module('storage')
2063
+ .event('delete-file')
2064
+ .define<PluginStorageFileRequest, { success: boolean, error?: string }>(),
2065
+
2066
+ listFiles: defineEvent('plugin')
2067
+ .module('storage')
2068
+ .event('list-files')
2069
+ .define<PluginStorageListFilesRequest, string[]>(),
2070
+
2071
+ listSyncItems: defineEvent('plugin')
2072
+ .module('storage')
2073
+ .event('list-sync-items')
2074
+ .define<PluginStorageListSyncItemsRequest, PluginStorageSyncItem[]>(),
2075
+
2076
+ applySyncItem: defineEvent('plugin')
2077
+ .module('storage')
2078
+ .event('apply-sync-item')
2079
+ .define<PluginStorageApplySyncItemRequest, { success: boolean, error?: string }>(),
2080
+
2081
+ deleteSyncItem: defineEvent('plugin')
2082
+ .module('storage')
2083
+ .event('delete-sync-item')
2084
+ .define<PluginStorageDeleteSyncItemRequest, { success: boolean, error?: string }>(),
2085
+
2086
+ getStats: defineEvent('plugin')
2087
+ .module('storage')
2088
+ .event('get-stats')
2089
+ .define<PluginStorageStatsRequest, unknown>(),
2090
+
2091
+ getTree: defineEvent('plugin')
2092
+ .module('storage')
2093
+ .event('get-tree')
2094
+ .define<PluginStorageTreeRequest, unknown>(),
2095
+
2096
+ getFileDetails: defineEvent('plugin')
2097
+ .module('storage')
2098
+ .event('get-file-details')
2099
+ .define<PluginStorageFileDetailsRequest, unknown>(),
2100
+
2101
+ clear: defineEvent('plugin')
2102
+ .module('storage')
2103
+ .event('clear')
2104
+ .define<PluginStorageClearRequest, { success: boolean, error?: string }>(),
2105
+
2106
+ openFolder: defineEvent('plugin')
2107
+ .module('storage')
2108
+ .event('open-folder')
2109
+ .define<PluginStorageOpenFolderRequest, void>(),
2110
+
2111
+ openInEditor: defineRawEvent<PluginStorageOpenInEditorRequest, { success: boolean, error?: string }>(
2112
+ 'plugin:storage:open-in-editor',
2113
+ ),
2114
+
2115
+ update: defineEvent('plugin')
2116
+ .module('storage')
2117
+ .event('update')
2118
+ .define<PluginStorageUpdatePayload, void>(),
2119
+ },
2120
+
2121
+ sqlite: {
2122
+ execute: defineEvent('plugin')
2123
+ .module('sqlite')
2124
+ .event('execute')
2125
+ .define<PluginSqliteExecuteRequest, PluginSqliteExecuteResponse>(),
2126
+
2127
+ query: defineEvent('plugin')
2128
+ .module('sqlite')
2129
+ .event('query')
2130
+ .define<PluginSqliteQueryRequest, PluginSqliteQueryResponse>(),
2131
+
2132
+ transaction: defineEvent('plugin')
2133
+ .module('sqlite')
2134
+ .event('transaction')
2135
+ .define<PluginSqliteTransactionRequest, PluginSqliteTransactionResponse>(),
2136
+ },
2137
+
2138
+ performance: {
2139
+ getMetrics: defineEvent('plugin')
2140
+ .module('performance')
2141
+ .event('get-metrics')
2142
+ .define<void, PluginPerformanceGetMetricsResponse>(),
2143
+
2144
+ getPaths: defineEvent('plugin')
2145
+ .module('performance')
2146
+ .event('get-paths')
2147
+ .define<void, PluginPerformanceGetPathsResponse>(),
2148
+ },
2149
+
2150
+ /**
2151
+ * Feature trigger events.
2152
+ */
2153
+ feature: {
2154
+ /**
2155
+ * Trigger a plugin feature.
2156
+ */
2157
+ trigger: defineEvent('plugin')
2158
+ .module('feature')
2159
+ .event('trigger')
2160
+ .define<FeatureTriggerRequest, FeatureTriggerResponse>(),
2161
+ },
2162
+
2163
+ /**
2164
+ * Plugin logging events.
2165
+ */
2166
+ log: {
2167
+ /**
2168
+ * Write a log entry.
2169
+ *
2170
+ * @remarks
2171
+ * This event supports batching for efficiency.
2172
+ */
2173
+ write: defineEvent('plugin')
2174
+ .module('log')
2175
+ .event('write')
2176
+ .define<PluginLogEntry, void>({
2177
+ batch: { enabled: true, windowMs: 100, maxSize: 50 },
2178
+ }),
2179
+ },
2180
+ } as const
2181
+
2182
+ export const MarketEvents = {
2183
+ api: {
2184
+ checkUpdates: defineRawEvent<void, MarketCheckUpdatesResponse>('market:check-updates'),
2185
+ search: defineRawEvent<MarketSearchRequest, MarketSearchResponse>('market:search'),
2186
+ getPlugin: defineRawEvent<MarketGetPluginRequest, MarketGetPluginResponse>('market:get-plugin'),
2187
+ httpRequest: defineRawEvent<MarketHttpRequest, MarketHttpRequestResponse>('market:http-request'),
2188
+
2189
+ featured: defineRawEvent<unknown, unknown>('market:featured'),
2190
+ npmList: defineRawEvent<void, unknown>('market:npm-list'),
2191
+ },
2192
+
2193
+ push: {
2194
+ updatesAvailable: defineRawEvent<MarketUpdatesAvailablePayload, void>('market:updates-available'),
2195
+ },
2196
+ } as const
2197
+
2198
+ // ============================================================================
2199
+ // Notification Events
2200
+ // ============================================================================
2201
+
2202
+ export const NotificationEvents = {
2203
+ api: {
2204
+ notify: defineEvent('notification')
2205
+ .module('api')
2206
+ .event('notify')
2207
+ .define<NotificationRequest, NotificationResult>(),
2208
+
2209
+ update: defineEvent('notification')
2210
+ .module('api')
2211
+ .event('update')
2212
+ .define<NotificationUpdateRequest, NotificationResult>(),
2213
+
2214
+ dismiss: defineEvent('notification')
2215
+ .module('api')
2216
+ .event('dismiss')
2217
+ .define<NotificationDismissRequest, NotificationResult>(),
2218
+
2219
+ action: defineEvent('notification')
2220
+ .module('api')
2221
+ .event('action')
2222
+ .define<NotificationActionPayload, void>(),
2223
+ },
2224
+
2225
+ inbox: {
2226
+ list: defineEvent('notification')
2227
+ .module('inbox')
2228
+ .event('list')
2229
+ .define<NotificationInboxListRequest, NotificationInboxListResponse>(),
2230
+
2231
+ markRead: defineEvent('notification')
2232
+ .module('inbox')
2233
+ .event('mark-read')
2234
+ .define<NotificationInboxMarkReadRequest, NotificationInboxEntry | null>(),
2235
+
2236
+ archive: defineEvent('notification')
2237
+ .module('inbox')
2238
+ .event('archive')
2239
+ .define<NotificationInboxArchiveRequest, NotificationInboxEntry | null>(),
2240
+
2241
+ delete: defineEvent('notification')
2242
+ .module('inbox')
2243
+ .event('delete')
2244
+ .define<NotificationInboxDeleteRequest, NotificationInboxDeleteResponse>(),
2245
+
2246
+ clear: defineEvent('notification')
2247
+ .module('inbox')
2248
+ .event('clear')
2249
+ .define<NotificationInboxClearRequest, NotificationInboxClearResponse>(),
2250
+ },
2251
+
2252
+ push: {
2253
+ notify: defineEvent('notification')
2254
+ .module('push')
2255
+ .event('notify')
2256
+ .define<NotificationPushPayload, void>(),
2257
+
2258
+ update: defineEvent('notification')
2259
+ .module('push')
2260
+ .event('update')
2261
+ .define<NotificationUpdatePayload, void>(),
2262
+
2263
+ dismiss: defineEvent('notification')
2264
+ .module('push')
2265
+ .event('dismiss')
2266
+ .define<NotificationDismissPayload, void>(),
2267
+
2268
+ action: defineEvent('notification')
2269
+ .module('push')
2270
+ .event('action')
2271
+ .define<NotificationActionPayload, void>(),
2272
+
2273
+ inboxUpdated: defineEvent('notification')
2274
+ .module('push')
2275
+ .event('inbox-updated')
2276
+ .define<NotificationInboxUpdatedPayload, void>(),
2277
+ },
2278
+ } as const
2279
+
2280
+ export const PermissionEvents = {
2281
+ api: {
2282
+ getPlugin: defineRawEvent<PermissionGetPluginRequest, PermissionGetPluginResponse>('permission:get-plugin'),
2283
+ getStatus: defineRawEvent<PermissionGetStatusRequest, PermissionGetStatusResponse>('permission:get-status'),
2284
+ grant: defineRawEvent<PermissionGrantRequest, PermissionOperationResult>('permission:grant'),
2285
+ revoke: defineRawEvent<PermissionRevokeRequest, PermissionOperationResult>('permission:revoke'),
2286
+ grantMultiple: defineRawEvent<PermissionGrantMultipleRequest, PermissionOperationResult>('permission:grant-multiple'),
2287
+ grantSession: defineRawEvent<PermissionGrantMultipleRequest, PermissionOperationResult>('permission:grant-session'),
2288
+ revokeAll: defineRawEvent<PermissionRevokeAllRequest, PermissionOperationResult>('permission:revoke-all'),
2289
+ check: defineRawEvent<PermissionCheckRequest, PermissionCheckResponse>('permission:check'),
2290
+ getAll: defineRawEvent<void, PermissionGetAllResponse>('permission:get-all'),
2291
+ getRegistry: defineRawEvent<void, PermissionGetRegistryResponse>('permission:get-registry'),
2292
+ getAuditLogs: defineRawEvent<PermissionGetAuditLogsRequest | void, PermissionGetAuditLogsResponse>('permission:get-audit-logs'),
2293
+ clearAuditLogs: defineRawEvent<void, PermissionOperationResult>('permission:clear-audit-logs'),
2294
+ getPerformance: defineRawEvent<void, PermissionGetPerformanceResponse>('permission:get-performance'),
2295
+ resetPerformance: defineRawEvent<void, PermissionOperationResult>('permission:reset-performance'),
2296
+ },
2297
+
2298
+ push: {
2299
+ updated: defineRawEvent<PermissionUpdatedPayload, void>('permission:updated'),
2300
+ startupRequest: defineRawEvent<PermissionStartupRequestPayload, void>('permission:startup-request'),
2301
+ },
2302
+ } as const
2303
+
2304
+ export const PlatformEvents = {
2305
+ capabilities: {
2306
+ list: defineEvent('platform')
2307
+ .module('capabilities')
2308
+ .event('list')
2309
+ .define<PlatformCapabilityListRequest | void, PlatformCapabilityListResponse>(),
2310
+ },
2311
+ } as const
2312
+
2313
+ export const AgentsEvents = {
2314
+ api: {
2315
+ list: defineRawEvent<void, AgentsListResponse>('agents:list'),
2316
+ listAll: defineRawEvent<void, AgentsListResponse>('agents:list-all'),
2317
+ get: defineRawEvent<AgentsGetRequest, AgentsGetResponse>('agents:get'),
2318
+ execute: defineRawEvent<AgentsExecuteRequest, AgentsExecuteResponse>('agents:execute'),
2319
+ executeImmediate: defineRawEvent<AgentsExecuteImmediateRequest, AgentsExecuteImmediateResponse>('agents:execute-immediate'),
2320
+ cancel: defineRawEvent<AgentsCancelRequest, AgentsCancelResponse>('agents:cancel'),
2321
+ taskStatus: defineRawEvent<AgentsTaskStatusRequest, AgentsTaskStatusResponse>('agents:task-status'),
2322
+ updatePriority: defineRawEvent<AgentsUpdatePriorityRequest, AgentsUpdatePriorityResponse>('agents:update-priority'),
2323
+ stats: defineRawEvent<void, AgentsStatsResponse>('agents:stats'),
2324
+
2325
+ tools: {
2326
+ list: defineEvent('agents')
2327
+ .module('tools')
2328
+ .event('list')
2329
+ .define<void, AgentsToolsListResponse>(),
2330
+
2331
+ get: defineEvent('agents')
2332
+ .module('tools')
2333
+ .event('get')
2334
+ .define<AgentsToolsGetRequest, AgentsToolsGetResponse>(),
2335
+ },
2336
+ },
2337
+
2338
+ push: {
2339
+ taskStarted: defineRawEvent<AgentsTaskStartedPayload, void>('agents:task-started'),
2340
+ taskProgress: defineRawEvent<AgentsTaskProgressPayload, void>('agents:task-progress'),
2341
+ taskCompleted: defineRawEvent<AgentsTaskCompletedPayload, void>('agents:task-completed'),
2342
+ taskFailed: defineRawEvent<AgentsTaskFailedPayload, void>('agents:task-failed'),
2343
+ taskCancelled: defineRawEvent<AgentsTaskCancelledPayload, void>('agents:task-cancelled'),
2344
+ },
2345
+
2346
+ market: {
2347
+ search: defineEvent('agents')
2348
+ .module('market')
2349
+ .event('search')
2350
+ .define<AgentsMarketSearchRequest | void, AgentsMarketSearchResponse>(),
2351
+
2352
+ get: defineEvent('agents')
2353
+ .module('market')
2354
+ .event('get')
2355
+ .define<AgentsMarketGetRequest, AgentsMarketGetResponse>(),
2356
+
2357
+ featured: defineEvent('agents')
2358
+ .module('market')
2359
+ .event('featured')
2360
+ .define<void, AgentsMarketFeaturedResponse>(),
2361
+
2362
+ installed: defineEvent('agents')
2363
+ .module('market')
2364
+ .event('installed')
2365
+ .define<void, AgentsMarketInstalledResponse>(),
2366
+
2367
+ categories: defineEvent('agents')
2368
+ .module('market')
2369
+ .event('categories')
2370
+ .define<void, AgentsMarketCategoriesResponse>(),
2371
+
2372
+ install: defineEvent('agents')
2373
+ .module('market')
2374
+ .event('install')
2375
+ .define<AgentsMarketInstallRequest, AgentsMarketInstallResponse>(),
2376
+
2377
+ uninstall: defineEvent('agents')
2378
+ .module('market')
2379
+ .event('uninstall')
2380
+ .define<AgentsMarketUninstallRequest, AgentsMarketUninstallResponse>(),
2381
+
2382
+ checkUpdates: defineEvent('agents')
2383
+ .module('market')
2384
+ .event('check-updates')
2385
+ .define<void, AgentsMarketCheckUpdatesResponse>(),
2386
+ },
2387
+ } as const
2388
+
2389
+ export const TrayEvents = {
2390
+ autostart: {
2391
+ update: defineEvent('tray')
2392
+ .module('autostart')
2393
+ .event('update')
2394
+ .define<TrayAutostartUpdateRequest, TrayAutostartUpdateResponse>(),
2395
+
2396
+ get: defineEvent('tray')
2397
+ .module('autostart')
2398
+ .event('get')
2399
+ .define<void, TrayAutostartGetResponse>(),
2400
+ },
2401
+
2402
+ show: {
2403
+ get: defineEvent('tray')
2404
+ .module('show')
2405
+ .event('get')
2406
+ .define<void, TrayShowGetResponse>(),
2407
+
2408
+ set: defineEvent('tray')
2409
+ .module('show')
2410
+ .event('set')
2411
+ .define<TrayShowSetRequest, TrayShowSetResponse>(),
2412
+ },
2413
+
2414
+ hideDock: {
2415
+ set: defineEvent('tray')
2416
+ .module('hidedock')
2417
+ .event('set')
2418
+ .define<void, TrayHideDockSetResponse>(),
2419
+ },
2420
+ } as const
2421
+
2422
+ export const SentryEvents = {
2423
+ api: {
2424
+ updateUser: defineRawEvent<SentryUpdateUserRequest, void>('sentry:update-user'),
2425
+ getConfig: defineRawEvent<void, SentryGetConfigResponse>('sentry:get-config'),
2426
+ getSearchCount: defineRawEvent<void, SentryGetSearchCountResponse>('sentry:get-search-count'),
2427
+ getTelemetryStats: defineRawEvent<void, SentryGetTelemetryStatsResponse>('sentry:get-telemetry-stats'),
2428
+ recordPerformance: defineRawEvent<SentryRecordPerformanceRequest, SentryRecordPerformanceResponse>('sentry:record-performance'),
2429
+ },
2430
+ } as const
2431
+
2432
+ /**
2433
+ * BoxItem CRUD and sync events.
2434
+ */
2435
+ export const BoxItemEvents = {
2436
+ /**
2437
+ * CRUD operations for individual items.
2438
+ */
2439
+ crud: {
2440
+ /**
2441
+ * Create a new BoxItem.
2442
+ */
2443
+ create: defineEvent('box-item')
2444
+ .module('crud')
2445
+ .event('create')
2446
+ .define<BoxItemCreateRequest, BoxItem>(),
2447
+
2448
+ /**
2449
+ * Update an existing BoxItem.
2450
+ */
2451
+ update: defineEvent('box-item')
2452
+ .module('crud')
2453
+ .event('update')
2454
+ .define<BoxItemUpdateRequest, BoxItem>(),
2455
+
2456
+ /**
2457
+ * Create or update a BoxItem.
2458
+ *
2459
+ * @remarks
2460
+ * This event supports batching for efficiency.
2461
+ */
2462
+ upsert: defineEvent('box-item')
2463
+ .module('crud')
2464
+ .event('upsert')
2465
+ .define<BoxItemUpsertRequest, BoxItem>({
2466
+ batch: { enabled: true, windowMs: 50, maxSize: 100 },
2467
+ }),
2468
+
2469
+ /**
2470
+ * Delete a BoxItem.
2471
+ *
2472
+ * @remarks
2473
+ * This event supports batching for efficiency.
2474
+ */
2475
+ delete: defineEvent('box-item')
2476
+ .module('crud')
2477
+ .event('delete')
2478
+ .define<BoxItemDeleteRequest, void>({
2479
+ batch: { enabled: true, windowMs: 50 },
2480
+ }),
2481
+ },
2482
+
2483
+ /**
2484
+ * Batch operations for multiple items.
2485
+ */
2486
+ batch: {
2487
+ /**
2488
+ * Batch upsert multiple BoxItems.
2489
+ */
2490
+ upsert: defineEvent('box-item')
2491
+ .module('batch')
2492
+ .event('upsert')
2493
+ .define<BoxItem[], BoxItemBatchUpsertResponse>(),
2494
+
2495
+ /**
2496
+ * Batch delete multiple BoxItems.
2497
+ */
2498
+ delete: defineEvent('box-item')
2499
+ .module('batch')
2500
+ .event('delete')
2501
+ .define<string[], BoxItemBatchDeleteResponse>(),
2502
+
2503
+ /**
2504
+ * Clear BoxItems by source.
2505
+ */
2506
+ clear: defineEvent('box-item')
2507
+ .module('batch')
2508
+ .event('clear')
2509
+ .define<BoxItemClearRequest, BoxItemClearResponse>(),
2510
+ },
2511
+
2512
+ /**
2513
+ * Sync events for bulk data transfer.
2514
+ */
2515
+ sync: {
2516
+ /**
2517
+ * Request sync of all items.
2518
+ */
2519
+ request: defineEvent('box-item')
2520
+ .module('sync')
2521
+ .event('request')
2522
+ .define<void, void>(),
2523
+
2524
+ /**
2525
+ * Receive sync response (streaming).
2526
+ *
2527
+ * @remarks
2528
+ * This event uses MessagePort streaming for large datasets.
2529
+ */
2530
+ response: defineEvent('box-item')
2531
+ .module('sync')
2532
+ .event('response')
2533
+ .define<void, AsyncIterable<BoxItemSyncResponse>>({
2534
+ stream: { enabled: true },
2535
+ }),
2536
+ },
2537
+ } as const
2538
+
2539
+ /**
2540
+ * Clipboard domain events for history, monitoring, and actions.
2541
+ * @since v0.9.0
2542
+ */
2543
+ export const ClipboardEvents = {
2544
+ /**
2545
+ * Subscribe to clipboard changes via MessagePort streaming.
2546
+ * @since v0.9.0
2547
+ */
2548
+ change: defineEvent('clipboard')
2549
+ .module('monitor')
2550
+ .event('change')
2551
+ .define<void, AsyncIterable<ClipboardChangePayload>>({
2552
+ stream: { enabled: true, bufferSize: 10 },
2553
+ }),
2554
+
2555
+ /**
2556
+ * Query clipboard history with pagination and filters.
2557
+ * @since v0.9.0
2558
+ */
2559
+ getHistory: defineEvent('clipboard')
2560
+ .module('history')
2561
+ .event('get')
2562
+ .define<ClipboardQueryRequest, ClipboardQueryResponse>({
2563
+ batch: { enabled: true, windowMs: 50, mergeStrategy: 'dedupe' },
2564
+ }),
2565
+
2566
+ /**
2567
+ * Get the most recent clipboard item.
2568
+ * @since v0.9.0
2569
+ */
2570
+ getLatest: defineEvent('clipboard')
2571
+ .module('history')
2572
+ .event('latest')
2573
+ .define<void, ClipboardItem | null>(),
2574
+
2575
+ /**
2576
+ * Apply clipboard item to active application with auto-paste.
2577
+ * @since v0.9.0
2578
+ */
2579
+ apply: defineEvent('clipboard')
2580
+ .module('action')
2581
+ .event('apply')
2582
+ .define<ClipboardApplyRequest, void>(),
2583
+
2584
+ /**
2585
+ * Delete a clipboard history item by ID.
2586
+ * @since v0.9.0
2587
+ */
2588
+ delete: defineEvent('clipboard')
2589
+ .module('history')
2590
+ .event('delete')
2591
+ .define<ClipboardDeleteRequest, void>(),
2592
+
2593
+ /**
2594
+ * Toggle favorite status for a clipboard item.
2595
+ * @since v0.9.0
2596
+ */
2597
+ setFavorite: defineEvent('clipboard')
2598
+ .module('history')
2599
+ .event('set-favorite')
2600
+ .define<ClipboardSetFavoriteRequest, void>(),
2601
+
2602
+ /**
2603
+ * Write content to system clipboard programmatically.
2604
+ * @since v0.9.0
2605
+ */
2606
+ write: defineEvent('clipboard')
2607
+ .module('action')
2608
+ .event('write')
2609
+ .define<ClipboardWriteRequest, void>(),
2610
+ } as const
2611
+
2612
+ // ============================================================================
2613
+ // Transport Events
2614
+ // ============================================================================
2615
+
2616
+ export const TransportEvents = {
2617
+ port: {
2618
+ /**
2619
+ * Request to upgrade to MessagePort-based transport.
2620
+ */
2621
+ upgrade: defineEvent('transport')
2622
+ .module('port')
2623
+ .event('upgrade')
2624
+ .define<TransportPortUpgradeRequest, TransportPortUpgradeResponse>(),
2625
+
2626
+ /**
2627
+ * Confirm MessagePort upgrade and provide binding metadata.
2628
+ */
2629
+ confirm: defineEvent('transport')
2630
+ .module('port')
2631
+ .event('confirm')
2632
+ .define<TransportPortConfirmPayload, void>(),
2633
+
2634
+ /**
2635
+ * Close MessagePort transport channel.
2636
+ */
2637
+ close: defineEvent('transport')
2638
+ .module('port')
2639
+ .event('close')
2640
+ .define<TransportPortClosePayload, void>(),
2641
+
2642
+ /**
2643
+ * Report MessagePort transport errors.
2644
+ */
2645
+ error: defineEvent('transport')
2646
+ .module('port')
2647
+ .event('error')
2648
+ .define<TransportPortErrorPayload, void>(),
2649
+ },
2650
+ } as const
2651
+
2652
+ // ============================================================================
2653
+ // Unified Export
2654
+ // ============================================================================
2655
+
2656
+ /**
2657
+ * All TuffEvents organized by domain.
2658
+ *
2659
+ * @example
2660
+ * ```typescript
2661
+ * import { TuffEvents } from '@talex-touch/utils/transport/events'
2662
+ *
2663
+ * await transport.send(TuffEvents.coreBox.ui.hide)
2664
+ * await transport.send(TuffEvents.storage.app.get, { key: 'theme' })
2665
+ * await transport.send(TuffEvents.clipboard.getLatest)
2666
+ * await transport.send(TuffEvents.metaOverlay.ui.show, { item, builtinActions: [] })
2667
+ * ```
2668
+ */
2669
+ export const TuffEvents = {
2670
+ app: AppEvents,
2671
+ coreBox: CoreBoxEvents,
2672
+ storage: StorageEvents,
2673
+ plugin: PluginEvents,
2674
+ market: MarketEvents,
2675
+ notification: NotificationEvents,
2676
+ permission: PermissionEvents,
2677
+ platform: PlatformEvents,
2678
+ agents: AgentsEvents,
2679
+ tray: TrayEvents,
2680
+ transport: TransportEvents,
2681
+ sentry: SentryEvents,
2682
+ boxItem: BoxItemEvents,
2683
+ clipboard: ClipboardEvents,
2684
+ metaOverlay: MetaOverlayEvents,
2685
+ flow: FlowEvents,
2686
+ divisionBox: DivisionBoxEvents,
2687
+ } as const
2688
+
2689
+ // Export MetaOverlayEvents separately for convenience
2690
+ export { MetaOverlayEvents }