@zhin.js/client 1.1.4 → 1.1.6

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 (147) hide show
  1. package/README.md +94 -432
  2. package/client/agent-stream.ts +121 -0
  3. package/client/app.test.ts +37 -0
  4. package/client/app.ts +130 -138
  5. package/client/bootstrap/loadConsoleEntries.test.ts +23 -12
  6. package/client/bootstrap/loadConsoleEntries.ts +40 -27
  7. package/client/console-client-context.ts +24 -0
  8. package/client/console-client.test.ts +46 -0
  9. package/client/console-client.ts +70 -0
  10. package/client/console-events.ts +38 -0
  11. package/client/console-utils/remoteApi.test.ts +91 -0
  12. package/client/console-utils/remoteApi.ts +47 -9
  13. package/client/index.ts +92 -28
  14. package/client/mediaSrc.test.ts +49 -0
  15. package/client/mediaSrc.ts +84 -11
  16. package/client/message-content/MarkdownContent.tsx +128 -0
  17. package/client/message-content/markdown.test.ts +48 -0
  18. package/client/message-content/markdown.ts +247 -0
  19. package/client/persistence/idb-store.test.ts +121 -0
  20. package/client/persistence/idb-store.ts +40 -21
  21. package/client/segments.test.ts +16 -0
  22. package/client/segments.ts +39 -0
  23. package/client/transport/console-transport.test.ts +394 -0
  24. package/client/transport/console-transport.ts +676 -0
  25. package/client/transport/hooks.test.ts +21 -0
  26. package/client/transport/hooks.ts +535 -0
  27. package/client/transport/index.ts +23 -0
  28. package/client/{websocket → transport}/types.ts +16 -17
  29. package/client/types.ts +5 -8
  30. package/client/workroom/WorkroomRunsPage.tsx +355 -0
  31. package/client/workroom/registerWorkroomConsole.test.ts +25 -0
  32. package/client/workroom/registerWorkroomConsole.ts +17 -0
  33. package/dist/agent-stream.d.ts +17 -0
  34. package/dist/agent-stream.d.ts.map +1 -0
  35. package/dist/agent-stream.js +73 -0
  36. package/dist/agent-stream.js.map +1 -0
  37. package/dist/app.d.ts +17 -52
  38. package/dist/app.d.ts.map +1 -1
  39. package/dist/app.js +110 -95
  40. package/dist/app.js.map +1 -1
  41. package/dist/bootstrap/loadConsoleEntries.d.ts +10 -7
  42. package/dist/bootstrap/loadConsoleEntries.d.ts.map +1 -1
  43. package/dist/bootstrap/loadConsoleEntries.js +37 -11
  44. package/dist/bootstrap/loadConsoleEntries.js.map +1 -1
  45. package/dist/console-client-context.d.ts +9 -0
  46. package/dist/console-client-context.d.ts.map +1 -0
  47. package/dist/console-client-context.js +13 -0
  48. package/dist/console-client-context.js.map +1 -0
  49. package/dist/console-client.d.ts +25 -0
  50. package/dist/console-client.d.ts.map +1 -0
  51. package/dist/console-client.js +45 -0
  52. package/dist/console-client.js.map +1 -0
  53. package/dist/console-events.d.ts +8 -0
  54. package/dist/console-events.d.ts.map +1 -0
  55. package/dist/console-events.js +26 -0
  56. package/dist/console-events.js.map +1 -0
  57. package/dist/console-utils/remoteApi.d.ts +2 -1
  58. package/dist/console-utils/remoteApi.d.ts.map +1 -1
  59. package/dist/console-utils/remoteApi.js +46 -8
  60. package/dist/console-utils/remoteApi.js.map +1 -1
  61. package/dist/index.d.ts +14 -7
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +18 -8
  64. package/dist/index.js.map +1 -1
  65. package/dist/mediaSrc.d.ts +1 -1
  66. package/dist/mediaSrc.d.ts.map +1 -1
  67. package/dist/mediaSrc.js +91 -11
  68. package/dist/mediaSrc.js.map +1 -1
  69. package/dist/message-content/MarkdownContent.d.ts +11 -0
  70. package/dist/message-content/MarkdownContent.d.ts.map +1 -0
  71. package/dist/message-content/MarkdownContent.js +68 -0
  72. package/dist/message-content/MarkdownContent.js.map +1 -0
  73. package/dist/message-content/markdown.d.ts +47 -0
  74. package/dist/message-content/markdown.d.ts.map +1 -0
  75. package/dist/message-content/markdown.js +219 -0
  76. package/dist/message-content/markdown.js.map +1 -0
  77. package/dist/persistence/idb-store.d.ts +5 -2
  78. package/dist/persistence/idb-store.d.ts.map +1 -1
  79. package/dist/persistence/idb-store.js +29 -20
  80. package/dist/persistence/idb-store.js.map +1 -1
  81. package/dist/segments.d.ts +9 -0
  82. package/dist/segments.d.ts.map +1 -0
  83. package/dist/segments.js +35 -0
  84. package/dist/segments.js.map +1 -0
  85. package/dist/transport/console-transport.d.ts +217 -0
  86. package/dist/transport/console-transport.d.ts.map +1 -0
  87. package/dist/transport/console-transport.js +563 -0
  88. package/dist/transport/console-transport.js.map +1 -0
  89. package/dist/transport/hooks.d.ts +253 -0
  90. package/dist/transport/hooks.d.ts.map +1 -0
  91. package/dist/transport/hooks.js +483 -0
  92. package/dist/transport/hooks.js.map +1 -0
  93. package/dist/transport/index.d.ts +4 -0
  94. package/dist/transport/index.d.ts.map +1 -0
  95. package/dist/transport/index.js +4 -0
  96. package/dist/transport/index.js.map +1 -0
  97. package/dist/{websocket → transport}/types.d.ts +14 -13
  98. package/dist/transport/types.d.ts.map +1 -0
  99. package/dist/{websocket → transport}/types.js +4 -9
  100. package/dist/transport/types.js.map +1 -0
  101. package/dist/types.d.ts +4 -4
  102. package/dist/types.d.ts.map +1 -1
  103. package/dist/workroom/WorkroomRunsPage.d.ts +2 -0
  104. package/dist/workroom/WorkroomRunsPage.d.ts.map +1 -0
  105. package/dist/workroom/WorkroomRunsPage.js +111 -0
  106. package/dist/workroom/WorkroomRunsPage.js.map +1 -0
  107. package/dist/workroom/registerWorkroomConsole.d.ts +4 -0
  108. package/dist/workroom/registerWorkroomConsole.d.ts.map +1 -0
  109. package/dist/workroom/registerWorkroomConsole.js +16 -0
  110. package/dist/workroom/registerWorkroomConsole.js.map +1 -0
  111. package/package.json +18 -8
  112. package/client/runtime/index.ts +0 -12
  113. package/client/websocket/hooks.ts +0 -289
  114. package/client/websocket/index.ts +0 -6
  115. package/client/websocket/instance.ts +0 -24
  116. package/client/websocket/manager.ts +0 -426
  117. package/client/websocket/remote-settings.ts +0 -25
  118. package/dist/bootstrap/loadConsoleEntries.test.d.ts +0 -2
  119. package/dist/bootstrap/loadConsoleEntries.test.d.ts.map +0 -1
  120. package/dist/bootstrap/loadConsoleEntries.test.js +0 -27
  121. package/dist/bootstrap/loadConsoleEntries.test.js.map +0 -1
  122. package/dist/runtime/index.d.ts +0 -6
  123. package/dist/runtime/index.d.ts.map +0 -1
  124. package/dist/runtime/index.js +0 -10
  125. package/dist/runtime/index.js.map +0 -1
  126. package/dist/websocket/hooks.d.ts +0 -105
  127. package/dist/websocket/hooks.d.ts.map +0 -1
  128. package/dist/websocket/hooks.js +0 -247
  129. package/dist/websocket/hooks.js.map +0 -1
  130. package/dist/websocket/index.d.ts +0 -7
  131. package/dist/websocket/index.d.ts.map +0 -1
  132. package/dist/websocket/index.js +0 -7
  133. package/dist/websocket/index.js.map +0 -1
  134. package/dist/websocket/instance.d.ts +0 -5
  135. package/dist/websocket/instance.d.ts.map +0 -1
  136. package/dist/websocket/instance.js +0 -21
  137. package/dist/websocket/instance.js.map +0 -1
  138. package/dist/websocket/manager.d.ts +0 -113
  139. package/dist/websocket/manager.d.ts.map +0 -1
  140. package/dist/websocket/manager.js +0 -403
  141. package/dist/websocket/manager.js.map +0 -1
  142. package/dist/websocket/remote-settings.d.ts +0 -5
  143. package/dist/websocket/remote-settings.d.ts.map +0 -1
  144. package/dist/websocket/remote-settings.js +0 -23
  145. package/dist/websocket/remote-settings.js.map +0 -1
  146. package/dist/websocket/types.d.ts.map +0 -1
  147. package/dist/websocket/types.js.map +0 -1
@@ -0,0 +1,483 @@
1
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
2
+ import { useConsoleClient } from "../console-client-context.js";
3
+ /**
4
+ * 每次连接会话只对同一 key 自动加载一次:失败后不再零退避死循环
5
+ * (旧行为:加载失败 → 状态保持空 → effect 反复立即重试,打爆 /api/console/request)。
6
+ * 断连后重置;key 变化(如 pluginName 切换)视为新目标重新尝试;手动重试走各 hook 返回的 load 函数。
7
+ */
8
+ function useAutoLoadOnce(connected, key, ready, fire) {
9
+ const attemptedRef = useRef(undefined);
10
+ useEffect(() => {
11
+ if (!connected) {
12
+ attemptedRef.current = undefined;
13
+ return;
14
+ }
15
+ if (ready || attemptedRef.current === key)
16
+ return;
17
+ attemptedRef.current = key;
18
+ fire();
19
+ });
20
+ }
21
+ export function useConsoleTransport(options = {}) {
22
+ const { autoConnect = true } = options;
23
+ const wsManager = useConsoleClient().transport;
24
+ const [connected, setConnected] = useState(wsManager.isConnected());
25
+ useEffect(() => {
26
+ return wsManager.onConnectionChange(setConnected);
27
+ }, [wsManager]);
28
+ const connect = useCallback(() => wsManager.connect(), [wsManager]);
29
+ const disconnect = useCallback(() => wsManager.disconnect(), [wsManager]);
30
+ const send = useCallback((message) => wsManager.send(message), [wsManager]);
31
+ const sendRequest = useCallback((message) => wsManager.sendRequest(message), [wsManager]);
32
+ useEffect(() => {
33
+ if (autoConnect && !connected)
34
+ connect();
35
+ }, [autoConnect, connected, connect]);
36
+ return { connected, connect, disconnect, send, sendRequest, manager: wsManager };
37
+ }
38
+ /**
39
+ * 按 key 绑定异步加载结果:key(如 pluginName)切换后,旧 key 的残留值视为 null,
40
+ * 避免 useConfig 的 ready 判断(config != null)被上一插件的 state 挡住而不再加载新配置。
41
+ * @internal
42
+ */
43
+ export function resolveKeyedValue(entry, key) {
44
+ return entry && entry.key === key ? entry.value : null;
45
+ }
46
+ export function useConfig(pluginName, options) {
47
+ const { autoLoad = true, autoLoadSchema = true } = options ?? {};
48
+ const wsManager = useConsoleClient().transport;
49
+ const [connected, setConnected] = useState(wsManager.isConnected());
50
+ const [configEntry, setConfigEntry] = useState(null);
51
+ const [schemaEntry, setSchemaEntry] = useState(null);
52
+ const [loading, setLoading] = useState(false);
53
+ const [error, setError] = useState(null);
54
+ const config = resolveKeyedValue(configEntry, pluginName);
55
+ const schema = resolveKeyedValue(schemaEntry, pluginName);
56
+ useEffect(() => wsManager.onConnectionChange(setConnected), [wsManager]);
57
+ const getConfig = useCallback(async () => {
58
+ setLoading(true);
59
+ setError(null);
60
+ try {
61
+ const result = await wsManager.getConfig(pluginName);
62
+ setConfigEntry({ key: pluginName, value: result });
63
+ return result;
64
+ }
65
+ catch (e) {
66
+ setError(e instanceof Error ? e.message : "Unknown error");
67
+ throw e;
68
+ }
69
+ finally {
70
+ setLoading(false);
71
+ }
72
+ }, [pluginName, wsManager]);
73
+ const setConfig = useCallback(async (newConfig) => {
74
+ setLoading(true);
75
+ setError(null);
76
+ try {
77
+ return await wsManager.setConfig(pluginName, newConfig);
78
+ }
79
+ catch (e) {
80
+ setError(e instanceof Error ? e.message : "Unknown error");
81
+ throw e;
82
+ }
83
+ finally {
84
+ setLoading(false);
85
+ }
86
+ }, [pluginName, wsManager]);
87
+ const getSchema = useCallback(async () => {
88
+ try {
89
+ const result = await wsManager.getSchema(pluginName);
90
+ if (result)
91
+ setSchemaEntry({ key: pluginName, value: result });
92
+ return result;
93
+ }
94
+ catch (e) {
95
+ throw e;
96
+ }
97
+ }, [pluginName, wsManager]);
98
+ useAutoLoadOnce(connected, `config:${pluginName}`, !autoLoad || config != null || loading, () => {
99
+ getConfig().catch(() => { });
100
+ });
101
+ useAutoLoadOnce(connected, `schema:${pluginName}`, !autoLoadSchema || schema != null, () => {
102
+ getSchema().catch(() => { });
103
+ });
104
+ return useMemo(() => ({ config, schema, loading, error, connected, getConfig, setConfig, getSchema }), [config, schema, loading, error, connected, getConfig, setConfig, getSchema]);
105
+ }
106
+ export function useConfigSource() {
107
+ const wsManager = useConsoleClient().transport;
108
+ const [connected, setConnected] = useState(wsManager.isConnected());
109
+ const [source, setSource] = useState("");
110
+ const [format, setFormat] = useState('yaml');
111
+ const [revision, setRevision] = useState("");
112
+ const [configKeys, setConfigKeys] = useState([]);
113
+ const [loading, setLoading] = useState(false);
114
+ const [error, setError] = useState(null);
115
+ useEffect(() => wsManager.onConnectionChange(setConnected), [wsManager]);
116
+ const load = useCallback(async () => {
117
+ setLoading(true);
118
+ setError(null);
119
+ try {
120
+ const result = await wsManager.getConfigSource();
121
+ setSource(result.source);
122
+ setFormat(result.format);
123
+ setRevision(result.revision);
124
+ setConfigKeys([...result.configKeys]);
125
+ return result;
126
+ }
127
+ catch (e) {
128
+ setError(e instanceof Error ? e.message : "Unknown error");
129
+ throw e;
130
+ }
131
+ finally {
132
+ setLoading(false);
133
+ }
134
+ }, [wsManager]);
135
+ const save = useCallback(async (content) => {
136
+ setLoading(true);
137
+ setError(null);
138
+ try {
139
+ if (!revision)
140
+ throw new Error('Config source must be loaded before it can be replaced');
141
+ const result = await wsManager.replaceConfigSource(content, revision);
142
+ setSource(content);
143
+ setRevision(result.revision);
144
+ return result;
145
+ }
146
+ catch (e) {
147
+ setError(e instanceof Error ? e.message : "Unknown error");
148
+ throw e;
149
+ }
150
+ finally {
151
+ setLoading(false);
152
+ }
153
+ }, [revision, wsManager]);
154
+ useAutoLoadOnce(connected, "config-source", !!revision || loading, () => {
155
+ load().catch(() => { });
156
+ });
157
+ return useMemo(() => ({ source, format, revision, configKeys, loading, error, load, save }), [source, format, revision, configKeys, loading, error, load, save]);
158
+ }
159
+ /** Shared Console flow for previewing and committing a plugin installation. */
160
+ export function usePluginInstall() {
161
+ const wsManager = useConsoleClient().transport;
162
+ const [loading, setLoading] = useState(false);
163
+ const [error, setError] = useState(null);
164
+ const [plan, setPlan] = useState(null);
165
+ const preview = useCallback(async (packageName) => {
166
+ setLoading(true);
167
+ setError(null);
168
+ try {
169
+ const next = await wsManager.planPluginInstall(packageName);
170
+ setPlan(next);
171
+ return next;
172
+ }
173
+ catch (e) {
174
+ setError(e instanceof Error ? e.message : 'Unknown error');
175
+ throw e;
176
+ }
177
+ finally {
178
+ setLoading(false);
179
+ }
180
+ }, [wsManager]);
181
+ const install = useCallback(async (packageName, expectedRevision) => {
182
+ setLoading(true);
183
+ setError(null);
184
+ try {
185
+ return await wsManager.installPlugin(packageName, expectedRevision);
186
+ }
187
+ catch (e) {
188
+ setError(e instanceof Error ? e.message : 'Unknown error');
189
+ throw e;
190
+ }
191
+ finally {
192
+ setLoading(false);
193
+ }
194
+ }, [wsManager]);
195
+ return useMemo(() => ({ plan, loading, error, preview, install }), [
196
+ plan, loading, error, preview, install,
197
+ ]);
198
+ }
199
+ export function usePluginConfigValidation(pluginName) {
200
+ const wsManager = useConsoleClient().transport;
201
+ const [loading, setLoading] = useState(false);
202
+ const [error, setError] = useState(null);
203
+ const validate = useCallback(async (data) => {
204
+ setLoading(true);
205
+ setError(null);
206
+ try {
207
+ return await wsManager.validatePluginConfig(pluginName, data);
208
+ }
209
+ catch (e) {
210
+ setError(e instanceof Error ? e.message : 'Unknown error');
211
+ throw e;
212
+ }
213
+ finally {
214
+ setLoading(false);
215
+ }
216
+ }, [pluginName, wsManager]);
217
+ return useMemo(() => ({ loading, error, validate }), [loading, error, validate]);
218
+ }
219
+ export function usePluginDiagnostics(pluginName) {
220
+ const wsManager = useConsoleClient().transport;
221
+ const [loading, setLoading] = useState(false);
222
+ const [error, setError] = useState(null);
223
+ const diagnose = useCallback(async () => {
224
+ setLoading(true);
225
+ setError(null);
226
+ try {
227
+ return await wsManager.diagnosePlugin(pluginName);
228
+ }
229
+ catch (e) {
230
+ setError(e instanceof Error ? e.message : 'Unknown error');
231
+ throw e;
232
+ }
233
+ finally {
234
+ setLoading(false);
235
+ }
236
+ }, [pluginName, wsManager]);
237
+ return useMemo(() => ({ loading, error, diagnose }), [loading, error, diagnose]);
238
+ }
239
+ export function usePluginLifecycle(instanceKey) {
240
+ const wsManager = useConsoleClient().transport;
241
+ const [loading, setLoading] = useState(false);
242
+ const [error, setError] = useState(null);
243
+ const setEnabled = useCallback(async (enabled) => {
244
+ setLoading(true);
245
+ setError(null);
246
+ try {
247
+ return await wsManager.setPluginEnabled(instanceKey, enabled);
248
+ }
249
+ catch (e) {
250
+ setError(e instanceof Error ? e.message : 'Unknown error');
251
+ throw e;
252
+ }
253
+ finally {
254
+ setLoading(false);
255
+ }
256
+ }, [instanceKey, wsManager]);
257
+ return useMemo(() => ({ loading, error, setEnabled }), [loading, error, setEnabled]);
258
+ }
259
+ export function usePluginUninstall() {
260
+ const wsManager = useConsoleClient().transport;
261
+ const [loading, setLoading] = useState(false);
262
+ const [error, setError] = useState(null);
263
+ const preview = useCallback(async (packageName) => {
264
+ setLoading(true);
265
+ setError(null);
266
+ try {
267
+ return await wsManager.planPluginUninstall(packageName);
268
+ }
269
+ catch (e) {
270
+ setError(e instanceof Error ? e.message : 'Unknown error');
271
+ throw e;
272
+ }
273
+ finally {
274
+ setLoading(false);
275
+ }
276
+ }, [wsManager]);
277
+ const uninstall = useCallback(async (packageName, expectedRevision) => {
278
+ setLoading(true);
279
+ setError(null);
280
+ try {
281
+ return await wsManager.uninstallPlugin(packageName, expectedRevision);
282
+ }
283
+ catch (e) {
284
+ setError(e instanceof Error ? e.message : 'Unknown error');
285
+ throw e;
286
+ }
287
+ finally {
288
+ setLoading(false);
289
+ }
290
+ }, [wsManager]);
291
+ return useMemo(() => ({ loading, error, preview, uninstall }), [
292
+ loading, error, preview, uninstall,
293
+ ]);
294
+ }
295
+ export function usePluginUpdate() {
296
+ const wsManager = useConsoleClient().transport;
297
+ const [loading, setLoading] = useState(false);
298
+ const [error, setError] = useState(null);
299
+ const preview = useCallback((packageName, targetVersion) => {
300
+ setLoading(true);
301
+ setError(null);
302
+ return wsManager.planPluginUpdate(packageName, targetVersion)
303
+ .catch((e) => {
304
+ setError(e instanceof Error ? e.message : 'Unknown error');
305
+ throw e;
306
+ })
307
+ .finally(() => setLoading(false));
308
+ }, [wsManager]);
309
+ const update = useCallback((packageName, targetVersion, expectedRevision) => {
310
+ setLoading(true);
311
+ setError(null);
312
+ return wsManager.updatePlugin(packageName, targetVersion, expectedRevision)
313
+ .catch((e) => {
314
+ setError(e instanceof Error ? e.message : 'Unknown error');
315
+ throw e;
316
+ })
317
+ .finally(() => setLoading(false));
318
+ }, [wsManager]);
319
+ return useMemo(() => ({ loading, error, preview, update }), [loading, error, preview, update]);
320
+ }
321
+ export function useEndpointTest(adapter, endpointKey) {
322
+ const wsManager = useConsoleClient().transport;
323
+ const [loading, setLoading] = useState(false);
324
+ const [error, setError] = useState(null);
325
+ const test = useCallback(async () => {
326
+ setLoading(true);
327
+ setError(null);
328
+ try {
329
+ return await wsManager.testEndpoint(adapter, endpointKey);
330
+ }
331
+ catch (e) {
332
+ setError(e instanceof Error ? e.message : 'Unknown error');
333
+ throw e;
334
+ }
335
+ finally {
336
+ setLoading(false);
337
+ }
338
+ }, [adapter, endpointKey, wsManager]);
339
+ return useMemo(() => ({ loading, error, test }), [loading, error, test]);
340
+ }
341
+ export function usePluginMarketplace() {
342
+ const wsManager = useConsoleClient().transport;
343
+ const [loading, setLoading] = useState(false);
344
+ const [error, setError] = useState(null);
345
+ const run = useCallback(async (operation) => {
346
+ setLoading(true);
347
+ setError(null);
348
+ try {
349
+ return await operation();
350
+ }
351
+ catch (e) {
352
+ setError(e instanceof Error ? e.message : 'Unknown error');
353
+ throw e;
354
+ }
355
+ finally {
356
+ setLoading(false);
357
+ }
358
+ }, []);
359
+ const search = useCallback((query) => run(() => wsManager.searchMarketplace(query)), [run, wsManager]);
360
+ const detail = useCallback((packageName) => run(() => wsManager.getMarketplacePlugin(packageName)), [run, wsManager]);
361
+ const updates = useCallback(() => run(() => wsManager.getPluginUpdates()), [run, wsManager]);
362
+ const installed = useCallback(() => run(() => wsManager.listPlugins()), [run, wsManager]);
363
+ return useMemo(() => ({ loading, error, search, detail, updates, installed }), [
364
+ loading, error, search, detail, updates, installed,
365
+ ]);
366
+ }
367
+ export function useFiles() {
368
+ const wsManager = useConsoleClient().transport;
369
+ const [connected, setConnected] = useState(wsManager.isConnected());
370
+ const [tree, setTree] = useState([]);
371
+ const [loading, setLoading] = useState(false);
372
+ const [error, setError] = useState(null);
373
+ useEffect(() => wsManager.onConnectionChange(setConnected), [wsManager]);
374
+ const loadTree = useCallback(async () => {
375
+ setLoading(true);
376
+ setError(null);
377
+ try {
378
+ const result = await wsManager.getFileTree();
379
+ setTree(result.tree);
380
+ return result.tree;
381
+ }
382
+ catch (e) {
383
+ setError(e instanceof Error ? e.message : "Unknown error");
384
+ throw e;
385
+ }
386
+ finally {
387
+ setLoading(false);
388
+ }
389
+ }, [wsManager]);
390
+ const readFile = useCallback(async (filePath) => (await wsManager.readFile(filePath)).content, [wsManager]);
391
+ const saveFile = useCallback(async (filePath, content) => wsManager.saveFile(filePath, content), [wsManager]);
392
+ useAutoLoadOnce(connected, "file-tree", tree.length > 0 || loading, () => {
393
+ loadTree().catch(() => { });
394
+ });
395
+ return useMemo(() => ({ tree, loading, error, loadTree, readFile, saveFile }), [tree, loading, error, loadTree, readFile, saveFile]);
396
+ }
397
+ export function useEnvFiles() {
398
+ const wsManager = useConsoleClient().transport;
399
+ const [connected, setConnected] = useState(wsManager.isConnected());
400
+ const [files, setFiles] = useState([]);
401
+ const [loading, setLoading] = useState(false);
402
+ const [error, setError] = useState(null);
403
+ useEffect(() => wsManager.onConnectionChange(setConnected), [wsManager]);
404
+ const listFiles = useCallback(async () => {
405
+ setLoading(true);
406
+ setError(null);
407
+ try {
408
+ const result = await wsManager.getEnvList();
409
+ setFiles(result.files);
410
+ return result.files;
411
+ }
412
+ catch (e) {
413
+ setError(e instanceof Error ? e.message : "Unknown error");
414
+ throw e;
415
+ }
416
+ finally {
417
+ setLoading(false);
418
+ }
419
+ }, [wsManager]);
420
+ const getFile = useCallback(async (filename) => {
421
+ const result = await wsManager.getEnvFile(filename);
422
+ return result.content;
423
+ }, [wsManager]);
424
+ const saveFile = useCallback(async (filename, content) => wsManager.saveEnvFile(filename, content), [wsManager]);
425
+ useAutoLoadOnce(connected, "env-files", files.length > 0 || loading, () => {
426
+ listFiles().catch(() => { });
427
+ });
428
+ return useMemo(() => ({ files, loading, error, listFiles, getFile, saveFile }), [files, loading, error, listFiles, getFile, saveFile]);
429
+ }
430
+ export function useDatabase() {
431
+ const wsManager = useConsoleClient().transport;
432
+ const [connected, setConnected] = useState(wsManager.isConnected());
433
+ const [info, setInfo] = useState(null);
434
+ const [tables, setTables] = useState([]);
435
+ const [loading, setLoading] = useState(false);
436
+ const [error, setError] = useState(null);
437
+ useEffect(() => wsManager.onConnectionChange(setConnected), [wsManager]);
438
+ const loadInfo = useCallback(async () => {
439
+ setLoading(true);
440
+ try {
441
+ const result = await wsManager.getDbInfo();
442
+ setInfo(result);
443
+ return result;
444
+ }
445
+ catch (e) {
446
+ setError(e instanceof Error ? e.message : "Unknown error");
447
+ throw e;
448
+ }
449
+ finally {
450
+ setLoading(false);
451
+ }
452
+ }, [wsManager]);
453
+ const loadTables = useCallback(async () => {
454
+ setLoading(true);
455
+ try {
456
+ const result = await wsManager.getDbTables();
457
+ setTables(result.tables);
458
+ return result.tables;
459
+ }
460
+ catch (e) {
461
+ setError(e instanceof Error ? e.message : "Unknown error");
462
+ throw e;
463
+ }
464
+ finally {
465
+ setLoading(false);
466
+ }
467
+ }, [wsManager]);
468
+ const select = useCallback(async (table, page, pageSize, where) => wsManager.dbSelect(table, page, pageSize, where), [wsManager]);
469
+ const insert = useCallback(async (table, row) => wsManager.dbInsert(table, row), [wsManager]);
470
+ const update = useCallback(async (table, row, where) => wsManager.dbUpdate(table, row, where), [wsManager]);
471
+ const remove = useCallback(async (table, where) => wsManager.dbDelete(table, where), [wsManager]);
472
+ const dropTable = useCallback(async (table) => { const r = await wsManager.dbDropTable(table); await loadTables(); return r; }, [wsManager, loadTables]);
473
+ const kvGet = useCallback(async (table, key) => wsManager.kvGet(table, key), [wsManager]);
474
+ const kvSet = useCallback(async (table, key, value, ttl) => wsManager.kvSet(table, key, value, ttl), [wsManager]);
475
+ const kvDelete = useCallback(async (table, key) => wsManager.kvDelete(table, key), [wsManager]);
476
+ const kvEntries = useCallback(async (table) => wsManager.kvGetEntries(table), [wsManager]);
477
+ useAutoLoadOnce(connected, "db-info", info != null || loading, () => {
478
+ loadInfo().catch(() => { });
479
+ loadTables().catch(() => { });
480
+ });
481
+ return useMemo(() => ({ info, tables, loading, error, loadInfo, loadTables, dropTable, select, insert, update, remove, kvGet, kvSet, kvDelete, kvEntries }), [info, tables, loading, error, loadInfo, loadTables, dropTable, select, insert, update, remove, kvGet, kvSet, kvDelete, kvEntries]);
482
+ }
483
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../client/transport/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from "./types.js";
2
+ export { ConsoleTransport, type ConsoleEventListener, type ConsoleEventRecoveryGap, type ConsoleEventRecoveryGapListener, } from "./console-transport.js";
3
+ export { useConsoleTransport, useConfig, useConfigSource, usePluginInstall, usePluginConfigValidation, usePluginDiagnostics, usePluginLifecycle, usePluginUninstall, usePluginUpdate, useEndpointTest, usePluginMarketplace, useFiles, useEnvFiles, useDatabase, } from "./hooks.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../client/transport/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,+BAA+B,GACrC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,QAAQ,EACR,WAAW,EACX,WAAW,GACZ,MAAM,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./types.js";
2
+ export { ConsoleTransport, } from "./console-transport.js";
3
+ export { useConsoleTransport, useConfig, useConfigSource, usePluginInstall, usePluginConfigValidation, usePluginDiagnostics, usePluginLifecycle, usePluginUninstall, usePluginUpdate, useEndpointTest, usePluginMarketplace, useFiles, useEnvFiles, useDatabase, } from "./hooks.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../client/transport/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,gBAAgB,GAIjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,QAAQ,EACR,WAAW,EACX,WAAW,GACZ,MAAM,YAAY,CAAC"}
@@ -1,26 +1,30 @@
1
+ import type { ConsoleEventDelivery } from '@zhin.js/console-protocol';
1
2
  export interface BaseMessage {
2
3
  type: string;
3
4
  timestamp?: number;
5
+ runtimeId?: string;
6
+ eventId?: number;
7
+ delivery?: ConsoleEventDelivery;
4
8
  requestId?: number;
5
9
  error?: string;
6
10
  }
7
- export type WebSocketMessage = BaseMessage & {
11
+ export type ConsoleTransportMessage = BaseMessage & {
8
12
  data?: unknown;
9
13
  [key: string]: unknown;
10
14
  };
11
- export interface WebSocketConfig {
12
- url?: string;
15
+ export interface ConsoleTransportConfig {
16
+ fetch?: typeof globalThis.fetch;
13
17
  reconnectInterval?: number;
14
18
  maxReconnectAttempts?: number;
15
19
  requestTimeout?: number;
16
20
  }
17
- export interface WebSocketCallbacks {
21
+ export interface ConsoleTransportCallbacks {
18
22
  onConnect?: () => void;
19
23
  onDisconnect?: () => void;
20
- onError?: (error: Event) => void;
21
- onMessage?: (message: WebSocketMessage) => void;
24
+ onError?: (error: Error) => void;
25
+ onMessage?: (message: ConsoleTransportMessage) => void;
22
26
  }
23
- export interface UseWebSocketOptions {
27
+ export interface UseConsoleTransportOptions {
24
28
  autoConnect?: boolean;
25
29
  }
26
30
  export declare enum ConnectionState {
@@ -30,18 +34,15 @@ export declare enum ConnectionState {
30
34
  RECONNECTING = "reconnecting",
31
35
  ERROR = "error"
32
36
  }
33
- export declare class WebSocketError extends Error {
37
+ export declare class ConsoleTransportError extends Error {
34
38
  code: string;
35
39
  originalError?: Error | undefined;
36
40
  constructor(message: string, code: string, originalError?: Error | undefined);
37
41
  }
38
- export declare class RequestTimeoutError extends WebSocketError {
39
- constructor(requestId: number);
40
- }
41
- export declare class ConnectionError extends WebSocketError {
42
+ export declare class ConnectionError extends ConsoleTransportError {
42
43
  constructor(message: string, originalError?: Error);
43
44
  }
44
- export declare class MessageError extends WebSocketError {
45
+ export declare class MessageError extends ConsoleTransportError {
45
46
  constructor(message: string, originalError?: Error);
46
47
  }
47
48
  export interface FileTreeNode {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../client/transport/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAE/F,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,0BAA0B;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,oBAAY,eAAe;IACzB,YAAY,iBAAiB;IAC7B,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,YAAY,iBAAiB;IAC7B,KAAK,UAAU;CAChB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAGrC,IAAI,EAAE,MAAM;IACZ,aAAa,CAAC,EAAE,KAAK;gBAF5B,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,KAAK,YAAA;CAK/B;AAED,qBAAa,eAAgB,SAAQ,qBAAqB;gBAC5C,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK;CAGnD;AAED,qBAAa,YAAa,SAAQ,qBAAqB;gBACzC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK;CAGnD;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE/D,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACtG;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;CAChB"}
@@ -6,27 +6,22 @@ export var ConnectionState;
6
6
  ConnectionState["RECONNECTING"] = "reconnecting";
7
7
  ConnectionState["ERROR"] = "error";
8
8
  })(ConnectionState || (ConnectionState = {}));
9
- export class WebSocketError extends Error {
9
+ export class ConsoleTransportError extends Error {
10
10
  code;
11
11
  originalError;
12
12
  constructor(message, code, originalError) {
13
13
  super(message);
14
14
  this.code = code;
15
15
  this.originalError = originalError;
16
- this.name = "WebSocketError";
16
+ this.name = "ConsoleTransportError";
17
17
  }
18
18
  }
19
- export class RequestTimeoutError extends WebSocketError {
20
- constructor(requestId) {
21
- super(`Request ${requestId} timed out`, "REQUEST_TIMEOUT");
22
- }
23
- }
24
- export class ConnectionError extends WebSocketError {
19
+ export class ConnectionError extends ConsoleTransportError {
25
20
  constructor(message, originalError) {
26
21
  super(message, "CONNECTION_ERROR", originalError);
27
22
  }
28
23
  }
29
- export class MessageError extends WebSocketError {
24
+ export class MessageError extends ConsoleTransportError {
30
25
  constructor(message, originalError) {
31
26
  super(message, "MESSAGE_ERROR", originalError);
32
27
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../client/transport/types.ts"],"names":[],"mappings":"AAgCA,MAAM,CAAN,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,gDAA6B,CAAA;IAC7B,4CAAyB,CAAA;IACzB,0CAAuB,CAAA;IACvB,gDAA6B,CAAA;IAC7B,kCAAe,CAAA;AACjB,CAAC,EANW,eAAe,KAAf,eAAe,QAM1B;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAGrC;IACA;IAHT,YACE,OAAe,EACR,IAAY,EACZ,aAAqB;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAQ;QACZ,kBAAa,GAAb,aAAa,CAAQ;QAG5B,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,qBAAqB;IACxD,YAAY,OAAe,EAAE,aAAqB;QAChD,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,qBAAqB;IACrD,YAAY,OAAe,EAAE,aAAqB;QAChD,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;IACjD,CAAC;CACF"}
package/dist/types.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  export interface MessageSegment {
2
- /** record:如 ICQQ 语音等,展示时按音频处理 */
3
- type: 'text' | 'image' | 'at' | 'face' | 'video' | 'audio' | 'record' | 'file' | 'reply';
4
- data: Record<string, any>;
2
+ /** record:如 ICQQ 语音等,展示时按音频处理;thinking/tool_call 仅 agent 面板展示 */
3
+ type: 'text' | 'mention' | 'at' | 'image' | 'face' | 'video' | 'audio' | 'record' | 'file' | 'reply' | 'forward' | 'keyboard' | 'action' | 'thinking' | 'tool_call' | string;
4
+ data: Record<string, unknown>;
5
+ platform?: Record<string, unknown>;
5
6
  }
6
- export type MessageElement = MessageSegment;
7
7
  export type SendContent = MessageSegment | MessageSegment[] | string;
8
8
  //# sourceMappingURL=types.d.ts.map