dsh-thinking-guard 0.1.17 → 0.1.20
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 +40 -130
- package/cordis.patch.yml +5 -0
- package/lib/client.d.ts +8 -2
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +4627 -6732
- package/lib/guard-core.js +74 -15
- package/lib/guard-core.js.map +1 -1
- package/lib/guard-loop-core.js +158 -24
- package/lib/guard-loop-core.js.map +1 -1
- package/lib/guard.js +228 -85
- package/lib/guard.js.map +1 -1
- package/lib/host-face.js +1 -0
- package/lib/host-face.js.map +1 -1
- package/lib/index.js +11 -1
- package/lib/index.js.map +1 -1
- package/lib/invoke.js +16 -10
- package/lib/invoke.js.map +1 -1
- package/lib/policy-state.js +29 -1
- package/lib/policy-state.js.map +1 -1
- package/lib/policy.js +178 -10
- package/lib/policy.js.map +1 -1
- package/lib/registry.js +12 -2
- package/lib/registry.js.map +1 -1
- package/lib/server/call-index-remote.js +110 -0
- package/lib/server/call-index-remote.js.map +1 -0
- package/lib/server/remote.js +13 -0
- package/lib/server/remote.js.map +1 -1
- package/lib/types/guard-core.d.ts +91 -6
- package/lib/types/guard-core.d.ts.map +1 -1
- package/lib/types/guard-loop-core.d.ts +64 -3
- package/lib/types/guard-loop-core.d.ts.map +1 -1
- package/lib/types/guard.d.ts +7 -1
- package/lib/types/guard.d.ts.map +1 -1
- package/lib/types/host-face.d.ts.map +1 -1
- package/lib/types/index.d.ts +5 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/invoke.d.ts.map +1 -1
- package/lib/types/policy-state.d.ts +6 -0
- package/lib/types/policy-state.d.ts.map +1 -1
- package/lib/types/policy.d.ts +34 -3
- package/lib/types/policy.d.ts.map +1 -1
- package/lib/types/registry.d.ts.map +1 -1
- package/lib/types/server/call-index-remote.d.ts +17 -0
- package/lib/types/server/call-index-remote.d.ts.map +1 -0
- package/lib/types/server/remote.d.ts +9 -0
- package/lib/types/server/remote.d.ts.map +1 -1
- package/lib/types/usage/call-index-core.d.ts +152 -0
- package/lib/types/usage/call-index-core.d.ts.map +1 -0
- package/lib/types/usage/call-index-host-face.d.ts +44 -0
- package/lib/types/usage/call-index-host-face.d.ts.map +1 -0
- package/lib/types/usage/call-index-host.d.ts +7 -0
- package/lib/types/usage/call-index-host.d.ts.map +1 -0
- package/lib/types/usage/call-index-query.d.ts +97 -0
- package/lib/types/usage/call-index-query.d.ts.map +1 -0
- package/lib/types/usage/call-index-runtime.d.ts +46 -0
- package/lib/types/usage/call-index-runtime.d.ts.map +1 -0
- package/lib/types/usage/call-index-scope.d.ts +59 -0
- package/lib/types/usage/call-index-scope.d.ts.map +1 -0
- package/lib/types/usage/call-index-wire.d.ts +286 -0
- package/lib/types/usage/call-index-wire.d.ts.map +1 -0
- package/lib/types/usage/session-index.d.ts +149 -0
- package/lib/types/usage/session-index.d.ts.map +1 -0
- package/lib/usage/call-index-core.js +761 -0
- package/lib/usage/call-index-core.js.map +1 -0
- package/lib/usage/call-index-host-face.js +77 -0
- package/lib/usage/call-index-host-face.js.map +1 -0
- package/lib/usage/call-index-host.js +13 -0
- package/lib/usage/call-index-host.js.map +1 -0
- package/lib/usage/call-index-query.js +669 -0
- package/lib/usage/call-index-query.js.map +1 -0
- package/lib/usage/call-index-runtime.js +376 -0
- package/lib/usage/call-index-runtime.js.map +1 -0
- package/lib/usage/call-index-scope.js +79 -0
- package/lib/usage/call-index-scope.js.map +1 -0
- package/lib/usage/call-index-wire.js +490 -0
- package/lib/usage/call-index-wire.js.map +1 -0
- package/lib/usage/session-index.js +600 -0
- package/lib/usage/session-index.js.map +1 -0
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,170 +1,80 @@
|
|
|
1
1
|
# dsh-thinking-guard
|
|
2
2
|
|
|
3
|
-
一个 DSH 插件:把**能力目录与按需调用**(Capability Menu 思路)和 **Agent
|
|
3
|
+
一个 DSH 插件:把**能力目录与按需调用**(Capability Menu 思路)和 **Agent 效率守卫**(重复/循环调用提醒)整合在一起。
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
- `meta_search` 按需查找能力,`meta_invoke` 调用能力;工具与技能按 Resident / On-demand / Disabled 三档分层,Disabled 会在执行入口拒绝调用,不只是隐藏 Schema。
|
|
8
|
-
- Guard 按 Agent / Turn 隔离,用工具签名与 Step 的结果/错误指纹做重复与 A-B 循环检测;只在证据满足门槛时对匹配调用局部拒绝一次,**不停止整个 Turn**。
|
|
9
|
-
- 设置页提供四个页面:总览、防循环、调用统计、能力目录。
|
|
5
|
+
当前版本 **0.1.20**。
|
|
10
6
|
|
|
11
|
-
##
|
|
7
|
+
## 它做什么
|
|
12
8
|
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
9
|
+
- `meta_search` 按需查找能力,`meta_invoke` 调用能力。工具与技能按 **Resident / On-demand / Disabled** 三档分层:Resident 直接出现在模型工具列表里,On-demand 收起、需要时搜索后调用,Disabled 在**执行入口**拒绝,不只是隐藏 Schema。
|
|
10
|
+
- Guard 按 Agent / Turn 隔离,用工具签名与结果/错误指纹识别**重复调用**与 **A-B 交替循环**。只在证据满足门槛时对匹配调用局部拒绝一次,**不停止整个 Turn**。
|
|
11
|
+
- 设置页四个页面:总览、执行保护、工具与技能、调用明细。
|
|
16
12
|
|
|
17
13
|
## 安装
|
|
18
14
|
|
|
19
|
-
一条命令:
|
|
20
|
-
|
|
21
15
|
```bash
|
|
22
16
|
dsh plugin --profile desktop add dsh-thinking-guard
|
|
23
17
|
```
|
|
24
18
|
|
|
25
19
|
装完**重启 DSH**。
|
|
26
20
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
- 包发布在 npm registry,普通版本号即可解析,不需要贴 URL、不需要带哈希。
|
|
30
|
-
- 包内已含构建产物 `lib/`,pnpm 不会跑任何构建脚本,**不需要**在 profile 的 `pnpm-workspace.yaml` 里配 `allowBuilds`。
|
|
31
|
-
- `dsh plugin add` 会在 pnpm 之后多做一次 bundle 协调,把包自动登记进 `dsh.profile.bundles`。**手工改 `package.json` 再 `pnpm install` 不会**,那样装了也不挂载。
|
|
32
|
-
|
|
33
|
-
### 指定版本 / 升级
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
dsh plugin --profile desktop add dsh-thinking-guard@0.1.16 # 锁定版本
|
|
37
|
-
dsh plugin --profile desktop add dsh-thinking-guard # 升到最新
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### 备用渠道:GitHub Release 附件
|
|
41
|
-
|
|
42
|
-
npm 不可达时,可用 Release 附件的带哈希 URL:
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
curl -s https://api.github.com/repos/YAN3RA/dsh-thinking-guard/releases/latest \
|
|
46
|
-
| grep -o 'https://[^"]*\.tgz'
|
|
47
|
-
dsh plugin --profile desktop add '<上一步输出的 URL>'
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
**为什么附件名必须带哈希**:profile 从附件 URL 安装时,pnpm 按「URL + integrity」缓存。用同名覆盖附件后 pnpm 不会重新下载——`--force`、`store prune`、删 `node_modules` 都无效。附件名带 tarball 自身 SHA-256 前 8 位,内容变了 URL 就变,缓存不可能命中旧内容。
|
|
51
|
-
|
|
52
|
-
### 不支持的安装来源
|
|
53
|
-
|
|
54
|
-
| 来源 | 结果 | 原因 |
|
|
55
|
-
|---|---|---|
|
|
56
|
-
| `git+https://…` / `github:owner/repo` | ❌ | 仓库不含 `lib/`,pnpm 需现场跑 `prepare` 构建,而 pnpm 默认拦截 git 依赖的构建脚本 |
|
|
57
|
-
| `link:<本地目录>` | ⚠️ 能装不推荐 | 软链到源码目录,peer 依赖不从目标 `node_modules` 解析 |
|
|
58
|
-
|
|
21
|
+
包已发布在 npm registry,普通包名就能装;包内含构建产物 `lib/`,不需要在 profile 里配 `allowBuilds`。
|
|
59
22
|
|
|
60
23
|
## 升级
|
|
61
24
|
|
|
62
|
-
重跑方式一 / 方式二即可。脚本会比对当前 pin 与最新附件:
|
|
63
|
-
|
|
64
|
-
- 一致 → 只重装同样的字节,`bundles` 不动
|
|
65
|
-
- 不一致 → 打印 `from:` / `to:`,走 `dsh plugin add` 换版本
|
|
66
|
-
|
|
67
|
-
手动升级就是把方式三第 2 条的 URL 换成新版本的哈希附件再跑一次。
|
|
68
|
-
|
|
69
|
-
## 卸载
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
dsh plugin --profile desktop remove dsh-thinking-guard
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
一条命令同时清掉 `dependencies` 与 `dsh.profile.bundles`(已实测)。然后重启 DSH。
|
|
76
|
-
|
|
77
|
-
插件留下的状态文件(`~/.dsh/capability-menu-policy.json`)不会自动删除。如需彻底清理,确认备份后再手动删除。
|
|
78
|
-
|
|
79
|
-
## 排错
|
|
80
|
-
|
|
81
|
-
### 装完看不到插件
|
|
82
|
-
|
|
83
|
-
先查这一条,它解释了绝大多数情况:
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
node -e "const m=require(process.env.HOME+'/.dsh/profiles/desktop/package.json'); console.log('bundled:', m.dsh.profile.bundles.includes('dsh-thinking-guard'))"
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
`false` → 当初是手改 JSON + `pnpm install` 装的,包在但没挂载。补跑一次 `dsh plugin add <附件URL>`,或手工把包名加进 `dsh.profile.bundles`,然后重启。
|
|
90
|
-
|
|
91
|
-
`true` 却仍看不到 → 确认**已重启** DSH;再看 设置 → 插件 是否有加载报错。
|
|
92
|
-
|
|
93
|
-
### 装进去的还是旧版本
|
|
94
|
-
|
|
95
|
-
几乎一定是缓存问题。比对安装目录与 Release 附件里的 `lib/client.js` 大小:
|
|
96
|
-
|
|
97
25
|
```bash
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
不一致说明命中了旧缓存——确认你 pin 的是**带哈希**的附件名。
|
|
103
|
-
|
|
104
|
-
### `dsh plugin add` 超时 / `fetch failed`
|
|
105
|
-
|
|
106
|
-
GitHub 附件下载在部分网络下会 `ETIMEDOUT`。先确认代理可用,再重跑:
|
|
107
|
-
|
|
108
|
-
```powershell
|
|
109
|
-
pwsh -NoProfile -File scripts/install.ps1 -Proxy http://127.0.0.1:7890
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
或手动设环境变量后重跑方式三:
|
|
113
|
-
|
|
114
|
-
```bash
|
|
115
|
-
export HTTPS_PROXY=http://127.0.0.1:7890
|
|
116
|
-
export HTTP_PROXY=http://127.0.0.1:7890
|
|
26
|
+
dsh plugin --profile desktop add dsh-thinking-guard # 升到最新
|
|
27
|
+
dsh plugin --profile desktop add dsh-thinking-guard@0.1.20 # 锁定某个版本
|
|
117
28
|
```
|
|
118
29
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
### `ERR_PNPM_FETCH_404` / `is not in the npm registry`
|
|
122
|
-
|
|
123
|
-
用了裸包名。本包不在 npm registry,必须给完整附件 URL。
|
|
30
|
+
装完**重启 DSH**。
|
|
124
31
|
|
|
125
|
-
|
|
32
|
+
> 若当前是通过本地 `.tgz` 或 `file:` 来源安装的,直接 `add` **不会覆盖**已有来源——先 `remove` 再 `add`:
|
|
33
|
+
>
|
|
34
|
+
> ```bash
|
|
35
|
+
> dsh plugin --profile desktop remove dsh-thinking-guard
|
|
36
|
+
> dsh plugin --profile desktop add dsh-thinking-guard
|
|
37
|
+
> ```
|
|
126
38
|
|
|
127
|
-
|
|
39
|
+
## 配置
|
|
128
40
|
|
|
129
|
-
|
|
41
|
+
Guard 的行为由三个开关**各自独立**控制:
|
|
130
42
|
|
|
131
|
-
|
|
132
|
-
`
|
|
133
|
-
|
|
43
|
+
- `duplicateDetection`:精确重复提醒。同一操作及相同结果/错误指纹连续重复达到第 3/5/8 次时给出提醒。
|
|
44
|
+
- `alternatingCycleDetection`:交替循环识别。识别有证据的 A-B 交替循环并提醒;与 `duplicateDetection` 互相独立,关掉其一不影响另一个。
|
|
45
|
+
- `noProgressProtection`:局部拒绝的总闸。关闭时仍然提醒,但**绝不拒绝任何调用**;只有开启且证据满足门槛时,才通过 `tools.guard` 对匹配调用局部拒绝一次,不停止整个 Turn。
|
|
134
46
|
|
|
135
|
-
|
|
47
|
+
Quick / Normal / Deep 里的 `soft*` / `hard*` 阈值(Step、工具次数、时长)只是兼容字段与计数口径,**不产生提醒,也不停止任务**。`stepLimitMode: hard-stop` 归一为 `warn-only`,`duplicateHardBlock: true` 归一为 `false`,启动时分别记录弃用提示。配置位于插件 root entry 的 `config.guard`,状态按 Agent / Turn 隔离。
|
|
136
48
|
|
|
137
|
-
|
|
49
|
+
## 调用索引
|
|
138
50
|
|
|
139
|
-
|
|
51
|
+
设置页的「调用明细」与「总览」由本插件自己的调用索引提供:Host 侧读历史与实时事件,浏览器侧经宿主认证的 Remote 取元数据。
|
|
140
52
|
|
|
141
|
-
`
|
|
53
|
+
根 entry 的 `config.callIndex.scope` **默认是 `host-visible`**(D-029,2026-11-11 按操作者要求反转了 D-026 的 fail-closed 默认)。该范围是当前宿主官方会话服务可见的记录,**可能包含其他 Profile**。这不是按 Profile 或工作目录隔离,不主动挂载外部 Session 目录、不读私有会话文件。
|
|
142
54
|
|
|
143
|
-
```
|
|
144
|
-
|
|
55
|
+
```yaml
|
|
56
|
+
callIndex:
|
|
57
|
+
scope: host-visible # 改回 disabled 即恢复 fail-closed:不索引历史
|
|
145
58
|
```
|
|
146
59
|
|
|
147
|
-
|
|
60
|
+
`callIndex.getIndexStatus()` 查询范围、覆盖及任务状态;`startIndex({mode:'full'|'incremental'})` 显式启动历史扫描并立即返回任务 ID;`cancelIndex({taskId})` 只取消匹配任务。访问标签或查询状态不会自动全量扫描。实时事件只发布元数据,不逐事件枚举历史。
|
|
148
61
|
|
|
149
|
-
|
|
62
|
+
`getSummary`、`listSessions`、`listCalls` 和 `getCallDetail` 经宿主认证的 Remote 提供元数据。列表默认 50 条、最多 200 条;使用 `snapshotId` 在同一过滤条件下共享冻结快照,后续页用 opaque cursor。缓存默认 60 秒、4 视图、8MiB 序列化元数据,另有 256 游标上限;过期/重扫/范围失效返回 `cursor-stale`,容量不足明确报错,不截断冒充全量。来源归属不确定时保留 unknown,不能把零条过滤结果当“从未使用”。
|
|
150
63
|
|
|
151
|
-
|
|
64
|
+
索引只在内存保存,重启后重建;调用参数、完整输出、正文和隐藏思维链不进入索引、Remote 或日志。历史读取仅在本机 Host 临时解码事件。事件覆盖 complete 只对应已枚举范围及截点,来源/PTC/Skill/拒绝分类的可解释程度另行标注。卸载会取消扫描、关闭句柄、移除 listener/timer 并清空查询视图。
|
|
152
65
|
|
|
153
|
-
|
|
66
|
+
## 宿主兼容性
|
|
154
67
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
| 看现在做到哪 / 接手 | 根目录 `HANDOFF.md` |
|
|
159
|
-
| 长期规则与开发规范 | 根目录 `AGENTS.md` |
|
|
160
|
-
| 查架构与模块方案 | 见项目层 `02_Design/` 下的方案文档(不在本仓库内) |
|
|
161
|
-
| 查历史与归档 | 根目录 `04_Docs/02_history/README.md` |
|
|
68
|
+
- **基线版本:DSH 0.2.2-rc.1**(`devDependencies` 全部 pin 在该版本)。0.2.2-rc.3 上做过一次端到端兼容实测:20 个 peer 依赖范围全部满足、引用的导出与注册的 hook 名均在、设置页四个 Tab 与导航图标正常渲染。
|
|
69
|
+
- `peerDependencies` 声明范围 `^0.2.0 || ^0.2.1-rc.3 || ^0.2.2-rc.1`,**除 0.2.2-rc.1 与 0.2.2-rc.3 以外的版本均未实测**,属理论兼容,不代表已验证可用。
|
|
70
|
+
- 安装时 `dsh plugin add` 会比对宿主版本要求,不匹配会拒绝安装并打印放行命令。**那条命令会跳过兼容检查**,只在确认风险后执行。
|
|
162
71
|
|
|
163
|
-
##
|
|
72
|
+
## 权限与隐私
|
|
164
73
|
|
|
165
|
-
-
|
|
166
|
-
-
|
|
74
|
+
- 不读取、不保存、不输出隐藏思维链。
|
|
75
|
+
- Guard 只保留 SHA-256 签名与有界计数,不保存原始工具参数或结果。
|
|
76
|
+
- 工具结果的压缩与原文恢复由宿主或 Save Token 负责,本插件不重复实现。
|
|
167
77
|
|
|
168
78
|
## 来源与许可
|
|
169
79
|
|
|
170
|
-
|
|
80
|
+
基于 Capability Menu 实现,按 Apache License 2.0 发布。详见 [LICENSE](LICENSE)。
|
package/cordis.patch.yml
CHANGED
|
@@ -92,6 +92,11 @@
|
|
|
92
92
|
- id: thinking-guard
|
|
93
93
|
name: 'dsh-thinking-guard'
|
|
94
94
|
config:
|
|
95
|
+
# D-029 (2026-11-11): default flipped to host-visible at the operator's
|
|
96
|
+
# request; the official service corpus may include OTHER PROFILES.
|
|
97
|
+
# Set `scope: disabled` to restore D-026's fail-closed default.
|
|
98
|
+
callIndex:
|
|
99
|
+
scope: host-visible
|
|
95
100
|
guard:
|
|
96
101
|
enabled: true
|
|
97
102
|
profile: normal
|
package/lib/client.d.ts
CHANGED
|
@@ -413,12 +413,18 @@ interface SelfUpdateStatus {
|
|
|
413
413
|
readonly reason?: 'local' | 'non-registry' | 'profile-unavailable';
|
|
414
414
|
readonly sourcePath?: string;
|
|
415
415
|
}
|
|
416
|
-
/** The
|
|
416
|
+
/** The Guard switches surfaced by 思考限制, including the editable thresholds. */
|
|
417
417
|
interface GuardSwitches {
|
|
418
418
|
readonly enabled: boolean;
|
|
419
419
|
readonly duplicateDetection: boolean;
|
|
420
420
|
readonly alternatingCycleDetection: boolean;
|
|
421
421
|
readonly noProgressProtection: boolean;
|
|
422
|
+
/**
|
|
423
|
+
* 1-5 strictly increasing repeat counts in 2..50; the highest also gates a
|
|
424
|
+
* denial. Optional on the wire because a Host older than this field omits it —
|
|
425
|
+
* the panel then shows the shipped default instead of failing to load.
|
|
426
|
+
*/
|
|
427
|
+
readonly repeatThresholds?: readonly number[];
|
|
422
428
|
}
|
|
423
429
|
/** One direct child in a skill directory listing. */
|
|
424
430
|
interface SkillFileEntry {
|
|
@@ -865,7 +871,7 @@ interface CapabilitySectionInjected {
|
|
|
865
871
|
subscribeSignals: (listener: () => void) => () => void;
|
|
866
872
|
}
|
|
867
873
|
type CapabilitySectionProps = CapabilitySectionInjected;
|
|
868
|
-
type CapabilityKey = 'nav' | 'title' | 'desc' | 'resident' | 'on-demand' | 'disabled' | 'tool' | 'skill' | 'mandatory' | 'toolsGroup' | 'skillsGroup' | 'builtInGroup' | 'globalSkills' | 'projectSkills' | 'presetSkills' | 'emptyTools' | 'emptySkills' | 'emptyGlobalSkills' | 'emptyProjectSkills' | 'emptyPresetSkills' | 'filterByName' | 'filterHint' | 'filterNoMatch' | 'toolCount' | 'residentShort' | 'onDemandShort' | 'disabledShort' | 'cycleHint' | 'notPreviewable' | 'previewClose' | 'markdownCode' | 'markdownWrap' | 'markdownUnwrap' | 'markdownCopy' | 'markdownCopied' | 'markdownFootnotes' | 'detailNotFound' | 'cycleOverridden' | 'refreshFailed' | 'mcpToolsPending' | 'feedback' | 'retry' | 'carrierFailureHint' | 'registerCapability' | 'editMcp' | 'editSkillNamed' | 'edit' | 'save' | 'remove' | 'cancel' | 'confirmRemove' | 'confirmRemoveMcp' | 'confirmRemoveSkillLink' | 'confirmRemoveSkillDir' | 'confirmSaveAnyway' | 'saveConfirmRealDir' | 'register' | 'notEditable' | 'entryNotFound' | 'mcpServers' | 'skillDirs' | 'skillDirPath' | 'skillDirHint' | 'skillRoot' | 'skillRootUser' | 'skillRootProject' | 'skillRootHintUser' | 'skillRootHintProject' | 'skillProjectPath' | 'skillProjectPathHint' | 'skillRegisteredAt' | 'skillRepointed' | 'skillAdopted' | 'skillSource' | 'skillSourceHint' | 'skillFromPreset' | 'skillFromPresetHint' | 'githubImporting' | 'importing' | 'skillUnmanaged' | 'adoptSkill' | 'adoptSkillHint' | 'adoptSkillTitle' | 'sourceCustom' | 'sourceBundled' | 'serverName' | 'serverNameImmutable' | 'transport' | 'transportStdio' | 'transportHttp' | 'transportHintStdio' | 'transportHintHttp' | 'command' | 'args' | 'cwd' | 'env' | 'url' | 'headers' | 'headersHint' | 'timeout' | 'timeoutInvalid' | 'viewCatalog' | 'catalogPolicy' | 'catalogOnDemand' | 'catalogPolicyNote' | 'catalogSearchNote' | 'catalogEmpty' | 'diagnosticTitle' | 'diagnosticUnavailable' | 'diagnosticShadowed' | 'diagnosticBroken' | 'diagnosticUnbrowseable' | 'diagnosticUndocumented' | 'editSearchMetadata' | 'searchMetadataButton' | 'searchDescription' | 'searchMetadataNote' | 'searchMetadataSave' | 'searchMetadataRestore' | 'searchMetadataRestoreHint' | 'searchMetadataSaved' | 'summaryLimit' | 'summaryLimitUnit' | 'summaryLimitInvalid' | 'summaryLimitDisabled' | 'summaryLimitSaved' | 'projectRootLabel' | 'skillBrowseUnavailable' | 'updateAvailable' | 'newVersion' | 'updateDialogTitle' | 'updateVersionComparison' | 'updateNpmNote' | 'updateLocalNote' | 'updateSourceSteps' | 'updateSourceStepsHide' | 'updateSourceStepsIntro' | 'updateSourceStepsRestart' | 'installUpdate' | 'switchAndInstall' | 'updatingPlugin' | 'pluginUpdated' | 'pluginSwitched' | 'pluginNonRegistrySource' | 'pluginProfileUnavailable' | 'pluginUpdateFailed' | 'tabOverview' | 'tabGuard' | 'tabCatalog' | 'tabUsage' | 'overviewTitle' | 'overviewDesc' | 'overviewRefresh' | 'guardStateOn' | 'guardStateOff' | 'guardThresholds' | 'recentCalls' | 'tierSummary' | 'attention' | 'attentionNone' | 'attentionFailures' | 'attentionIdle' | 'attentionCoverage' | 'tierResident' | 'tierOnDemand' | 'tierDisabled' | 'guardTitle' | 'guardDesc' | 'guardBoundary' | 'guardReset' | 'guardSectionA' | 'guardSectionB' | 'guardSectionC' | 'guardModelLabel' | 'guardABody1' | 'guardABody2' | 'guardABody3' | 'guardBBody1' | 'guardBBody2' | 'guardBBody3' | 'guardCBody1' | 'guardCBody2' | 'guardCBody3';
|
|
874
|
+
type CapabilityKey = 'nav' | 'title' | 'desc' | 'resident' | 'on-demand' | 'disabled' | 'tool' | 'skill' | 'mandatory' | 'toolsGroup' | 'skillsGroup' | 'builtInGroup' | 'globalSkills' | 'projectSkills' | 'presetSkills' | 'emptyTools' | 'emptySkills' | 'emptyGlobalSkills' | 'emptyProjectSkills' | 'emptyPresetSkills' | 'filterByName' | 'filterHint' | 'filterNoMatch' | 'toolCount' | 'residentShort' | 'onDemandShort' | 'disabledShort' | 'cycleHint' | 'notPreviewable' | 'previewClose' | 'markdownCode' | 'markdownWrap' | 'markdownUnwrap' | 'markdownCopy' | 'markdownCopied' | 'markdownFootnotes' | 'detailNotFound' | 'cycleOverridden' | 'refreshFailed' | 'mcpToolsPending' | 'feedback' | 'retry' | 'carrierFailureHint' | 'registerCapability' | 'editMcp' | 'editSkillNamed' | 'edit' | 'save' | 'remove' | 'cancel' | 'confirmRemove' | 'confirmRemoveMcp' | 'confirmRemoveSkillLink' | 'confirmRemoveSkillDir' | 'confirmSaveAnyway' | 'saveConfirmRealDir' | 'register' | 'notEditable' | 'entryNotFound' | 'mcpServers' | 'skillDirs' | 'skillDirPath' | 'skillDirHint' | 'skillRoot' | 'skillRootUser' | 'skillRootProject' | 'skillRootHintUser' | 'skillRootHintProject' | 'skillProjectPath' | 'skillProjectPathHint' | 'skillRegisteredAt' | 'skillRepointed' | 'skillAdopted' | 'skillSource' | 'skillSourceHint' | 'skillFromPreset' | 'skillFromPresetHint' | 'githubImporting' | 'importing' | 'skillUnmanaged' | 'adoptSkill' | 'adoptSkillHint' | 'adoptSkillTitle' | 'sourceCustom' | 'sourceBundled' | 'serverName' | 'serverNameImmutable' | 'transport' | 'transportStdio' | 'transportHttp' | 'transportHintStdio' | 'transportHintHttp' | 'command' | 'args' | 'cwd' | 'env' | 'url' | 'headers' | 'headersHint' | 'timeout' | 'timeoutInvalid' | 'viewCatalog' | 'catalogPolicy' | 'catalogOnDemand' | 'catalogPolicyNote' | 'catalogSearchNote' | 'catalogEmpty' | 'diagnosticTitle' | 'diagnosticUnavailable' | 'diagnosticShadowed' | 'diagnosticBroken' | 'diagnosticUnbrowseable' | 'diagnosticUndocumented' | 'editSearchMetadata' | 'searchMetadataButton' | 'searchDescription' | 'searchMetadataNote' | 'searchMetadataSave' | 'searchMetadataRestore' | 'searchMetadataRestoreHint' | 'searchMetadataSaved' | 'summaryLimit' | 'summaryLimitUnit' | 'summaryLimitInvalid' | 'summaryLimitDisabled' | 'summaryLimitSaved' | 'projectRootLabel' | 'skillBrowseUnavailable' | 'updateAvailable' | 'newVersion' | 'updateDialogTitle' | 'updateVersionComparison' | 'updateNpmNote' | 'updateLocalNote' | 'updateSourceSteps' | 'updateSourceStepsHide' | 'updateSourceStepsIntro' | 'updateSourceStepsRestart' | 'installUpdate' | 'switchAndInstall' | 'updatingPlugin' | 'pluginUpdated' | 'pluginSwitched' | 'pluginNonRegistrySource' | 'pluginProfileUnavailable' | 'pluginUpdateFailed' | 'tabOverview' | 'tabGuard' | 'tabCatalog' | 'tabUsage' | 'overviewTitle' | 'overviewDesc' | 'overviewRefresh' | 'guardStateOn' | 'guardStateOff' | 'guardThresholds' | 'guardStatsTitle' | 'guardStatObservations' | 'guardStatObservationsHint' | 'guardStatOutcomes' | 'guardStatOutcomesHint' | 'guardStatReminders' | 'guardStatRemindersHint' | 'guardStatDenials' | 'guardStatDenialsHint' | 'guardStatsSince' | 'guardThresholdsEditableHint' | 'guardThresholdsFixedHint' | 'recentCalls' | 'tierSummary' | 'attention' | 'attentionNone' | 'attentionFailures' | 'attentionIdle' | 'attentionCoverage' | 'tierResident' | 'tierOnDemand' | 'tierDisabled' | 'guardTitle' | 'guardDesc' | 'guardBoundary' | 'guardReset' | 'guardSectionA' | 'guardSectionB' | 'guardSectionC' | 'guardModelLabel' | 'guardABody1' | 'guardABody2' | 'guardABody3' | 'guardBBody1' | 'guardBBody2' | 'guardBBody3' | 'guardCBody1' | 'guardCBody2' | 'guardCBody3';
|
|
869
875
|
//#endregion
|
|
870
876
|
//#region src/client/index.d.ts
|
|
871
877
|
/**
|
package/lib/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","names":[],"sources":["../src/client/usage.tsx","../src/registry.ts","../src/client/remote.ts","../src/client/store.ts","../src/client/CapabilitySection.tsx","../src/client/index.ts"],"mappings":";;;;;;;;;;;;KA2BY;;KAGA;KAEA;KAEA;;KAGA;;KAGA;UAEK;WACN,QAAQ;;WAER;;WAEA;WACA;WACA;WACA;WACA;WACA,uBAAuB;;UAGjB;;WAEN;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;;UAGM;WACN;WACA;WACA,MAAM;;WAEN;WACA,SAAS;WACT,aAAa;WACb;WACA;WACA;WACA;;UAGM;WACN;WACA;;;;;;;;;UAUM;WACN,kBAAkB;WAClB,sBAAsB;WACtB,iBAAiB;;UAGX;;WAEN;WACA,WAAW;WACX,SAAS;WACT,wBAAwB;WACxB,UAAU;;WAEV;;;;;;WAMA,kBAAkB,SAAS;;UAGrB;WACN,MAAM;WACN;WACA,OAAO;;;KAIN,YAAY;WACT;WAAmB,OAAO;;WAC1B;WAAoB;aAAkB;aAAuB;;;;;;;;;UAQ3D;EACf,YAAY,OAAO,aAAa,QAAQ,YAAY;;;;;;;;;;KCnH1C;;;;;;;;KASA;;UAgBK;;WAEN;;WAEA;;WAEA;;WAEA;;;;;;;;;;;WAWA;;;UAIM;WACN;WACA;WACA;WACA;WACA;;;UAIM;;WAEN;WACA,MAAM;;WAEN,kBAAkB;;WAElB;WACA;;WAEA;WACA,QAAQ;;WAER,YAAY;WACZ;IAAc;IAAyB;;WACvC;WACA,OAAO;;WAEP;;;UAqCM;WACN;WACA,MAAM;WACN;WACA;WACA;;WAEA;;WAEA;WACA;WACA;WACA;WACA;;;UAIM;WACN;WACA,MAAM;WACN,kBAAkB;WAClB;WACA;WACA;WACA,YAAY;WACZ,SAAS;WACT,QAAQ;WACR;WACA,OAAO;;;UAID;WACN,OAAO;WACP;WACA;;WAEA;;WAEA;;;;;;WAMA,QAAQ;;WAER;;WAEA;;WAEA;;;UAIM;WACN;WACA,SAAS;WACT,QAAQ;;;UAIF;WACN;WACA;;UAGM;WACN;aAAuC;aAAuB;aAAyB;;WACvF;aAAoC;aAAuB;aAA+B;;WAC1F;aAAmC;aAAqB;;WACxD;aAAwC;aAAuB;;WAC/D;aAAwC;aAAuB;;WAC/D;aAAoB;aAAmC;;;;UAIjD;WACN;WACA,MAAM;WACN;WACA;WACA;;UAGM;WACN;WACA,MAAM;;WAEN;;;UAIM;;EAEf,OAAO,UAAU,oBAAoB;;;;;;EAMrC,IAAI,YAAY,OAAO,iBAAiB;;;;;EAKxC,UAAU,YAAY,OAAO,gBAAgB,UAAU,oBAAoB,QAAQ;;;;;;;EAOnF,aAAa,YAAY,mBAAmB,QAAQ;;;;;;EAMpD,cAAc,YAAY,kBAAkB;;;;;EAK5C,aAAa;aAAyB;aAAuB;aAA2B;;EACxF,eAAe;;EAEf;;;;;;;;;;EAUA;;;;;;;EAOA,WAAW;;;;;;EAMX;EACA,kBAAkB,YAAY,MAAM,iBAAiB;EACrD,qBAAqB,OAAO,uBAAuB;EACnD;EACA;EACA,sBAAsB,gBAAgB;;;YAI5B;IACR,YAAY;;;;;;UClRC;WACN;WACA;WACA;WACA;;WAEA;;;;;;WAMA;;WAEA;WACA;WACA;WACA;;;UAIM;;WAEN;WACA;WACA;WACA;aACE;aACA;aACA;aACA;;;UAII;WACN;WACA;WACA;WACA;WACA;WACA;;;UAIM;WACN;WACA;WACA;WACA;;;
|
|
1
|
+
{"version":3,"file":"client.d.ts","names":[],"sources":["../src/client/usage.tsx","../src/registry.ts","../src/client/remote.ts","../src/client/store.ts","../src/client/CapabilitySection.tsx","../src/client/index.ts"],"mappings":"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"}
|