@flowingspring/dsh-workspace-memory 0.2.5 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { useEffect, useMemo, useState, useSyncExternalStore } from 'react';
1
+ import { useEffect, useMemo, useState } from 'react';
2
2
  import { createElement as h } from 'react';
3
3
  const NS = 'workspace-memory';
4
4
  const zh = {
@@ -7,7 +7,7 @@ const zh = {
7
7
  refresh: '刷新',
8
8
  global: '全局记忆',
9
9
  workspace: '项目记忆',
10
- current: '当前项目',
10
+ scope: '选择记忆范围',
11
11
  emptyScopes: '还没有已记录的项目记忆',
12
12
  summary: '摘要记忆',
13
13
  entries: '结构化记忆',
@@ -30,7 +30,7 @@ const en = {
30
30
  refresh: 'Refresh',
31
31
  global: 'Global memory',
32
32
  workspace: 'Project memory',
33
- current: 'Current project',
33
+ scope: 'Memory scope',
34
34
  emptyScopes: 'No project memories recorded yet',
35
35
  summary: 'Summary memory',
36
36
  entries: 'Structured memory',
@@ -47,17 +47,11 @@ const en = {
47
47
  all: 'All',
48
48
  count: '',
49
49
  };
50
- function useSnapshot(source) {
51
- return useSyncExternalStore(source.subscribe, source.getSnapshot, source.getSnapshot);
52
- }
53
50
  function workspaceName(cwd, fallback) {
54
51
  const normalized = cwd.replaceAll('\\', '/').replace(/\/+$/u, '');
55
52
  const name = normalized.split('/').filter(Boolean).at(-1);
56
53
  return name ?? fallback;
57
54
  }
58
- function normalizeCwd(cwd) {
59
- return cwd.replaceAll('\\', '/').replace(/\/+$/u, '').toLocaleLowerCase();
60
- }
61
55
  function formatDate(value) {
62
56
  if (value === undefined || value === '')
63
57
  return '';
@@ -67,9 +61,7 @@ function formatDate(value) {
67
61
  function iconRefresh() {
68
62
  return h('svg', { width: 16, height: 16, viewBox: '0 0 16 16', 'aria-hidden': true }, h('path', { d: 'M13 4.8A5.5 5.5 0 1 0 13.5 9', fill: 'none', stroke: 'currentColor', strokeWidth: 1.4, strokeLinecap: 'round' }), h('path', { d: 'M10.8 2.8h2.8v2.8', fill: 'none', stroke: 'currentColor', strokeWidth: 1.4, strokeLinecap: 'round', strokeLinejoin: 'round' }));
69
63
  }
70
- function MemorySection({ t, sessions }) {
71
- const sessionList = useSnapshot(sessions.list);
72
- const currentCwd = sessionList.current === undefined ? '' : sessionList.byId[sessionList.current]?.cwd ?? '';
64
+ function MemorySection({ t }) {
73
65
  const [scopes, setScopes] = useState([]);
74
66
  const [selectedKey, setSelectedKey] = useState('global');
75
67
  const [payload, setPayload] = useState();
@@ -95,7 +87,7 @@ function MemorySection({ t, sessions }) {
95
87
  try {
96
88
  const nextScopes = await loadScopes();
97
89
  setScopes(nextScopes);
98
- const next = await loadScope(cwd ?? payload?.scope.cwd ?? currentCwd);
90
+ const next = await loadScope(cwd ?? payload?.scope.cwd ?? '');
99
91
  setPayload(next);
100
92
  setSelectedKey(next.scope.key);
101
93
  }
@@ -107,37 +99,14 @@ function MemorySection({ t, sessions }) {
107
99
  }
108
100
  };
109
101
  useEffect(() => {
110
- void reload(currentCwd);
111
- // The initial project follows the current session; later changes are user-selected.
102
+ void reload();
103
+ // Memory browsing is independent from the currently open session.
112
104
  // eslint-disable-next-line react-hooks/exhaustive-deps
113
105
  }, []);
114
106
  const options = useMemo(() => {
115
107
  const known = new Map(scopes.map(scope => [scope.key, scope]));
116
- if (payload !== undefined && !known.has(payload.scope.key)) {
117
- known.set(payload.scope.key, {
118
- key: payload.scope.key,
119
- cwd: payload.scope.cwd,
120
- kind: payload.scope.kind,
121
- entryCount: payload.entries.length,
122
- hasSummary: payload.summary.trim() !== '',
123
- pending: payload.state.pending,
124
- checkpointCount: payload.state.checkpointCount,
125
- });
126
- }
127
- const currentKey = `current:${currentCwd.toLocaleLowerCase()}`;
128
- if (currentCwd !== '' && !known.has(currentKey) && ![...known.values()].some(scope => normalizeCwd(scope.cwd) === normalizeCwd(currentCwd))) {
129
- known.set(currentKey, {
130
- key: currentKey,
131
- cwd: currentCwd,
132
- kind: 'workspace',
133
- entryCount: 0,
134
- hasSummary: false,
135
- pending: 0,
136
- checkpointCount: 0,
137
- });
138
- }
139
108
  return [...known.values()];
140
- }, [scopes, currentCwd, payload]);
109
+ }, [scopes]);
141
110
  const filteredEntries = useMemo(() => {
142
111
  const normalized = query.trim().toLocaleLowerCase();
143
112
  if (normalized === '')
@@ -162,14 +131,14 @@ function MemorySection({ t, sessions }) {
162
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', {
163
132
  type: 'button', title: t('refresh'), 'aria-label': t('refresh'), onClick: () => { void reload(); },
164
133
  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' },
165
- }, iconRefresh())), h('div', { style: { display: 'grid', gap: 8, marginBottom: 18 } }, h('label', { style: { color: colors.secondary, fontSize: 12 } }, t('current')), h('select', {
134
+ }, iconRefresh())), h('div', { style: { display: 'grid', gap: 8, marginBottom: 18 } }, h('label', { style: { color: colors.secondary, fontSize: 12 } }, t('scope')), h('select', {
166
135
  value: selectedKey, onChange: (event) => { onSelect(event.target.value); },
167
136
  style: { minHeight: 38, padding: '0 10px', color: colors.text, background: colors.surface, border: `1px solid ${colors.border}`, borderRadius: 6 },
168
137
  }, options.length === 0
169
138
  ? h('option', { value: '' }, t('emptyScopes'))
170
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)}`))))));
171
140
  }
172
- export const inject = ['slots', 'locale', 'sessions'];
141
+ export const inject = ['slots', 'locale'];
173
142
  export function apply(ctx) {
174
143
  ctx.effect(() => ctx.locale.register(NS, { zh, en }), 'workspace-memory: dictionaries');
175
144
  const translate = ctx.locale.bind(NS);
@@ -183,6 +152,6 @@ export function apply(ctx) {
183
152
  order: 50,
184
153
  label: () => t('nav'),
185
154
  locale: NS,
186
- }, () => h(MemorySection, { t, sessions: ctx.sessions })));
155
+ }, () => h(MemorySection, { t })));
187
156
  }
188
157
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAC1E,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,MAAM,OAAO,CAAA;AAI1C,MAAM,EAAE,GAAG,kBAAkB,CAAA;AAE7B,MAAM,EAAE,GAAG;IACT,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,MAAM;IACd,SAAS,EAAE,MAAM;IACjB,OAAO,EAAE,MAAM;IACf,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,MAAM;IACd,iBAAiB,EAAE,YAAY;IAC/B,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,MAAM;IACnB,OAAO,EAAE,MAAM;IACf,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,GAAG;CACX,CAAA;AAED,MAAM,EAAE,GAAG;IACT,GAAG,EAAE,QAAQ;IACb,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,eAAe;IACvB,SAAS,EAAE,gBAAgB;IAC3B,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,kCAAkC;IAC/C,OAAO,EAAE,gBAAgB;IACzB,OAAO,EAAE,mBAAmB;IAC5B,MAAM,EAAE,eAAe;IACvB,iBAAiB,EAAE,gCAAgC;IACnD,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,4BAA4B;IACvC,OAAO,EAAE,UAAU;IACnB,MAAM,EAAE,uBAAuB;IAC/B,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,cAAc;IACvB,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,EAAE;CACV,CAAA;AA6DD,SAAS,WAAW,CAAI,MAAmB;IACzC,OAAO,oBAAoB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAA;AACvF,CAAC;AAED,SAAS,aAAa,CAAC,GAAW,EAAE,QAAgB;IAClD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IACjE,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACzD,OAAO,IAAI,IAAI,QAAQ,CAAA;AACzB,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAA;AAC3E,CAAC;AAED,SAAS,UAAU,CAAC,KAAyB;IAC3C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,EAAE,CAAA;IAClD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5B,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,KAAK,CAAA;AACxE,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,EAClF,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,8BAA8B,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAChI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAC/I,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAiF;IACnH,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,CAAA;IAC5G,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAc,EAAE,CAAC,CAAA;IACrD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACxD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAA4B,CAAA;IAClE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IACtC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC5C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEzC,MAAM,UAAU,GAAG,KAAK,IAA0B,EAAE;QAClD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iCAAiC,CAAC,CAAA;QAC/D,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;QAC3E,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA8B,CAAA;QAChE,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1D,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,KAAK,EAAE,GAAW,EAAyB,EAAE;QAC7D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,sCAAsC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC7F,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;QAC3E,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAkB,CAAA;IAC9C,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,KAAK,EAAE,GAAY,EAAiB,EAAE;QACnD,UAAU,CAAC,IAAI,CAAC,CAAA;QAChB,QAAQ,CAAC,KAAK,CAAC,CAAA;QACf,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,UAAU,EAAE,CAAA;YACrC,SAAS,CAAC,UAAU,CAAC,CAAA;YACrB,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,OAAO,EAAE,KAAK,CAAC,GAAG,IAAI,UAAU,CAAC,CAAA;YACrE,UAAU,CAAC,IAAI,CAAC,CAAA;YAChB,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,IAAI,CAAC,CAAA;QAChB,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;IACH,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,MAAM,CAAC,UAAU,CAAC,CAAA;QACvB,oFAAoF;QACpF,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3B,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3D,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC3B,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG;gBACtB,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG;gBACtB,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI;gBACxB,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;gBAClC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;gBACzC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO;gBAC9B,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe;aAC/C,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,UAAU,GAAG,WAAW,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAA;QAC9D,IAAI,UAAU,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YAC5I,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE;gBACpB,GAAG,EAAE,UAAU;gBACf,GAAG,EAAE,UAAU;gBACf,IAAI,EAAE,WAAW;gBACjB,UAAU,EAAE,CAAC;gBACb,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,CAAC;gBACV,eAAe,EAAE,CAAC;aACnB,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;IAC5B,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;IAEjC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE;QACnC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAA;QACnD,IAAI,UAAU,KAAK,EAAE;YAAE,OAAO,OAAO,EAAE,OAAO,IAAI,EAAE,CAAA;QACpD,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;aAC3G,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAA;IACxD,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;IAEpB,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAQ,EAAE;QACrC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,CAAA;QACvD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAM;QAChC,cAAc,CAAC,GAAG,CAAC,CAAA;QACnB,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC,CAAA;IAED,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,uCAAuC;QAC7C,SAAS,EAAE,yCAAyC;QACpD,MAAM,EAAE,+CAA+C;QACvD,OAAO,EAAE,sDAAsD;QAC/D,MAAM,EAAE,kCAAkC;KAC3C,CAAA;IAED,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,EACrF,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,EAC9H,CAAC,CAAC,KAAK,EAAE,IAAI,EACX,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAC5E,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAC3I,EACD,CAAC,CAAC,QAAQ,EAAE;QACV,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,EAAE,CAAA,CAAC,CAAC;QACjG,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,MAAM,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE;KAClO,EAAE,WAAW,EAAE,CAAC,CAClB,EACD,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,EAC/D,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAC9E,CAAC,CAAC,QAAQ,EAAE;QACV,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,KAAY,EAAE,EAAE,GAAG,QAAQ,CAAE,KAAK,CAAC,MAAuC,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC;QAClH,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,MAAM,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE;KACnJ,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;QACrB,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;QAC9C,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAC5J,CACF,EACD,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,MAAM,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAC1N,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAC5B,CAAC,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,EAAE,CAAA,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CACxK,EACD,OAAO,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EACvE,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EACpE,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EACvG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAC/D,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,EAClE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,OAAO,EAAE,KAAK,CAAC,eAAe,IAAI,CAAC,EAAE,CAAC,CAC/E,EACD,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,aAAa,MAAM,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,EACxH,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EACtE,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAC3L,EACD,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAC9C,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EACrG,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,eAAe,CAAC,MAAM,GAAG,CAAC,EAC9F,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAY,EAAE,EAAE,GAAG,QAAQ,CAAE,KAAK,CAAC,MAAuC,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,MAAM,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5X,EACD,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EACzG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,aAAa,MAAM,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,EAC7K,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAC5F,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,EACrD,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAC5E,EACD,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,EACnJ,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAC3H,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CACjK,CAAC,CACH,CACF,CACF,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;AAErD,MAAM,UAAU,KAAK,CAAC,GAAwB;IAC5C,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,gCAAgC,CAAC,CAAA;IACvF,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACrC,MAAM,CAAC,GAAG,CAAC,GAAoB,EAAU,EAAE;QACzC,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;QACjC,OAAO,UAAU,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC,CAAA;IACD,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC5D,IAAI,EAAE,kBAAkB;QACxB,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACrB,MAAM,EAAE,EAAE;KACX,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;AAC5D,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"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"}
package/lib/client.js CHANGED
@@ -13,7 +13,7 @@ window.__ModuleLoader__.load({
13
13
  refresh: "刷新",
14
14
  global: "全局记忆",
15
15
  workspace: "项目记忆",
16
- current: "当前项目",
16
+ scope: "选择记忆范围",
17
17
  emptyScopes: "还没有已记录的项目记忆",
18
18
  summary: "摘要记忆",
19
19
  entries: "结构化记忆",
@@ -36,7 +36,7 @@ window.__ModuleLoader__.load({
36
36
  refresh: "Refresh",
37
37
  global: "Global memory",
38
38
  workspace: "Project memory",
39
- current: "Current project",
39
+ scope: "Memory scope",
40
40
  emptyScopes: "No project memories recorded yet",
41
41
  summary: "Summary memory",
42
42
  entries: "Structured memory",
@@ -53,15 +53,9 @@ window.__ModuleLoader__.load({
53
53
  all: "All",
54
54
  count: ""
55
55
  };
56
- function useSnapshot(source) {
57
- return (0, react.useSyncExternalStore)(source.subscribe, source.getSnapshot, source.getSnapshot);
58
- }
59
56
  function workspaceName(cwd, fallback) {
60
57
  return cwd.replaceAll("\\", "/").replace(/\/+$/u, "").split("/").filter(Boolean).at(-1) ?? fallback;
61
58
  }
62
- function normalizeCwd(cwd) {
63
- return cwd.replaceAll("\\", "/").replace(/\/+$/u, "").toLocaleLowerCase();
64
- }
65
59
  function formatDate(value) {
66
60
  if (value === void 0 || value === "") return "";
67
61
  const date = new Date(value);
@@ -88,9 +82,7 @@ window.__ModuleLoader__.load({
88
82
  strokeLinejoin: "round"
89
83
  }));
90
84
  }
91
- function MemorySection({ t, sessions }) {
92
- const sessionList = useSnapshot(sessions.list);
93
- const currentCwd = sessionList.current === void 0 ? "" : sessionList.byId[sessionList.current]?.cwd ?? "";
85
+ function MemorySection({ t }) {
94
86
  const [scopes, setScopes] = (0, react.useState)([]);
95
87
  const [selectedKey, setSelectedKey] = (0, react.useState)("global");
96
88
  const [payload, setPayload] = (0, react.useState)();
@@ -114,7 +106,7 @@ window.__ModuleLoader__.load({
114
106
  try {
115
107
  const nextScopes = await loadScopes();
116
108
  setScopes(nextScopes);
117
- const next = await loadScope(cwd ?? payload?.scope.cwd ?? currentCwd);
109
+ const next = await loadScope(cwd ?? payload?.scope.cwd ?? "");
118
110
  setPayload(next);
119
111
  setSelectedKey(next.scope.key);
120
112
  } catch {
@@ -124,35 +116,11 @@ window.__ModuleLoader__.load({
124
116
  }
125
117
  };
126
118
  (0, react.useEffect)(() => {
127
- reload(currentCwd);
119
+ reload();
128
120
  }, []);
129
121
  const options = (0, react.useMemo)(() => {
130
- const known = new Map(scopes.map((scope) => [scope.key, scope]));
131
- if (payload !== void 0 && !known.has(payload.scope.key)) known.set(payload.scope.key, {
132
- key: payload.scope.key,
133
- cwd: payload.scope.cwd,
134
- kind: payload.scope.kind,
135
- entryCount: payload.entries.length,
136
- hasSummary: payload.summary.trim() !== "",
137
- pending: payload.state.pending,
138
- checkpointCount: payload.state.checkpointCount
139
- });
140
- const currentKey = `current:${currentCwd.toLocaleLowerCase()}`;
141
- if (currentCwd !== "" && !known.has(currentKey) && ![...known.values()].some((scope) => normalizeCwd(scope.cwd) === normalizeCwd(currentCwd))) known.set(currentKey, {
142
- key: currentKey,
143
- cwd: currentCwd,
144
- kind: "workspace",
145
- entryCount: 0,
146
- hasSummary: false,
147
- pending: 0,
148
- checkpointCount: 0
149
- });
150
- return [...known.values()];
151
- }, [
152
- scopes,
153
- currentCwd,
154
- payload
155
- ]);
122
+ return [...new Map(scopes.map((scope) => [scope.key, scope])).values()];
123
+ }, [scopes]);
156
124
  const filteredEntries = (0, react.useMemo)(() => {
157
125
  const normalized = query.trim().toLocaleLowerCase();
158
126
  if (normalized === "") return payload?.entries ?? [];
@@ -221,7 +189,7 @@ window.__ModuleLoader__.load({
221
189
  } }, (0, react.createElement)("label", { style: {
222
190
  color: colors.secondary,
223
191
  fontSize: 12
224
- } }, t("current")), (0, react.createElement)("select", {
192
+ } }, t("scope")), (0, react.createElement)("select", {
225
193
  value: selectedKey,
226
194
  onChange: (event) => {
227
195
  onSelect(event.target.value);
@@ -348,11 +316,7 @@ window.__ModuleLoader__.load({
348
316
  fontSize: 11
349
317
  } }, `${t("updated")}: ${formatDate(entry.updatedAt)}`))))));
350
318
  }
351
- const inject = [
352
- "slots",
353
- "locale",
354
- "sessions"
355
- ];
319
+ const inject = ["slots", "locale"];
356
320
  function apply(ctx) {
357
321
  ctx.effect(() => ctx.locale.register(NS, {
358
322
  zh,
@@ -368,10 +332,7 @@ window.__ModuleLoader__.load({
368
332
  order: 50,
369
333
  label: () => t("nav"),
370
334
  locale: NS
371
- }, () => (0, react.createElement)(MemorySection, {
372
- t,
373
- sessions: ctx.sessions
374
- })));
335
+ }, () => (0, react.createElement)(MemorySection, { t })));
375
336
  }
376
337
  //#endregion
377
338
  exports.apply = apply;
package/lib/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","names":["useSyncExternalStore","h","useState","useMemo"],"sources":["../src/client/index.tsx"],"sourcesContent":["import { useEffect, useMemo, useState, useSyncExternalStore } from 'react'\nimport { createElement as h } from 'react'\nimport type { SettingsSectionOwnerProps } from '@deepseek-ai/dsh-client-ui-settings/client'\nimport type { SessionListState } from '@deepseek-ai/dsh-client-runtime/client'\n\nconst NS = 'workspace-memory'\n\nconst zh = {\n nav: '记忆',\n title: '记忆',\n refresh: '刷新',\n global: '全局记忆',\n workspace: '项目记忆',\n current: '当前项目',\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 current: 'Current project',\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 Snapshot<T> {\n getSnapshot(): T\n subscribe(listener: () => void): () => void\n}\n\ninterface SessionsLike {\n list: Snapshot<SessionListState>\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 sessions: SessionsLike\n}\n\nfunction useSnapshot<T>(source: Snapshot<T>): T {\n return useSyncExternalStore(source.subscribe, source.getSnapshot, source.getSnapshot)\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 normalizeCwd(cwd: string): string {\n return cwd.replaceAll('\\\\', '/').replace(/\\/+$/u, '').toLocaleLowerCase()\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, sessions }: { t: Translate; sessions: SessionsLike } & Partial<SettingsSectionOwnerProps>) {\n const sessionList = useSnapshot(sessions.list)\n const currentCwd = sessionList.current === undefined ? '' : sessionList.byId[sessionList.current]?.cwd ?? ''\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 ?? currentCwd)\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(currentCwd)\n // The initial project follows the current session; later changes are user-selected.\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 if (payload !== undefined && !known.has(payload.scope.key)) {\n known.set(payload.scope.key, {\n key: payload.scope.key,\n cwd: payload.scope.cwd,\n kind: payload.scope.kind,\n entryCount: payload.entries.length,\n hasSummary: payload.summary.trim() !== '',\n pending: payload.state.pending,\n checkpointCount: payload.state.checkpointCount,\n })\n }\n const currentKey = `current:${currentCwd.toLocaleLowerCase()}`\n if (currentCwd !== '' && !known.has(currentKey) && ![...known.values()].some(scope => normalizeCwd(scope.cwd) === normalizeCwd(currentCwd))) {\n known.set(currentKey, {\n key: currentKey,\n cwd: currentCwd,\n kind: 'workspace',\n entryCount: 0,\n hasSummary: false,\n pending: 0,\n checkpointCount: 0,\n })\n }\n return [...known.values()]\n }, [scopes, currentCwd, payload])\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('current')),\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', 'sessions']\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, sessions: ctx.sessions })))\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 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,11 +1,3 @@
1
- import type { SessionListState } from '@deepseek-ai/dsh-client-runtime/client';
2
- interface Snapshot<T> {
3
- getSnapshot(): T;
4
- subscribe(listener: () => void): () => void;
5
- }
6
- interface SessionsLike {
7
- list: Snapshot<SessionListState>;
8
- }
9
1
  interface SlotsLike {
10
2
  inject(slot: string, register: () => unknown): void;
11
3
  register(options: Record<string, unknown>, component: () => unknown): unknown;
@@ -21,7 +13,6 @@ interface MemoryClientContext {
21
13
  effect(callback: () => unknown, label?: string): void;
22
14
  slots: SlotsLike;
23
15
  locale: LocaleLike;
24
- sessions: SessionsLike;
25
16
  }
26
17
  export declare const inject: string[];
27
18
  export declare function apply(ctx: MemoryClientContext): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAqF9E,UAAU,QAAQ,CAAC,CAAC;IAClB,WAAW,IAAI,CAAC,CAAA;IAChB,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAC5C;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAA;CACjC;AAED,UAAU,SAAS;IACjB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,GAAG,IAAI,CAAA;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,GAAG,OAAO,CAAA;CAC9E;AAED,UAAU,UAAU;IAClB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,OAAO,CAAA;IAC9G,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;CACjD;AAED,UAAU,mBAAmB;IAC3B,MAAM,CAAC,QAAQ,EAAE,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrD,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,EAAE,UAAU,CAAA;IAClB,QAAQ,EAAE,YAAY,CAAA;CACvB;AAoLD,eAAO,MAAM,MAAM,UAAkC,CAAA;AAErD,wBAAgB,KAAK,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAcpD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.tsx"],"names":[],"mappings":"AAuFA,UAAU,SAAS;IACjB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,GAAG,IAAI,CAAA;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,GAAG,OAAO,CAAA;CAC9E;AAED,UAAU,UAAU;IAClB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,OAAO,CAAA;IAC9G,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;CACjD;AAED,UAAU,mBAAmB;IAC3B,MAAM,CAAC,QAAQ,EAAE,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrD,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,EAAE,UAAU,CAAA;CACnB;AAmJD,eAAO,MAAM,MAAM,UAAsB,CAAA;AAEzC,wBAAgB,KAAK,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAcpD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowingspring/dsh-workspace-memory",
3
- "version": "0.2.5",
3
+ "version": "0.2.6",
4
4
  "description": "Workspace-scoped durable memory for DeepSeek Harness and optional voice integrations",
5
5
  "repository": {
6
6
  "type": "git",