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 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
- ![version](https://img.shields.io/badge/version-0.9.3-00ff9c)
15
+ ![version](https://img.shields.io/badge/version-0.9.8-00ff9c)
16
16
  ![license](https://img.shields.io/badge/license-MIT-blue)
17
17
  ![platform](https://img.shields.io/badge/platform-web%20%2B%20desktop-00ff9c)
18
18
  ![CI](https://github.com/Qian-Ning/prompt-skill-armory/actions/workflows/ci.yml/badge.svg)
19
19
 
20
20
  ```
21
- ✦ Armory v0.9.3
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` (official) | ✅ | ✅ |
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.3) [Update now]
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
- ![version](https://img.shields.io/badge/version-0.9.3-00ff9c)
15
+ ![version](https://img.shields.io/badge/version-0.9.8-00ff9c)
16
16
  ![license](https://img.shields.io/badge/license-MIT-blue)
17
17
  ![platform](https://img.shields.io/badge/platform-web%20%2B%20desktop-00ff9c)
18
18
  ![CI](https://github.com/Qian-Ning/prompt-skill-armory/actions/workflows/ci.yml/badge.svg)
19
19
 
20
20
  ```
21
- ✦ Armory v0.9.3
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.3) [一键更新]
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
- // Preserve any real user entries, dropping an old bare `[]` line.
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
- return t !== '' && t !== '[]' && !(l.includes('ui-switchblade') && (l.includes('id:') || l.includes('name:') || l.includes('# Prompt-SkillArmory')))
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
- return t !== '' && t !== '[]' && !(l.includes('ui-switchblade') && (l.includes('id:') || l.includes('name:') || l.includes('# Prompt-SkillArmory')))
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prompt-skill-armory",
3
- "version": "0.9.3",
3
+ "version": "0.9.8",
4
4
  "description": "One-command installer for Prompt-SkillArmory (prompts + skills manager) into the DeepSeek Harness (web + desktop)",
5
5
  "type": "module",
6
6
  "bin": {