@talex-touch/utils 1.0.42 → 1.0.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/.eslintcache +1 -0
  2. package/__tests__/cloud-sync-sdk.test.ts +442 -0
  3. package/__tests__/icons/icons.test.ts +84 -0
  4. package/__tests__/plugin-sdk-lifecycle.test.ts +130 -0
  5. package/__tests__/power-sdk.test.ts +143 -0
  6. package/__tests__/preset-export-types.test.ts +108 -0
  7. package/__tests__/search/fuzzy-match.test.ts +137 -0
  8. package/__tests__/transport/port-policy.test.ts +44 -0
  9. package/__tests__/transport-domain-sdks.test.ts +152 -0
  10. package/__tests__/types/update.test.ts +67 -0
  11. package/account/account-sdk.ts +915 -0
  12. package/account/index.ts +2 -0
  13. package/account/types.ts +321 -0
  14. package/analytics/client.ts +136 -0
  15. package/analytics/index.ts +2 -0
  16. package/analytics/types.ts +156 -0
  17. package/animation/auto-resize.ts +322 -0
  18. package/animation/window-node.ts +26 -19
  19. package/auth/clerk-types.ts +12 -30
  20. package/auth/index.ts +0 -2
  21. package/auth/useAuthState.ts +6 -14
  22. package/base/index.ts +2 -0
  23. package/base/log-level.ts +105 -0
  24. package/channel/index.ts +170 -69
  25. package/cloud-sync/cloud-sync-sdk.ts +450 -0
  26. package/cloud-sync/index.ts +1 -0
  27. package/common/file-scan-utils.ts +17 -9
  28. package/common/index.ts +4 -0
  29. package/common/logger/index.ts +46 -0
  30. package/common/logger/logger-manager.ts +303 -0
  31. package/common/logger/module-logger.ts +270 -0
  32. package/common/logger/transport-logger.ts +234 -0
  33. package/common/logger/types.ts +93 -0
  34. package/common/search/gather.ts +48 -6
  35. package/common/search/index.ts +8 -0
  36. package/common/storage/constants.ts +13 -0
  37. package/common/storage/entity/app-settings.ts +245 -0
  38. package/common/storage/entity/index.ts +3 -0
  39. package/common/storage/entity/layout-atom-types.ts +147 -0
  40. package/common/storage/entity/openers.ts +1 -0
  41. package/common/storage/entity/preset-cloud-api.ts +132 -0
  42. package/common/storage/entity/preset-export-types.ts +256 -0
  43. package/common/storage/entity/shortcut-settings.ts +1 -0
  44. package/common/storage/shortcut-storage.ts +11 -0
  45. package/common/utils/clone-diagnostics.ts +105 -0
  46. package/common/utils/file.ts +16 -8
  47. package/common/utils/index.ts +6 -2
  48. package/common/utils/payload-preview.ts +173 -0
  49. package/common/utils/polling.ts +167 -13
  50. package/common/utils/safe-path.ts +103 -0
  51. package/common/utils/safe-shell.ts +115 -0
  52. package/common/utils/task-queue.ts +4 -1
  53. package/core-box/builder/tuff-builder.ts +0 -1
  54. package/core-box/index.ts +1 -1
  55. package/core-box/recommendation.ts +38 -1
  56. package/core-box/tuff/tuff-dsl.ts +32 -0
  57. package/electron/download-manager.ts +10 -7
  58. package/electron/env-tool.ts +42 -40
  59. package/electron/index.ts +0 -1
  60. package/env/index.ts +156 -0
  61. package/eslint.config.js +55 -0
  62. package/i18n/index.ts +62 -0
  63. package/i18n/locales/en.json +226 -0
  64. package/i18n/locales/zh.json +226 -0
  65. package/i18n/message-keys.ts +236 -0
  66. package/i18n/resolver.ts +181 -0
  67. package/icons/index.ts +257 -0
  68. package/icons/svg.ts +69 -0
  69. package/index.ts +9 -1
  70. package/intelligence/client.ts +72 -42
  71. package/market/constants.ts +9 -5
  72. package/market/index.ts +1 -1
  73. package/market/types.ts +19 -4
  74. package/package.json +15 -5
  75. package/permission/index.ts +143 -46
  76. package/permission/legacy.ts +26 -0
  77. package/permission/registry.ts +304 -0
  78. package/permission/types.ts +164 -0
  79. package/plugin/channel.ts +68 -39
  80. package/plugin/index.ts +80 -7
  81. package/plugin/install.ts +3 -0
  82. package/plugin/log/types.ts +22 -5
  83. package/plugin/node/logger-manager.ts +11 -3
  84. package/plugin/node/logger.ts +24 -17
  85. package/plugin/preload.ts +25 -2
  86. package/plugin/providers/index.ts +4 -4
  87. package/plugin/providers/market-client.ts +6 -3
  88. package/plugin/providers/npm-provider.ts +22 -7
  89. package/plugin/providers/tpex-provider.ts +22 -8
  90. package/plugin/sdk/box-items.ts +14 -0
  91. package/plugin/sdk/box-sdk.ts +64 -0
  92. package/plugin/sdk/channel.ts +119 -4
  93. package/plugin/sdk/clipboard.ts +26 -12
  94. package/plugin/sdk/cloud-sync.ts +113 -0
  95. package/plugin/sdk/common.ts +19 -11
  96. package/plugin/sdk/core-box.ts +6 -15
  97. package/plugin/sdk/division-box.ts +160 -65
  98. package/plugin/sdk/examples/storage-onDidChange-example.js +5 -2
  99. package/plugin/sdk/feature-sdk.ts +111 -76
  100. package/plugin/sdk/flow.ts +146 -45
  101. package/plugin/sdk/hooks/bridge.ts +13 -6
  102. package/plugin/sdk/hooks/life-cycle.ts +35 -16
  103. package/plugin/sdk/index.ts +14 -3
  104. package/plugin/sdk/intelligence.ts +87 -0
  105. package/plugin/sdk/meta/README.md +179 -0
  106. package/plugin/sdk/meta-sdk.ts +244 -0
  107. package/plugin/sdk/notification.ts +9 -0
  108. package/plugin/sdk/plugin-info.ts +64 -0
  109. package/plugin/sdk/power.ts +155 -0
  110. package/plugin/sdk/recommend.ts +21 -0
  111. package/plugin/sdk/service/index.ts +12 -8
  112. package/plugin/sdk/sqlite.ts +141 -0
  113. package/plugin/sdk/storage.ts +2 -6
  114. package/plugin/sdk/system.ts +2 -9
  115. package/plugin/sdk/temp-files.ts +41 -0
  116. package/plugin/sdk/touch-sdk.ts +18 -0
  117. package/plugin/sdk/types.ts +44 -4
  118. package/plugin/sdk/window/index.ts +12 -9
  119. package/plugin/sdk-version.ts +231 -0
  120. package/preload/renderer.ts +3 -2
  121. package/renderer/hooks/arg-mapper.ts +16 -2
  122. package/renderer/hooks/index.ts +13 -0
  123. package/renderer/hooks/initialize.ts +2 -1
  124. package/renderer/hooks/use-agent-market-sdk.ts +7 -0
  125. package/renderer/hooks/use-agent-market.ts +106 -0
  126. package/renderer/hooks/use-agents-sdk.ts +7 -0
  127. package/renderer/hooks/use-app-sdk.ts +7 -0
  128. package/renderer/hooks/use-channel.ts +33 -4
  129. package/renderer/hooks/use-download-sdk.ts +21 -0
  130. package/renderer/hooks/use-intelligence-sdk.ts +7 -0
  131. package/renderer/hooks/use-intelligence-stats.ts +290 -0
  132. package/renderer/hooks/use-intelligence.ts +55 -214
  133. package/renderer/hooks/use-market-sdk.ts +16 -0
  134. package/renderer/hooks/use-notification-sdk.ts +7 -0
  135. package/renderer/hooks/use-permission-sdk.ts +7 -0
  136. package/renderer/hooks/use-permission.ts +325 -0
  137. package/renderer/hooks/use-platform-sdk.ts +7 -0
  138. package/renderer/hooks/use-plugin-sdk.ts +16 -0
  139. package/renderer/hooks/use-settings-sdk.ts +7 -0
  140. package/renderer/hooks/use-update-sdk.ts +21 -0
  141. package/renderer/index.ts +1 -0
  142. package/renderer/ref.ts +19 -10
  143. package/renderer/shared/components/SharedPluginDetailContent.vue +84 -0
  144. package/renderer/shared/components/SharedPluginDetailHeader.vue +116 -0
  145. package/renderer/shared/components/SharedPluginDetailMetaList.vue +39 -0
  146. package/renderer/shared/components/SharedPluginDetailReadme.vue +45 -0
  147. package/renderer/shared/components/SharedPluginDetailVersions.vue +98 -0
  148. package/renderer/shared/components/index.ts +5 -0
  149. package/renderer/shared/components/shims-vue.d.ts +5 -0
  150. package/renderer/shared/index.ts +2 -0
  151. package/renderer/shared/plugin-detail.ts +62 -0
  152. package/renderer/storage/app-settings.ts +3 -1
  153. package/renderer/storage/base-storage.ts +508 -82
  154. package/renderer/storage/intelligence-storage.ts +31 -40
  155. package/renderer/storage/openers.ts +3 -1
  156. package/renderer/storage/storage-subscription.ts +126 -42
  157. package/renderer/touch-sdk/env.ts +10 -10
  158. package/renderer/touch-sdk/index.ts +114 -18
  159. package/renderer/touch-sdk/terminal.ts +24 -13
  160. package/search/feature-matcher.ts +279 -0
  161. package/search/fuzzy-match.ts +64 -34
  162. package/search/index.ts +10 -0
  163. package/search/levenshtein-utils.ts +17 -11
  164. package/transport/errors.ts +310 -0
  165. package/transport/event/builder.ts +378 -0
  166. package/transport/event/index.ts +7 -0
  167. package/transport/event/types.ts +292 -0
  168. package/transport/events/index.ts +2670 -0
  169. package/transport/events/meta-overlay.ts +79 -0
  170. package/transport/events/types/agents.ts +177 -0
  171. package/transport/events/types/app-index.ts +9 -0
  172. package/transport/events/types/app.ts +475 -0
  173. package/transport/events/types/box-item.ts +222 -0
  174. package/transport/events/types/clipboard.ts +80 -0
  175. package/transport/events/types/core-box.ts +534 -0
  176. package/transport/events/types/device-idle.ts +7 -0
  177. package/transport/events/types/division-box.ts +99 -0
  178. package/transport/events/types/download.ts +115 -0
  179. package/transport/events/types/file-index.ts +73 -0
  180. package/transport/events/types/flow.ts +149 -0
  181. package/transport/events/types/index.ts +70 -0
  182. package/transport/events/types/market.ts +39 -0
  183. package/transport/events/types/meta-overlay.ts +184 -0
  184. package/transport/events/types/notification.ts +140 -0
  185. package/transport/events/types/permission.ts +90 -0
  186. package/transport/events/types/platform.ts +8 -0
  187. package/transport/events/types/plugin.ts +620 -0
  188. package/transport/events/types/sentry.ts +20 -0
  189. package/transport/events/types/storage.ts +208 -0
  190. package/transport/events/types/transport.ts +60 -0
  191. package/transport/events/types/tray.ts +16 -0
  192. package/transport/events/types/update.ts +78 -0
  193. package/transport/index.ts +139 -0
  194. package/transport/main.ts +2 -0
  195. package/transport/sdk/constants.ts +29 -0
  196. package/transport/sdk/domains/agents-market.ts +47 -0
  197. package/transport/sdk/domains/agents.ts +62 -0
  198. package/transport/sdk/domains/app.ts +48 -0
  199. package/transport/sdk/domains/disposable.ts +35 -0
  200. package/transport/sdk/domains/download.ts +139 -0
  201. package/transport/sdk/domains/index.ts +13 -0
  202. package/transport/sdk/domains/intelligence.ts +616 -0
  203. package/transport/sdk/domains/market.ts +35 -0
  204. package/transport/sdk/domains/notification.ts +62 -0
  205. package/transport/sdk/domains/permission.ts +85 -0
  206. package/transport/sdk/domains/platform.ts +19 -0
  207. package/transport/sdk/domains/plugin.ts +144 -0
  208. package/transport/sdk/domains/settings.ts +92 -0
  209. package/transport/sdk/domains/update.ts +64 -0
  210. package/transport/sdk/index.ts +60 -0
  211. package/transport/sdk/main-transport.ts +710 -0
  212. package/transport/sdk/main.ts +9 -0
  213. package/transport/sdk/plugin-transport.ts +654 -0
  214. package/transport/sdk/port-policy.ts +38 -0
  215. package/transport/sdk/renderer-transport.ts +1165 -0
  216. package/transport/types.ts +605 -0
  217. package/types/agent.ts +399 -0
  218. package/types/cloud-sync.ts +157 -0
  219. package/types/division-box.ts +31 -31
  220. package/types/download.ts +1 -0
  221. package/types/flow.ts +63 -12
  222. package/types/icon.ts +2 -1
  223. package/types/index.ts +5 -0
  224. package/types/intelligence.ts +166 -173
  225. package/types/modules/base.ts +2 -0
  226. package/types/path-browserify.d.ts +5 -0
  227. package/types/platform.ts +12 -0
  228. package/types/startup-info.ts +32 -0
  229. package/types/touch-app-core.ts +8 -8
  230. package/types/update.ts +94 -1
  231. package/vitest.config.ts +25 -0
  232. package/auth/useClerkConfig.ts +0 -40
  233. package/auth/useClerkProvider.ts +0 -52
@@ -0,0 +1,616 @@
1
+ import type {
2
+ IntelligenceInvokeOptions,
3
+ IntelligenceInvokeResult,
4
+ IntelligenceMessage,
5
+ IntelligenceProviderConfig,
6
+ TuffIntelligenceApprovalTicket,
7
+ TuffIntelligenceSession,
8
+ TuffIntelligenceStateSnapshot,
9
+ TuffIntelligenceTraceEvent,
10
+ TuffIntelligenceTurn,
11
+ } from '../../../types/intelligence'
12
+ import type { ITuffTransport } from '../../types'
13
+ import { defineRawEvent } from '../../event/builder'
14
+
15
+ export interface IntelligenceAuditLogEntry {
16
+ traceId: string
17
+ timestamp: number
18
+ capabilityId: string
19
+ provider: string
20
+ model: string
21
+ promptHash?: string
22
+ caller?: string
23
+ userId?: string
24
+ usage: {
25
+ promptTokens: number
26
+ completionTokens: number
27
+ totalTokens: number
28
+ }
29
+ latency: number
30
+ success: boolean
31
+ error?: string
32
+ estimatedCost?: number
33
+ }
34
+
35
+ export interface IntelligenceUsageSummary {
36
+ period: string
37
+ periodType: 'minute' | 'day' | 'month'
38
+ requestCount: number
39
+ successCount: number
40
+ failureCount: number
41
+ totalTokens: number
42
+ promptTokens: number
43
+ completionTokens: number
44
+ totalCost: number
45
+ avgLatency: number
46
+ }
47
+
48
+ export interface IntelligenceCurrentUsage {
49
+ requestsThisMinute: number
50
+ requestsToday: number
51
+ requestsThisMonth: number
52
+ tokensThisMinute: number
53
+ tokensToday: number
54
+ tokensThisMonth: number
55
+ costToday: number
56
+ costThisMonth: number
57
+ }
58
+
59
+ export interface IntelligenceQuotaConfig {
60
+ callerId: string
61
+ callerType: 'plugin' | 'user' | 'system'
62
+ requestsPerMinute?: number
63
+ requestsPerDay?: number
64
+ requestsPerMonth?: number
65
+ tokensPerMinute?: number
66
+ tokensPerDay?: number
67
+ tokensPerMonth?: number
68
+ costLimitPerDay?: number
69
+ costLimitPerMonth?: number
70
+ enabled?: boolean
71
+ }
72
+
73
+ export interface IntelligenceQuotaCheckResult {
74
+ allowed: boolean
75
+ reason?: string
76
+ remainingRequests?: number
77
+ remainingTokens?: number
78
+ remainingCost?: number
79
+ }
80
+
81
+ export interface IntelligenceAuditLogQueryOptions {
82
+ caller?: string
83
+ capabilityId?: string
84
+ provider?: string
85
+ startTime?: number
86
+ endTime?: number
87
+ success?: boolean
88
+ limit?: number
89
+ offset?: number
90
+ }
91
+
92
+ export interface IntelligenceChatRequest {
93
+ messages: IntelligenceMessage[]
94
+ providerId?: string
95
+ model?: string
96
+ promptTemplate?: string
97
+ promptVariables?: Record<string, unknown>
98
+ metadata?: Record<string, unknown>
99
+ }
100
+
101
+ export interface IntelligenceSessionStartPayload {
102
+ sessionId?: string
103
+ objective?: string
104
+ context?: Record<string, unknown>
105
+ metadata?: Record<string, unknown>
106
+ }
107
+
108
+ export interface IntelligenceSessionResumePayload {
109
+ sessionId: string
110
+ }
111
+
112
+ export interface IntelligenceSessionCancelPayload {
113
+ sessionId: string
114
+ reason?: string
115
+ }
116
+
117
+ export interface IntelligenceSessionStatePayload {
118
+ sessionId: string
119
+ }
120
+
121
+ export interface IntelligenceSessionHeartbeatPayload {
122
+ sessionId: string
123
+ }
124
+
125
+ export interface IntelligenceSessionPausePayload {
126
+ sessionId: string
127
+ reason?: 'client_disconnect' | 'heartbeat_timeout' | 'manual_pause' | 'system_preempted'
128
+ note?: string
129
+ }
130
+
131
+ export interface IntelligenceOrchestratorPlanPayload {
132
+ sessionId: string
133
+ objective: string
134
+ context?: Record<string, unknown>
135
+ metadata?: Record<string, unknown>
136
+ }
137
+
138
+ export interface IntelligenceOrchestratorExecutePayload {
139
+ sessionId: string
140
+ turnId?: string
141
+ maxSteps?: number
142
+ toolBudget?: number
143
+ continueOnError?: boolean
144
+ metadata?: Record<string, unknown>
145
+ }
146
+
147
+ export interface IntelligenceOrchestratorReflectPayload {
148
+ sessionId: string
149
+ turnId: string
150
+ notes?: string
151
+ }
152
+
153
+ export interface IntelligenceToolCallPayload {
154
+ sessionId: string
155
+ turnId?: string
156
+ actionId?: string
157
+ toolId: string
158
+ input?: unknown
159
+ riskLevel?: TuffIntelligenceApprovalTicket['riskLevel']
160
+ callId?: string
161
+ timeoutMs?: number
162
+ metadata?: Record<string, unknown>
163
+ }
164
+
165
+ export interface IntelligenceToolResultPayload {
166
+ sessionId: string
167
+ turnId?: string
168
+ toolId: string
169
+ success: boolean
170
+ output?: unknown
171
+ error?: string
172
+ metadata?: Record<string, unknown>
173
+ }
174
+
175
+ export interface IntelligenceToolApprovePayload {
176
+ ticketId: string
177
+ approved: boolean
178
+ approvedBy?: string
179
+ reason?: string
180
+ }
181
+
182
+ export interface IntelligenceTraceQueryPayload {
183
+ sessionId: string
184
+ fromSeq?: number
185
+ limit?: number
186
+ level?: TuffIntelligenceTraceEvent['level']
187
+ type?: TuffIntelligenceTraceEvent['type']
188
+ }
189
+
190
+ export interface IntelligenceTraceExportPayload {
191
+ sessionId: string
192
+ format?: 'json' | 'jsonl'
193
+ }
194
+
195
+ export type IntelligenceApiResponse<T = undefined>
196
+ = { ok: true, result?: T }
197
+ | { ok: false, error: string }
198
+
199
+ export interface IntelligenceSdk {
200
+ invoke: <T = unknown>(
201
+ capabilityId: string,
202
+ payload: unknown,
203
+ options?: IntelligenceInvokeOptions,
204
+ ) => Promise<IntelligenceInvokeResult<T>>
205
+ chatLangChain: (payload: IntelligenceChatRequest) => Promise<IntelligenceInvokeResult<string>>
206
+ testProvider: (config: IntelligenceProviderConfig) => Promise<unknown>
207
+ testCapability: (params: Record<string, unknown>) => Promise<unknown>
208
+ getCapabilityTestMeta: (payload: { capabilityId: string }) => Promise<{ requiresUserInput: boolean, inputHint: string }>
209
+ fetchModels: (config: IntelligenceProviderConfig) => Promise<{ success: boolean, models?: string[], message?: string }>
210
+
211
+ getAuditLogs: (options?: IntelligenceAuditLogQueryOptions) => Promise<IntelligenceAuditLogEntry[]>
212
+ getTodayStats: (callerId?: string) => Promise<IntelligenceUsageSummary | null>
213
+ getMonthStats: (callerId?: string) => Promise<IntelligenceUsageSummary | null>
214
+ getUsageStats: (payload: {
215
+ callerId: string
216
+ periodType: 'day' | 'month'
217
+ startPeriod?: string
218
+ endPeriod?: string
219
+ }) => Promise<IntelligenceUsageSummary[]>
220
+
221
+ getQuota: (payload: { callerId: string, callerType?: IntelligenceQuotaConfig['callerType'] }) => Promise<IntelligenceQuotaConfig | null>
222
+ setQuota: (config: IntelligenceQuotaConfig) => Promise<void>
223
+ deleteQuota: (payload: { callerId: string, callerType?: IntelligenceQuotaConfig['callerType'] }) => Promise<void>
224
+ getAllQuotas: () => Promise<IntelligenceQuotaConfig[]>
225
+ checkQuota: (payload: {
226
+ callerId: string
227
+ callerType?: IntelligenceQuotaConfig['callerType']
228
+ estimatedTokens?: number
229
+ }) => Promise<IntelligenceQuotaCheckResult>
230
+ getCurrentUsage: (payload: {
231
+ callerId: string
232
+ callerType?: IntelligenceQuotaConfig['callerType']
233
+ }) => Promise<IntelligenceCurrentUsage>
234
+
235
+ sessionStart: (payload?: IntelligenceSessionStartPayload) => Promise<TuffIntelligenceSession>
236
+ sessionHeartbeat: (payload: IntelligenceSessionHeartbeatPayload) => Promise<{ sessionId: string, heartbeatAt: string }>
237
+ sessionPause: (payload: IntelligenceSessionPausePayload) => Promise<unknown>
238
+ sessionRecoverable: () => Promise<unknown>
239
+ sessionResume: (payload: IntelligenceSessionResumePayload) => Promise<TuffIntelligenceSession | null>
240
+ sessionCancel: (payload: IntelligenceSessionCancelPayload) => Promise<TuffIntelligenceStateSnapshot | null>
241
+ sessionGetState: (payload: IntelligenceSessionStatePayload) => Promise<TuffIntelligenceStateSnapshot | null>
242
+
243
+ orchestratorPlan: (payload: IntelligenceOrchestratorPlanPayload) => Promise<TuffIntelligenceTurn>
244
+ orchestratorExecute: (payload: IntelligenceOrchestratorExecutePayload) => Promise<TuffIntelligenceTurn>
245
+ orchestratorReflect: (payload: IntelligenceOrchestratorReflectPayload) => Promise<TuffIntelligenceTurn>
246
+
247
+ toolCall: (payload: IntelligenceToolCallPayload) => Promise<{
248
+ success: boolean
249
+ output?: unknown
250
+ error?: string
251
+ approvalTicket?: TuffIntelligenceApprovalTicket
252
+ traceEvent: TuffIntelligenceTraceEvent
253
+ }>
254
+ toolResult: (payload: IntelligenceToolResultPayload) => Promise<{ accepted: boolean }>
255
+ toolApprove: (payload: IntelligenceToolApprovePayload) => Promise<TuffIntelligenceApprovalTicket | null>
256
+
257
+ traceStream: (payload: IntelligenceTraceQueryPayload) => Promise<TuffIntelligenceTraceEvent[]>
258
+ traceQuery: (payload: IntelligenceTraceQueryPayload) => Promise<TuffIntelligenceTraceEvent[]>
259
+ traceExport: (payload: IntelligenceTraceExportPayload) => Promise<{ format: 'json' | 'jsonl', content: string }>
260
+ }
261
+
262
+ export type IntelligenceSdkTransport = Pick<ITuffTransport, 'send'>
263
+
264
+ const intelligenceInvokeEvent = defineRawEvent<
265
+ {
266
+ capabilityId: string
267
+ payload: unknown
268
+ options?: IntelligenceInvokeOptions
269
+ },
270
+ IntelligenceApiResponse<IntelligenceInvokeResult<unknown>>
271
+ >('intelligence:invoke')
272
+
273
+ const intelligenceChatLangChainEvent = defineRawEvent<
274
+ IntelligenceChatRequest,
275
+ IntelligenceApiResponse<IntelligenceInvokeResult<string>>
276
+ >('intelligence:chat-langchain')
277
+
278
+ const intelligenceTestProviderEvent = defineRawEvent<
279
+ { provider: IntelligenceProviderConfig },
280
+ IntelligenceApiResponse<unknown>
281
+ >('intelligence:test-provider')
282
+
283
+ const intelligenceTestCapabilityEvent = defineRawEvent<
284
+ Record<string, unknown>,
285
+ IntelligenceApiResponse<unknown>
286
+ >('intelligence:test-capability')
287
+
288
+ const intelligenceGetCapabilityTestMetaEvent = defineRawEvent<
289
+ { capabilityId: string },
290
+ IntelligenceApiResponse<{ requiresUserInput: boolean, inputHint: string }>
291
+ >('intelligence:get-capability-test-meta')
292
+
293
+ const intelligenceFetchModelsEvent = defineRawEvent<
294
+ { provider: IntelligenceProviderConfig },
295
+ IntelligenceApiResponse<{ success: boolean, models?: string[], message?: string }>
296
+ >('intelligence:fetch-models')
297
+
298
+ const intelligenceGetAuditLogsEvent = defineRawEvent<
299
+ IntelligenceAuditLogQueryOptions,
300
+ IntelligenceApiResponse<IntelligenceAuditLogEntry[]>
301
+ >('intelligence:get-audit-logs')
302
+
303
+ const intelligenceGetTodayStatsEvent = defineRawEvent<
304
+ { callerId?: string },
305
+ IntelligenceApiResponse<IntelligenceUsageSummary | null>
306
+ >('intelligence:get-today-stats')
307
+
308
+ const intelligenceGetMonthStatsEvent = defineRawEvent<
309
+ { callerId?: string },
310
+ IntelligenceApiResponse<IntelligenceUsageSummary | null>
311
+ >('intelligence:get-month-stats')
312
+
313
+ const intelligenceGetUsageStatsEvent = defineRawEvent<
314
+ {
315
+ callerId: string
316
+ periodType: 'day' | 'month'
317
+ startPeriod?: string
318
+ endPeriod?: string
319
+ },
320
+ IntelligenceApiResponse<IntelligenceUsageSummary[]>
321
+ >('intelligence:get-usage-stats')
322
+
323
+ const intelligenceGetQuotaEvent = defineRawEvent<
324
+ { callerId?: string, callerType?: IntelligenceQuotaConfig['callerType'] },
325
+ IntelligenceApiResponse<IntelligenceQuotaConfig | null>
326
+ >('intelligence:get-quota')
327
+
328
+ const intelligenceSetQuotaEvent = defineRawEvent<
329
+ IntelligenceQuotaConfig,
330
+ IntelligenceApiResponse<void>
331
+ >('intelligence:set-quota')
332
+
333
+ const intelligenceDeleteQuotaEvent = defineRawEvent<
334
+ { callerId?: string, callerType?: IntelligenceQuotaConfig['callerType'] },
335
+ IntelligenceApiResponse<void>
336
+ >('intelligence:delete-quota')
337
+
338
+ const intelligenceGetAllQuotasEvent = defineRawEvent<
339
+ void,
340
+ IntelligenceApiResponse<IntelligenceQuotaConfig[]>
341
+ >('intelligence:get-all-quotas')
342
+
343
+ const intelligenceCheckQuotaEvent = defineRawEvent<
344
+ {
345
+ callerId?: string
346
+ callerType?: IntelligenceQuotaConfig['callerType']
347
+ estimatedTokens?: number
348
+ },
349
+ IntelligenceApiResponse<IntelligenceQuotaCheckResult>
350
+ >('intelligence:check-quota')
351
+
352
+ const intelligenceGetCurrentUsageEvent = defineRawEvent<
353
+ { callerId?: string, callerType?: IntelligenceQuotaConfig['callerType'] },
354
+ IntelligenceApiResponse<IntelligenceCurrentUsage>
355
+ >('intelligence:get-current-usage')
356
+
357
+ const intelligenceSessionStartEvent = defineRawEvent<
358
+ IntelligenceSessionStartPayload,
359
+ IntelligenceApiResponse<TuffIntelligenceSession>
360
+ >('intelligence:session:start')
361
+
362
+ const intelligenceSessionHeartbeatEvent = defineRawEvent<
363
+ IntelligenceSessionHeartbeatPayload,
364
+ IntelligenceApiResponse<{ sessionId: string, heartbeatAt: string }>
365
+ >('intelligence:session:heartbeat')
366
+
367
+ const intelligenceSessionPauseEvent = defineRawEvent<
368
+ IntelligenceSessionPausePayload,
369
+ IntelligenceApiResponse<unknown>
370
+ >('intelligence:session:pause')
371
+
372
+ const intelligenceSessionRecoverableEvent = defineRawEvent<
373
+ void,
374
+ IntelligenceApiResponse<unknown>
375
+ >('intelligence:session:recoverable')
376
+
377
+ const intelligenceSessionResumeEvent = defineRawEvent<
378
+ IntelligenceSessionResumePayload,
379
+ IntelligenceApiResponse<TuffIntelligenceSession | null>
380
+ >('intelligence:session:resume')
381
+
382
+ const intelligenceSessionCancelEvent = defineRawEvent<
383
+ IntelligenceSessionCancelPayload,
384
+ IntelligenceApiResponse<TuffIntelligenceStateSnapshot | null>
385
+ >('intelligence:session:cancel')
386
+
387
+ const intelligenceSessionGetStateEvent = defineRawEvent<
388
+ IntelligenceSessionStatePayload,
389
+ IntelligenceApiResponse<TuffIntelligenceStateSnapshot | null>
390
+ >('intelligence:session:get-state')
391
+
392
+ const intelligenceOrchestratorPlanEvent = defineRawEvent<
393
+ IntelligenceOrchestratorPlanPayload,
394
+ IntelligenceApiResponse<TuffIntelligenceTurn>
395
+ >('intelligence:orchestrator:plan')
396
+
397
+ const intelligenceOrchestratorExecuteEvent = defineRawEvent<
398
+ IntelligenceOrchestratorExecutePayload,
399
+ IntelligenceApiResponse<TuffIntelligenceTurn>
400
+ >('intelligence:orchestrator:execute')
401
+
402
+ const intelligenceOrchestratorReflectEvent = defineRawEvent<
403
+ IntelligenceOrchestratorReflectPayload,
404
+ IntelligenceApiResponse<TuffIntelligenceTurn>
405
+ >('intelligence:orchestrator:reflect')
406
+
407
+ const intelligenceToolCallEvent = defineRawEvent<
408
+ IntelligenceToolCallPayload,
409
+ IntelligenceApiResponse<{
410
+ success: boolean
411
+ output?: unknown
412
+ error?: string
413
+ approvalTicket?: TuffIntelligenceApprovalTicket
414
+ traceEvent: TuffIntelligenceTraceEvent
415
+ }>
416
+ >('intelligence:tool:call')
417
+
418
+ const intelligenceToolResultEvent = defineRawEvent<
419
+ IntelligenceToolResultPayload,
420
+ IntelligenceApiResponse<{ accepted: boolean }>
421
+ >('intelligence:tool:result')
422
+
423
+ const intelligenceToolApproveEvent = defineRawEvent<
424
+ IntelligenceToolApprovePayload,
425
+ IntelligenceApiResponse<TuffIntelligenceApprovalTicket | null>
426
+ >('intelligence:tool:approve')
427
+
428
+ const intelligenceTraceStreamEvent = defineRawEvent<
429
+ IntelligenceTraceQueryPayload,
430
+ IntelligenceApiResponse<TuffIntelligenceTraceEvent[]>
431
+ >('intelligence:trace:stream')
432
+
433
+ const intelligenceTraceQueryEvent = defineRawEvent<
434
+ IntelligenceTraceQueryPayload,
435
+ IntelligenceApiResponse<TuffIntelligenceTraceEvent[]>
436
+ >('intelligence:trace:query')
437
+
438
+ const intelligenceTraceExportEvent = defineRawEvent<
439
+ IntelligenceTraceExportPayload,
440
+ IntelligenceApiResponse<{ format: 'json' | 'jsonl', content: string }>
441
+ >('intelligence:trace:export')
442
+
443
+ function assertApiResponse<T>(response: IntelligenceApiResponse<T>, fallbackMessage: string): T {
444
+ if (!response?.ok) {
445
+ throw new Error(response?.error || fallbackMessage)
446
+ }
447
+ return response.result as T
448
+ }
449
+
450
+ export function createIntelligenceSdk(transport: IntelligenceSdkTransport): IntelligenceSdk {
451
+ return {
452
+ async invoke<T = unknown>(
453
+ capabilityId: string,
454
+ payload: unknown,
455
+ options?: IntelligenceInvokeOptions,
456
+ ) {
457
+ const response = await transport.send(intelligenceInvokeEvent, { capabilityId, payload, options })
458
+ return assertApiResponse(response, 'Intelligence invoke failed') as IntelligenceInvokeResult<T>
459
+ },
460
+
461
+ async chatLangChain(payload) {
462
+ const response = await transport.send(intelligenceChatLangChainEvent, payload)
463
+ return assertApiResponse(response, 'Intelligence chat failed')
464
+ },
465
+
466
+ async testProvider(config) {
467
+ const response = await transport.send(intelligenceTestProviderEvent, { provider: config })
468
+ return assertApiResponse(response, 'Intelligence provider test failed')
469
+ },
470
+
471
+ async testCapability(params) {
472
+ const response = await transport.send(intelligenceTestCapabilityEvent, params)
473
+ return assertApiResponse(response, 'Intelligence capability test failed')
474
+ },
475
+
476
+ async getCapabilityTestMeta(payload) {
477
+ const response = await transport.send(intelligenceGetCapabilityTestMetaEvent, payload)
478
+ return assertApiResponse(response, 'Failed to get capability test metadata')
479
+ },
480
+
481
+ async fetchModels(config) {
482
+ const response = await transport.send(intelligenceFetchModelsEvent, { provider: config })
483
+ return assertApiResponse(response, 'Failed to fetch models')
484
+ },
485
+
486
+ async getAuditLogs(options = {}) {
487
+ const response = await transport.send(intelligenceGetAuditLogsEvent, options)
488
+ return assertApiResponse(response, 'Failed to get audit logs')
489
+ },
490
+
491
+ async getTodayStats(callerId) {
492
+ const response = await transport.send(intelligenceGetTodayStatsEvent, { callerId })
493
+ return assertApiResponse(response, 'Failed to get today stats')
494
+ },
495
+
496
+ async getMonthStats(callerId) {
497
+ const response = await transport.send(intelligenceGetMonthStatsEvent, { callerId })
498
+ return assertApiResponse(response, 'Failed to get month stats')
499
+ },
500
+
501
+ async getUsageStats(payload) {
502
+ const response = await transport.send(intelligenceGetUsageStatsEvent, payload)
503
+ return assertApiResponse(response, 'Failed to get usage stats')
504
+ },
505
+
506
+ async getQuota(payload) {
507
+ const response = await transport.send(intelligenceGetQuotaEvent, payload)
508
+ return assertApiResponse(response, 'Failed to get quota')
509
+ },
510
+
511
+ async setQuota(config) {
512
+ const response = await transport.send(intelligenceSetQuotaEvent, config)
513
+ assertApiResponse(response, 'Failed to set quota')
514
+ },
515
+
516
+ async deleteQuota(payload) {
517
+ const response = await transport.send(intelligenceDeleteQuotaEvent, payload)
518
+ assertApiResponse(response, 'Failed to delete quota')
519
+ },
520
+
521
+ async getAllQuotas() {
522
+ const response = await transport.send(intelligenceGetAllQuotasEvent)
523
+ return assertApiResponse(response, 'Failed to get all quotas')
524
+ },
525
+
526
+ async checkQuota(payload) {
527
+ const response = await transport.send(intelligenceCheckQuotaEvent, payload)
528
+ return assertApiResponse(response, 'Failed to check quota')
529
+ },
530
+
531
+ async getCurrentUsage(payload) {
532
+ const response = await transport.send(intelligenceGetCurrentUsageEvent, payload)
533
+ return assertApiResponse(response, 'Failed to get current usage')
534
+ },
535
+
536
+ async sessionStart(payload = {}) {
537
+ const response = await transport.send(intelligenceSessionStartEvent, payload)
538
+ return assertApiResponse(response, 'Failed to start intelligence session')
539
+ },
540
+
541
+ async sessionHeartbeat(payload) {
542
+ const response = await transport.send(intelligenceSessionHeartbeatEvent, payload)
543
+ return assertApiResponse(response, 'Failed to send intelligence heartbeat')
544
+ },
545
+
546
+ async sessionPause(payload) {
547
+ const response = await transport.send(intelligenceSessionPauseEvent, payload)
548
+ return assertApiResponse(response, 'Failed to pause intelligence session')
549
+ },
550
+
551
+ async sessionRecoverable() {
552
+ const response = await transport.send(intelligenceSessionRecoverableEvent)
553
+ return assertApiResponse(response, 'Failed to fetch recoverable intelligence session')
554
+ },
555
+
556
+ async sessionResume(payload) {
557
+ const response = await transport.send(intelligenceSessionResumeEvent, payload)
558
+ return assertApiResponse(response, 'Failed to resume intelligence session')
559
+ },
560
+
561
+ async sessionCancel(payload) {
562
+ const response = await transport.send(intelligenceSessionCancelEvent, payload)
563
+ return assertApiResponse(response, 'Failed to cancel intelligence session')
564
+ },
565
+
566
+ async sessionGetState(payload) {
567
+ const response = await transport.send(intelligenceSessionGetStateEvent, payload)
568
+ return assertApiResponse(response, 'Failed to get intelligence session state')
569
+ },
570
+
571
+ async orchestratorPlan(payload) {
572
+ const response = await transport.send(intelligenceOrchestratorPlanEvent, payload)
573
+ return assertApiResponse(response, 'Failed to create intelligence plan')
574
+ },
575
+
576
+ async orchestratorExecute(payload) {
577
+ const response = await transport.send(intelligenceOrchestratorExecuteEvent, payload)
578
+ return assertApiResponse(response, 'Failed to execute intelligence plan')
579
+ },
580
+
581
+ async orchestratorReflect(payload) {
582
+ const response = await transport.send(intelligenceOrchestratorReflectEvent, payload)
583
+ return assertApiResponse(response, 'Failed to reflect intelligence result')
584
+ },
585
+
586
+ async toolCall(payload) {
587
+ const response = await transport.send(intelligenceToolCallEvent, payload)
588
+ return assertApiResponse(response, 'Failed to call intelligence tool')
589
+ },
590
+
591
+ async toolResult(payload) {
592
+ const response = await transport.send(intelligenceToolResultEvent, payload)
593
+ return assertApiResponse(response, 'Failed to report intelligence tool result')
594
+ },
595
+
596
+ async toolApprove(payload) {
597
+ const response = await transport.send(intelligenceToolApproveEvent, payload)
598
+ return assertApiResponse(response, 'Failed to approve intelligence tool')
599
+ },
600
+
601
+ async traceStream(payload) {
602
+ const response = await transport.send(intelligenceTraceStreamEvent, payload)
603
+ return assertApiResponse(response, 'Failed to stream intelligence trace')
604
+ },
605
+
606
+ async traceQuery(payload) {
607
+ const response = await transport.send(intelligenceTraceQueryEvent, payload)
608
+ return assertApiResponse(response, 'Failed to query intelligence trace')
609
+ },
610
+
611
+ async traceExport(payload) {
612
+ const response = await transport.send(intelligenceTraceExportEvent, payload)
613
+ return assertApiResponse(response, 'Failed to export intelligence trace')
614
+ },
615
+ }
616
+ }
@@ -0,0 +1,35 @@
1
+ import type {
2
+ MarketCheckUpdatesResponse,
3
+ MarketGetPluginRequest,
4
+ MarketGetPluginResponse,
5
+ MarketHttpRequest,
6
+ MarketHttpRequestResponse,
7
+ MarketSearchRequest,
8
+ MarketSearchResponse,
9
+ MarketUpdatesAvailablePayload,
10
+ } from '../../events/types'
11
+ import type { ITuffTransport } from '../../types'
12
+ import { MarketEvents } from '../../events'
13
+
14
+ export interface MarketSdk {
15
+ checkUpdates: () => Promise<MarketCheckUpdatesResponse>
16
+ search: (request: MarketSearchRequest) => Promise<MarketSearchResponse>
17
+ getPlugin: (request: MarketGetPluginRequest) => Promise<MarketGetPluginResponse>
18
+ httpRequest: <T = unknown>(request: MarketHttpRequest) => Promise<MarketHttpRequestResponse<T>>
19
+ featured: (payload?: unknown) => Promise<unknown>
20
+ npmList: () => Promise<unknown>
21
+ onUpdatesAvailable: (handler: (payload: MarketUpdatesAvailablePayload) => void) => () => void
22
+ }
23
+
24
+ export function createMarketSdk(transport: ITuffTransport): MarketSdk {
25
+ return {
26
+ checkUpdates: async () => transport.send(MarketEvents.api.checkUpdates),
27
+ search: async request => transport.send(MarketEvents.api.search, request),
28
+ getPlugin: async request => transport.send(MarketEvents.api.getPlugin, request),
29
+ httpRequest: async <T = unknown>(request: MarketHttpRequest) =>
30
+ transport.send(MarketEvents.api.httpRequest, request) as Promise<MarketHttpRequestResponse<T>>,
31
+ featured: async payload => transport.send(MarketEvents.api.featured, payload),
32
+ npmList: async () => transport.send(MarketEvents.api.npmList),
33
+ onUpdatesAvailable: handler => transport.on(MarketEvents.push.updatesAvailable, handler),
34
+ }
35
+ }