dsh-daoing-memory 0.1.0 → 0.1.2

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.
package/lib/client.js CHANGED
@@ -4,10 +4,10 @@ window.__ModuleLoader__.load({
4
4
  var module = { exports: {} };
5
5
  var exports = module.exports;
6
6
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
7
- let react_jsx_runtime = require("react/jsx-runtime");
8
7
  let _deepseek_ai_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
9
- let _deepseek_ai_dsh_client_runtime_client = require("@deepseek-ai/dsh-client-runtime/client");
8
+ let react_jsx_runtime = require("react/jsx-runtime");
10
9
  let react = require("react");
10
+ let _deepseek_ai_dsh_client_runtime_client = require("@deepseek-ai/dsh-client-runtime/client");
11
11
  //#region ../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/core.js
12
12
  var _a$1;
13
13
  function $constructor(name, initializer, params) {
@@ -7724,6 +7724,47 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
7724
7724
  ]
7725
7725
  };
7726
7726
  //#endregion
7727
+ //#region \0dsh-css:D:\DSH 插件项目\项目源码\deepseek-harness-master\packages\memory\dsh-daoing-memory\src\client\MemoryFooterAction.module.css.mjs
7728
+ const css$1 = ".O-5X5a_action{cursor:pointer;height:36px;color:var(--dsw-alias-label-secondary);background:0 0;border:none;border-radius:8px;flex:none;justify-content:center;align-items:center;gap:6px;padding:0 10px;display:flex}.O-5X5a_action:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.O-5X5a_label{white-space:nowrap;font-size:14px;line-height:20px}";
7729
+ const tagId$1 = "dsh-daoing-memory/MemoryFooterAction.module.css";
7730
+ if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
7731
+ const tag = document.createElement("style");
7732
+ tag.dataset.plugin = "dsh-daoing-memory";
7733
+ tag.dataset.pluginCss = tagId$1;
7734
+ tag.textContent = css$1;
7735
+ document.head.appendChild(tag);
7736
+ }
7737
+ var MemoryFooterAction_module_css_default = {
7738
+ "label": "O-5X5a_label",
7739
+ "action": "O-5X5a_action"
7740
+ };
7741
+ //#endregion
7742
+ //#region src/client/MemoryFooterAction.tsx
7743
+ /**
7744
+ * Render the footer entry. The wide variant shows an icon + label button;
7745
+ * the rail variant is a single icon. Clicking selects the first monitoring
7746
+ * page, which opens the workbench overlay.
7747
+ * @param props - composed slot props.
7748
+ * @returns the action button.
7749
+ */
7750
+ function MemoryFooterAction(props) {
7751
+ const { wide } = props;
7752
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
7753
+ type: "button",
7754
+ className: MemoryFooterAction_module_css_default.action,
7755
+ "data-memory-nav": true,
7756
+ "aria-label": "记忆监控",
7757
+ title: "记忆监控",
7758
+ onClick: () => {
7759
+ props.actions.select("experience");
7760
+ },
7761
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconDataOutline16, { size: 18 }), wide && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7762
+ className: MemoryFooterAction_module_css_default.label,
7763
+ children: "记忆"
7764
+ })]
7765
+ });
7766
+ }
7767
+ //#endregion
7727
7768
  //#region ../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
7728
7769
  function r(e) {
7729
7770
  var t, f, n = "";
@@ -7739,10 +7780,50 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
7739
7780
  return n;
7740
7781
  }
7741
7782
  //#endregion
7742
- //#region lib/types/client/navStore.js
7783
+ //#region src/client/actions.ts
7784
+ /** Curry the session id away so the pages keep calling the bound face. */
7785
+ function bindMemoryActions(remote, session) {
7786
+ return {
7787
+ workbenchInfo: () => remote.workbenchInfo(session),
7788
+ stats: () => remote.stats(session),
7789
+ listExperiences: (filter) => remote.listExperiences(session, filter),
7790
+ family: (id) => remote.family(session, id),
7791
+ listDiary: (limit, offset, onlyUnextracted) => remote.listDiary(session, limit, offset, onlyUnextracted),
7792
+ getDiaryByIds: (ids) => remote.getDiaryByIds(session, ids),
7793
+ listFacts: (category, includeHistory, limit, offset) => remote.listFacts(session, category, includeHistory, limit, offset),
7794
+ listFactsCount: (category, includeHistory) => remote.listFactsCount(session, category, includeHistory),
7795
+ listConcerns: (kind, status, limit, offset) => remote.listConcerns(session, kind, status, limit, offset),
7796
+ listConcernsCount: (kind, status) => remote.listConcernsCount(session, kind, status),
7797
+ extractionLog: (limit, offset) => remote.extractionLog(session, limit, offset),
7798
+ extractionLogCount: () => remote.extractionLogCount(session),
7799
+ consolidate: (request) => remote.consolidate(session, request),
7800
+ consolidationDue: () => remote.consolidationDue(session),
7801
+ ledgerQuery: (request) => remote.ledgerQuery(session, request),
7802
+ ledgerQueryCount: (request) => remote.ledgerQueryCount(session, request),
7803
+ verifyLedger: () => remote.verifyLedger(session),
7804
+ exportLibrary: () => remote.exportLibrary(session),
7805
+ humanPin: (request) => remote.humanPin(session, request),
7806
+ humanDeleteExperience: (request) => remote.humanDeleteExperience(session, request),
7807
+ humanEditExperience: (request) => remote.humanEditExperience(session, request),
7808
+ humanAddExperience: (request) => remote.humanAddExperience(session, request),
7809
+ humanPromote: (id, reason) => remote.humanPromote(session, id, reason),
7810
+ humanRollback: (request) => remote.humanRollback(session, request),
7811
+ humanAddFact: (request) => remote.humanAddFact(session, request),
7812
+ humanEditFact: (request) => remote.humanEditFact(session, request),
7813
+ humanDeleteFact: (request) => remote.humanDeleteFact(session, request),
7814
+ humanConfirmFact: (request) => remote.humanConfirmFact(session, request),
7815
+ humanAckDiary: (request) => remote.humanAckDiary(session, request),
7816
+ humanSetConcernStatus: (request) => remote.humanSetConcernStatus(session, request),
7817
+ humanDeleteConcern: (request) => remote.humanDeleteConcern(session, request),
7818
+ humanReleaseCold: (request) => remote.humanReleaseCold(session, request),
7819
+ ingest: (request) => remote.ingest(session, request)
7820
+ };
7821
+ }
7822
+ //#endregion
7823
+ //#region src/client/navStore.ts
7743
7824
  /**
7744
7825
  * Memory monitoring nav store: shared viewing state between the left-sidebar
7745
- * nav group (sidebar.sections) and the right-pane takeover (shell.overlay).
7826
+ * footer entry (sidebar.footer.action) and the right-pane takeover (shell.overlay).
7746
7827
  * One factory handle is created in apply and passed to both registrations so
7747
7828
  * selecting a menu in the sidebar and rendering the matching page read the
7748
7829
  * same state. Module level exports the factory only — a module-level handle
@@ -7794,136 +7875,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
7794
7875
  });
7795
7876
  }
7796
7877
  //#endregion
7797
- //#region \0dsh-css:D:\dsh-arena\dsh-source-code\packages\memory\memory\src\client\MemoryNavSection.module.css.mjs
7798
- const css$1 = ".SsVA3a_group{flex-direction:column;flex:none;margin-top:2px;display:flex}.SsVA3a_header{cursor:pointer;height:36px;color:var(--dsw-alias-label-tertiary);text-align:left;background:0 0;border:none;border-radius:12px;align-items:center;gap:4px;padding:0 8px;font-size:14px;line-height:20px;display:flex}.SsVA3a_header:hover{background:var(--dsw-alias-interactive-bg-hover)}.SsVA3a_headerLabel{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.SsVA3a_chevron{transition:transform .15s var(--ds-ease-in-out);flex:none}.SsVA3a_chevronCollapsed{transform:rotate(-90deg)}.SsVA3a_items{flex-direction:column;gap:2px;padding:2px 0 6px;display:flex}.SsVA3a_item{cursor:pointer;text-align:left;height:36px;color:var(--dsw-alias-label-secondary);background:0 0;border:none;border-radius:8px;align-items:center;padding:0 8px 0 26px;font-size:14px;line-height:20px;display:flex}.SsVA3a_item:hover{background:var(--dsw-alias-interactive-bg-hover)}.SsVA3a_itemActive{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-label-primary);font-weight:500}.SsVA3a_itemActive:hover{background:var(--dsw-alias-interactive-bg-active)}.SsVA3a_rail{cursor:pointer;width:36px;height:36px;color:var(--dsw-alias-label-secondary);background:0 0;border:none;border-radius:8px;flex:none;justify-content:center;align-items:center;margin:2px auto 0;display:flex}.SsVA3a_rail:hover{background:var(--dsw-alias-interactive-bg-hover)}";
7799
- const tagId$1 = "dsh-daoing-memory/MemoryNavSection.module.css";
7800
- if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
7801
- const tag = document.createElement("style");
7802
- tag.dataset.plugin = "dsh-daoing-memory";
7803
- tag.dataset.pluginCss = tagId$1;
7804
- tag.textContent = css$1;
7805
- document.head.appendChild(tag);
7806
- }
7807
- var MemoryNavSection_module_css_default = {
7808
- "rail": "SsVA3a_rail",
7809
- "header": "SsVA3a_header",
7810
- "chevron": "SsVA3a_chevron",
7811
- "items": "SsVA3a_items",
7812
- "headerLabel": "SsVA3a_headerLabel",
7813
- "group": "SsVA3a_group",
7814
- "chevronCollapsed": "SsVA3a_chevronCollapsed",
7815
- "item": "SsVA3a_item",
7816
- "itemActive": "SsVA3a_itemActive"
7817
- };
7818
- //#endregion
7819
- //#region lib/types/client/MemoryNavSection.js
7820
- /**
7821
- * Render the nav group. The rail variant is a single icon: it selects the
7822
- * first page and expands the sidebar so the group becomes visible.
7823
- * @param props - composed slot props.
7824
- * @returns the group element tree.
7825
- */
7826
- function MemoryNavSection(props) {
7827
- const { wide, expandSidebar } = props;
7828
- const nav = props.useStore((s) => s);
7829
- if (!wide) return (0, react_jsx_runtime.jsx)("button", {
7830
- type: "button",
7831
- className: MemoryNavSection_module_css_default.rail,
7832
- "aria-label": "记忆监控",
7833
- "data-memory-nav": true,
7834
- onClick: () => {
7835
- props.actions.select("experience");
7836
- expandSidebar();
7837
- },
7838
- children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconDataOutline16, { size: 18 })
7839
- });
7840
- return (0, react_jsx_runtime.jsxs)("nav", {
7841
- className: MemoryNavSection_module_css_default.group,
7842
- "aria-label": "记忆监控",
7843
- "data-memory-nav": true,
7844
- children: [(0, react_jsx_runtime.jsxs)("button", {
7845
- type: "button",
7846
- className: MemoryNavSection_module_css_default.header,
7847
- "aria-expanded": !nav.collapsed,
7848
- onClick: () => {
7849
- props.actions.toggleCollapsed();
7850
- },
7851
- children: [(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutline14, {
7852
- size: 14,
7853
- className: clsx(MemoryNavSection_module_css_default.chevron, nav.collapsed && MemoryNavSection_module_css_default.chevronCollapsed)
7854
- }), (0, react_jsx_runtime.jsx)("span", {
7855
- className: MemoryNavSection_module_css_default.headerLabel,
7856
- children: "记忆监控"
7857
- })]
7858
- }), !nav.collapsed && (0, react_jsx_runtime.jsx)("div", {
7859
- className: MemoryNavSection_module_css_default.items,
7860
- children: MEMORY_NAV_ITEMS.map((item) => (0, react_jsx_runtime.jsx)("button", {
7861
- type: "button",
7862
- className: clsx(MemoryNavSection_module_css_default.item, nav.page === item.key && MemoryNavSection_module_css_default.itemActive),
7863
- "aria-current": nav.page === item.key ? "page" : void 0,
7864
- onClick: () => {
7865
- props.actions.select(item.key);
7866
- },
7867
- children: item.label
7868
- }, item.key))
7869
- })]
7870
- });
7871
- }
7872
- //#endregion
7873
- //#region lib/types/client/actions.js
7874
- /**
7875
- * The injected business face of the memory workbench entry: plain data
7876
- * callbacks over the memory Remote namespace. Live framework data (sessions,
7877
- * workspaces) arrives through the standard props shares instead.
7878
- *
7879
- * Two contracts live here. `MemoryWorkbenchActions` is the page-facing face:
7880
- * every callback is already bound to the current session. `MemoryRemoteActions`
7881
- * is the slot-injected face: the generated memory Remote requires the session
7882
- * id as the first wire argument (the host resolves it back to the Agent), so
7883
- * each callback takes it explicitly and `bindMemoryActions` curries it away
7884
- * once the workbench knows the current session.
7885
- */
7886
- /** Curry the session id away so the pages keep calling the bound face. */
7887
- function bindMemoryActions(remote, session) {
7888
- return {
7889
- workbenchInfo: () => remote.workbenchInfo(session),
7890
- stats: () => remote.stats(session),
7891
- listExperiences: (filter) => remote.listExperiences(session, filter),
7892
- family: (id) => remote.family(session, id),
7893
- listDiary: (limit, offset, onlyUnextracted) => remote.listDiary(session, limit, offset, onlyUnextracted),
7894
- getDiaryByIds: (ids) => remote.getDiaryByIds(session, ids),
7895
- listFacts: (category, includeHistory, limit, offset) => remote.listFacts(session, category, includeHistory, limit, offset),
7896
- listFactsCount: (category, includeHistory) => remote.listFactsCount(session, category, includeHistory),
7897
- listConcerns: (kind, status, limit, offset) => remote.listConcerns(session, kind, status, limit, offset),
7898
- listConcernsCount: (kind, status) => remote.listConcernsCount(session, kind, status),
7899
- extractionLog: (limit, offset) => remote.extractionLog(session, limit, offset),
7900
- extractionLogCount: () => remote.extractionLogCount(session),
7901
- consolidate: (request) => remote.consolidate(session, request),
7902
- consolidationDue: () => remote.consolidationDue(session),
7903
- ledgerQuery: (request) => remote.ledgerQuery(session, request),
7904
- ledgerQueryCount: (request) => remote.ledgerQueryCount(session, request),
7905
- verifyLedger: () => remote.verifyLedger(session),
7906
- exportLibrary: () => remote.exportLibrary(session),
7907
- humanPin: (request) => remote.humanPin(session, request),
7908
- humanDeleteExperience: (request) => remote.humanDeleteExperience(session, request),
7909
- humanEditExperience: (request) => remote.humanEditExperience(session, request),
7910
- humanAddExperience: (request) => remote.humanAddExperience(session, request),
7911
- humanPromote: (id, reason) => remote.humanPromote(session, id, reason),
7912
- humanRollback: (request) => remote.humanRollback(session, request),
7913
- humanAddFact: (request) => remote.humanAddFact(session, request),
7914
- humanEditFact: (request) => remote.humanEditFact(session, request),
7915
- humanDeleteFact: (request) => remote.humanDeleteFact(session, request),
7916
- humanConfirmFact: (request) => remote.humanConfirmFact(session, request),
7917
- humanAckDiary: (request) => remote.humanAckDiary(session, request),
7918
- humanSetConcernStatus: (request) => remote.humanSetConcernStatus(session, request),
7919
- humanDeleteConcern: (request) => remote.humanDeleteConcern(session, request),
7920
- humanReleaseCold: (request) => remote.humanReleaseCold(session, request),
7921
- ingest: (request) => remote.ingest(session, request)
7922
- };
7923
- }
7924
- //#endregion
7925
- //#region \0dsh-css:D:\dsh-arena\dsh-source-code\packages\memory\memory\src\client\Workbench.module.css.mjs
7926
- const css = ".UvFuaW_panel{background:var(--dsw-alias-bg-base);border-left:1px solid var(--dsw-alias-border-l2);flex-direction:column;display:flex;position:absolute;top:0;bottom:0;right:0;overflow:hidden}.UvFuaW_header{border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform);flex-wrap:wrap;align-items:center;gap:16px;padding:10px 16px;display:flex}.UvFuaW_titleBlock{flex-direction:column;gap:2px;min-width:180px;display:flex}.UvFuaW_title{color:var(--dsw-alias-label-primary);font-size:15px;font-weight:600}.UvFuaW_subtitle{color:var(--dsw-alias-label-caption);font-size:11px}.UvFuaW_statline{color:var(--dsw-alias-label-tertiary);margin-left:auto;font-size:11px}.UvFuaW_body{flex:1;padding:12px 16px 24px;overflow:auto}.UvFuaW_page{flex-direction:column;gap:10px;display:flex}.UvFuaW_toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.UvFuaW_tabs{border-bottom:1px solid var(--dsw-alias-border-l2);flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:12px;padding-bottom:8px;display:flex}.UvFuaW_tab{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;border-radius:999px;padding:6px 12px;font-size:12px}.UvFuaW_tab:hover{background:var(--dsw-alias-interactive-bg-hover)}.UvFuaW_tabActive{background:var(--dsw-alias-interactive-bg-active,var(--dsw-alias-bg-module-platform));color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l3,var(--dsw-alias-border-l2));font-weight:600}.UvFuaW_field{color:var(--dsw-alias-label-caption);flex-direction:column;gap:3px;font-size:11px;display:flex}.UvFuaW_field input,.UvFuaW_field select,.UvFuaW_field textarea{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-primary);border-radius:6px;min-width:140px;padding:5px 8px;font-size:12px}.UvFuaW_field textarea{resize:vertical}.UvFuaW_check{color:var(--dsw-alias-label-secondary);align-items:center;gap:5px;font-size:12px;display:flex}.UvFuaW_btn{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-label-primary);cursor:pointer;white-space:nowrap;border-radius:6px;padding:5px 10px;font-size:12px}.UvFuaW_btn:hover{background:var(--dsw-alias-interactive-bg-hover)}.UvFuaW_btn:disabled{opacity:.5;cursor:default}.UvFuaW_btnDanger{color:var(--dsw-alias-state-error-primary)}.UvFuaW_btnDanger:hover{background:var(--dsw-alias-interactive-bg-hover-danger)}.UvFuaW_error{color:var(--dsw-alias-state-error-primary);font-size:12px}.UvFuaW_okLine{color:var(--dsw-alias-state-success-primary);font-size:12px}.UvFuaW_warnLine{color:var(--dsw-alias-state-warn-label);margin-bottom:6px;font-size:12px}.UvFuaW_empty{color:var(--dsw-alias-label-caption);padding:14px 4px;font-size:12px}.UvFuaW_list{flex-direction:column;gap:8px;display:flex}.UvFuaW_card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform);border-radius:8px;padding:8px 12px}.UvFuaW_cardHead{cursor:pointer;flex-wrap:wrap;align-items:center;gap:8px;display:flex}.UvFuaW_cardTitle{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:500}.UvFuaW_cardMeta{color:var(--dsw-alias-label-caption);font-size:11px}.UvFuaW_cardSub{align-items:center;gap:12px;margin-top:4px;display:flex}.UvFuaW_concernBg{color:var(--dsw-alias-label-caption);margin-top:3px;font-size:11px;line-height:1.5}.UvFuaW_cardDetail{border-top:1px solid var(--dsw-alias-border-l2);flex-direction:column;gap:5px;margin-top:8px;padding-top:8px;display:flex}.UvFuaW_detailRow{color:var(--dsw-alias-label-secondary);font-size:12px}.UvFuaW_detailLabel{min-width:64px;color:var(--dsw-alias-label-caption);display:inline-block}.UvFuaW_actions{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.UvFuaW_historyTitle{color:var(--dsw-alias-label-secondary);margin-top:10px;font-size:12px;font-weight:600}.UvFuaW_table{border-collapse:collapse;width:100%;color:var(--dsw-alias-label-secondary);font-size:12px}.UvFuaW_table th{text-align:left;color:var(--dsw-alias-label-caption);border-bottom:1px solid var(--dsw-alias-border-l2);padding:5px 8px;font-weight:500}.UvFuaW_table td{border-bottom:1px solid var(--dsw-alias-border-l2);vertical-align:top;padding:5px 8px}.UvFuaW_valueCell{text-overflow:ellipsis;white-space:nowrap;max-width:320px;overflow:hidden}.UvFuaW_payloadFull{white-space:pre-wrap;word-break:break-all;max-width:480px}.UvFuaW_payloadToggle{cursor:pointer;color:var(--ds-color-accent,#4c8dff);user-select:none;margin-left:6px;font-size:12px}.UvFuaW_payloadToggle:hover{text-decoration:underline}.UvFuaW_cellActions{flex-wrap:wrap;gap:4px;display:flex}.UvFuaW_badge{white-space:nowrap;border-radius:9px;padding:1px 7px;font-size:11px}.UvFuaW_badgePositive{background:var(--dsw-alias-state-success-tertiary);color:var(--dsw-alias-state-success-primary)}.UvFuaW_badgeNegative{background:var(--dsw-alias-state-warn-tertiary);color:var(--dsw-alias-state-warn-label)}.UvFuaW_badgePinned{background:var(--dsw-alias-state-business-tertiary);color:var(--dsw-alias-state-business-primary)}.UvFuaW_badgeConflict{background:var(--dsw-alias-state-warn-tertiary);color:var(--dsw-alias-state-warn-label)}.UvFuaW_statusLive{background:var(--dsw-alias-state-success-tertiary);color:var(--dsw-alias-state-success-primary)}.UvFuaW_statusCandidate{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-label-secondary)}.UvFuaW_statusChallenged{background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary)}.UvFuaW_statusOther{background:var(--dsw-alias-bg-skeleton);color:var(--dsw-alias-label-caption)}.UvFuaW_trust{color:var(--dsw-alias-label-tertiary);font-size:11px}.UvFuaW_columns{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:start;gap:16px;display:grid}.UvFuaW_column{flex-direction:column;gap:8px;min-width:0;display:flex}.UvFuaW_sectionTitle{color:var(--dsw-alias-label-primary);margin-top:6px;font-size:13px;font-weight:600}.UvFuaW_form{border:1px solid var(--dsw-alias-border-l2);border-radius:8px;flex-direction:column;gap:8px;padding:12px;display:flex}.UvFuaW_form .UvFuaW_btn{align-self:flex-start}.UvFuaW_rules{color:var(--dsw-alias-label-secondary);flex-direction:column;gap:4px;margin:0;padding-left:18px;font-size:12px;display:flex}";
7878
+ //#region \0dsh-css:D:\DSH 插件项目\项目源码\deepseek-harness-master\packages\memory\dsh-daoing-memory\src\client\Workbench.module.css.mjs
7879
+ const css = ".KAfEAG_panel{background:var(--dsw-alias-bg-base);border-left:1px solid var(--dsw-alias-border-l2);flex-direction:column;display:flex;position:absolute;top:0;bottom:0;right:0;overflow:hidden}.KAfEAG_header{border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform);flex-wrap:wrap;align-items:center;gap:16px;padding:10px 16px;display:flex}.KAfEAG_titleBlock{flex-direction:column;gap:2px;min-width:180px;display:flex}.KAfEAG_title{color:var(--dsw-alias-label-primary);font-size:15px;font-weight:600}.KAfEAG_subtitle{color:var(--dsw-alias-label-caption);font-size:11px}.KAfEAG_statline{color:var(--dsw-alias-label-tertiary);margin-left:auto;font-size:11px}.KAfEAG_body{flex:1;padding:12px 16px 24px;overflow:auto}.KAfEAG_workbenchTabs{border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform);align-items:center;gap:2px;padding:0 16px;display:flex}.KAfEAG_workbenchTab{color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:10px 14px;font-size:13px;line-height:20px;position:relative}.KAfEAG_workbenchTab:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.KAfEAG_workbenchTabActive{color:var(--dsw-alias-label-primary);font-weight:600}.KAfEAG_workbenchTabActive:after{content:\"\";background:var(--ds-color-accent,#4c8dff);border-radius:2px 2px 0 0;height:2px;position:absolute;bottom:-1px;left:14px;right:14px}.KAfEAG_page{flex-direction:column;gap:10px;display:flex}.KAfEAG_toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.KAfEAG_tabs{border-bottom:1px solid var(--dsw-alias-border-l2);flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:12px;padding-bottom:8px;display:flex}.KAfEAG_tab{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;border-radius:999px;padding:6px 12px;font-size:12px}.KAfEAG_tab:hover{background:var(--dsw-alias-interactive-bg-hover)}.KAfEAG_tabActive{background:var(--dsw-alias-interactive-bg-active,var(--dsw-alias-bg-module-platform));color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l3,var(--dsw-alias-border-l2));font-weight:600}.KAfEAG_field{color:var(--dsw-alias-label-caption);flex-direction:column;gap:3px;font-size:11px;display:flex}.KAfEAG_field input,.KAfEAG_field select,.KAfEAG_field textarea{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-primary);border-radius:6px;min-width:140px;padding:5px 8px;font-size:12px}.KAfEAG_field textarea{resize:vertical}.KAfEAG_check{color:var(--dsw-alias-label-secondary);align-items:center;gap:5px;font-size:12px;display:flex}.KAfEAG_btn{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-label-primary);cursor:pointer;white-space:nowrap;border-radius:6px;padding:5px 10px;font-size:12px}.KAfEAG_btn:hover{background:var(--dsw-alias-interactive-bg-hover)}.KAfEAG_btn:disabled{opacity:.5;cursor:default}.KAfEAG_btnDanger{color:var(--dsw-alias-state-error-primary)}.KAfEAG_btnDanger:hover{background:var(--dsw-alias-interactive-bg-hover-danger)}.KAfEAG_error{color:var(--dsw-alias-state-error-primary);font-size:12px}.KAfEAG_okLine{color:var(--dsw-alias-state-success-primary);font-size:12px}.KAfEAG_warnLine{color:var(--dsw-alias-state-warn-label);margin-bottom:6px;font-size:12px}.KAfEAG_empty{color:var(--dsw-alias-label-caption);padding:14px 4px;font-size:12px}.KAfEAG_list{flex-direction:column;gap:8px;display:flex}.KAfEAG_card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform);border-radius:8px;padding:8px 12px}.KAfEAG_cardHead{cursor:pointer;flex-wrap:wrap;align-items:center;gap:8px;display:flex}.KAfEAG_cardTitle{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:500}.KAfEAG_cardMeta{color:var(--dsw-alias-label-caption);font-size:11px}.KAfEAG_cardSub{align-items:center;gap:12px;margin-top:4px;display:flex}.KAfEAG_concernBg{color:var(--dsw-alias-label-caption);margin-top:3px;font-size:11px;line-height:1.5}.KAfEAG_cardDetail{border-top:1px solid var(--dsw-alias-border-l2);flex-direction:column;gap:5px;margin-top:8px;padding-top:8px;display:flex}.KAfEAG_detailRow{color:var(--dsw-alias-label-secondary);font-size:12px}.KAfEAG_detailLabel{min-width:64px;color:var(--dsw-alias-label-caption);display:inline-block}.KAfEAG_actions{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.KAfEAG_historyTitle{color:var(--dsw-alias-label-secondary);margin-top:10px;font-size:12px;font-weight:600}.KAfEAG_table{border-collapse:collapse;width:100%;color:var(--dsw-alias-label-secondary);font-size:12px}.KAfEAG_table th{text-align:left;color:var(--dsw-alias-label-caption);border-bottom:1px solid var(--dsw-alias-border-l2);padding:5px 8px;font-weight:500}.KAfEAG_table td{border-bottom:1px solid var(--dsw-alias-border-l2);vertical-align:top;padding:5px 8px}.KAfEAG_valueCell{text-overflow:ellipsis;white-space:nowrap;max-width:320px;overflow:hidden}.KAfEAG_payloadFull{white-space:pre-wrap;word-break:break-all;max-width:480px}.KAfEAG_payloadToggle{cursor:pointer;color:var(--ds-color-accent,#4c8dff);user-select:none;margin-left:6px;font-size:12px}.KAfEAG_payloadToggle:hover{text-decoration:underline}.KAfEAG_cellActions{flex-wrap:wrap;gap:4px;display:flex}.KAfEAG_badge{white-space:nowrap;border-radius:9px;padding:1px 7px;font-size:11px}.KAfEAG_badgePositive{background:var(--dsw-alias-state-success-tertiary);color:var(--dsw-alias-state-success-primary)}.KAfEAG_badgeNegative{background:var(--dsw-alias-state-warn-tertiary);color:var(--dsw-alias-state-warn-label)}.KAfEAG_badgePinned{background:var(--dsw-alias-state-business-tertiary);color:var(--dsw-alias-state-business-primary)}.KAfEAG_badgeConflict{background:var(--dsw-alias-state-warn-tertiary);color:var(--dsw-alias-state-warn-label)}.KAfEAG_statusLive{background:var(--dsw-alias-state-success-tertiary);color:var(--dsw-alias-state-success-primary)}.KAfEAG_statusCandidate{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-label-secondary)}.KAfEAG_statusChallenged{background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary)}.KAfEAG_statusOther{background:var(--dsw-alias-bg-skeleton);color:var(--dsw-alias-label-caption)}.KAfEAG_trust{color:var(--dsw-alias-label-tertiary);font-size:11px}.KAfEAG_columns{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:start;gap:16px;display:grid}.KAfEAG_column{flex-direction:column;gap:8px;min-width:0;display:flex}.KAfEAG_sectionTitle{color:var(--dsw-alias-label-primary);margin-top:6px;font-size:13px;font-weight:600}.KAfEAG_form{border:1px solid var(--dsw-alias-border-l2);border-radius:8px;flex-direction:column;gap:8px;padding:12px;display:flex}.KAfEAG_form .KAfEAG_btn{align-self:flex-start}.KAfEAG_rules{color:var(--dsw-alias-label-secondary);flex-direction:column;gap:4px;margin:0;padding-left:18px;font-size:12px;display:flex}";
7927
7880
  const tagId = "dsh-daoing-memory/Workbench.module.css";
7928
7881
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
7929
7882
  const tag = document.createElement("style");
@@ -7933,61 +7886,64 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
7933
7886
  document.head.appendChild(tag);
7934
7887
  }
7935
7888
  var Workbench_module_css_default = {
7936
- "badgePositive": "UvFuaW_badgePositive",
7937
- "cardTitle": "UvFuaW_cardTitle",
7938
- "title": "UvFuaW_title",
7939
- "cardMeta": "UvFuaW_cardMeta",
7940
- "error": "UvFuaW_error",
7941
- "panel": "UvFuaW_panel",
7942
- "valueCell": "UvFuaW_valueCell",
7943
- "btn": "UvFuaW_btn",
7944
- "subtitle": "UvFuaW_subtitle",
7945
- "badgeConflict": "UvFuaW_badgeConflict",
7946
- "columns": "UvFuaW_columns",
7947
- "sectionTitle": "UvFuaW_sectionTitle",
7948
- "badgePinned": "UvFuaW_badgePinned",
7949
- "card": "UvFuaW_card",
7950
- "detailRow": "UvFuaW_detailRow",
7951
- "tab": "UvFuaW_tab",
7952
- "cardHead": "UvFuaW_cardHead",
7953
- "statline": "UvFuaW_statline",
7954
- "check": "UvFuaW_check",
7955
- "btnDanger": "UvFuaW_btnDanger",
7956
- "payloadFull": "UvFuaW_payloadFull",
7957
- "concernBg": "UvFuaW_concernBg",
7958
- "badgeNegative": "UvFuaW_badgeNegative",
7959
- "statusLive": "UvFuaW_statusLive",
7960
- "empty": "UvFuaW_empty",
7961
- "warnLine": "UvFuaW_warnLine",
7962
- "statusCandidate": "UvFuaW_statusCandidate",
7963
- "statusOther": "UvFuaW_statusOther",
7964
- "column": "UvFuaW_column",
7965
- "statusChallenged": "UvFuaW_statusChallenged",
7966
- "form": "UvFuaW_form",
7967
- "cellActions": "UvFuaW_cellActions",
7968
- "cardSub": "UvFuaW_cardSub",
7969
- "detailLabel": "UvFuaW_detailLabel",
7970
- "toolbar": "UvFuaW_toolbar",
7971
- "titleBlock": "UvFuaW_titleBlock",
7972
- "trust": "UvFuaW_trust",
7973
- "rules": "UvFuaW_rules",
7974
- "badge": "UvFuaW_badge",
7975
- "actions": "UvFuaW_actions",
7976
- "tabs": "UvFuaW_tabs",
7977
- "list": "UvFuaW_list",
7978
- "body": "UvFuaW_body",
7979
- "okLine": "UvFuaW_okLine",
7980
- "cardDetail": "UvFuaW_cardDetail",
7981
- "tabActive": "UvFuaW_tabActive",
7982
- "page": "UvFuaW_page",
7983
- "field": "UvFuaW_field",
7984
- "header": "UvFuaW_header",
7985
- "historyTitle": "UvFuaW_historyTitle",
7986
- "table": "UvFuaW_table",
7987
- "payloadToggle": "UvFuaW_payloadToggle"
7889
+ "check": "KAfEAG_check",
7890
+ "body": "KAfEAG_body",
7891
+ "tab": "KAfEAG_tab",
7892
+ "cardHead": "KAfEAG_cardHead",
7893
+ "valueCell": "KAfEAG_valueCell",
7894
+ "workbenchTabs": "KAfEAG_workbenchTabs",
7895
+ "tabs": "KAfEAG_tabs",
7896
+ "card": "KAfEAG_card",
7897
+ "panel": "KAfEAG_panel",
7898
+ "cellActions": "KAfEAG_cellActions",
7899
+ "badge": "KAfEAG_badge",
7900
+ "statline": "KAfEAG_statline",
7901
+ "badgeNegative": "KAfEAG_badgeNegative",
7902
+ "btn": "KAfEAG_btn",
7903
+ "badgePinned": "KAfEAG_badgePinned",
7904
+ "columns": "KAfEAG_columns",
7905
+ "column": "KAfEAG_column",
7906
+ "form": "KAfEAG_form",
7907
+ "trust": "KAfEAG_trust",
7908
+ "table": "KAfEAG_table",
7909
+ "warnLine": "KAfEAG_warnLine",
7910
+ "sectionTitle": "KAfEAG_sectionTitle",
7911
+ "title": "KAfEAG_title",
7912
+ "payloadToggle": "KAfEAG_payloadToggle",
7913
+ "subtitle": "KAfEAG_subtitle",
7914
+ "cardSub": "KAfEAG_cardSub",
7915
+ "detailLabel": "KAfEAG_detailLabel",
7916
+ "workbenchTabActive": "KAfEAG_workbenchTabActive",
7917
+ "historyTitle": "KAfEAG_historyTitle",
7918
+ "statusLive": "KAfEAG_statusLive",
7919
+ "statusOther": "KAfEAG_statusOther",
7920
+ "rules": "KAfEAG_rules",
7921
+ "concernBg": "KAfEAG_concernBg",
7922
+ "page": "KAfEAG_page",
7923
+ "btnDanger": "KAfEAG_btnDanger",
7924
+ "error": "KAfEAG_error",
7925
+ "payloadFull": "KAfEAG_payloadFull",
7926
+ "okLine": "KAfEAG_okLine",
7927
+ "statusChallenged": "KAfEAG_statusChallenged",
7928
+ "detailRow": "KAfEAG_detailRow",
7929
+ "tabActive": "KAfEAG_tabActive",
7930
+ "field": "KAfEAG_field",
7931
+ "titleBlock": "KAfEAG_titleBlock",
7932
+ "empty": "KAfEAG_empty",
7933
+ "header": "KAfEAG_header",
7934
+ "list": "KAfEAG_list",
7935
+ "cardTitle": "KAfEAG_cardTitle",
7936
+ "cardMeta": "KAfEAG_cardMeta",
7937
+ "cardDetail": "KAfEAG_cardDetail",
7938
+ "statusCandidate": "KAfEAG_statusCandidate",
7939
+ "badgeConflict": "KAfEAG_badgeConflict",
7940
+ "badgePositive": "KAfEAG_badgePositive",
7941
+ "toolbar": "KAfEAG_toolbar",
7942
+ "workbenchTab": "KAfEAG_workbenchTab",
7943
+ "actions": "KAfEAG_actions"
7988
7944
  };
7989
7945
  //#endregion
7990
- //#region lib/types/client/ExperiencePage.js
7946
+ //#region src/client/ExperiencePage.tsx
7991
7947
  /**
7992
7948
  * Experience library monitoring page: lifecycle counters, a filterable
7993
7949
  * revision list with the Beta-posterior triple, expandable judgment context,
@@ -8017,7 +7973,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8017
7973
  /** Trust triple render: (置信度, 样本数, 最近验证时间). */
8018
7974
  function TrustTriple({ e }) {
8019
7975
  const last = e.lastVerifiedAt === void 0 ? "从未验证" : formatTs(e.lastVerifiedAt);
8020
- return (0, react_jsx_runtime.jsxs)("span", {
7976
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
8021
7977
  className: Workbench_module_css_default.trust,
8022
7978
  title: `加权置信 ${e.weightedTrust.toFixed(3)}`,
8023
7979
  children: [
@@ -8140,59 +8096,59 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8140
8096
  onChanged,
8141
8097
  refresh
8142
8098
  ]);
8143
- return (0, react_jsx_runtime.jsxs)("div", {
8099
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8144
8100
  className: Workbench_module_css_default.page,
8145
8101
  children: [
8146
- (0, react_jsx_runtime.jsx)("div", {
8102
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
8147
8103
  className: Workbench_module_css_default.empty,
8148
8104
  children: "经验库是「生·用·修」的载体:代理在复杂任务后提炼经验(生),相似任务前召回注入(用), 失败后隔离/修订/回滚(修)。每条经验带置信度·样本数·最近验证时间三元组。"
8149
8105
  }),
8150
- (0, react_jsx_runtime.jsxs)("div", {
8106
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8151
8107
  className: Workbench_module_css_default.toolbar,
8152
8108
  children: [
8153
- (0, react_jsx_runtime.jsxs)("label", {
8109
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
8154
8110
  className: Workbench_module_css_default.field,
8155
- children: [(0, react_jsx_runtime.jsx)("span", { children: "状态" }), (0, react_jsx_runtime.jsxs)("select", {
8111
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "状态" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
8156
8112
  value: statusFilter,
8157
8113
  onChange: (e) => {
8158
8114
  setStatusFilter(e.target.value);
8159
8115
  },
8160
- children: [(0, react_jsx_runtime.jsx)("option", {
8116
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
8161
8117
  value: "",
8162
8118
  children: "全部"
8163
- }), Object.entries(STATUS_LABELS).map(([value, label]) => (0, react_jsx_runtime.jsx)("option", {
8119
+ }), Object.entries(STATUS_LABELS).map(([value, label]) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
8164
8120
  value,
8165
8121
  children: label
8166
8122
  }, value))]
8167
8123
  })]
8168
8124
  }),
8169
- (0, react_jsx_runtime.jsxs)("label", {
8125
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
8170
8126
  className: Workbench_module_css_default.field,
8171
- children: [(0, react_jsx_runtime.jsx)("span", { children: "类型" }), (0, react_jsx_runtime.jsxs)("select", {
8127
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "类型" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
8172
8128
  value: kindFilter,
8173
8129
  onChange: (e) => {
8174
8130
  setKindFilter(e.target.value);
8175
8131
  },
8176
8132
  children: [
8177
- (0, react_jsx_runtime.jsx)("option", {
8133
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
8178
8134
  value: "",
8179
8135
  children: "全部"
8180
8136
  }),
8181
- (0, react_jsx_runtime.jsx)("option", {
8137
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
8182
8138
  value: "positive",
8183
8139
  children: "正经验"
8184
8140
  }),
8185
- (0, react_jsx_runtime.jsx)("option", {
8141
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
8186
8142
  value: "negative",
8187
8143
  children: "负经验"
8188
8144
  })
8189
8145
  ]
8190
8146
  })]
8191
8147
  }),
8192
- (0, react_jsx_runtime.jsxs)("label", {
8148
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
8193
8149
  className: Workbench_module_css_default.field,
8194
8150
  title: "任务族 = 一类相似任务的分组标签,同族经验共享召回与修订历史,如 windows-build",
8195
- children: [(0, react_jsx_runtime.jsx)("span", { children: "任务族" }), (0, react_jsx_runtime.jsx)("input", {
8151
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "任务族" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
8196
8152
  value: familyFilter,
8197
8153
  placeholder: "一类任务的标签,如 windows-build",
8198
8154
  onChange: (e) => {
@@ -8200,10 +8156,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8200
8156
  }
8201
8157
  })]
8202
8158
  }),
8203
- (0, react_jsx_runtime.jsxs)("label", {
8159
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
8204
8160
  className: Workbench_module_css_default.field,
8205
8161
  title: "作用域 = 该经验适用的领域/上下文;留空召回所有作用域,填写则只召回同作用域或全局经验",
8206
- children: [(0, react_jsx_runtime.jsx)("span", { children: "作用域" }), (0, react_jsx_runtime.jsx)("input", {
8162
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "作用域" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
8207
8163
  value: contextFilter,
8208
8164
  placeholder: "领域作用域,如 coding-windows-build",
8209
8165
  onChange: (e) => {
@@ -8211,64 +8167,64 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8211
8167
  }
8212
8168
  })]
8213
8169
  }),
8214
- (0, react_jsx_runtime.jsx)("button", {
8170
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
8215
8171
  type: "button",
8216
8172
  className: Workbench_module_css_default.btn,
8217
8173
  onClick: refresh,
8218
8174
  children: "刷新"
8219
8175
  }),
8220
- error !== null && (0, react_jsx_runtime.jsx)("span", {
8176
+ error !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8221
8177
  className: Workbench_module_css_default.error,
8222
8178
  children: error
8223
8179
  })
8224
8180
  ]
8225
8181
  }),
8226
- items.length === 0 && (0, react_jsx_runtime.jsx)("div", {
8182
+ items.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
8227
8183
  className: Workbench_module_css_default.empty,
8228
8184
  children: "没有符合条件的经验。经验由代理在复杂任务后提炼(memory_refine),或在「人工管理」中注入。"
8229
8185
  }),
8230
- (0, react_jsx_runtime.jsx)("div", {
8186
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
8231
8187
  className: Workbench_module_css_default.list,
8232
8188
  children: items.map((item) => {
8233
8189
  const key = `${item.id}@${String(item.revision)}`;
8234
8190
  const isOpen = expanded === key;
8235
- return (0, react_jsx_runtime.jsxs)("div", {
8191
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8236
8192
  className: Workbench_module_css_default.card,
8237
8193
  children: [
8238
- (0, react_jsx_runtime.jsxs)("div", {
8194
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8239
8195
  className: Workbench_module_css_default.cardHead,
8240
8196
  onClick: () => {
8241
8197
  toggleExpand(item);
8242
8198
  },
8243
8199
  children: [
8244
- (0, react_jsx_runtime.jsx)("span", {
8200
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8245
8201
  className: `${Workbench_module_css_default.badge} ${statusClass(item.status)}`,
8246
8202
  children: STATUS_LABELS[item.status] ?? item.status
8247
8203
  }),
8248
- (0, react_jsx_runtime.jsx)("span", {
8204
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8249
8205
  className: `${Workbench_module_css_default.badge} ${item.kind === "negative" ? Workbench_module_css_default.badgeNegative : Workbench_module_css_default.badgePositive}`,
8250
8206
  children: KIND_LABELS[item.kind] ?? item.kind
8251
8207
  }),
8252
- (0, react_jsx_runtime.jsx)("span", {
8208
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8253
8209
  className: Workbench_module_css_default.cardTitle,
8254
8210
  title: item.gist,
8255
8211
  children: item.gist
8256
8212
  }),
8257
- item.pinned && (0, react_jsx_runtime.jsx)("span", {
8213
+ item.pinned && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8258
8214
  className: `${Workbench_module_css_default.badge} ${Workbench_module_css_default.badgePinned}`,
8259
8215
  children: "永久"
8260
8216
  }),
8261
- item.globalFlag && (0, react_jsx_runtime.jsx)("span", {
8217
+ item.globalFlag && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8262
8218
  className: `${Workbench_module_css_default.badge} ${Workbench_module_css_default.badgePinned}`,
8263
8219
  title: "全局作用域:跨领域可召回",
8264
8220
  children: "全局"
8265
8221
  }),
8266
- item.context !== "" && (0, react_jsx_runtime.jsx)("span", {
8222
+ item.context !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8267
8223
  className: `${Workbench_module_css_default.badge} ${Workbench_module_css_default.badgePositive}`,
8268
8224
  title: `作用域:${item.context}`,
8269
8225
  children: item.context
8270
8226
  }),
8271
- (0, react_jsx_runtime.jsxs)("span", {
8227
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
8272
8228
  className: Workbench_module_css_default.cardMeta,
8273
8229
  children: [
8274
8230
  "v",
@@ -8279,11 +8235,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8279
8235
  })
8280
8236
  ]
8281
8237
  }),
8282
- (0, react_jsx_runtime.jsxs)("div", {
8238
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8283
8239
  className: Workbench_module_css_default.cardSub,
8284
8240
  children: [
8285
- (0, react_jsx_runtime.jsx)(TrustTriple, { e: item }),
8286
- (0, react_jsx_runtime.jsxs)("span", {
8241
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TrustTriple, { e: item }),
8242
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
8287
8243
  className: Workbench_module_css_default.cardMeta,
8288
8244
  title: "验证通过次数 / 试探失败次数(人工转正与冷宫决策依据)",
8289
8245
  children: [
@@ -8293,55 +8249,55 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8293
8249
  String(item.rejectCount)
8294
8250
  ]
8295
8251
  }),
8296
- (0, react_jsx_runtime.jsx)("span", {
8252
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8297
8253
  className: Workbench_module_css_default.cardMeta,
8298
8254
  children: formatTs(item.updatedAt)
8299
8255
  })
8300
8256
  ]
8301
8257
  }),
8302
- isOpen && (0, react_jsx_runtime.jsxs)("div", {
8258
+ isOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8303
8259
  className: Workbench_module_css_default.cardDetail,
8304
8260
  children: [
8305
- item.challengeReason !== void 0 && (0, react_jsx_runtime.jsxs)("div", {
8261
+ item.challengeReason !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8306
8262
  className: Workbench_module_css_default.warnLine,
8307
8263
  children: ["隔离原因:", item.challengeReason]
8308
8264
  }),
8309
- item.kind === "negative" && item.failureReason !== void 0 && (0, react_jsx_runtime.jsxs)("div", {
8265
+ item.kind === "negative" && item.failureReason !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8310
8266
  className: Workbench_module_css_default.warnLine,
8311
8267
  children: ["确认的失败原因:", item.failureReason]
8312
8268
  }),
8313
- (0, react_jsx_runtime.jsxs)("div", {
8269
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8314
8270
  className: Workbench_module_css_default.detailRow,
8315
- children: [(0, react_jsx_runtime.jsx)("span", {
8271
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8316
8272
  className: Workbench_module_css_default.detailLabel,
8317
8273
  children: "情境"
8318
8274
  }), item.situation.join(";")]
8319
8275
  }),
8320
- (0, react_jsx_runtime.jsxs)("div", {
8276
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8321
8277
  className: Workbench_module_css_default.detailRow,
8322
- children: [(0, react_jsx_runtime.jsx)("span", {
8278
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8323
8279
  className: Workbench_module_css_default.detailLabel,
8324
8280
  children: "路径"
8325
8281
  }), item.path.map((step) => `${String(step.order)}. ${step.action}`).join(" → ")]
8326
8282
  }),
8327
- (0, react_jsx_runtime.jsxs)("div", {
8283
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8328
8284
  className: Workbench_module_css_default.detailRow,
8329
- children: [(0, react_jsx_runtime.jsx)("span", {
8285
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8330
8286
  className: Workbench_module_css_default.detailLabel,
8331
8287
  children: "判断背景"
8332
8288
  }), item.reasoning]
8333
8289
  }),
8334
- item.limits.length > 0 && (0, react_jsx_runtime.jsxs)("div", {
8290
+ item.limits.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8335
8291
  className: Workbench_module_css_default.detailRow,
8336
- children: [(0, react_jsx_runtime.jsx)("span", {
8292
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8337
8293
  className: Workbench_module_css_default.detailLabel,
8338
8294
  children: "限制"
8339
8295
  }), item.limits.join(";")]
8340
8296
  }),
8341
- (0, react_jsx_runtime.jsxs)("div", {
8297
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8342
8298
  className: Workbench_module_css_default.detailRow,
8343
8299
  children: [
8344
- (0, react_jsx_runtime.jsx)("span", {
8300
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8345
8301
  className: Workbench_module_css_default.detailLabel,
8346
8302
  children: "经济账"
8347
8303
  }),
@@ -8352,10 +8308,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8352
8308
  " tokens"
8353
8309
  ]
8354
8310
  }),
8355
- (0, react_jsx_runtime.jsxs)("div", {
8311
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8356
8312
  className: Workbench_module_css_default.actions,
8357
8313
  children: [
8358
- (0, react_jsx_runtime.jsx)("button", {
8314
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
8359
8315
  type: "button",
8360
8316
  className: Workbench_module_css_default.btn,
8361
8317
  onClick: () => {
@@ -8363,7 +8319,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8363
8319
  },
8364
8320
  children: item.pinned ? "取消永久标记" : "永久标记"
8365
8321
  }),
8366
- item.status === "candidate" && (0, react_jsx_runtime.jsx)("button", {
8322
+ item.status === "candidate" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
8367
8323
  type: "button",
8368
8324
  className: Workbench_module_css_default.btn,
8369
8325
  onClick: () => {
@@ -8371,7 +8327,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8371
8327
  },
8372
8328
  children: "人工转正"
8373
8329
  }),
8374
- item.status === "cold" && (0, react_jsx_runtime.jsx)("button", {
8330
+ item.status === "cold" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
8375
8331
  type: "button",
8376
8332
  className: Workbench_module_css_default.btn,
8377
8333
  onClick: () => {
@@ -8379,7 +8335,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8379
8335
  },
8380
8336
  children: "放回候选"
8381
8337
  }),
8382
- (0, react_jsx_runtime.jsx)("button", {
8338
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
8383
8339
  type: "button",
8384
8340
  className: `${Workbench_module_css_default.btn} ${Workbench_module_css_default.btnDanger}`,
8385
8341
  onClick: () => {
@@ -8389,34 +8345,34 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8389
8345
  })
8390
8346
  ]
8391
8347
  }),
8392
- (0, react_jsx_runtime.jsx)("div", {
8348
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
8393
8349
  className: Workbench_module_css_default.historyTitle,
8394
8350
  children: "修订历史(superseded 为只读索引,可回滚)"
8395
8351
  }),
8396
- (0, react_jsx_runtime.jsxs)("table", {
8352
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("table", {
8397
8353
  className: Workbench_module_css_default.table,
8398
- children: [(0, react_jsx_runtime.jsx)("thead", { children: (0, react_jsx_runtime.jsxs)("tr", { children: [
8399
- (0, react_jsx_runtime.jsx)("th", { children: "版本" }),
8400
- (0, react_jsx_runtime.jsx)("th", { children: "状态" }),
8401
- (0, react_jsx_runtime.jsx)("th", { children: "置信三元组" }),
8402
- (0, react_jsx_runtime.jsx)("th", { children: "更新时间" }),
8403
- (0, react_jsx_runtime.jsx)("th", { children: "操作" })
8404
- ] }) }), (0, react_jsx_runtime.jsx)("tbody", { children: history.map((rev) => (0, react_jsx_runtime.jsxs)("tr", { children: [
8405
- (0, react_jsx_runtime.jsxs)("td", { children: [
8354
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("thead", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("tr", { children: [
8355
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "版本" }),
8356
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "状态" }),
8357
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "置信三元组" }),
8358
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "更新时间" }),
8359
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "操作" })
8360
+ ] }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("tbody", { children: history.map((rev) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("tr", { children: [
8361
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("td", { children: [
8406
8362
  "v",
8407
8363
  String(rev.revision),
8408
8364
  rev.parentRevision !== void 0 ? ` ← v${String(rev.parentRevision)}` : ""
8409
8365
  ] }),
8410
- (0, react_jsx_runtime.jsx)("td", { children: STATUS_LABELS[rev.status] ?? rev.status }),
8411
- (0, react_jsx_runtime.jsxs)("td", { children: [
8366
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", { children: STATUS_LABELS[rev.status] ?? rev.status }),
8367
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("td", { children: [
8412
8368
  rev.trust.toFixed(2),
8413
8369
  " · ",
8414
8370
  String(rev.samples),
8415
8371
  " · ",
8416
8372
  rev.lastVerifiedAt === void 0 ? "未验证" : formatTs(rev.lastVerifiedAt)
8417
8373
  ] }),
8418
- (0, react_jsx_runtime.jsx)("td", { children: formatTs(rev.updatedAt) }),
8419
- (0, react_jsx_runtime.jsx)("td", { children: rev.status === "superseded" && (0, react_jsx_runtime.jsx)("button", {
8374
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", { children: formatTs(rev.updatedAt) }),
8375
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", { children: rev.status === "superseded" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
8420
8376
  type: "button",
8421
8377
  className: Workbench_module_css_default.btn,
8422
8378
  onClick: () => {
@@ -8436,7 +8392,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8436
8392
  });
8437
8393
  }
8438
8394
  //#endregion
8439
- //#region lib/types/client/FactDiaryPage.js
8395
+ //#region src/client/FactDiaryPage.tsx
8440
8396
  /**
8441
8397
  * Profile·concerns page, split into two sub-pages: 关心事项 (open-loop memos) /
8442
8398
  * 画像分类 (the AI's perception of the user). The event-layer diary is the
@@ -8488,23 +8444,23 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8488
8444
  }];
8489
8445
  /** Shared page-size choices for the paginated sub-pages. */
8490
8446
  function PageSizeSelect({ value, onChange }) {
8491
- return (0, react_jsx_runtime.jsxs)("label", {
8447
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
8492
8448
  className: Workbench_module_css_default.field,
8493
- children: [(0, react_jsx_runtime.jsx)("span", { children: "每页" }), (0, react_jsx_runtime.jsxs)("select", {
8449
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "每页" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
8494
8450
  value: String(value),
8495
8451
  onChange: (e) => {
8496
8452
  onChange(Number(e.target.value));
8497
8453
  },
8498
8454
  children: [
8499
- (0, react_jsx_runtime.jsx)("option", {
8455
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
8500
8456
  value: "10",
8501
8457
  children: "10"
8502
8458
  }),
8503
- (0, react_jsx_runtime.jsx)("option", {
8459
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
8504
8460
  value: "20",
8505
8461
  children: "20"
8506
8462
  }),
8507
- (0, react_jsx_runtime.jsx)("option", {
8463
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
8508
8464
  value: "50",
8509
8465
  children: "50"
8510
8466
  })
@@ -8515,10 +8471,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8515
8471
  /** Compact prev/next pager with a filtered total. */
8516
8472
  function Pager({ page, pageSize, total, onPage }) {
8517
8473
  const totalPages = Math.max(1, Math.ceil(total / pageSize));
8518
- return (0, react_jsx_runtime.jsxs)("div", {
8474
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8519
8475
  className: Workbench_module_css_default.toolbar,
8520
8476
  children: [
8521
- (0, react_jsx_runtime.jsx)("button", {
8477
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
8522
8478
  type: "button",
8523
8479
  className: Workbench_module_css_default.btn,
8524
8480
  disabled: page <= 0,
@@ -8527,7 +8483,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8527
8483
  },
8528
8484
  children: "上一页"
8529
8485
  }),
8530
- (0, react_jsx_runtime.jsxs)("span", {
8486
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
8531
8487
  className: Workbench_module_css_default.cardMeta,
8532
8488
  children: [
8533
8489
  "第 ",
@@ -8539,7 +8495,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8539
8495
  " 条 · 最新在前"
8540
8496
  ]
8541
8497
  }),
8542
- (0, react_jsx_runtime.jsx)("button", {
8498
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
8543
8499
  type: "button",
8544
8500
  className: Workbench_module_css_default.btn,
8545
8501
  disabled: page + 1 >= totalPages,
@@ -8694,31 +8650,31 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8694
8650
  onChanged,
8695
8651
  refresh
8696
8652
  ]);
8697
- return (0, react_jsx_runtime.jsxs)("div", {
8653
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8698
8654
  className: Workbench_module_css_default.page,
8699
8655
  children: [
8700
- (0, react_jsx_runtime.jsxs)("div", {
8656
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8701
8657
  className: Workbench_module_css_default.empty,
8702
8658
  children: [
8703
8659
  "「记」的产物分两层:",
8704
- (0, react_jsx_runtime.jsx)("b", { children: "画像分类" }),
8660
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("b", { children: "画像分类" }),
8705
8661
  "是 AI 通过对话沉淀出的\"这个用户是什么样的人、怎么跟他协作\"(稳定特质,每条可展开看来源日记);",
8706
- (0, react_jsx_runtime.jsx)("b", { children: "关心事项" }),
8662
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("b", { children: "关心事项" }),
8707
8663
  "是替用户记着的",
8708
- (0, react_jsx_runtime.jsx)("b", { children: "开环备忘" }),
8664
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("b", { children: "开环备忘" }),
8709
8665
  "——提过还没办的事、冒出的想法、悬而未决的问题、待定的决定、答应的事。 事件层日记是原料(只增不删),不单列子页,作为画像的\"来源日记\"露出。提取是否在跑,看右上角「待提取」数即可。"
8710
8666
  ]
8711
8667
  }),
8712
- (0, react_jsx_runtime.jsxs)("div", {
8668
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8713
8669
  className: Workbench_module_css_default.tabs,
8714
- children: [TABS.map((t) => (0, react_jsx_runtime.jsx)("button", {
8670
+ children: [TABS.map((t) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
8715
8671
  type: "button",
8716
8672
  className: tab === t.key ? `${Workbench_module_css_default.tab} ${Workbench_module_css_default.tabActive}` : Workbench_module_css_default.tab,
8717
8673
  onClick: () => {
8718
8674
  setTab(t.key);
8719
8675
  },
8720
8676
  children: t.label
8721
- }, t.key)), (0, react_jsx_runtime.jsx)("button", {
8677
+ }, t.key)), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
8722
8678
  type: "button",
8723
8679
  className: Workbench_module_css_default.btn,
8724
8680
  onClick: refresh,
@@ -8726,51 +8682,51 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8726
8682
  children: "刷新"
8727
8683
  })]
8728
8684
  }),
8729
- tab === "concerns" && (0, react_jsx_runtime.jsxs)("section", {
8685
+ tab === "concerns" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
8730
8686
  className: Workbench_module_css_default.column,
8731
8687
  children: [
8732
- (0, react_jsx_runtime.jsxs)("div", {
8688
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8733
8689
  className: Workbench_module_css_default.toolbar,
8734
8690
  children: [
8735
- (0, react_jsx_runtime.jsx)("span", {
8691
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8736
8692
  className: Workbench_module_css_default.sectionTitle,
8737
8693
  children: "关心事项 · 开环备忘(替你记着还没闭环的事,用于提醒)"
8738
8694
  }),
8739
- (0, react_jsx_runtime.jsxs)("label", {
8695
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
8740
8696
  className: Workbench_module_css_default.field,
8741
- children: [(0, react_jsx_runtime.jsx)("span", { children: "类型" }), (0, react_jsx_runtime.jsxs)("select", {
8697
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "类型" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
8742
8698
  value: concernKind,
8743
8699
  onChange: (e) => {
8744
8700
  setConcernKind(e.target.value);
8745
8701
  setConcernPage(0);
8746
8702
  },
8747
- children: [(0, react_jsx_runtime.jsx)("option", {
8703
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
8748
8704
  value: "",
8749
8705
  children: "全部"
8750
- }), Object.entries(CONCERN_KIND_LABELS).map(([value, label]) => (0, react_jsx_runtime.jsx)("option", {
8706
+ }), Object.entries(CONCERN_KIND_LABELS).map(([value, label]) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
8751
8707
  value,
8752
8708
  children: label
8753
8709
  }, value))]
8754
8710
  })]
8755
8711
  }),
8756
- (0, react_jsx_runtime.jsxs)("label", {
8712
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
8757
8713
  className: Workbench_module_css_default.field,
8758
- children: [(0, react_jsx_runtime.jsx)("span", { children: "状态" }), (0, react_jsx_runtime.jsxs)("select", {
8714
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "状态" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
8759
8715
  value: concernStatus,
8760
8716
  onChange: (e) => {
8761
8717
  setConcernStatus(e.target.value);
8762
8718
  setConcernPage(0);
8763
8719
  },
8764
- children: [(0, react_jsx_runtime.jsx)("option", {
8720
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
8765
8721
  value: "",
8766
8722
  children: "全部"
8767
- }), Object.entries(CONCERN_STATUS_LABELS).map(([value, label]) => (0, react_jsx_runtime.jsx)("option", {
8723
+ }), Object.entries(CONCERN_STATUS_LABELS).map(([value, label]) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
8768
8724
  value,
8769
8725
  children: label
8770
8726
  }, value))]
8771
8727
  })]
8772
8728
  }),
8773
- (0, react_jsx_runtime.jsx)(PageSizeSelect, {
8729
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageSizeSelect, {
8774
8730
  value: concernPageSize,
8775
8731
  onChange: (v) => {
8776
8732
  setConcernPageSize(v);
@@ -8779,19 +8735,19 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8779
8735
  })
8780
8736
  ]
8781
8737
  }),
8782
- concerns.length === 0 && (0, react_jsx_runtime.jsx)("div", {
8738
+ concerns.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
8783
8739
  className: Workbench_module_css_default.empty,
8784
8740
  children: "还没有关心事项。代理提取时(memory_extract 的 concerns)会沉淀你提过但还没闭环的事:待办、思考、想法、疑问、决定、约定。"
8785
8741
  }),
8786
- (0, react_jsx_runtime.jsx)("div", {
8742
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
8787
8743
  className: Workbench_module_css_default.list,
8788
- children: concerns.map((tree) => (0, react_jsx_runtime.jsxs)("div", {
8744
+ children: concerns.map((tree) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8789
8745
  className: Workbench_module_css_default.card,
8790
8746
  children: [
8791
- (0, react_jsx_runtime.jsxs)("div", {
8747
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8792
8748
  className: Workbench_module_css_default.cardHead,
8793
8749
  children: [
8794
- (0, react_jsx_runtime.jsx)("span", {
8750
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8795
8751
  className: Workbench_module_css_default.payloadToggle,
8796
8752
  title: openConcerns[tree.concern.id] === true ? "收起更新" : "展开更新",
8797
8753
  onClick: () => {
@@ -8799,19 +8755,19 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8799
8755
  },
8800
8756
  children: openConcerns[tree.concern.id] === true ? "▾" : "▸"
8801
8757
  }),
8802
- (0, react_jsx_runtime.jsx)("span", {
8758
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8803
8759
  className: `${Workbench_module_css_default.badge} ${Workbench_module_css_default.statusCandidate}`,
8804
8760
  children: CONCERN_KIND_LABELS[tree.concern.kind ?? "other"] ?? "其他"
8805
8761
  }),
8806
- (0, react_jsx_runtime.jsx)("span", {
8762
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8807
8763
  className: Workbench_module_css_default.cardTitle,
8808
8764
  children: tree.concern.title
8809
8765
  }),
8810
- (0, react_jsx_runtime.jsx)("span", {
8766
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8811
8767
  className: `${Workbench_module_css_default.badge} ${Workbench_module_css_default.statusOther}`,
8812
8768
  children: CONCERN_STATUS_LABELS[tree.concern.status ?? "ongoing"] ?? "未闭环"
8813
8769
  }),
8814
- (0, react_jsx_runtime.jsxs)("span", {
8770
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
8815
8771
  className: Workbench_module_css_default.cardMeta,
8816
8772
  children: [
8817
8773
  "更新 ",
@@ -8821,62 +8777,62 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8821
8777
  })
8822
8778
  ]
8823
8779
  }),
8824
- tree.concern.background !== void 0 && tree.concern.background !== "" && (0, react_jsx_runtime.jsxs)("div", {
8780
+ tree.concern.background !== void 0 && tree.concern.background !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8825
8781
  className: Workbench_module_css_default.concernBg,
8826
8782
  children: ["背景:", tree.concern.background]
8827
8783
  }),
8828
- openConcerns[tree.concern.id] === true && (0, react_jsx_runtime.jsxs)("div", {
8784
+ openConcerns[tree.concern.id] === true && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8829
8785
  className: Workbench_module_css_default.list,
8830
- children: [tree.mentions.length === 0 && (0, react_jsx_runtime.jsx)("div", {
8786
+ children: [tree.mentions.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
8831
8787
  className: Workbench_module_css_default.cardSub,
8832
- children: (0, react_jsx_runtime.jsx)("span", {
8788
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8833
8789
  className: Workbench_module_css_default.cardMeta,
8834
8790
  children: "暂无后续更新。"
8835
8791
  })
8836
- }), tree.mentions.map((mention) => (0, react_jsx_runtime.jsxs)("div", {
8792
+ }), tree.mentions.map((mention) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8837
8793
  className: Workbench_module_css_default.cardSub,
8838
8794
  children: [
8839
- (0, react_jsx_runtime.jsx)("span", {
8795
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8840
8796
  className: Workbench_module_css_default.cardMeta,
8841
8797
  children: formatTs(mention.ts)
8842
8798
  }),
8843
- (0, react_jsx_runtime.jsx)("span", {
8799
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8844
8800
  className: Workbench_module_css_default.cardTitle,
8845
8801
  children: mention.title
8846
8802
  }),
8847
- mention.sourceDiaryIds.length > 0 && (0, react_jsx_runtime.jsxs)("span", {
8803
+ mention.sourceDiaryIds.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
8848
8804
  className: Workbench_module_css_default.cardMeta,
8849
8805
  children: ["← 日记 ", mention.sourceDiaryIds.map((id) => id.slice(0, 6)).join("、")]
8850
8806
  })
8851
8807
  ]
8852
8808
  }, mention.id))]
8853
8809
  }),
8854
- (0, react_jsx_runtime.jsxs)("div", {
8810
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8855
8811
  className: Workbench_module_css_default.cardSub,
8856
- children: [(0, react_jsx_runtime.jsxs)("select", {
8812
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
8857
8813
  value: tree.concern.status ?? "ongoing",
8858
8814
  onChange: (e) => {
8859
8815
  runSetConcernStatus(tree, e.target.value);
8860
8816
  },
8861
8817
  children: [
8862
- (0, react_jsx_runtime.jsx)("option", {
8818
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
8863
8819
  value: "ongoing",
8864
8820
  children: "未闭环"
8865
8821
  }),
8866
- (0, react_jsx_runtime.jsx)("option", {
8822
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
8867
8823
  value: "concluded",
8868
8824
  children: "已闭环"
8869
8825
  }),
8870
- (0, react_jsx_runtime.jsx)("option", {
8826
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
8871
8827
  value: "recurring",
8872
8828
  children: "反复出现"
8873
8829
  }),
8874
- (0, react_jsx_runtime.jsx)("option", {
8830
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
8875
8831
  value: "paused",
8876
8832
  children: "搁置"
8877
8833
  })
8878
8834
  ]
8879
- }), (0, react_jsx_runtime.jsx)("button", {
8835
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
8880
8836
  type: "button",
8881
8837
  className: `${Workbench_module_css_default.btn} ${Workbench_module_css_default.btnDanger}`,
8882
8838
  onClick: () => {
@@ -8888,7 +8844,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8888
8844
  ]
8889
8845
  }, tree.concern.id))
8890
8846
  }),
8891
- (0, react_jsx_runtime.jsx)(Pager, {
8847
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Pager, {
8892
8848
  page: concernPage,
8893
8849
  pageSize: concernPageSize,
8894
8850
  total: concernTotal,
@@ -8896,32 +8852,32 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8896
8852
  })
8897
8853
  ]
8898
8854
  }),
8899
- tab === "facts" && (0, react_jsx_runtime.jsxs)("section", {
8855
+ tab === "facts" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
8900
8856
  className: Workbench_module_css_default.column,
8901
8857
  children: [
8902
- (0, react_jsx_runtime.jsxs)("div", {
8858
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8903
8859
  className: Workbench_module_css_default.toolbar,
8904
8860
  children: [
8905
- (0, react_jsx_runtime.jsxs)("label", {
8861
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
8906
8862
  className: Workbench_module_css_default.field,
8907
- children: [(0, react_jsx_runtime.jsx)("span", { children: "画像分类" }), (0, react_jsx_runtime.jsxs)("select", {
8863
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "画像分类" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
8908
8864
  value: category,
8909
8865
  onChange: (e) => {
8910
8866
  setCategory(e.target.value);
8911
8867
  setFactPage(0);
8912
8868
  },
8913
- children: [(0, react_jsx_runtime.jsx)("option", {
8869
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
8914
8870
  value: "",
8915
8871
  children: "全部"
8916
- }), Object.entries(CATEGORY_LABELS$1).map(([value, label]) => (0, react_jsx_runtime.jsx)("option", {
8872
+ }), Object.entries(CATEGORY_LABELS$1).map(([value, label]) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
8917
8873
  value,
8918
8874
  children: label
8919
8875
  }, value))]
8920
8876
  })]
8921
8877
  }),
8922
- (0, react_jsx_runtime.jsxs)("label", {
8878
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
8923
8879
  className: Workbench_module_css_default.check,
8924
- children: [(0, react_jsx_runtime.jsx)("input", {
8880
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
8925
8881
  type: "checkbox",
8926
8882
  checked: includeHistory,
8927
8883
  onChange: (e) => {
@@ -8930,7 +8886,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8930
8886
  }
8931
8887
  }), "显示历史版本(双时间轴)"]
8932
8888
  }),
8933
- (0, react_jsx_runtime.jsx)(PageSizeSelect, {
8889
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageSizeSelect, {
8934
8890
  value: factPageSize,
8935
8891
  onChange: (v) => {
8936
8892
  setFactPageSize(v);
@@ -8939,48 +8895,48 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8939
8895
  })
8940
8896
  ]
8941
8897
  }),
8942
- error !== null && (0, react_jsx_runtime.jsx)("div", {
8898
+ error !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
8943
8899
  className: Workbench_module_css_default.error,
8944
8900
  children: error
8945
8901
  }),
8946
- facts.length === 0 && (0, react_jsx_runtime.jsx)("div", {
8902
+ facts.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
8947
8903
  className: Workbench_module_css_default.empty,
8948
8904
  children: "暂无画像条目。代理记录日记后按周期提取(memory_extract),或在本页「人工管理」中直接添加。"
8949
8905
  }),
8950
- (0, react_jsx_runtime.jsxs)("table", {
8906
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("table", {
8951
8907
  className: Workbench_module_css_default.table,
8952
- children: [(0, react_jsx_runtime.jsx)("thead", { children: (0, react_jsx_runtime.jsxs)("tr", { children: [
8953
- (0, react_jsx_runtime.jsx)("th", { children: "分类/键" }),
8954
- (0, react_jsx_runtime.jsx)("th", { children: "值" }),
8955
- (0, react_jsx_runtime.jsx)("th", { children: "佐证" }),
8956
- (0, react_jsx_runtime.jsx)("th", { children: "来源" }),
8957
- (0, react_jsx_runtime.jsx)("th", { children: "状态" }),
8958
- (0, react_jsx_runtime.jsx)("th", { children: "生效起" }),
8959
- (0, react_jsx_runtime.jsx)("th", { children: "操作" })
8960
- ] }) }), (0, react_jsx_runtime.jsx)("tbody", { children: facts.map((fact) => (0, react_jsx_runtime.jsxs)(react.Fragment, { children: [(0, react_jsx_runtime.jsxs)("tr", { children: [
8961
- (0, react_jsx_runtime.jsxs)("td", { children: [
8908
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("thead", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("tr", { children: [
8909
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "分类/键" }),
8910
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "值" }),
8911
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "佐证" }),
8912
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "来源" }),
8913
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "状态" }),
8914
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "生效起" }),
8915
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "操作" })
8916
+ ] }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("tbody", { children: facts.map((fact) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("tr", { children: [
8917
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("td", { children: [
8962
8918
  CATEGORY_LABELS$1[fact.category] ?? fact.category,
8963
8919
  " / ",
8964
8920
  fact.factKey
8965
8921
  ] }),
8966
- (0, react_jsx_runtime.jsx)("td", {
8922
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", {
8967
8923
  className: Workbench_module_css_default.valueCell,
8968
8924
  children: fact.value
8969
8925
  }),
8970
- (0, react_jsx_runtime.jsxs)("td", { children: ["×", String(fact.corroboration)] }),
8971
- (0, react_jsx_runtime.jsx)("td", { children: fact.sourceDiaryIds.length === 0 ? (0, react_jsx_runtime.jsx)("span", {
8926
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("td", { children: ["×", String(fact.corroboration)] }),
8927
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", { children: fact.sourceDiaryIds.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8972
8928
  className: Workbench_module_css_default.cardMeta,
8973
8929
  children: "人工/无"
8974
- }) : (0, react_jsx_runtime.jsxs)("span", {
8930
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
8975
8931
  className: Workbench_module_css_default.cellActions,
8976
- children: [(0, react_jsx_runtime.jsx)("span", {
8932
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8977
8933
  className: Workbench_module_css_default.payloadToggle,
8978
8934
  title: openFactSources[fact.id] === true ? "收起来源日记" : "展开来源日记",
8979
8935
  onClick: () => {
8980
8936
  toggleFactSources(fact);
8981
8937
  },
8982
8938
  children: openFactSources[fact.id] === true ? "▾" : "▸"
8983
- }), (0, react_jsx_runtime.jsxs)("span", {
8939
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
8984
8940
  className: Workbench_module_css_default.cardMeta,
8985
8941
  children: [
8986
8942
  "← ",
@@ -8989,25 +8945,25 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8989
8945
  ]
8990
8946
  })]
8991
8947
  }) }),
8992
- (0, react_jsx_runtime.jsxs)("td", { children: [
8993
- fact.locked && (0, react_jsx_runtime.jsx)("span", {
8948
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("td", { children: [
8949
+ fact.locked && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8994
8950
  className: `${Workbench_module_css_default.badge} ${Workbench_module_css_default.badgePinned}`,
8995
8951
  children: "已确认"
8996
8952
  }),
8997
- fact.conflictPending && (0, react_jsx_runtime.jsx)("span", {
8953
+ fact.conflictPending && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8998
8954
  className: `${Workbench_module_css_default.badge} ${Workbench_module_css_default.badgeConflict}`,
8999
8955
  children: "冲突待裁决"
9000
8956
  }),
9001
- fact.validTo !== void 0 && (0, react_jsx_runtime.jsx)("span", {
8957
+ fact.validTo !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
9002
8958
  className: `${Workbench_module_css_default.badge} ${Workbench_module_css_default.statusOther}`,
9003
8959
  children: "历史"
9004
8960
  })
9005
8961
  ] }),
9006
- (0, react_jsx_runtime.jsx)("td", { children: formatTs(fact.validFrom) }),
9007
- (0, react_jsx_runtime.jsxs)("td", {
8962
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", { children: formatTs(fact.validFrom) }),
8963
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("td", {
9008
8964
  className: Workbench_module_css_default.cellActions,
9009
8965
  children: [
9010
- (0, react_jsx_runtime.jsx)("button", {
8966
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9011
8967
  type: "button",
9012
8968
  className: Workbench_module_css_default.btn,
9013
8969
  onClick: () => {
@@ -9015,7 +8971,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9015
8971
  },
9016
8972
  children: fact.locked ? "解锁" : "确认"
9017
8973
  }),
9018
- (0, react_jsx_runtime.jsx)("button", {
8974
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9019
8975
  type: "button",
9020
8976
  className: Workbench_module_css_default.btn,
9021
8977
  onClick: () => {
@@ -9023,7 +8979,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9023
8979
  },
9024
8980
  children: "编辑"
9025
8981
  }),
9026
- (0, react_jsx_runtime.jsx)("button", {
8982
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9027
8983
  type: "button",
9028
8984
  className: `${Workbench_module_css_default.btn} ${Workbench_module_css_default.btnDanger}`,
9029
8985
  onClick: () => {
@@ -9033,28 +8989,28 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9033
8989
  })
9034
8990
  ]
9035
8991
  })
9036
- ] }), openFactSources[fact.id] === true && (0, react_jsx_runtime.jsx)("tr", { children: (0, react_jsx_runtime.jsx)("td", {
8992
+ ] }), openFactSources[fact.id] === true && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("tr", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", {
9037
8993
  colSpan: 7,
9038
- children: (0, react_jsx_runtime.jsx)("div", {
8994
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9039
8995
  className: Workbench_module_css_default.list,
9040
- children: (factSources[fact.id] ?? []).length === 0 ? (0, react_jsx_runtime.jsx)("div", {
8996
+ children: (factSources[fact.id] ?? []).length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9041
8997
  className: Workbench_module_css_default.cardSub,
9042
- children: (0, react_jsx_runtime.jsx)("span", {
8998
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
9043
8999
  className: Workbench_module_css_default.cardMeta,
9044
9000
  children: "加载中…(或来源日记已不存在)"
9045
9001
  })
9046
- }) : (factSources[fact.id] ?? []).map((entry) => (0, react_jsx_runtime.jsxs)("div", {
9002
+ }) : (factSources[fact.id] ?? []).map((entry) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9047
9003
  className: Workbench_module_css_default.cardSub,
9048
9004
  children: [
9049
- (0, react_jsx_runtime.jsx)("span", {
9005
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
9050
9006
  className: `${Workbench_module_css_default.badge} ${Workbench_module_css_default.statusCandidate}`,
9051
9007
  children: DIARY_KIND_LABELS[entry.kind] ?? entry.kind
9052
9008
  }),
9053
- (0, react_jsx_runtime.jsx)("span", {
9009
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
9054
9010
  className: Workbench_module_css_default.cardTitle,
9055
9011
  children: entry.content
9056
9012
  }),
9057
- (0, react_jsx_runtime.jsx)("span", {
9013
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
9058
9014
  className: Workbench_module_css_default.cardMeta,
9059
9015
  children: formatTs(entry.ts)
9060
9016
  })
@@ -9063,7 +9019,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9063
9019
  })
9064
9020
  }) })] }, fact.id)) })]
9065
9021
  }),
9066
- (0, react_jsx_runtime.jsx)(Pager, {
9022
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Pager, {
9067
9023
  page: factPage,
9068
9024
  pageSize: factPageSize,
9069
9025
  total: factTotal,
@@ -9075,7 +9031,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9075
9031
  });
9076
9032
  }
9077
9033
  //#endregion
9078
- //#region lib/types/client/LedgerPage.js
9034
+ //#region src/client/LedgerPage.tsx
9079
9035
  /**
9080
9036
  * Ledger page: the append-only hash-chained audit trail of every memory
9081
9037
  * mutation (agent and human alike), with filters, an end-to-end integrity
@@ -9191,70 +9147,70 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9191
9147
  setError(e instanceof Error ? e.message : String(e));
9192
9148
  });
9193
9149
  }, [actions]);
9194
- return (0, react_jsx_runtime.jsxs)("div", {
9150
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9195
9151
  className: Workbench_module_css_default.page,
9196
9152
  children: [
9197
- (0, react_jsx_runtime.jsx)("div", {
9153
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9198
9154
  className: Workbench_module_css_default.empty,
9199
9155
  children: "账本是「修」的审计底座:每一次生·用·修·记操作(代理与人工 alike)都追加一块, 块内含上一块哈希,形成不可篡改的哈希链。它回答「谁、在何时、对哪条记忆、 做了什么、为什么」。「完整性校验」重算全链验证无篡改;人工操作必须填原因。"
9200
9156
  }),
9201
- (0, react_jsx_runtime.jsxs)("div", {
9157
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9202
9158
  className: Workbench_module_css_default.toolbar,
9203
9159
  children: [
9204
- (0, react_jsx_runtime.jsxs)("label", {
9160
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9205
9161
  className: Workbench_module_css_default.field,
9206
- children: [(0, react_jsx_runtime.jsx)("span", { children: "对象类型" }), (0, react_jsx_runtime.jsxs)("select", {
9162
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "对象类型" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
9207
9163
  value: objectType,
9208
9164
  onChange: (e) => {
9209
9165
  applyFilter(setObjectType)(e.target.value);
9210
9166
  },
9211
9167
  children: [
9212
- (0, react_jsx_runtime.jsx)("option", {
9168
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9213
9169
  value: "",
9214
9170
  children: "全部"
9215
9171
  }),
9216
- (0, react_jsx_runtime.jsx)("option", {
9172
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9217
9173
  value: "experience",
9218
9174
  children: "经验"
9219
9175
  }),
9220
- (0, react_jsx_runtime.jsx)("option", {
9176
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9221
9177
  value: "fact",
9222
9178
  children: "画像"
9223
9179
  }),
9224
- (0, react_jsx_runtime.jsx)("option", {
9180
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9225
9181
  value: "diary",
9226
9182
  children: "日记"
9227
9183
  }),
9228
- (0, react_jsx_runtime.jsx)("option", {
9184
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9229
9185
  value: "concern",
9230
9186
  children: "关心事项"
9231
9187
  }),
9232
- (0, react_jsx_runtime.jsx)("option", {
9188
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9233
9189
  value: "library",
9234
9190
  children: "库级"
9235
9191
  })
9236
9192
  ]
9237
9193
  })]
9238
9194
  }),
9239
- (0, react_jsx_runtime.jsxs)("label", {
9195
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9240
9196
  className: Workbench_module_css_default.field,
9241
- children: [(0, react_jsx_runtime.jsx)("span", { children: "操作" }), (0, react_jsx_runtime.jsxs)("select", {
9197
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "操作" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
9242
9198
  value: op,
9243
9199
  onChange: (e) => {
9244
9200
  applyFilter(setOp)(e.target.value);
9245
9201
  },
9246
- children: [(0, react_jsx_runtime.jsx)("option", {
9202
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9247
9203
  value: "",
9248
9204
  children: "全部"
9249
- }), Object.keys(OP_LABELS).map((key) => (0, react_jsx_runtime.jsx)("option", {
9205
+ }), Object.keys(OP_LABELS).map((key) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9250
9206
  value: key,
9251
9207
  children: opLabel(key)
9252
9208
  }, key))]
9253
9209
  })]
9254
9210
  }),
9255
- (0, react_jsx_runtime.jsxs)("label", {
9211
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9256
9212
  className: Workbench_module_css_default.field,
9257
- children: [(0, react_jsx_runtime.jsx)("span", { children: "对象 id" }), (0, react_jsx_runtime.jsx)("input", {
9213
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "对象 id" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
9258
9214
  value: objectId,
9259
9215
  placeholder: "经验或画像 id",
9260
9216
  onChange: (e) => {
@@ -9262,9 +9218,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9262
9218
  }
9263
9219
  })]
9264
9220
  }),
9265
- (0, react_jsx_runtime.jsxs)("label", {
9221
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9266
9222
  className: Workbench_module_css_default.field,
9267
- children: [(0, react_jsx_runtime.jsx)("span", { children: "块号从" }), (0, react_jsx_runtime.jsx)("input", {
9223
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "块号从" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
9268
9224
  value: seqFrom,
9269
9225
  placeholder: "如 1",
9270
9226
  onChange: (e) => {
@@ -9272,9 +9228,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9272
9228
  }
9273
9229
  })]
9274
9230
  }),
9275
- (0, react_jsx_runtime.jsxs)("label", {
9231
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9276
9232
  className: Workbench_module_css_default.field,
9277
- children: [(0, react_jsx_runtime.jsx)("span", { children: "到" }), (0, react_jsx_runtime.jsx)("input", {
9233
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "到" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
9278
9234
  value: seqTo,
9279
9235
  placeholder: "如 100",
9280
9236
  onChange: (e) => {
@@ -9282,13 +9238,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9282
9238
  }
9283
9239
  })]
9284
9240
  }),
9285
- (0, react_jsx_runtime.jsx)("button", {
9241
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9286
9242
  type: "button",
9287
9243
  className: Workbench_module_css_default.btn,
9288
9244
  onClick: refresh,
9289
9245
  children: "刷新"
9290
9246
  }),
9291
- (0, react_jsx_runtime.jsx)("button", {
9247
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9292
9248
  type: "button",
9293
9249
  className: Workbench_module_css_default.btn,
9294
9250
  onClick: runIntegrity,
@@ -9296,20 +9252,20 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9296
9252
  title: "从第 1 块起逐块重算哈希并与块内存储的哈希比对,任何篡改都会导致断裂",
9297
9253
  children: checking ? "校验中…" : "完整性校验"
9298
9254
  }),
9299
- (0, react_jsx_runtime.jsx)("button", {
9255
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9300
9256
  type: "button",
9301
9257
  className: Workbench_module_css_default.btn,
9302
9258
  onClick: runExport,
9303
9259
  children: "导出全库 JSON"
9304
9260
  }),
9305
- integrity !== null && (integrity.ok ? (0, react_jsx_runtime.jsxs)("span", {
9261
+ integrity !== null && (integrity.ok ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
9306
9262
  className: Workbench_module_css_default.okLine,
9307
9263
  children: [
9308
9264
  "✓ 哈希链完整(",
9309
9265
  String(integrity.checked),
9310
9266
  " 块)"
9311
9267
  ]
9312
- }) : (0, react_jsx_runtime.jsxs)("span", {
9268
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
9313
9269
  className: Workbench_module_css_default.error,
9314
9270
  children: [
9315
9271
  "✗ 哈希链在 #",
@@ -9317,46 +9273,46 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9317
9273
  " 处断裂"
9318
9274
  ]
9319
9275
  })),
9320
- error !== null && (0, react_jsx_runtime.jsx)("span", {
9276
+ error !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
9321
9277
  className: Workbench_module_css_default.error,
9322
9278
  children: error
9323
9279
  })
9324
9280
  ]
9325
9281
  }),
9326
- blocks.length === 0 && (0, react_jsx_runtime.jsx)("div", {
9282
+ blocks.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9327
9283
  className: Workbench_module_css_default.empty,
9328
9284
  children: "账本为空:还没有任何生用修记操作。"
9329
9285
  }),
9330
- (0, react_jsx_runtime.jsxs)("table", {
9286
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("table", {
9331
9287
  className: Workbench_module_css_default.table,
9332
- children: [(0, react_jsx_runtime.jsx)("thead", { children: (0, react_jsx_runtime.jsxs)("tr", { children: [
9333
- (0, react_jsx_runtime.jsx)("th", { children: "#" }),
9334
- (0, react_jsx_runtime.jsx)("th", { children: "时间" }),
9335
- (0, react_jsx_runtime.jsx)("th", { children: "操作" }),
9336
- (0, react_jsx_runtime.jsx)("th", { children: "对象" }),
9337
- (0, react_jsx_runtime.jsx)("th", { children: "行动者" }),
9338
- (0, react_jsx_runtime.jsx)("th", { children: "原因" }),
9339
- (0, react_jsx_runtime.jsx)("th", { children: "载荷" })
9340
- ] }) }), (0, react_jsx_runtime.jsx)("tbody", { children: blocks.map((block) => (0, react_jsx_runtime.jsxs)("tr", { children: [
9341
- (0, react_jsx_runtime.jsx)("td", { children: String(block.seq) }),
9342
- (0, react_jsx_runtime.jsx)("td", { children: formatTs(block.ts) }),
9343
- (0, react_jsx_runtime.jsx)("td", { children: (0, react_jsx_runtime.jsx)("span", {
9288
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("thead", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("tr", { children: [
9289
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "#" }),
9290
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "时间" }),
9291
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "操作" }),
9292
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "对象" }),
9293
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "行动者" }),
9294
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "原因" }),
9295
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: "载荷" })
9296
+ ] }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("tbody", { children: blocks.map((block) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("tr", { children: [
9297
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", { children: String(block.seq) }),
9298
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", { children: formatTs(block.ts) }),
9299
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
9344
9300
  className: `${Workbench_module_css_default.badge} ${Workbench_module_css_default.statusCandidate}`,
9345
9301
  children: opLabel(block.op)
9346
9302
  }) }),
9347
- (0, react_jsx_runtime.jsxs)("td", { children: [
9303
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("td", { children: [
9348
9304
  block.objectType,
9349
9305
  ":",
9350
9306
  block.objectId.slice(0, 8)
9351
9307
  ] }),
9352
- (0, react_jsx_runtime.jsx)("td", { children: block.actor }),
9353
- (0, react_jsx_runtime.jsx)("td", { children: block.reason ?? "" }),
9354
- (0, react_jsx_runtime.jsx)("td", { children: (0, react_jsx_runtime.jsxs)("div", {
9308
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", { children: block.actor }),
9309
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", { children: block.reason ?? "" }),
9310
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9355
9311
  className: Workbench_module_css_default.cellActions,
9356
- children: [(0, react_jsx_runtime.jsx)("div", {
9312
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9357
9313
  className: expandedSeq === block.seq ? Workbench_module_css_default.payloadFull : Workbench_module_css_default.valueCell,
9358
9314
  children: expandedSeq === block.seq ? block.payload : block.payload.length > 80 ? `${block.payload.slice(0, 80)}…` : block.payload
9359
- }), block.payload.length > 80 && (0, react_jsx_runtime.jsx)("span", {
9315
+ }), block.payload.length > 80 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
9360
9316
  className: Workbench_module_css_default.payloadToggle,
9361
9317
  title: expandedSeq === block.seq ? "收起" : "展开",
9362
9318
  onClick: () => {
@@ -9367,34 +9323,34 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9367
9323
  }) })
9368
9324
  ] }, block.seq)) })]
9369
9325
  }),
9370
- (0, react_jsx_runtime.jsxs)("div", {
9326
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9371
9327
  className: Workbench_module_css_default.toolbar,
9372
9328
  children: [
9373
- (0, react_jsx_runtime.jsxs)("label", {
9329
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9374
9330
  className: Workbench_module_css_default.field,
9375
- children: [(0, react_jsx_runtime.jsx)("span", { children: "每页" }), (0, react_jsx_runtime.jsxs)("select", {
9331
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "每页" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
9376
9332
  value: String(pageSize),
9377
9333
  onChange: (e) => {
9378
9334
  setPageSize(Number(e.target.value));
9379
9335
  setPage(0);
9380
9336
  },
9381
9337
  children: [
9382
- (0, react_jsx_runtime.jsx)("option", {
9338
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9383
9339
  value: "10",
9384
9340
  children: "10"
9385
9341
  }),
9386
- (0, react_jsx_runtime.jsx)("option", {
9342
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9387
9343
  value: "20",
9388
9344
  children: "20"
9389
9345
  }),
9390
- (0, react_jsx_runtime.jsx)("option", {
9346
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9391
9347
  value: "50",
9392
9348
  children: "50"
9393
9349
  })
9394
9350
  ]
9395
9351
  })]
9396
9352
  }),
9397
- (0, react_jsx_runtime.jsx)("button", {
9353
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9398
9354
  type: "button",
9399
9355
  className: Workbench_module_css_default.btn,
9400
9356
  disabled: page <= 0,
@@ -9403,7 +9359,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9403
9359
  },
9404
9360
  children: "上一页"
9405
9361
  }),
9406
- (0, react_jsx_runtime.jsxs)("span", {
9362
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
9407
9363
  className: Workbench_module_css_default.cardMeta,
9408
9364
  children: [
9409
9365
  "第 ",
@@ -9415,7 +9371,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9415
9371
  " 块"
9416
9372
  ]
9417
9373
  }),
9418
- (0, react_jsx_runtime.jsx)("button", {
9374
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9419
9375
  type: "button",
9420
9376
  className: Workbench_module_css_default.btn,
9421
9377
  disabled: page + 1 >= totalPages,
@@ -9424,7 +9380,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9424
9380
  },
9425
9381
  children: "下一页"
9426
9382
  }),
9427
- (0, react_jsx_runtime.jsx)("span", {
9383
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
9428
9384
  className: Workbench_module_css_default.cardMeta,
9429
9385
  children: "账本只增不删(哈希链审计);此处仅分页展示,不删除任何块。"
9430
9386
  })
@@ -9434,7 +9390,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9434
9390
  });
9435
9391
  }
9436
9392
  //#endregion
9437
- //#region lib/types/client/HumanOpsPage.js
9393
+ //#region src/client/HumanOpsPage.tsx
9438
9394
  /**
9439
9395
  * Human management page: the fixed-format injection and editing forms.
9440
9396
  * Human additions use the ordinary experience/fact structure (fixed format);
@@ -9643,48 +9599,48 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9643
9599
  fail(e);
9644
9600
  }
9645
9601
  };
9646
- return (0, react_jsx_runtime.jsxs)("div", {
9602
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9647
9603
  className: Workbench_module_css_default.page,
9648
9604
  children: [
9649
- notice !== null && (0, react_jsx_runtime.jsx)("div", {
9605
+ notice !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9650
9606
  className: Workbench_module_css_default.okLine,
9651
9607
  children: notice
9652
9608
  }),
9653
- error !== null && (0, react_jsx_runtime.jsx)("div", {
9609
+ error !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9654
9610
  className: Workbench_module_css_default.error,
9655
9611
  children: error
9656
9612
  }),
9657
- (0, react_jsx_runtime.jsxs)("div", {
9613
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9658
9614
  className: Workbench_module_css_default.columns,
9659
- children: [(0, react_jsx_runtime.jsxs)("section", {
9615
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
9660
9616
  className: Workbench_module_css_default.column,
9661
9617
  children: [
9662
- (0, react_jsx_runtime.jsx)("div", {
9618
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9663
9619
  className: Workbench_module_css_default.sectionTitle,
9664
9620
  children: "凭空添加经验(固定格式 = 普通经验结构;人工担保直接 live,置信下限约 0.67)"
9665
9621
  }),
9666
- (0, react_jsx_runtime.jsxs)("div", {
9622
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9667
9623
  className: Workbench_module_css_default.form,
9668
9624
  children: [
9669
- (0, react_jsx_runtime.jsxs)("label", {
9625
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9670
9626
  className: Workbench_module_css_default.field,
9671
- children: [(0, react_jsx_runtime.jsx)("span", { children: "类型" }), (0, react_jsx_runtime.jsxs)("select", {
9627
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "类型" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
9672
9628
  value: kind,
9673
9629
  onChange: (e) => {
9674
9630
  setKind(e.target.value);
9675
9631
  },
9676
- children: [(0, react_jsx_runtime.jsx)("option", {
9632
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9677
9633
  value: "positive",
9678
9634
  children: "正经验(可行路径)"
9679
- }), (0, react_jsx_runtime.jsx)("option", {
9635
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9680
9636
  value: "negative",
9681
9637
  children: "负经验(确认死路)"
9682
9638
  })]
9683
9639
  })]
9684
9640
  }),
9685
- (0, react_jsx_runtime.jsxs)("label", {
9641
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9686
9642
  className: Workbench_module_css_default.field,
9687
- children: [(0, react_jsx_runtime.jsx)("span", { children: "任务族 *" }), (0, react_jsx_runtime.jsx)("input", {
9643
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "任务族 *" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
9688
9644
  value: family,
9689
9645
  placeholder: "如 windows-build",
9690
9646
  onChange: (e) => {
@@ -9692,18 +9648,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9692
9648
  }
9693
9649
  })]
9694
9650
  }),
9695
- (0, react_jsx_runtime.jsxs)("label", {
9651
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9696
9652
  className: Workbench_module_css_default.field,
9697
- children: [(0, react_jsx_runtime.jsx)("span", { children: "一句话摘要 *" }), (0, react_jsx_runtime.jsx)("input", {
9653
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "一句话摘要 *" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
9698
9654
  value: gist,
9699
9655
  onChange: (e) => {
9700
9656
  setGist(e.target.value);
9701
9657
  }
9702
9658
  })]
9703
9659
  }),
9704
- (0, react_jsx_runtime.jsxs)("label", {
9660
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9705
9661
  className: Workbench_module_css_default.field,
9706
- children: [(0, react_jsx_runtime.jsx)("span", { children: "适用情境 *(每行一条)" }), (0, react_jsx_runtime.jsx)("textarea", {
9662
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "适用情境 *(每行一条)" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
9707
9663
  rows: 3,
9708
9664
  value: situation,
9709
9665
  onChange: (e) => {
@@ -9711,9 +9667,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9711
9667
  }
9712
9668
  })]
9713
9669
  }),
9714
- (0, react_jsx_runtime.jsxs)("label", {
9670
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9715
9671
  className: Workbench_module_css_default.field,
9716
- children: [(0, react_jsx_runtime.jsx)("span", { children: "路径步骤 *(每行一步,按顺序)" }), (0, react_jsx_runtime.jsx)("textarea", {
9672
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "路径步骤 *(每行一步,按顺序)" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
9717
9673
  rows: 4,
9718
9674
  value: path,
9719
9675
  onChange: (e) => {
@@ -9721,9 +9677,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9721
9677
  }
9722
9678
  })]
9723
9679
  }),
9724
- (0, react_jsx_runtime.jsxs)("label", {
9680
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9725
9681
  className: Workbench_module_css_default.field,
9726
- children: [(0, react_jsx_runtime.jsx)("span", { children: "判断背景 *" }), (0, react_jsx_runtime.jsx)("textarea", {
9682
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "判断背景 *" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
9727
9683
  rows: 2,
9728
9684
  value: reasoning,
9729
9685
  onChange: (e) => {
@@ -9731,9 +9687,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9731
9687
  }
9732
9688
  })]
9733
9689
  }),
9734
- (0, react_jsx_runtime.jsxs)("label", {
9690
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9735
9691
  className: Workbench_module_css_default.field,
9736
- children: [(0, react_jsx_runtime.jsx)("span", { children: "不适用边界(每行一条)" }), (0, react_jsx_runtime.jsx)("textarea", {
9692
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "不适用边界(每行一条)" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
9737
9693
  rows: 2,
9738
9694
  value: limits,
9739
9695
  onChange: (e) => {
@@ -9741,19 +9697,19 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9741
9697
  }
9742
9698
  })]
9743
9699
  }),
9744
- kind === "negative" && (0, react_jsx_runtime.jsxs)("label", {
9700
+ kind === "negative" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9745
9701
  className: Workbench_module_css_default.field,
9746
- children: [(0, react_jsx_runtime.jsx)("span", { children: "确认的失败原因 *" }), (0, react_jsx_runtime.jsx)("input", {
9702
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "确认的失败原因 *" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
9747
9703
  value: failureReason,
9748
9704
  onChange: (e) => {
9749
9705
  setFailureReason(e.target.value);
9750
9706
  }
9751
9707
  })]
9752
9708
  }),
9753
- (0, react_jsx_runtime.jsxs)("label", {
9709
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9754
9710
  className: Workbench_module_css_default.field,
9755
9711
  title: "作用域:该经验适用的领域/上下文;留空为无作用域",
9756
- children: [(0, react_jsx_runtime.jsx)("span", { children: "作用域(可选)" }), (0, react_jsx_runtime.jsx)("input", {
9712
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "作用域(可选)" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
9757
9713
  value: addContext,
9758
9714
  placeholder: "如 coding-windows-build",
9759
9715
  onChange: (e) => {
@@ -9761,7 +9717,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9761
9717
  }
9762
9718
  })]
9763
9719
  }),
9764
- (0, react_jsx_runtime.jsx)("button", {
9720
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9765
9721
  type: "button",
9766
9722
  className: Workbench_module_css_default.btn,
9767
9723
  onClick: () => {
@@ -9771,51 +9727,51 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9771
9727
  })
9772
9728
  ]
9773
9729
  }),
9774
- (0, react_jsx_runtime.jsx)("div", {
9730
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9775
9731
  className: Workbench_module_css_default.sectionTitle,
9776
9732
  children: "摄取归一(从外部来源学习:书/技能/文档/会话;产出候选待验证,不直接 live)"
9777
9733
  }),
9778
- (0, react_jsx_runtime.jsxs)("div", {
9734
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9779
9735
  className: Workbench_module_css_default.form,
9780
9736
  children: [
9781
- (0, react_jsx_runtime.jsxs)("label", {
9737
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9782
9738
  className: Workbench_module_css_default.field,
9783
- children: [(0, react_jsx_runtime.jsx)("span", { children: "来源类型" }), (0, react_jsx_runtime.jsxs)("select", {
9739
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "来源类型" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
9784
9740
  value: ingestSourceType,
9785
9741
  onChange: (e) => {
9786
9742
  setIngestSourceType(e.target.value);
9787
9743
  },
9788
9744
  children: [
9789
- (0, react_jsx_runtime.jsx)("option", {
9745
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9790
9746
  value: "other",
9791
9747
  children: "other(其他)"
9792
9748
  }),
9793
- (0, react_jsx_runtime.jsx)("option", {
9749
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9794
9750
  value: "note",
9795
9751
  children: "note(笔记)"
9796
9752
  }),
9797
- (0, react_jsx_runtime.jsx)("option", {
9753
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9798
9754
  value: "conversation",
9799
9755
  children: "conversation(会话)"
9800
9756
  }),
9801
- (0, react_jsx_runtime.jsx)("option", {
9757
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9802
9758
  value: "document",
9803
9759
  children: "document(文档)"
9804
9760
  }),
9805
- (0, react_jsx_runtime.jsx)("option", {
9761
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9806
9762
  value: "book",
9807
9763
  children: "book(书籍)"
9808
9764
  }),
9809
- (0, react_jsx_runtime.jsx)("option", {
9765
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9810
9766
  value: "skill",
9811
9767
  children: "skill(技能)"
9812
9768
  })
9813
9769
  ]
9814
9770
  })]
9815
9771
  }),
9816
- (0, react_jsx_runtime.jsxs)("label", {
9772
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9817
9773
  className: Workbench_module_css_default.field,
9818
- children: [(0, react_jsx_runtime.jsx)("span", { children: "出处 *(sourceRef)" }), (0, react_jsx_runtime.jsx)("input", {
9774
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "出处 *(sourceRef)" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
9819
9775
  value: ingestSourceRef,
9820
9776
  placeholder: "书名/技能名/会话 id(可审计)",
9821
9777
  onChange: (e) => {
@@ -9823,10 +9779,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9823
9779
  }
9824
9780
  })]
9825
9781
  }),
9826
- (0, react_jsx_runtime.jsxs)("label", {
9782
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9827
9783
  className: Workbench_module_css_default.field,
9828
9784
  title: "作用域:摄取出的候选适用的领域/上下文",
9829
- children: [(0, react_jsx_runtime.jsx)("span", { children: "作用域(可选)" }), (0, react_jsx_runtime.jsx)("input", {
9785
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "作用域(可选)" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
9830
9786
  value: ingestContext,
9831
9787
  placeholder: "如 coding-windows-build",
9832
9788
  onChange: (e) => {
@@ -9834,25 +9790,25 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9834
9790
  }
9835
9791
  })]
9836
9792
  }),
9837
- (0, react_jsx_runtime.jsxs)("label", {
9793
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9838
9794
  className: Workbench_module_css_default.field,
9839
- children: [(0, react_jsx_runtime.jsx)("span", { children: "类型" }), (0, react_jsx_runtime.jsxs)("select", {
9795
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "类型" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
9840
9796
  value: ingestKind,
9841
9797
  onChange: (e) => {
9842
9798
  setIngestKind(e.target.value);
9843
9799
  },
9844
- children: [(0, react_jsx_runtime.jsx)("option", {
9800
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9845
9801
  value: "positive",
9846
9802
  children: "正经验(可行路径)"
9847
- }), (0, react_jsx_runtime.jsx)("option", {
9803
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
9848
9804
  value: "negative",
9849
9805
  children: "负经验(确认死路)"
9850
9806
  })]
9851
9807
  })]
9852
9808
  }),
9853
- (0, react_jsx_runtime.jsxs)("label", {
9809
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9854
9810
  className: Workbench_module_css_default.field,
9855
- children: [(0, react_jsx_runtime.jsx)("span", { children: "任务族 *" }), (0, react_jsx_runtime.jsx)("input", {
9811
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "任务族 *" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
9856
9812
  value: ingestFamily,
9857
9813
  placeholder: "如 windows-build",
9858
9814
  onChange: (e) => {
@@ -9860,18 +9816,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9860
9816
  }
9861
9817
  })]
9862
9818
  }),
9863
- (0, react_jsx_runtime.jsxs)("label", {
9819
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9864
9820
  className: Workbench_module_css_default.field,
9865
- children: [(0, react_jsx_runtime.jsx)("span", { children: "一句话摘要 *" }), (0, react_jsx_runtime.jsx)("input", {
9821
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "一句话摘要 *" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
9866
9822
  value: ingestGist,
9867
9823
  onChange: (e) => {
9868
9824
  setIngestGist(e.target.value);
9869
9825
  }
9870
9826
  })]
9871
9827
  }),
9872
- (0, react_jsx_runtime.jsxs)("label", {
9828
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9873
9829
  className: Workbench_module_css_default.field,
9874
- children: [(0, react_jsx_runtime.jsx)("span", { children: "适用情境 *(每行一条)" }), (0, react_jsx_runtime.jsx)("textarea", {
9830
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "适用情境 *(每行一条)" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
9875
9831
  rows: 3,
9876
9832
  value: ingestSituation,
9877
9833
  onChange: (e) => {
@@ -9879,9 +9835,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9879
9835
  }
9880
9836
  })]
9881
9837
  }),
9882
- (0, react_jsx_runtime.jsxs)("label", {
9838
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9883
9839
  className: Workbench_module_css_default.field,
9884
- children: [(0, react_jsx_runtime.jsx)("span", { children: "路径步骤 *(每行一步,按顺序)" }), (0, react_jsx_runtime.jsx)("textarea", {
9840
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "路径步骤 *(每行一步,按顺序)" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
9885
9841
  rows: 4,
9886
9842
  value: ingestPath,
9887
9843
  onChange: (e) => {
@@ -9889,9 +9845,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9889
9845
  }
9890
9846
  })]
9891
9847
  }),
9892
- (0, react_jsx_runtime.jsxs)("label", {
9848
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9893
9849
  className: Workbench_module_css_default.field,
9894
- children: [(0, react_jsx_runtime.jsx)("span", { children: "判断背景 *" }), (0, react_jsx_runtime.jsx)("textarea", {
9850
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "判断背景 *" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
9895
9851
  rows: 2,
9896
9852
  value: ingestReasoning,
9897
9853
  onChange: (e) => {
@@ -9899,9 +9855,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9899
9855
  }
9900
9856
  })]
9901
9857
  }),
9902
- (0, react_jsx_runtime.jsxs)("label", {
9858
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9903
9859
  className: Workbench_module_css_default.field,
9904
- children: [(0, react_jsx_runtime.jsx)("span", { children: "不适用边界(每行一条)" }), (0, react_jsx_runtime.jsx)("textarea", {
9860
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "不适用边界(每行一条)" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
9905
9861
  rows: 2,
9906
9862
  value: ingestLimits,
9907
9863
  onChange: (e) => {
@@ -9909,16 +9865,16 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9909
9865
  }
9910
9866
  })]
9911
9867
  }),
9912
- ingestKind === "negative" && (0, react_jsx_runtime.jsxs)("label", {
9868
+ ingestKind === "negative" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9913
9869
  className: Workbench_module_css_default.field,
9914
- children: [(0, react_jsx_runtime.jsx)("span", { children: "确认的失败原因 *" }), (0, react_jsx_runtime.jsx)("input", {
9870
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "确认的失败原因 *" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
9915
9871
  value: ingestFailureReason,
9916
9872
  onChange: (e) => {
9917
9873
  setIngestFailureReason(e.target.value);
9918
9874
  }
9919
9875
  })]
9920
9876
  }),
9921
- (0, react_jsx_runtime.jsx)("button", {
9877
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9922
9878
  type: "button",
9923
9879
  className: Workbench_module_css_default.btn,
9924
9880
  onClick: () => {
@@ -9928,21 +9884,21 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9928
9884
  })
9929
9885
  ]
9930
9886
  }),
9931
- (0, react_jsx_runtime.jsx)("div", {
9887
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9932
9888
  className: Workbench_module_css_default.sectionTitle,
9933
9889
  children: "人工添加画像(默认锁定:提取冲突不会自动取代)"
9934
9890
  }),
9935
- (0, react_jsx_runtime.jsxs)("div", {
9891
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9936
9892
  className: Workbench_module_css_default.form,
9937
9893
  children: [
9938
- (0, react_jsx_runtime.jsxs)("label", {
9894
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9939
9895
  className: Workbench_module_css_default.field,
9940
- children: [(0, react_jsx_runtime.jsx)("span", { children: "分类" }), (0, react_jsx_runtime.jsx)("select", {
9896
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "分类" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("select", {
9941
9897
  value: factCategory,
9942
9898
  onChange: (e) => {
9943
9899
  setFactCategory(e.target.value);
9944
9900
  },
9945
- children: CATEGORIES.map((value) => (0, react_jsx_runtime.jsxs)("option", {
9901
+ children: CATEGORIES.map((value) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("option", {
9946
9902
  value,
9947
9903
  children: [
9948
9904
  value,
@@ -9953,9 +9909,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9953
9909
  }, value))
9954
9910
  })]
9955
9911
  }),
9956
- (0, react_jsx_runtime.jsxs)("label", {
9912
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9957
9913
  className: Workbench_module_css_default.field,
9958
- children: [(0, react_jsx_runtime.jsx)("span", { children: "键 *" }), (0, react_jsx_runtime.jsx)("input", {
9914
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "键 *" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
9959
9915
  value: factKey,
9960
9916
  placeholder: "如 timezone",
9961
9917
  onChange: (e) => {
@@ -9963,18 +9919,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9963
9919
  }
9964
9920
  })]
9965
9921
  }),
9966
- (0, react_jsx_runtime.jsxs)("label", {
9922
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9967
9923
  className: Workbench_module_css_default.field,
9968
- children: [(0, react_jsx_runtime.jsx)("span", { children: "值 *" }), (0, react_jsx_runtime.jsx)("input", {
9924
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "值 *" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
9969
9925
  value: factValue,
9970
9926
  onChange: (e) => {
9971
9927
  setFactValue(e.target.value);
9972
9928
  }
9973
9929
  })]
9974
9930
  }),
9975
- (0, react_jsx_runtime.jsxs)("label", {
9931
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9976
9932
  className: Workbench_module_css_default.check,
9977
- children: [(0, react_jsx_runtime.jsx)("input", {
9933
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
9978
9934
  type: "checkbox",
9979
9935
  checked: factLocked,
9980
9936
  onChange: (e) => {
@@ -9982,7 +9938,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9982
9938
  }
9983
9939
  }), "立即锁定(人工确认)"]
9984
9940
  }),
9985
- (0, react_jsx_runtime.jsx)("button", {
9941
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9986
9942
  type: "button",
9987
9943
  className: Workbench_module_css_default.btn,
9988
9944
  onClick: () => {
@@ -9993,19 +9949,19 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9993
9949
  ]
9994
9950
  })
9995
9951
  ]
9996
- }), (0, react_jsx_runtime.jsxs)("section", {
9952
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
9997
9953
  className: Workbench_module_css_default.column,
9998
9954
  children: [
9999
- (0, react_jsx_runtime.jsx)("div", {
9955
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
10000
9956
  className: Workbench_module_css_default.sectionTitle,
10001
9957
  children: "编辑既有经验(按 id;完整编辑请配合经验库监控页的详情)"
10002
9958
  }),
10003
- (0, react_jsx_runtime.jsxs)("div", {
9959
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
10004
9960
  className: Workbench_module_css_default.form,
10005
9961
  children: [
10006
- (0, react_jsx_runtime.jsxs)("label", {
9962
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
10007
9963
  className: Workbench_module_css_default.field,
10008
- children: [(0, react_jsx_runtime.jsx)("span", { children: "经验 id *" }), (0, react_jsx_runtime.jsx)("input", {
9964
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "经验 id *" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
10009
9965
  value: editId,
10010
9966
  placeholder: "从账本或经验列表复制",
10011
9967
  onChange: (e) => {
@@ -10013,18 +9969,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10013
9969
  }
10014
9970
  })]
10015
9971
  }),
10016
- (0, react_jsx_runtime.jsxs)("label", {
9972
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
10017
9973
  className: Workbench_module_css_default.field,
10018
- children: [(0, react_jsx_runtime.jsx)("span", { children: "新摘要(留空不改)" }), (0, react_jsx_runtime.jsx)("input", {
9974
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "新摘要(留空不改)" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
10019
9975
  value: editGist,
10020
9976
  onChange: (e) => {
10021
9977
  setEditGist(e.target.value);
10022
9978
  }
10023
9979
  })]
10024
9980
  }),
10025
- (0, react_jsx_runtime.jsxs)("label", {
9981
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
10026
9982
  className: Workbench_module_css_default.field,
10027
- children: [(0, react_jsx_runtime.jsx)("span", { children: "新不适用边界(每行一条,留空不改)" }), (0, react_jsx_runtime.jsx)("textarea", {
9983
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "新不适用边界(每行一条,留空不改)" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
10028
9984
  rows: 3,
10029
9985
  value: editLimits,
10030
9986
  onChange: (e) => {
@@ -10032,10 +9988,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10032
9988
  }
10033
9989
  })]
10034
9990
  }),
10035
- (0, react_jsx_runtime.jsxs)("label", {
9991
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
10036
9992
  className: Workbench_module_css_default.field,
10037
9993
  title: "作用域:留空不改;填写则改写该经验的作用域",
10038
- children: [(0, react_jsx_runtime.jsx)("span", { children: "新作用域(留空不改)" }), (0, react_jsx_runtime.jsx)("input", {
9994
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "新作用域(留空不改)" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
10039
9995
  value: editContext,
10040
9996
  placeholder: "如 coding-windows-build",
10041
9997
  onChange: (e) => {
@@ -10043,9 +9999,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10043
9999
  }
10044
10000
  })]
10045
10001
  }),
10046
- (0, react_jsx_runtime.jsxs)("label", {
10002
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
10047
10003
  className: Workbench_module_css_default.check,
10048
- children: [(0, react_jsx_runtime.jsx)("input", {
10004
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
10049
10005
  type: "checkbox",
10050
10006
  checked: editGlobalFlag,
10051
10007
  onChange: (e) => {
@@ -10053,7 +10009,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10053
10009
  }
10054
10010
  }), "全局作用域(勾选 = 跨领域可召回;取消 = 仅本作用域)"]
10055
10011
  }),
10056
- (0, react_jsx_runtime.jsx)("button", {
10012
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
10057
10013
  type: "button",
10058
10014
  className: Workbench_module_css_default.btn,
10059
10015
  onClick: () => {
@@ -10063,21 +10019,21 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10063
10019
  })
10064
10020
  ]
10065
10021
  }),
10066
- (0, react_jsx_runtime.jsx)("div", {
10022
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
10067
10023
  className: Workbench_module_css_default.sectionTitle,
10068
10024
  children: "人工操作纪律"
10069
10025
  }),
10070
- (0, react_jsx_runtime.jsxs)("ul", {
10026
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("ul", {
10071
10027
  className: Workbench_module_css_default.rules,
10072
10028
  children: [
10073
- (0, react_jsx_runtime.jsx)("li", { children: "永久标记:置顶信任(置信不低于 0.67)且豁免注入预算退役。" }),
10074
- (0, react_jsx_runtime.jsx)("li", { children: "删除:全家族墓碑,指纹保留在账本,可审计不可恢复。" }),
10075
- (0, react_jsx_runtime.jsx)("li", { children: "编辑:就地改写活动版本,原内容保留在账本载荷。" }),
10076
- (0, react_jsx_runtime.jsx)("li", { children: "凭空添加:固定格式、人工担保、直接 live、置信下限约 0.67。" }),
10077
- (0, react_jsx_runtime.jsx)("li", { children: "摄取归一:带出处产出候选(初始按来源先验),须经验证才转正。" }),
10078
- (0, react_jsx_runtime.jsx)("li", { children: "作用域:默认本作用域;可勾选全局(跨领域可召回)。" }),
10079
- (0, react_jsx_runtime.jsx)("li", { children: "冷宫:候选试探失败即入冷宫,只有人工可放回候选或删除。" }),
10080
- (0, react_jsx_runtime.jsx)("li", { children: "所有人工操作强制填写原因,账本 actor=human。" })
10029
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { children: "永久标记:置顶信任(置信不低于 0.67)且豁免注入预算退役。" }),
10030
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { children: "删除:全家族墓碑,指纹保留在账本,可审计不可恢复。" }),
10031
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { children: "编辑:就地改写活动版本,原内容保留在账本载荷。" }),
10032
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { children: "凭空添加:固定格式、人工担保、直接 live、置信下限约 0.67。" }),
10033
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { children: "摄取归一:带出处产出候选(初始按来源先验),须经验证才转正。" }),
10034
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { children: "作用域:默认本作用域;可勾选全局(跨领域可召回)。" }),
10035
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { children: "冷宫:候选试探失败即入冷宫,只有人工可放回候选或删除。" }),
10036
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { children: "所有人工操作强制填写原因,账本 actor=human。" })
10081
10037
  ]
10082
10038
  })
10083
10039
  ]
@@ -10087,13 +10043,15 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10087
10043
  });
10088
10044
  }
10089
10045
  //#endregion
10090
- //#region lib/types/client/Workbench.js
10046
+ //#region src/client/Workbench.tsx
10091
10047
  /**
10092
10048
  * Memory workbench takeover: covers the frame area to the right of the
10093
- * sidebar while a monitoring page is selected in the left-sidebar memory nav
10094
- * group. The header title follows the selected page; opening a session row
10095
- * clears the selection and returns to the native conversation view. All human
10096
- * mutations go through the audited Remote callbacks.
10049
+ * sidebar while a monitoring page is selected. The entry point is the
10050
+ * sidebar.footer.action button (MemoryFooterAction); page switching lives
10051
+ * inside this panel as a tab bar so all four pages remain reachable without
10052
+ * relying on a sidebar nav group. Opening a session row clears the selection
10053
+ * and returns to the native conversation view. All human mutations go through
10054
+ * the audited Remote callbacks.
10097
10055
  */
10098
10056
  /** Format an epoch-ms timestamp as a compact local string. */
10099
10057
  function formatTs(ts) {
@@ -10190,56 +10148,64 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10190
10148
  const bound = (0, react.useMemo)(() => sessionId === void 0 ? null : bindMemoryActions(props, sessionId), [sessionId]);
10191
10149
  if (!active || info === null || bound === null) return null;
10192
10150
  const title = MEMORY_NAV_ITEMS.find((item) => item.key === nav.page)?.label ?? info.workspaceTitle;
10193
- return (0, react_jsx_runtime.jsxs)("div", {
10151
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
10194
10152
  ref: rootRef,
10195
10153
  className: Workbench_module_css_default.panel,
10196
10154
  style: { left: `${String(sidebarWidth)}px` },
10197
10155
  "data-memory-workbench": true,
10198
- children: [(0, react_jsx_runtime.jsxs)("header", {
10199
- className: Workbench_module_css_default.header,
10200
- children: [(0, react_jsx_runtime.jsxs)("div", {
10201
- className: Workbench_module_css_default.titleBlock,
10202
- children: [(0, react_jsx_runtime.jsx)("span", {
10203
- className: Workbench_module_css_default.title,
10204
- children: title
10205
- }), (0, react_jsx_runtime.jsx)("span", {
10206
- className: Workbench_module_css_default.subtitle,
10207
- children: "自进化记忆 · 生用修记 · 全局共享记忆库"
10156
+ children: [
10157
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("header", {
10158
+ className: Workbench_module_css_default.header,
10159
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
10160
+ className: Workbench_module_css_default.titleBlock,
10161
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
10162
+ className: Workbench_module_css_default.title,
10163
+ children: title
10164
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
10165
+ className: Workbench_module_css_default.subtitle,
10166
+ children: "自进化记忆 · 生用修记 · 全局共享记忆库"
10167
+ })]
10168
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
10169
+ className: Workbench_module_css_default.statline,
10170
+ children: stats === null ? "加载中…" : `经验 ${String(stats.experiences.total)}(live ${String(stats.experiences.byStatus.live)} / 隔离 ${String(stats.experiences.byStatus.challenged)})· 画像 ${String(stats.facts.current)} · 日记 ${String(stats.diary.total)}(待提取 ${String(stats.diary.unextracted)})· 账本 ${String(stats.ledgerBlocks)} 块`
10208
10171
  })]
10209
- }), (0, react_jsx_runtime.jsx)("div", {
10210
- className: Workbench_module_css_default.statline,
10211
- children: stats === null ? "加载中…" : `经验 ${String(stats.experiences.total)}(live ${String(stats.experiences.byStatus.live)} / 隔离 ${String(stats.experiences.byStatus.challenged)})· 画像 ${String(stats.facts.current)} · 日记 ${String(stats.diary.total)}(待提取 ${String(stats.diary.unextracted)})· 账本 ${String(stats.ledgerBlocks)} 块`
10212
- })]
10213
- }), (0, react_jsx_runtime.jsxs)("main", {
10214
- className: Workbench_module_css_default.body,
10215
- children: [
10216
- nav.page === "experience" && (0, react_jsx_runtime.jsx)(ExperiencePage, {
10217
- actions: bound,
10218
- onChanged: refreshStats
10219
- }),
10220
- nav.page === "fact" && (0, react_jsx_runtime.jsx)(FactDiaryPage, {
10221
- actions: bound,
10222
- onChanged: refreshStats
10223
- }),
10224
- nav.page === "ledger" && (0, react_jsx_runtime.jsx)(LedgerPage, { actions: bound }),
10225
- nav.page === "human" && (0, react_jsx_runtime.jsx)(HumanOpsPage, {
10226
- actions: bound,
10227
- onChanged: refreshStats
10228
- })
10229
- ]
10230
- })]
10172
+ }),
10173
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("nav", {
10174
+ className: Workbench_module_css_default.workbenchTabs,
10175
+ "aria-label": "记忆监控页面",
10176
+ children: MEMORY_NAV_ITEMS.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
10177
+ type: "button",
10178
+ className: clsx(Workbench_module_css_default.workbenchTab, nav.page === item.key && Workbench_module_css_default.workbenchTabActive),
10179
+ "aria-current": nav.page === item.key ? "page" : void 0,
10180
+ onClick: () => {
10181
+ props.actions.select(item.key);
10182
+ },
10183
+ children: item.label
10184
+ }, item.key))
10185
+ }),
10186
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("main", {
10187
+ className: Workbench_module_css_default.body,
10188
+ children: [
10189
+ nav.page === "experience" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ExperiencePage, {
10190
+ actions: bound,
10191
+ onChanged: refreshStats
10192
+ }),
10193
+ nav.page === "fact" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FactDiaryPage, {
10194
+ actions: bound,
10195
+ onChanged: refreshStats
10196
+ }),
10197
+ nav.page === "ledger" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LedgerPage, { actions: bound }),
10198
+ nav.page === "human" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(HumanOpsPage, {
10199
+ actions: bound,
10200
+ onChanged: refreshStats
10201
+ })
10202
+ ]
10203
+ })
10204
+ ]
10231
10205
  });
10232
10206
  }
10233
10207
  //#endregion
10234
- //#region lib/types/client/index.js
10235
- /**
10236
- * Memory workbench plugin, browser half: mounts the generated memory Remote
10237
- * contribution, then registers two entries that share one nav store — a
10238
- * sidebar.sections nav group (left column, between New Session and the
10239
- * workspace browser) and a shell.overlay takeover (the monitoring pages on
10240
- * the right). Selecting a menu in the nav group shows the matching page;
10241
- * opening a session returns to the native conversation view.
10242
- */
10208
+ //#region src/client/index.ts
10243
10209
  /**
10244
10210
  * Required services: slot seat, session list, and the Remote carrier. The
10245
10211
  * `remote.memory` namespace is NOT an inject dependency: this plugin mounts
@@ -10310,12 +10276,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10310
10276
  ingest: async (session, request) => unwrap(await memory.ingest(session, request))
10311
10277
  };
10312
10278
  const navStore = createMemoryNavStore();
10313
- const disposeNav = ctx.slots.inject("sidebar.sections", () => ctx.slots.register({
10314
- name: "sidebar.sections",
10279
+ const disposeNav = ctx.slots.inject("sidebar.footer.action", () => ctx.slots.register({
10280
+ name: "sidebar.footer.action",
10315
10281
  id: "memory-nav",
10316
10282
  order: 100,
10317
10283
  store: navStore
10318
- }, MemoryNavSection));
10284
+ }, MemoryFooterAction));
10319
10285
  const disposeOverlay = ctx.slots.inject("shell.overlay", () => ctx.slots.register({
10320
10286
  name: "shell.overlay",
10321
10287
  id: "memory-workbench",