@lemoncat7/dsh-partner 2.2.0 → 2.4.0

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 (231) hide show
  1. package/README.md +10 -0
  2. package/docs/direct-channels.md +17 -0
  3. package/docs/mcp.md +54 -0
  4. package/docs/memory-quality.md +26 -0
  5. package/docs/releases/2.3.0.md +29 -0
  6. package/docs/releases/2.4.0.md +11 -0
  7. package/lib/agent-runtime.d.ts.map +1 -1
  8. package/lib/agent-runtime.js +16 -9
  9. package/lib/agent-runtime.js.map +1 -1
  10. package/lib/api/features/mcp-api.d.ts +4 -0
  11. package/lib/api/features/mcp-api.d.ts.map +1 -0
  12. package/lib/api/features/mcp-api.js +37 -0
  13. package/lib/api/features/mcp-api.js.map +1 -0
  14. package/lib/api/features/memory-layers-api.d.ts.map +1 -1
  15. package/lib/api/features/memory-layers-api.js +10 -1
  16. package/lib/api/features/memory-layers-api.js.map +1 -1
  17. package/lib/api.d.ts +2 -0
  18. package/lib/api.d.ts.map +1 -1
  19. package/lib/api.js +11 -2
  20. package/lib/api.js.map +1 -1
  21. package/lib/capabilities.d.ts +1 -1
  22. package/lib/capabilities.d.ts.map +1 -1
  23. package/lib/capabilities.js +2 -2
  24. package/lib/capabilities.js.map +1 -1
  25. package/lib/channels/direct/discovery.d.ts.map +1 -1
  26. package/lib/channels/direct/discovery.js +9 -4
  27. package/lib/channels/direct/discovery.js.map +1 -1
  28. package/lib/channels/direct/dispatcher.d.ts +16 -0
  29. package/lib/channels/direct/dispatcher.d.ts.map +1 -0
  30. package/lib/channels/direct/dispatcher.js +46 -0
  31. package/lib/channels/direct/dispatcher.js.map +1 -0
  32. package/lib/channels/direct/matrix-timeline.d.ts +4 -0
  33. package/lib/channels/direct/matrix-timeline.d.ts.map +1 -0
  34. package/lib/channels/direct/matrix-timeline.js +49 -0
  35. package/lib/channels/direct/matrix-timeline.js.map +1 -0
  36. package/lib/channels/direct/retry-policy.d.ts +3 -0
  37. package/lib/channels/direct/retry-policy.d.ts.map +1 -0
  38. package/lib/channels/direct/retry-policy.js +9 -0
  39. package/lib/channels/direct/retry-policy.js.map +1 -0
  40. package/lib/channels/direct/transport.d.ts.map +1 -1
  41. package/lib/channels/direct/transport.js +9 -3
  42. package/lib/channels/direct/transport.js.map +1 -1
  43. package/lib/channels/manager.d.ts +2 -1
  44. package/lib/channels/manager.d.ts.map +1 -1
  45. package/lib/channels/manager.js +104 -54
  46. package/lib/channels/manager.js.map +1 -1
  47. package/lib/client-api.d.ts +1 -0
  48. package/lib/client-api.d.ts.map +1 -1
  49. package/lib/client.d.ts.map +1 -1
  50. package/lib/client.js +2508 -1976
  51. package/lib/client.js.map +4 -4
  52. package/lib/collaboration/composition.d.ts +3 -0
  53. package/lib/collaboration/composition.d.ts.map +1 -1
  54. package/lib/collaboration/composition.js +5 -1
  55. package/lib/collaboration/composition.js.map +1 -1
  56. package/lib/collaboration/domain.d.ts +3 -0
  57. package/lib/collaboration/domain.d.ts.map +1 -1
  58. package/lib/collaboration/domain.js.map +1 -1
  59. package/lib/collaboration/review-dispatch.d.ts +5 -0
  60. package/lib/collaboration/review-dispatch.d.ts.map +1 -0
  61. package/lib/collaboration/review-dispatch.js +23 -0
  62. package/lib/collaboration/review-dispatch.js.map +1 -0
  63. package/lib/collaboration/service.d.ts.map +1 -1
  64. package/lib/collaboration/service.js +12 -3
  65. package/lib/collaboration/service.js.map +1 -1
  66. package/lib/companions/management.d.ts +4 -4
  67. package/lib/companions/removal.d.ts.map +1 -1
  68. package/lib/companions/removal.js +2 -0
  69. package/lib/companions/removal.js.map +1 -1
  70. package/lib/companions/session-configuration.d.ts.map +1 -1
  71. package/lib/companions/session-configuration.js +2 -0
  72. package/lib/companions/session-configuration.js.map +1 -1
  73. package/lib/domain.d.ts +2 -0
  74. package/lib/domain.d.ts.map +1 -1
  75. package/lib/domain.js.map +1 -1
  76. package/lib/execution/service.d.ts +3 -1
  77. package/lib/execution/service.d.ts.map +1 -1
  78. package/lib/execution/service.js +4 -0
  79. package/lib/execution/service.js.map +1 -1
  80. package/lib/index.d.ts.map +1 -1
  81. package/lib/index.js +31 -5
  82. package/lib/index.js.map +1 -1
  83. package/lib/mcp/config.d.ts +10 -0
  84. package/lib/mcp/config.d.ts.map +1 -0
  85. package/lib/mcp/config.js +54 -0
  86. package/lib/mcp/config.js.map +1 -0
  87. package/lib/mcp/connection-error.d.ts +3 -0
  88. package/lib/mcp/connection-error.d.ts.map +1 -0
  89. package/lib/mcp/connection-error.js +31 -0
  90. package/lib/mcp/connection-error.js.map +1 -0
  91. package/lib/mcp/connections.d.ts +11 -0
  92. package/lib/mcp/connections.d.ts.map +1 -0
  93. package/lib/mcp/connections.js +91 -0
  94. package/lib/mcp/connections.js.map +1 -0
  95. package/lib/mcp/credentials.d.ts +11 -0
  96. package/lib/mcp/credentials.d.ts.map +1 -0
  97. package/lib/mcp/credentials.js +25 -0
  98. package/lib/mcp/credentials.js.map +1 -0
  99. package/lib/mcp/domain.d.ts +41 -0
  100. package/lib/mcp/domain.d.ts.map +1 -0
  101. package/lib/mcp/domain.js +2 -0
  102. package/lib/mcp/domain.js.map +1 -0
  103. package/lib/mcp/edit-config.d.ts +6 -0
  104. package/lib/mcp/edit-config.d.ts.map +1 -0
  105. package/lib/mcp/edit-config.js +36 -0
  106. package/lib/mcp/edit-config.js.map +1 -0
  107. package/lib/mcp/service.d.ts +31 -0
  108. package/lib/mcp/service.d.ts.map +1 -0
  109. package/lib/mcp/service.js +227 -0
  110. package/lib/mcp/service.js.map +1 -0
  111. package/lib/mcp/state.d.ts +4 -0
  112. package/lib/mcp/state.d.ts.map +1 -0
  113. package/lib/mcp/state.js +29 -0
  114. package/lib/mcp/state.js.map +1 -0
  115. package/lib/memory-domain.d.ts +3 -0
  116. package/lib/memory-domain.d.ts.map +1 -1
  117. package/lib/memory-journal.d.ts +3 -0
  118. package/lib/memory-journal.d.ts.map +1 -1
  119. package/lib/memory-journal.js +32 -3
  120. package/lib/memory-journal.js.map +1 -1
  121. package/lib/memory-quality.d.ts +2 -0
  122. package/lib/memory-quality.d.ts.map +1 -1
  123. package/lib/memory-quality.js +8 -0
  124. package/lib/memory-quality.js.map +1 -1
  125. package/lib/memory-reflection.d.ts +1 -1
  126. package/lib/memory-reflection.d.ts.map +1 -1
  127. package/lib/memory-reflection.js +26 -13
  128. package/lib/memory-reflection.js.map +1 -1
  129. package/lib/memory-scope-migration.d.ts +4 -0
  130. package/lib/memory-scope-migration.d.ts.map +1 -0
  131. package/lib/memory-scope-migration.js +48 -0
  132. package/lib/memory-scope-migration.js.map +1 -0
  133. package/lib/memory-scope.d.ts +11 -0
  134. package/lib/memory-scope.d.ts.map +1 -0
  135. package/lib/memory-scope.js +7 -0
  136. package/lib/memory-scope.js.map +1 -0
  137. package/lib/memory-store.d.ts +9 -0
  138. package/lib/memory-store.d.ts.map +1 -1
  139. package/lib/memory-store.js +52 -3
  140. package/lib/memory-store.js.map +1 -1
  141. package/lib/persona/domain.d.ts +6 -0
  142. package/lib/persona/domain.d.ts.map +1 -0
  143. package/lib/persona/domain.js +44 -0
  144. package/lib/persona/domain.js.map +1 -0
  145. package/lib/persona/migration.d.ts +4 -0
  146. package/lib/persona/migration.d.ts.map +1 -0
  147. package/lib/persona/migration.js +22 -0
  148. package/lib/persona/migration.js.map +1 -0
  149. package/lib/persona/service.d.ts +20 -0
  150. package/lib/persona/service.d.ts.map +1 -0
  151. package/lib/persona/service.js +69 -0
  152. package/lib/persona/service.js.map +1 -0
  153. package/lib/persona/store.d.ts +11 -0
  154. package/lib/persona/store.d.ts.map +1 -0
  155. package/lib/persona/store.js +153 -0
  156. package/lib/persona/store.js.map +1 -0
  157. package/lib/persona/types.d.ts +41 -0
  158. package/lib/persona/types.d.ts.map +1 -0
  159. package/lib/persona/types.js +2 -0
  160. package/lib/persona/types.js.map +1 -0
  161. package/lib/profile-domain.d.ts.map +1 -1
  162. package/lib/profile-domain.js +2 -1
  163. package/lib/profile-domain.js.map +1 -1
  164. package/lib/requirements/plan-schema.d.ts +1 -0
  165. package/lib/requirements/plan-schema.d.ts.map +1 -1
  166. package/lib/requirements/plan-schema.js +2 -2
  167. package/lib/requirements/plan-schema.js.map +1 -1
  168. package/lib/skills/task-planning.d.ts +2 -2
  169. package/lib/skills/task-planning.d.ts.map +1 -1
  170. package/lib/skills/task-planning.js +3 -2
  171. package/lib/skills/task-planning.js.map +1 -1
  172. package/lib/storage/migrate-layout.d.ts.map +1 -1
  173. package/lib/storage/migrate-layout.js +1 -0
  174. package/lib/storage/migrate-layout.js.map +1 -1
  175. package/lib/storage/split-state.js +2 -2
  176. package/lib/storage/split-state.js.map +1 -1
  177. package/lib/store.d.ts.map +1 -1
  178. package/lib/store.js +2 -0
  179. package/lib/store.js.map +1 -1
  180. package/lib/tasks/scheduling.d.ts.map +1 -1
  181. package/lib/tasks/scheduling.js +3 -0
  182. package/lib/tasks/scheduling.js.map +1 -1
  183. package/lib/ui/capability-editor.d.ts.map +1 -1
  184. package/lib/ui/capability-editor.js +26 -17
  185. package/lib/ui/capability-editor.js.map +1 -1
  186. package/lib/ui/capability-resources.d.ts +12 -0
  187. package/lib/ui/capability-resources.d.ts.map +1 -0
  188. package/lib/ui/capability-resources.js +39 -0
  189. package/lib/ui/capability-resources.js.map +1 -0
  190. package/lib/ui/companion-access-panel.d.ts +2 -1
  191. package/lib/ui/companion-access-panel.d.ts.map +1 -1
  192. package/lib/ui/companion-access-panel.js +5 -1
  193. package/lib/ui/companion-access-panel.js.map +1 -1
  194. package/lib/ui/mcp-capabilities.d.ts +6 -0
  195. package/lib/ui/mcp-capabilities.d.ts.map +1 -0
  196. package/lib/ui/mcp-capabilities.js +53 -0
  197. package/lib/ui/mcp-capabilities.js.map +1 -0
  198. package/lib/ui/mcp-editor.d.ts +7 -0
  199. package/lib/ui/mcp-editor.d.ts.map +1 -0
  200. package/lib/ui/mcp-editor.js +85 -0
  201. package/lib/ui/mcp-editor.js.map +1 -0
  202. package/lib/ui/mcp-panel.d.ts +2 -0
  203. package/lib/ui/mcp-panel.d.ts.map +1 -0
  204. package/lib/ui/mcp-panel.js +61 -0
  205. package/lib/ui/mcp-panel.js.map +1 -0
  206. package/lib/ui/memory/memory-library.d.ts +2 -1
  207. package/lib/ui/memory/memory-library.d.ts.map +1 -1
  208. package/lib/ui/memory/memory-library.js +7 -6
  209. package/lib/ui/memory/memory-library.js.map +1 -1
  210. package/lib/ui/memory/memory-panel.d.ts.map +1 -1
  211. package/lib/ui/memory/memory-panel.js +10 -3
  212. package/lib/ui/memory/memory-panel.js.map +1 -1
  213. package/lib/ui/memory/persona-view.d.ts +9 -0
  214. package/lib/ui/memory/persona-view.d.ts.map +1 -0
  215. package/lib/ui/memory/persona-view.js +43 -0
  216. package/lib/ui/memory/persona-view.js.map +1 -0
  217. package/lib/ui/memory/types.d.ts +1 -1
  218. package/lib/ui/memory/types.d.ts.map +1 -1
  219. package/lib/ui/skills-panel.d.ts +2 -1
  220. package/lib/ui/skills-panel.d.ts.map +1 -1
  221. package/lib/ui/skills-panel.js +5 -1
  222. package/lib/ui/skills-panel.js.map +1 -1
  223. package/lib/ui/workspace-components.d.ts +2 -1
  224. package/lib/ui/workspace-components.d.ts.map +1 -1
  225. package/lib/ui/workspace-components.js +10 -5
  226. package/lib/ui/workspace-components.js.map +1 -1
  227. package/lib/ui/workspace-navigation.d.ts +9 -1
  228. package/lib/ui/workspace-navigation.d.ts.map +1 -1
  229. package/lib/ui/workspace-navigation.js +1 -0
  230. package/lib/ui/workspace-navigation.js.map +1 -1
  231. package/package.json +7 -3
@@ -0,0 +1,61 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useState } from 'react';
3
+ import { IconPlusOutline16, IconRefreshOutline16 } from '@deepseek-ai/dsh-client-ui-primitives';
4
+ import { api } from '../client-api.js';
5
+ import { CollectionEmpty, CollectionSkeleton, WorkspaceBlock, WorkspaceDialog, WorkspaceHero, WorkspaceNotice, errorMessage } from './workspace-components.js';
6
+ import { FormField } from './partner-components.js';
7
+ import { McpEditor } from './mcp-editor.js';
8
+ export function McpPanel() {
9
+ const [catalog, setCatalog] = useState({ servers: [], bindings: [] });
10
+ const [loading, setLoading] = useState(true);
11
+ const [busy, setBusy] = useState('');
12
+ const [error, setError] = useState('');
13
+ const [notice, setNotice] = useState('');
14
+ const [query, setQuery] = useState('');
15
+ const [editor, setEditor] = useState();
16
+ const [deleting, setDeleting] = useState();
17
+ const [details, setDetails] = useState();
18
+ const load = useCallback(async () => {
19
+ try {
20
+ setCatalog(await api('/mcp'));
21
+ setError('');
22
+ }
23
+ catch (reason) {
24
+ setError(errorMessage(reason));
25
+ }
26
+ finally {
27
+ setLoading(false);
28
+ }
29
+ }, []);
30
+ useEffect(() => { void load(); }, [load]);
31
+ const action = async (server, kind) => {
32
+ setBusy(server.id);
33
+ setError('');
34
+ setNotice('');
35
+ try {
36
+ const next = await api(`/mcp/${server.id}${kind === 'refresh' ? '/refresh' : ''}`, {
37
+ method: kind === 'refresh' ? 'POST' : kind === 'delete' ? 'DELETE' : 'PUT',
38
+ ...(kind === 'toggle' ? { body: JSON.stringify({ name: server.name, enabled: !server.enabled }) } : {}),
39
+ });
40
+ setCatalog(next);
41
+ setDeleting(undefined);
42
+ setNotice(kind === 'refresh' ? '连接成功,工具目录已刷新。已授权伙伴将在下一轮对话使用最新工具。' : kind === 'delete' ? 'MCP 服务与关联授权已删除。' : '状态已保存,下一轮生效;停用后立即阻止新的调用。');
43
+ }
44
+ catch (reason) {
45
+ setError(errorMessage(reason));
46
+ if (kind === 'refresh') {
47
+ try {
48
+ setCatalog(await api('/mcp'));
49
+ }
50
+ catch { /* retain list on network failure */ }
51
+ }
52
+ }
53
+ finally {
54
+ setBusy('');
55
+ }
56
+ };
57
+ const visible = catalog.servers.filter(s => s.name.toLocaleLowerCase().includes(query.trim().toLocaleLowerCase()));
58
+ return _jsxs("div", { className: "dsh-partner-feature-page", children: [_jsx(WorkspaceHero, { eyebrow: "Capability catalog", title: "MCP \u670D\u52A1", detail: "\u96C6\u4E2D\u7BA1\u7406\u5916\u90E8\u5DE5\u5177\uFF0C\u518D\u5728\u4F19\u4F34\u80FD\u529B\u4E2D\u5355\u72EC\u6388\u6743\u3002\u914D\u7F6E\u4E0E\u5DE5\u5177\u76EE\u5F55\u7684\u66F4\u65B0\u5728\u4E0B\u4E00\u8F6E\u5BF9\u8BDD\u751F\u6548\u3002", actions: _jsxs("button", { type: "button", disabled: loading || !!busy, onClick: () => { void load(); }, children: [_jsx(IconRefreshOutline16, { size: 15 }), "\u5237\u65B0\u5217\u8868"] }) }), error && !deleting && _jsx(WorkspaceNotice, { children: error }), notice && _jsx(WorkspaceNotice, { kind: "success", children: notice }), _jsxs(WorkspaceBlock, { title: "\u5DF2\u914D\u7F6E\u670D\u52A1", detail: `${catalog.servers.length} 个服务 · 安装不等于授权`, actions: _jsxs(_Fragment, { children: [_jsx("button", { type: "button", onClick: () => setEditor('import'), children: "\u5BFC\u5165 JSON" }), _jsxs("button", { type: "button", onClick: () => setEditor('new'), children: [_jsx(IconPlusOutline16, { size: 14 }), "\u65B0\u589E MCP"] })] }), children: [_jsx(FormField, { label: "\u641C\u7D22\u670D\u52A1", children: _jsx("input", { value: query, onChange: e => setQuery(e.target.value), placeholder: "\u6309\u670D\u52A1\u540D\u79F0\u641C\u7D22" }) }), loading ? _jsx(CollectionSkeleton, { rows: 2 }) : !visible.length ? _jsx(CollectionEmpty, { title: query ? '没有匹配的服务' : '还没有 MCP 服务', detail: "\u652F\u6301 Streamable HTTP \u548C stdio\uFF1B\u53EF\u76F4\u63A5\u5BFC\u5165 mcpServers JSON\u3002" }) : _jsx("div", { className: "dsh-partner-market-grid", children: visible.map(server => _jsxs("article", { children: [_jsxs("span", { children: [_jsxs("small", { children: [server.transport === 'stdio' ? '本机命令 · STDIO' : '远程服务 · HTTP', " \u00B7 ", server.enabled ? '已启用' : '已停用'] }), _jsx("strong", { children: server.name }), _jsxs("p", { children: [server.tools.length, " \u4E2A\u5DE5\u5177 \u00B7 ", catalog.bindings.filter(b => b.serverId === server.id).length, " \u4E2A\u4F19\u4F34\u83B7\u6388\u6743"] }), _jsx("small", { children: server.refreshedAt ? `上次刷新 ${new Date(server.refreshedAt).toLocaleString()}` : '尚未测试连接,请刷新工具' })] }), server.error && _jsx("p", { className: "dsh-partner-inline-error", role: "alert", children: server.error }), _jsxs("footer", { className: "dsh-partner-mcp-actions", children: [_jsx("button", { type: "button", disabled: !!busy, onClick: () => { void action(server, 'refresh'); }, children: busy === server.id ? '处理中…' : '连接 / 刷新工具' }), _jsx("button", { type: "button", onClick: () => setDetails(server), children: "\u5DE5\u5177\u5217\u8868" }), _jsx("button", { type: "button", disabled: !!busy, onClick: () => setEditor(server), children: "\u7F16\u8F91" }), _jsx("button", { type: "button", disabled: !!busy, onClick: () => { void action(server, 'toggle'); }, children: server.enabled ? '停用' : '启用' }), _jsx("button", { type: "button", disabled: !!busy, onClick: () => { setError(''); setDeleting(server); }, children: "\u5220\u9664" })] })] }, server.id)) })] }), editor && _jsx(McpEditor, { value: editor, close: () => setEditor(undefined), saved: next => { setCatalog(next); setNotice('配置已保存。请连接 / 刷新工具,然后在伙伴能力中授权。'); setEditor(undefined); } }), details && _jsx(WorkspaceDialog, { title: `${details.name} · 工具列表`, detail: "\u5237\u65B0\u5DE5\u5177\u4F1A\u91CD\u65B0\u83B7\u53D6\u540D\u79F0\u3001\u8BF4\u660E\u548C\u53C2\u6570\uFF1B\u4E0D\u6267\u884C\u4EFB\u4F55\u4E1A\u52A1\u5DE5\u5177\u3002", close: () => setDetails(undefined), children: !details.tools.length ? _jsx(CollectionEmpty, { title: "\u6682\u65E0\u5DE5\u5177", detail: "\u8BF7\u5148\u8FDE\u63A5 / \u5237\u65B0\u5DE5\u5177\u3002" }) : _jsx("div", { className: "dsh-partner-mcp-tool-list", children: details.tools.map(tool => _jsxs("details", { children: [_jsx("summary", { children: tool.name }), _jsx("p", { children: tool.description || '服务未提供说明' }), _jsx("pre", { children: JSON.stringify(tool.inputSchema, null, 2) })] }, tool.name)) }) }), deleting && _jsx(WorkspaceDialog, { title: "\u5220\u9664 MCP \u670D\u52A1", detail: `确认删除“${deleting.name}”?关联授权也会移除,不会删除远程服务的数据。`, close: () => { if (!busy)
59
+ setDeleting(undefined); }, children: _jsxs("div", { className: "dsh-partner-feature-form", children: [error && _jsx(WorkspaceNotice, { children: error }), _jsxs("footer", { children: [_jsx("button", { type: "button", disabled: !!busy, onClick: () => setDeleting(undefined), children: "\u53D6\u6D88" }), _jsx("button", { type: "button", className: "is-primary", disabled: !!busy, onClick: () => { void action(deleting, 'delete'); }, children: busy ? '删除中…' : '确认删除' })] })] }) })] });
60
+ }
61
+ //# sourceMappingURL=mcp-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-panel.js","sourceRoot":"","sources":["../../src/ui/mcp-panel.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { type MemoryCollection, type MemoryLayers } from './types.js';
2
- export declare function MemoryLibrary({ companionId, scopeId, collection, layers, changed }: {
2
+ export declare function MemoryLibrary({ companionId, scopeId, collection, layers, enabled, changed }: {
3
3
  companionId: string;
4
4
  scopeId: string;
5
5
  collection: MemoryCollection;
6
6
  layers: MemoryLayers | undefined;
7
+ enabled: boolean;
7
8
  changed(): Promise<void>;
8
9
  }): JSX.Element;
9
10
  //# sourceMappingURL=memory-library.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory-library.d.ts","sourceRoot":"","sources":["../../../src/ui/memory/memory-library.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAgB,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAkB,MAAM,YAAY,CAAA;AAEnG,wBAAgB,aAAa,CAAC,EAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAC,EAAE;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC;IAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAC,GAAG,GAAG,CAAC,OAAO,CAoDhO"}
1
+ {"version":3,"file":"memory-library.d.ts","sourceRoot":"","sources":["../../../src/ui/memory/memory-library.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAgB,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAkB,MAAM,YAAY,CAAA;AAEnG,wBAAgB,aAAa,CAAC,EAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAC,EAAE;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAC,GAAG,GAAG,CAAC,OAAO,CAiD3P"}
@@ -1,17 +1,18 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useMemo, useRef, useState } from 'react';
3
- import { IconDataOutline16, IconUserOutline16, IconBrowseOutline16, IconListPenOutline16, IconLinkOutline16 } from '@deepseek-ai/dsh-client-ui-primitives';
3
+ import { IconDataOutline16, IconBrowseOutline16, IconListPenOutline16, IconLinkOutline16 } from '@deepseek-ai/dsh-client-ui-primitives';
4
4
  import { CollectionEmpty, WorkspaceDialog, WorkspaceNotice } from '../workspace-components.js';
5
5
  import { relativeTime } from '../partner-components.js';
6
6
  import { MemoryDetail } from './memory-detail.js';
7
7
  import { DailyReflectionDetail, memoryKind } from './memory-cards.js';
8
8
  import { MemoryGraph } from './memory-graph.js';
9
9
  import { HistoryView } from './history-view.js';
10
+ import { PersonaView } from './persona-view.js';
10
11
  import { ExperienceView } from './experience-view.js';
11
12
  import { useMemoryResource } from './use-memory-resource.js';
12
13
  import { MEMORY_STATUS } from './types.js';
13
- export function MemoryLibrary({ companionId, scopeId, collection, layers, changed }) {
14
- const [mode, setMode] = useState('profile');
14
+ export function MemoryLibrary({ companionId, scopeId, collection, layers, enabled, changed }) {
15
+ const [mode, setMode] = useState('memory');
15
16
  const [query, setQuery] = useState('');
16
17
  const [status, setStatus] = useState('active');
17
18
  const [kind, setKind] = useState('all');
@@ -29,10 +30,10 @@ export function MemoryLibrary({ companionId, scopeId, collection, layers, change
29
30
  const selectedDay = reflections.find(item => item.date === date);
30
31
  const selectMode = (value) => { setMode(value); setQuery(''); setLimit(20); if (more.current)
31
32
  more.current.open = false; };
32
- const row = (item) => _jsxs("button", { type: "button", className: "dsh-partner-memory-row", onClick: () => setInspecting(item), children: [_jsxs("span", { className: "dsh-partner-memory-row-copy", children: [_jsx("strong", { children: item.subject }), _jsx("p", { children: item.content }), _jsxs("small", { children: [memoryKind(item.kind), " \u00B7 ", item.locked ? '用户确认' : `${Math.round(item.confidence * 100)}% 可信`, " \u00B7 ", relativeTime(item.updatedAt)] })] }), _jsx("span", { className: "dsh-partner-memory-badge", "data-status": item.status, children: MEMORY_STATUS[item.status] })] }, item.id);
33
- return _jsxs("section", { className: "dsh-partner-memory-library-v2", children: [_jsxs("nav", { className: "dsh-partner-memory-nav", "aria-label": "\u8BB0\u5FC6\u5185\u5BB9", children: [_jsxs("button", { type: "button", "aria-pressed": mode === 'profile', onClick: () => selectMode('profile'), children: [_jsx(IconUserOutline16, { size: 16 }), "\u753B\u50CF"] }), _jsxs("button", { type: "button", "aria-pressed": mode === 'memory' || mode === 'scenes', onClick: () => selectMode('memory'), children: [_jsx(IconDataOutline16, { size: 16 }), "\u8BB0\u5FC6"] }), _jsxs("button", { type: "button", "aria-pressed": mode === 'reflection' || mode === 'history', onClick: () => selectMode('reflection'), children: [_jsx(IconBrowseOutline16, { size: 16 }), "\u56DE\u987E"] }), _jsxs("details", { className: "dsh-partner-memory-more", ref: more, onKeyDown: event => { if (event.key === 'Escape' && more.current) {
33
+ const row = (item) => _jsxs("button", { type: "button", className: "dsh-partner-memory-row", "aria-label": `${item.subject}:${item.content}`, onClick: () => setInspecting(item), children: [_jsx("span", { className: "dsh-partner-memory-list-kind", children: memoryKind(item.kind) }), _jsx("span", { className: "dsh-partner-memory-row-copy", children: _jsx("p", { children: item.content }) }), _jsx("small", { className: "dsh-partner-memory-list-state", children: MEMORY_STATUS[item.status] }), _jsx("time", { dateTime: new Date(item.updatedAt).toISOString(), title: new Date(item.updatedAt).toLocaleString(), children: relativeTime(item.updatedAt) })] }, item.id);
34
+ return _jsxs("section", { className: "dsh-partner-memory-library-v2", children: [_jsxs("nav", { className: "dsh-partner-memory-nav", "aria-label": "\u8BB0\u5FC6\u5185\u5BB9", children: [_jsxs("button", { type: "button", "aria-pressed": mode === 'memory' || mode === 'scenes', onClick: () => selectMode('memory'), children: [_jsx(IconDataOutline16, { size: 16 }), "\u8BB0\u5FC6"] }), _jsxs("button", { type: "button", "aria-pressed": mode === 'reflection' || mode === 'history', onClick: () => selectMode('reflection'), children: [_jsx(IconBrowseOutline16, { size: 16 }), "\u56DE\u987E"] }), _jsxs("details", { className: "dsh-partner-memory-more", ref: more, onKeyDown: event => { if (event.key === 'Escape' && more.current) {
34
35
  more.current.open = false;
35
36
  more.current.querySelector('summary')?.focus();
36
- } }, children: [_jsxs("summary", { "aria-label": "\u66F4\u591A\u8BB0\u5FC6\u5185\u5BB9", children: [mode === 'experiences' ? '经验审核' : mode === 'graph' ? '关系图谱' : '更多', " ", _jsx("span", { "aria-hidden": "true", children: "\u22EF" })] }), _jsxs("div", { children: [_jsxs("button", { type: "button", onClick: () => selectMode('experiences'), children: [_jsx(IconListPenOutline16, { size: 16 }), "\u7ECF\u9A8C\u5BA1\u6838 ", _jsx("small", { children: layers?.experiences.filter(item => item.status === 'draft').length ?? 0 })] }), _jsxs("button", { type: "button", onClick: () => selectMode('graph'), children: [_jsx(IconLinkOutline16, { size: 16 }), "\u5173\u7CFB\u56FE\u8C31"] })] })] })] }), (mode === 'memory' || mode === 'scenes') && _jsxs("div", { className: "dsh-partner-memory-segment", "aria-label": "\u8BB0\u5FC6\u89C6\u56FE", children: [_jsx("button", { type: "button", "aria-pressed": mode === 'memory', onClick: () => selectMode('memory'), children: "\u8BB0\u5FC6\u6761\u76EE" }), _jsx("button", { type: "button", "aria-pressed": mode === 'scenes', onClick: () => selectMode('scenes'), children: "\u573A\u666F\u6458\u8981" })] }), (mode === 'reflection' || mode === 'history') && _jsxs("div", { className: "dsh-partner-memory-segment", "aria-label": "\u56DE\u987E\u89C6\u56FE", children: [_jsx("button", { type: "button", "aria-pressed": mode === 'reflection', onClick: () => selectMode('reflection'), children: "\u6BCF\u65E5\u56DE\u987E" }), _jsx("button", { type: "button", "aria-pressed": mode === 'history', onClick: () => selectMode('history'), children: "\u5BF9\u8BDD\u5386\u53F2" })] }), mode !== 'profile' && mode !== 'experiences' && _jsxs("div", { className: "dsh-partner-memory-toolbar", children: [_jsxs("label", { className: "dsh-partner-memory-search", children: [_jsx("span", { className: "sr-only", children: "\u641C\u7D22\u5F53\u524D\u5185\u5BB9" }), _jsx("input", { type: "search", placeholder: mode === 'history' ? '搜索已加载的历史' : '搜索当前内容', value: query, onChange: event => { setQuery(event.target.value); setLimit(20); } })] }), mode === 'memory' && _jsxs(_Fragment, { children: [_jsxs("label", { children: [_jsx("span", { className: "sr-only", children: "\u8BB0\u5FC6\u72B6\u6001" }), _jsxs("select", { "aria-label": "\u8BB0\u5FC6\u72B6\u6001", value: status, onChange: event => { setStatus(event.target.value); setLimit(20); }, children: [_jsx("option", { value: "all", children: "\u5168\u90E8\u72B6\u6001" }), Object.entries(MEMORY_STATUS).map(([value, label]) => _jsx("option", { value: value, children: label }, value))] })] }), _jsxs("label", { children: [_jsx("span", { className: "sr-only", children: "\u8BB0\u5FC6\u7C7B\u578B" }), _jsxs("select", { "aria-label": "\u8BB0\u5FC6\u7C7B\u578B", value: kind, onChange: event => { setKind(event.target.value); setLimit(20); }, children: [_jsx("option", { value: "all", children: "\u5168\u90E8\u7C7B\u578B" }), ['profile', 'preference', 'task', 'event', 'relationship', 'emotion'].map(value => _jsx("option", { value: value, children: memoryKind(value) }, value))] })] })] })] }), mode === 'profile' && _jsxs("div", { className: "dsh-partner-memory-profile", children: [_jsxs("header", { children: [_jsxs("span", { children: [_jsx("small", { children: "\u57FA\u4E8E\u6709\u6548\u8BB0\u5FC6\uFF0C\u800C\u4E0D\u662F\u731C\u6D4B" }), _jsx("h3", { children: "\u4F19\u4F34\u5BF9\u4F60\u7684\u7406\u89E3" })] }), _jsx("small", { children: profile?.updatedAt ? `更新于 ${relativeTime(profile.updatedAt)}` : '等待可靠依据' })] }), _jsxs("section", { children: [_jsx("h4", { children: "\u660E\u786E\u4E8B\u5B9E" }), _jsx("div", { className: "dsh-partner-memory-rows", children: profile?.entries.map(row) }), !profile?.entries.length && _jsx(CollectionEmpty, { title: "\u8FD8\u6CA1\u6709\u8DB3\u591F\u7684\u8EAB\u4EFD\u4E0E\u80CC\u666F\u4FE1\u606F", detail: "\u53EA\u6536\u5F55\u4F60\u660E\u786E\u8868\u8FBE\u7684\u4E8B\u5B9E\uFF0C\u4E0D\u63A8\u6D4B\u804C\u4E1A\u3001\u6027\u683C\u6216\u9690\u79C1\u3002" })] }), _jsxs("section", { children: [_jsx("h4", { children: "\u7A33\u5B9A\u534F\u4F5C\u504F\u597D" }), _jsx("div", { className: "dsh-partner-memory-rows", children: profile?.preferences?.map(row) }), !profile?.preferences?.length && _jsx(CollectionEmpty, { title: "\u8FD8\u5728\u79EF\u7D2F\u7A33\u5B9A\u504F\u597D", detail: "\u53CD\u590D\u786E\u8BA4\u6216\u624B\u52A8\u9501\u5B9A\u7684\u53EF\u9760\u504F\u597D\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002" })] }), profile && _jsxs("p", { className: "dsh-partner-memory-hint", children: [profile.evidenceCount, " \u5904\u5BF9\u8BDD\u4F9D\u636E \u00B7 ", profile.lockedCount, " \u9879\u7528\u6237\u786E\u8BA4 ", _jsxs("span", { title: profile.version, children: ["\u00B7 \u753B\u50CF\u7248\u672C ", profile.version.slice(0, 8)] })] })] }), mode === 'memory' && _jsxs(_Fragment, { children: [_jsxs("p", { className: "dsh-partner-memory-hint", children: ["\u5F53\u524D\u8054\u7CFB\u4EBA\u6700\u8FD1 100 \u6761\u4E2D\uFF0C\u5339\u914D ", filtered.length, " \u6761\u3002\u70B9\u51FB\u6761\u76EE\u67E5\u770B\u4F9D\u636E\u6216\u4FEE\u6B63\u3002"] }), _jsx("div", { className: "dsh-partner-memory-rows", children: filtered.slice(0, limit).map(row) }), !filtered.length && _jsx(CollectionEmpty, { title: "\u6CA1\u6709\u5339\u914D\u7684\u8BB0\u5FC6", detail: "\u53EF\u4EE5\u5207\u6362\u72B6\u6001\u67E5\u770B\u5DF2\u5B8C\u6210\u3001\u8FC7\u671F\u6216\u88AB\u66FF\u4EE3\u7684\u5185\u5BB9\u3002" }), filtered.length > limit && _jsx("button", { type: "button", onClick: () => setLimit(value => value + 20), children: "\u518D\u663E\u793A 20 \u6761" })] }), mode === 'scenes' && _jsxs(_Fragment, { children: [_jsx("p", { className: "dsh-partner-memory-hint", children: "\u6458\u8981\u5F15\u7528\u5F53\u524D\u6709\u6548\u8BB0\u5FC6\uFF0C\u539F\u8BB0\u5FC6\u4FEE\u6B63\u540E\u540C\u6B65\u53D8\u5316\u3002\u6BCF\u65E5\u7EC8\u5BA1\u65F6\u6574\u7406\u3002" }), layers?.scenes.filter(scene => !normalized || `${scene.title} ${scene.summary}`.toLocaleLowerCase().includes(normalized)).map(scene => _jsxs("details", { className: "dsh-partner-memory-record", children: [_jsxs("summary", { children: [_jsx("strong", { children: scene.title }), _jsxs("small", { children: [scene.memoryIds.length, " \u6761\u4F9D\u636E"] })] }), _jsxs("div", { children: [_jsx("p", { children: scene.summary }), _jsx("small", { children: relativeTime(scene.updatedAt) })] })] }, scene.id)), !layers?.scenes.some(scene => !normalized || (scene.title + ' ' + scene.summary).toLocaleLowerCase().includes(normalized)) && _jsx(CollectionEmpty, { title: normalized ? "没有匹配的场景摘要" : "还没有场景摘要", detail: "\u5F00\u542F\u6BCF\u65E5\u7EC8\u5BA1\u540E\uFF0C\u4F1A\u9010\u6B65\u5C06\u76F8\u5173\u7684\u6709\u6548\u8BB0\u5FC6\u7EC4\u7EC7\u5728\u4E00\u8D77\u3002" })] }), mode === 'reflection' && _jsxs(_Fragment, { children: [_jsx("div", { className: "dsh-partner-memory-rows", children: reflections.map(day => _jsxs("button", { className: "dsh-partner-memory-row", type: "button", onClick: () => setDate(day.date), children: [_jsxs("span", { children: [_jsx("strong", { children: day.date }), _jsx("p", { children: day.summary }), _jsxs("small", { children: [day.turnCount, " \u8F6E\u4EA4\u6D41 \u00B7 ", day.completedTasks.length, " \u9879\u5B8C\u6210"] })] }), _jsx("small", { children: "\u67E5\u770B" })] }, `${day.scopeId}:${day.date}`)) }), !reflections.length && _jsx(CollectionEmpty, { title: "\u8FD8\u6CA1\u6709\u5339\u914D\u7684\u56DE\u987E", detail: "\u5B66\u4E60\u5F00\u542F\u540E\uFF0C\u5728\u540E\u53F0\u5B8C\u6210\u63D0\u70BC\u65F6\u66F4\u65B0\u3002" })] }), mode === 'history' && _jsx(HistoryView, { base: base, scopeId: scopeId, query: normalized }, scopeId), mode === 'experiences' && _jsx(ExperienceView, { items: layers?.experiences ?? [], base: base, scopeId: scopeId, changed: changed }), mode === 'graph' && _jsxs(_Fragment, { children: [graph.error && _jsxs(WorkspaceNotice, { children: [graph.error, " ", _jsx("button", { type: "button", onClick: () => { void graph.reload(); }, children: "\u91CD\u8BD5" })] }), graph.data ? _jsx(MemoryGraph, { graph: { memories: graph.data.memories.filter(item => item.scopeId === scopeId), relations: graph.data.relations.filter(item => item.scopeId === scopeId) }, profiles: collection.profiles.filter(item => item.scopeId === scopeId), query: normalized, inspect: setInspecting }) : !graph.error && _jsx(CollectionEmpty, { title: "\u6B63\u5728\u8BFB\u53D6\u5173\u7CFB\u56FE\u8C31" })] }), inspecting && _jsx(MemoryDetail, { companionId: companionId, item: inspecting, close: () => setInspecting(undefined), changed: changed }, inspecting.id), selectedDay && _jsx(WorkspaceDialog, { title: `${selectedDay.date} 每日回顾`, detail: "\u8FC7\u7A0B\u8BB0\u5F55\u4E0E\u5F53\u65E5\u603B\u7ED3\uFF0C\u4E0D\u76F4\u63A5\u4F5C\u4E3A\u957F\u671F\u4E8B\u5B9E\u3002", close: () => setDate(undefined), children: _jsx(DailyReflectionDetail, { entry: selectedDay }) })] });
37
+ } }, children: [_jsxs("summary", { "aria-label": "\u66F4\u591A\u8BB0\u5FC6\u5185\u5BB9", children: [mode === 'experiences' ? '经验审核' : mode === 'graph' ? '关系图谱' : '更多', " ", _jsx("span", { "aria-hidden": "true", children: "\u22EF" })] }), _jsxs("div", { children: [_jsxs("button", { type: "button", onClick: () => selectMode('scenes'), children: [_jsx(IconDataOutline16, { size: 16 }), "\u573A\u666F\u6458\u8981"] }), _jsxs("button", { type: "button", onClick: () => selectMode('experiences'), children: [_jsx(IconListPenOutline16, { size: 16 }), "\u7ECF\u9A8C\u5BA1\u6838 ", _jsx("small", { children: layers?.experiences.filter(item => item.status === 'draft').length ?? 0 })] }), _jsxs("button", { type: "button", onClick: () => selectMode('graph'), children: [_jsx(IconLinkOutline16, { size: 16 }), "\u5173\u7CFB\u56FE\u8C31"] })] })] })] }), mode === 'scenes' && _jsx("h3", { children: "\u573A\u666F\u6458\u8981" }), (mode === 'reflection' || mode === 'history') && _jsxs("div", { className: "dsh-partner-memory-segment", "aria-label": "\u56DE\u987E\u89C6\u56FE", children: [_jsx("button", { type: "button", "aria-pressed": mode === 'reflection', onClick: () => selectMode('reflection'), children: "\u6BCF\u65E5\u56DE\u987E" }), _jsx("button", { type: "button", "aria-pressed": mode === 'history', onClick: () => selectMode('history'), children: "\u5BF9\u8BDD\u5386\u53F2" })] }), mode === 'memory' && _jsx(PersonaView, { view: profile?.persona, base: base, scopeId: scopeId, enabled: enabled, changed: changed }), mode !== 'experiences' && _jsxs("div", { className: "dsh-partner-memory-toolbar", children: [_jsxs("label", { className: "dsh-partner-memory-search", children: [_jsx("span", { className: "sr-only", children: "\u641C\u7D22\u5F53\u524D\u5185\u5BB9" }), _jsx("input", { type: "search", placeholder: mode === 'history' ? '搜索已加载的历史' : '搜索记忆内容', value: query, onChange: event => { setQuery(event.target.value); setLimit(20); } })] }), mode === 'memory' && _jsxs(_Fragment, { children: [_jsxs("label", { children: [_jsx("span", { className: "sr-only", children: "\u8BB0\u5FC6\u72B6\u6001" }), _jsxs("select", { "aria-label": "\u8BB0\u5FC6\u72B6\u6001", value: status, onChange: event => { setStatus(event.target.value); setLimit(20); }, children: [_jsx("option", { value: "all", children: "\u5168\u90E8\u72B6\u6001" }), Object.entries(MEMORY_STATUS).map(([value, label]) => _jsx("option", { value: value, children: label }, value))] })] }), _jsxs("label", { children: [_jsx("span", { className: "sr-only", children: "\u8BB0\u5FC6\u7C7B\u578B" }), _jsxs("select", { "aria-label": "\u8BB0\u5FC6\u7C7B\u578B", value: kind, onChange: event => { setKind(event.target.value); setLimit(20); }, children: [_jsx("option", { value: "all", children: "\u5168\u90E8\u7C7B\u578B" }), ['profile', 'preference', 'task', 'event', 'relationship', 'emotion'].map(value => _jsx("option", { value: value, children: memoryKind(value) }, value))] })] })] })] }), mode === 'memory' && _jsxs(_Fragment, { children: [_jsxs("p", { className: "dsh-partner-memory-hint", children: ["\u5F53\u524D\u8BB0\u5FC6\u8303\u56F4\u6700\u8FD1 100 \u6761\u4E2D\uFF0C\u5339\u914D ", filtered.length, " \u6761\u3002\u70B9\u51FB\u67E5\u770B\u4F9D\u636E\u3001\u53EF\u4FE1\u5EA6\u6216\u4FEE\u6539\u5185\u5BB9\u3002"] }), _jsx("div", { className: "dsh-partner-memory-rows dsh-partner-memory-list", children: filtered.slice(0, limit).map(row) }), !filtered.length && _jsx(CollectionEmpty, { title: "\u6CA1\u6709\u5339\u914D\u7684\u8BB0\u5FC6", detail: "\u53EF\u4EE5\u5207\u6362\u7C7B\u578B\u6216\u72B6\u6001\u67E5\u770B\u5176\u4ED6\u8BB0\u5FC6\u3002" }), filtered.length > limit && _jsx("button", { type: "button", onClick: () => setLimit(value => value + 20), children: "\u518D\u663E\u793A 20 \u6761" })] }), mode === 'scenes' && _jsxs(_Fragment, { children: [_jsx("p", { className: "dsh-partner-memory-hint", children: "\u6458\u8981\u5F15\u7528\u5F53\u524D\u6709\u6548\u8BB0\u5FC6\uFF0C\u539F\u8BB0\u5FC6\u4FEE\u6B63\u540E\u540C\u6B65\u53D8\u5316\u3002\u6BCF\u65E5\u7EC8\u5BA1\u65F6\u6574\u7406\u3002" }), layers?.scenes.filter(scene => !normalized || `${scene.title} ${scene.summary}`.toLocaleLowerCase().includes(normalized)).map(scene => _jsxs("details", { className: "dsh-partner-memory-record", children: [_jsxs("summary", { children: [_jsx("strong", { children: scene.title }), _jsxs("small", { children: [scene.memoryIds.length, " \u6761\u4F9D\u636E"] })] }), _jsxs("div", { children: [_jsx("p", { children: scene.summary }), _jsx("small", { children: relativeTime(scene.updatedAt) })] })] }, scene.id)), !layers?.scenes.some(scene => !normalized || (scene.title + ' ' + scene.summary).toLocaleLowerCase().includes(normalized)) && _jsx(CollectionEmpty, { title: normalized ? "没有匹配的场景摘要" : "还没有场景摘要", detail: "\u5F00\u542F\u6BCF\u65E5\u7EC8\u5BA1\u540E\uFF0C\u4F1A\u9010\u6B65\u5C06\u76F8\u5173\u7684\u6709\u6548\u8BB0\u5FC6\u7EC4\u7EC7\u5728\u4E00\u8D77\u3002" })] }), mode === 'reflection' && _jsxs(_Fragment, { children: [_jsx("div", { className: "dsh-partner-memory-rows", children: reflections.map(day => _jsxs("button", { className: "dsh-partner-memory-row", type: "button", onClick: () => setDate(day.date), children: [_jsxs("span", { children: [_jsx("strong", { children: day.date }), _jsx("p", { children: day.summary }), _jsxs("small", { children: [day.turnCount, " \u8F6E\u4EA4\u6D41 \u00B7 ", day.completedTasks.length, " \u9879\u5B8C\u6210"] })] }), _jsx("small", { children: "\u67E5\u770B" })] }, `${day.scopeId}:${day.date}`)) }), !reflections.length && _jsx(CollectionEmpty, { title: "\u8FD8\u6CA1\u6709\u5339\u914D\u7684\u56DE\u987E", detail: "\u5B66\u4E60\u5F00\u542F\u540E\uFF0C\u5728\u540E\u53F0\u5B8C\u6210\u63D0\u70BC\u65F6\u66F4\u65B0\u3002" })] }), mode === 'history' && _jsx(HistoryView, { base: base, scopeId: scopeId, query: normalized }, scopeId), mode === 'experiences' && _jsx(ExperienceView, { items: layers?.experiences ?? [], base: base, scopeId: scopeId, changed: changed }), mode === 'graph' && _jsxs(_Fragment, { children: [graph.error && _jsxs(WorkspaceNotice, { children: [graph.error, " ", _jsx("button", { type: "button", onClick: () => { void graph.reload(); }, children: "\u91CD\u8BD5" })] }), graph.data ? _jsx(MemoryGraph, { graph: { memories: graph.data.memories.filter(item => item.scopeId === scopeId), relations: graph.data.relations.filter(item => item.scopeId === scopeId) }, profiles: collection.profiles.filter(item => item.scopeId === scopeId), query: normalized, inspect: setInspecting }) : !graph.error && _jsx(CollectionEmpty, { title: "\u6B63\u5728\u8BFB\u53D6\u5173\u7CFB\u56FE\u8C31" })] }), inspecting && _jsx(MemoryDetail, { companionId: companionId, item: inspecting, close: () => setInspecting(undefined), changed: changed }, inspecting.id), selectedDay && _jsx(WorkspaceDialog, { title: `${selectedDay.date} 每日回顾`, detail: "\u8FC7\u7A0B\u8BB0\u5F55\u4E0E\u5F53\u65E5\u603B\u7ED3\uFF0C\u4E0D\u76F4\u63A5\u4F5C\u4E3A\u957F\u671F\u4E8B\u5B9E\u3002", close: () => setDate(undefined), children: _jsx(DailyReflectionDetail, { entry: selectedDay }) })] });
37
38
  }
38
39
  //# sourceMappingURL=memory-library.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory-library.js","sourceRoot":"","sources":["../../../src/ui/memory/memory-library.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-library.js","sourceRoot":"","sources":["../../../src/ui/memory/memory-library.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"memory-panel.d.ts","sourceRoot":"","sources":["../../../src/ui/memory/memory-panel.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAM,KAAK,aAAa,EAAE,KAAK,eAAe,EAAC,MAAM,qBAAqB,CAAA;AAQjF,wBAAgB,WAAW,CAAC,EAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAC,EAAE;IACrG,SAAS,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAC;IAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpH,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3H,GAAG,GAAG,CAAC,OAAO,CAqCd"}
1
+ {"version":3,"file":"memory-panel.d.ts","sourceRoot":"","sources":["../../../src/ui/memory/memory-panel.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAM,KAAK,aAAa,EAAE,KAAK,eAAe,EAAC,MAAM,qBAAqB,CAAA;AAQjF,wBAAgB,WAAW,CAAC,EAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAC,EAAE;IACrG,SAAS,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAC;IAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpH,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3H,GAAG,GAAG,CAAC,OAAO,CA0Cd"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useRef, useState } from 'react';
2
+ import { useEffect, useRef, useState } from 'react';
3
+ import { conversationMemoryScope } from '../../memory-scope.js';
3
4
  import { IconRefreshOutline16 } from '@deepseek-ai/dsh-client-ui-primitives';
4
5
  import { api } from '../../client-api.js';
5
6
  import { WorkspaceHero, WorkspaceNotice, CollectionEmpty, errorMessage } from '../workspace-components.js';
@@ -16,10 +17,16 @@ export function MemoryPanel({ companion, snapshot, openSession, startSession, re
16
17
  const [error, setError] = useState();
17
18
  const [notice, setNotice] = useState();
18
19
  const base = `/companions/${encodeURIComponent(companion.id)}`;
19
- const initialScope = sessions[0] ? `${sessions[0].channelId}:${sessions[0].userId}` : '';
20
+ const initialScope = sessions[0] ? conversationMemoryScope(sessions[0], sessions) : '';
20
21
  const requested = requestedScope || initialScope;
21
22
  const collection = useMemoryResource(`${base}/memory${requested ? `?${new URLSearchParams({ scopeId: requested })}` : ''}`, 15_000);
22
23
  const scopeId = requested || collection.data?.profiles[0]?.scopeId || '';
24
+ useEffect(() => {
25
+ const profiles = collection.data?.profiles;
26
+ if (!profiles?.length || profiles.some(profile => profile.scopeId === requested))
27
+ return;
28
+ setScope(profiles.find(profile => profile.scopeId === initialScope)?.scopeId ?? profiles[0].scopeId);
29
+ }, [collection.data, requested, initialScope]);
23
30
  const layers = useMemoryResource(scopeId ? `${base}/memory/layers?${new URLSearchParams({ scopeId })}` : undefined, 15_000);
24
31
  const reload = async () => { await Promise.all([collection.reload(), layers.reload()]); };
25
32
  const run = async (action, success) => {
@@ -45,6 +52,6 @@ export function MemoryPanel({ companion, snapshot, openSession, startSession, re
45
52
  const retries = layers.data?.retryCount ?? layers.data?.jobs.filter(job => job.status === 'retrying').length ?? 0;
46
53
  const [showAllJobs, setShowAllJobs] = useState(false);
47
54
  const scopes = collection.data?.profiles ?? [];
48
- return _jsxs("div", { className: "dsh-partner-memory-page", children: [_jsx(WorkspaceHero, { eyebrow: "MEMORY & CONTEXT", title: "\u8BB0\u5FC6\u5E93", detail: "\u77E5\u9053\u8BB0\u4F4F\u4E86\u4EC0\u4E48\u3001\u4F9D\u636E\u662F\u4EC0\u4E48\uFF0C\u4E5F\u80FD\u7EA0\u6B63\u5DF2\u7ECF\u8FC7\u65F6\u7684\u7406\u89E3\u3002", actions: _jsx("button", { type: "button", onClick: () => setSettings(true), children: "\u8BB0\u5FC6\u8BBE\u7F6E" }) }), _jsxs("div", { className: "dsh-partner-memory-context", children: [_jsxs("label", { children: [_jsx("span", { children: "\u5F53\u524D\u8054\u7CFB\u4EBA" }), _jsxs("select", { "aria-label": "\u5F53\u524D\u8054\u7CFB\u4EBA", value: scopeId, onChange: event => { setScope(event.target.value); setError(undefined); setNotice(undefined); }, children: [!scopes.length && _jsx("option", { value: scopeId, children: scopeId ? '本地对话' : '暂无联系人' }), scopes.map(profile => _jsx("option", { value: profile.scopeId, children: sessions.some(session => session.kind === 'local' && `${session.channelId}:${session.userId}` === profile.scopeId) ? '本地对话' : profile.label }, profile.scopeId))] })] }), _jsx("span", { className: "dsh-partner-memory-badge", children: companion.automation.memory.enabled ? '学习已开启' : '学习已暂停' }), _jsx("button", { type: "button", "aria-label": "\u5237\u65B0\u8BB0\u5FC6", disabled: collection.loading || layers.loading, onClick: () => { void reload(); }, children: _jsx(IconRefreshOutline16, { size: 16 }) })] }), (error || collection.error || layers.error) && _jsx(WorkspaceNotice, { children: error || collection.error || layers.error }), notice && _jsx(WorkspaceNotice, { kind: "success", children: notice }), !!layers.data?.jobs.length && _jsxs("details", { className: "dsh-partner-memory-jobs", children: [_jsxs("summary", { children: [layers.data.jobCount ?? layers.data.jobs.length, " \u9879\u5C1A\u672A\u6574\u7406 \u00B7 ", retries, " \u9879\u5931\u8D25\u91CD\u8BD5", _jsx("small", { children: "\u539F\u59CB\u5BF9\u8BDD\u5DF2\u4FDD\u5B58\uFF0C\u4E0D\u5F71\u54CD\u7EE7\u7EED\u804A\u5929" })] }), _jsxs("div", { children: [layers.data.jobs.slice(0, showAllJobs ? 100 : 10).map(job => _jsxs("div", { children: [_jsxs("span", { children: [job.at && _jsx("small", { children: new Date(job.at).toLocaleString() }), job.status === 'processing' ? '正在整理' : job.status === 'retrying' ? `已失败 ${job.attempts} 次 · 下次 ${new Date(job.nextAt).toLocaleTimeString()}` : '等待执行,无需重复提交', _jsx(MemoryJobFeedback, { status: job.status, ...(job.error ? { error: job.error } : {}) }), job.attempts >= 3 && job.status === 'retrying' && _jsx("small", { children: "\u9000\u907F\u671F\u95F4\u5141\u8BB8\u540E\u7EED\u4EFB\u52A1\u7EE7\u7EED\u6574\u7406" })] }), job.status === 'retrying' && _jsx("button", { type: "button", disabled: busy, onClick: () => { void run(async () => { await api(`${base}/memory/jobs/${encodeURIComponent(job.id)}?${new URLSearchParams({ scopeId })}`, { method: 'POST' }); }, '已安排重试,当前执行结束后处理'); }, children: "\u91CD\u65B0\u6392\u961F" })] }, job.id)), layers.data.jobs.length > 10 && _jsx("button", { type: "button", onClick: () => setShowAllJobs(!showAllJobs), children: showAllJobs ? '收起' : '显示更多任务' }), (layers.data.jobCount ?? 0) > 100 && _jsx("p", { children: "\u4EC5\u5C55\u793A\u6700\u65E9100\u9879\uFF0C\u5B8C\u6210\u540E\u81EA\u52A8\u8865\u5145\u540E\u7EED\u4EFB\u52A1\u3002" })] })] }), !collection.data ? _jsx(CollectionEmpty, { title: collection.error ? '记忆读取失败' : '正在读取记忆', action: collection.error ? _jsx("button", { type: "button", onClick: () => { void reload(); }, children: "\u91CD\u8BD5" }) : undefined }) : _jsx(MemoryLibrary, { companionId: companion.id, scopeId: scopeId, collection: collection.data, layers: layers.data, changed: reload }, scopeId), _jsxs("details", { className: "dsh-partner-memory-record is-sessions", children: [_jsxs("summary", { children: ["\u4F19\u4F34\u4F1A\u8BDD ", _jsx("small", { children: sessions.length })] }), _jsxs("div", { children: [sessions.map(session => _jsxs("div", { className: "dsh-partner-memory-session", children: [_jsxs("span", { children: [_jsx("strong", { children: session.kind === 'local' ? '本地对话' : `渠道联系人 · ${session.userId.slice(-6)}` }), _jsx("small", { children: session.archived ? '已归档' : '可继续对话' })] }), _jsx("button", { type: "button", disabled: busy, onClick: () => { void run(() => session.archived ? renewSession(session.id) : openSession(session.id, session.sessionId), session.archived ? '新会话已创建' : '会话已打开'); }, children: session.archived ? '新建会话' : '打开会话' })] }, session.id)), !sessions.length && _jsx("button", { type: "button", disabled: busy, onClick: () => { void run(() => startSession(companion.id), '会话已创建'); }, children: "\u5F00\u59CB\u5BF9\u8BDD" })] })] }), settings && _jsx(AutomationSettings, { companion: companion, kind: "memory", close: () => setSettings(false), onChanged: async () => { await onChanged(); await reload(); } })] });
55
+ return _jsxs("div", { className: "dsh-partner-memory-page", children: [_jsx(WorkspaceHero, { eyebrow: "MEMORY & CONTEXT", title: "\u8BB0\u5FC6\u5E93", detail: "\u77E5\u9053\u8BB0\u4F4F\u4E86\u4EC0\u4E48\u3001\u4F9D\u636E\u662F\u4EC0\u4E48\uFF0C\u4E5F\u80FD\u7EA0\u6B63\u5DF2\u7ECF\u8FC7\u65F6\u7684\u7406\u89E3\u3002", actions: _jsx("button", { type: "button", onClick: () => setSettings(true), children: "\u8BB0\u5FC6\u8BBE\u7F6E" }) }), _jsxs("div", { className: "dsh-partner-memory-context", children: [_jsxs("label", { children: [_jsx("span", { children: "\u8BB0\u5FC6\u8303\u56F4" }), _jsxs("select", { "aria-label": "\u8BB0\u5FC6\u8303\u56F4", value: scopeId, onChange: event => { setScope(event.target.value); setError(undefined); setNotice(undefined); }, children: [!scopes.length && _jsx("option", { value: scopeId, children: scopeId ? '统一会话记忆' : '暂无记忆' }), scopes.map(profile => _jsx("option", { value: profile.scopeId, children: profile.label }, profile.scopeId))] })] }), _jsx("span", { className: "dsh-partner-memory-badge", children: companion.automation.memory.enabled ? '学习已开启' : '学习已暂停' }), _jsx("button", { type: "button", "aria-label": "\u5237\u65B0\u8BB0\u5FC6", disabled: collection.loading || layers.loading, onClick: () => { void reload(); }, children: _jsx(IconRefreshOutline16, { size: 16 }) })] }), (error || collection.error || layers.error) && _jsx(WorkspaceNotice, { children: error || collection.error || layers.error }), notice && _jsx(WorkspaceNotice, { kind: "success", children: notice }), !!layers.data?.jobs.length && _jsxs("details", { className: "dsh-partner-memory-jobs", children: [_jsxs("summary", { children: [layers.data.jobCount ?? layers.data.jobs.length, " \u9879\u5C1A\u672A\u6574\u7406 \u00B7 ", retries, " \u9879\u5931\u8D25\u91CD\u8BD5", _jsx("small", { children: "\u539F\u59CB\u5BF9\u8BDD\u5DF2\u4FDD\u5B58\uFF0C\u4E0D\u5F71\u54CD\u7EE7\u7EED\u804A\u5929" })] }), _jsxs("div", { children: [layers.data.jobs.slice(0, showAllJobs ? 100 : 10).map(job => _jsxs("div", { children: [_jsxs("span", { children: [job.at && _jsx("small", { children: new Date(job.at).toLocaleString() }), job.status === 'processing' ? '正在整理' : job.status === 'retrying' ? `已失败 ${job.attempts} 次 · 下次 ${new Date(job.nextAt).toLocaleTimeString()}` : '等待执行,无需重复提交', _jsx(MemoryJobFeedback, { status: job.status, ...(job.error ? { error: job.error } : {}) }), job.attempts >= 3 && job.status === 'retrying' && _jsx("small", { children: "\u9000\u907F\u671F\u95F4\u5141\u8BB8\u540E\u7EED\u4EFB\u52A1\u7EE7\u7EED\u6574\u7406" })] }), job.status === 'retrying' && _jsx("button", { type: "button", disabled: busy, onClick: () => { void run(async () => { await api(`${base}/memory/jobs/${encodeURIComponent(job.id)}?${new URLSearchParams({ scopeId })}`, { method: 'POST' }); }, '已安排重试,当前执行结束后处理'); }, children: "\u91CD\u65B0\u6392\u961F" })] }, job.id)), layers.data.jobs.length > 10 && _jsx("button", { type: "button", onClick: () => setShowAllJobs(!showAllJobs), children: showAllJobs ? '收起' : '显示更多任务' }), (layers.data.jobCount ?? 0) > 100 && _jsx("p", { children: "\u4EC5\u5C55\u793A\u6700\u65E9100\u9879\uFF0C\u5B8C\u6210\u540E\u81EA\u52A8\u8865\u5145\u540E\u7EED\u4EFB\u52A1\u3002" })] })] }), !collection.data ? _jsx(CollectionEmpty, { title: collection.error ? '记忆读取失败' : '正在读取记忆', action: collection.error ? _jsx("button", { type: "button", onClick: () => { void reload(); }, children: "\u91CD\u8BD5" }) : undefined }) : _jsx(MemoryLibrary, { companionId: companion.id, scopeId: scopeId, collection: collection.data, layers: layers.data, enabled: companion.automation.memory.enabled, changed: reload }, scopeId), _jsxs("details", { className: "dsh-partner-memory-record is-sessions", children: [_jsxs("summary", { children: ["\u4F19\u4F34\u4F1A\u8BDD ", _jsx("small", { children: sessions.length })] }), _jsxs("div", { children: [sessions.map(session => _jsxs("div", { className: "dsh-partner-memory-session", children: [_jsxs("span", { children: [_jsx("strong", { children: session.kind === 'local' ? '本地对话' : `渠道联系人 · ${session.userId.slice(-6)}` }), _jsx("small", { children: session.archived ? '已归档' : '可继续对话' })] }), _jsx("button", { type: "button", disabled: busy, onClick: () => { void run(() => session.archived ? renewSession(session.id) : openSession(session.id, session.sessionId), session.archived ? '新会话已创建' : '会话已打开'); }, children: session.archived ? '新建会话' : '打开会话' })] }, session.id)), !sessions.length && _jsx("button", { type: "button", disabled: busy, onClick: () => { void run(() => startSession(companion.id), '会话已创建'); }, children: "\u5F00\u59CB\u5BF9\u8BDD" })] })] }), settings && _jsx(AutomationSettings, { companion: companion, kind: "memory", close: () => setSettings(false), onChanged: async () => { await onChanged(); await reload(); } })] });
49
56
  }
50
57
  //# sourceMappingURL=memory-panel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory-panel.js","sourceRoot":"","sources":["../../../src/ui/memory/memory-panel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAA;AACtC,OAAO,EAAC,oBAAoB,EAAC,MAAM,uCAAuC,CAAA;AAC1E,OAAO,EAAC,GAAG,EAA2C,MAAM,qBAAqB,CAAA;AACjF,OAAO,EAAC,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAC,MAAM,4BAA4B,CAAA;AACxG,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAC,iBAAiB,EAAC,MAAM,0BAA0B,CAAA;AAE1D,OAAO,EAAC,iBAAiB,EAAC,MAAM,mBAAmB,CAAA;AAEnD,MAAM,UAAU,WAAW,CAAC,EAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAGnG;IACC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,CAAA;IACjM,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC/C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC1B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAU,CAAA;IAC5C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,EAAU,CAAA;IAC9C,MAAM,IAAI,GAAG,eAAe,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAA;IAC9D,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACxF,MAAM,SAAS,GAAG,cAAc,IAAI,YAAY,CAAA;IAChD,MAAM,UAAU,GAAG,iBAAiB,CAAmB,GAAG,IAAI,UAAU,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC,EAAC,OAAO,EAAE,SAAS,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;IACnJ,MAAM,OAAO,GAAG,SAAS,IAAI,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,EAAE,CAAA;IACxE,MAAM,MAAM,GAAG,iBAAiB,CAAe,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,kBAAkB,IAAI,eAAe,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IACvI,MAAM,MAAM,GAAG,KAAK,IAAmB,EAAE,GAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA,CAAA,CAAC,CAAA;IACrG,MAAM,GAAG,GAAG,KAAK,EAAE,MAA2B,EAAE,OAAe,EAAiB,EAAE;QAChF,IAAI,IAAI,CAAC,OAAO;YAAE,OAAM;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QAC7E,IAAI,CAAC;YAAA,MAAM,MAAM,EAAE,CAAC;YAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAAC,MAAM,MAAM,EAAE,CAAA;QAAA,CAAC;QACxD,OAAO,MAAM,EAAE,CAAC;YAAA,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;QAAA,CAAC;gBACvC,CAAC;YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAAA,CAAC;IAChD,CAAC,CAAA;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,UAAU,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,IAAI,CAAC,CAAA;IACjH,MAAM,CAAC,WAAW,EAAC,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACpD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAA;IAC9C,OAAO,eAAK,SAAS,EAAC,yBAAyB,aAC7C,KAAC,aAAa,IAAC,OAAO,EAAC,kBAAkB,EAAC,KAAK,EAAC,oBAAK,EAAC,MAAM,EAAC,8JAA4B,EAAC,OAAO,EAAE,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,yCAAe,GAAI,EAC5K,eAAK,SAAS,EAAC,4BAA4B,aAAC,4BAAO,4DAAkB,EAAA,gCAAmB,gCAAO,EAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA,CAAA,CAAC,aACzM,CAAC,MAAM,CAAC,MAAM,IAAI,iBAAQ,KAAK,EAAE,OAAO,YAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,GAAU,EAC/E,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,iBAAQ,KAAK,EAAE,OAAO,CAAC,OAAO,YAAyB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,IAA7J,OAAO,CAAC,OAAO,CAAwJ,CAAC,IAC7N,IAAQ,EAAA,eAAM,SAAS,EAAC,0BAA0B,YAAE,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAQ,EAAA,iBAAQ,IAAI,EAAC,QAAQ,gBAAY,0BAAM,EAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,KAAK,MAAM,EAAE,CAAA,CAAA,CAAC,YAAE,KAAC,oBAAoB,IAAC,IAAI,EAAE,EAAE,GAAI,GAAS,IAAM,EACpS,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAC,eAAe,cAAE,KAAK,IAAI,UAAU,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,GAAmB,EAAE,MAAM,IAAI,KAAC,eAAe,IAAC,IAAI,EAAC,SAAS,YAAE,MAAM,GAAmB,EACnM,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,IAAI,mBAAS,SAAS,EAAC,yBAAyB,aAAC,8BAAU,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,6CAAW,OAAO,qCAAO,yHAA8B,IAAU,EAAA,0BAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,0BAAkB,2BAAO,GAAG,CAAC,EAAE,IAAI,0BAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,GAAS,EAAE,GAAG,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,QAAQ,WAAW,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,EAAC,KAAC,iBAAiB,IAAC,MAAM,EAAE,GAAG,CAAC,MAAM,KAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,KAAK,EAAC,GAAG,CAAC,KAAK,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAI,EAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,IAAI,mHAA6B,IAAQ,EAAC,GAAG,CAAC,MAAM,KAAK,UAAU,IAAI,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,GAAE,MAAM,GAAG,CAAC,GAAG,IAAI,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,eAAe,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,EAAE,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,CAAA,CAAA,CAAC,EAAE,iBAAiB,CAAC,CAAA,CAAA,CAAC,yCAAe,KAAtpB,GAAG,CAAC,EAAE,CAAupB,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAC,EAAE,IAAI,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAE,EAAE,CAAA,cAAc,CAAC,CAAC,WAAW,CAAC,YAAG,WAAW,CAAA,CAAC,CAAA,IAAI,CAAA,CAAC,CAAA,QAAQ,GAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAC,GAAG,IAAI,gJAA6B,IAAO,IAAU,EACxoC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,eAAe,IAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,GAAE,KAAK,MAAM,EAAE,CAAA,CAAA,CAAC,6BAAa,CAAC,CAAC,CAAC,SAAS,GAAI,CAAC,CAAC,CAAC,KAAC,aAAa,IAAe,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,IAAvH,OAAO,CAAoH,EAClV,mBAAS,SAAS,EAAC,uCAAuC,aAAC,2DAAc,0BAAQ,QAAQ,CAAC,MAAM,GAAS,IAAU,EAAA,0BAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,eAAK,SAAS,EAAC,4BAA4B,aAAkB,2BAAM,2BAAS,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAU,EAAA,0BAAQ,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,GAAS,IAAO,EAAA,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA,CAAA,CAAC,YAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAU,KAA7Z,OAAO,CAAC,EAAE,CAAyZ,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,IAAI,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA,CAAA,CAAC,yCAAe,IAAO,IAAU,EACrwB,QAAQ,IAAI,KAAC,kBAAkB,IAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,IAAI,EAAE,GAAE,MAAM,SAAS,EAAE,CAAC,CAAC,MAAM,MAAM,EAAE,CAAA,CAAA,CAAC,GAAI,IAChK,CAAA;AACR,CAAC"}
1
+ {"version":3,"file":"memory-panel.js","sourceRoot":"","sources":["../../../src/ui/memory/memory-panel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAA;AACjD,OAAO,EAAC,uBAAuB,EAAC,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAC,oBAAoB,EAAC,MAAM,uCAAuC,CAAA;AAC1E,OAAO,EAAC,GAAG,EAA2C,MAAM,qBAAqB,CAAA;AACjF,OAAO,EAAC,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAC,MAAM,4BAA4B,CAAA;AACxG,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAC,iBAAiB,EAAC,MAAM,0BAA0B,CAAA;AAE1D,OAAO,EAAC,iBAAiB,EAAC,MAAM,mBAAmB,CAAA;AAEnD,MAAM,UAAU,WAAW,CAAC,EAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAGnG;IACC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,CAAA;IACjM,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC/C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC1B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAU,CAAA;IAC5C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,EAAU,CAAA;IAC9C,MAAM,IAAI,GAAG,eAAe,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAA;IAC9D,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACtF,MAAM,SAAS,GAAG,cAAc,IAAI,YAAY,CAAA;IAChD,MAAM,UAAU,GAAG,iBAAiB,CAAmB,GAAG,IAAI,UAAU,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC,EAAC,OAAO,EAAE,SAAS,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;IACnJ,MAAM,OAAO,GAAG,SAAS,IAAI,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,EAAE,CAAA;IACxE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAA;QAC1C,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC;YAAE,OAAM;QACxF,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,YAAY,CAAC,EAAE,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAA;IACvG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAA;IAC9C,MAAM,MAAM,GAAG,iBAAiB,CAAe,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,kBAAkB,IAAI,eAAe,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IACvI,MAAM,MAAM,GAAG,KAAK,IAAmB,EAAE,GAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA,CAAA,CAAC,CAAA;IACrG,MAAM,GAAG,GAAG,KAAK,EAAE,MAA2B,EAAE,OAAe,EAAiB,EAAE;QAChF,IAAI,IAAI,CAAC,OAAO;YAAE,OAAM;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QAC7E,IAAI,CAAC;YAAA,MAAM,MAAM,EAAE,CAAC;YAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAAC,MAAM,MAAM,EAAE,CAAA;QAAA,CAAC;QACxD,OAAO,MAAM,EAAE,CAAC;YAAA,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;QAAA,CAAC;gBACvC,CAAC;YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAAA,CAAC;IAChD,CAAC,CAAA;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,UAAU,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,IAAI,CAAC,CAAA;IACjH,MAAM,CAAC,WAAW,EAAC,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACpD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAA;IAC9C,OAAO,eAAK,SAAS,EAAC,yBAAyB,aAC7C,KAAC,aAAa,IAAC,OAAO,EAAC,kBAAkB,EAAC,KAAK,EAAC,oBAAK,EAAC,MAAM,EAAC,8JAA4B,EAAC,OAAO,EAAE,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,yCAAe,GAAI,EAC5K,eAAK,SAAS,EAAC,4BAA4B,aAAC,4BAAO,sDAAiB,EAAA,gCAAmB,0BAAM,EAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA,CAAA,CAAC,aACvM,CAAC,MAAM,CAAC,MAAM,IAAI,iBAAQ,KAAK,EAAE,OAAO,YAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAU,EAChF,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,iBAAQ,KAAK,EAAE,OAAO,CAAC,OAAO,YAAyB,OAAO,CAAC,KAAK,IAA/B,OAAO,CAAC,OAAO,CAA0B,CAAC,IAC/F,IAAQ,EAAA,eAAM,SAAS,EAAC,0BAA0B,YAAE,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAQ,EAAA,iBAAQ,IAAI,EAAC,QAAQ,gBAAY,0BAAM,EAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,KAAK,MAAM,EAAE,CAAA,CAAA,CAAC,YAAE,KAAC,oBAAoB,IAAC,IAAI,EAAE,EAAE,GAAI,GAAS,IAAM,EACpS,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAC,eAAe,cAAE,KAAK,IAAI,UAAU,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,GAAmB,EAAE,MAAM,IAAI,KAAC,eAAe,IAAC,IAAI,EAAC,SAAS,YAAE,MAAM,GAAmB,EACnM,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,IAAI,mBAAS,SAAS,EAAC,yBAAyB,aAAC,8BAAU,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,6CAAW,OAAO,qCAAO,yHAA8B,IAAU,EAAA,0BAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,0BAAkB,2BAAO,GAAG,CAAC,EAAE,IAAI,0BAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,GAAS,EAAE,GAAG,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,QAAQ,WAAW,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,EAAC,KAAC,iBAAiB,IAAC,MAAM,EAAE,GAAG,CAAC,MAAM,KAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,KAAK,EAAC,GAAG,CAAC,KAAK,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAI,EAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,IAAI,mHAA6B,IAAQ,EAAC,GAAG,CAAC,MAAM,KAAK,UAAU,IAAI,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,GAAE,MAAM,GAAG,CAAC,GAAG,IAAI,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,eAAe,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,EAAE,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,CAAA,CAAA,CAAC,EAAE,iBAAiB,CAAC,CAAA,CAAA,CAAC,yCAAe,KAAtpB,GAAG,CAAC,EAAE,CAAupB,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAC,EAAE,IAAI,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAE,EAAE,CAAA,cAAc,CAAC,CAAC,WAAW,CAAC,YAAG,WAAW,CAAA,CAAC,CAAA,IAAI,CAAA,CAAC,CAAA,QAAQ,GAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAC,GAAG,IAAI,gJAA6B,IAAO,IAAU,EACxoC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,eAAe,IAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,GAAE,KAAK,MAAM,EAAE,CAAA,CAAA,CAAC,6BAAa,CAAC,CAAC,CAAC,SAAS,GAAI,CAAC,CAAC,CAAC,KAAC,aAAa,IAAe,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,IAArK,OAAO,CAAkK,EAChY,mBAAS,SAAS,EAAC,uCAAuC,aAAC,2DAAc,0BAAQ,QAAQ,CAAC,MAAM,GAAS,IAAU,EAAA,0BAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,eAAK,SAAS,EAAC,4BAA4B,aAAkB,2BAAM,2BAAS,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAU,EAAA,0BAAQ,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,GAAS,IAAO,EAAA,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA,CAAA,CAAC,YAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAU,KAA7Z,OAAO,CAAC,EAAE,CAAyZ,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,IAAI,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA,CAAA,CAAC,yCAAe,IAAO,IAAU,EACrwB,QAAQ,IAAI,KAAC,kBAAkB,IAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,IAAI,EAAE,GAAE,MAAM,SAAS,EAAE,CAAC,CAAC,MAAM,MAAM,EAAE,CAAA,CAAA,CAAC,GAAI,IAChK,CAAA;AACR,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { PersonaView as View } from '../../persona/types.js';
2
+ export declare function PersonaView({ view, base, scopeId, enabled, changed }: {
3
+ view: View | undefined;
4
+ base: string;
5
+ scopeId: string;
6
+ enabled: boolean;
7
+ changed(): Promise<void>;
8
+ }): JSX.Element;
9
+ //# sourceMappingURL=persona-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persona-view.d.ts","sourceRoot":"","sources":["../../../src/ui/memory/persona-view.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,WAAW,IAAI,IAAI,EAAmB,MAAM,wBAAwB,CAAA;AAOjF,wBAAgB,WAAW,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAC,EAAE;IACnE,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAClG,GAAG,GAAG,CAAC,OAAO,CA+Cd"}
@@ -0,0 +1,43 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useRef, useState } from 'react';
3
+ import { api } from '../../client-api.js';
4
+ import { CollectionEmpty, WorkspaceDialog, WorkspaceNotice, errorMessage } from '../workspace-components.js';
5
+ import { relativeTime } from '../partner-components.js';
6
+ const topics = { background: '背景与目标', interests: '持续兴趣', collaboration: '沟通与协作', changes: '近期变化' };
7
+ const statuses = { waiting: '等待足够依据', pending: '等待后台更新', processing: '正在整理画像', ready: '已更新', retrying: '等待自动重试' };
8
+ export function PersonaView({ view, base, scopeId, enabled, changed }) {
9
+ const [selected, setSelected] = useState();
10
+ const [correction, setCorrection] = useState('');
11
+ const [busy, setBusy] = useState(false);
12
+ const [error, setError] = useState();
13
+ const [notice, setNotice] = useState();
14
+ const lock = useRef(false);
15
+ const submit = async (action) => {
16
+ if (!view || lock.current)
17
+ return;
18
+ lock.current = true;
19
+ setBusy(true);
20
+ setError(undefined);
21
+ setNotice(undefined);
22
+ try {
23
+ await api(`${base}/memory/persona?${new URLSearchParams({ scopeId })}`, { method: 'POST',
24
+ body: JSON.stringify({ action, version: view.version, paragraphId: selected?.id, correction }) });
25
+ setSelected(undefined);
26
+ setNotice(enabled ? '已加入后台队列,完成后自动更新;不影响当前对话。' : '已保存请求,恢复学习后继续整理。');
27
+ await changed();
28
+ }
29
+ catch (reason) {
30
+ setError(errorMessage(reason));
31
+ }
32
+ finally {
33
+ lock.current = false;
34
+ setBusy(false);
35
+ }
36
+ };
37
+ return _jsxs("details", { className: "dsh-partner-persona", "aria-label": "\u7528\u6237\u6982\u8FF0", children: [_jsxs("summary", { children: [_jsx("strong", { children: "\u7528\u6237\u6982\u8FF0" }), _jsxs("small", { role: "status", children: [!enabled ? '学习已暂停' : view ? statuses[view.status] : '正在读取', view?.updatedAt ? ` · ${relativeTime(view.updatedAt)}` : ''] })] }), _jsxs("div", { className: "dsh-partner-persona-body", children: [notice && _jsx(WorkspaceNotice, { kind: "success", children: notice }), error && !selected && _jsx(WorkspaceNotice, { children: error }), view?.error && _jsxs(WorkspaceNotice, { children: ["\u4E0A\u6B21\u6574\u7406\u5931\u8D25\uFF1A", view.error, "\u3002\u5DF2\u6709\u6709\u6548\u753B\u50CF\u4ECD\u4FDD\u7559\uFF1B", enabled ? '后台会自动重试。' : '恢复学习后重试。'] }), !view?.paragraphs.length && _jsx(CollectionEmpty, { title: "\u8FD8\u6CA1\u6709\u8DB3\u591F\u4F9D\u636E\u5F62\u6210\u7528\u6237\u6982\u8FF0", detail: "\u63CF\u8FF0\u4F60\u7684\u80CC\u666F\u3001\u76EE\u6807\u4E0E\u7A33\u5B9A\u504F\u597D\uFF0C\u4E0D\u628A\u4E34\u65F6\u4EFB\u52A1\u5F53\u4F5C\u4EBA\u7269\u7279\u5F81\u3002\u5DF2\u6709\u8BB0\u5FC6\u4ECD\u53EF\u5728\u4E0B\u65B9\u67E5\u770B\u3002" }), _jsx("article", { children: Object.entries(topics).map(([topic, title]) => {
38
+ const paragraphs = view?.paragraphs.filter(item => item.topic === topic) ?? [];
39
+ return paragraphs.length ? _jsxs("section", { children: [_jsx("h4", { children: title }), paragraphs.map(item => _jsx("p", { children: item.text }, item.id))] }, topic) : null;
40
+ }) }), _jsxs("details", { className: "dsh-partner-memory-record", children: [_jsx("summary", { children: "\u4F9D\u636E\u4E0E\u4FEE\u6B63" }), _jsxs("div", { children: [_jsx("p", { className: "dsh-partner-memory-hint", children: "\u89C2\u5BDF\u6027\u63CF\u8FF0\u662F\u53EF\u4EE5\u7EA0\u6B63\u7684\u7406\u89E3\uFF0C\u4E0D\u662F\u5DF2\u786E\u8BA4\u4E8B\u5B9E\u3002\u4FEE\u6539\u57FA\u7840\u8BB0\u5FC6\u8BF7\u70B9\u51FB\u4E0B\u65B9\u5217\u8868\u4E2D\u7684\u6761\u76EE\u3002" }), view?.paragraphs.map(item => _jsxs("section", { children: [_jsxs("small", { children: [topics[item.topic], " \u00B7 ", item.basis === 'explicit' ? '明确表达' : '多轮观察'] }), _jsx("p", { children: item.text }), _jsxs("details", { className: "dsh-partner-memory-record", children: [_jsxs("summary", { children: ["\u67E5\u770B\u4F9D\u636E \u00B7 ", item.evidence.length] }), _jsx("div", { children: item.evidence.map(source => _jsxs("blockquote", { children: [_jsx("p", { children: source.text }), _jsxs("small", { children: [new Date(source.at).toLocaleString(), " \u00B7 ", source.kind === 'memory' ? '有效记忆' : '用户原话'] })] }, source.id)) })] }), _jsx("button", { type: "button", disabled: busy, onClick: () => { setSelected(item); setCorrection(''); setError(undefined); }, children: "\u7EA0\u6B63\u8FD9\u6BB5\u7406\u89E3" })] }, item.id)), _jsx("button", { type: "button", disabled: busy || !view || !enabled || view.status === 'processing' || view.status === 'waiting', onClick: () => { void submit('refresh'); }, children: busy ? '提交中…' : view?.status === 'retrying' ? '立即重试' : '重新整理概述' })] })] }), selected && _jsxs(WorkspaceDialog, { title: "\u7EA0\u6B63\u4F19\u4F34\u7684\u7406\u89E3", detail: "\u63D0\u4EA4\u540E\u7ACB\u5373\u505C\u7528\u8FD9\u6BB5\u7406\u89E3\uFF0C\u518D\u6839\u636E\u4F9D\u636E\u91CD\u65B0\u6574\u7406\u3002\u7559\u7A7A\u8868\u793A\u5426\u8BA4\u6B64\u7ED3\u8BBA\u3002", close: () => { if (!busy)
41
+ setSelected(undefined); }, children: [error && _jsx(WorkspaceNotice, { children: error }), _jsx("p", { children: selected.text }), _jsx("div", { className: "dsh-partner-feature-form", children: _jsxs("label", { children: ["\u6B63\u786E\u7684\u7406\u89E3", _jsx("textarea", { value: correction, maxLength: 500, onChange: event => setCorrection(event.target.value), rows: 4 })] }) }), _jsxs("footer", { className: "dsh-partner-memory-actions", children: [_jsx("button", { type: "button", disabled: busy, onClick: () => setSelected(undefined), children: "\u53D6\u6D88" }), _jsx("button", { type: "button", className: "is-primary", disabled: busy, onClick: () => { void submit('correct'); }, children: busy ? '保存中…' : '保存纠正' })] })] })] })] });
42
+ }
43
+ //# sourceMappingURL=persona-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persona-view.js","sourceRoot":"","sources":["../../../src/ui/memory/persona-view.tsx"],"names":[],"mappings":"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"}
@@ -43,6 +43,6 @@ export interface HistoryTurn {
43
43
  user: string;
44
44
  assistant: string;
45
45
  }
46
- export type MemoryMode = 'profile' | 'memory' | 'reflection' | 'history' | 'scenes' | 'experiences' | 'graph';
46
+ export type MemoryMode = 'memory' | 'reflection' | 'history' | 'scenes' | 'experiences' | 'graph';
47
47
  export declare const MEMORY_STATUS: Record<MemoryView['status'], string>;
48
48
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ui/memory/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAE,mBAAmB,EAAE,uBAAuB,EAAC,MAAM,qBAAqB,CAAA;AACjG,MAAM,WAAW,gBAAgB;IAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAAC,WAAW,EAAE,mBAAmB,EAAE,CAAC;IAAC,QAAQ,EAAE,uBAAuB,EAAE,CAAA;CAAC;AACnI,MAAM,WAAW,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC;AAC/G,MAAM,WAAW,cAAc;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC;AAC7M,MAAM,WAAW,YAAY;IAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAAC,WAAW,EAAE,cAAc,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC,CAAA;CAAC;AACpO,MAAM,WAAW,WAAW;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC;AACtF,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAA;AAC7G,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAuE,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ui/memory/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAE,mBAAmB,EAAE,uBAAuB,EAAC,MAAM,qBAAqB,CAAA;AACjG,MAAM,WAAW,gBAAgB;IAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAAC,WAAW,EAAE,mBAAmB,EAAE,CAAC;IAAC,QAAQ,EAAE,uBAAuB,EAAE,CAAA;CAAC;AACnI,MAAM,WAAW,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC;AAC/G,MAAM,WAAW,cAAc;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC;AAC7M,MAAM,WAAW,YAAY;IAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAAC,WAAW,EAAE,cAAc,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC,CAAA;CAAC;AACpO,MAAM,WAAW,WAAW;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC;AACtF,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAA;AACjG,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAuE,CAAA"}
@@ -1,5 +1,6 @@
1
1
  export declare function SkillsPanel(): JSX.Element;
2
- export declare function CompanionSkillSettings({ companionId }: {
2
+ export declare function CompanionSkillSettings({ companionId, onBusyChange }: {
3
3
  companionId: string;
4
+ onBusyChange?(busy: boolean): void;
4
5
  }): JSX.Element;
5
6
  //# sourceMappingURL=skills-panel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skills-panel.d.ts","sourceRoot":"","sources":["../../src/ui/skills-panel.tsx"],"names":[],"mappings":"AAMA,wBAAgB,WAAW,IAAI,GAAG,CAAC,OAAO,CA4EzC;AAED,wBAAgB,sBAAsB,CAAC,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CA6C5F"}
1
+ {"version":3,"file":"skills-panel.d.ts","sourceRoot":"","sources":["../../src/ui/skills-panel.tsx"],"names":[],"mappings":"AAMA,wBAAgB,WAAW,IAAI,GAAG,CAAC,OAAO,CA4EzC;AAED,wBAAgB,sBAAsB,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CA+C9I"}
@@ -83,7 +83,7 @@ export function SkillsPanel() {
83
83
  return _jsxs("article", { children: [_jsxs("span", { children: [_jsx("small", { children: entry.tags.slice(0, 3).join(' · ') || 'SKILL' }), _jsx("strong", { children: entry.name }), _jsx("p", { children: entry.description })] }), cardError && _jsxs("p", { id: errorId, className: "dsh-partner-market-card-error", role: "alert", children: ["\u5B89\u88C5\u5931\u8D25\uFF1A", cardError] }), _jsxs("footer", { children: [_jsxs("small", { children: ["v", entry.version] }), current ? _jsxs("button", { type: "button", disabled: true, children: [_jsx(IconCheckOutline16, { size: 14 }), "\u5DF2\u5B89\u88C5"] }) : _jsx("button", { type: "button", disabled: busy === entry.id, "aria-describedby": errorId, onClick: () => { void install(entry); }, children: busy === entry.id ? '安装中…' : cardError ? '重试安装' : '安装' })] })] }, `${entry.sourceId}:${entry.id}`);
84
84
  }) }), !loading && visible.length === 0 && _jsx(CollectionEmpty, { title: query ? '没有匹配的 Skill' : '当前来源暂时不可用', detail: query ? '换一个关键词,或切换市场来源。' : '刷新市场,或检查代理与来源配置。' })] })] });
85
85
  }
86
- export function CompanionSkillSettings({ companionId }) {
86
+ export function CompanionSkillSettings({ companionId, onBusyChange }) {
87
87
  const [catalog, setCatalog] = useState({ installed: [], bindings: [], sources: [] });
88
88
  const [busy, setBusy] = useState();
89
89
  const [error, setError] = useState();
@@ -110,6 +110,9 @@ export function CompanionSkillSettings({ companionId }) {
110
110
  const visibleEnabledSkills = showAll ? enabledSkills : enabledSkills.slice(0, 4);
111
111
  const visibleAvailableSkills = availableSkills.slice(0, 80);
112
112
  const setBinding = async (skillId, nextEnabled) => {
113
+ if (busy)
114
+ return;
115
+ onBusyChange?.(true);
113
116
  setBusy(skillId);
114
117
  setError(undefined);
115
118
  try {
@@ -121,6 +124,7 @@ export function CompanionSkillSettings({ companionId }) {
121
124
  }
122
125
  finally {
123
126
  setBusy(undefined);
127
+ onBusyChange?.(false);
124
128
  }
125
129
  };
126
130
  return _jsxs("section", { className: "dsh-partner-capability-detail", "aria-labelledby": "dsh-partner-skill-capability-title", children: [_jsxs("header", { children: [_jsxs("span", { children: [_jsx("small", { children: "PARTNER SKILLS" }), _jsx("strong", { id: "dsh-partner-skill-capability-title", children: "\u5F53\u524D\u4F19\u4F34\u7684 Skill" })] }), _jsxs("div", { className: "dsh-partner-capability-actions", children: [_jsxs("em", { children: [enabledSkills.length, " \u4E2A\u542F\u7528"] }), catalog.installed.length > 0 && _jsxs("button", { type: "button", "aria-expanded": selecting, onClick: () => setSelecting(value => !value), children: [_jsx(IconPlusOutline16, { size: 14 }), "\u6DFB\u52A0 Skill"] })] })] }), selecting && _jsxs("div", { className: "dsh-partner-skill-picker", "aria-label": "\u6DFB\u52A0 Skill", children: [_jsx(SkillSearch, { value: query, change: setQuery, count: availableSkills.length, label: "\u641C\u7D22\u53EF\u6DFB\u52A0\u7684 Skill", placeholder: "\u641C\u7D22\u540D\u79F0\u3001\u8BF4\u660E\u6216\u6807\u8BC6", autoFocus: true, compact: true }), _jsxs("div", { className: "dsh-partner-skill-picker-list", children: [visibleAvailableSkills.map(skill => _jsxs("article", { children: [_jsxs("span", { children: [_jsx("strong", { children: skill.displayName }), _jsx("p", { children: skill.description }), _jsx("small", { children: skill.executionContext === 'fork' ? '隔离临时会话执行' : '可信当前会话执行' })] }), _jsx("button", { type: "button", disabled: busy === skill.id, onClick: () => { void setBinding(skill.id, true); }, children: busy === skill.id ? '添加中…' : '添加' })] }, skill.id)), availableSkills.length === 0 && _jsx("p", { className: "dsh-partner-skill-picker-empty", children: query ? '没有匹配的未启用 Skill。' : '所有已安装 Skill 都已启用。' })] }), availableSkills.length > visibleAvailableSkills.length && _jsxs("small", { className: "dsh-partner-skill-picker-limit", children: ["\u8FD8\u6709 ", availableSkills.length - visibleAvailableSkills.length, " \u4E2A\u7ED3\u679C\uFF0C\u8BF7\u8F93\u5165\u5173\u952E\u8BCD\u7EE7\u7EED\u7B5B\u9009\u3002"] })] }), catalog.installed.length === 0 ? _jsx("p", { className: "dsh-partner-feature-empty", children: "\u5C1A\u672A\u5B89\u88C5 Skill\uFF0C\u8BF7\u5148\u4ECE\u5DE6\u4FA7\u7684 Skill \u5E02\u573A\u5B89\u88C5\u3002" }) : enabledSkills.length === 0 ? _jsx("p", { className: "dsh-partner-feature-empty", children: "\u5F53\u524D\u4F19\u4F34\u8FD8\u6CA1\u6709\u542F\u7528 Skill\u3002\u70B9\u51FB\u201C\u6DFB\u52A0 Skill\u201D\u9009\u62E9\u9700\u8981\u7684\u80FD\u529B\u3002" }) : _jsxs(_Fragment, { children: [_jsx("div", { className: "dsh-partner-skill-installed is-binding", children: visibleEnabledSkills.map(skill => _jsxs("article", { children: [_jsx("span", { className: "dsh-partner-skill-mark", children: _jsx(IconCheckOutline16, { size: 16 }) }), _jsxs("span", { children: [_jsx("strong", { children: skill.displayName }), _jsx("p", { children: skill.description }), _jsx("small", { children: skill.executionContext === 'fork' ? '隔离临时会话执行' : '可信当前会话执行' })] }), _jsx("button", { type: "button", className: "dsh-partner-skill-binding-action", disabled: busy === skill.id, "aria-label": `从当前伙伴停用 ${skill.displayName}`, onClick: () => { void setBinding(skill.id, false); }, children: busy === skill.id ? '处理中…' : '停用' })] }, skill.id)) }), enabledSkills.length > 4 && _jsx("button", { type: "button", className: "dsh-partner-skill-disclosure", "aria-expanded": showAll, onClick: () => setShowAll(value => !value), children: showAll ? '收起 Skill' : `查看全部 ${enabledSkills.length} 个 Skill` })] }), error && _jsx("p", { className: "dsh-partner-inline-error", role: "alert", children: error })] });