@zhin.js/client 2.1.9 → 2.1.11

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 (70) hide show
  1. package/README.md +6 -0
  2. package/client/console-events.ts +37 -0
  3. package/client/index.ts +44 -2
  4. package/client/mediaSrc.test.ts +15 -0
  5. package/client/mediaSrc.ts +59 -12
  6. package/client/message-content/MarkdownContent.tsx +128 -0
  7. package/client/message-content/markdown.test.ts +48 -0
  8. package/client/message-content/markdown.ts +247 -0
  9. package/client/persistence/idb-store.test.ts +11 -0
  10. package/client/persistence/idb-store.ts +20 -4
  11. package/client/websocket/index.ts +6 -1
  12. package/client/websocket/manager.test.ts +145 -12
  13. package/client/websocket/manager.ts +189 -17
  14. package/client/websocket/types.ts +5 -0
  15. package/client/workroom/WorkroomRunsPage.tsx +248 -0
  16. package/client/{orchestration/registerOrchestrationConsole.test.ts → workroom/registerWorkroomConsole.test.ts} +8 -8
  17. package/client/workroom/registerWorkroomConsole.ts +17 -0
  18. package/dist/console-events.d.ts +7 -0
  19. package/dist/console-events.d.ts.map +1 -0
  20. package/dist/console-events.js +26 -0
  21. package/dist/console-events.js.map +1 -0
  22. package/dist/index.d.ts +6 -3
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +7 -3
  25. package/dist/index.js.map +1 -1
  26. package/dist/mediaSrc.d.ts.map +1 -1
  27. package/dist/mediaSrc.js +66 -12
  28. package/dist/mediaSrc.js.map +1 -1
  29. package/dist/message-content/MarkdownContent.d.ts +11 -0
  30. package/dist/message-content/MarkdownContent.d.ts.map +1 -0
  31. package/dist/message-content/MarkdownContent.js +68 -0
  32. package/dist/message-content/MarkdownContent.js.map +1 -0
  33. package/dist/message-content/markdown.d.ts +47 -0
  34. package/dist/message-content/markdown.d.ts.map +1 -0
  35. package/dist/message-content/markdown.js +219 -0
  36. package/dist/message-content/markdown.js.map +1 -0
  37. package/dist/persistence/idb-store.d.ts +3 -0
  38. package/dist/persistence/idb-store.d.ts.map +1 -1
  39. package/dist/persistence/idb-store.js +13 -3
  40. package/dist/persistence/idb-store.js.map +1 -1
  41. package/dist/websocket/index.d.ts +1 -1
  42. package/dist/websocket/index.d.ts.map +1 -1
  43. package/dist/websocket/index.js +1 -1
  44. package/dist/websocket/index.js.map +1 -1
  45. package/dist/websocket/manager.d.ts +19 -0
  46. package/dist/websocket/manager.d.ts.map +1 -1
  47. package/dist/websocket/manager.js +176 -18
  48. package/dist/websocket/manager.js.map +1 -1
  49. package/dist/websocket/types.d.ts +4 -0
  50. package/dist/websocket/types.d.ts.map +1 -1
  51. package/dist/websocket/types.js.map +1 -1
  52. package/dist/workroom/WorkroomRunsPage.d.ts +2 -0
  53. package/dist/workroom/WorkroomRunsPage.d.ts.map +1 -0
  54. package/dist/workroom/WorkroomRunsPage.js +64 -0
  55. package/dist/workroom/WorkroomRunsPage.js.map +1 -0
  56. package/dist/workroom/registerWorkroomConsole.d.ts +4 -0
  57. package/dist/workroom/registerWorkroomConsole.d.ts.map +1 -0
  58. package/dist/workroom/registerWorkroomConsole.js +16 -0
  59. package/dist/workroom/registerWorkroomConsole.js.map +1 -0
  60. package/package.json +3 -3
  61. package/client/orchestration/OrchestrationRunsPage.tsx +0 -217
  62. package/client/orchestration/registerOrchestrationConsole.ts +0 -17
  63. package/dist/orchestration/OrchestrationRunsPage.d.ts +0 -2
  64. package/dist/orchestration/OrchestrationRunsPage.d.ts.map +0 -1
  65. package/dist/orchestration/OrchestrationRunsPage.js +0 -65
  66. package/dist/orchestration/OrchestrationRunsPage.js.map +0 -1
  67. package/dist/orchestration/registerOrchestrationConsole.d.ts +0 -4
  68. package/dist/orchestration/registerOrchestrationConsole.d.ts.map +0 -1
  69. package/dist/orchestration/registerOrchestrationConsole.js +0 -16
  70. package/dist/orchestration/registerOrchestrationConsole.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/client",
3
- "version": "2.1.9",
3
+ "version": "2.1.11",
4
4
  "description": "Zhin Remote Console client SDK (entries loader, app registry, REST/SSE) — UI lives in zhin-console repo",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -14,8 +14,8 @@
14
14
  "dependencies": {
15
15
  "clsx": "^2.1.1",
16
16
  "tailwind-merge": "^3.6.0",
17
- "@zhin.js/console-protocol": "1.1.2",
18
- "@zhin.js/contract": "1.0.14"
17
+ "@zhin.js/console-protocol": "1.1.4",
18
+ "@zhin.js/contract": "1.0.16"
19
19
  },
20
20
  "peerDependencies": {
21
21
  "react": ">=18"
@@ -1,217 +0,0 @@
1
- import { useCallback, useState } from 'react';
2
- import { apiFetch } from '../console-utils/remoteApi.js';
3
-
4
- type OrchestrationTaskRow = {
5
- id: string;
6
- name: string;
7
- status: string;
8
- executor_kind?: string;
9
- assigned_to?: string;
10
- result_summary?: string;
11
- error?: string;
12
- };
13
-
14
- type OrchestrationEventRow = {
15
- seq: number;
16
- type: string;
17
- task_id?: string;
18
- payload_json?: string;
19
- created_at?: number;
20
- };
21
-
22
- type RunListItem = {
23
- run: { id: string; session_key: string; status: string; title: string };
24
- tasks: OrchestrationTaskRow[];
25
- };
26
-
27
- type RunDetail = RunListItem & {
28
- events?: OrchestrationEventRow[];
29
- };
30
-
31
- function parsePayload(raw?: string): string {
32
- if (!raw?.trim()) return '';
33
- try {
34
- const parsed = JSON.parse(raw) as Record<string, unknown>;
35
- return JSON.stringify(parsed, null, 2);
36
- } catch {
37
- return raw;
38
- }
39
- }
40
-
41
- export default function OrchestrationRunsPage() {
42
- const [sessionKey, setSessionKey] = useState('');
43
- const [runs, setRuns] = useState<RunListItem[]>([]);
44
- const [selected, setSelected] = useState<RunDetail | null>(null);
45
- const [loading, setLoading] = useState(false);
46
- const [error, setError] = useState('');
47
-
48
- const loadRuns = useCallback(async () => {
49
- if (!sessionKey.trim()) {
50
- setError('请输入 sessionKey');
51
- return;
52
- }
53
- setLoading(true);
54
- setError('');
55
- setSelected(null);
56
- try {
57
- const res = await apiFetch(
58
- `/api/agent/orchestration/runs?sessionKey=${encodeURIComponent(sessionKey.trim())}`,
59
- );
60
- const body = await res.json() as { success?: boolean; error?: string; data?: { runs?: RunListItem[] } };
61
- if (!res.ok || !body.success) {
62
- throw new Error(body.error ?? `HTTP ${res.status}`);
63
- }
64
- setRuns(body.data?.runs ?? []);
65
- } catch (err) {
66
- setError(err instanceof Error ? err.message : String(err));
67
- setRuns([]);
68
- } finally {
69
- setLoading(false);
70
- }
71
- }, [sessionKey]);
72
-
73
- const loadRunDetail = useCallback(async (runId: string) => {
74
- setLoading(true);
75
- setError('');
76
- try {
77
- const res = await apiFetch(`/api/agent/orchestration/runs/${encodeURIComponent(runId)}`);
78
- const body = await res.json() as { success?: boolean; error?: string; data?: RunDetail };
79
- if (!res.ok || !body.success || !body.data) {
80
- throw new Error(body.error ?? `HTTP ${res.status}`);
81
- }
82
- setSelected(body.data);
83
- } catch (err) {
84
- setError(err instanceof Error ? err.message : String(err));
85
- } finally {
86
- setLoading(false);
87
- }
88
- }, []);
89
-
90
- return (
91
- <div className="p-4 space-y-4 max-w-5xl">
92
- <h1 className="text-lg font-semibold">编排 Run / Task / Event</h1>
93
- <p className="text-sm text-muted-foreground">
94
- 从 OrchestrationKernel 投影(`GET /api/agent/orchestration/*`)。sessionKey 格式:
95
- <code className="mx-1">platform:endpointKey:kind:sceneId</code>
96
- </p>
97
-
98
- <div className="flex flex-wrap gap-2 items-end">
99
- <label className="flex flex-col gap-1 text-sm flex-1 min-w-[240px]">
100
- sessionKey
101
- <input
102
- className="border rounded px-2 py-1 text-sm bg-background"
103
- value={sessionKey}
104
- onChange={(e) => setSessionKey(e.target.value)}
105
- placeholder="sandbox:solo-bot:private:user1"
106
- />
107
- </label>
108
- <button
109
- type="button"
110
- className="border rounded px-3 py-1 text-sm hover:bg-muted"
111
- disabled={loading}
112
- onClick={() => void loadRuns()}
113
- >
114
- 查询 Runs
115
- </button>
116
- </div>
117
-
118
- {error ? <p className="text-sm text-red-600">{error}</p> : null}
119
-
120
- <div className="grid gap-4 md:grid-cols-2">
121
- <section className="border rounded p-3 space-y-2">
122
- <h2 className="text-sm font-medium">Runs ({runs.length})</h2>
123
- {runs.length === 0 ? (
124
- <p className="text-sm text-muted-foreground">无数据</p>
125
- ) : (
126
- <ul className="space-y-2 text-sm">
127
- {runs.map((item) => (
128
- <li key={item.run.id} className="border rounded p-2">
129
- <button
130
- type="button"
131
- className="text-left w-full hover:underline"
132
- onClick={() => void loadRunDetail(item.run.id)}
133
- >
134
- <div className="font-mono text-xs">{item.run.id}</div>
135
- <div>{item.run.title || '(无标题)'}</div>
136
- <div className="text-muted-foreground">
137
- {item.run.status}
138
- {' · '}
139
- {item.tasks.length}
140
- {' tasks'}
141
- </div>
142
- </button>
143
- </li>
144
- ))}
145
- </ul>
146
- )}
147
- </section>
148
-
149
- <section className="border rounded p-3 space-y-3">
150
- <h2 className="text-sm font-medium">Run 详情</h2>
151
- {!selected ? (
152
- <p className="text-sm text-muted-foreground">选择左侧 Run</p>
153
- ) : (
154
- <>
155
- <div className="text-sm space-y-1">
156
- <div>
157
- <span className="text-muted-foreground">ID </span>
158
- <code>{selected.run.id}</code>
159
- </div>
160
- <div>
161
- <span className="text-muted-foreground">状态 </span>
162
- {selected.run.status}
163
- </div>
164
- </div>
165
-
166
- <div>
167
- <h3 className="text-xs font-medium uppercase text-muted-foreground mb-1">Tasks</h3>
168
- <ul className="space-y-2 text-sm">
169
- {selected.tasks.map((task) => (
170
- <li key={task.id} className="border rounded p-2 font-mono text-xs">
171
- <div>
172
- {task.id}
173
- {' · '}
174
- {task.status}
175
- {' · '}
176
- {task.executor_kind ?? 'local'}
177
- </div>
178
- <div>{task.name}</div>
179
- {task.result_summary ? (
180
- <div className="mt-1 whitespace-pre-wrap break-words">{task.result_summary}</div>
181
- ) : null}
182
- {task.error ? (
183
- <div className="mt-1 text-red-600 whitespace-pre-wrap">{task.error}</div>
184
- ) : null}
185
- </li>
186
- ))}
187
- </ul>
188
- </div>
189
-
190
- <div>
191
- <h3 className="text-xs font-medium uppercase text-muted-foreground mb-1">Events</h3>
192
- <ul className="space-y-2 text-xs max-h-64 overflow-auto">
193
- {(selected.events ?? []).map((ev) => (
194
- <li key={ev.seq} className="border rounded p-2">
195
- <div>
196
- #
197
- {ev.seq}
198
- {' '}
199
- {ev.type}
200
- {ev.task_id ? ` · task ${ev.task_id}` : ''}
201
- </div>
202
- {ev.payload_json ? (
203
- <pre className="mt-1 whitespace-pre-wrap break-words text-[10px] opacity-80">
204
- {parsePayload(ev.payload_json)}
205
- </pre>
206
- ) : null}
207
- </li>
208
- ))}
209
- </ul>
210
- </div>
211
- </>
212
- )}
213
- </section>
214
- </div>
215
- </div>
216
- );
217
- }
@@ -1,17 +0,0 @@
1
- import type { PluginRegisterHostApi } from '@zhin.js/contract';
2
- import OrchestrationRunsPage from './OrchestrationRunsPage.js';
3
-
4
- /** Remote Console v1.1 — OrchestrationKernel Run/Task/Event 投影页 */
5
- export function registerOrchestrationConsole(api: PluginRegisterHostApi): void {
6
- api.addRoute({
7
- path: '/console/orchestration',
8
- name: '编排',
9
- element: api.React.createElement(OrchestrationRunsPage),
10
- meta: { order: 40, group: 'Agent' },
11
- });
12
- api.addTool({
13
- id: 'orchestration',
14
- name: '编排',
15
- path: '/console/orchestration',
16
- });
17
- }
@@ -1,2 +0,0 @@
1
- export default function OrchestrationRunsPage(): import("react").JSX.Element;
2
- //# sourceMappingURL=OrchestrationRunsPage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OrchestrationRunsPage.d.ts","sourceRoot":"","sources":["../../client/orchestration/OrchestrationRunsPage.tsx"],"names":[],"mappings":"AAwCA,MAAM,CAAC,OAAO,UAAU,qBAAqB,gCAgL5C"}
@@ -1,65 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useCallback, useState } from 'react';
3
- import { apiFetch } from '../console-utils/remoteApi.js';
4
- function parsePayload(raw) {
5
- if (!raw?.trim())
6
- return '';
7
- try {
8
- const parsed = JSON.parse(raw);
9
- return JSON.stringify(parsed, null, 2);
10
- }
11
- catch {
12
- return raw;
13
- }
14
- }
15
- export default function OrchestrationRunsPage() {
16
- const [sessionKey, setSessionKey] = useState('');
17
- const [runs, setRuns] = useState([]);
18
- const [selected, setSelected] = useState(null);
19
- const [loading, setLoading] = useState(false);
20
- const [error, setError] = useState('');
21
- const loadRuns = useCallback(async () => {
22
- if (!sessionKey.trim()) {
23
- setError('请输入 sessionKey');
24
- return;
25
- }
26
- setLoading(true);
27
- setError('');
28
- setSelected(null);
29
- try {
30
- const res = await apiFetch(`/api/agent/orchestration/runs?sessionKey=${encodeURIComponent(sessionKey.trim())}`);
31
- const body = await res.json();
32
- if (!res.ok || !body.success) {
33
- throw new Error(body.error ?? `HTTP ${res.status}`);
34
- }
35
- setRuns(body.data?.runs ?? []);
36
- }
37
- catch (err) {
38
- setError(err instanceof Error ? err.message : String(err));
39
- setRuns([]);
40
- }
41
- finally {
42
- setLoading(false);
43
- }
44
- }, [sessionKey]);
45
- const loadRunDetail = useCallback(async (runId) => {
46
- setLoading(true);
47
- setError('');
48
- try {
49
- const res = await apiFetch(`/api/agent/orchestration/runs/${encodeURIComponent(runId)}`);
50
- const body = await res.json();
51
- if (!res.ok || !body.success || !body.data) {
52
- throw new Error(body.error ?? `HTTP ${res.status}`);
53
- }
54
- setSelected(body.data);
55
- }
56
- catch (err) {
57
- setError(err instanceof Error ? err.message : String(err));
58
- }
59
- finally {
60
- setLoading(false);
61
- }
62
- }, []);
63
- return (_jsxs("div", { className: "p-4 space-y-4 max-w-5xl", children: [_jsx("h1", { className: "text-lg font-semibold", children: "\u7F16\u6392 Run / Task / Event" }), _jsxs("p", { className: "text-sm text-muted-foreground", children: ["\u4ECE OrchestrationKernel \u6295\u5F71\uFF08`GET /api/agent/orchestration/*`\uFF09\u3002sessionKey \u683C\u5F0F\uFF1A", _jsx("code", { className: "mx-1", children: "platform:endpointKey:kind:sceneId" })] }), _jsxs("div", { className: "flex flex-wrap gap-2 items-end", children: [_jsxs("label", { className: "flex flex-col gap-1 text-sm flex-1 min-w-[240px]", children: ["sessionKey", _jsx("input", { className: "border rounded px-2 py-1 text-sm bg-background", value: sessionKey, onChange: (e) => setSessionKey(e.target.value), placeholder: "sandbox:solo-bot:private:user1" })] }), _jsx("button", { type: "button", className: "border rounded px-3 py-1 text-sm hover:bg-muted", disabled: loading, onClick: () => void loadRuns(), children: "\u67E5\u8BE2 Runs" })] }), error ? _jsx("p", { className: "text-sm text-red-600", children: error }) : null, _jsxs("div", { className: "grid gap-4 md:grid-cols-2", children: [_jsxs("section", { className: "border rounded p-3 space-y-2", children: [_jsxs("h2", { className: "text-sm font-medium", children: ["Runs (", runs.length, ")"] }), runs.length === 0 ? (_jsx("p", { className: "text-sm text-muted-foreground", children: "\u65E0\u6570\u636E" })) : (_jsx("ul", { className: "space-y-2 text-sm", children: runs.map((item) => (_jsx("li", { className: "border rounded p-2", children: _jsxs("button", { type: "button", className: "text-left w-full hover:underline", onClick: () => void loadRunDetail(item.run.id), children: [_jsx("div", { className: "font-mono text-xs", children: item.run.id }), _jsx("div", { children: item.run.title || '(无标题)' }), _jsxs("div", { className: "text-muted-foreground", children: [item.run.status, ' · ', item.tasks.length, ' tasks'] })] }) }, item.run.id))) }))] }), _jsxs("section", { className: "border rounded p-3 space-y-3", children: [_jsx("h2", { className: "text-sm font-medium", children: "Run \u8BE6\u60C5" }), !selected ? (_jsx("p", { className: "text-sm text-muted-foreground", children: "\u9009\u62E9\u5DE6\u4FA7 Run" })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "text-sm space-y-1", children: [_jsxs("div", { children: [_jsx("span", { className: "text-muted-foreground", children: "ID " }), _jsx("code", { children: selected.run.id })] }), _jsxs("div", { children: [_jsx("span", { className: "text-muted-foreground", children: "\u72B6\u6001 " }), selected.run.status] })] }), _jsxs("div", { children: [_jsx("h3", { className: "text-xs font-medium uppercase text-muted-foreground mb-1", children: "Tasks" }), _jsx("ul", { className: "space-y-2 text-sm", children: selected.tasks.map((task) => (_jsxs("li", { className: "border rounded p-2 font-mono text-xs", children: [_jsxs("div", { children: [task.id, ' · ', task.status, ' · ', task.executor_kind ?? 'local'] }), _jsx("div", { children: task.name }), task.result_summary ? (_jsx("div", { className: "mt-1 whitespace-pre-wrap break-words", children: task.result_summary })) : null, task.error ? (_jsx("div", { className: "mt-1 text-red-600 whitespace-pre-wrap", children: task.error })) : null] }, task.id))) })] }), _jsxs("div", { children: [_jsx("h3", { className: "text-xs font-medium uppercase text-muted-foreground mb-1", children: "Events" }), _jsx("ul", { className: "space-y-2 text-xs max-h-64 overflow-auto", children: (selected.events ?? []).map((ev) => (_jsxs("li", { className: "border rounded p-2", children: [_jsxs("div", { children: ["#", ev.seq, ' ', ev.type, ev.task_id ? ` · task ${ev.task_id}` : ''] }), ev.payload_json ? (_jsx("pre", { className: "mt-1 whitespace-pre-wrap break-words text-[10px] opacity-80", children: parsePayload(ev.payload_json) })) : null] }, ev.seq))) })] })] }))] })] })] }));
64
- }
65
- //# sourceMappingURL=OrchestrationRunsPage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OrchestrationRunsPage.js","sourceRoot":"","sources":["../../client/orchestration/OrchestrationRunsPage.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { PluginRegisterHostApi } from '@zhin.js/contract';
2
- /** Remote Console v1.1 — OrchestrationKernel Run/Task/Event 投影页 */
3
- export declare function registerOrchestrationConsole(api: PluginRegisterHostApi): void;
4
- //# sourceMappingURL=registerOrchestrationConsole.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registerOrchestrationConsole.d.ts","sourceRoot":"","sources":["../../client/orchestration/registerOrchestrationConsole.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAG/D,mEAAmE;AACnE,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI,CAY7E"}
@@ -1,16 +0,0 @@
1
- import OrchestrationRunsPage from './OrchestrationRunsPage.js';
2
- /** Remote Console v1.1 — OrchestrationKernel Run/Task/Event 投影页 */
3
- export function registerOrchestrationConsole(api) {
4
- api.addRoute({
5
- path: '/console/orchestration',
6
- name: '编排',
7
- element: api.React.createElement(OrchestrationRunsPage),
8
- meta: { order: 40, group: 'Agent' },
9
- });
10
- api.addTool({
11
- id: 'orchestration',
12
- name: '编排',
13
- path: '/console/orchestration',
14
- });
15
- }
16
- //# sourceMappingURL=registerOrchestrationConsole.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registerOrchestrationConsole.js","sourceRoot":"","sources":["../../client/orchestration/registerOrchestrationConsole.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,4BAA4B,CAAC;AAE/D,mEAAmE;AACnE,MAAM,UAAU,4BAA4B,CAAC,GAA0B;IACrE,GAAG,CAAC,QAAQ,CAAC;QACX,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC;QACvD,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;KACpC,CAAC,CAAC;IACH,GAAG,CAAC,OAAO,CAAC;QACV,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,wBAAwB;KAC/B,CAAC,CAAC;AACL,CAAC"}