dsh-daoing-memory 0.1.0 → 0.1.1

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