@hpyperry/dsh-ref-lib 0.8.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -3
- package/lib/client/RefLibCommandCard.d.ts +29 -0
- package/lib/client/RefLibCommandCard.d.ts.map +1 -0
- package/lib/client/RefLibCommandCard.js +48 -0
- package/lib/client/RefLibCommandCard.js.map +1 -0
- package/lib/client/RefLibDock.d.ts.map +1 -1
- package/lib/client/RefLibDock.js +97 -15
- package/lib/client/RefLibDock.js.map +1 -1
- package/lib/client/RefLibPanel.d.ts.map +1 -1
- package/lib/client/RefLibPanel.js +7 -2
- package/lib/client/RefLibPanel.js.map +1 -1
- package/lib/client/index.d.ts.map +1 -1
- package/lib/client/index.js +8 -0
- package/lib/client/index.js.map +1 -1
- package/lib/client/locales.d.ts +16 -0
- package/lib/client/locales.d.ts.map +1 -1
- package/lib/client/locales.js +20 -0
- package/lib/client/locales.js.map +1 -1
- package/lib/client/refresh-guard.d.ts +31 -0
- package/lib/client/refresh-guard.d.ts.map +1 -0
- package/lib/client/refresh-guard.js +38 -0
- package/lib/client/refresh-guard.js.map +1 -0
- package/lib/client/refresh-triggers.d.ts +49 -0
- package/lib/client/refresh-triggers.d.ts.map +1 -0
- package/lib/client/refresh-triggers.js +53 -0
- package/lib/client/refresh-triggers.js.map +1 -0
- package/lib/client/styles.d.ts.map +1 -1
- package/lib/client/styles.js +111 -0
- package/lib/client/styles.js.map +1 -1
- package/lib/client.js +927 -582
- package/lib/client.js.map +1 -1
- package/lib/logic.d.ts +16 -1
- package/lib/logic.d.ts.map +1 -1
- package/lib/logic.js +19 -0
- package/lib/logic.js.map +1 -1
- package/lib/render.d.ts +6 -4
- package/lib/render.d.ts.map +1 -1
- package/lib/render.js +14 -7
- package/lib/render.js.map +1 -1
- package/lib/routes.d.ts +4 -0
- package/lib/routes.d.ts.map +1 -1
- package/lib/routes.js +9 -1
- package/lib/routes.js.map +1 -1
- package/lib/service.d.ts +61 -3
- package/lib/service.d.ts.map +1 -1
- package/lib/service.js +148 -14
- package/lib/service.js.map +1 -1
- package/lib/spec.d.ts +9 -0
- package/lib/spec.d.ts.map +1 -1
- package/lib/validate.d.ts +1 -1
- package/lib/validate.d.ts.map +1 -1
- package/lib/validate.js +11 -3
- package/lib/validate.js.map +1 -1
- package/package.json +15 -15
package/README.md
CHANGED
|
@@ -13,10 +13,11 @@
|
|
|
13
13
|
| 🎨 | **可视化面板** | 基名 + 完整路径列表、用途说明、悬停高亮、危险色移除、独立的空/加载/错误态 |
|
|
14
14
|
| 📂 | **三种添加方式** | 应用内目录浏览器 / 系统原生选择器(按宿主能力自动适配)/ 手动输入路径(`~` 与相对路径),可附**用途说明**(自动提取 README 标题兜底) |
|
|
15
15
|
| 🧠 | **上下文注入** | 仅向配置了参考库的会话注入定稿英文规则:库清单(含用途 routing metadata)+ **强制查证流程**(先查参考库,未覆盖才外部)+ 权威性/冲突处理 + 只读约束;空列表零 token |
|
|
16
|
-
| 🔒 | **per-session 隔离** |
|
|
16
|
+
| 🔒 | **per-session 隔离** | 每个会话独立维护,会话间互不可见;**分支会话(fork)自动继承父列表**(fork 时刻快照、条目 id 独立);sidecar JSON 持久化,重启/恢复后仍在 |
|
|
17
|
+
| 📡 | **失效检测** | 每次读取实时探测库目录可用性(删除 / 被替换为文件即标记),失效库自动跳过注入并红色提示(面板状态行 + dock 失效角标 + `/ref-lib list` 标记);UI 同步**交互驱动**(命令完成 / 发消息 / 面板操作即时刷新,零后台请求) |
|
|
17
18
|
| ⚡ | **静默数据通道** | client 读写走插件自注册的 `/api/ref-lib/*` HTTP 路由——不渲染命令卡片、不执行命令、不产生用户消息 |
|
|
18
19
|
| 🌐 | **双语界面** | zh/en 全量本地化,随界面语言实时切换 |
|
|
19
|
-
| ⌨️ | **命令入口** | `/ref-lib add <path> [--note <用途>] \| list \| remove <id>`,与 UI
|
|
20
|
+
| ⌨️ | **命令入口** | `/ref-lib add <path> [--note <用途>] \| list \| remove <id>`,与 UI 数据一致;结果走专属卡片(全展开完整文本 + 一键复制,规避官方卡片的截断显示) |
|
|
20
21
|
| 🛡️ | **安全** | loopback 护栏 + 路径消毒 + 只读保证分层(沙箱强制 / 上下文软约束) |
|
|
21
22
|
|
|
22
23
|
## 📦 安装
|
|
@@ -51,7 +52,7 @@ dsh --profile web
|
|
|
51
52
|
| 用途说明(note) | 添加时可选填写;未填写时自动提取目录 README 首个 H1 标题兜底(无 README 则为空)。note 作为 routing metadata 注入,帮助 agent 判断库的相关性 |
|
|
52
53
|
| 目录选择后端 | 启动时自动探测:应用内目录浏览器(browse)或系统原生对话框(native);可在 profile 的 `cordis.patch.yml` 切换 `directory-picker` 行为 |
|
|
53
54
|
| 上下文注入 | 仅向有参考库的会话注入(`systemPrompt.context`,空列表零 token;注入文本为定稿英文模板) |
|
|
54
|
-
| 子会话 |
|
|
55
|
+
| 子会话 | 分支会话(fork)创建时**复制继承**父会话的参考库列表(fork 时刻快照、条目 id 独立);legacy 子会话(升级前创建)首次读取时同语义物化 |
|
|
55
56
|
|
|
56
57
|
## 🛡️ 安全
|
|
57
58
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `/ref-lib` 命令结果专属卡片(conversation.chat.commandview,key='ref-lib')。
|
|
3
|
+
*
|
|
4
|
+
* 背景(历史 bug):官方 `GenericCommandCard` 对命令结果折叠态 `white-space:
|
|
5
|
+
* nowrap` + `text-overflow: ellipsis` 单行截断,展开态 `max-height: 260px` 内滚动
|
|
6
|
+
* ——`/ref-lib list` 等多行长结果会显示不全。本卡片注册在
|
|
7
|
+
* `conversation.chat.commandview`(keyed,按命令名分派)的 `ref-lib` 键上:
|
|
8
|
+
* **默认全展开展示完整结果**(无高度上限)+ 一键复制按钮。只影响 `/ref-lib`,
|
|
9
|
+
* 其他命令仍走官方卡片。
|
|
10
|
+
* @module @hpyperry/dsh-ref-lib/src/client/RefLibCommandCard
|
|
11
|
+
*/
|
|
12
|
+
import type { ReactElement } from 'react';
|
|
13
|
+
import type { CommandNode } from '@deepseek-ai/dsh-client-runtime/client';
|
|
14
|
+
import type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
|
|
15
|
+
/** 完整 props:commandview 运行时套件 + owner(node)+ 本地化 seat。 */
|
|
16
|
+
export type RefLibCommandCardProps = PropsRuntime<'conversation.chat.commandview'> & {
|
|
17
|
+
/** 折叠的命令生命周期节点(run + 可选 done);outcome 为 null 时仍在执行。 */
|
|
18
|
+
node: CommandNode;
|
|
19
|
+
/** `/compact` 专用(ref-lib 不使用)。 */
|
|
20
|
+
compaction?: unknown;
|
|
21
|
+
} & PropsLocale<'ref-lib'>;
|
|
22
|
+
/**
|
|
23
|
+
* `/ref-lib` 命令结果卡片:完整展示 `outcome.text`(pre-wrap、无高度截断)+
|
|
24
|
+
* 复制按钮。running 态显示执行中;error 态红色。
|
|
25
|
+
* @param props - node(owner)与本地化 seat。
|
|
26
|
+
* @returns 卡片元素。
|
|
27
|
+
*/
|
|
28
|
+
export declare function RefLibCommandCard(props: RefLibCommandCardProps): ReactElement;
|
|
29
|
+
//# sourceMappingURL=RefLibCommandCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RefLibCommandCard.d.ts","sourceRoot":"","sources":["../../src/client/RefLibCommandCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAA;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AASjF,0DAA0D;AAC1D,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAC,+BAA+B,CAAC,GAAG;IACnF,uDAAuD;IACvD,IAAI,EAAE,WAAW,CAAA;IACjB,kCAAkC;IAClC,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;AAI1B;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,CAiD7E"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* `/ref-lib` 命令结果专属卡片(conversation.chat.commandview,key='ref-lib')。
|
|
4
|
+
*
|
|
5
|
+
* 背景(历史 bug):官方 `GenericCommandCard` 对命令结果折叠态 `white-space:
|
|
6
|
+
* nowrap` + `text-overflow: ellipsis` 单行截断,展开态 `max-height: 260px` 内滚动
|
|
7
|
+
* ——`/ref-lib list` 等多行长结果会显示不全。本卡片注册在
|
|
8
|
+
* `conversation.chat.commandview`(keyed,按命令名分派)的 `ref-lib` 键上:
|
|
9
|
+
* **默认全展开展示完整结果**(无高度上限)+ 一键复制按钮。只影响 `/ref-lib`,
|
|
10
|
+
* 其他命令仍走官方卡片。
|
|
11
|
+
* @module @hpyperry/dsh-ref-lib/src/client/RefLibCommandCard
|
|
12
|
+
*/
|
|
13
|
+
import { useState } from 'react';
|
|
14
|
+
import { IconCheckOutline16, IconCopyOutline16, IconLoadingOutline16, IconWarningOutline16, } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
15
|
+
import { ensureRefLibStyles } from "./styles.js";
|
|
16
|
+
ensureRefLibStyles();
|
|
17
|
+
/**
|
|
18
|
+
* `/ref-lib` 命令结果卡片:完整展示 `outcome.text`(pre-wrap、无高度截断)+
|
|
19
|
+
* 复制按钮。running 态显示执行中;error 态红色。
|
|
20
|
+
* @param props - node(owner)与本地化 seat。
|
|
21
|
+
* @returns 卡片元素。
|
|
22
|
+
*/
|
|
23
|
+
export function RefLibCommandCard(props) {
|
|
24
|
+
const { node, t } = props;
|
|
25
|
+
const [copied, setCopied] = useState(false);
|
|
26
|
+
const outcome = node.outcome;
|
|
27
|
+
const text = outcome?.text;
|
|
28
|
+
const running = outcome === null;
|
|
29
|
+
const error = outcome?.kind === 'error';
|
|
30
|
+
/** 复制完整结果到剪贴板;成功后短暂显示"已复制"(权限失败静默)。 */
|
|
31
|
+
const copy = async () => {
|
|
32
|
+
if (text === undefined || text === '')
|
|
33
|
+
return;
|
|
34
|
+
try {
|
|
35
|
+
await navigator.clipboard.writeText(text);
|
|
36
|
+
setCopied(true);
|
|
37
|
+
window.setTimeout(() => { setCopied(false); }, 1500);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
/* 剪贴板不可用(权限/非安全上下文)时静默 */
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
const summary = running
|
|
44
|
+
? t('command.running')
|
|
45
|
+
: text !== undefined && text !== '' ? text.split('\n')[0] : t('command.done');
|
|
46
|
+
return (_jsxs("div", { className: "reflib-cmd", "data-state": running ? 'running' : error ? 'error' : 'ok', children: [_jsxs("div", { className: "reflib-cmdHead", children: [running && _jsx(IconLoadingOutline16, { size: 14, className: "reflib-spin reflib-cmdHeadIcon" }), !running && error && _jsx(IconWarningOutline16, { size: 14, className: "reflib-cmdHeadIcon" }), _jsx("span", { className: "reflib-cmdName", children: "/ref-lib" }), _jsx("span", { className: "reflib-cmdSummary", "data-error": error || undefined, children: summary }), !running && text !== undefined && text !== '' && (_jsxs("button", { type: "button", className: "reflib-cmdCopy", "aria-label": t('command.copy'), title: t('command.copy'), onClick: () => { void copy(); }, children: [copied ? _jsx(IconCheckOutline16, { size: 14 }) : _jsx(IconCopyOutline16, { size: 14 }), copied ? t('command.copied') : t('command.copy')] }))] }), !running && text !== undefined && text !== '' && (_jsx("pre", { className: "reflib-cmdBody", "data-error": error || undefined, children: text }))] }));
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=RefLibCommandCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RefLibCommandCard.js","sourceRoot":"","sources":["../../src/client/RefLibCommandCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefLibDock.d.ts","sourceRoot":"","sources":["../../src/client/RefLibDock.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAEzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"RefLibDock.d.ts","sourceRoot":"","sources":["../../src/client/RefLibDock.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAEzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAS7C,yCAAyC;AACzC,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;IACtD,wDAAwD;IACxD,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzE,8CAA8C;IAC9C,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3D,mDAAmD;IACnD,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1E,mCAAmC;IACnC,aAAa,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAC3C,kDAAkD;IAClD,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;CAClF;AAMD,kDAAkD;AAClD,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC,yBAAyB,CAAC,GAAG,kBAAkB,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;AAuCnH;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,CAuR/D"}
|
package/lib/client/RefLibDock.js
CHANGED
|
@@ -19,15 +19,21 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
19
19
|
import { useEffect, useRef, useState } from 'react';
|
|
20
20
|
import { IconFolderOpen16 } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
21
21
|
import { RefLibApiError } from "./data.js";
|
|
22
|
+
import { RefreshGuard } from "./refresh-guard.js";
|
|
23
|
+
import { deriveRefreshTriggers } from "./refresh-triggers.js";
|
|
22
24
|
import { RefLibBrowser } from "./RefLibBrowser.js";
|
|
23
25
|
import { RefLibPanel } from "./RefLibPanel.js";
|
|
24
26
|
import { ensureRefLibStyles } from "./styles.js";
|
|
27
|
+
/** 挂载预载失败重试:间隔与上限(重启后会话 live 通常 <1s,重试 1–2 次即成功)。 */
|
|
28
|
+
const MOUNT_RETRY_DELAY_MS = 800;
|
|
29
|
+
const MOUNT_RETRY_MAX = 5;
|
|
25
30
|
/** wire 错误码 → 本地化文案键(未知码回退原始消息)。 */
|
|
26
31
|
const ERROR_KEYS = {
|
|
27
32
|
'ref-lib/missing': 'error.missing',
|
|
28
33
|
'ref-lib/not-directory': 'error.notDirectory',
|
|
29
34
|
'ref-lib/unsafe': 'error.unsafe',
|
|
30
35
|
'ref-lib/unknown-id': 'error.unknownId',
|
|
36
|
+
'ref-lib/unavailable': 'error.unavailable',
|
|
31
37
|
};
|
|
32
38
|
/** 把未知错误规整为可展示文案。 */
|
|
33
39
|
function messageOf(cause) {
|
|
@@ -60,7 +66,7 @@ ensureRefLibStyles();
|
|
|
60
66
|
* @returns 胶囊入口(+ 打开时的管理面板)。
|
|
61
67
|
*/
|
|
62
68
|
export function RefLibDock(props) {
|
|
63
|
-
const { sessionId, load, add, remove, setNote, pickDirectory, listDirectory, t } = props;
|
|
69
|
+
const { sessionId, session, load, add, remove, setNote, pickDirectory, listDirectory, t } = props;
|
|
64
70
|
const [open, setOpen] = useState(false);
|
|
65
71
|
const [libs, setLibs] = useState([]);
|
|
66
72
|
const [loading, setLoading] = useState(false);
|
|
@@ -68,8 +74,9 @@ export function RefLibDock(props) {
|
|
|
68
74
|
const [picking, setPicking] = useState(false);
|
|
69
75
|
const [removingId, setRemovingId] = useState(null);
|
|
70
76
|
const [error, setError] = useState(null);
|
|
71
|
-
//
|
|
72
|
-
|
|
77
|
+
// 并发读守卫(竞态控制):仅采纳最新一次 refresh 的结果(挂载预载/开面板/轮询/
|
|
78
|
+
// 操作后刷新可能重叠);详见 src/client/refresh-guard.ts 与 tests/refresh-guard.spec.ts。
|
|
79
|
+
const guard = useRef(new RefreshGuard());
|
|
73
80
|
// 目录选择能力(v6):browse(应用内浏览器,listDirectory)或 native(OS 对话框,
|
|
74
81
|
// pickDirectory)。探测一次并缓存;host 侧能力在单次 boot 内稳定。
|
|
75
82
|
const [pickerMode, setPickerMode] = useState(null);
|
|
@@ -92,30 +99,71 @@ export function RefLibDock(props) {
|
|
|
92
99
|
setPickerMode(mode);
|
|
93
100
|
return mode;
|
|
94
101
|
};
|
|
95
|
-
|
|
96
|
-
|
|
102
|
+
/**
|
|
103
|
+
* 拉取会话参考库列表并更新 UI。
|
|
104
|
+
* @param silent - 静默模式(轮询用):失败不写入错误槽;成功也**不碰 error/loading**
|
|
105
|
+
* ——错误与加载态只由用户操作/打开面板管理,避免后台轮询吞掉操作错误提示或
|
|
106
|
+
* 提前结束面板加载态(轮询仅更新 libs 数据)。
|
|
107
|
+
*/
|
|
108
|
+
const refresh = async (silent = false) => {
|
|
109
|
+
const mine = guard.current.begin();
|
|
97
110
|
try {
|
|
98
111
|
const next = await load(sessionId);
|
|
99
|
-
if (
|
|
112
|
+
if (!guard.current.isLatest(mine))
|
|
100
113
|
return;
|
|
101
114
|
setLibs(next);
|
|
102
|
-
|
|
115
|
+
if (!silent)
|
|
116
|
+
setError(null);
|
|
103
117
|
}
|
|
104
118
|
catch (cause) {
|
|
105
|
-
if (
|
|
119
|
+
if (!guard.current.isLatest(mine))
|
|
106
120
|
return;
|
|
107
|
-
|
|
121
|
+
if (!silent)
|
|
122
|
+
setError(formatError(cause, t));
|
|
108
123
|
}
|
|
109
124
|
finally {
|
|
110
|
-
if (mine
|
|
125
|
+
if (guard.current.isLatest(mine) && !silent)
|
|
111
126
|
setLoading(false);
|
|
112
127
|
}
|
|
113
128
|
};
|
|
114
|
-
//
|
|
115
|
-
//
|
|
129
|
+
// 挂载/会话切换预载(带失败重试):重启 dsh web 后会话可能尚未 live(/list 404),
|
|
130
|
+
// 首次加载失败若直接放弃,胶囊角标/列表会缺失直到用户点开面板——延迟重试直至
|
|
131
|
+
// 会话就绪或达到上限,让"刚启动"的失效角标也能自动出现(seq 守卫防并发竞态)。
|
|
116
132
|
useEffect(() => {
|
|
117
133
|
ensureRefLibStyles();
|
|
118
|
-
|
|
134
|
+
let stopped = false;
|
|
135
|
+
let retries = 0;
|
|
136
|
+
let timer;
|
|
137
|
+
const attempt = async () => {
|
|
138
|
+
const mine = guard.current.begin();
|
|
139
|
+
try {
|
|
140
|
+
const next = await load(sessionId);
|
|
141
|
+
if (stopped || !guard.current.isLatest(mine))
|
|
142
|
+
return;
|
|
143
|
+
setLibs(next);
|
|
144
|
+
setError(null);
|
|
145
|
+
}
|
|
146
|
+
catch (cause) {
|
|
147
|
+
if (stopped || !guard.current.isLatest(mine))
|
|
148
|
+
return;
|
|
149
|
+
if (retries < MOUNT_RETRY_MAX) {
|
|
150
|
+
retries += 1;
|
|
151
|
+
timer = window.setTimeout(() => { void attempt(); }, MOUNT_RETRY_DELAY_MS);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
setError(formatError(cause, t));
|
|
155
|
+
}
|
|
156
|
+
finally {
|
|
157
|
+
if (!stopped && guard.current.isLatest(mine))
|
|
158
|
+
setLoading(false);
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
void attempt();
|
|
162
|
+
return () => {
|
|
163
|
+
stopped = true;
|
|
164
|
+
if (timer !== undefined)
|
|
165
|
+
window.clearTimeout(timer);
|
|
166
|
+
};
|
|
119
167
|
}, [sessionId]);
|
|
120
168
|
useEffect(() => {
|
|
121
169
|
if (open) {
|
|
@@ -123,6 +171,30 @@ export function RefLibDock(props) {
|
|
|
123
171
|
void refresh();
|
|
124
172
|
}
|
|
125
173
|
}, [open]);
|
|
174
|
+
// 发消息即刷新(交互钩子):dock owner 的 `session` 是**响应式会话快照**
|
|
175
|
+
// (ConversationRoot `useSession(s => s)`,每次会话 store 发布重渲染)——用户
|
|
176
|
+
// 发消息落盘后产生 user 消息节点(`kind: 'user'`),计数 +1 触发静默刷新;
|
|
177
|
+
// 流式 assistant 回复不改变 user 计数,不会每 token 刷新。
|
|
178
|
+
// 信号盲区(rc.7 查证,见 refresh-triggers.ts 与设计文档 §16):steer 打断消息
|
|
179
|
+
// 折叠为 'steering' 节点不触发;忙碌期排队消息的 user 节点在 step 领取时才落盘
|
|
180
|
+
// (刷新延迟);外部文件操作无会话事件(下次 GUI 交互同步)。
|
|
181
|
+
const { userMessageCount, refLibCommandDone } = deriveRefreshTriggers(session.nodes);
|
|
182
|
+
useEffect(() => {
|
|
183
|
+
void refresh(true);
|
|
184
|
+
}, [userMessageCount]);
|
|
185
|
+
// 命令执行即刷新:`/ref-lib` 命令(add/remove/note)执行必然产生 log-only
|
|
186
|
+
// `command/run` → `command/done`,会话快照中的 command 节点从 running
|
|
187
|
+
// (outcome null)变为 settled——settled 计数 +1 触发静默刷新(命令 handler 先
|
|
188
|
+
// 落盘 sidecar 再结算,故刷新读到的必是新数据)。与其他插件命令隔离:命令名是
|
|
189
|
+
// typed name(无别名、重名注册 fail loud),`name === 'ref-lib'` 过滤精确。
|
|
190
|
+
// 盲区:command/run 落在窗口外(压缩/截断)时 name 为 null,本次完成不刷新。
|
|
191
|
+
useEffect(() => {
|
|
192
|
+
void refresh(true);
|
|
193
|
+
}, [refLibCommandDone]);
|
|
194
|
+
// 后台轮询已移除(2026-08-22 用户决策):UI 同步改为**交互驱动**——/ref-lib
|
|
195
|
+
// 命令完成、发消息、面板操作均即时刷新;外部文件操作(删/恢复目录)在下次
|
|
196
|
+
// GUI 交互时同步。注入侧不受影响:每次模型请求的注入回调仍实时探测
|
|
197
|
+
// (node half list()),与 UI 刷新完全解耦。详见设计文档 §14。
|
|
126
198
|
const handleRemove = async (id) => {
|
|
127
199
|
setRemovingId(id);
|
|
128
200
|
setBusy(true);
|
|
@@ -215,9 +287,19 @@ export function RefLibDock(props) {
|
|
|
215
287
|
pendingPick.current = null;
|
|
216
288
|
resolve?.(null);
|
|
217
289
|
};
|
|
218
|
-
|
|
290
|
+
/**
|
|
291
|
+
* 胶囊计数(v9):徽标显示**可用**数量(失效不计入),红色角标显示失效数量
|
|
292
|
+
* (总数 − 可用数),仅存在失效条目时显示。注意:UI 数据只在打开面板/操作后
|
|
293
|
+
* 刷新,外部变更(如删除目录)不会自动反向同步到界面(与命令修改后不刷新同属
|
|
294
|
+
* 待解决的 UI 数据同步问题,见设计文档"遗留备注")。
|
|
295
|
+
*/
|
|
296
|
+
const availableCount = libs.filter((entry) => entry.status === 'available').length;
|
|
297
|
+
const unavailableCount = libs.length - availableCount;
|
|
298
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "reflib-dock", children: _jsxs("button", { type: "button", className: "reflib-chip", "data-active": open || undefined, "aria-haspopup": "dialog", "aria-expanded": open, "aria-label": unavailableCount > 0
|
|
299
|
+
? t('dock.unavailable', { count: String(unavailableCount) })
|
|
300
|
+
: availableCount > 0 ? t('dock.count.aria', { count: String(availableCount) }) : t('dock.aria'), title: t('dock.aria'), onClick: () => {
|
|
219
301
|
setOpen((value) => !value);
|
|
220
|
-
}, children: [_jsx("span", { className: "reflib-chipIcon", children: _jsx(IconFolderOpen16, { size: 14 }) }), _jsx("span", { className: "reflib-chipLabel", children: t('dock.label') }),
|
|
302
|
+
}, children: [_jsx("span", { className: "reflib-chipIcon", children: _jsx(IconFolderOpen16, { size: 14 }) }), _jsx("span", { className: "reflib-chipLabel", children: t('dock.label') }), availableCount > 0 && _jsx("span", { className: "reflib-chipBadge", children: availableCount }), unavailableCount > 0 && (_jsx("span", { className: "reflib-chipWarn", title: t('dock.unavailable', { count: String(unavailableCount) }), children: unavailableCount }))] }) }), _jsx(RefLibPanel, { open: open, onClose: () => {
|
|
221
303
|
setOpen(false);
|
|
222
304
|
}, libs: libs, loading: loading, busy: busy, picking: picking, removingId: removingId, error: error, t: t, onRemove: (id) => {
|
|
223
305
|
void handleRemove(id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefLibDock.js","sourceRoot":"","sources":["../../src/client/RefLibDock.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAInD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAA;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAqB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"RefLibDock.js","sourceRoot":"","sources":["../../src/client/RefLibDock.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefLibPanel.d.ts","sourceRoot":"","sources":["../../src/client/RefLibPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAczC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAM7C,mCAAmC;AACnC,MAAM,WAAW,gBAAgB;IAC/B,cAAc;IACd,IAAI,EAAE,OAAO,CAAA;IACb,8BAA8B;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,eAAe;IACf,IAAI,EAAE,SAAS,WAAW,EAAE,CAAA;IAC5B,uBAAuB;IACvB,OAAO,EAAE,OAAO,CAAA;IAChB,+BAA+B;IAC/B,IAAI,EAAE,OAAO,CAAA;IACb,gCAAgC;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,kCAAkC;IAClC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,aAAa;IACb,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IACzB,0BAA0B;IAC1B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,4CAA4C;IAC5C,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzD,oCAAoC;IACpC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzD,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CACvC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"RefLibPanel.d.ts","sourceRoot":"","sources":["../../src/client/RefLibPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAczC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAM7C,mCAAmC;AACnC,MAAM,WAAW,gBAAgB;IAC/B,cAAc;IACd,IAAI,EAAE,OAAO,CAAA;IACb,8BAA8B;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,eAAe;IACf,IAAI,EAAE,SAAS,WAAW,EAAE,CAAA;IAC5B,uBAAuB;IACvB,OAAO,EAAE,OAAO,CAAA;IAChB,+BAA+B;IAC/B,IAAI,EAAE,OAAO,CAAA;IACb,gCAAgC;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,kCAAkC;IAClC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,aAAa;IACb,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IACzB,0BAA0B;IAC1B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,4CAA4C;IAC5C,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzD,oCAAoC;IACpC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzD,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CACvC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAmRjE"}
|
|
@@ -74,11 +74,16 @@ export function RefLibPanel(props) {
|
|
|
74
74
|
const name = libBasename(entry.path);
|
|
75
75
|
const removing = removingId === entry.id;
|
|
76
76
|
const detailOpen = detailId === entry.id;
|
|
77
|
-
|
|
77
|
+
const unavailable = entry.status !== undefined && entry.status !== 'available';
|
|
78
|
+
return (_jsxs("div", { className: "reflib-listItem", "data-removing": removing || undefined, "data-status": unavailable ? entry.status : undefined, children: [_jsxs("div", { className: "reflib-row", children: [unavailable
|
|
79
|
+
? _jsx(IconWarningOutline16, { size: 16, className: "reflib-rowIcon reflib-rowIconWarn" })
|
|
80
|
+
: _jsx(IconFolderOpen16, { size: 16, className: "reflib-rowIcon" }), _jsxs("div", { className: "reflib-rowBody", children: [_jsx("span", { className: "reflib-rowName", title: entry.path, children: name }), _jsx("span", { className: "reflib-rowPath", title: entry.path, children: entry.path }), unavailable && (_jsx("span", { className: "reflib-rowStatus", role: "status", children: t(entry.status === 'missing' ? 'status.missing' : 'status.notDirectory') })), entry.note !== undefined && entry.note !== '' && (_jsx("span", { className: "reflib-rowNote", title: entry.note, children: entry.note.replace(/\s+/g, ' ') }))] }), _jsx(Tooltip, { label: t('detail.open'), side: "top", delayMs: 400, children: _jsx("button", { type: "button", className: "reflib-rowAction", "aria-label": t('detail.open.aria', { name }), "aria-expanded": detailOpen || undefined,
|
|
81
|
+
// 失效条目只允许移除:详情/用途编辑禁用(node 端 note 接口同样拒绝)。
|
|
82
|
+
disabled: busy || removingId !== null || unavailable, onClick: () => {
|
|
78
83
|
toggleDetail(entry);
|
|
79
84
|
}, children: _jsx(IconEllipsisOutline16, { size: 14 }) }) }), _jsx(Tooltip, { label: t('list.remove'), side: "top", delayMs: 400, children: _jsx("button", { type: "button", className: "reflib-rowRemove", "aria-label": t('list.remove.aria', { name }), disabled: busy || removingId !== null, onClick: () => {
|
|
80
85
|
onRemove(entry.id);
|
|
81
|
-
}, children: removing ? (_jsx(IconLoadingOutline16, { size: 14, className: "reflib-spin" })) : (_jsx(IconTrashOutline16, { size: 14 })) }) })] }), detailOpen && (_jsxs("div", { className: "reflib-detail", children: [_jsxs("div", { className: "reflib-detailMeta", children: [_jsx("span", { className: "reflib-detailKey", children: "ID" }), _jsx("span", { className: "reflib-detailValue", children: entry.id })] }), _jsxs("div", { className: "reflib-detailMeta", children: [_jsx("span", { className: "reflib-detailKey", children: t('detail.path') }), _jsx("span", { className: "reflib-detailValue", title: entry.path, children: entry.path })] }), _jsx("span", { className: "reflib-detailKey", children: t('add.note.label') }), _jsxs("div", { className: "reflib-noteWrap", children: [_jsx("textarea", { className: "reflib-noteTextarea", value: editNote, placeholder: t('add.note.placeholder'), "aria-label": t('add.note.label'), disabled: busy, rows: 3, maxLength: NOTE_MAX_LENGTH, onChange: (event) => {
|
|
86
|
+
}, children: removing ? (_jsx(IconLoadingOutline16, { size: 14, className: "reflib-spin" })) : (_jsx(IconTrashOutline16, { size: 14 })) }) })] }), detailOpen && !unavailable && (_jsxs("div", { className: "reflib-detail", children: [_jsxs("div", { className: "reflib-detailMeta", children: [_jsx("span", { className: "reflib-detailKey", children: "ID" }), _jsx("span", { className: "reflib-detailValue", children: entry.id })] }), _jsxs("div", { className: "reflib-detailMeta", children: [_jsx("span", { className: "reflib-detailKey", children: t('detail.path') }), _jsx("span", { className: "reflib-detailValue", title: entry.path, children: entry.path })] }), _jsx("span", { className: "reflib-detailKey", children: t('add.note.label') }), _jsxs("div", { className: "reflib-noteWrap", children: [_jsx("textarea", { className: "reflib-noteTextarea", value: editNote, placeholder: t('add.note.placeholder'), "aria-label": t('add.note.label'), disabled: busy, rows: 3, maxLength: NOTE_MAX_LENGTH, onChange: (event) => {
|
|
82
87
|
setEditNote(event.currentTarget.value);
|
|
83
88
|
} }), _jsxs("span", { className: "reflib-noteCount", children: [editNote.length, "/", NOTE_MAX_LENGTH] })] }), _jsxs("div", { className: "reflib-detailActions", children: [_jsx(Button, { variant: "ghost", size: "sm", disabled: busy, onClick: () => {
|
|
84
89
|
setDetailId(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefLibPanel.js","sourceRoot":"","sources":["../../src/client/RefLibPanel.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"RefLibPanel.js","sourceRoot":"","sources":["../../src/client/RefLibPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,wCAAwC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,wCAAwC,CAAA;AAUtF,OAAO,EAAU,KAAK,SAAS,EAAE,MAAM,cAAc,CAAA;AAErD,iCAAiC;AACjC,eAAO,MAAM,MAAM,UAAoC,CAAA;AAKvD,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAU,kBAAkB;QAC1B,uBAAuB;QACvB,SAAS,EAAE,SAAS,CAAA;KACrB;CACF;AAgCD;;;GAGG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAiD9C"}
|
package/lib/client/index.js
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* @module @hpyperry/dsh-ref-lib/src/client
|
|
16
16
|
*/
|
|
17
17
|
import { parseApiErrorPayload, parseLibsPayload, RefLibApiError } from "./data.js";
|
|
18
|
+
import { RefLibCommandCard } from "./RefLibCommandCard.js";
|
|
18
19
|
import { RefLibDock } from "./RefLibDock.js";
|
|
19
20
|
import { zh, en } from "./locales.js";
|
|
20
21
|
/** 所需服务(cordis fiber inject)。 */
|
|
@@ -79,5 +80,12 @@ export function apply(ctx) {
|
|
|
79
80
|
locale: NS,
|
|
80
81
|
inject: injected,
|
|
81
82
|
}, RefLibDock));
|
|
83
|
+
// /ref-lib 命令结果专属卡片:官方 GenericCommandCard 长结果显示不全(折叠单行
|
|
84
|
+
// ellipsis / 展开 260px 内滚动),本卡片默认全展开完整结果 + 复制按钮。
|
|
85
|
+
ctx.slots.inject('conversation.chat.commandview', () => ctx.slots.register({
|
|
86
|
+
name: 'conversation.chat.commandview',
|
|
87
|
+
key: 'ref-lib',
|
|
88
|
+
locale: NS,
|
|
89
|
+
}, RefLibCommandCard));
|
|
82
90
|
}
|
|
83
91
|
//# sourceMappingURL=index.js.map
|
package/lib/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|
package/lib/client/locales.d.ts
CHANGED
|
@@ -12,6 +12,9 @@ export declare const zh: {
|
|
|
12
12
|
'dock.label': string;
|
|
13
13
|
'dock.aria': string;
|
|
14
14
|
'dock.count.aria': string;
|
|
15
|
+
'dock.unavailable': string;
|
|
16
|
+
'status.missing': string;
|
|
17
|
+
'status.notDirectory': string;
|
|
15
18
|
'panel.title': string;
|
|
16
19
|
'panel.close': string;
|
|
17
20
|
'panel.description': string;
|
|
@@ -46,6 +49,11 @@ export declare const zh: {
|
|
|
46
49
|
'error.notDirectory': string;
|
|
47
50
|
'error.unsafe': string;
|
|
48
51
|
'error.unknownId': string;
|
|
52
|
+
'error.unavailable': string;
|
|
53
|
+
'command.running': string;
|
|
54
|
+
'command.done': string;
|
|
55
|
+
'command.copy': string;
|
|
56
|
+
'command.copied': string;
|
|
49
57
|
};
|
|
50
58
|
/** ref-lib 命名空间的键集。 */
|
|
51
59
|
export type RefLibKey = keyof typeof zh;
|
|
@@ -54,6 +62,9 @@ export declare const en: {
|
|
|
54
62
|
'dock.label': string;
|
|
55
63
|
'dock.aria': string;
|
|
56
64
|
'dock.count.aria': string;
|
|
65
|
+
'dock.unavailable': string;
|
|
66
|
+
'status.missing': string;
|
|
67
|
+
'status.notDirectory': string;
|
|
57
68
|
'panel.title': string;
|
|
58
69
|
'panel.close': string;
|
|
59
70
|
'panel.description': string;
|
|
@@ -88,5 +99,10 @@ export declare const en: {
|
|
|
88
99
|
'error.notDirectory': string;
|
|
89
100
|
'error.unsafe': string;
|
|
90
101
|
'error.unknownId': string;
|
|
102
|
+
'error.unavailable': string;
|
|
103
|
+
'command.running': string;
|
|
104
|
+
'command.done': string;
|
|
105
|
+
'command.copy': string;
|
|
106
|
+
'command.copied': string;
|
|
91
107
|
};
|
|
92
108
|
//# sourceMappingURL=locales.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../src/client/locales.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,sBAAsB;AACtB,eAAO,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../src/client/locales.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,sBAAsB;AACtB,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDmB,CAAA;AAElC,uBAAuB;AACvB,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,EAAE,CAAA;AAEvC,+BAA+B;AAC/B,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDsB,CAAA"}
|
package/lib/client/locales.js
CHANGED
|
@@ -13,6 +13,10 @@ export const zh = {
|
|
|
13
13
|
'dock.label': '参考库',
|
|
14
14
|
'dock.aria': '管理只读参考库',
|
|
15
15
|
'dock.count.aria': '参考库,共 {count} 个',
|
|
16
|
+
'dock.unavailable': '参考库,{count} 个失效',
|
|
17
|
+
// ── 条目可用性(失效检测,v9)──
|
|
18
|
+
'status.missing': '目录已删除或不可访问',
|
|
19
|
+
'status.notDirectory': '路径不再是目录',
|
|
16
20
|
// ── 管理面板 ──
|
|
17
21
|
'panel.title': '参考库',
|
|
18
22
|
'panel.close': '关闭',
|
|
@@ -52,12 +56,22 @@ export const zh = {
|
|
|
52
56
|
'error.notDirectory': '不是目录:{path}',
|
|
53
57
|
'error.unsafe': '路径包含控制字符,已拒绝:{path}',
|
|
54
58
|
'error.unknownId': '未找到参考库条目:{id}',
|
|
59
|
+
'error.unavailable': '参考库目录不可用(仅允许移除)',
|
|
60
|
+
// ── /ref-lib 命令结果卡片(conversation.chat.commandview)──
|
|
61
|
+
'command.running': '执行中…',
|
|
62
|
+
'command.done': '完成',
|
|
63
|
+
'command.copy': '复制',
|
|
64
|
+
'command.copied': '已复制',
|
|
55
65
|
};
|
|
56
66
|
/** 英文词典,与 zh 键集逐键对齐(编译期校验)。 */
|
|
57
67
|
export const en = {
|
|
58
68
|
'dock.label': 'Reference Library',
|
|
59
69
|
'dock.aria': 'Manage read-only reference libraries',
|
|
60
70
|
'dock.count.aria': 'Reference library, {count} total',
|
|
71
|
+
'dock.unavailable': 'Reference library, {count} unavailable',
|
|
72
|
+
// ── Entry availability (stale detection, v9) ──
|
|
73
|
+
'status.missing': 'Directory deleted or unavailable',
|
|
74
|
+
'status.notDirectory': 'Path is no longer a directory',
|
|
61
75
|
'panel.title': 'Reference Library',
|
|
62
76
|
'panel.close': 'Close',
|
|
63
77
|
'panel.description': '{count} read-only reference libraries: the agent may read them for reference, but must not modify any files',
|
|
@@ -94,5 +108,11 @@ export const en = {
|
|
|
94
108
|
'error.notDirectory': 'Not a directory: {path}',
|
|
95
109
|
'error.unsafe': 'Path contains control characters and was rejected: {path}',
|
|
96
110
|
'error.unknownId': 'Reference library entry not found: {id}',
|
|
111
|
+
'error.unavailable': 'Reference library directory unavailable (remove only)',
|
|
112
|
+
// ── /ref-lib command result card (conversation.chat.commandview) ──
|
|
113
|
+
'command.running': 'Running…',
|
|
114
|
+
'command.done': 'Done',
|
|
115
|
+
'command.copy': 'Copy',
|
|
116
|
+
'command.copied': 'Copied',
|
|
97
117
|
};
|
|
98
118
|
//# sourceMappingURL=locales.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locales.js","sourceRoot":"","sources":["../../src/client/locales.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,sBAAsB;AACtB,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,0CAA0C;IAC1C,YAAY,EAAE,KAAK;IACnB,WAAW,EAAE,SAAS;IACtB,iBAAiB,EAAE,iBAAiB;IACpC,aAAa;IACb,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,IAAI;IACnB,mBAAmB,EAAE,wCAAwC;IAC7D,aAAa,EAAE,IAAI;IACnB,kBAAkB,EAAE,cAAc;IAClC,YAAY,EAAE,QAAQ;IACtB,iBAAiB,EAAE,uBAAuB;IAC1C,cAAc,EAAE,OAAO;IACvB,aAAa;IACb,aAAa,EAAE,MAAM;IACrB,kBAAkB,EAAE,eAAe;IACnC,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,IAAI;IACrB,aAAa,EAAE,IAAI;IACnB,aAAa;IACb,WAAW,EAAE,OAAO;IACpB,iBAAiB,EAAE,kBAAkB;IACrC,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;IAClB,gBAAgB,EAAE,MAAM;IACxB,sBAAsB,EAAE,yBAAyB;IACjD,UAAU,EAAE,8BAA8B;IAC1C,2BAA2B;IAC3B,eAAe,EAAE,MAAM;IACvB,cAAc,EAAE,KAAK;IACrB,cAAc,EAAE,OAAO;IACvB,mBAAmB,EAAE,YAAY;IACjC,oBAAoB,EAAE,aAAa;IACnC,kBAAkB,EAAE,MAAM;IAC1B,yBAAyB,EAAE,aAAa;IACxC,eAAe,EAAE,WAAW;IAC5B,iBAAiB,EAAE,MAAM;IACzB,gBAAgB,EAAE,IAAI;IACtB,+BAA+B;IAC/B,eAAe,EAAE,cAAc;IAC/B,oBAAoB,EAAE,aAAa;IACnC,cAAc,EAAE,qBAAqB;IACrC,iBAAiB,EAAE,eAAe;
|
|
1
|
+
{"version":3,"file":"locales.js","sourceRoot":"","sources":["../../src/client/locales.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,sBAAsB;AACtB,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,0CAA0C;IAC1C,YAAY,EAAE,KAAK;IACnB,WAAW,EAAE,SAAS;IACtB,iBAAiB,EAAE,iBAAiB;IACpC,kBAAkB,EAAE,iBAAiB;IACrC,sBAAsB;IACtB,gBAAgB,EAAE,YAAY;IAC9B,qBAAqB,EAAE,SAAS;IAChC,aAAa;IACb,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,IAAI;IACnB,mBAAmB,EAAE,wCAAwC;IAC7D,aAAa,EAAE,IAAI;IACnB,kBAAkB,EAAE,cAAc;IAClC,YAAY,EAAE,QAAQ;IACtB,iBAAiB,EAAE,uBAAuB;IAC1C,cAAc,EAAE,OAAO;IACvB,aAAa;IACb,aAAa,EAAE,MAAM;IACrB,kBAAkB,EAAE,eAAe;IACnC,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,IAAI;IACrB,aAAa,EAAE,IAAI;IACnB,aAAa;IACb,WAAW,EAAE,OAAO;IACpB,iBAAiB,EAAE,kBAAkB;IACrC,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;IAClB,gBAAgB,EAAE,MAAM;IACxB,sBAAsB,EAAE,yBAAyB;IACjD,UAAU,EAAE,8BAA8B;IAC1C,2BAA2B;IAC3B,eAAe,EAAE,MAAM;IACvB,cAAc,EAAE,KAAK;IACrB,cAAc,EAAE,OAAO;IACvB,mBAAmB,EAAE,YAAY;IACjC,oBAAoB,EAAE,aAAa;IACnC,kBAAkB,EAAE,MAAM;IAC1B,yBAAyB,EAAE,aAAa;IACxC,eAAe,EAAE,WAAW;IAC5B,iBAAiB,EAAE,MAAM;IACzB,gBAAgB,EAAE,IAAI;IACtB,+BAA+B;IAC/B,eAAe,EAAE,cAAc;IAC/B,oBAAoB,EAAE,aAAa;IACnC,cAAc,EAAE,qBAAqB;IACrC,iBAAiB,EAAE,eAAe;IAClC,mBAAmB,EAAE,iBAAiB;IACtC,sDAAsD;IACtD,iBAAiB,EAAE,MAAM;IACzB,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,IAAI;IACpB,gBAAgB,EAAE,KAAK;CACS,CAAA;AAKlC,+BAA+B;AAC/B,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,YAAY,EAAE,mBAAmB;IACjC,WAAW,EAAE,sCAAsC;IACnD,iBAAiB,EAAE,kCAAkC;IACrD,kBAAkB,EAAE,wCAAwC;IAC5D,iDAAiD;IACjD,gBAAgB,EAAE,kCAAkC;IACpD,qBAAqB,EAAE,+BAA+B;IACtD,aAAa,EAAE,mBAAmB;IAClC,aAAa,EAAE,OAAO;IACtB,mBAAmB,EACjB,6GAA6G;IAC/G,aAAa,EAAE,QAAQ;IACvB,kBAAkB,EAAE,iCAAiC;IACrD,YAAY,EAAE,4BAA4B;IAC1C,iBAAiB,EAAE,6DAA6D;IAChF,cAAc,EAAE,UAAU;IAC1B,sBAAsB;IACtB,aAAa,EAAE,cAAc;IAC7B,kBAAkB,EAAE,wBAAwB;IAC5C,aAAa,EAAE,MAAM;IACrB,eAAe,EAAE,QAAQ;IACzB,aAAa,EAAE,MAAM;IACrB,WAAW,EAAE,yBAAyB;IACtC,iBAAiB,EAAE,wCAAwC;IAC3D,YAAY,EAAE,KAAK;IACnB,YAAY,EAAE,QAAQ;IACtB,gBAAgB,EAAE,aAAa;IAC/B,sBAAsB,EAAE,yDAAyD;IACjF,UAAU,EAAE,4FAA4F;IACxG,kDAAkD;IAClD,eAAe,EAAE,kBAAkB;IACnC,cAAc,EAAE,MAAM;IACtB,cAAc,EAAE,oBAAoB;IACpC,mBAAmB,EAAE,kDAAkD;IACvE,oBAAoB,EAAE,oBAAoB;IAC1C,kBAAkB,EAAE,WAAW;IAC/B,yBAAyB,EAAE,uCAAuC;IAClE,eAAe,EAAE,wBAAwB;IACzC,iBAAiB,EAAE,UAAU;IAC7B,gBAAgB,EAAE,QAAQ;IAC1B,eAAe,EAAE,kCAAkC;IACnD,oBAAoB,EAAE,yBAAyB;IAC/C,cAAc,EAAE,2DAA2D;IAC3E,iBAAiB,EAAE,yCAAyC;IAC5D,mBAAmB,EAAE,uDAAuD;IAC5E,qEAAqE;IACrE,iBAAiB,EAAE,UAAU;IAC7B,cAAc,EAAE,MAAM;IACtB,cAAc,EAAE,MAAM;IACtB,gBAAgB,EAAE,QAAQ;CACS,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 并发读守卫(竞态控制核心):只接受"最后发起"的请求结果。
|
|
3
|
+
*
|
|
4
|
+
* RefLibDock 有多个并发"拉取列表"来源——挂载预载、打开面板、30s 轮询、操作后的
|
|
5
|
+
* 刷新——网络返回顺序不保证,旧快照可能覆盖新快照。守卫用递增编号标记每次发起:
|
|
6
|
+
* 返回时只有仍持有**最新编号**的请求结果才被应用,其余一律丢弃。
|
|
7
|
+
*
|
|
8
|
+
* 为什么"最后发起"就代表最新:`list` 返回的是请求发起时刻的服务端快照,发起越晚
|
|
9
|
+
* 快照越新,所以只信最后发起者 ≈ 只信最新快照。操作后的刷新总是最后发起(操作
|
|
10
|
+
* 完成后才发起),天然胜出;响应乱序时旧号被丢弃,最终一致。
|
|
11
|
+
*
|
|
12
|
+
* 纯 TS、零依赖、零 DOM——node 环境可直接单元测试(tests/refresh-guard.spec.ts)。
|
|
13
|
+
* @module @hpyperry/dsh-ref-lib/src/client/refresh-guard
|
|
14
|
+
*/
|
|
15
|
+
export declare class RefreshGuard {
|
|
16
|
+
private seq;
|
|
17
|
+
/** 发起一次请求,返回本次请求的编号。 */
|
|
18
|
+
begin(): number;
|
|
19
|
+
/**
|
|
20
|
+
* 该编号是否仍是最新发起者。
|
|
21
|
+
* @param mine - 发起时 {@link begin} 返回的编号。
|
|
22
|
+
* @returns true 表示应应用该请求的结果;false 表示期间又有新请求发起,结果已过期。
|
|
23
|
+
*/
|
|
24
|
+
isLatest(mine: number): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* 作废所有 in-flight 请求的结果(会话切换 / 组件卸载时调用):seq 递增后,
|
|
27
|
+
* 任何旧编号的 {@link isLatest} 都返回 false。
|
|
28
|
+
*/
|
|
29
|
+
invalidate(): void;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=refresh-guard.d.ts.map
|