prompt-skill-armory 0.9.3 → 0.9.8
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.en.md +19 -5
- package/README.md +19 -5
- package/cli.cjs +21 -3
- package/package.json +1 -1
- package/packages/client-ui-switchblade/lib/client.js +260 -83
- package/packages/client-ui-switchblade/lib/client.js.map +1 -1
- package/packages/client-ui-switchblade/package.json +1 -1
- package/packages/client-ui-switchblade/src/client/SwitchbladeSection.tsx +135 -38
- package/packages/client-ui-switchblade/src/client/conversations.ts +18 -11
- package/packages/client-ui-switchblade/src/client/store.ts +7 -3
- package/packages/switchblade/lib/index.js +176 -38
- package/packages/switchblade/lib/switchblade.js +176 -38
- package/packages/switchblade/package.json +1 -1
- package/packages/switchblade/src/conversations.ts +115 -20
- package/packages/switchblade/src/switchblade.ts +65 -15
package/README.en.md
CHANGED
|
@@ -12,13 +12,13 @@
|
|
|
12
12
|
|--|--|--|--|
|
|
13
13
|
| <img src="docs/preview/preview-6.png" width="220"/> | <img src="docs/preview/preview-7.png" width="220"/> | | |
|
|
14
14
|
|
|
15
|
-

|
|
16
16
|

|
|
17
17
|

|
|
18
18
|

|
|
19
19
|
|
|
20
20
|
```
|
|
21
|
-
✦ Armory v0.9.
|
|
21
|
+
✦ Armory v0.9.8
|
|
22
22
|
┌─────────┬─────────┬─────┬────────────┬──────┬──────┐
|
|
23
23
|
│ Prompts │ Skills │ MCP │ Wallpaper │ Chat │ Stats│
|
|
24
24
|
│ global │ merged │ hub │ wallpaper │ sync │ usage│
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
## 📑 Table of contents
|
|
31
31
|
|
|
32
32
|
- [🚀 Quick start](#-quick-start)
|
|
33
|
+
- [🎯 Supported upstreams](#-supported-upstreams)
|
|
33
34
|
- [✨ Features](#-features)
|
|
34
35
|
- [🖥️ Platform support](#️-platform-support)
|
|
35
36
|
- [🔄 One-click update](#-one-click-update)
|
|
@@ -46,6 +47,19 @@
|
|
|
46
47
|
|
|
47
48
|
---
|
|
48
49
|
|
|
50
|
+
## 🎯 Supported upstreams
|
|
51
|
+
|
|
52
|
+
Armory is a **DeepSeek Harness plugin**, built and tested against exactly these two official repositories:
|
|
53
|
+
|
|
54
|
+
| Upstream | Environment | Repo |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| **DeepSeek Harness** | `dsh web` web runtime | <https://github.com/deepseek-ai/deepseek-harness> |
|
|
57
|
+
| **DSH Desktop** | desktop client | <https://github.com/anywhere-labs/dsh-desktop> |
|
|
58
|
+
|
|
59
|
+
> ⚠️ **Use builds from the official repositories above (or compatible derivatives).** Other forks / modified builds may change internal interfaces, which can prevent the panel from mounting, settings from applying, missing commands, or even put the client into recovery mode — that is not a bug in this plugin. Before installing or reporting issues, confirm your runtime comes from these two sources.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
49
63
|
## 🚀 Quick start
|
|
50
64
|
|
|
51
65
|
### Install
|
|
@@ -102,8 +116,8 @@ Open **Settings → Armory** (book icon).
|
|
|
102
116
|
|
|
103
117
|
| Environment | Panel | `/armory` commands |
|
|
104
118
|
|---|---|---|
|
|
105
|
-
| `dsh web` (
|
|
106
|
-
| DSH Desktop client | ✅ | ✅ |
|
|
119
|
+
| `dsh web` ([deepseek-ai/deepseek-harness](https://github.com/deepseek-ai/deepseek-harness)) | ✅ | ✅ |
|
|
120
|
+
| DSH Desktop client ([anywhere-labs/dsh-desktop](https://github.com/anywhere-labs/dsh-desktop)) | ✅ | ✅ |
|
|
107
121
|
|
|
108
122
|
Achieved via profile composition (the installer mounts the panel into each profile's `cordis.patch.yml`) — no client fork needed.
|
|
109
123
|
|
|
@@ -111,7 +125,7 @@ Achieved via profile composition (the installer mounts the panel into each profi
|
|
|
111
125
|
|
|
112
126
|
Every time the panel opens it queries npm for the latest `prompt-skill-armory` version; when a newer version exists a banner appears:
|
|
113
127
|
|
|
114
|
-
> New version vX.Y.Z (current v0.9.
|
|
128
|
+
> New version vX.Y.Z (current v0.9.8) [Update now]
|
|
115
129
|
|
|
116
130
|
Clicking "Update now" makes the Host re-run the official installer in place → "Update complete, please restart the client".
|
|
117
131
|
|
package/README.md
CHANGED
|
@@ -12,13 +12,13 @@
|
|
|
12
12
|
|--|--|--|--|
|
|
13
13
|
| <img src="docs/preview/preview-6.png" width="220"/> | <img src="docs/preview/preview-7.png" width="220"/> | | |
|
|
14
14
|
|
|
15
|
-

|
|
16
16
|

|
|
17
17
|

|
|
18
18
|

|
|
19
19
|
|
|
20
20
|
```
|
|
21
|
-
✦ Armory v0.9.
|
|
21
|
+
✦ Armory v0.9.8
|
|
22
22
|
┌─────────┬─────────┬─────┬────────────┬──────┬──────┐
|
|
23
23
|
│ 提示词 │ 技能 │ MCP │ Wallpaper │ 对话 │ 统计 │
|
|
24
24
|
│ 全局注入 │ 合并管理 │ 连接 │ 壁纸·特效 │ 导入 │ 用量 │
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
## 📑 目录
|
|
31
31
|
|
|
32
32
|
- [🚀 快速开始](#-快速开始)
|
|
33
|
+
- [🎯 适配目标 · Supported upstreams](#-适配目标--supported-upstreams)
|
|
33
34
|
- [✨ 功能](#-功能)
|
|
34
35
|
- [🖥️ 平台支持](#️-平台支持)
|
|
35
36
|
- [🔄 一键更新](#-一键更新)
|
|
@@ -46,6 +47,19 @@
|
|
|
46
47
|
|
|
47
48
|
---
|
|
48
49
|
|
|
50
|
+
## 🎯 适配目标 · Supported upstreams
|
|
51
|
+
|
|
52
|
+
Armory 是 **DeepSeek Harness 的插件**,专为以下两个官方仓库构建与测试:
|
|
53
|
+
|
|
54
|
+
| 上游 | 对应环境 | 仓库 |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| **DeepSeek Harness** | `dsh web` 网页端运行时 | <https://github.com/deepseek-ai/deepseek-harness> |
|
|
57
|
+
| **DSH Desktop** | 桌面客户端 | <https://github.com/anywhere-labs/dsh-desktop> |
|
|
58
|
+
|
|
59
|
+
> ⚠️ **请使用上述官方仓库的构建(或其保持兼容的派生版)。** 其他 fork / 魔改版本的内部接口可能不同,导致面板无法挂载、设置不生效、命令缺失,甚至让客户端进入恢复模式——那不是本插件的 bug。安装或反馈前请先确认你的运行时来自以上两个出处。
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
49
63
|
## 🚀 快速开始
|
|
50
64
|
|
|
51
65
|
### 安装
|
|
@@ -105,8 +119,8 @@ pnpm dsh web
|
|
|
105
119
|
|
|
106
120
|
| 环境 | 面板 | `/armory` 命令 |
|
|
107
121
|
|---|---|---|
|
|
108
|
-
| `dsh web
|
|
109
|
-
| DSH Desktop
|
|
122
|
+
| `dsh web`([deepseek-ai/deepseek-harness](https://github.com/deepseek-ai/deepseek-harness)) | ✅ | ✅ |
|
|
123
|
+
| DSH Desktop 客户端([anywhere-labs/dsh-desktop](https://github.com/anywhere-labs/dsh-desktop)) | ✅ | ✅ |
|
|
110
124
|
|
|
111
125
|
通过 profile 组合实现(安装器把面板挂进每个 profile 的 `cordis.patch.yml`)——无需 fork 客户端。
|
|
112
126
|
|
|
@@ -114,7 +128,7 @@ pnpm dsh web
|
|
|
114
128
|
|
|
115
129
|
插件面板每次打开会自动查询 npm 上 `prompt-skill-armory` 的最新版本;发现新版本时顶部显示横幅:
|
|
116
130
|
|
|
117
|
-
> 有新版本 vX.Y.Z(当前 v0.9.
|
|
131
|
+
> 有新版本 vX.Y.Z(当前 v0.9.8) [一键更新]
|
|
118
132
|
|
|
119
133
|
点击「一键更新」→ Host 端运行官方安装器原地重装 → 提示「更新完成,请重启客户端生效」。
|
|
120
134
|
|
package/cli.cjs
CHANGED
|
@@ -141,13 +141,24 @@ function mountClientPanel(profileDir) {
|
|
|
141
141
|
console.log(` · ui-switchblade already mounted in ${patchPath}`)
|
|
142
142
|
return
|
|
143
143
|
}
|
|
144
|
-
//
|
|
144
|
+
// Block-level dedup: if ANY Armory-managed line (comment header, the id/name
|
|
145
|
+
// pair, or a bare stub we previously wrote) is present, drop every one of
|
|
146
|
+
// them. Line-based filtering used to keep the header + bare `- insert:`
|
|
147
|
+
// lines (they don't contain the literal "ui-switchblade"), re-appending a
|
|
148
|
+
// truncated insert block on every install/update — which the 2.0.9 patch
|
|
149
|
+
// parser rejects (recovery mode). This must remove the whole block at once.
|
|
150
|
+
const hasArmory = /Prompt-SkillArmory client panel|ui-switchblade/.test(existing)
|
|
145
151
|
const meaningful = existing
|
|
146
152
|
.split('\n')
|
|
147
153
|
.map((l) => l.replace(/\r$/, ''))
|
|
148
154
|
.filter((l) => {
|
|
149
155
|
const t = l.trim()
|
|
150
|
-
|
|
156
|
+
if (t === '' || t === '[]') return false
|
|
157
|
+
if (!hasArmory) return true
|
|
158
|
+
if (t.includes('Prompt-SkillArmory client panel')) return false
|
|
159
|
+
if (t === '- insert:') return false
|
|
160
|
+
if (t.includes('ui-switchblade')) return false
|
|
161
|
+
return true
|
|
151
162
|
})
|
|
152
163
|
const base = meaningful.length > 0 ? meaningful.join('\n') + '\n' : ''
|
|
153
164
|
writeFileSync(patchPath, `${base}${canonical}`)
|
|
@@ -186,11 +197,18 @@ function removeBundle(profileDir) {
|
|
|
186
197
|
function unmountClientPanel(profileDir) {
|
|
187
198
|
const patchPath = join(profileDir, 'cordis.patch.yml')
|
|
188
199
|
if (!existsSync(patchPath)) { console.log(' · no cordis.patch.yml'); return }
|
|
200
|
+
// Same block-level removal: strip every Armory-managed line, keep user rows.
|
|
201
|
+
const hasArmory = /Prompt-SkillArmory client panel|ui-switchblade/.test(readFileSync(patchPath, 'utf8'))
|
|
189
202
|
const meaningful = readFileSync(patchPath, 'utf8')
|
|
190
203
|
.split('\n').map((l) => l.replace(/\r$/, ''))
|
|
191
204
|
.filter((l) => {
|
|
192
205
|
const t = l.trim()
|
|
193
|
-
|
|
206
|
+
if (t === '' || t === '[]') return false
|
|
207
|
+
if (!hasArmory) return true
|
|
208
|
+
if (t.includes('Prompt-SkillArmory client panel')) return false
|
|
209
|
+
if (t === '- insert:') return false
|
|
210
|
+
if (t.includes('ui-switchblade')) return false
|
|
211
|
+
return true
|
|
194
212
|
})
|
|
195
213
|
if (meaningful.length === 0) {
|
|
196
214
|
rmSync(patchPath, { force: true })
|
package/package.json
CHANGED