@talex-touch/utils 1.0.40 → 1.0.44

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