@flowingspring/dsh-workspace-memory 0.2.6 → 0.2.7

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.
@@ -18,6 +18,11 @@ const zh = {
18
18
  loading: '正在读取…',
19
19
  failed: '读取记忆失败',
20
20
  retry: '重试',
21
+ activeView: '记忆',
22
+ archiveView: '回收区',
23
+ archiveEmpty: '回收区为空',
24
+ purge: '永久删除',
25
+ purgeConfirm: '确定永久删除这个项目的全部记忆吗?此操作无法撤销。',
21
26
  pending: '待整理',
22
27
  checkpoints: '整理次数',
23
28
  updated: '最近更新',
@@ -41,6 +46,11 @@ const en = {
41
46
  loading: 'Loading…',
42
47
  failed: 'Unable to read memory',
43
48
  retry: 'Retry',
49
+ activeView: 'Memory',
50
+ archiveView: 'Recycle bin',
51
+ archiveEmpty: 'Recycle bin is empty',
52
+ purge: 'Delete permanently',
53
+ purgeConfirm: 'Permanently delete all memory for this project? This cannot be undone.',
44
54
  pending: 'Pending',
45
55
  checkpoints: 'Checkpoints',
46
56
  updated: 'Last updated',
@@ -65,6 +75,10 @@ function MemorySection({ t }) {
65
75
  const [scopes, setScopes] = useState([]);
66
76
  const [selectedKey, setSelectedKey] = useState('global');
67
77
  const [payload, setPayload] = useState();
78
+ const [archivedScopes, setArchivedScopes] = useState([]);
79
+ const [archivedSelectedKey, setArchivedSelectedKey] = useState('');
80
+ const [archivedPayload, setArchivedPayload] = useState();
81
+ const [view, setView] = useState('active');
68
82
  const [query, setQuery] = useState('');
69
83
  const [loading, setLoading] = useState(true);
70
84
  const [error, setError] = useState(false);
@@ -81,6 +95,19 @@ function MemorySection({ t }) {
81
95
  throw new Error(`scope read failed (${response.status})`);
82
96
  return await response.json();
83
97
  };
98
+ const loadArchivedScopes = async () => {
99
+ const response = await fetch('/workspace-memory/api/v1/archived-scopes');
100
+ if (!response.ok)
101
+ throw new Error(`archived scope list failed (${response.status})`);
102
+ const result = await response.json();
103
+ return Array.isArray(result.scopes) ? result.scopes : [];
104
+ };
105
+ const loadArchivedScope = async (key) => {
106
+ const response = await fetch(`/workspace-memory/api/v1/archived-scope?key=${encodeURIComponent(key)}`);
107
+ if (!response.ok)
108
+ throw new Error(`archived scope read failed (${response.status})`);
109
+ return await response.json();
110
+ };
84
111
  const reload = async (cwd) => {
85
112
  setLoading(true);
86
113
  setError(false);
@@ -98,6 +125,30 @@ function MemorySection({ t }) {
98
125
  setLoading(false);
99
126
  }
100
127
  };
128
+ const reloadArchived = async (key) => {
129
+ setLoading(true);
130
+ setError(false);
131
+ try {
132
+ const nextScopes = await loadArchivedScopes();
133
+ setArchivedScopes(nextScopes);
134
+ const nextKey = key ?? (archivedSelectedKey !== '' ? archivedSelectedKey : nextScopes[0]?.key) ?? '';
135
+ if (nextKey === '') {
136
+ setArchivedSelectedKey('');
137
+ setArchivedPayload(undefined);
138
+ }
139
+ else {
140
+ const next = await loadArchivedScope(nextKey);
141
+ setArchivedSelectedKey(next.scope.key);
142
+ setArchivedPayload(next);
143
+ }
144
+ }
145
+ catch {
146
+ setError(true);
147
+ }
148
+ finally {
149
+ setLoading(false);
150
+ }
151
+ };
101
152
  useEffect(() => {
102
153
  void reload();
103
154
  // Memory browsing is independent from the currently open session.
@@ -107,13 +158,17 @@ function MemorySection({ t }) {
107
158
  const known = new Map(scopes.map(scope => [scope.key, scope]));
108
159
  return [...known.values()];
109
160
  }, [scopes]);
161
+ const archivedOptions = useMemo(() => archivedScopes, [archivedScopes]);
162
+ const displayedPayload = view === 'active' ? payload : archivedPayload;
163
+ const displayedOptions = view === 'active' ? options : archivedOptions;
164
+ const displayedKey = view === 'active' ? selectedKey : archivedSelectedKey;
110
165
  const filteredEntries = useMemo(() => {
111
166
  const normalized = query.trim().toLocaleLowerCase();
112
167
  if (normalized === '')
113
- return payload?.entries ?? [];
114
- return (payload?.entries ?? []).filter(entry => [entry.title, entry.description, entry.content, ...entry.tags]
168
+ return displayedPayload?.entries ?? [];
169
+ return (displayedPayload?.entries ?? []).filter(entry => [entry.title, entry.description, entry.content, ...entry.tags]
115
170
  .join(' ').toLocaleLowerCase().includes(normalized));
116
- }, [payload, query]);
171
+ }, [displayedPayload, query]);
117
172
  const onSelect = (key) => {
118
173
  const option = options.find(scope => scope.key === key);
119
174
  if (option === undefined)
@@ -121,6 +176,34 @@ function MemorySection({ t }) {
121
176
  setSelectedKey(key);
122
177
  void reload(option.cwd);
123
178
  };
179
+ const onSelectArchived = (key) => {
180
+ if (!archivedOptions.some(scope => scope.key === key))
181
+ return;
182
+ setArchivedSelectedKey(key);
183
+ void reloadArchived(key);
184
+ };
185
+ const showArchived = () => {
186
+ setView('archived');
187
+ if (archivedPayload === undefined)
188
+ void reloadArchived();
189
+ };
190
+ const purge = async () => {
191
+ const confirm = globalThis.confirm;
192
+ if (archivedSelectedKey === '' || (confirm !== undefined && !confirm(t('purgeConfirm'))))
193
+ return;
194
+ setLoading(true);
195
+ setError(false);
196
+ try {
197
+ const response = await fetch(`/workspace-memory/api/v1/archived-scope?key=${encodeURIComponent(archivedSelectedKey)}`, { method: 'DELETE' });
198
+ if (!response.ok)
199
+ throw new Error(`archived scope delete failed (${response.status})`);
200
+ await reloadArchived();
201
+ }
202
+ catch {
203
+ setError(true);
204
+ setLoading(false);
205
+ }
206
+ };
124
207
  const colors = {
125
208
  text: 'var(--ds-color-text-primary, #f1f1f1)',
126
209
  secondary: 'var(--ds-color-text-secondary, #a7a7ad)',
@@ -128,15 +211,18 @@ function MemorySection({ t }) {
128
211
  surface: 'var(--ds-color-bg-secondary, rgba(255,255,255,.045))',
129
212
  accent: 'var(--ds-color-primary, #8ab4ff)',
130
213
  };
131
- return h('section', { style: { color: colors.text, maxWidth: 820, paddingBottom: 24 } }, h('header', { style: { display: 'flex', alignItems: 'flex-start', justifyContent: 'space-between', gap: 16, marginBottom: 18 } }, h('div', null, h('h2', { style: { margin: 0, fontSize: 20, fontWeight: 650 } }, t('title')), h('p', { style: { margin: '6px 0 0', color: colors.secondary, fontSize: 12, wordBreak: 'break-all' } }, payload?.scope.cwd || t('global'))), h('button', {
132
- type: 'button', title: t('refresh'), 'aria-label': t('refresh'), onClick: () => { void reload(); },
214
+ return h('section', { style: { color: colors.text, maxWidth: 820, paddingBottom: 24 } }, h('header', { style: { display: 'flex', alignItems: 'flex-start', justifyContent: 'space-between', gap: 16, marginBottom: 18 } }, h('div', null, h('h2', { style: { margin: 0, fontSize: 20, fontWeight: 650 } }, t('title')), h('p', { style: { margin: '6px 0 0', color: colors.secondary, fontSize: 12, wordBreak: 'break-all' } }, displayedPayload?.scope.cwd || t('global'))), h('button', {
215
+ type: 'button', title: t('refresh'), 'aria-label': t('refresh'), onClick: () => { void (view === 'active' ? reload() : reloadArchived()); },
133
216
  style: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 34, height: 34, border: `1px solid ${colors.border}`, borderRadius: 6, background: 'transparent', color: colors.text, cursor: 'pointer' },
134
- }, iconRefresh())), h('div', { style: { display: 'grid', gap: 8, marginBottom: 18 } }, h('label', { style: { color: colors.secondary, fontSize: 12 } }, t('scope')), h('select', {
135
- value: selectedKey, onChange: (event) => { onSelect(event.target.value); },
217
+ }, iconRefresh())), h('div', { style: { display: 'flex', gap: 6, marginBottom: 16 } }, h('button', { type: 'button', onClick: () => setView('active'), 'aria-pressed': view === 'active', style: { padding: '7px 11px', border: `1px solid ${colors.border}`, borderRadius: 6, background: view === 'active' ? colors.surface : 'transparent', color: colors.text, cursor: 'pointer' } }, t('activeView')), h('button', { type: 'button', onClick: showArchived, 'aria-pressed': view === 'archived', style: { padding: '7px 11px', border: `1px solid ${colors.border}`, borderRadius: 6, background: view === 'archived' ? colors.surface : 'transparent', color: colors.text, cursor: 'pointer' } }, t('archiveView'))), h('div', { style: { display: 'grid', gap: 8, marginBottom: 18 } }, h('label', { style: { color: colors.secondary, fontSize: 12 } }, t('scope')), h('select', {
218
+ value: displayedKey, onChange: (event) => { const key = event.target.value; if (view === 'active')
219
+ onSelect(key);
220
+ else
221
+ onSelectArchived(key); },
136
222
  style: { minHeight: 38, padding: '0 10px', color: colors.text, background: colors.surface, border: `1px solid ${colors.border}`, borderRadius: 6 },
137
- }, options.length === 0
138
- ? h('option', { value: '' }, t('emptyScopes'))
139
- : options.map(scope => h('option', { key: scope.key, value: scope.key }, scope.kind === 'global' ? t('global') : workspaceName(scope.cwd, t('workspace')))))), error && h('div', { role: 'alert', style: { padding: 12, border: `1px solid ${colors.border}`, borderRadius: 6, color: colors.secondary, display: 'flex', justifyContent: 'space-between', alignItems: 'center', gap: 12 } }, h('span', null, t('failed')), h('button', { type: 'button', onClick: () => { void reload(); }, style: { color: colors.accent, background: 'transparent', border: 0, cursor: 'pointer' } }, t('retry'))), loading && h('p', { style: { color: colors.secondary } }, t('loading')), !loading && !error && h('div', { style: { display: 'grid', gap: 16 } }, h('div', { style: { display: 'flex', gap: 16, color: colors.secondary, fontSize: 12, flexWrap: 'wrap' } }, h('span', null, `${payload?.entries.length ?? 0}${t('count')}`), h('span', null, `${t('pending')}: ${payload?.state.pending ?? 0}`), h('span', null, `${t('checkpoints')}: ${payload?.state.checkpointCount ?? 0}`)), h('article', { style: { border: `1px solid ${colors.border}`, borderRadius: 6, padding: 14, background: colors.surface } }, h('h3', { style: { margin: '0 0 10px', fontSize: 14 } }, t('summary')), h('pre', { style: { margin: 0, color: colors.secondary, whiteSpace: 'pre-wrap', wordBreak: 'break-word', font: 'inherit', lineHeight: 1.55 } }, payload?.summary.trim() || t('noSummary'))), h('div', { style: { display: 'grid', gap: 10 } }, h('div', { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 12 } }, h('h3', { style: { margin: 0, fontSize: 14 } }, `${t('entries')} (${filteredEntries.length})`), h('input', { type: 'search', value: query, placeholder: t('searchPlaceholder'), 'aria-label': t('search'), onChange: (event) => { setQuery(event.target.value); }, style: { minHeight: 32, width: 230, maxWidth: '48%', padding: '0 9px', color: colors.text, background: 'transparent', border: `1px solid ${colors.border}`, borderRadius: 6 } })), filteredEntries.length === 0 && h('p', { style: { color: colors.secondary, margin: 0 } }, t('noEntries')), filteredEntries.map(entry => h('details', { key: entry.id, style: { border: `1px solid ${colors.border}`, borderRadius: 6, padding: '10px 12px', background: colors.surface } }, h('summary', { style: { cursor: 'pointer', display: 'flex', gap: 8, alignItems: 'baseline' } }, h('strong', { style: { fontSize: 13 } }, entry.title), h('span', { style: { color: colors.secondary, fontSize: 11 } }, entry.type)), h('p', { style: { margin: '10px 0 0', color: colors.secondary, lineHeight: 1.5, whiteSpace: 'pre-wrap', wordBreak: 'break-word' } }, entry.content), entry.tags.length > 0 && h('div', { style: { marginTop: 10, color: colors.accent, fontSize: 11 } }, entry.tags.join(' · ')), entry.updatedAt !== undefined && h('div', { style: { marginTop: 8, color: colors.secondary, fontSize: 11 } }, `${t('updated')}: ${formatDate(entry.updatedAt)}`))))));
223
+ }, displayedOptions.length === 0
224
+ ? h('option', { value: '' }, view === 'active' ? t('emptyScopes') : t('archiveEmpty'))
225
+ : displayedOptions.map(scope => h('option', { key: scope.key, value: scope.key }, scope.kind === 'global' ? t('global') : workspaceName(scope.cwd, t('workspace')))))), error && h('div', { role: 'alert', style: { padding: 12, border: `1px solid ${colors.border}`, borderRadius: 6, color: colors.secondary, display: 'flex', justifyContent: 'space-between', alignItems: 'center', gap: 12 } }, h('span', null, t('failed')), h('button', { type: 'button', onClick: () => { void (view === 'active' ? reload() : reloadArchived()); }, style: { color: colors.accent, background: 'transparent', border: 0, cursor: 'pointer' } }, t('retry'))), loading && h('p', { style: { color: colors.secondary } }, t('loading')), !loading && !error && h('div', { style: { display: 'grid', gap: 16 } }, h('div', { style: { display: 'flex', gap: 16, color: colors.secondary, fontSize: 12, flexWrap: 'wrap' } }, h('span', null, `${displayedPayload?.entries.length ?? 0}${t('count')}`), h('span', null, `${t('pending')}: ${displayedPayload?.state.pending ?? 0}`), h('span', null, `${t('checkpoints')}: ${displayedPayload?.state.checkpointCount ?? 0}`)), view === 'archived' && displayedPayload !== undefined && h('button', { type: 'button', onClick: () => { void purge(); }, style: { justifySelf: 'start', color: '#ff8f8f', background: 'transparent', border: `1px solid ${colors.border}`, borderRadius: 6, padding: '7px 11px', cursor: 'pointer' } }, t('purge')), h('article', { style: { border: `1px solid ${colors.border}`, borderRadius: 6, padding: 14, background: colors.surface } }, h('h3', { style: { margin: '0 0 10px', fontSize: 14 } }, t('summary')), h('pre', { style: { margin: 0, color: colors.secondary, whiteSpace: 'pre-wrap', wordBreak: 'break-word', font: 'inherit', lineHeight: 1.55 } }, displayedPayload?.summary.trim() || t('noSummary'))), h('div', { style: { display: 'grid', gap: 10 } }, h('div', { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 12 } }, h('h3', { style: { margin: 0, fontSize: 14 } }, `${t('entries')} (${filteredEntries.length})`), h('input', { type: 'search', value: query, placeholder: t('searchPlaceholder'), 'aria-label': t('search'), onChange: (event) => { setQuery(event.target.value); }, style: { minHeight: 32, width: 230, maxWidth: '48%', padding: '0 9px', color: colors.text, background: 'transparent', border: `1px solid ${colors.border}`, borderRadius: 6 } })), filteredEntries.length === 0 && h('p', { style: { color: colors.secondary, margin: 0 } }, t('noEntries')), filteredEntries.map(entry => h('details', { key: entry.id, style: { border: `1px solid ${colors.border}`, borderRadius: 6, padding: '10px 12px', background: colors.surface } }, h('summary', { style: { cursor: 'pointer', display: 'flex', gap: 8, alignItems: 'baseline' } }, h('strong', { style: { fontSize: 13 } }, entry.title), h('span', { style: { color: colors.secondary, fontSize: 11 } }, entry.type)), h('p', { style: { margin: '10px 0 0', color: colors.secondary, lineHeight: 1.5, whiteSpace: 'pre-wrap', wordBreak: 'break-word' } }, entry.content), entry.tags.length > 0 && h('div', { style: { marginTop: 10, color: colors.accent, fontSize: 11 } }, entry.tags.join(' · ')), entry.updatedAt !== undefined && h('div', { style: { marginTop: 8, color: colors.secondary, fontSize: 11 } }, `${t('updated')}: ${formatDate(entry.updatedAt)}`))))));
140
226
  }
141
227
  export const inject = ['slots', 'locale'];
142
228
  export function apply(ctx) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"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"}
package/lib/client.js CHANGED
@@ -24,6 +24,11 @@ window.__ModuleLoader__.load({
24
24
  loading: "正在读取…",
25
25
  failed: "读取记忆失败",
26
26
  retry: "重试",
27
+ activeView: "记忆",
28
+ archiveView: "回收区",
29
+ archiveEmpty: "回收区为空",
30
+ purge: "永久删除",
31
+ purgeConfirm: "确定永久删除这个项目的全部记忆吗?此操作无法撤销。",
27
32
  pending: "待整理",
28
33
  checkpoints: "整理次数",
29
34
  updated: "最近更新",
@@ -47,6 +52,11 @@ window.__ModuleLoader__.load({
47
52
  loading: "Loading…",
48
53
  failed: "Unable to read memory",
49
54
  retry: "Retry",
55
+ activeView: "Memory",
56
+ archiveView: "Recycle bin",
57
+ archiveEmpty: "Recycle bin is empty",
58
+ purge: "Delete permanently",
59
+ purgeConfirm: "Permanently delete all memory for this project? This cannot be undone.",
50
60
  pending: "Pending",
51
61
  checkpoints: "Checkpoints",
52
62
  updated: "Last updated",
@@ -86,6 +96,10 @@ window.__ModuleLoader__.load({
86
96
  const [scopes, setScopes] = (0, react.useState)([]);
87
97
  const [selectedKey, setSelectedKey] = (0, react.useState)("global");
88
98
  const [payload, setPayload] = (0, react.useState)();
99
+ const [archivedScopes, setArchivedScopes] = (0, react.useState)([]);
100
+ const [archivedSelectedKey, setArchivedSelectedKey] = (0, react.useState)("");
101
+ const [archivedPayload, setArchivedPayload] = (0, react.useState)();
102
+ const [view, setView] = (0, react.useState)("active");
89
103
  const [query, setQuery] = (0, react.useState)("");
90
104
  const [loading, setLoading] = (0, react.useState)(true);
91
105
  const [error, setError] = (0, react.useState)(false);
@@ -100,6 +114,17 @@ window.__ModuleLoader__.load({
100
114
  if (!response.ok) throw new Error(`scope read failed (${response.status})`);
101
115
  return await response.json();
102
116
  };
117
+ const loadArchivedScopes = async () => {
118
+ const response = await fetch("/workspace-memory/api/v1/archived-scopes");
119
+ if (!response.ok) throw new Error(`archived scope list failed (${response.status})`);
120
+ const result = await response.json();
121
+ return Array.isArray(result.scopes) ? result.scopes : [];
122
+ };
123
+ const loadArchivedScope = async (key) => {
124
+ const response = await fetch(`/workspace-memory/api/v1/archived-scope?key=${encodeURIComponent(key)}`);
125
+ if (!response.ok) throw new Error(`archived scope read failed (${response.status})`);
126
+ return await response.json();
127
+ };
103
128
  const reload = async (cwd) => {
104
129
  setLoading(true);
105
130
  setError(false);
@@ -115,28 +140,76 @@ window.__ModuleLoader__.load({
115
140
  setLoading(false);
116
141
  }
117
142
  };
143
+ const reloadArchived = async (key) => {
144
+ setLoading(true);
145
+ setError(false);
146
+ try {
147
+ const nextScopes = await loadArchivedScopes();
148
+ setArchivedScopes(nextScopes);
149
+ const nextKey = key ?? (archivedSelectedKey !== "" ? archivedSelectedKey : nextScopes[0]?.key) ?? "";
150
+ if (nextKey === "") {
151
+ setArchivedSelectedKey("");
152
+ setArchivedPayload(void 0);
153
+ } else {
154
+ const next = await loadArchivedScope(nextKey);
155
+ setArchivedSelectedKey(next.scope.key);
156
+ setArchivedPayload(next);
157
+ }
158
+ } catch {
159
+ setError(true);
160
+ } finally {
161
+ setLoading(false);
162
+ }
163
+ };
118
164
  (0, react.useEffect)(() => {
119
165
  reload();
120
166
  }, []);
121
167
  const options = (0, react.useMemo)(() => {
122
168
  return [...new Map(scopes.map((scope) => [scope.key, scope])).values()];
123
169
  }, [scopes]);
170
+ const archivedOptions = (0, react.useMemo)(() => archivedScopes, [archivedScopes]);
171
+ const displayedPayload = view === "active" ? payload : archivedPayload;
172
+ const displayedOptions = view === "active" ? options : archivedOptions;
173
+ const displayedKey = view === "active" ? selectedKey : archivedSelectedKey;
124
174
  const filteredEntries = (0, react.useMemo)(() => {
125
175
  const normalized = query.trim().toLocaleLowerCase();
126
- if (normalized === "") return payload?.entries ?? [];
127
- return (payload?.entries ?? []).filter((entry) => [
176
+ if (normalized === "") return displayedPayload?.entries ?? [];
177
+ return (displayedPayload?.entries ?? []).filter((entry) => [
128
178
  entry.title,
129
179
  entry.description,
130
180
  entry.content,
131
181
  ...entry.tags
132
182
  ].join(" ").toLocaleLowerCase().includes(normalized));
133
- }, [payload, query]);
183
+ }, [displayedPayload, query]);
134
184
  const onSelect = (key) => {
135
185
  const option = options.find((scope) => scope.key === key);
136
186
  if (option === void 0) return;
137
187
  setSelectedKey(key);
138
188
  reload(option.cwd);
139
189
  };
190
+ const onSelectArchived = (key) => {
191
+ if (!archivedOptions.some((scope) => scope.key === key)) return;
192
+ setArchivedSelectedKey(key);
193
+ reloadArchived(key);
194
+ };
195
+ const showArchived = () => {
196
+ setView("archived");
197
+ if (archivedPayload === void 0) reloadArchived();
198
+ };
199
+ const purge = async () => {
200
+ const confirm = globalThis.confirm;
201
+ if (archivedSelectedKey === "" || confirm !== void 0 && !confirm(t("purgeConfirm"))) return;
202
+ setLoading(true);
203
+ setError(false);
204
+ try {
205
+ const response = await fetch(`/workspace-memory/api/v1/archived-scope?key=${encodeURIComponent(archivedSelectedKey)}`, { method: "DELETE" });
206
+ if (!response.ok) throw new Error(`archived scope delete failed (${response.status})`);
207
+ await reloadArchived();
208
+ } catch {
209
+ setError(true);
210
+ setLoading(false);
211
+ }
212
+ };
140
213
  const colors = {
141
214
  text: "var(--ds-color-text-primary, #f1f1f1)",
142
215
  secondary: "var(--ds-color-text-secondary, #a7a7ad)",
@@ -163,12 +236,12 @@ window.__ModuleLoader__.load({
163
236
  color: colors.secondary,
164
237
  fontSize: 12,
165
238
  wordBreak: "break-all"
166
- } }, payload?.scope.cwd || t("global"))), (0, react.createElement)("button", {
239
+ } }, displayedPayload?.scope.cwd || t("global"))), (0, react.createElement)("button", {
167
240
  type: "button",
168
241
  title: t("refresh"),
169
242
  "aria-label": t("refresh"),
170
243
  onClick: () => {
171
- reload();
244
+ view === "active" ? reload() : reloadArchived();
172
245
  },
173
246
  style: {
174
247
  display: "inline-flex",
@@ -183,6 +256,34 @@ window.__ModuleLoader__.load({
183
256
  cursor: "pointer"
184
257
  }
185
258
  }, iconRefresh())), (0, react.createElement)("div", { style: {
259
+ display: "flex",
260
+ gap: 6,
261
+ marginBottom: 16
262
+ } }, (0, react.createElement)("button", {
263
+ type: "button",
264
+ onClick: () => setView("active"),
265
+ "aria-pressed": view === "active",
266
+ style: {
267
+ padding: "7px 11px",
268
+ border: `1px solid ${colors.border}`,
269
+ borderRadius: 6,
270
+ background: view === "active" ? colors.surface : "transparent",
271
+ color: colors.text,
272
+ cursor: "pointer"
273
+ }
274
+ }, t("activeView")), (0, react.createElement)("button", {
275
+ type: "button",
276
+ onClick: showArchived,
277
+ "aria-pressed": view === "archived",
278
+ style: {
279
+ padding: "7px 11px",
280
+ border: `1px solid ${colors.border}`,
281
+ borderRadius: 6,
282
+ background: view === "archived" ? colors.surface : "transparent",
283
+ color: colors.text,
284
+ cursor: "pointer"
285
+ }
286
+ }, t("archiveView"))), (0, react.createElement)("div", { style: {
186
287
  display: "grid",
187
288
  gap: 8,
188
289
  marginBottom: 18
@@ -190,9 +291,11 @@ window.__ModuleLoader__.load({
190
291
  color: colors.secondary,
191
292
  fontSize: 12
192
293
  } }, t("scope")), (0, react.createElement)("select", {
193
- value: selectedKey,
294
+ value: displayedKey,
194
295
  onChange: (event) => {
195
- onSelect(event.target.value);
296
+ const key = event.target.value;
297
+ if (view === "active") onSelect(key);
298
+ else onSelectArchived(key);
196
299
  },
197
300
  style: {
198
301
  minHeight: 38,
@@ -202,7 +305,7 @@ window.__ModuleLoader__.load({
202
305
  border: `1px solid ${colors.border}`,
203
306
  borderRadius: 6
204
307
  }
205
- }, options.length === 0 ? (0, react.createElement)("option", { value: "" }, t("emptyScopes")) : options.map((scope) => (0, react.createElement)("option", {
308
+ }, displayedOptions.length === 0 ? (0, react.createElement)("option", { value: "" }, view === "active" ? t("emptyScopes") : t("archiveEmpty")) : displayedOptions.map((scope) => (0, react.createElement)("option", {
206
309
  key: scope.key,
207
310
  value: scope.key
208
311
  }, scope.kind === "global" ? t("global") : workspaceName(scope.cwd, t("workspace")))))), error && (0, react.createElement)("div", {
@@ -220,7 +323,7 @@ window.__ModuleLoader__.load({
220
323
  }, (0, react.createElement)("span", null, t("failed")), (0, react.createElement)("button", {
221
324
  type: "button",
222
325
  onClick: () => {
223
- reload();
326
+ view === "active" ? reload() : reloadArchived();
224
327
  },
225
328
  style: {
226
329
  color: colors.accent,
@@ -237,7 +340,21 @@ window.__ModuleLoader__.load({
237
340
  color: colors.secondary,
238
341
  fontSize: 12,
239
342
  flexWrap: "wrap"
240
- } }, (0, react.createElement)("span", null, `${payload?.entries.length ?? 0}${t("count")}`), (0, react.createElement)("span", null, `${t("pending")}: ${payload?.state.pending ?? 0}`), (0, react.createElement)("span", null, `${t("checkpoints")}: ${payload?.state.checkpointCount ?? 0}`)), (0, react.createElement)("article", { style: {
343
+ } }, (0, react.createElement)("span", null, `${displayedPayload?.entries.length ?? 0}${t("count")}`), (0, react.createElement)("span", null, `${t("pending")}: ${displayedPayload?.state.pending ?? 0}`), (0, react.createElement)("span", null, `${t("checkpoints")}: ${displayedPayload?.state.checkpointCount ?? 0}`)), view === "archived" && displayedPayload !== void 0 && (0, react.createElement)("button", {
344
+ type: "button",
345
+ onClick: () => {
346
+ purge();
347
+ },
348
+ style: {
349
+ justifySelf: "start",
350
+ color: "#ff8f8f",
351
+ background: "transparent",
352
+ border: `1px solid ${colors.border}`,
353
+ borderRadius: 6,
354
+ padding: "7px 11px",
355
+ cursor: "pointer"
356
+ }
357
+ }, t("purge")), (0, react.createElement)("article", { style: {
241
358
  border: `1px solid ${colors.border}`,
242
359
  borderRadius: 6,
243
360
  padding: 14,
@@ -252,7 +369,7 @@ window.__ModuleLoader__.load({
252
369
  wordBreak: "break-word",
253
370
  font: "inherit",
254
371
  lineHeight: 1.55
255
- } }, payload?.summary.trim() || t("noSummary"))), (0, react.createElement)("div", { style: {
372
+ } }, displayedPayload?.summary.trim() || t("noSummary"))), (0, react.createElement)("div", { style: {
256
373
  display: "grid",
257
374
  gap: 10
258
375
  } }, (0, react.createElement)("div", { style: {
package/lib/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","names":["h","useState","useMemo"],"sources":["../src/client/index.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react'\nimport { createElement as h } from 'react'\nimport type { SettingsSectionOwnerProps } from '@deepseek-ai/dsh-client-ui-settings/client'\n\nconst NS = 'workspace-memory'\n\nconst zh = {\n nav: '记忆',\n title: '记忆',\n refresh: '刷新',\n global: '全局记忆',\n workspace: '项目记忆',\n scope: '选择记忆范围',\n emptyScopes: '还没有已记录的项目记忆',\n summary: '摘要记忆',\n entries: '结构化记忆',\n search: '筛选记忆',\n searchPlaceholder: '搜索标题、内容或标签',\n noSummary: '暂无摘要',\n noEntries: '暂无结构化记忆',\n loading: '正在读取…',\n failed: '读取记忆失败',\n retry: '重试',\n pending: '待整理',\n checkpoints: '整理次数',\n updated: '最近更新',\n all: '全部',\n count: '条',\n}\n\nconst en = {\n nav: 'Memory',\n title: 'Memory',\n refresh: 'Refresh',\n global: 'Global memory',\n workspace: 'Project memory',\n scope: 'Memory scope',\n emptyScopes: 'No project memories recorded yet',\n summary: 'Summary memory',\n entries: 'Structured memory',\n search: 'Filter memory',\n searchPlaceholder: 'Search title, content, or tags',\n noSummary: 'No summary yet',\n noEntries: 'No structured memories yet',\n loading: 'Loading…',\n failed: 'Unable to read memory',\n retry: 'Retry',\n pending: 'Pending',\n checkpoints: 'Checkpoints',\n updated: 'Last updated',\n all: 'All',\n count: '',\n}\n\ntype Translate = (key: keyof typeof zh) => string\n\ninterface ScopeInfo {\n key: string\n cwd: string\n kind: 'global' | 'workspace'\n entryCount: number\n hasSummary: boolean\n pending: number\n checkpointCount: number\n updatedAt?: string\n}\n\ninterface MemoryEntry {\n id: string\n scope: string\n type: string\n title: string\n description: string\n content: string\n tags: string[]\n importance: number\n createdAt?: string\n updatedAt?: string\n}\n\ninterface ScopePayload {\n scope: { key: string; cwd: string; kind: 'global' | 'workspace' }\n summary: string\n entries: MemoryEntry[]\n state: { pending: number; checkpointCount: number; lastCheckpointAt: number }\n}\n\ninterface SlotsLike {\n inject(slot: string, register: () => unknown): void\n register(options: Record<string, unknown>, component: () => unknown): unknown\n}\n\ninterface LocaleLike {\n register(namespace: string, dictionaries: { zh: Record<string, string>; en: Record<string, string> }): unknown\n bind(namespace: string): (key: string) => string\n}\n\ninterface MemoryClientContext {\n effect(callback: () => unknown, label?: string): void\n slots: SlotsLike\n locale: LocaleLike\n}\n\nfunction workspaceName(cwd: string, fallback: string): string {\n const normalized = cwd.replaceAll('\\\\', '/').replace(/\\/+$/u, '')\n const name = normalized.split('/').filter(Boolean).at(-1)\n return name ?? fallback\n}\n\nfunction formatDate(value: string | undefined): string {\n if (value === undefined || value === '') return ''\n const date = new Date(value)\n return Number.isFinite(date.getTime()) ? date.toLocaleString() : value\n}\n\nfunction iconRefresh(): ReturnType<typeof h> {\n return h('svg', { width: 16, height: 16, viewBox: '0 0 16 16', 'aria-hidden': true },\n h('path', { d: 'M13 4.8A5.5 5.5 0 1 0 13.5 9', fill: 'none', stroke: 'currentColor', strokeWidth: 1.4, strokeLinecap: 'round' }),\n h('path', { d: 'M10.8 2.8h2.8v2.8', fill: 'none', stroke: 'currentColor', strokeWidth: 1.4, strokeLinecap: 'round', strokeLinejoin: 'round' }),\n )\n}\n\nfunction MemorySection({ t }: { t: Translate } & Partial<SettingsSectionOwnerProps>) {\n const [scopes, setScopes] = useState<ScopeInfo[]>([])\n const [selectedKey, setSelectedKey] = useState('global')\n const [payload, setPayload] = useState<ScopePayload | undefined>()\n const [query, setQuery] = useState('')\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState(false)\n\n const loadScopes = async (): Promise<ScopeInfo[]> => {\n const response = await fetch('/workspace-memory/api/v1/scopes')\n if (!response.ok) throw new Error(`scope list failed (${response.status})`)\n const result = await response.json() as { scopes?: ScopeInfo[] }\n return Array.isArray(result.scopes) ? result.scopes : []\n }\n\n const loadScope = async (cwd: string): Promise<ScopePayload> => {\n const response = await fetch(`/workspace-memory/api/v1/scope?cwd=${encodeURIComponent(cwd)}`)\n if (!response.ok) throw new Error(`scope read failed (${response.status})`)\n return await response.json() as ScopePayload\n }\n\n const reload = async (cwd?: string): Promise<void> => {\n setLoading(true)\n setError(false)\n try {\n const nextScopes = await loadScopes()\n setScopes(nextScopes)\n const next = await loadScope(cwd ?? payload?.scope.cwd ?? '')\n setPayload(next)\n setSelectedKey(next.scope.key)\n } catch {\n setError(true)\n } finally {\n setLoading(false)\n }\n }\n\n useEffect(() => {\n void reload()\n // Memory browsing is independent from the currently open session.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const options = useMemo(() => {\n const known = new Map(scopes.map(scope => [scope.key, scope]))\n return [...known.values()]\n }, [scopes])\n\n const filteredEntries = useMemo(() => {\n const normalized = query.trim().toLocaleLowerCase()\n if (normalized === '') return payload?.entries ?? []\n return (payload?.entries ?? []).filter(entry => [entry.title, entry.description, entry.content, ...entry.tags]\n .join(' ').toLocaleLowerCase().includes(normalized))\n }, [payload, query])\n\n const onSelect = (key: string): void => {\n const option = options.find(scope => scope.key === key)\n if (option === undefined) return\n setSelectedKey(key)\n void reload(option.cwd)\n }\n\n const colors = {\n text: 'var(--ds-color-text-primary, #f1f1f1)',\n secondary: 'var(--ds-color-text-secondary, #a7a7ad)',\n border: 'var(--ds-color-border, rgba(255,255,255,.12))',\n surface: 'var(--ds-color-bg-secondary, rgba(255,255,255,.045))',\n accent: 'var(--ds-color-primary, #8ab4ff)',\n }\n\n return h('section', { style: { color: colors.text, maxWidth: 820, paddingBottom: 24 } },\n h('header', { style: { display: 'flex', alignItems: 'flex-start', justifyContent: 'space-between', gap: 16, marginBottom: 18 } },\n h('div', null,\n h('h2', { style: { margin: 0, fontSize: 20, fontWeight: 650 } }, t('title')),\n h('p', { style: { margin: '6px 0 0', color: colors.secondary, fontSize: 12, wordBreak: 'break-all' } }, payload?.scope.cwd || t('global')),\n ),\n h('button', {\n type: 'button', title: t('refresh'), 'aria-label': t('refresh'), onClick: () => { void reload() },\n style: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 34, height: 34, border: `1px solid ${colors.border}`, borderRadius: 6, background: 'transparent', color: colors.text, cursor: 'pointer' },\n }, iconRefresh()),\n ),\n h('div', { style: { display: 'grid', gap: 8, marginBottom: 18 } },\n h('label', { style: { color: colors.secondary, fontSize: 12 } }, t('scope')),\n h('select', {\n value: selectedKey, onChange: (event: Event) => { onSelect((event.target as unknown as { value: string }).value) },\n style: { minHeight: 38, padding: '0 10px', color: colors.text, background: colors.surface, border: `1px solid ${colors.border}`, borderRadius: 6 },\n }, options.length === 0\n ? h('option', { value: '' }, t('emptyScopes'))\n : options.map(scope => h('option', { key: scope.key, value: scope.key }, scope.kind === 'global' ? t('global') : workspaceName(scope.cwd, t('workspace')))),\n ),\n ),\n error && h('div', { role: 'alert', style: { padding: 12, border: `1px solid ${colors.border}`, borderRadius: 6, color: colors.secondary, display: 'flex', justifyContent: 'space-between', alignItems: 'center', gap: 12 } },\n h('span', null, t('failed')),\n h('button', { type: 'button', onClick: () => { void reload() }, style: { color: colors.accent, background: 'transparent', border: 0, cursor: 'pointer' } }, t('retry')),\n ),\n loading && h('p', { style: { color: colors.secondary } }, t('loading')),\n !loading && !error && h('div', { style: { display: 'grid', gap: 16 } },\n h('div', { style: { display: 'flex', gap: 16, color: colors.secondary, fontSize: 12, flexWrap: 'wrap' } },\n h('span', null, `${payload?.entries.length ?? 0}${t('count')}`),\n h('span', null, `${t('pending')}: ${payload?.state.pending ?? 0}`),\n h('span', null, `${t('checkpoints')}: ${payload?.state.checkpointCount ?? 0}`),\n ),\n h('article', { style: { border: `1px solid ${colors.border}`, borderRadius: 6, padding: 14, background: colors.surface } },\n h('h3', { style: { margin: '0 0 10px', fontSize: 14 } }, t('summary')),\n h('pre', { style: { margin: 0, color: colors.secondary, whiteSpace: 'pre-wrap', wordBreak: 'break-word', font: 'inherit', lineHeight: 1.55 } }, payload?.summary.trim() || t('noSummary')),\n ),\n h('div', { style: { display: 'grid', gap: 10 } },\n h('div', { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 12 } },\n h('h3', { style: { margin: 0, fontSize: 14 } }, `${t('entries')} (${filteredEntries.length})`),\n h('input', { type: 'search', value: query, placeholder: t('searchPlaceholder'), 'aria-label': t('search'), onChange: (event: Event) => { setQuery((event.target as unknown as { value: string }).value) }, style: { minHeight: 32, width: 230, maxWidth: '48%', padding: '0 9px', color: colors.text, background: 'transparent', border: `1px solid ${colors.border}`, borderRadius: 6 } }),\n ),\n filteredEntries.length === 0 && h('p', { style: { color: colors.secondary, margin: 0 } }, t('noEntries')),\n filteredEntries.map(entry => h('details', { key: entry.id, style: { border: `1px solid ${colors.border}`, borderRadius: 6, padding: '10px 12px', background: colors.surface } },\n h('summary', { style: { cursor: 'pointer', display: 'flex', gap: 8, alignItems: 'baseline' } },\n h('strong', { style: { fontSize: 13 } }, entry.title),\n h('span', { style: { color: colors.secondary, fontSize: 11 } }, entry.type),\n ),\n h('p', { style: { margin: '10px 0 0', color: colors.secondary, lineHeight: 1.5, whiteSpace: 'pre-wrap', wordBreak: 'break-word' } }, entry.content),\n entry.tags.length > 0 && h('div', { style: { marginTop: 10, color: colors.accent, fontSize: 11 } }, entry.tags.join(' · ')),\n entry.updatedAt !== undefined && h('div', { style: { marginTop: 8, color: colors.secondary, fontSize: 11 } }, `${t('updated')}: ${formatDate(entry.updatedAt)}`),\n )),\n ),\n ),\n )\n}\n\nexport const inject = ['slots', 'locale']\n\nexport function apply(ctx: MemoryClientContext): void {\n ctx.effect(() => ctx.locale.register(NS, { zh, en }), 'workspace-memory: dictionaries')\n const translate = ctx.locale.bind(NS)\n const t = (key: keyof typeof zh): string => {\n const translated = translate(key)\n return translated || zh[key]\n }\n ctx.slots.inject('settings.section', () => ctx.slots.register({\n name: 'settings.section',\n id: 'workspace-memory',\n order: 50,\n label: () => t('nav'),\n locale: NS,\n }, () => h(MemorySection, { t })))\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"client.js","names":["h","useState","useMemo"],"sources":["../src/client/index.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react'\nimport { createElement as h } from 'react'\nimport type { SettingsSectionOwnerProps } from '@deepseek-ai/dsh-client-ui-settings/client'\n\nconst NS = 'workspace-memory'\n\nconst zh = {\n nav: '记忆',\n title: '记忆',\n refresh: '刷新',\n global: '全局记忆',\n workspace: '项目记忆',\n scope: '选择记忆范围',\n emptyScopes: '还没有已记录的项目记忆',\n summary: '摘要记忆',\n entries: '结构化记忆',\n search: '筛选记忆',\n searchPlaceholder: '搜索标题、内容或标签',\n noSummary: '暂无摘要',\n noEntries: '暂无结构化记忆',\n loading: '正在读取…',\n failed: '读取记忆失败',\n retry: '重试',\n activeView: '记忆',\n archiveView: '回收区',\n archiveEmpty: '回收区为空',\n purge: '永久删除',\n purgeConfirm: '确定永久删除这个项目的全部记忆吗?此操作无法撤销。',\n pending: '待整理',\n checkpoints: '整理次数',\n updated: '最近更新',\n all: '全部',\n count: '条',\n}\n\nconst en = {\n nav: 'Memory',\n title: 'Memory',\n refresh: 'Refresh',\n global: 'Global memory',\n workspace: 'Project memory',\n scope: 'Memory scope',\n emptyScopes: 'No project memories recorded yet',\n summary: 'Summary memory',\n entries: 'Structured memory',\n search: 'Filter memory',\n searchPlaceholder: 'Search title, content, or tags',\n noSummary: 'No summary yet',\n noEntries: 'No structured memories yet',\n loading: 'Loading…',\n failed: 'Unable to read memory',\n retry: 'Retry',\n activeView: 'Memory',\n archiveView: 'Recycle bin',\n archiveEmpty: 'Recycle bin is empty',\n purge: 'Delete permanently',\n purgeConfirm: 'Permanently delete all memory for this project? This cannot be undone.',\n pending: 'Pending',\n checkpoints: 'Checkpoints',\n updated: 'Last updated',\n all: 'All',\n count: '',\n}\n\ntype Translate = (key: keyof typeof zh) => string\n\ninterface ScopeInfo {\n key: string\n cwd: string\n kind: 'global' | 'workspace'\n entryCount: number\n hasSummary: boolean\n pending: number\n checkpointCount: number\n updatedAt?: string\n}\n\ninterface MemoryEntry {\n id: string\n scope: string\n type: string\n title: string\n description: string\n content: string\n tags: string[]\n importance: number\n createdAt?: string\n updatedAt?: string\n}\n\ninterface ScopePayload {\n scope: { key: string; cwd: string; kind: 'global' | 'workspace' }\n summary: string\n entries: MemoryEntry[]\n state: { pending: number; checkpointCount: number; lastCheckpointAt: number }\n}\n\ntype MemoryView = 'active' | 'archived'\n\ninterface SlotsLike {\n inject(slot: string, register: () => unknown): void\n register(options: Record<string, unknown>, component: () => unknown): unknown\n}\n\ninterface LocaleLike {\n register(namespace: string, dictionaries: { zh: Record<string, string>; en: Record<string, string> }): unknown\n bind(namespace: string): (key: string) => string\n}\n\ninterface MemoryClientContext {\n effect(callback: () => unknown, label?: string): void\n slots: SlotsLike\n locale: LocaleLike\n}\n\nfunction workspaceName(cwd: string, fallback: string): string {\n const normalized = cwd.replaceAll('\\\\', '/').replace(/\\/+$/u, '')\n const name = normalized.split('/').filter(Boolean).at(-1)\n return name ?? fallback\n}\n\nfunction formatDate(value: string | undefined): string {\n if (value === undefined || value === '') return ''\n const date = new Date(value)\n return Number.isFinite(date.getTime()) ? date.toLocaleString() : value\n}\n\nfunction iconRefresh(): ReturnType<typeof h> {\n return h('svg', { width: 16, height: 16, viewBox: '0 0 16 16', 'aria-hidden': true },\n h('path', { d: 'M13 4.8A5.5 5.5 0 1 0 13.5 9', fill: 'none', stroke: 'currentColor', strokeWidth: 1.4, strokeLinecap: 'round' }),\n h('path', { d: 'M10.8 2.8h2.8v2.8', fill: 'none', stroke: 'currentColor', strokeWidth: 1.4, strokeLinecap: 'round', strokeLinejoin: 'round' }),\n )\n}\n\nfunction MemorySection({ t }: { t: Translate } & Partial<SettingsSectionOwnerProps>) {\n const [scopes, setScopes] = useState<ScopeInfo[]>([])\n const [selectedKey, setSelectedKey] = useState('global')\n const [payload, setPayload] = useState<ScopePayload | undefined>()\n const [archivedScopes, setArchivedScopes] = useState<ScopeInfo[]>([])\n const [archivedSelectedKey, setArchivedSelectedKey] = useState('')\n const [archivedPayload, setArchivedPayload] = useState<ScopePayload | undefined>()\n const [view, setView] = useState<MemoryView>('active')\n const [query, setQuery] = useState('')\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState(false)\n\n const loadScopes = async (): Promise<ScopeInfo[]> => {\n const response = await fetch('/workspace-memory/api/v1/scopes')\n if (!response.ok) throw new Error(`scope list failed (${response.status})`)\n const result = await response.json() as { scopes?: ScopeInfo[] }\n return Array.isArray(result.scopes) ? result.scopes : []\n }\n\n const loadScope = async (cwd: string): Promise<ScopePayload> => {\n const response = await fetch(`/workspace-memory/api/v1/scope?cwd=${encodeURIComponent(cwd)}`)\n if (!response.ok) throw new Error(`scope read failed (${response.status})`)\n return await response.json() as ScopePayload\n }\n\n const loadArchivedScopes = async (): Promise<ScopeInfo[]> => {\n const response = await fetch('/workspace-memory/api/v1/archived-scopes')\n if (!response.ok) throw new Error(`archived scope list failed (${response.status})`)\n const result = await response.json() as { scopes?: ScopeInfo[] }\n return Array.isArray(result.scopes) ? result.scopes : []\n }\n\n const loadArchivedScope = async (key: string): Promise<ScopePayload> => {\n const response = await fetch(`/workspace-memory/api/v1/archived-scope?key=${encodeURIComponent(key)}`)\n if (!response.ok) throw new Error(`archived scope read failed (${response.status})`)\n return await response.json() as ScopePayload\n }\n\n const reload = async (cwd?: string): Promise<void> => {\n setLoading(true)\n setError(false)\n try {\n const nextScopes = await loadScopes()\n setScopes(nextScopes)\n const next = await loadScope(cwd ?? payload?.scope.cwd ?? '')\n setPayload(next)\n setSelectedKey(next.scope.key)\n } catch {\n setError(true)\n } finally {\n setLoading(false)\n }\n }\n\n const reloadArchived = async (key?: string): Promise<void> => {\n setLoading(true)\n setError(false)\n try {\n const nextScopes = await loadArchivedScopes()\n setArchivedScopes(nextScopes)\n const nextKey = key ?? (archivedSelectedKey !== '' ? archivedSelectedKey : nextScopes[0]?.key) ?? ''\n if (nextKey === '') {\n setArchivedSelectedKey('')\n setArchivedPayload(undefined)\n } else {\n const next = await loadArchivedScope(nextKey)\n setArchivedSelectedKey(next.scope.key)\n setArchivedPayload(next)\n }\n } catch {\n setError(true)\n } finally {\n setLoading(false)\n }\n }\n\n useEffect(() => {\n void reload()\n // Memory browsing is independent from the currently open session.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const options = useMemo(() => {\n const known = new Map(scopes.map(scope => [scope.key, scope]))\n return [...known.values()]\n }, [scopes])\n\n const archivedOptions = useMemo(() => archivedScopes, [archivedScopes])\n\n const displayedPayload = view === 'active' ? payload : archivedPayload\n const displayedOptions = view === 'active' ? options : archivedOptions\n const displayedKey = view === 'active' ? selectedKey : archivedSelectedKey\n\n const filteredEntries = useMemo(() => {\n const normalized = query.trim().toLocaleLowerCase()\n if (normalized === '') return displayedPayload?.entries ?? []\n return (displayedPayload?.entries ?? []).filter(entry => [entry.title, entry.description, entry.content, ...entry.tags]\n .join(' ').toLocaleLowerCase().includes(normalized))\n }, [displayedPayload, query])\n\n const onSelect = (key: string): void => {\n const option = options.find(scope => scope.key === key)\n if (option === undefined) return\n setSelectedKey(key)\n void reload(option.cwd)\n }\n\n const onSelectArchived = (key: string): void => {\n if (!archivedOptions.some(scope => scope.key === key)) return\n setArchivedSelectedKey(key)\n void reloadArchived(key)\n }\n\n const showArchived = (): void => {\n setView('archived')\n if (archivedPayload === undefined) void reloadArchived()\n }\n\n const purge = async (): Promise<void> => {\n const confirm = (globalThis as unknown as { confirm?: (message: string) => boolean }).confirm\n if (archivedSelectedKey === '' || (confirm !== undefined && !confirm(t('purgeConfirm')))) return\n setLoading(true)\n setError(false)\n try {\n const response = await fetch(`/workspace-memory/api/v1/archived-scope?key=${encodeURIComponent(archivedSelectedKey)}`, { method: 'DELETE' })\n if (!response.ok) throw new Error(`archived scope delete failed (${response.status})`)\n await reloadArchived()\n } catch {\n setError(true)\n setLoading(false)\n }\n }\n\n const colors = {\n text: 'var(--ds-color-text-primary, #f1f1f1)',\n secondary: 'var(--ds-color-text-secondary, #a7a7ad)',\n border: 'var(--ds-color-border, rgba(255,255,255,.12))',\n surface: 'var(--ds-color-bg-secondary, rgba(255,255,255,.045))',\n accent: 'var(--ds-color-primary, #8ab4ff)',\n }\n\n return h('section', { style: { color: colors.text, maxWidth: 820, paddingBottom: 24 } },\n h('header', { style: { display: 'flex', alignItems: 'flex-start', justifyContent: 'space-between', gap: 16, marginBottom: 18 } },\n h('div', null,\n h('h2', { style: { margin: 0, fontSize: 20, fontWeight: 650 } }, t('title')),\n h('p', { style: { margin: '6px 0 0', color: colors.secondary, fontSize: 12, wordBreak: 'break-all' } }, displayedPayload?.scope.cwd || t('global')),\n ),\n h('button', {\n type: 'button', title: t('refresh'), 'aria-label': t('refresh'), onClick: () => { void (view === 'active' ? reload() : reloadArchived()) },\n style: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 34, height: 34, border: `1px solid ${colors.border}`, borderRadius: 6, background: 'transparent', color: colors.text, cursor: 'pointer' },\n }, iconRefresh()),\n ),\n h('div', { style: { display: 'flex', gap: 6, marginBottom: 16 } },\n h('button', { type: 'button', onClick: () => setView('active'), 'aria-pressed': view === 'active', style: { padding: '7px 11px', border: `1px solid ${colors.border}`, borderRadius: 6, background: view === 'active' ? colors.surface : 'transparent', color: colors.text, cursor: 'pointer' } }, t('activeView')),\n h('button', { type: 'button', onClick: showArchived, 'aria-pressed': view === 'archived', style: { padding: '7px 11px', border: `1px solid ${colors.border}`, borderRadius: 6, background: view === 'archived' ? colors.surface : 'transparent', color: colors.text, cursor: 'pointer' } }, t('archiveView')),\n ),\n h('div', { style: { display: 'grid', gap: 8, marginBottom: 18 } },\n h('label', { style: { color: colors.secondary, fontSize: 12 } }, t('scope')),\n h('select', {\n value: displayedKey, onChange: (event: Event) => { const key = (event.target as unknown as { value: string }).value; if (view === 'active') onSelect(key); else onSelectArchived(key) },\n style: { minHeight: 38, padding: '0 10px', color: colors.text, background: colors.surface, border: `1px solid ${colors.border}`, borderRadius: 6 },\n }, displayedOptions.length === 0\n ? h('option', { value: '' }, view === 'active' ? t('emptyScopes') : t('archiveEmpty'))\n : displayedOptions.map(scope => h('option', { key: scope.key, value: scope.key }, scope.kind === 'global' ? t('global') : workspaceName(scope.cwd, t('workspace')))),\n ),\n ),\n error && h('div', { role: 'alert', style: { padding: 12, border: `1px solid ${colors.border}`, borderRadius: 6, color: colors.secondary, display: 'flex', justifyContent: 'space-between', alignItems: 'center', gap: 12 } },\n h('span', null, t('failed')),\n h('button', { type: 'button', onClick: () => { void (view === 'active' ? reload() : reloadArchived()) }, style: { color: colors.accent, background: 'transparent', border: 0, cursor: 'pointer' } }, t('retry')),\n ),\n loading && h('p', { style: { color: colors.secondary } }, t('loading')),\n !loading && !error && h('div', { style: { display: 'grid', gap: 16 } },\n h('div', { style: { display: 'flex', gap: 16, color: colors.secondary, fontSize: 12, flexWrap: 'wrap' } },\n h('span', null, `${displayedPayload?.entries.length ?? 0}${t('count')}`),\n h('span', null, `${t('pending')}: ${displayedPayload?.state.pending ?? 0}`),\n h('span', null, `${t('checkpoints')}: ${displayedPayload?.state.checkpointCount ?? 0}`),\n ),\n view === 'archived' && displayedPayload !== undefined && h('button', { type: 'button', onClick: () => { void purge() }, style: { justifySelf: 'start', color: '#ff8f8f', background: 'transparent', border: `1px solid ${colors.border}`, borderRadius: 6, padding: '7px 11px', cursor: 'pointer' } }, t('purge')),\n h('article', { style: { border: `1px solid ${colors.border}`, borderRadius: 6, padding: 14, background: colors.surface } },\n h('h3', { style: { margin: '0 0 10px', fontSize: 14 } }, t('summary')),\n h('pre', { style: { margin: 0, color: colors.secondary, whiteSpace: 'pre-wrap', wordBreak: 'break-word', font: 'inherit', lineHeight: 1.55 } }, displayedPayload?.summary.trim() || t('noSummary')),\n ),\n h('div', { style: { display: 'grid', gap: 10 } },\n h('div', { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 12 } },\n h('h3', { style: { margin: 0, fontSize: 14 } }, `${t('entries')} (${filteredEntries.length})`),\n h('input', { type: 'search', value: query, placeholder: t('searchPlaceholder'), 'aria-label': t('search'), onChange: (event: Event) => { setQuery((event.target as unknown as { value: string }).value) }, style: { minHeight: 32, width: 230, maxWidth: '48%', padding: '0 9px', color: colors.text, background: 'transparent', border: `1px solid ${colors.border}`, borderRadius: 6 } }),\n ),\n filteredEntries.length === 0 && h('p', { style: { color: colors.secondary, margin: 0 } }, t('noEntries')),\n filteredEntries.map(entry => h('details', { key: entry.id, style: { border: `1px solid ${colors.border}`, borderRadius: 6, padding: '10px 12px', background: colors.surface } },\n h('summary', { style: { cursor: 'pointer', display: 'flex', gap: 8, alignItems: 'baseline' } },\n h('strong', { style: { fontSize: 13 } }, entry.title),\n h('span', { style: { color: colors.secondary, fontSize: 11 } }, entry.type),\n ),\n h('p', { style: { margin: '10px 0 0', color: colors.secondary, lineHeight: 1.5, whiteSpace: 'pre-wrap', wordBreak: 'break-word' } }, entry.content),\n entry.tags.length > 0 && h('div', { style: { marginTop: 10, color: colors.accent, fontSize: 11 } }, entry.tags.join(' · ')),\n entry.updatedAt !== undefined && h('div', { style: { marginTop: 8, color: colors.secondary, fontSize: 11 } }, `${t('updated')}: ${formatDate(entry.updatedAt)}`),\n )),\n ),\n ),\n )\n}\n\nexport const inject = ['slots', 'locale']\n\nexport function apply(ctx: MemoryClientContext): void {\n ctx.effect(() => ctx.locale.register(NS, { zh, en }), 'workspace-memory: dictionaries')\n const translate = ctx.locale.bind(NS)\n const t = (key: keyof typeof zh): string => {\n const translated = translate(key)\n return translated || zh[key]\n }\n ctx.slots.inject('settings.section', () => ctx.slots.register({\n name: 'settings.section',\n id: 'workspace-memory',\n order: 50,\n label: () => t('nav'),\n locale: NS,\n }, () => h(MemorySection, { t })))\n}\n"],"mappings":"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"}