dsh-daoing-memory 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +91 -0
  3. package/README.zh-CN.md +91 -0
  4. package/cordis.patch.yml +22 -0
  5. package/lib/client.js +10339 -0
  6. package/lib/client.js.map +1 -0
  7. package/lib/index.js +3138 -0
  8. package/lib/invariant.js +33 -0
  9. package/lib/tools.js +1472 -0
  10. package/lib/typert.host.d.ts +3 -0
  11. package/lib/typert.host.js +4058 -0
  12. package/lib/typert.remote-client.d.ts +149 -0
  13. package/lib/typert.remote-client.d.ts.map +1 -0
  14. package/lib/typert.remote-client.js +3167 -0
  15. package/lib/types/client/ExperiencePage.d.ts +15 -0
  16. package/lib/types/client/ExperiencePage.d.ts.map +1 -0
  17. package/lib/types/client/ExperiencePage.js +117 -0
  18. package/lib/types/client/ExperiencePage.js.map +1 -0
  19. package/lib/types/client/FactDiaryPage.d.ts +17 -0
  20. package/lib/types/client/FactDiaryPage.d.ts.map +1 -0
  21. package/lib/types/client/FactDiaryPage.js +155 -0
  22. package/lib/types/client/FactDiaryPage.js.map +1 -0
  23. package/lib/types/client/HumanOpsPage.d.ts +16 -0
  24. package/lib/types/client/HumanOpsPage.d.ts.map +1 -0
  25. package/lib/types/client/HumanOpsPage.js +208 -0
  26. package/lib/types/client/HumanOpsPage.js.map +1 -0
  27. package/lib/types/client/LedgerPage.d.ts +13 -0
  28. package/lib/types/client/LedgerPage.d.ts.map +1 -0
  29. package/lib/types/client/LedgerPage.js +113 -0
  30. package/lib/types/client/LedgerPage.js.map +1 -0
  31. package/lib/types/client/MemoryNavSection.d.ts +20 -0
  32. package/lib/types/client/MemoryNavSection.d.ts.map +1 -0
  33. package/lib/types/client/MemoryNavSection.js +23 -0
  34. package/lib/types/client/MemoryNavSection.js.map +1 -0
  35. package/lib/types/client/Workbench.d.ts +23 -0
  36. package/lib/types/client/Workbench.d.ts.map +1 -0
  37. package/lib/types/client/Workbench.js +140 -0
  38. package/lib/types/client/Workbench.js.map +1 -0
  39. package/lib/types/client/actions.d.ts +165 -0
  40. package/lib/types/client/actions.d.ts.map +1 -0
  41. package/lib/types/client/actions.js +51 -0
  42. package/lib/types/client/actions.js.map +1 -0
  43. package/lib/types/client/index.d.ts +24 -0
  44. package/lib/types/client/index.d.ts.map +1 -0
  45. package/lib/types/client/index.js +103 -0
  46. package/lib/types/client/index.js.map +1 -0
  47. package/lib/types/client/navStore.d.ts +45 -0
  48. package/lib/types/client/navStore.d.ts.map +1 -0
  49. package/lib/types/client/navStore.js +36 -0
  50. package/lib/types/client/navStore.js.map +1 -0
  51. package/lib/types/core.d.ts +195 -0
  52. package/lib/types/core.d.ts.map +1 -0
  53. package/lib/types/core.js +1304 -0
  54. package/lib/types/core.js.map +1 -0
  55. package/lib/types/index.d.ts +71 -0
  56. package/lib/types/index.d.ts.map +1 -0
  57. package/lib/types/index.js +97 -0
  58. package/lib/types/index.js.map +1 -0
  59. package/lib/types/invariant.d.ts +21 -0
  60. package/lib/types/invariant.d.ts.map +1 -0
  61. package/lib/types/invariant.js +33 -0
  62. package/lib/types/invariant.js.map +1 -0
  63. package/lib/types/service.d.ts +130 -0
  64. package/lib/types/service.d.ts.map +1 -0
  65. package/lib/types/service.js +417 -0
  66. package/lib/types/service.js.map +1 -0
  67. package/lib/types/store.d.ts +244 -0
  68. package/lib/types/store.d.ts.map +1 -0
  69. package/lib/types/store.js +864 -0
  70. package/lib/types/store.js.map +1 -0
  71. package/lib/types/tools.d.ts +25 -0
  72. package/lib/types/tools.d.ts.map +1 -0
  73. package/lib/types/tools.js +1144 -0
  74. package/lib/types/tools.js.map +1 -0
  75. package/lib/types/types.d.ts +836 -0
  76. package/lib/types/types.d.ts.map +1 -0
  77. package/lib/types/types.js +8 -0
  78. package/lib/types/types.js.map +1 -0
  79. package/package.json +106 -0
  80. package/skill/memory-extraction.md +62 -0
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Experience library monitoring page: lifecycle counters, a filterable
3
+ * revision list with the Beta-posterior triple, expandable judgment context,
4
+ * family revision history, and the human verbs (pin/promote/rollback/delete).
5
+ */
6
+ import type { MemoryWorkbenchActions } from './actions.ts';
7
+ export interface ExperiencePageProps {
8
+ /** The injected memory callbacks. */
9
+ actions: MemoryWorkbenchActions;
10
+ /** Called after any mutation so the header stats refresh. */
11
+ onChanged: () => void;
12
+ }
13
+ /** The experience library monitoring page. */
14
+ export declare function ExperiencePage({ actions, onChanged }: ExperiencePageProps): React.ReactElement;
15
+ //# sourceMappingURL=ExperiencePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExperiencePage.d.ts","sourceRoot":"","sources":["../../../src/client/ExperiencePage.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAsC1D,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,OAAO,EAAE,sBAAsB,CAAA;IAC/B,6DAA6D;IAC7D,SAAS,EAAE,MAAM,IAAI,CAAA;CACtB;AAED,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,mBAAmB,GAAG,KAAK,CAAC,YAAY,CAsM9F"}
@@ -0,0 +1,117 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * Experience library monitoring page: lifecycle counters, a filterable
4
+ * revision list with the Beta-posterior triple, expandable judgment context,
5
+ * family revision history, and the human verbs (pin/promote/rollback/delete).
6
+ */
7
+ import { useCallback, useEffect, useState } from 'react';
8
+ import { formatTs, promptReason } from "./Workbench.js";
9
+ import css from './Workbench.module.css';
10
+ const STATUS_LABELS = {
11
+ candidate: '候选',
12
+ live: '生效',
13
+ challenged: '已隔离',
14
+ superseded: '已取代',
15
+ archived: '已归档',
16
+ cold: '冷宫',
17
+ };
18
+ const KIND_LABELS = {
19
+ positive: '正经验',
20
+ negative: '负经验',
21
+ };
22
+ function statusClass(status) {
23
+ switch (status) {
24
+ case 'live': return css.statusLive;
25
+ case 'candidate': return css.statusCandidate;
26
+ case 'challenged': return css.statusChallenged;
27
+ case 'cold': return css.statusChallenged;
28
+ default: return css.statusOther;
29
+ }
30
+ }
31
+ /** Trust triple render: (置信度, 样本数, 最近验证时间). */
32
+ function TrustTriple({ e }) {
33
+ const last = e.lastVerifiedAt === undefined ? '从未验证' : formatTs(e.lastVerifiedAt);
34
+ return (_jsxs("span", { className: css.trust, title: `加权置信 ${e.weightedTrust.toFixed(3)}`, children: ["\u7F6E\u4FE1 ", e.trust.toFixed(2), " \u00B7 \u6837\u672C ", String(e.samples), " \u00B7 \u6700\u8FD1\u9A8C\u8BC1 ", last] }));
35
+ }
36
+ /** The experience library monitoring page. */
37
+ export function ExperiencePage({ actions, onChanged }) {
38
+ const [statusFilter, setStatusFilter] = useState('');
39
+ const [kindFilter, setKindFilter] = useState('');
40
+ const [familyFilter, setFamilyFilter] = useState('');
41
+ const [contextFilter, setContextFilter] = useState('');
42
+ const [items, setItems] = useState([]);
43
+ const [expanded, setExpanded] = useState(null);
44
+ const [history, setHistory] = useState([]);
45
+ const [error, setError] = useState(null);
46
+ const refresh = useCallback(() => {
47
+ const filter = {};
48
+ if (statusFilter !== '')
49
+ filter.status = statusFilter;
50
+ if (kindFilter !== '')
51
+ filter.kind = kindFilter;
52
+ if (familyFilter.trim() !== '')
53
+ filter.family = familyFilter.trim();
54
+ if (contextFilter.trim() !== '')
55
+ filter.context = contextFilter.trim();
56
+ void actions.listExperiences(filter).then(setItems).catch((e) => {
57
+ setError(e instanceof Error ? e.message : String(e));
58
+ });
59
+ }, [actions, statusFilter, kindFilter, familyFilter, contextFilter]);
60
+ useEffect(() => { refresh(); }, [refresh]);
61
+ const toggleExpand = useCallback((item) => {
62
+ const key = `${item.id}@${String(item.revision)}`;
63
+ if (expanded === key) {
64
+ setExpanded(null);
65
+ setHistory([]);
66
+ return;
67
+ }
68
+ setExpanded(key);
69
+ void actions.family(item.id).then(setHistory).catch(() => { setHistory([]); });
70
+ }, [actions, expanded]);
71
+ const runPin = useCallback(async (item) => {
72
+ const reason = promptReason(item.pinned ? '取消永久标记' : '永久标记(置顶信任,豁免预算)');
73
+ if (reason === undefined)
74
+ return;
75
+ await actions.humanPin({ id: item.id, pinned: !item.pinned, reason });
76
+ refresh();
77
+ onChanged();
78
+ }, [actions, onChanged, refresh]);
79
+ const runPromote = useCallback(async (item) => {
80
+ const reason = promptReason('人工转正(候选 → 生效,V2 人工权威)');
81
+ if (reason === undefined)
82
+ return;
83
+ await actions.humanPromote(item.id, reason);
84
+ refresh();
85
+ onChanged();
86
+ }, [actions, onChanged, refresh]);
87
+ const runReleaseCold = useCallback(async (item) => {
88
+ const reason = promptReason('从冷宫放回候选(可再次被试探验证)');
89
+ if (reason === undefined)
90
+ return;
91
+ await actions.humanReleaseCold({ id: item.id, reason });
92
+ refresh();
93
+ onChanged();
94
+ }, [actions, onChanged, refresh]);
95
+ const runDelete = useCallback(async (item) => {
96
+ const reason = promptReason(`删除经验「${item.gist.slice(0, 24)}」(指纹保留在账本)`);
97
+ if (reason === undefined)
98
+ return;
99
+ await actions.humanDeleteExperience({ id: item.id, reason });
100
+ refresh();
101
+ onChanged();
102
+ }, [actions, onChanged, refresh]);
103
+ const runRollback = useCallback(async (item, toRevision) => {
104
+ const reason = promptReason(`回滚到 v${String(toRevision)}`);
105
+ if (reason === undefined)
106
+ return;
107
+ await actions.humanRollback({ id: item.id, toRevision, reason });
108
+ refresh();
109
+ onChanged();
110
+ }, [actions, onChanged, refresh]);
111
+ return (_jsxs("div", { className: css.page, children: [_jsx("div", { className: css.empty, children: "\u7ECF\u9A8C\u5E93\u662F\u300C\u751F\u00B7\u7528\u00B7\u4FEE\u300D\u7684\u8F7D\u4F53\uFF1A\u4EE3\u7406\u5728\u590D\u6742\u4EFB\u52A1\u540E\u63D0\u70BC\u7ECF\u9A8C\uFF08\u751F\uFF09\uFF0C\u76F8\u4F3C\u4EFB\u52A1\u524D\u53EC\u56DE\u6CE8\u5165\uFF08\u7528\uFF09\uFF0C \u5931\u8D25\u540E\u9694\u79BB/\u4FEE\u8BA2/\u56DE\u6EDA\uFF08\u4FEE\uFF09\u3002\u6BCF\u6761\u7ECF\u9A8C\u5E26\u7F6E\u4FE1\u5EA6\u00B7\u6837\u672C\u6570\u00B7\u6700\u8FD1\u9A8C\u8BC1\u65F6\u95F4\u4E09\u5143\u7EC4\u3002" }), _jsxs("div", { className: css.toolbar, children: [_jsxs("label", { className: css.field, children: [_jsx("span", { children: "\u72B6\u6001" }), _jsxs("select", { value: statusFilter, onChange: e => { setStatusFilter(e.target.value); }, children: [_jsx("option", { value: "", children: "\u5168\u90E8" }), Object.entries(STATUS_LABELS).map(([value, label]) => (_jsx("option", { value: value, children: label }, value)))] })] }), _jsxs("label", { className: css.field, children: [_jsx("span", { children: "\u7C7B\u578B" }), _jsxs("select", { value: kindFilter, onChange: e => { setKindFilter(e.target.value); }, children: [_jsx("option", { value: "", children: "\u5168\u90E8" }), _jsx("option", { value: "positive", children: "\u6B63\u7ECF\u9A8C" }), _jsx("option", { value: "negative", children: "\u8D1F\u7ECF\u9A8C" })] })] }), _jsxs("label", { className: css.field, title: "\u4EFB\u52A1\u65CF = \u4E00\u7C7B\u76F8\u4F3C\u4EFB\u52A1\u7684\u5206\u7EC4\u6807\u7B7E\uFF0C\u540C\u65CF\u7ECF\u9A8C\u5171\u4EAB\u53EC\u56DE\u4E0E\u4FEE\u8BA2\u5386\u53F2\uFF0C\u5982 windows-build", children: [_jsx("span", { children: "\u4EFB\u52A1\u65CF" }), _jsx("input", { value: familyFilter, placeholder: "\u4E00\u7C7B\u4EFB\u52A1\u7684\u6807\u7B7E\uFF0C\u5982 windows-build", onChange: e => { setFamilyFilter(e.target.value); } })] }), _jsxs("label", { className: css.field, title: "\u4F5C\u7528\u57DF = \u8BE5\u7ECF\u9A8C\u9002\u7528\u7684\u9886\u57DF/\u4E0A\u4E0B\u6587\uFF1B\u7559\u7A7A\u53EC\u56DE\u6240\u6709\u4F5C\u7528\u57DF\uFF0C\u586B\u5199\u5219\u53EA\u53EC\u56DE\u540C\u4F5C\u7528\u57DF\u6216\u5168\u5C40\u7ECF\u9A8C", children: [_jsx("span", { children: "\u4F5C\u7528\u57DF" }), _jsx("input", { value: contextFilter, placeholder: "\u9886\u57DF\u4F5C\u7528\u57DF\uFF0C\u5982 coding-windows-build", onChange: e => { setContextFilter(e.target.value); } })] }), _jsx("button", { type: "button", className: css.btn, onClick: refresh, children: "\u5237\u65B0" }), error !== null && _jsx("span", { className: css.error, children: error })] }), items.length === 0 && _jsx("div", { className: css.empty, children: "\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u7ECF\u9A8C\u3002\u7ECF\u9A8C\u7531\u4EE3\u7406\u5728\u590D\u6742\u4EFB\u52A1\u540E\u63D0\u70BC\uFF08memory_refine\uFF09\uFF0C\u6216\u5728\u300C\u4EBA\u5DE5\u7BA1\u7406\u300D\u4E2D\u6CE8\u5165\u3002" }), _jsx("div", { className: css.list, children: items.map((item) => {
112
+ const key = `${item.id}@${String(item.revision)}`;
113
+ const isOpen = expanded === key;
114
+ return (_jsxs("div", { className: css.card, children: [_jsxs("div", { className: css.cardHead, onClick: () => { toggleExpand(item); }, children: [_jsx("span", { className: `${css.badge} ${statusClass(item.status)}`, children: STATUS_LABELS[item.status] ?? item.status }), _jsx("span", { className: `${css.badge} ${item.kind === 'negative' ? css.badgeNegative : css.badgePositive}`, children: KIND_LABELS[item.kind] ?? item.kind }), _jsx("span", { className: css.cardTitle, title: item.gist, children: item.gist }), item.pinned && _jsx("span", { className: `${css.badge} ${css.badgePinned}`, children: "\u6C38\u4E45" }), item.globalFlag && _jsx("span", { className: `${css.badge} ${css.badgePinned}`, title: "\u5168\u5C40\u4F5C\u7528\u57DF\uFF1A\u8DE8\u9886\u57DF\u53EF\u53EC\u56DE", children: "\u5168\u5C40" }), item.context !== '' && _jsx("span", { className: `${css.badge} ${css.badgePositive}`, title: `作用域:${item.context}`, children: item.context }), _jsxs("span", { className: css.cardMeta, children: ["v", String(item.revision), " \u00B7 ", item.family] })] }), _jsxs("div", { className: css.cardSub, children: [_jsx(TrustTriple, { e: item }), _jsxs("span", { className: css.cardMeta, title: "\u9A8C\u8BC1\u901A\u8FC7\u6B21\u6570 / \u8BD5\u63A2\u5931\u8D25\u6B21\u6570\uFF08\u4EBA\u5DE5\u8F6C\u6B63\u4E0E\u51B7\u5BAB\u51B3\u7B56\u4F9D\u636E\uFF09", children: ["\u9A8C ", String(item.verifiedCount), " \u00B7 \u62D2 ", String(item.rejectCount)] }), _jsx("span", { className: css.cardMeta, children: formatTs(item.updatedAt) })] }), isOpen && (_jsxs("div", { className: css.cardDetail, children: [item.challengeReason !== undefined && (_jsxs("div", { className: css.warnLine, children: ["\u9694\u79BB\u539F\u56E0\uFF1A", item.challengeReason] })), item.kind === 'negative' && item.failureReason !== undefined && (_jsxs("div", { className: css.warnLine, children: ["\u786E\u8BA4\u7684\u5931\u8D25\u539F\u56E0\uFF1A", item.failureReason] })), _jsxs("div", { className: css.detailRow, children: [_jsx("span", { className: css.detailLabel, children: "\u60C5\u5883" }), item.situation.join(';')] }), _jsxs("div", { className: css.detailRow, children: [_jsx("span", { className: css.detailLabel, children: "\u8DEF\u5F84" }), item.path.map(step => `${String(step.order)}. ${step.action}`).join(' → ')] }), _jsxs("div", { className: css.detailRow, children: [_jsx("span", { className: css.detailLabel, children: "\u5224\u65AD\u80CC\u666F" }), item.reasoning] }), item.limits.length > 0 && (_jsxs("div", { className: css.detailRow, children: [_jsx("span", { className: css.detailLabel, children: "\u9650\u5236" }), item.limits.join(';')] })), _jsxs("div", { className: css.detailRow, children: [_jsx("span", { className: css.detailLabel, children: "\u7ECF\u6D4E\u8D26" }), "\u8282\u7701 ", String(Math.round(item.tokensSaved)), " / \u6295\u5165 ", String(Math.round(item.tokensSpent)), " tokens"] }), _jsxs("div", { className: css.actions, children: [_jsx("button", { type: "button", className: css.btn, onClick: () => { void runPin(item); }, children: item.pinned ? '取消永久标记' : '永久标记' }), item.status === 'candidate' && (_jsx("button", { type: "button", className: css.btn, onClick: () => { void runPromote(item); }, children: "\u4EBA\u5DE5\u8F6C\u6B63" })), item.status === 'cold' && (_jsx("button", { type: "button", className: css.btn, onClick: () => { void runReleaseCold(item); }, children: "\u653E\u56DE\u5019\u9009" })), _jsx("button", { type: "button", className: `${css.btn} ${css.btnDanger}`, onClick: () => { void runDelete(item); }, children: "\u5220\u9664" })] }), _jsx("div", { className: css.historyTitle, children: "\u4FEE\u8BA2\u5386\u53F2\uFF08superseded \u4E3A\u53EA\u8BFB\u7D22\u5F15\uFF0C\u53EF\u56DE\u6EDA\uFF09" }), _jsxs("table", { className: css.table, children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "\u7248\u672C" }), _jsx("th", { children: "\u72B6\u6001" }), _jsx("th", { children: "\u7F6E\u4FE1\u4E09\u5143\u7EC4" }), _jsx("th", { children: "\u66F4\u65B0\u65F6\u95F4" }), _jsx("th", { children: "\u64CD\u4F5C" })] }) }), _jsx("tbody", { children: history.map(rev => (_jsxs("tr", { children: [_jsxs("td", { children: ["v", String(rev.revision), rev.parentRevision !== undefined ? ` ← v${String(rev.parentRevision)}` : ''] }), _jsx("td", { children: STATUS_LABELS[rev.status] ?? rev.status }), _jsxs("td", { children: [rev.trust.toFixed(2), " \u00B7 ", String(rev.samples), " \u00B7 ", rev.lastVerifiedAt === undefined ? '未验证' : formatTs(rev.lastVerifiedAt)] }), _jsx("td", { children: formatTs(rev.updatedAt) }), _jsx("td", { children: rev.status === 'superseded' && (_jsx("button", { type: "button", className: css.btn, onClick: () => { void runRollback(item, rev.revision); }, children: "\u56DE\u6EDA\u5230\u6B64\u7248" })) })] }, rev.revision))) })] })] }))] }, key));
115
+ }) })] }));
116
+ }
117
+ //# sourceMappingURL=ExperiencePage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExperiencePage.js","sourceRoot":"","sources":["../../../src/client/ExperiencePage.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Profile·concerns page, split into two sub-pages: 关心事项 (open-loop memos) /
3
+ * 画像分类 (the AI's perception of the user). The event-layer diary is the
4
+ * append-only raw material and is surfaced only as per-fact provenance (来源日记),
5
+ * not as its own browsing tab. Facts paginate server-side; concerns stay as an
6
+ * expandable tree. All human mutations go through the audited Remote callbacks.
7
+ */
8
+ import type { MemoryWorkbenchActions } from './actions.ts';
9
+ export interface FactDiaryPageProps {
10
+ /** The injected memory callbacks. */
11
+ actions: MemoryWorkbenchActions;
12
+ /** Called after any mutation so the header stats refresh. */
13
+ onChanged: () => void;
14
+ }
15
+ /** The profile·concerns page with two sub-pages (diary demoted to per-fact provenance). */
16
+ export declare function FactDiaryPage({ actions, onChanged }: FactDiaryPageProps): React.ReactElement;
17
+ //# sourceMappingURL=FactDiaryPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FactDiaryPage.d.ts","sourceRoot":"","sources":["../../../src/client/FactDiaryPage.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AA4E1D,MAAM,WAAW,kBAAkB;IACjC,qCAAqC;IACrC,OAAO,EAAE,sBAAsB,CAAA;IAC/B,6DAA6D;IAC7D,SAAS,EAAE,MAAM,IAAI,CAAA;CACtB;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,kBAAkB,GAAG,KAAK,CAAC,YAAY,CA0R5F"}
@@ -0,0 +1,155 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Profile·concerns page, split into two sub-pages: 关心事项 (open-loop memos) /
4
+ * 画像分类 (the AI's perception of the user). The event-layer diary is the
5
+ * append-only raw material and is surfaced only as per-fact provenance (来源日记),
6
+ * not as its own browsing tab. Facts paginate server-side; concerns stay as an
7
+ * expandable tree. All human mutations go through the audited Remote callbacks.
8
+ */
9
+ import { Fragment, useCallback, useEffect, useState } from 'react';
10
+ import { formatTs, promptReason } from "./Workbench.js";
11
+ import css from './Workbench.module.css';
12
+ const CATEGORY_LABELS = {
13
+ identity: '身份',
14
+ preference: '偏好',
15
+ communication: '沟通',
16
+ habit: '习惯',
17
+ thinking: '思维',
18
+ value: '价值观',
19
+ delegation: '委托',
20
+ background: '背景',
21
+ other: '其他·待裁决',
22
+ };
23
+ const CONCERN_KIND_LABELS = {
24
+ todo: '待办',
25
+ thinking: '思考',
26
+ idea: '想法',
27
+ question: '疑问',
28
+ decision: '决定',
29
+ commitment: '约定',
30
+ other: '其他',
31
+ };
32
+ const CONCERN_STATUS_LABELS = {
33
+ ongoing: '未闭环',
34
+ concluded: '已闭环',
35
+ recurring: '反复出现',
36
+ paused: '搁置',
37
+ };
38
+ const DIARY_KIND_LABELS = {
39
+ said: '用户说',
40
+ delegated: '委托',
41
+ promised: '承诺',
42
+ happened: '事件',
43
+ preference: '偏好变化',
44
+ other: '其他',
45
+ };
46
+ /** The sub-pages under 画像·日记: open-loop concern memos + user-perception profile. Diary demoted to provenance. */
47
+ const TABS = [
48
+ { key: 'concerns', label: '关心事项' },
49
+ { key: 'facts', label: '画像分类' },
50
+ ];
51
+ /** Shared page-size choices for the paginated sub-pages. */
52
+ function PageSizeSelect({ value, onChange }) {
53
+ return (_jsxs("label", { className: css.field, children: [_jsx("span", { children: "\u6BCF\u9875" }), _jsxs("select", { value: String(value), onChange: e => { onChange(Number(e.target.value)); }, children: [_jsx("option", { value: "10", children: "10" }), _jsx("option", { value: "20", children: "20" }), _jsx("option", { value: "50", children: "50" })] })] }));
54
+ }
55
+ /** Compact prev/next pager with a filtered total. */
56
+ function Pager({ page, pageSize, total, onPage }) {
57
+ const totalPages = Math.max(1, Math.ceil(total / pageSize));
58
+ return (_jsxs("div", { className: css.toolbar, children: [_jsx("button", { type: "button", className: css.btn, disabled: page <= 0, onClick: () => { onPage(page - 1); }, children: "\u4E0A\u4E00\u9875" }), _jsxs("span", { className: css.cardMeta, children: ["\u7B2C ", String(page + 1), " / ", String(totalPages), " \u9875 \u00B7 \u5171 ", String(total), " \u6761 \u00B7 \u6700\u65B0\u5728\u524D"] }), _jsx("button", { type: "button", className: css.btn, disabled: page + 1 >= totalPages, onClick: () => { onPage(page + 1); }, children: "\u4E0B\u4E00\u9875" })] }));
59
+ }
60
+ /** The profile·concerns page with two sub-pages (diary demoted to per-fact provenance). */
61
+ export function FactDiaryPage({ actions, onChanged }) {
62
+ const [tab, setTab] = useState('concerns');
63
+ const [error, setError] = useState(null);
64
+ // 关心事项
65
+ // 关心事项(010 §D:kind/status 筛选 + 分页)
66
+ const [concerns, setConcerns] = useState([]);
67
+ const [openConcerns, setOpenConcerns] = useState({});
68
+ const [concernKind, setConcernKind] = useState('');
69
+ const [concernStatus, setConcernStatus] = useState('');
70
+ const [concernPage, setConcernPage] = useState(0);
71
+ const [concernPageSize, setConcernPageSize] = useState(10);
72
+ const [concernTotal, setConcernTotal] = useState(0);
73
+ // 画像分类(分页)
74
+ const [category, setCategory] = useState('');
75
+ const [includeHistory, setIncludeHistory] = useState(false);
76
+ const [facts, setFacts] = useState([]);
77
+ const [factPage, setFactPage] = useState(0);
78
+ const [factPageSize, setFactPageSize] = useState(10);
79
+ const [factTotal, setFactTotal] = useState(0);
80
+ // 画像溯源(008 Path A):每条画像可展开看它来自哪些日记。
81
+ const [openFactSources, setOpenFactSources] = useState({});
82
+ const [factSources, setFactSources] = useState({});
83
+ const refresh = useCallback(() => {
84
+ void actions.listConcerns(concernKind, concernStatus, concernPageSize, concernPage * concernPageSize).then(setConcerns).catch(() => { });
85
+ void actions.listConcernsCount(concernKind, concernStatus).then(setConcernTotal).catch(() => { });
86
+ void actions.listFacts(category, includeHistory, factPageSize, factPage * factPageSize).then(setFacts).catch((e) => {
87
+ setError(e instanceof Error ? e.message : String(e));
88
+ });
89
+ void actions.listFactsCount(category, includeHistory).then(setFactTotal).catch(() => { });
90
+ }, [actions, concernKind, concernStatus, concernPage, concernPageSize, category, includeHistory, factPage, factPageSize]);
91
+ useEffect(() => { refresh(); }, [refresh]);
92
+ const runConfirm = useCallback(async (fact) => {
93
+ const verb = fact.locked ? '解除人工确认' : '人工确认(锁定,禁止自动取代)';
94
+ const reason = promptReason(verb);
95
+ if (reason === undefined)
96
+ return;
97
+ await actions.humanConfirmFact({ factId: fact.id, locked: !fact.locked, reason });
98
+ refresh();
99
+ onChanged();
100
+ }, [actions, onChanged, refresh]);
101
+ const runEditFact = useCallback(async (fact) => {
102
+ const value = window.prompt(`编辑画像「${fact.category}/${fact.factKey}」的新值:`, fact.value);
103
+ if (value === null || value.trim() === '')
104
+ return;
105
+ const reason = promptReason('人工编辑画像');
106
+ if (reason === undefined)
107
+ return;
108
+ await actions.humanEditFact({ factId: fact.id, value: value.trim(), reason });
109
+ refresh();
110
+ onChanged();
111
+ }, [actions, onChanged, refresh]);
112
+ const runDeleteFact = useCallback(async (fact) => {
113
+ const reason = promptReason(`删除画像「${fact.category}/${fact.factKey}」(墓碑保留)`);
114
+ if (reason === undefined)
115
+ return;
116
+ await actions.humanDeleteFact({ factId: fact.id, reason });
117
+ refresh();
118
+ onChanged();
119
+ }, [actions, onChanged, refresh]);
120
+ const toggleConcern = useCallback((id) => {
121
+ setOpenConcerns(prev => ({ ...prev, [id]: prev[id] !== true }));
122
+ }, []);
123
+ // 画像溯源:展开时按需拉取来源日记(只拉一次,缓存到 factSources)。
124
+ const toggleFactSources = useCallback((fact) => {
125
+ const opening = openFactSources[fact.id] !== true;
126
+ setOpenFactSources(prev => ({ ...prev, [fact.id]: prev[fact.id] !== true }));
127
+ if (opening && factSources[fact.id] === undefined && fact.sourceDiaryIds.length > 0) {
128
+ void actions.getDiaryByIds(fact.sourceDiaryIds).then(entries => {
129
+ setFactSources(prev => ({ ...prev, [fact.id]: entries }));
130
+ }).catch(() => { setFactSources(prev => ({ ...prev, [fact.id]: [] })); });
131
+ }
132
+ }, [actions, openFactSources, factSources]);
133
+ const runSetConcernStatus = useCallback(async (tree, status) => {
134
+ const reason = promptReason(`把关心事项「${tree.concern.title}」改为 ${CONCERN_STATUS_LABELS[status] ?? status}`);
135
+ if (reason === undefined)
136
+ return;
137
+ await actions.humanSetConcernStatus({ id: tree.concern.id, status, reason });
138
+ refresh();
139
+ onChanged();
140
+ }, [actions, onChanged, refresh]);
141
+ const runDeleteConcern = useCallback(async (tree) => {
142
+ const reason = promptReason(`删除关心事项「${tree.concern.title}」及其更新(墓碑保留)`);
143
+ if (reason === undefined)
144
+ return;
145
+ await actions.humanDeleteConcern({ id: tree.concern.id, reason });
146
+ refresh();
147
+ onChanged();
148
+ }, [actions, onChanged, refresh]);
149
+ return (_jsxs("div", { className: css.page, children: [_jsxs("div", { className: css.empty, children: ["\u300C\u8BB0\u300D\u7684\u4EA7\u7269\u5206\u4E24\u5C42\uFF1A", _jsx("b", { children: "\u753B\u50CF\u5206\u7C7B" }), "\u662F AI \u901A\u8FC7\u5BF9\u8BDD\u6C89\u6DC0\u51FA\u7684\"\u8FD9\u4E2A\u7528\u6237\u662F\u4EC0\u4E48\u6837\u7684\u4EBA\u3001\u600E\u4E48\u8DDF\u4ED6\u534F\u4F5C\"\uFF08\u7A33\u5B9A\u7279\u8D28\uFF0C\u6BCF\u6761\u53EF\u5C55\u5F00\u770B\u6765\u6E90\u65E5\u8BB0\uFF09\uFF1B", _jsx("b", { children: "\u5173\u5FC3\u4E8B\u9879" }), "\u662F\u66FF\u7528\u6237\u8BB0\u7740\u7684", _jsx("b", { children: "\u5F00\u73AF\u5907\u5FD8" }), "\u2014\u2014\u63D0\u8FC7\u8FD8\u6CA1\u529E\u7684\u4E8B\u3001\u5192\u51FA\u7684\u60F3\u6CD5\u3001\u60AC\u800C\u672A\u51B3\u7684\u95EE\u9898\u3001\u5F85\u5B9A\u7684\u51B3\u5B9A\u3001\u7B54\u5E94\u7684\u4E8B\u3002 \u4E8B\u4EF6\u5C42\u65E5\u8BB0\u662F\u539F\u6599\uFF08\u53EA\u589E\u4E0D\u5220\uFF09\uFF0C\u4E0D\u5355\u5217\u5B50\u9875\uFF0C\u4F5C\u4E3A\u753B\u50CF\u7684\"\u6765\u6E90\u65E5\u8BB0\"\u9732\u51FA\u3002\u63D0\u53D6\u662F\u5426\u5728\u8DD1\uFF0C\u770B\u53F3\u4E0A\u89D2\u300C\u5F85\u63D0\u53D6\u300D\u6570\u5373\u53EF\u3002"] }), _jsxs("div", { className: css.tabs, children: [TABS.map(t => (_jsx("button", { type: "button", className: tab === t.key ? `${css.tab} ${css.tabActive}` : css.tab, onClick: () => { setTab(t.key); }, children: t.label }, t.key))), _jsx("button", { type: "button", className: css.btn, onClick: refresh, style: { marginLeft: 'auto' }, children: "\u5237\u65B0" })] }), tab === 'concerns' && (_jsxs("section", { className: css.column, children: [_jsxs("div", { className: css.toolbar, children: [_jsx("span", { className: css.sectionTitle, children: "\u5173\u5FC3\u4E8B\u9879 \u00B7 \u5F00\u73AF\u5907\u5FD8\uFF08\u66FF\u4F60\u8BB0\u7740\u8FD8\u6CA1\u95ED\u73AF\u7684\u4E8B\uFF0C\u7528\u4E8E\u63D0\u9192\uFF09" }), _jsxs("label", { className: css.field, children: [_jsx("span", { children: "\u7C7B\u578B" }), _jsxs("select", { value: concernKind, onChange: e => { setConcernKind(e.target.value); setConcernPage(0); }, children: [_jsx("option", { value: "", children: "\u5168\u90E8" }), Object.entries(CONCERN_KIND_LABELS).map(([value, label]) => (_jsx("option", { value: value, children: label }, value)))] })] }), _jsxs("label", { className: css.field, children: [_jsx("span", { children: "\u72B6\u6001" }), _jsxs("select", { value: concernStatus, onChange: e => { setConcernStatus(e.target.value); setConcernPage(0); }, children: [_jsx("option", { value: "", children: "\u5168\u90E8" }), Object.entries(CONCERN_STATUS_LABELS).map(([value, label]) => (_jsx("option", { value: value, children: label }, value)))] })] }), _jsx(PageSizeSelect, { value: concernPageSize, onChange: v => { setConcernPageSize(v); setConcernPage(0); } })] }), concerns.length === 0 && _jsx("div", { className: css.empty, children: "\u8FD8\u6CA1\u6709\u5173\u5FC3\u4E8B\u9879\u3002\u4EE3\u7406\u63D0\u53D6\u65F6\uFF08memory_extract \u7684 concerns\uFF09\u4F1A\u6C89\u6DC0\u4F60\u63D0\u8FC7\u4F46\u8FD8\u6CA1\u95ED\u73AF\u7684\u4E8B\uFF1A\u5F85\u529E\u3001\u601D\u8003\u3001\u60F3\u6CD5\u3001\u7591\u95EE\u3001\u51B3\u5B9A\u3001\u7EA6\u5B9A\u3002" }), _jsx("div", { className: css.list, children: concerns.map(tree => (_jsxs("div", { className: css.card, children: [_jsxs("div", { className: css.cardHead, children: [_jsx("span", { className: css.payloadToggle, title: openConcerns[tree.concern.id] === true ? '收起更新' : '展开更新', onClick: () => { toggleConcern(tree.concern.id); }, children: openConcerns[tree.concern.id] === true ? '▾' : '▸' }), _jsx("span", { className: `${css.badge} ${css.statusCandidate}`, children: CONCERN_KIND_LABELS[tree.concern.kind ?? 'other'] ?? '其他' }), _jsx("span", { className: css.cardTitle, children: tree.concern.title }), _jsx("span", { className: `${css.badge} ${css.statusOther}`, children: CONCERN_STATUS_LABELS[tree.concern.status ?? 'ongoing'] ?? '未闭环' }), _jsxs("span", { className: css.cardMeta, children: ["\u66F4\u65B0 ", String(tree.mentions.length), " \u6B21"] })] }), tree.concern.background !== undefined && tree.concern.background !== '' && (_jsxs("div", { className: css.concernBg, children: ["\u80CC\u666F\uFF1A", tree.concern.background] })), openConcerns[tree.concern.id] === true && (_jsxs("div", { className: css.list, children: [tree.mentions.length === 0 && _jsx("div", { className: css.cardSub, children: _jsx("span", { className: css.cardMeta, children: "\u6682\u65E0\u540E\u7EED\u66F4\u65B0\u3002" }) }), tree.mentions.map(mention => (_jsxs("div", { className: css.cardSub, children: [_jsx("span", { className: css.cardMeta, children: formatTs(mention.ts) }), _jsx("span", { className: css.cardTitle, children: mention.title }), mention.sourceDiaryIds.length > 0 && (_jsxs("span", { className: css.cardMeta, children: ["\u2190 \u65E5\u8BB0 ", mention.sourceDiaryIds.map(id => id.slice(0, 6)).join('、')] }))] }, mention.id)))] })), _jsxs("div", { className: css.cardSub, children: [_jsxs("select", { value: tree.concern.status ?? 'ongoing', onChange: e => { void runSetConcernStatus(tree, e.target.value); }, children: [_jsx("option", { value: "ongoing", children: "\u672A\u95ED\u73AF" }), _jsx("option", { value: "concluded", children: "\u5DF2\u95ED\u73AF" }), _jsx("option", { value: "recurring", children: "\u53CD\u590D\u51FA\u73B0" }), _jsx("option", { value: "paused", children: "\u6401\u7F6E" })] }), _jsx("button", { type: "button", className: `${css.btn} ${css.btnDanger}`, onClick: () => { void runDeleteConcern(tree); }, children: "\u5220\u9664" })] })] }, tree.concern.id))) }), _jsx(Pager, { page: concernPage, pageSize: concernPageSize, total: concernTotal, onPage: setConcernPage })] })), tab === 'facts' && (_jsxs("section", { className: css.column, children: [_jsxs("div", { className: css.toolbar, children: [_jsxs("label", { className: css.field, children: [_jsx("span", { children: "\u753B\u50CF\u5206\u7C7B" }), _jsxs("select", { value: category, onChange: e => { setCategory(e.target.value); setFactPage(0); }, children: [_jsx("option", { value: "", children: "\u5168\u90E8" }), Object.entries(CATEGORY_LABELS).map(([value, label]) => (_jsx("option", { value: value, children: label }, value)))] })] }), _jsxs("label", { className: css.check, children: [_jsx("input", { type: "checkbox", checked: includeHistory, onChange: e => { setIncludeHistory(e.target.checked); setFactPage(0); } }), "\u663E\u793A\u5386\u53F2\u7248\u672C\uFF08\u53CC\u65F6\u95F4\u8F74\uFF09"] }), _jsx(PageSizeSelect, { value: factPageSize, onChange: v => { setFactPageSize(v); setFactPage(0); } })] }), error !== null && _jsx("div", { className: css.error, children: error }), facts.length === 0 && _jsx("div", { className: css.empty, children: "\u6682\u65E0\u753B\u50CF\u6761\u76EE\u3002\u4EE3\u7406\u8BB0\u5F55\u65E5\u8BB0\u540E\u6309\u5468\u671F\u63D0\u53D6\uFF08memory_extract\uFF09\uFF0C\u6216\u5728\u672C\u9875\u300C\u4EBA\u5DE5\u7BA1\u7406\u300D\u4E2D\u76F4\u63A5\u6DFB\u52A0\u3002" }), _jsxs("table", { className: css.table, children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "\u5206\u7C7B/\u952E" }), _jsx("th", { children: "\u503C" }), _jsx("th", { children: "\u4F50\u8BC1" }), _jsx("th", { children: "\u6765\u6E90" }), _jsx("th", { children: "\u72B6\u6001" }), _jsx("th", { children: "\u751F\u6548\u8D77" }), _jsx("th", { children: "\u64CD\u4F5C" })] }) }), _jsx("tbody", { children: facts.map(fact => (_jsxs(Fragment, { children: [_jsxs("tr", { children: [_jsxs("td", { children: [CATEGORY_LABELS[fact.category] ?? fact.category, " / ", fact.factKey] }), _jsx("td", { className: css.valueCell, children: fact.value }), _jsxs("td", { children: ["\u00D7", String(fact.corroboration)] }), _jsx("td", { children: fact.sourceDiaryIds.length === 0
150
+ ? _jsx("span", { className: css.cardMeta, children: "\u4EBA\u5DE5/\u65E0" })
151
+ : (_jsxs("span", { className: css.cellActions, children: [_jsx("span", { className: css.payloadToggle, title: openFactSources[fact.id] === true ? '收起来源日记' : '展开来源日记', onClick: () => { toggleFactSources(fact); }, children: openFactSources[fact.id] === true ? '▾' : '▸' }), _jsxs("span", { className: css.cardMeta, children: ["\u2190 ", String(fact.sourceDiaryIds.length), " \u6761\u65E5\u8BB0"] })] })) }), _jsxs("td", { children: [fact.locked && _jsx("span", { className: `${css.badge} ${css.badgePinned}`, children: "\u5DF2\u786E\u8BA4" }), fact.conflictPending && _jsx("span", { className: `${css.badge} ${css.badgeConflict}`, children: "\u51B2\u7A81\u5F85\u88C1\u51B3" }), fact.validTo !== undefined && _jsx("span", { className: `${css.badge} ${css.statusOther}`, children: "\u5386\u53F2" })] }), _jsx("td", { children: formatTs(fact.validFrom) }), _jsxs("td", { className: css.cellActions, children: [_jsx("button", { type: "button", className: css.btn, onClick: () => { void runConfirm(fact); }, children: fact.locked ? '解锁' : '确认' }), _jsx("button", { type: "button", className: css.btn, onClick: () => { void runEditFact(fact); }, children: "\u7F16\u8F91" }), _jsx("button", { type: "button", className: `${css.btn} ${css.btnDanger}`, onClick: () => { void runDeleteFact(fact); }, children: "\u5220\u9664" })] })] }), openFactSources[fact.id] === true && (_jsx("tr", { children: _jsx("td", { colSpan: 7, children: _jsx("div", { className: css.list, children: (factSources[fact.id] ?? []).length === 0
152
+ ? _jsx("div", { className: css.cardSub, children: _jsx("span", { className: css.cardMeta, children: "\u52A0\u8F7D\u4E2D\u2026\uFF08\u6216\u6765\u6E90\u65E5\u8BB0\u5DF2\u4E0D\u5B58\u5728\uFF09" }) })
153
+ : (factSources[fact.id] ?? []).map(entry => (_jsxs("div", { className: css.cardSub, children: [_jsx("span", { className: `${css.badge} ${css.statusCandidate}`, children: DIARY_KIND_LABELS[entry.kind] ?? entry.kind }), _jsx("span", { className: css.cardTitle, children: entry.content }), _jsx("span", { className: css.cardMeta, children: formatTs(entry.ts) })] }, entry.id))) }) }) }))] }, fact.id))) })] }), _jsx(Pager, { page: factPage, pageSize: factPageSize, total: factTotal, onPage: setFactPage })] }))] }));
154
+ }
155
+ //# sourceMappingURL=FactDiaryPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FactDiaryPage.js","sourceRoot":"","sources":["../../../src/client/FactDiaryPage.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Human management page: the fixed-format injection and editing forms.
3
+ * Human additions use the ordinary experience/fact structure (fixed format);
4
+ * every submit collects an audited reason and lands in the ledger as
5
+ * actor=human. Pin/delete/edit verbs also live on the monitoring pages.
6
+ */
7
+ import type { MemoryWorkbenchActions } from './actions.ts';
8
+ export interface HumanOpsPageProps {
9
+ /** The injected memory callbacks. */
10
+ actions: MemoryWorkbenchActions;
11
+ /** Called after any mutation so the header stats refresh. */
12
+ onChanged: () => void;
13
+ }
14
+ /** The human management page. */
15
+ export declare function HumanOpsPage({ actions, onChanged }: HumanOpsPageProps): React.ReactElement;
16
+ //# sourceMappingURL=HumanOpsPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HumanOpsPage.d.ts","sourceRoot":"","sources":["../../../src/client/HumanOpsPage.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAuB1D,MAAM,WAAW,iBAAiB;IAChC,qCAAqC;IACrC,OAAO,EAAE,sBAAsB,CAAA;IAC/B,6DAA6D;IAC7D,SAAS,EAAE,MAAM,IAAI,CAAA;CACtB;AAED,iCAAiC;AACjC,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAoQ1F"}