dsh-plugin-upgrade 2.0.1 → 2.0.2

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-hi.md CHANGED
@@ -3,16 +3,18 @@
3
3
  # ⬆️ dsh-plugin-upgrade
4
4
  - **1024 स्टोर चैनल**: एक बार `npm i -g dsh1024` चलाएँ, फिर `dsh1024 plugin --profile web add dsh-plugin-upgrade` (यह [deepseek1024.com](https://deepseek1024.com) की इंस्टॉल रैंकिंग में गिना जाता है)।
5
5
  [![Gitee](https://img.shields.io/badge/Gitee-mirror-c71d23?logo=gitee)](https://gitee.com/perrylink/dsh-plugin-upgrade)
6
+ [![dshfind](https://dshfind.com/api/badge/PerryLink/dsh-plugin-upgrade?metric=downloads&lang=hi)](https://dshfind.com/hi/plugins/PerryLink/dsh-plugin-upgrade?ref=badge)
6
7
 
7
- **DeepSeek Harness के लिए संस्करण-लॉक्ड और विलयित प्लगइन अपग्रेड स्किल — `0.1.3-alpha.1` → `0.1.5-rc.1`, दो बंद पैरों (legs) में वहन किया गया।**
8
+ **DeepSeek Harness के लिए प्लगइन अपग्रेड स्किल — एक पैकेज, एक कॉरिडोर सूचकांक, दो बंद कॉरिडोर: `0.1.3-alpha.1` → `0.1.5-rc.1` (`legAB`) और `0.1.5-rc.2` `0.1.6-alpha.2` (`legC`)।**
8
9
 
9
- *पैर A `0.1.3-alpha.1` → `0.1.5-alpha.1`, पैर B `0.1.5-alpha.1` → `0.1.5-rc.1`: विलयित 20-सीम कैटलॉग पर एक कॉरिडोर कार्ड और एक शून्य-निर्भरता सीम स्कैनर, ताकि चुपचाप माउंट होना बंद कर चुका क्लाइंट आधा हिस्सा कभी «typecheck हरा है» न समझा जाए।*
10
+ *स्कैनर स्वयं मार्ग चुनता है: यह लक्ष्य रिपॉज़िटरी का घोषित dsh बैंड पढ़ता है (या `--span` लेता है), और फिर उसी कॉरिडोर का अपना साक्ष्य-बद्ध कैटलॉग लागू करता है — `legAB` की 20 सीमें (पैर A `0.1.3-alpha.1` → `0.1.5-alpha.1` और पैर B `0.1.5-alpha.1` → `0.1.5-rc.1`) या `legC` की 5 सीमें (`E1`–`E5`)। एक ही प्रवेश बिंदु, ताकि चुपचाप माउंट होना बंद कर चुका क्लाइंट आधा हिस्सा कभी «typecheck हरा है» न समझा जाए।*
10
11
 
11
- > **आधिकारिक रिपॉज़िटरी।** यह dsh-plugin-upgrade की एकमात्र आधिकारिक रिपॉज़िटरी है, जिसे PerryLink संभालता है। यह दोनों संस्करण-लॉक्ड पैकेजों `dsh-plugin-upgrade` (पैर A) और `dsh-plugin-upgrade-rc1` (पैर B) का स्थान लेती है। अन्य खातों की समान-नाम वाली रिपॉज़िटरियाँ इससे संबद्ध नहीं हैं।
12
+ > **आधिकारिक रिपॉज़िटरी।** यह dsh-plugin-upgrade की एकमात्र आधिकारिक रिपॉज़िटरी है, जिसे PerryLink संभालता है। यह दोनों सेवानिवृत्त संस्करण-लॉक्ड पैकेजों `dsh-plugin-upgrade` (पैर A) और `dsh-plugin-upgrade-rc1` (पैर B) का स्थान लेती है, और `0.1.5-rc.2` → `0.1.6-alpha.2` कॉरिडोर (पैर C) इसी पैकेज में समाहित किया गया — `dsh-plugin-upgrade-016` नाम रजिस्ट्री तक कभी नहीं पहुँचा। अन्य खातों की समान-नाम वाली रिपॉज़िटरियाँ इससे संबद्ध नहीं हैं।
12
13
 
13
14
  [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
14
15
  [![DSH plugin](https://img.shields.io/badge/dsh--plugin-✅-green)](https://github.com/topics/dsh-plugin)
15
16
  [![dsh-doctor](https://raw.githubusercontent.com/PerryLink/dsh-plugin-doctor/main/badges/PerryLink__dsh-plugin-upgrade.svg)](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
17
+ [![DSH Market](https://raw.githubusercontent.com/2BingLing/dsh-market/master/assets/readme/badge-listed-en.svg)](https://dsh.market/)
16
18
  [![Node](https://img.shields.io/badge/node-%5E22.19%20%7C%7C%20%3E%3D24-brightgreen.svg)](#)
17
19
  [![CI](https://img.shields.io/github/actions/workflow/status/PerryLink/dsh-plugin-upgrade/ci.yml?branch=main&label=CI)](https://github.com/PerryLink/dsh-plugin-upgrade/actions)
18
20
  [![Version](https://img.shields.io/github/v/tag/PerryLink/dsh-plugin-upgrade?label=version)](https://github.com/PerryLink/dsh-plugin-upgrade/releases)
@@ -29,21 +31,22 @@
29
31
 
30
32
  | सतह | स्थिति |
31
33
  |---|---|
32
- | हार्नेस | DeepSeek Harness `0.1.5-rc.1` (tag `dsh-v0.1.5-rc.1` = `183f08e9c6dd`; पैर A→B हैंडऑफ़ `dsh-v0.1.5-alpha.1` = `5dda764ed3aa`; कॉरिडोर की शुरुआत `0.1.3-alpha.1`)। पीयर बैंड `@deepseek-ai/dsh-skill >=0.1.2-rc.1 <0.2.0 \|\| >=0.1.5-alpha.1 <0.2.0`, `@deepseek-ai/cordis ^4.0.2`, `@deepseek-ai/schemastery ^3.18.2`। |
34
+ | हार्नेस | DeepSeek Harness `0.1.5-rc.1` (tag `dsh-v0.1.7-alpha.2` = `183f08e9c6dd`; पैर A→B हैंडऑफ़ `dsh-v0.1.7-alpha.2` = `5dda764ed3aa`; कॉरिडोर की शुरुआत `0.1.3-alpha.1`), और `legC` के लिए DeepSeek Harness `0.1.6-alpha.2` (tag `dsh-v0.1.7-alpha.2`)। पीयर बैंड `@deepseek-ai/dsh-skill >=0.1.2-rc.1 <0.2.0 \|\| >=0.1.5-alpha.1 <0.2.0 \|\| >=0.1.6-0 <0.2.0 \|\| >=0.1.7-0 <0.2.0`, `@deepseek-ai/cordis ^4.0.2`, `@deepseek-ai/schemastery ^3.18.2`। |
33
35
  | Node | `^22.19.0 \|\| >=24.0.0` |
34
36
  | प्लेटफ़ॉर्म | जहाँ Node चले; स्कैनर केवल फ़ाइल सिस्टम पढ़ता है और प्लेटफ़ॉर्म-निरपेक्ष है |
35
37
  | मॉडल | केवल-पाठ मॉडल पूरी तरह समर्थित; स्किल एक Markdown है, किसी टूल या विज़न की आवश्यकता नहीं |
36
- | दायरा | **दो बंद पैर, एक ही विस्तार**: पैर A `0.1.3-alpha.1` `0.1.5-alpha.1` और पैर B `0.1.5-alpha.1` `0.1.5-rc.1`। कॉरिडोर कभी चौड़ा नहीं होता: `0.1.5-rc.1` के बाद की कोई छलांग एक नया पैकेज है। |
37
- | पैर | दोनों पैर इसी पैकेज में रहते हैं: पैर A `S1`–`S10` + `M1` सीमें रखता है, पैर B `C1`, `C2`, `C4`, `C5`, `H1`–`H4`, `P1` हर एक के अपने साक्ष्य, कार्ड अनुभाग, fixtures और रोलबैक पथ के साथ। इंस्टॉल करने के लिए कोई सहोदर पैकेज नहीं है। |
38
+ | कॉरिडोर सूचकांक | एक पैकेज, एक प्रवेश बिंदु। `lib/route.mjs` बंद कॉरिडोर रखता है और CLI लक्ष्य रेपो के घोषित बैंड (`engines.dsh`, `@deepseek-ai/dsh*` की रेंजें) से मेल खाते कॉरिडोर पर मार्ग देता है; `--span legAB\|legC` अनुमान को ओवरराइड करता है और बिना घोषित बैंड पुराने कॉरिडोर पर लौट आता है। दोनों कैटलॉग कभी विलय नहीं होते: हर कॉरिडोर अपना सीम array, कार्ड, साक्ष्य, fixtures और समानता गेट रखता है। |
39
+ | दायरा | **दो बंद कॉरिडोर**: `legAB` = `0.1.3-alpha.1` `0.1.5-rc.1` (पैर A + पैर B), `legC` = `0.1.5-rc.2` `0.1.6-alpha.2`। कॉरिडोर कभी चौड़ा नहीं होता: सीम जोड़ने वाली कोई छलांग एक नया कॉरिडोर है एक नया कार्ड और सूचकांक में एक नई पंक्ति, न कि नया पैकेज। |
40
+ | पैर | हर पैर इसी पैकेज में रहता है: पैर A `S1`–`S10` + `M1` सीमें रखता है, पैर B `C1`, `C2`, `C4`, `C5`, `H1`–`H4`, `P1` रखता है, और पैर C `E1`–`E5` रखता है — हर एक के अपने साक्ष्य, कार्ड अनुभाग, fixtures और रोलबैक पथ के साथ। इंस्टॉल करने के लिए कोई सहोदर पैकेज नहीं है। |
38
41
  | `C3` | सेवानिवृत्त: पैर B का कार्ड पुरानी टाइप-लाइन वाले झूठे हरे को `C3` लिखता था, जो पैर A की `M1` जैसा ही दोष है। यह विलय कार्ड पर दर्ज है; `--seams C3` किसी से मेल नहीं खाता। |
39
42
  | पूर्ववर्ती पैकेज | एक ही प्रोफ़ाइल में सेवानिवृत्त `dsh-plugin-upgrade` को साथ में माउंट न करें: दोनों agent skill `plugin-upgrade` पंजीकृत करते हैं, इसलिए दूसरा माउंट skill नाम पर टकराएगा। वह पैकेज npm पर deprecated है और उसका रिपॉज़िटरी सेवानिवृत्त हो चुका है; यह पैकेज उसके दोनों चरणों का स्थान लेता है। |
40
43
 
41
44
  ## आपको क्या मिलता है
42
45
 
43
- दो हिस्से, एक ही सीम कैटलॉग:
46
+ दो हिस्से, हर कॉरिडोर के लिए एक सीम कैटलॉग:
44
47
 
45
48
  - **पैकेज में शामिल एजेंट स्किल (`plugin-upgrade`)** — विलयित कॉरिडोर कार्ड और ठीक-करो-और-सत्यापित-करो चक्र। बॉडी पहले बुलाने वाले को उसी पैर तक पहुँचाती है जो उसके पीयर बैंड से मेल खाता है; मॉडल इसे केवल तब लोड करता है जब किसी कार्य को वास्तव में आवश्यकता हो, और यह पैकेज सिस्टम प्रॉम्प्ट का कोई अनुच्छेद नहीं जोड़ता और कोई टूल भी नहीं।
46
- - **शून्य-निर्भरता CLI (`dsh-plugin-upgrade-scan`)** — विलयित बीस सीमों (`S3`, `S8`, `S9`, `M1`, `S4`, `S5`, `S6`, `S7`, `S2`, `S1`, `S10`, `C1`, `C2`, `P1`, `C4`, `C5`, `H1`, `H2`, `H4`, `H3`) के `file:line` तथ्य बताता है, जो 2026-09-09 (पैर A) और 2026-09-10 (पैर B) को हार्नेस tag रेंज से दोबारा पढ़े गए। किसी भी error-स्तर की हिट पर `1` लौटाता है, इसलिए सीधे CI में लगता है।
49
+ - **शून्य-निर्भरता CLI (`dsh-plugin-upgrade-scan`)** — कॉरिडोर हल करता है और उसी कॉरिडोर की सीमों के `file:line` तथ्य बताता है: `legAB` की बीस (`S3`, `S8`, `S9`, `M1`, `S4`, `S5`, `S6`, `S7`, `S2`, `S1`, `S10`, `C1`, `C2`, `P1`, `C4`, `C5`, `H1`, `H2`, `H4`, `H3`), जो 2026-09-09 (पैर A) और 2026-09-10 (पैर B) को हार्नेस tag रेंज से दोबारा पढ़ी गईं, या `legC` की पाँच (`E1`–`E5`), जो `dsh-v0.1.7-alpha.1` पर मापी गईं (2026-09-19)। किसी भी error-स्तर की हिट पर `1` लौटाता है, इसलिए सीधे CI में लगता है।
47
50
 
48
51
  यह उस विफलता-विधा के लिए है जिसे खत्म करने के लिए यह कॉरिडोर बना है: **इस विस्तार की टूटन ज़्यादातर चुपचाप होती है, दोनों सिरों से।** टाइप लाइन पुरानी हो सकती है, इसलिए रेपो **पुराने** कैटलॉग के विरुद्ध कंपाइल होता है (सीम `M1`), और नंगा `conversation` क्लाइंट स्लॉट बिना किसी alias के हटा दिया गया, जबकि `ctx.slots.inject()` कॉलबैक केवल तब चलाता है जब declaration मौजूद हो — इसलिए उसे अब भी लक्षित करता क्लाइंट आधा हिस्सा माउंट होना बंद कर देता है: कोई त्रुटि नहीं, कोई लॉग पंक्ति नहीं, कोई बिल्ड विफलता नहीं (सीम `C1`)। `typecheck` + `test` को तीन वर्ग की टूटन पार कर जाती हैं:
49
52
 
@@ -66,8 +69,8 @@ dsh --profile web --dump-config | grep -A3 'id: dsh-plugin-upgrade'
66
69
  npx dsh-plugin-upgrade-scan --repo ../my-plugin
67
70
  ```
68
71
 
69
- फिर एजेंट से `plugin-upgrade` स्किल इस्तेमाल करने को कहें, या कार्ड के साथ स्वयं चक्र चलाएँ:
70
- `skills/plugin-upgrade/references/v0.1.3-alpha.1-to-v0.1.5-rc.1.md` (पैर A §1 है, पैर B §2 है, विलयित सीम सूचकांक §3 है)।
72
+ फिर एजेंट से `plugin-upgrade` स्किल इस्तेमाल करने को कहें, या अपने बैंड से मेल खाते कार्ड के साथ स्वयं चक्र चलाएँ:
73
+ `skills/plugin-upgrade/references/v0.1.3-alpha.1-to-v0.1.5-rc.1.md` (`legAB` — पैर A §1 है, पैर B §2 है, विलयित सीम सूचकांक §3 है) या `skills/plugin-upgrade/references/v0.1.5-rc.2-to-v0.1.6-alpha.2.md` (`legC`) स्कैनर आपके लिए कॉरिडोर चुन लेता है; जब घोषित बैंड अस्पष्ट हो तो `--span legC` जोड़ें।
71
74
 
72
75
  ## इंस्टॉल और अनइंस्टॉल
73
76
 
@@ -107,19 +110,20 @@ dsh plugin --profile web remove dsh-plugin-upgrade # अनइंस्
107
110
  **CLI** — `dsh-plugin-upgrade-scan`:
108
111
 
109
112
  ```sh
110
- dsh-plugin-upgrade-scan [--repo <path>] [--json <out.json>] [--seams S3,C1,P1] [--quiet]
113
+ dsh-plugin-upgrade-scan [--repo <path>] [--span legAB|legC|<span>] [--json <out.json>] [--seams S3,C1,P1] [--quiet]
111
114
  ```
112
115
 
113
116
  | फ़्लैग | अर्थ |
114
117
  |---|---|
115
- | `--repo <path>` | स्कैन करने वाली रिपॉज़िटरी (डिफ़ॉल्ट: वर्तमान डायरेक्टरी)। |
118
+ | `--repo <path>` | स्कैन करने वाली रिपॉज़िटरी (डिफ़ॉल्ट: वर्तमान डायरेक्टरी)। उसका घोषित dsh बैंड कॉरिडोर चुनता है। |
119
+ | `--span legAB\|legC\|<span>` | घोषित बैंड से अनुमान लगाने के बजाय कॉरिडोर बाध्य करें। अज्ञात बैंड `legAB` पर लौट आता है। |
116
120
  | `--json <out.json>` | मशीन-पठनीय रिपोर्ट भी लिखें (`repo`, `scannedAt`, `files`, `hits[]`, `bySeam`)। |
117
- | `--seams S3,C1,P1` | विलयित कैटलॉग की केवल निर्दिष्ट सीमों तक सीमित करें। |
121
+ | `--seams S3,C1,P1` | हल किए गए कॉरिडोर के कैटलॉग की केवल निर्दिष्ट सीमों तक सीमित करें (सीम id कभी कॉरिडोरों के बीच साझा नहीं होते)। |
118
122
  | `--quiet` | मानव-पठनीय आउटपुट बंद करें (`--json` के साथ उपयोगी)। |
119
123
 
120
124
  एग्ज़िट कोड: `0` कोई error-स्तर हिट नहीं · `1` कम से कम एक error-स्तर हिट · `2` उपयोग या स्कैन विफलता। स्वच्छ स्कैन आवश्यक है पर पर्याप्त नहीं — निर्गम मानदंड असली होस्ट स्मोक है, साथ ही लॉग लेखकों के लिए एक रिज़्यूम राउंड-ट्रिप (पैर A) और क्लाइंट आधे हिस्से के लिए असली ब्राउज़र अभिकथन (पैर B)।
121
125
 
122
- ## बीस सीमें
126
+ ## बीस `legAB` सीमें
123
127
 
124
128
  क्रम `lib/scan.mjs` के कैटलॉग का अनुसरण करता है (पहले पैर A, फिर पैर B), और यही वह क्रम है जिस पर `test/card.test.mjs` कार्ड को pinned रखता है।
125
129
 
@@ -148,9 +152,23 @@ dsh-plugin-upgrade-scan [--repo <path>] [--json <out.json>] [--seams S3,C1,P1] [
148
152
 
149
153
  `S7`, `S2`, `S1`, `S10`, `C4`, `C5`, `H1`, `H2` और `H4` जानबूझकर सलाहकारी हैं: उनके वैध मेल हैं (पहले से नई API इस्तेमाल करता रेपो, दस्तावेज़ snapshot, प्लगइन की अपनी मॉडल-id तालिका, Node का `ChildProcess.pid`), इसलिए स्कैनर उन्हें विफलता नहीं बल्कि मानवीय समीक्षा के सुराग के रूप में बताता है। `M1` और `P1` **संरचित** जाँचें हैं — वे पाठ मिलाने के बजाय `package.json` और `tsconfig*.json` हल करती हैं — और `H3` **केवल-कार्ड** है: प्रलेखित, id-समानता से जाँचा गया, और जानबूझकर बिना किसी डिटेक्टर के (`CARD_ONLY = ['H3']`)।
150
154
 
155
+ ## पाँच `legC` सीमें (`0.1.5-rc.2` → `0.1.6-alpha.2`)
156
+
157
+ क्रम `lib/scan-0.1.6.mjs` के कैटलॉग का अनुसरण करता है, और यही वह क्रम है जिस पर `test/card.test.mjs` `legC` कार्ड को pinned रखता है। यहाँ हर सीम `error` है और हर एक पकड़ी जाती है (`CARD_ONLY = []`)।
158
+
159
+ | Id | स्तर | `0.1.6-alpha.2` तक के रास्ते में क्या बदला |
160
+ |---|---|---|
161
+ | `E1` | error | `agent/created` के listeners क्रमिक रूप से dispatch होते हैं: कोई listener जो फेंकता है — या जो धीमा काम करता है — agent निर्माण को सीधे अवरुद्ध कर देता है। synchronous काम को `try`/`catch` में लपेटें और बाकी को `queueMicrotask`/`setImmediate` या अपनी कतार से टालें। |
162
+ | `E2` | error | ऐसा async `apply()` जिसका पहला `await` उसके पंजीकरणों से पहले आता है: उसके बाद पंजीकृत कुछ भी unload विंडो में गिरता है और `INACTIVE_EFFECT` फेंकता है, जबकि पुराना closure चलता रहता है। सब कुछ पहले `await` से पहले, एक ही `ctx.effect()` के भीतर पंजीकृत करें। |
163
+ | `E3` | error | हटाई गई slot/state कुंजियाँ: `settings.plugin.item` अब keyed→list `plugins.item` हो गई, और `SessionListState.current` चला गया — सेटिंग्स कार्ड **चुपचाप** गायब हो जाता है (`spec === undefined` पर जल्दी वापसी), और `current` के casts तब भी कंपाइल होते रहते हैं जब सुविधा मृत है। |
164
+ | `E4` | error | हटाई गई client API: `sessions.open` / `openSubagent` / `clear` अब `retain` / `using` / `retainInfo` हो गईं। |
165
+ | `E5` | error | हटाए गए मॉडल literals: `deepseek-v4-flash*` और `deepseek-v4-vision-exp`। डिफ़ॉल्ट मॉडल कैटलॉग 4 से घटकर 2 रह गया, और बिना कैटलॉग वाला id केवल-पाठ के रूप में पार हो जाता है। |
166
+
167
+ `legAB` जैसी ही अनुशासन लागू होती है: स्वच्छ स्कैन आवश्यक है, पर्याप्त नहीं। `legC` की टूटन चुपचाप या केवल runtime में होती है (प्रकाशित टाइप लाइन उन विलोपनों को छिपा देती है), इसलिए निर्गम मानदंड अस्थायी `DSH_HOME` पर असली होस्ट स्मोक ही रहता है, साथ ही जहाँ लागू हों वहाँ लॉग-लेखक राउंड-ट्रिप और असली ब्राउज़र अभिकथन।
168
+
151
169
  ## यह क्या कवर नहीं करता
152
170
 
153
- - **`0.1.5-rc.1` के बाद की कोई छलांग।** विलयित विस्तार रचना से ही rc.1 पर समाप्त होता है: हार्नेस की छलांग `0.1.5-rc.1` → `0.1.5-rc.2` ने प्लगइन-मुखी कोई सीम नहीं जोड़ी (इस पैकेज का अपना dev/test pin और CI प्रोब `0.1.5-rc.2` लाइन पर चलते हैं, ताकि कैटलॉग नवीनतम प्रकाशित टाइप के विरुद्ध सत्यापित हो) इसके बाद सीम जोड़ने वाली कोई भी चीज़ एक **नया पैकेज** है बहकता कार्ड किसी कार्ड से बुरा है।
171
+ - **यहाँ के हर कॉरिडोर से आगे की कोई छलांग।** `legAB` रचना से ही `0.1.5-rc.1` पर समाप्त होता है: हार्नेस की छलांग `0.1.5-rc.1` → `0.1.5-rc.2` ने प्लगइन-मुखी कोई सीम नहीं जोड़ी (इस पैकेज का अपना dev/test pin अब `0.1.7-alpha.2` लाइन पर चलता है, ताकि कैटलॉग उन प्रकाशित टाइप के विरुद्ध सत्यापित हो; compat workflow का प्रोब अभी भी `0.1.6-alpha.2` पर anchored है), और `legC` `0.1.5-rc.2` → `0.1.6-alpha.2` को कवर करता है। बाद में सीम जोड़ने वाली कोई छलांग **कवर नहीं** होती: कॉरिडोर बंद होता है, और कार्ड को चौड़ा करना नया कार्ड जोड़ने से बुरा है। उसे नया कार्ड और सूचकांक में नई पंक्ति मिलती है — नया पैकेज नहीं।
154
172
  - **`0.1.1` → `0.1.2` की छलांग।** समुदाय की convergence स्किल इस्तेमाल करें।
155
173
  - **पैरों के बीच सीमें दोहराना।** सत्र-प्रारूप सीमें पैर A की हैं (`assistant/message.stream`, `SessionHandleReadResult`, `EpochHeader.system`, `ctx.agent`, `Inbox`, `SystemPrompt.persona`, V3 लॉग generation) और पैर B उन्हें दोबारा नहीं लिखता — पैर B के विस्तार में `packages/core/session/src` का पूरा diff दो जुड़े event-type literals और एक टिप्पणी पंक्ति है। हर पैर का कार्ड अनुभाग अपना दायरा-कथन रखता है।
156
174
  - **DSH की उपयोगकर्ता-मुखी अपग्रेड राह।** यह पैकेज *प्लगइन स्रोत कोड* अपग्रेड करता है, उपयोगकर्ता की harness इंस्टॉलेशन नहीं।
@@ -175,15 +193,15 @@ npm run check:readmes # पाँच-भाषा README स्थ
175
193
  npm pack
176
194
  ```
177
195
 
178
- स्कैनर के पास **हर पैर के लिए** संश्लेषित fixtures की एक जोड़ी है: `fixtures/leg-a-bad-repo` (पैर A की सत्र/कॉन्फ़िग सीमें, हर error सीम जानबूझकर मौजूद) के साथ `fixtures/leg-a-good-repo` (अनुकूलित), और `fixtures/bad-repo` (पैर B की क्लाइंट-स्लॉट सीमें) के साथ `fixtures/good-repo` (अनुकूलित) — साथ ही पहले से `0.1.5-rc.1` पर pinned एक परिवार रेपो पर live negative, ताकि कैटलॉग में रिग्रेशन डाउनस्ट्रीम उपयोगकर्ता के बजाय इस सूट में विफल हो। `test/card.test.mjs` दावा करता है कि विलयित कार्ड सूचकांक और `lib/scan.mjs` **ठीक वही** बीस सीम id और समान स्तर बताते हैं, और `CARD_ONLY` ठीक `['H3']` है — साक्ष्य-बद्धता नियम एक मशीन गेट के रूप में।
196
+ स्कैनर के पास **हर `legAB` पैर के लिए** संश्लेषित fixtures की एक जोड़ी है: `fixtures/leg-a-bad-repo` (पैर A की सत्र/कॉन्फ़िग सीमें, हर error सीम जानबूझकर मौजूद) के साथ `fixtures/leg-a-good-repo` (अनुकूलित), और `fixtures/bad-repo` (पैर B की क्लाइंट-स्लॉट सीमें) के साथ `fixtures/good-repo` (अनुकूलित) — साथ ही पहले से `0.1.5-rc.1` पर pinned एक परिवार रेपो पर live negative, ताकि कैटलॉग में रिग्रेशन डाउनस्ट्रीम उपयोगकर्ता के बजाय इस सूट में विफल हो। `test/card.test.mjs` दावा करता है कि हर कार्ड का सूचकांक और उसका अपना कैटलॉग (`legAB` के लिए `lib/scan.mjs`, `legC` के लिए `lib/scan-0.1.6.mjs`) **ठीक वही** सीम id और समान स्तर बताते हैं, कि `legAB` का `CARD_ONLY` ठीक `['H3']` है जबकि `legC` का खाली है, और कि दोनों कैटलॉग कोई सीम id साझा नहीं करते — साक्ष्य-बद्धता नियम एक मशीन गेट के रूप में, हर कॉरिडोर के लिए।
179
197
 
180
198
  ## विषय टैग
181
199
 
182
200
  `dsh`, `dsh-plugin`, `deepseek-harness`, `deepseek`, `cordis`, `plugin-upgrade`, `migration`, `skill`, `version-card`, `scanner`, `client-slots` (`package.json` के keywords के समान; `dsh-plugin` पारिस्थितिकी का दृश्यता चैनल है)।
183
201
 
184
- ## PerryLink DSH प्लगइन परिवार
202
+ ## PerryLink DSH Plugin Family
185
203
 
186
- यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [40 DeepSeek Harness प्लगइनों](https://github.com/PerryLink) में से एक है। अगर यह आपकी मदद करता है, तो बाकी भी करेंगे:
204
+ This project is one of the **45 DeepSeek Harness plugins** maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
187
205
 
188
206
  | Plugin | One-liner |
189
207
  |---|---|
@@ -193,48 +211,46 @@ npm pack
193
211
  | **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel. | |
194
212
  | **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
195
213
  | **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
196
- | **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Unified session + workspace + config checkpoints with one-shot `/rewind` | |
197
- | **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Migrate Claude Code, Codex, OpenCode and Hermes sessions, memories and skills into DSH | |
214
+ | **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore | |
215
+ | **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH | |
198
216
  | **[dsh-click](https://github.com/PerryLink/dsh-click)** | Cross-platform native desktop control for DeepSeek Harness — Windows first. | |
199
217
  | **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | Terminal-style input history for the web composer: arrows, Ctrl+R search | |
200
- | **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | Deterministic dataset profiling, cleaning and citation verification | |
218
+ | **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | Dataset quality checks and citation cross-checks (the optional numeric bridge consumed here) | |
201
219
  | **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness. | |
202
220
  | **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | Engineering-discipline guard: requirements grill, test gates, adversary review | |
203
221
  | **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | Unified static-image generation routing for DeepSeek Harness. | |
204
- | **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | Read-only performance diagnostics: load, spill, compaction and cache hit rate | |
205
- | **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | Chinese mutual-fund research with sealed, traceable source snapshots | |
206
- | **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/issue/CI integration with every write approval-gated | |
207
- | **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | Industry and company research pack: chain map, policy timeline, company cards | |
208
- | **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
209
- | **[dsh-library](https://github.com/PerryLink/dsh-library)** | Local document knowledge base with hybrid search and citation-aware injection | |
210
- | **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | Local Ollama model discovery and task-based routing with cloud fallback | |
211
- | **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | LSP diagnostics, formatting, completion, code actions, symbols and rename | |
212
- | **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | PII masking at the model boundary with a host-side restore table | |
213
- | **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | MCP management console: `/mcp` command, Settings tab and trial calls | |
214
- | **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | Approval-gated cross-session memory protocol (`ctx.memory` + SQLite) | |
215
- | **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | OpenTelemetry and Langfuse telemetry export from the session event stream | |
216
- | **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Runtime-switchable model output styles | |
217
- | **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Declarative allow/deny/ask rules plus a process-level network policy | |
222
+ | **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | Read-only performance diagnostics for DeepSeek Harness. | |
223
+ | **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | Deterministic research reports for Chinese public mutual funds | |
224
+ | **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/issues integration for DSH, every write gated by approval | |
225
+ | **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | Industry research orchestration that seals its deliverables through this plugin's `ctx.researchReport.assemble` | |
226
+ | **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | Laya typed decisions (`noul`/`choice`/`score`) as a first-class Cordis service and model-visible tools | |
227
+ | **[dsh-library](https://github.com/PerryLink/dsh-library)** | Local document knowledge base for DeepSeek Harness. | |
228
+ | **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | Local-model (Ollama) integration for DeepSeek Harness. | |
229
+ | **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | LSP diagnostics, formatting, completion, code actions and rename over language servers | |
230
+ | **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | PII masking middleware: anonymize at the model boundary, restore at the display layer | |
231
+ | **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | Read-only MCP runtime panel: /mcp command + Settings tab with status, tools and errors | |
232
+ | **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool | |
233
+ | **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | OpenTelemetry and Langfuse observability exporter for DeepSeek Harness. | |
234
+ | **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Claude Code outputStyles-equivalent runtime style switching | |
235
+ | **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code-style declarative allow/deny/ask permission rules with audit | |
218
236
  | **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
219
237
  | **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
220
- | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-dev knowledge base, agent skill and the `dsh-plugin-dev` CLI toolchain | |
238
+ | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-development knowledge base as an on-demand agent skill | |
221
239
  | **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
222
- | **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
223
- | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat, Telegram, Feishu + a session console | |
224
- | **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research reports: evidence ledger, manifest seal, per-claim verdicts | |
225
- | **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional plugin quality scoring with an evidence-backed leaderboard | |
226
- | **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions and workspaces in the Web sidebar with per-pin colors | |
227
- | **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | Git-backed cross-device session synchronization with keep-both merges | |
228
- | **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | Security-audit skill pack plus the `plugin_vet` supply-chain gate | |
229
- | **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | Voice-first session loop: speech-to-text input and text-to-speech replies | |
240
+ | **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | One-package, one-corridor-index plugin upgrade skill: routes a repository to the matching closed corridor card | |
241
+ | **[dsh-plugin-upgrade-015](https://github.com/PerryLink/dsh-plugin-upgrade-015)** | Merged `0.1.3-alpha.1` `0.1.5-rc.1` upgrade corridor card plus a zero-dependency seam scanner | |
242
+ | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat/Telegram/Feishu, session console | |
243
+ | **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research-report engine: content-addressed evidence ledger and sealed versions | |
244
+ | **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional quality scoring for DeepSeek Harness plugins. | |
245
+ | **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions in the Web sidebar with durable ordering | |
246
+ | **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | Cross-device session sync for DeepSeek Harness a dedicated git mirror of your session store. | |
247
+ | **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | Security-audit skill pack: secret scan, dependency and supply-chain review | |
248
+ | **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | Voice-first session loop for DeepSeek Harness: talk to it, hear it answer. | |
230
249
  | **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
231
- | **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives with a pass/fail matrix | |
232
- | **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel plus eleven agent tools | |
233
- | **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair | |
234
- | **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | WeChat ↔ DSH bridge (Tencent iLink bot) developed with [pan17](https://github.com/pan17/dsh-wechat), who hosts the repo | |
235
- | **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Personal directive injector with a top-bar toggle (fork of liucai2026/dsh-personal-directive) | |
250
+ | **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | |
251
+ | **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel + 11 tools | |
252
+ | **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | |
236
253
 
237
- PerryLink DSH प्लगइन परिवार का हिस्सा — 40+ रिपॉज़िटरियाँ, जो सत्र, स्मृति, अनुमतियाँ, डिलीवरी, प्रेक्षणीयता और डेवलपर टूलिंग को कवर करती हैं। कैटलॉग देखें [perrylink-dsh-catalog.perrylink.workers.dev](https://perrylink-dsh-catalog.perrylink.workers.dev) या [`dsh-plugin` विषय](https://github.com/topics/dsh-plugin) पर।
238
254
 
239
255
  ## लाइसेंस
240
256
 
package/README-pt.md CHANGED
@@ -3,16 +3,18 @@
3
3
  # ⬆️ dsh-plugin-upgrade
4
4
  - **Canal da loja 1024**: rode `npm i -g dsh1024` uma vez e depois `dsh1024 plugin --profile web add dsh-plugin-upgrade` (conta para o ranking de instalações do [deepseek1024.com](https://deepseek1024.com)).
5
5
  [![Gitee](https://img.shields.io/badge/Gitee-mirror-c71d23?logo=gitee)](https://gitee.com/perrylink/dsh-plugin-upgrade)
6
+ [![dshfind](https://dshfind.com/api/badge/PerryLink/dsh-plugin-upgrade?metric=downloads&lang=pt)](https://dshfind.com/pt/plugins/PerryLink/dsh-plugin-upgrade?ref=badge)
6
7
 
7
- **Habilidade de atualização de plugins para o DeepSeek Harness, com versão travada e fundida `0.1.3-alpha.1` → `0.1.5-rc.1`, carregada em duas pernas fechadas.**
8
+ **Habilidade de atualização de plugins para o DeepSeek Harness — um pacote, um índice de corredores, dois corredores fechados: `0.1.3-alpha.1` → `0.1.5-rc.1` (`legAB`) e `0.1.5-rc.2` `0.1.6-alpha.2` (`legC`).**
8
9
 
9
- *Perna A `0.1.3-alpha.1` → `0.1.5-alpha.1`, perna B `0.1.5-alpha.1` → `0.1.5-rc.1`: um cartão de corredor mais um scanner de costuras sem dependências sobre o catálogo fundido de 20 costuras, para que uma metade de cliente que parou de montar em silêncio nunca seja confundida com «typecheck verde».*
10
+ *O scanner se encaminha sozinho: lê a faixa dsh declarada pelo repositório alvo (ou aceita `--span`) e então aplica o catálogo próprio daquele corredor, vinculado a evidências — as 20 costuras do `legAB` (perna A `0.1.3-alpha.1` → `0.1.5-alpha.1` mais perna B `0.1.5-alpha.1` → `0.1.5-rc.1`) ou as 5 costuras do `legC` (`E1`–`E5`). Um único ponto de entrada, para que uma metade de cliente que parou de montar em silêncio nunca seja confundida com «typecheck verde».*
10
11
 
11
- > **Repositório oficial.** Este é o único repositório oficial de dsh-plugin-upgrade, mantido pela PerryLink. Ele substitui os dois pacotes com versão travada `dsh-plugin-upgrade` (perna A) e `dsh-plugin-upgrade-rc1` (perna B). Repositórios com o mesmo nome em outras contas não são afiliados.
12
+ > **Repositório oficial.** Este é o único repositório oficial de dsh-plugin-upgrade, mantido pela PerryLink. Ele substitui os dois pacotes retirados com versão travada `dsh-plugin-upgrade` (perna A) e `dsh-plugin-upgrade-rc1` (perna B), e é o pacote no qual o corredor `0.1.5-rc.2` → `0.1.6-alpha.2` (perna C) foi incorporado — o nome `dsh-plugin-upgrade-016` nunca chegou ao registro. Repositórios com o mesmo nome em outras contas não são afiliados.
12
13
 
13
14
  [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
14
15
  [![DSH plugin](https://img.shields.io/badge/dsh--plugin-✅-green)](https://github.com/topics/dsh-plugin)
15
16
  [![dsh-doctor](https://raw.githubusercontent.com/PerryLink/dsh-plugin-doctor/main/badges/PerryLink__dsh-plugin-upgrade.svg)](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
17
+ [![DSH Market](https://raw.githubusercontent.com/2BingLing/dsh-market/master/assets/readme/badge-listed-en.svg)](https://dsh.market/)
16
18
  [![Node](https://img.shields.io/badge/node-%5E22.19%20%7C%7C%20%3E%3D24-brightgreen.svg)](#)
17
19
  [![CI](https://img.shields.io/github/actions/workflow/status/PerryLink/dsh-plugin-upgrade/ci.yml?branch=main&label=CI)](https://github.com/PerryLink/dsh-plugin-upgrade/actions)
18
20
  [![Version](https://img.shields.io/github/v/tag/PerryLink/dsh-plugin-upgrade?label=version)](https://github.com/PerryLink/dsh-plugin-upgrade/releases)
@@ -29,21 +31,22 @@
29
31
 
30
32
  | Superfície | Estado |
31
33
  |---|---|
32
- | Harness | DeepSeek Harness `0.1.5-rc.1` (tag `dsh-v0.1.5-rc.1` = `183f08e9c6dd`; passagem da perna A→B `dsh-v0.1.5-alpha.1` = `5dda764ed3aa`; início do corredor `0.1.3-alpha.1`). Faixa de peers `@deepseek-ai/dsh-skill >=0.1.2-rc.1 <0.2.0 \|\| >=0.1.5-alpha.1 <0.2.0`, `@deepseek-ai/cordis ^4.0.2`, `@deepseek-ai/schemastery ^3.18.2`. |
34
+ | Harness | DeepSeek Harness `0.1.5-rc.1` (tag `dsh-v0.1.7-alpha.2` = `183f08e9c6dd`; passagem da perna A→B `dsh-v0.1.7-alpha.2` = `5dda764ed3aa`; início do corredor `0.1.3-alpha.1`) e, para o `legC`, DeepSeek Harness `0.1.6-alpha.2` (tag `dsh-v0.1.7-alpha.2`). Faixa de peers `@deepseek-ai/dsh-skill >=0.1.2-rc.1 <0.2.0 \|\| >=0.1.5-alpha.1 <0.2.0 \|\| >=0.1.6-0 <0.2.0 \|\| >=0.1.7-0 <0.2.0`, `@deepseek-ai/cordis ^4.0.2`, `@deepseek-ai/schemastery ^3.18.2`. |
33
35
  | Node | `^22.19.0 \|\| >=24.0.0` |
34
36
  | Plataformas | Onde o Node rodar; o scanner só usa o sistema de arquivos e é neutro em relação à plataforma |
35
37
  | Modelo | Modelos somente texto totalmente suportados; a habilidade é um Markdown, sem exigência de ferramentas ou visão |
36
- | Escopo | **Duas pernas fechadas, um único intervalo**: perna A `0.1.3-alpha.1` `0.1.5-alpha.1` mais perna B `0.1.5-alpha.1` `0.1.5-rc.1`. Um corredor nunca se alarga: um salto depois de `0.1.5-rc.1` é um novo pacote. |
37
- | Pernas | As duas pernas vivem neste pacote: a perna A mantém as costuras `S1`–`S10` + `M1`, a perna B mantém `C1`, `C2`, `C4`, `C5`, `H1`–`H4`, `P1` cada uma com suas próprias evidências, seção de cartão, fixtures e caminho de rollback. Não pacote irmão a instalar. |
38
+ | Índice de corredores | Um pacote, um ponto de entrada. `lib/route.mjs` guarda os corredores fechados e a CLI encaminha para o correspondente a partir da faixa declarada do repositório alvo (`engines.dsh`, os intervalos `@deepseek-ai/dsh*`); `--span legAB\|legC` substitui o palpite e uma faixa não declarada recai no corredor mais antigo. Os dois catálogos nunca são fundidos: cada corredor mantém seu próprio array de costuras, cartão, evidências, fixtures e portão de paridade. |
39
+ | Escopo | **Dois corredores fechados**: `legAB` = `0.1.3-alpha.1` `0.1.5-rc.1` (perna A + perna B), `legC` = `0.1.5-rc.2` `0.1.6-alpha.2`. Um corredor nunca se alarga: um salto que acrescenta uma costura é um corredor novo um cartão novo e uma linha nova no índice, não um pacote novo. |
40
+ | Pernas | Cada perna vive neste pacote: a perna A mantém as costuras `S1`–`S10` + `M1`, a perna B mantém `C1`, `C2`, `C4`, `C5`, `H1`–`H4`, `P1`, e a perna C mantém `E1`–`E5` — cada uma com suas próprias evidências, seção de cartão, fixtures e caminho de rollback. Não há pacote irmão a instalar. |
38
41
  | `C3` | Aposentada: o cartão da perna B chamava de `C3` o verde falso da linha de tipos desatualizada, que é o mesmo defeito da `M1` da perna A. A fusão está registrada no cartão; `--seams C3` não corresponde a nada. |
39
42
  | Pacote anterior | Não monte o retirado `dsh-plugin-upgrade` no mesmo perfil: os dois registram a skill `plugin-upgrade`, então a segunda montagem colide nesse nome. Aquele pacote está obsoleto no npm e seu repositório foi retirado; este pacote substitui as suas duas pernas. |
40
43
 
41
44
  ## O que você recebe
42
45
 
43
- Duas metades, um único catálogo de costuras:
46
+ Duas metades, um catálogo de costuras por corredor:
44
47
 
45
48
  - **Uma habilidade de agente empacotada (`plugin-upgrade`)** — o cartão do corredor fundido e um ciclo de corrigir-e-verificar. O corpo primeiro encaminha quem chama para a perna que corresponde à sua faixa de peers; o modelo só a carrega quando uma tarefa realmente precisa dela, e o pacote não contribui com nenhum parágrafo de prompt de sistema nem com nenhuma ferramenta.
46
- - **Uma CLI sem dependências (`dsh-plugin-upgrade-scan`)** — reporta fatos `file:line` das vinte costuras fundidas (`S3`, `S8`, `S9`, `M1`, `S4`, `S5`, `S6`, `S7`, `S2`, `S1`, `S10`, `C1`, `C2`, `P1`, `C4`, `C5`, `H1`, `H2`, `H4`, `H3`) relidas dos intervalos de tags do harness em 2026-09-09 (perna A) e 2026-09-10 (perna B). Sai com `1` em qualquer achado de severidade error, então entra direto no CI.
49
+ - **Uma CLI sem dependências (`dsh-plugin-upgrade-scan`)** — resolve o corredor e reporta fatos `file:line` das costuras daquele corredor: as vinte do `legAB` (`S3`, `S8`, `S9`, `M1`, `S4`, `S5`, `S6`, `S7`, `S2`, `S1`, `S10`, `C1`, `C2`, `P1`, `C4`, `C5`, `H1`, `H2`, `H4`, `H3`) relidas dos intervalos de tags do harness em 2026-09-09 (perna A) e 2026-09-10 (perna B), ou as cinco do `legC` (`E1`–`E5`) medidas no `dsh-v0.1.7-alpha.1` (2026-09-19). Sai com `1` em qualquer achado de severidade error, então entra direto no CI.
47
50
 
48
51
  O objetivo é o modo de falha que este corredor existe para matar: **a quebra deste intervalo é em grande parte silenciosa, pelas duas pontas.** A linha de tipos pode estar desatualizada, então o repositório compila contra o **catálogo antigo** (costura `M1`), e o slot de cliente puro `conversation` foi removido sem alias enquanto `ctx.slots.inject()` só executa o callback quando a declaração existe — então uma metade de cliente que ainda aponta para ele para de montar sem erro, sem linha de log e sem build quebrado (costura `C1`). Três classes de quebra sobrevivem a `typecheck` + `test`:
49
52
 
@@ -66,8 +69,8 @@ dsh --profile web --dump-config | grep -A3 'id: dsh-plugin-upgrade'
66
69
  npx dsh-plugin-upgrade-scan --repo ../my-plugin
67
70
  ```
68
71
 
69
- Depois peça ao agente para usar a habilidade `plugin-upgrade`, ou conduza o ciclo você mesmo com o cartão em
70
- `skills/plugin-upgrade/references/v0.1.3-alpha.1-to-v0.1.5-rc.1.md` (a perna A é a §1, a perna B é a §2, o índice fundido de costuras é a §3).
72
+ Depois peça ao agente para usar a habilidade `plugin-upgrade`, ou conduza o ciclo você mesmo com o cartão que corresponde à sua faixa:
73
+ `skills/plugin-upgrade/references/v0.1.3-alpha.1-to-v0.1.5-rc.1.md` (`legAB` — a perna A é a §1, a perna B é a §2, o índice de costuras fundido é a §3) ou `skills/plugin-upgrade/references/v0.1.5-rc.2-to-v0.1.6-alpha.2.md` (`legC`). O scanner escolhe o corredor por você; acrescente `--span legC` quando a faixa declarada for ambígua.
71
74
 
72
75
  ## Instalação e desinstalação
73
76
 
@@ -107,19 +110,20 @@ O plugin monta de forma ruidosa: um `SKILL.md` ausente, um corpo vazio ou um fro
107
110
  **CLI** — `dsh-plugin-upgrade-scan`:
108
111
 
109
112
  ```sh
110
- dsh-plugin-upgrade-scan [--repo <path>] [--json <out.json>] [--seams S3,C1,P1] [--quiet]
113
+ dsh-plugin-upgrade-scan [--repo <path>] [--span legAB|legC|<span>] [--json <out.json>] [--seams S3,C1,P1] [--quiet]
111
114
  ```
112
115
 
113
116
  | Flag | Significado |
114
117
  |---|---|
115
- | `--repo <path>` | Repositório a escanear (padrão: diretório atual). |
118
+ | `--repo <path>` | Repositório a escanear (padrão: diretório atual). Sua faixa dsh declarada escolhe o corredor. |
119
+ | `--span legAB\|legC\|<span>` | Força um corredor em vez de adivinhar pela faixa declarada. Uma faixa desconhecida recai no `legAB`. |
116
120
  | `--json <out.json>` | Também grava o relatório legível por máquina (`repo`, `scannedAt`, `files`, `hits[]`, `bySeam`). |
117
- | `--seams S3,C1,P1` | Restringe a costuras específicas do catálogo fundido. |
121
+ | `--seams S3,C1,P1` | Restringe a costuras específicas do catálogo do corredor resolvido (os ids nunca são compartilhados entre corredores). |
118
122
  | `--quiet` | Suprime a renderização humana (combine com `--json`). |
119
123
 
120
124
  Códigos de saída: `0` nenhum achado de severidade error · `1` ao menos um achado de severidade error · `2` uso ou falha do escaneamento. Um escaneamento limpo é necessário mas não suficiente — o critério de saída é um smoke real no host, mais uma ida-e-volta de retomada para escritores de log (perna A) e uma asserção em navegador real para a metade de cliente (perna B).
121
125
 
122
- ## As vinte costuras
126
+ ## As vinte costuras do `legAB`
123
127
 
124
128
  A ordem segue o catálogo em `lib/scan.mjs` (perna A primeiro, depois perna B), que também é a ordem à qual `test/card.test.mjs` fixa o cartão.
125
129
 
@@ -148,9 +152,23 @@ A ordem segue o catálogo em `lib/scan.mjs` (perna A primeiro, depois perna B),
148
152
 
149
153
  `S7`, `S2`, `S1`, `S10`, `C4`, `C5`, `H1`, `H2` e `H4` são deliberadamente consultivas: têm correspondências legítimas (um repositório que já usa a API nova, um snapshot de documentação, a tabela de ids de modelo de um plugin, um `ChildProcess.pid` do Node), então o scanner as reporta como pistas para revisão manual, não como falhas. `M1` e `P1` são verificações **estruturadas** — resolvem `package.json` e `tsconfig*.json` em vez de casar texto — e `H3` é **somente-cartão**: documentada, com paridade de id verificada e deliberadamente sem detector (`CARD_ONLY = ['H3']`).
150
154
 
155
+ ## As cinco costuras do `legC` (`0.1.5-rc.2` → `0.1.6-alpha.2`)
156
+
157
+ A ordem segue o catálogo em `lib/scan-0.1.6.mjs`, que também é a ordem à qual `test/card.test.mjs` fixa o cartão do `legC`. Aqui toda costura é `error` e todas são detectadas (`CARD_ONLY = []`).
158
+
159
+ | Id | Severidade | O que mudou no caminho até `0.1.6-alpha.2` |
160
+ |---|---|---|
161
+ | `E1` | error | Os listeners de `agent/created` são despachados em série: um listener que lança — ou que faz trabalho lento — bloqueia a criação do agente por completo. Envolva o trabalho síncrono em `try`/`catch` e adie o resto com `queueMicrotask`/`setImmediate` ou a sua própria fila. |
162
+ | `E2` | error | Um `apply()` assíncrono cujo primeiro `await` precede seus registros: tudo o que for registrado depois cai na janela de desmontagem e lança `INACTIVE_EFFECT`, enquanto o encerramento antigo continua rodando. Registre tudo antes do primeiro `await`, dentro de um único `ctx.effect()`. |
163
+ | `E3` | error | Chaves de slot/estado removidas: `settings.plugin.item` virou o keyed→list `plugins.item`, e `SessionListState.current` sumiu — um cartão de configurações desaparece **em silêncio** (retorno antecipado por `spec === undefined`), e os casts de `current` continuam compilando enquanto o recurso está morto. |
164
+ | `E4` | error | API de cliente removida: `sessions.open` / `openSubagent` / `clear` viraram `retain` / `using` / `retainInfo`. |
165
+ | `E5` | error | Literais de modelo removidos: `deepseek-v4-flash*` e `deepseek-v4-vision-exp`. O catálogo padrão de modelos encolheu de 4 para 2, e um id fora do catálogo passa como somente texto. |
166
+
167
+ A mesma disciplina do `legAB` se aplica: um escaneamento limpo é necessário, não suficiente. A quebra do `legC` é silenciosa ou apenas em runtime (a linha de tipos publicada esconde as remoções), então o critério de saída continua sendo um smoke real no host em um `DSH_HOME` temporário, mais a ida-e-volta do escritor de logs e a asserção em navegador real onde se aplicarem.
168
+
151
169
  ## O que isto não cobre
152
170
 
153
- - **Um salto depois de `0.1.5-rc.1`.** O intervalo fundido termina no rc.1 por construção: o salto do harness `0.1.5-rc.1` → `0.1.5-rc.2` não acrescentou nenhuma costura voltada a plugins (o pin de dev/test deste próprio pacote e a sonda de CI rodam na linha `0.1.5-rc.2`, para que o catálogo seja verificado contra os tipos publicados mais recentes). Qualquer coisa que acrescente uma costura depois é um **novo pacote** um cartão que deriva é pior do que nenhum cartão.
171
+ - **Um salto além de todos os corredores daqui.** O `legAB` termina no `0.1.5-rc.1` por construção: o salto do harness `0.1.5-rc.1` → `0.1.5-rc.2` não acrescentou nenhuma costura voltada a plugins (o pin de dev/test deste próprio pacote roda agora na linha `0.1.7-alpha.2`, de modo que o catálogo é verificado contra esses tipos publicados; a sonda do workflow compat segue ancorada em `0.1.6-alpha.2`), e o `legC` cobre `0.1.5-rc.2` `0.1.6-alpha.2`. Um salto posterior que acrescente uma costura **não** está coberto: um corredor é fechado, e alargar um cartão é pior do que acrescentar um. Ele ganha um cartão novo e uma linha nova no índice — não um pacote novo.
154
172
  - **O salto `0.1.1` → `0.1.2`.** Use a habilidade de convergência da comunidade.
155
173
  - **Repetir costuras entre pernas.** A perna A é dona das costuras do formato de sessão (`assistant/message.stream`, `SessionHandleReadResult`, `EpochHeader.system`, `ctx.agent`, `Inbox`, `SystemPrompt.persona`, a geração de log V3) e a perna B não as repete — todo o diff de `packages/core/session/src` no intervalo da perna B são dois literais de tipo de evento acrescentados e uma linha de comentário. A seção de cartão de cada perna mantém sua própria declaração de escopo.
156
174
  - **O caminho de atualização do usuário do DSH.** Este pacote atualiza *código-fonte de plugins*, não a instalação do harness de um usuário.
@@ -175,15 +193,20 @@ npm run check:readmes # consistência dos READMEs em cinco idiomas
175
193
  npm pack
176
194
  ```
177
195
 
178
- O scanner tem um par de fixtures sintéticas **por perna**: `fixtures/leg-a-bad-repo` (as costuras de sessão/config da perna A, com toda costura de erro presente de propósito) com `fixtures/leg-a-good-repo` (adaptado), e `fixtures/bad-repo` (as costuras de slot de cliente da perna B) com `fixtures/good-repo` (adaptado) — além de um negativo ao vivo em um repositório da família já fixado no `0.1.5-rc.1`, de modo que uma regressão no catálogo falha nesta suíte e não em um usuário a jusante. `test/card.test.mjs` afirma que o índice do cartão fundido e `lib/scan.mjs` nomeiam **exatamente** os mesmos vinte ids de costura com as mesmas severidades, e que `CARD_ONLY` é exatamente `['H3']` — a regra de vinculação de evidência como portão de máquina.
196
+ O scanner tem um par de fixtures sintéticas **por perna do `legAB`**: `fixtures/leg-a-bad-repo` (as costuras de sessão/config da perna A, com toda costura de erro presente de propósito) com `fixtures/leg-a-good-repo` (adaptado), e `fixtures/bad-repo` (as costuras de slot de cliente da perna B) com `fixtures/good-repo` (adaptado) — além de um negativo ao vivo em um repositório da família já fixado no `0.1.5-rc.1`, de modo que uma regressão no catálogo falha nesta suíte e não em um usuário a jusante. `test/card.test.mjs` afirma que o índice de cada cartão e seu próprio catálogo (`lib/scan.mjs` para o `legAB`, `lib/scan-0.1.6.mjs` para o `legC`) nomeiam **exatamente** os mesmos ids de costura com as mesmas severidades, que o `CARD_ONLY` do `legAB` é exatamente `['H3']` enquanto o do `legC` está vazio, e que os dois catálogos não compartilham nenhum id de costura — a regra de vinculação de evidência como portão de máquina, por corredor.
179
197
 
180
198
  ## Tópicos
181
199
 
182
200
  `dsh`, `dsh-plugin`, `deepseek-harness`, `deepseek`, `cordis`, `plugin-upgrade`, `migration`, `skill`, `version-card`, `scanner`, `client-slots` (espelham as `keywords` do `package.json`; `dsh-plugin` é o canal de visibilidade do ecossistema).
183
201
 
184
- ## Família de plugins DSH da PerryLink
202
+ ## Licença
203
+
204
+ Apache-2.0 — veja [LICENSE](LICENSE). As dependências de instalação e suas licenças estão em [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md); nada é empacotado.
185
205
 
186
- Este projeto é um dos [40 plugins de DeepSeek Harness](https://github.com/PerryLink) mantidos por [PerryLink](https://github.com/PerryLink). Se este ajuda você, os outros provavelmente também:
206
+
207
+ ## PerryLink DSH Plugin Family
208
+
209
+ This project is one of the **45 DeepSeek Harness plugins** maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
187
210
 
188
211
  | Plugin | One-liner |
189
212
  |---|---|
@@ -193,49 +216,42 @@ Este projeto é um dos [40 plugins de DeepSeek Harness](https://github.com/Perry
193
216
  | **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel. | |
194
217
  | **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
195
218
  | **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
196
- | **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Unified session + workspace + config checkpoints with one-shot `/rewind` | |
197
- | **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Migrate Claude Code, Codex, OpenCode and Hermes sessions, memories and skills into DSH | |
219
+ | **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore | |
220
+ | **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH | |
198
221
  | **[dsh-click](https://github.com/PerryLink/dsh-click)** | Cross-platform native desktop control for DeepSeek Harness — Windows first. | |
199
222
  | **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | Terminal-style input history for the web composer: arrows, Ctrl+R search | |
200
- | **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | Deterministic dataset profiling, cleaning and citation verification | |
223
+ | **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | Dataset quality checks and citation cross-checks (the optional numeric bridge consumed here) | |
201
224
  | **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness. | |
202
225
  | **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | Engineering-discipline guard: requirements grill, test gates, adversary review | |
203
226
  | **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | Unified static-image generation routing for DeepSeek Harness. | |
204
- | **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | Read-only performance diagnostics: load, spill, compaction and cache hit rate | |
205
- | **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | Chinese mutual-fund research with sealed, traceable source snapshots | |
206
- | **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/issue/CI integration with every write approval-gated | |
207
- | **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | Industry and company research pack: chain map, policy timeline, company cards | |
208
- | **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
209
- | **[dsh-library](https://github.com/PerryLink/dsh-library)** | Local document knowledge base with hybrid search and citation-aware injection | |
210
- | **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | Local Ollama model discovery and task-based routing with cloud fallback | |
211
- | **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | LSP diagnostics, formatting, completion, code actions, symbols and rename | |
212
- | **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | PII masking at the model boundary with a host-side restore table | |
213
- | **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | MCP management console: `/mcp` command, Settings tab and trial calls | |
214
- | **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | Approval-gated cross-session memory protocol (`ctx.memory` + SQLite) | |
215
- | **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | OpenTelemetry and Langfuse telemetry export from the session event stream | |
216
- | **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Runtime-switchable model output styles | |
217
- | **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Declarative allow/deny/ask rules plus a process-level network policy | |
227
+ | **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | Read-only performance diagnostics for DeepSeek Harness. | |
228
+ | **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | Deterministic research reports for Chinese public mutual funds | |
229
+ | **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/issues integration for DSH, every write gated by approval | |
230
+ | **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | Industry research orchestration that seals its deliverables through this plugin's `ctx.researchReport.assemble` | |
231
+ | **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | Laya typed decisions (`noul`/`choice`/`score`) as a first-class Cordis service and model-visible tools | |
232
+ | **[dsh-library](https://github.com/PerryLink/dsh-library)** | Local document knowledge base for DeepSeek Harness. | |
233
+ | **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | Local-model (Ollama) integration for DeepSeek Harness. | |
234
+ | **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | LSP diagnostics, formatting, completion, code actions and rename over language servers | |
235
+ | **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | PII masking middleware: anonymize at the model boundary, restore at the display layer | |
236
+ | **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | Read-only MCP runtime panel: /mcp command + Settings tab with status, tools and errors | |
237
+ | **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool | |
238
+ | **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | OpenTelemetry and Langfuse observability exporter for DeepSeek Harness. | |
239
+ | **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Claude Code outputStyles-equivalent runtime style switching | |
240
+ | **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code-style declarative allow/deny/ask permission rules with audit | |
218
241
  | **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
219
242
  | **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
220
- | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-dev knowledge base, agent skill and the `dsh-plugin-dev` CLI toolchain | |
243
+ | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-development knowledge base as an on-demand agent skill | |
221
244
  | **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
222
- | **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
223
- | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat, Telegram, Feishu + a session console | |
224
- | **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research reports: evidence ledger, manifest seal, per-claim verdicts | |
225
- | **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional plugin quality scoring with an evidence-backed leaderboard | |
226
- | **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions and workspaces in the Web sidebar with per-pin colors | |
227
- | **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | Git-backed cross-device session synchronization with keep-both merges | |
228
- | **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | Security-audit skill pack plus the `plugin_vet` supply-chain gate | |
229
- | **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | Voice-first session loop: speech-to-text input and text-to-speech replies | |
245
+ | **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | One-package, one-corridor-index plugin upgrade skill: routes a repository to the matching closed corridor card | |
246
+ | **[dsh-plugin-upgrade-015](https://github.com/PerryLink/dsh-plugin-upgrade-015)** | Merged `0.1.3-alpha.1` `0.1.5-rc.1` upgrade corridor card plus a zero-dependency seam scanner | |
247
+ | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat/Telegram/Feishu, session console | |
248
+ | **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research-report engine: content-addressed evidence ledger and sealed versions | |
249
+ | **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional quality scoring for DeepSeek Harness plugins. | |
250
+ | **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions in the Web sidebar with durable ordering | |
251
+ | **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | Cross-device session sync for DeepSeek Harness a dedicated git mirror of your session store. | |
252
+ | **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | Security-audit skill pack: secret scan, dependency and supply-chain review | |
253
+ | **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | Voice-first session loop for DeepSeek Harness: talk to it, hear it answer. | |
230
254
  | **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
231
- | **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives with a pass/fail matrix | |
232
- | **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel plus eleven agent tools | |
233
- | **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair | |
234
- | **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | WeChat ↔ DSH bridge (Tencent iLink bot) developed with [pan17](https://github.com/pan17/dsh-wechat), who hosts the repo | |
235
- | **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Personal directive injector with a top-bar toggle (fork of liucai2026/dsh-personal-directive) | |
236
-
237
- Parte da família de plugins DSH da PerryLink — mais de 40 repositórios cobrindo sessões, memória, permissões, entrega, observabilidade e ferramentas de desenvolvimento. Explore o catálogo em [perrylink-dsh-catalog.perrylink.workers.dev](https://perrylink-dsh-catalog.perrylink.workers.dev) ou no [tópico `dsh-plugin`](https://github.com/topics/dsh-plugin).
238
-
239
- ## Licença
240
-
241
- Apache-2.0 — veja [LICENSE](LICENSE). As dependências de instalação e suas licenças estão em [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md); nada é empacotado.
255
+ | **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | |
256
+ | **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel + 11 tools | |
257
+ | **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | |