dsh-lsp-actions 0.2.0 → 0.3.1
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/CHANGELOG.md +57 -0
- package/README.es.md +176 -129
- package/README.hi.md +176 -129
- package/README.md +170 -129
- package/README.pt.md +176 -129
- package/README.zh.md +224 -0
- package/cordis.patch.yml +6 -0
- package/docs/editor-protocol.md +159 -0
- package/docs/editor-protocol.zh-CN.md +159 -0
- package/docs/seam-extension-notes.md +76 -0
- package/examples/vscode/README.md +72 -0
- package/examples/vscode/README.zh-CN.md +72 -0
- package/examples/vscode/backend/bin.mjs +44 -0
- package/examples/vscode/backend/cordis.yml +53 -0
- package/examples/vscode/backend/package.json +22 -0
- package/examples/vscode/extension/package.json +96 -0
- package/examples/vscode/extension/src/client.js +100 -0
- package/examples/vscode/extension/src/extension.js +187 -0
- package/examples/vscode/extension/src/views.js +127 -0
- package/lib/client.d.ts +3 -3
- package/lib/editor/actions.d.ts +44 -0
- package/lib/editor/actions.d.ts.map +1 -0
- package/lib/editor/actions.js +370 -0
- package/lib/editor/actions.js.map +1 -0
- package/lib/editor/cache.d.ts +51 -0
- package/lib/editor/cache.d.ts.map +1 -0
- package/lib/editor/cache.js +75 -0
- package/lib/editor/cache.js.map +1 -0
- package/lib/editor/server.d.ts +61 -0
- package/lib/editor/server.d.ts.map +1 -0
- package/lib/editor/server.js +97 -0
- package/lib/editor/server.js.map +1 -0
- package/lib/editor/service.d.ts +67 -0
- package/lib/editor/service.d.ts.map +1 -0
- package/lib/editor/service.js +182 -0
- package/lib/editor/service.js.map +1 -0
- package/lib/editor/transport.d.ts +53 -0
- package/lib/editor/transport.d.ts.map +1 -0
- package/lib/editor/transport.js +143 -0
- package/lib/editor/transport.js.map +1 -0
- package/lib/editor/types.d.ts +185 -0
- package/lib/editor/types.d.ts.map +1 -0
- package/lib/editor/types.js +13 -0
- package/lib/editor/types.js.map +1 -0
- package/lib/edits.d.ts +1 -1
- package/lib/extra-tools.d.ts +3 -3
- package/lib/index.d.ts +17 -11
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +26 -1
- package/lib/index.js.map +1 -1
- package/lib/runner.d.ts +5 -5
- package/lib/seam.d.ts +1 -1
- package/lib/servers.d.ts +20 -1
- package/lib/servers.d.ts.map +1 -1
- package/lib/servers.js +6 -0
- package/lib/servers.js.map +1 -1
- package/lib/tools.d.ts +18 -5
- package/lib/tools.d.ts.map +1 -1
- package/lib/tools.js +2 -2
- package/lib/tools.js.map +1 -1
- package/lib/translate.d.ts +1 -1
- package/lib/vocabulary.d.ts +3 -1
- package/lib/vocabulary.d.ts.map +1 -1
- package/lib/vocabulary.js.map +1 -1
- package/package.json +61 -8
- package/README.zh-CN.md +0 -181
package/README.hi.md
CHANGED
|
@@ -2,93 +2,163 @@
|
|
|
2
2
|
|
|
3
3
|
# 🛰️ dsh-lsp-actions
|
|
4
4
|
|
|
5
|
-
**DeepSeek Harness के लिए LSP एक्शन सतह — असली language
|
|
5
|
+
**DeepSeek Harness के लिए LSP एक्शन सतह — असली language servers, असली फीडबैक, और एडिटर्स के लिए IDE इंटीग्रेशन बैकएंड।**
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
*आपके एजेंट के एडिटर लूप के लिए डायग्नोस्टिक्स, फ़ॉर्मेटिंग, कम्प्लीशन, कोड एक्शन, सिंबल, सिग्नेचर हेल्प, इनले हिंट्स और रिनेम — साथ ही स्थिर एडिटर एक्शन प्रोटोकॉल (`lsp.actions.*`) जो किसी भी एडिटर को इन्हें सीधे उपभोग करने देता है।*
|
|
8
8
|
|
|
9
|
-
[](LICENSE)
|
|
10
|
+
[](https://github.com/topics/dsh-plugin)
|
|
11
|
+
[](#)
|
|
12
|
+
[](https://github.com/PerryLink/dsh-lsp-actions/actions)
|
|
13
|
+
[](https://github.com/PerryLink/dsh-lsp-actions/releases)
|
|
14
|
+
[](https://www.npmjs.com/package/dsh-lsp-actions)
|
|
15
|
+
[](https://www.npmjs.com/package/dsh-lsp-actions)
|
|
13
16
|
|
|
14
|
-
[English](README.md) · [简体中文](README.zh
|
|
17
|
+
[English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
|
|
15
18
|
|
|
16
19
|
</div>
|
|
17
20
|
|
|
18
21
|
---
|
|
19
22
|
|
|
20
|
-
##
|
|
23
|
+
## Compatibility
|
|
21
24
|
|
|
22
|
-
|
|
25
|
+
| Surface | Status |
|
|
26
|
+
|---|---|
|
|
27
|
+
| Harness | DeepSeek Harness `0.1.0-rc.6` (`>=0.1.0-rc.6` के लिए अनुकूलता घोषित) |
|
|
28
|
+
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
29
|
+
| Platforms | सभी (शुद्ध host; सबप्रोसेस + फ़ाइलसिस्टम, कोई नेटवर्क नहीं) |
|
|
30
|
+
| Model | कोई भी (टूल मॉडल-अज्ञेय हैं; प्लगइन कभी मॉडल को कॉल नहीं करता) |
|
|
23
31
|
|
|
24
|
-
|
|
25
|
-
| --- | --- | --- |
|
|
26
|
-
| `lsp_diagnostics <file>` | कंपाइलर/एनालाइज़र की एरर, वॉर्निंग और हिंट्स — severity, range, message और स्रोत server के साथ | ❌ केवल-पठन |
|
|
27
|
-
| `lsp_format <file> [range?]` | language server के ज़रिए फ़ाइल या चयन को फ़ॉर्मेट करता है और परिणाम लागू करता है, diff लौटाता है | ✅ `fs/write-intent` + sandbox नीति से |
|
|
28
|
-
| `lsp_completion <file> <line> <character>` | कर्सर स्थान पर कम्प्लीशन सुझाव, असली इंसर्शन टेक्स्ट सहित | ❌ केवल-पठन |
|
|
29
|
-
| `lsp_code_action <file> [range?] [only?]` | किसी range या पहले डायग्नोस्टिक के लिए server-सत्यापित क्विकफिक्स/रिफैक्टरिंग (उनके edits सहित) | ❌ केवल संदर्भ |
|
|
30
|
-
| `lsp_symbols <query?> <file_path?>` | नाम से पूरे workspace में सिंबल खोज, या एक फ़ाइल की सिंबल रूपरेखा | ❌ केवल-पठन |
|
|
31
|
-
| `lsp_signature <file> <line> <character>` | कॉल के अंदर सिग्नेचर हेल्प (पैरामीटर और दस्तावेज़ीकरण) | ❌ केवल-पठन |
|
|
32
|
-
| `lsp_inlay_hints <file> [range?]` | server के टाइप एनोटेशन और पैरामीटर-नाम संकेत | ❌ केवल-पठन |
|
|
33
|
-
| `lsp_rename <file> <line> <character> <new_name>` | server-सत्यापित सिंबल नाम बदलना, पूरे workspace में प्रति-फ़ाइल diffs के साथ लागू | ✅ `fs/write-intent` + sandbox नीति से |
|
|
32
|
+
## What you get
|
|
34
33
|
|
|
35
|
-
|
|
34
|
+
`dsh-lsp-actions` एक ही host पंक्ति के रूप में माउंट होता है (`id: lsp-actions`, `name: dsh-lsp-actions`, `inject: [tools, fs, subprocess]`)। आधिकारिक DeepSeek Harness `ctx.lsp` seam **नेविगेशन** (go-to-definition, references, implementation, hover) को कवर करता है; यह प्लगइन **एक्शन सतह** को पूरा करता है — वह फीडबैक लूप जिसकी एक एजेंट को कोड लिखते और ठीक करते समय ज़रूरत होती है:
|
|
36
35
|
|
|
37
|
-
|
|
36
|
+
1. **आठ `lsp_*` टूल** — डायग्नोस्टिक्स, फ़ॉर्मेटिंग, कम्प्लीशन, कोड एक्शन, सिंबल, सिग्नेचर हेल्प, इनले हिंट्स और रिनेम, सभी उन्हीं language servers से सेवित जिन्हें आपका IDE इस्तेमाल करता है।
|
|
37
|
+
2. **एडिटर एक्शन प्रोटोकॉल v1** — एक स्थिर JSON-RPC सतह (`lsp.actions.list` / `lsp.actions.run` / `lsp.events`) जो किसी भी एडिटर (VS Code पहले) को उन क्षमताओं को सीधे उपभोग करने देती है।
|
|
38
|
+
3. **असली-server सत्यापन** — टेस्ट सूट में एक असली `typescript-language-server` रन शामिल है (आत्मनिर्भर, CI Node 22/24 पर Linux, Windows और macOS में), सिर्फ़ mocks नहीं।
|
|
38
39
|
|
|
39
|
-
|
|
40
|
-
dsh plugin --profile <name> add <path-or-tarball-of-dsh-lsp-actions>
|
|
41
|
-
```
|
|
40
|
+
## Quick start
|
|
42
41
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
# अपने profile के cordis.patch.yml में (या bundle पंक्ति में)
|
|
47
|
-
- insert:
|
|
48
|
-
- id: lsp-actions
|
|
49
|
-
name: dsh-lsp-actions
|
|
50
|
-
inject: [tools, fs, subprocess]
|
|
51
|
-
config:
|
|
52
|
-
servers:
|
|
53
|
-
ts:
|
|
54
|
-
command: typescript-language-server
|
|
55
|
-
args: [--stdio]
|
|
56
|
-
extensionToLanguage:
|
|
57
|
-
".ts": typescript
|
|
58
|
-
formattingOptions: { tabSize: 2, insertSpaces: true }
|
|
59
|
-
py:
|
|
60
|
-
command: pyright-langserver
|
|
61
|
-
args: [--stdio]
|
|
62
|
-
extensionToLanguage:
|
|
63
|
-
".py": python
|
|
64
|
-
maxDiagnostics: 200
|
|
65
|
-
maxCompletionItems: 20
|
|
66
|
-
maxCodeActions: 50
|
|
67
|
-
maxSymbols: 100
|
|
68
|
-
maxSignatures: 10
|
|
69
|
-
maxInlayHints: 200
|
|
70
|
-
maxResultChars: 16000
|
|
71
|
-
timeoutMs: 60000
|
|
72
|
-
```
|
|
42
|
+
```sh
|
|
43
|
+
# 1. install the bundle into your profile
|
|
44
|
+
dsh plugin --profile web add "github:PerryLink/dsh-lsp-actions#main"
|
|
73
45
|
|
|
74
|
-
|
|
46
|
+
# or from npm (published releases)
|
|
47
|
+
dsh plugin --profile web add dsh-lsp-actions
|
|
75
48
|
|
|
76
|
-
|
|
49
|
+
# 2. restart and verify the row
|
|
50
|
+
dsh --profile web --dump-config | grep -A3 'id: lsp-actions'
|
|
51
|
+
```
|
|
77
52
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
|
|
53
|
+
## Install & uninstall
|
|
54
|
+
|
|
55
|
+
- **git channel** (नवीनतम `main`): `dsh plugin --profile web add "github:PerryLink/dsh-lsp-actions#main"` — `prepare` स्क्रिप्ट बिल्ड करती है (`tsc --noEmitOnError`)।
|
|
56
|
+
- **npm channel** (प्रकाशित रिलीज़): `dsh plugin --profile web add dsh-lsp-actions`।
|
|
57
|
+
- **tarball channel**: इस repo में `pnpm pack` चलाएँ, फिर `dsh plugin --profile web add ./dsh-lsp-actions-<version>.tgz`।
|
|
58
|
+
- **uninstall**: `dsh plugin --profile web remove dsh-lsp-actions` (या profile patch से पंक्ति हटाएँ)।
|
|
59
|
+
|
|
60
|
+
## Configuration
|
|
61
|
+
|
|
62
|
+
सभी ट्यूनेबल Schemastery `Config` फ़ील्ड हैं (cordis.yml से बदले जा सकते हैं)। id-लक्षित ओवरराइड पूरी पंक्ति को बदल देता है — जितनी भी keys चाहिए, सब दोबारा लिखें। `cordis.patch.yml` हर key को इनलाइन दस्तावेज़ित करता है।
|
|
63
|
+
|
|
64
|
+
| Key | Default | Meaning |
|
|
65
|
+
|---|---|---|
|
|
66
|
+
| `servers` | `{}` | नामित language servers; खाली तालिका कोई server सक्रिय नहीं करती |
|
|
67
|
+
| `editor.enabled` | `false` | एडिटर एक्शन प्रोटोकॉल को JSON-RPC stdio पर सेवित करता है (केवल headless backend) |
|
|
68
|
+
| `editor.requestTimeoutMs` | `60000` | एडिटर प्रोटोकॉल का प्रति-रन timeout बजट (ms) |
|
|
69
|
+
| `editor.diagnosticsCacheMaxFiles` | `64` | सीमित LRU डायग्नोस्टिक्स कैश आकार (फ़ाइलों में) |
|
|
70
|
+
| `maxDiagnostics` | `200` | प्रति परिणाम डायग्नोस्टिक्स सीमा |
|
|
71
|
+
| `maxCompletionItems` | `20` | प्रति परिणाम कम्प्लीशन-आइटम सीमा |
|
|
72
|
+
| `maxCodeActions` | `50` | प्रति परिणाम कोड-एक्शन सीमा |
|
|
73
|
+
| `maxSymbols` | `100` | सिंबल-परिणाम सीमा |
|
|
74
|
+
| `maxSignatures` | `10` | सिग्नेचर-हेल्प सीमा |
|
|
75
|
+
| `maxInlayHints` | `200` | इनले-हिंट सीमा |
|
|
76
|
+
| `maxResultChars` | `16000` | रेंडर किए गए परिणाम की सीमा (वर्ण) |
|
|
77
|
+
| `maxDocumentBytes` | `4000000` | दस्तावेज़-पठन सीमा (बाइट) |
|
|
78
|
+
| `timeoutMs` | `60000` | प्रति-कॉल timeout, आधिकारिक timeout नीति द्वारा लागू |
|
|
79
|
+
|
|
80
|
+
हर `servers` एंट्री एक `LspServerEntry` है: `command` (निष्पादन योग्य, लोड पर PATH में हल) और `extensionToLanguage` (`".ts"` → `typescript`) अनिवार्य हैं; वैकल्पिक `fileGlobs`, `args`, `env`, `initializationOptions`, `configuration`, `formattingOptions`, `maxMessageBytes`, `maxStderrBytes`, `killGraceMs`, `shutdownTimeoutMs`, `diagnosticsSettleMs`, `diagnosticsDebounceMs` और `idleTimeoutMs` (`0` = server प्रक्रिया को जीवित रखें) अंतर्निहित stdio क्लाइंट को ट्यून करते हैं।
|
|
81
|
+
|
|
82
|
+
## Tools & surfaces
|
|
83
|
+
|
|
84
|
+
| Surface | Kind | Notes |
|
|
85
|
+
|---|---|---|
|
|
86
|
+
| `lsp_diagnostics` | tool | `<file>` — कंपाइलर/एनालाइज़र की एरर, वॉर्निंग और हिंट्स — severity, range, message और स्रोत server के साथ (केवल-पठन) |
|
|
87
|
+
| `lsp_format` | tool | `<file> [range?]` — language server से फ़ाइल/चयन को फ़ॉर्मेट करता है और लागू करता है, diff लौटाता है (`fs/write-intent` से लिखता है) |
|
|
88
|
+
| `lsp_completion` | tool | `<file> <line> <character>` — कर्सर स्थान पर कम्प्लीशन सुझाव, इंसर्शन टेक्स्ट सहित (केवल-पठन) |
|
|
89
|
+
| `lsp_code_action` | tool | `<file> [range?] [only?]` — server-सत्यापित क्विकफिक्स/रिफैक्टरिंग उनके edits सहित, किसी range या पहले डायग्नोस्टिक के लिए (केवल संदर्भ) |
|
|
90
|
+
| `lsp_symbols` | tool | `<query?> <file_path?>` — नाम से पूरे workspace में सिंबल खोज, या एक फ़ाइल की रूपरेखा (केवल-पठन) |
|
|
91
|
+
| `lsp_signature` | tool | `<file> <line> <character>` — कॉल के अंदर सिग्नेचर हेल्प (पैरामीटर और दस्तावेज़ीकरण) (केवल-पठन) |
|
|
92
|
+
| `lsp_inlay_hints` | tool | `<file> [range?]` — server के टाइप एनोटेशन और पैरामीटर-नाम संकेत (केवल-पठन) |
|
|
93
|
+
| `lsp_rename` | tool | `<file> <line> <character> <new_name>` — server-सत्यापित रिनेम, पूरे workspace में प्रति-फ़ाइल diffs के साथ लागू (`fs/write-intent` से लिखता है) |
|
|
94
|
+
| `lsp.actions.*` | protocol | एडिटर एक्शन प्रोटोकॉल v1: JSON-RPC पर `lsp.actions.list` / `lsp.actions.run` / `lsp.events` |
|
|
95
|
+
| `examples/vscode/` | extension | केवल-UI VS Code एक्सटेंशन और उससे जुड़ी headless backend संरचना |
|
|
96
|
+
|
|
97
|
+
## Editor action protocol v1
|
|
98
|
+
|
|
99
|
+
जब किसी समर्पित headless संरचना में `editor.enabled: true` सेट हो, तो `dsh-lsp-actions` नई-पंक्ति-सीमांकित JSON-RPC 2.0 (आधिकारिक SDK/ACP ट्रांसपोर्ट जैसा ही wire फ़्रेमिंग) पर एक स्थिर एडिटर प्रोटोकॉल सेवित करता है:
|
|
100
|
+
|
|
101
|
+
| Method | What it does |
|
|
102
|
+
|---|---|
|
|
103
|
+
| `lsp.actions.list` | `lsp-actions/v1` प्रोटोकॉल संस्करण, एक्शन कैटलॉग (`diagnostics.get`, `completion.get`, `quickfix.apply`, `format` — हर एक `writes` चिह्नित) और पतायोग्य DSH सत्र लौटाता है |
|
|
104
|
+
| `lsp.actions.run` | संरचित `{ requestId, action, status, result \| error }` लिफ़ाफ़े के साथ एक एक्शन निष्पादित करता है; एरर स्थिर `LSP_ACTION_*` कोड रखते हैं |
|
|
105
|
+
| `lsp.events` | स्ट्रीम की गई `lsp.event` सूचनाओं की सदस्यता लेता है: `diagnostics.updated`, `action.status`, `file.changed`, `sessions.changed` |
|
|
106
|
+
|
|
107
|
+
सभी लेखन एक्शन (`quickfix.apply`, `format`) **आधिकारिक अनुमति presets और अनुमोदन** से गुज़रते हैं: एक `read-only` सत्र किसी भी server दौर से पहले `LSP_ACTION_READ_ONLY` से अस्वीकार होता है, edits `fs/write-intent` waterfall से चलते हैं, और `sandbox_permissions` + `justification` एस्केलेशन जोड़ी आधिकारिक `approveEscalation` पूछताछ से हल होती है (कोई उत्तरदाता न होने पर fail-closed)। पूर्ण wire स्पेक, द्विभाषी: [`docs/editor-protocol.md`](docs/editor-protocol.md) · [`docs/editor-protocol.zh-CN.md`](docs/editor-protocol.zh-CN.md)।
|
|
108
|
+
|
|
109
|
+
**वर्ज़निंग और बैकवर्ड-कम्पैटिबिलिटी वादा**
|
|
110
|
+
|
|
111
|
+
- प्रोटोकॉल वर्ज़न-युक्त है — `lsp.actions.list` लौटाता है `protocol: "lsp-actions/v1"`, `version: 1`। **v1 जमा हुआ है:** फ़ील्ड नाम, एक्शन ids, इवेंट प्रकार और एरर कोड हमेशा के लिए स्थिर रहते हैं।
|
|
112
|
+
- विकास **केवल योगात्मक** है: नए एक्शन, फ़ील्ड और इवेंट प्रकार बिना वर्ज़न बढ़ाए आते हैं; मौजूदा अर्थ कभी जगह-पर नहीं बदलते; कोई तोड़ने वाला बदलाव नए `protocol` संस्करण के तहत आता है, जिसे servers साथ-साथ सेवित कर सकते हैं।
|
|
113
|
+
- क्लाइंट को अज्ञात फ़ील्ड, अज्ञात इवेंट प्रकार और अज्ञात एक्शन को अनदेखा करना चाहिए, और स्थिर एरर `code` पर रूट करना चाहिए, संदेश पाठ पर कभी नहीं।
|
|
114
|
+
|
|
115
|
+
**एरर कोड**
|
|
116
|
+
|
|
117
|
+
हर विफलता एक स्थिर `code` रखती है; मॉडल और कॉलर code से रूट करते हैं, संदेश पाठ से कभी नहीं।
|
|
118
|
+
|
|
119
|
+
| Code | Meaning |
|
|
120
|
+
|---|---|
|
|
121
|
+
| `LSP_ACTION_UNAVAILABLE` | कोई server entry नहीं और seam का कोई provider इस फ़ाइल को नहीं संभालता |
|
|
122
|
+
| `LSP_ACTION_UNSUPPORTED` | server (या seam provider) ऑपरेशन का विज्ञापन नहीं करता |
|
|
123
|
+
| `LSP_ACTION_SERVER_FAILED` | server विफल हुआ (अपने stderr टेल सहित); स्टार्टअप विफलताएँ एक बार पुनः प्रयास करती हैं |
|
|
124
|
+
| `LSP_ACTION_MALFORMED_RESPONSE` | server ने संरचनात्मक रूप से अमान्य पेलोड भेजा |
|
|
125
|
+
| `LSP_ACTION_CONFLICT` | फ़ाइल पढ़े जाने के बाद बदल गई, या edits ओवरलैप / सीमा से बाहर / workspace से बाहर हैं |
|
|
126
|
+
| `LSP_ACTION_READ_ONLY` | सत्र का sandbox मोड फ़ॉर्मेटिंग/रिनेम लेखन को मना करता है |
|
|
127
|
+
| `LSP_ACTION_WORKSPACE_REQUIRED` | कॉल करने वाले सत्र के पास server को जड़ देने के लिए workspace cwd नहीं है |
|
|
128
|
+
| `LSP_ACTION_NO_SYMBOL` | server को कर्सर स्थान पर नाम बदलने योग्य कोई सिंबल नहीं मिला |
|
|
129
|
+
| `LSP_ACTION_UNKNOWN` | एडिटर प्रोटोकॉल: अज्ञात एक्शन id, या कोई code action `title`/`index` से मेल नहीं खाया |
|
|
130
|
+
| `LSP_ACTION_INVALID_ARGS` | एडिटर प्रोटोकॉल: दोषपूर्ण एक्शन पैरामीटर |
|
|
131
|
+
| `LSP_ACTION_APPROVAL_UNAVAILABLE` | एडिटर प्रोटोकॉल: अनुमोदन मार्ग व्यापक sandbox मोड नहीं दे सका (fail-closed) |
|
|
132
|
+
| `LSP_PROTOCOL_VERSION_UNSUPPORTED` | एडिटर प्रोटोकॉल: घोषित प्रोटोकॉल संस्करण समर्थित नहीं है |
|
|
133
|
+
|
|
134
|
+
## VS Code extension
|
|
135
|
+
|
|
136
|
+
[`examples/vscode/`](examples/vscode/) एक **केवल-UI** एक्सटेंशन (DSH सत्रों, डायग्नोस्टिक्स सूची, एक-क्लिक quickfix apply, open-at-range और format वाली साइडबार) और वह headless backend संरचना (`backend/cordis.yml`) देता है जिससे वह ACP-शैली JSON-RPC पर जुड़ता है। एक्सटेंशन शून्य LSP लॉजिक लागू करता है — हर क्षमता और हर लिखा बाइट प्लगइन का है। इंस्टॉल चरण, सेटिंग्स और डेमो-gif रिकॉर्डिंग स्क्रिप्ट [`examples/vscode/README.md`](examples/vscode/README.md) में हैं।
|
|
137
|
+
|
|
138
|
+

|
|
139
|
+
|
|
140
|
+
## Permissions & data
|
|
141
|
+
|
|
142
|
+
- **अनुमतियाँ**: फ़ॉर्मेटिंग और रिनेम आधिकारिक अनुमति presets और अनुमोदन से चलते हैं — `fs/write-intent` waterfall और `sandbox_permissions` / `justification` एस्केलेशन जोड़ी, `ctx.approval` से हल। प्लगइन अपने workshop manifest में `fs:read`, `fs:write`, `subprocess:spawn` और `network:none` घोषित करता है।
|
|
143
|
+
- **डेटा**: डिस्क पर कुछ भी संग्रहीत नहीं होता; टूल परिणाम केवल सत्र लॉग में रहते हैं (सत्रों के बीच कोई स्थायित्व नहीं)। एडिटर प्रोटोकॉल एक ही सीमित इन-मेमोरी LRU डायग्नोस्टिक्स कैश रखता है, ताज़गी-मुहरित और रीस्टार्ट के बीच कभी स्थायी नहीं।
|
|
144
|
+
- **कोई नेटवर्क नहीं**: प्लगइन कोई नेटवर्क अनुरोध नहीं करता; यह language servers से स्थानीय सबप्रोसेस stdio पर बात करता है।
|
|
145
|
+
|
|
146
|
+
## Security boundaries
|
|
147
|
+
|
|
148
|
+
- **डिफ़ॉल्ट रूप से केवल-पठन।** आठ टूल में से छह केवल संदर्भ हैं; सिर्फ़ `lsp_format` और `lsp_rename` बदलाव करते हैं, और वे असली `write`/`edit` बदलाव की तरह करते हैं।
|
|
149
|
+
- **आधिकारिक seams, फिर से लागू नहीं।** हर बाइट `fs/write-intent` waterfall (निरीक्षण → संरक्षित लेखन → निरीक्षण) और प्रति-कॉल sandbox नीति से गुज़रता है; एस्केलेशन आधिकारिक `write`/`edit` टूल्स से मेल खाता है।
|
|
150
|
+
- **ज़ोर से, तेज़ी से, संरचित रूप से विफल।** खाली `servers` + बिना `ctx.lsp` seam → `LSP_ACTION_UNAVAILABLE`; केवल-पठन सत्र किसी भी server दौर से पहले → `LSP_ACTION_READ_ONLY`; कमांड रूप रिपोर्ट होते हैं और कभी निष्पादित नहीं होते।
|
|
151
|
+
- **संघर्ष कभी कुछ नहीं मिटाते।** पढ़े जाने के बाद डिस्क पर बदली फ़ाइल `LSP_ACTION_CONFLICT` से विफल होती है; `lsp_rename` पहली लेखन से पहले हर संपादित फ़ाइल को प्री-फ़्लाइट करता है।
|
|
152
|
+
- **सीमित कार्य।** परिणाम सीमाएँ, बाइट सीमाएँ और प्लेटफ़ॉर्म की timeout नीति हर कॉल को सीमित करती हैं; डायग्नोस्टिक्स कैश एक सीमित LRU है।
|
|
153
|
+
- **मॉडल पथ पर कुछ भी कैश नहीं।** टूल परिणाम केवल सत्र लॉग में रहते हैं; डायग्नोस्टिक्स कैश रीस्टार्ट के बीच कभी स्थायी नहीं होता।
|
|
85
154
|
- **ख़राब server ज़ोर से विफल होते हैं।** ग़ैर-मौजूद निष्पादन योग्य लोड पर विफल होता है; स्टार्टअप पर मरने वाला server कॉल को `LSP_ACTION_SERVER_FAILED` + उसके stderr टेल से विफल करता है (एक नए-प्रक्रिया पुनर्प्रयास के बाद)।
|
|
155
|
+
- **प्रॉम्प्ट स्वच्छता।** प्लगइन सत्र के system prompt में कोई persona या प्रॉम्प्ट गद्य नहीं डालता — उसकी मॉडल-सामना सतह आठ टूल schemas हैं।
|
|
86
156
|
|
|
87
|
-
##
|
|
157
|
+
## Architecture
|
|
88
158
|
|
|
89
159
|
एक्शन **पहले आधिकारिक seam** से चलते हैं और प्लगइन के अपने न्यूनतम stdio क्लाइंट पर गिरते हैं:
|
|
90
160
|
|
|
91
|
-
```
|
|
161
|
+
```text
|
|
92
162
|
lsp_diagnostics / lsp_format / lsp_completion / lsp_code_action /
|
|
93
163
|
lsp_symbols / lsp_signature / lsp_inlay_hints / lsp_rename
|
|
94
164
|
│
|
|
@@ -99,79 +169,56 @@ lsp_symbols / lsp_signature / lsp_inlay_hints / lsp_rename
|
|
|
99
169
|
अंतर्निहित stdio क्लाइंट ← servers तालिका (ctx.subprocess.spawn + JSON-RPC)
|
|
100
170
|
```
|
|
101
171
|
|
|
102
|
-
seam विस्तार upstream प्रस्तावित है (`upstream/lsp-action-seam.patch`, PR विवरण `upstream/PR-description.md` में)। जब वह आ जाएगा, प्लगइन बिना बदलाव के काम करता रहेगा — अंतर्निहित क्लाइंट का उपयोग बस बंद हो जाएगा। अंतर्निहित क्लाइंट `servers` तालिका के लिए स्वतंत्र fallback के रूप में बना रहेगा। पूर्ण शोध और डिज़ाइन नोट्स: [`docs/seam-extension-notes.md`](docs/seam-extension-notes.md)
|
|
103
|
-
|
|
104
|
-
## कॉन्फ़िगरेशन संदर्भ
|
|
105
|
-
|
|
106
|
-
```ts
|
|
107
|
-
interface Config {
|
|
108
|
-
/** नामित language servers; खाली = प्लगइन का अपना क्लाइंट कुछ नहीं परोसता। */
|
|
109
|
-
servers?: Record<string, LspServerEntry>
|
|
110
|
-
maxDiagnostics?: number // डिफ़ॉल्ट 200
|
|
111
|
-
maxCompletionItems?: number // डिफ़ॉल्ट 20
|
|
112
|
-
maxCodeActions?: number // डिफ़ॉल्ट 50
|
|
113
|
-
maxSymbols?: number // डिफ़ॉल्ट 100
|
|
114
|
-
maxSignatures?: number // डिफ़ॉल्ट 10
|
|
115
|
-
maxInlayHints?: number // डिफ़ॉल्ट 200
|
|
116
|
-
maxResultChars?: number // डिफ़ॉल्ट 16000 (पूर्ण रेंडर परिणाम की सीमा)
|
|
117
|
-
maxDocumentBytes?: number // डिफ़ॉल्ट 4000000
|
|
118
|
-
timeoutMs?: number // डिफ़ॉल्ट 60000 (आधिकारिक timeout नीति द्वारा लागू)
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
interface LspServerEntry {
|
|
122
|
-
command: string // निष्पादन योग्य, लोड पर PATH में हल होता है
|
|
123
|
-
extensionToLanguage: Record<string, string> // ".ts" → "typescript"
|
|
124
|
-
fileGlobs?: string[] // वैकल्पिक; glob मिलान एक्सटेंशन मैप पर जीतता है
|
|
125
|
-
args?: string[] // बिना shell
|
|
126
|
-
env?: Record<string, string>
|
|
127
|
-
initializationOptions?: unknown
|
|
128
|
-
configuration?: unknown // ऑब्जेक्ट रूप workspace/configuration का section-वार उत्तर देता है
|
|
129
|
-
formattingOptions?: unknown // जैसे { tabSize: 2, insertSpaces: true }
|
|
130
|
-
maxMessageBytes?: number // डिफ़ॉल्ट 16000000
|
|
131
|
-
maxStderrBytes?: number // डिफ़ॉल्ट 1000000
|
|
132
|
-
killGraceMs?: number // डिफ़ॉल्ट 2000
|
|
133
|
-
shutdownTimeoutMs?: number // डिफ़ॉल्ट 5000
|
|
134
|
-
diagnosticsSettleMs?: number // डिफ़ॉल्ट 2000 (केवल-push डायग्नोस्टिक्स विंडो)
|
|
135
|
-
diagnosticsDebounceMs?: number // डिफ़ॉल्ट 250 (अंतिम push बैच के बाद का शांत काल)
|
|
136
|
-
idleTimeoutMs?: number // डिफ़ॉल्ट 0 (0 = server प्रक्रिया को जीवित रखें)
|
|
137
|
-
}
|
|
138
|
-
```
|
|
172
|
+
seam विस्तार upstream प्रस्तावित है (`upstream/lsp-action-seam.patch`, PR विवरण `upstream/PR-description.md` में)। जब वह आ जाएगा, प्लगइन बिना बदलाव के काम करता रहेगा — अंतर्निहित क्लाइंट का उपयोग बस बंद हो जाएगा। अंतर्निहित क्लाइंट `servers` तालिका के लिए स्वतंत्र fallback के रूप में बना रहेगा। **एडिटर प्रोटोकॉल** उसी runner, उसी लेखन पथ और उसी अनुमति मशीनरी का उपयोग करता है। पूर्ण शोध और डिज़ाइन नोट्स: [`docs/seam-extension-notes.md`](docs/seam-extension-notes.md)।
|
|
139
173
|
|
|
140
|
-
|
|
174
|
+
## Known limitations
|
|
141
175
|
|
|
142
|
-
हर
|
|
176
|
+
- **क्षणिक दस्तावेज़।** हर एक्शन फ़ाइल खोलता है, एक अनुरोध चलाता है और फिर बंद कर देता है (आधिकारिक stdio host की तरह)। बिना-दस्तावेज़ अनुरोधों के लिए निवासी खुली फ़ाइल माँगने वाले प्रोजेक्ट-आधारित server (tsls बिना खुली फ़ाइल के `workspace/symbol` मना करता है) को `lsp_symbols` में `file_path` देकर सेवा दी जाती है। tsls इस जीवनचक्र में `textDocument/signatureHelp` का उत्तर `null` से भी देता है; अन्य server (gopls, pyright, rust-analyzer) इसे सामान्य रूप से परोसते हैं।
|
|
177
|
+
- **रेंज फ़ॉर्मेटिंग के लिए server का range provider चाहिए।** केवल पूर्ण-दस्तावेज़ फ़ॉर्मेटिंग विज्ञापित करने वाले server रेंज अनुरोधों को `LSP_ACTION_UNSUPPORTED` से विफल करते हैं।
|
|
178
|
+
- **रिनेम केवल टेक्स्ट edits लागू करता है।** server के रिनेम उत्तर में रिसोर्स ऑपरेशन (फ़ाइल बनाना/मिटाना/नाम बदलना) `LSP_ACTION_UNSUPPORTED` से अस्वीकार होते हैं, और workspace से बाहर के edits कुछ भी लिखे जाने से पहले `LSP_ACTION_CONFLICT` से विफल होते हैं।
|
|
143
179
|
|
|
144
|
-
|
|
145
|
-
| --- | --- |
|
|
146
|
-
| `LSP_ACTION_UNAVAILABLE` | कोई server entry नहीं और seam का कोई provider इस फ़ाइल को नहीं संभालता। |
|
|
147
|
-
| `LSP_ACTION_UNSUPPORTED` | server (या seam provider) ऑपरेशन का विज्ञापन नहीं करता। |
|
|
148
|
-
| `LSP_ACTION_SERVER_FAILED` | server विफल हुआ (अपने stderr टेल सहित); स्टार्टअप विफलताएँ एक बार पुनः प्रयास करती हैं। |
|
|
149
|
-
| `LSP_ACTION_MALFORMED_RESPONSE` | server ने संरचनात्मक रूप से अमान्य पेलोड भेजा। |
|
|
150
|
-
| `LSP_ACTION_CONFLICT` | फ़ाइल पढ़े जाने के बाद बदल गई, या server के edits ओवरलैप / सीमा से बाहर / workspace से बाहर हैं। |
|
|
151
|
-
| `LSP_ACTION_READ_ONLY` | सत्र का sandbox मोड फ़ॉर्मेटिंग/रिनेम लेखन को मना करता है। |
|
|
152
|
-
| `LSP_ACTION_WORKSPACE_REQUIRED` | कॉल करने वाले सत्र के पास server को जड़ देने के लिए workspace cwd नहीं है। |
|
|
153
|
-
| `LSP_ACTION_NO_SYMBOL` | server को कर्सर स्थान पर नाम बदलने योग्य कोई सिंबल नहीं मिला। |
|
|
180
|
+
## Development
|
|
154
181
|
|
|
155
|
-
|
|
182
|
+
```sh
|
|
183
|
+
pnpm install # node ^22.19 || >=24
|
|
184
|
+
pnpm run lint # oxlint over src/ and tests/
|
|
185
|
+
pnpm test # vitest: unit + fixture-server integration + editor-protocol e2e + real tsls e2e
|
|
186
|
+
pnpm run test:coverage # coverage gate
|
|
187
|
+
pnpm build # tsc --noEmitOnError → lib/
|
|
188
|
+
pnpm run prepare # tsc --noEmitOnError (runs on install)
|
|
189
|
+
pnpm run prepublishOnly # tsc --noEmitOnError (runs before publish)
|
|
190
|
+
```
|
|
156
191
|
|
|
157
|
-
|
|
192
|
+
## Topics
|
|
158
193
|
|
|
159
|
-
|
|
194
|
+
`dsh`, `dsh-plugin`, `deepseek-harness`, `lsp`, `language-server`, `diagnostics`, `formatting`, `completion`, `code-action`, `symbols`, `signature-help`, `inlay-hints`, `rename`, `refactor`, `ide`, `editor`, `vscode`, `acp`, `json-rpc`
|
|
160
195
|
|
|
161
|
-
|
|
162
|
-
- **रेंज फ़ॉर्मेटिंग के लिए server का range provider चाहिए।** केवल पूर्ण-दस्तावेज़ फ़ॉर्मेटिंग विज्ञापित करने वाले server रेंज अनुरोधों को `LSP_ACTION_UNSUPPORTED` से विफल करते हैं।
|
|
163
|
-
- **रिनेम केवल टेक्स्ट edits लागू करता है।** server के रिनेम उत्तर में रिसोर्स ऑपरेशन (फ़ाइल बनाना/मिटाना/नाम बदलना) `LSP_ACTION_UNSUPPORTED` से अस्वीकार होते हैं, और workspace से बाहर के edits कुछ भी लिखे जाने से पहले `LSP_ACTION_CONFLICT` से विफल होते हैं। `utf-8`/`utf-32` server पर क्रॉस-फ़ाइल रिनेम स्थितियाँ हर संपादित फ़ाइल को पढ़कर डिकोड होती हैं; अपठनीय संपादित फ़ाइल स्थितियों को ग़लत डिकोड करने के बजाय कॉल को संघर्ष के रूप में विफल करती है।
|
|
196
|
+
## Contributors
|
|
164
197
|
|
|
165
|
-
|
|
198
|
+
- [@PerryLink](https://github.com/PerryLink) — निर्माता और अनुरक्षक: LSP एक्शन क्लाइंट व server जीवनचक्र, सभी आठ टूल, एडिटर एक्शन प्रोटोकॉल, टेस्ट, CI और पाँच-भाषा दस्तावेज़ीकरण।
|
|
166
199
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
200
|
+
## PerryLink DSH Plugin Family
|
|
201
|
+
|
|
202
|
+
यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [15 DeepSeek Harness प्लगइन्स](https://github.com/PerryLink) में से एक है। अगर यह आपकी मदद करता है, तो बाकी भी करेंगे:
|
|
203
|
+
|
|
204
|
+
| Plugin | One-liner |
|
|
205
|
+
|---|---|
|
|
206
|
+
| [dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel) | केवल-पठन MCP रनटाइम पैनल: /mcp कमांड + स्टेटस, टूल्स और एरर वाला Settings टैब |
|
|
207
|
+
| [dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck) | इंजीनियरिंग-अनुशासन गार्ड: आवश्यकताओं की जाँच, टेस्ट गेट, प्रतिकूल समीक्षा |
|
|
208
|
+
| [dsh-background-agents](https://github.com/PerryLink/dsh-background-agents) | Web UI साइडबार, संदेश और व्यवधान के साथ टिकाऊ बैकग्राउंड चाइल्ड एजेंट |
|
|
209
|
+
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | language servers पर LSP डायग्नोस्टिक्स, फ़ॉर्मेटिंग, कम्प्लीशन, कोड एक्शन और रिनेम |
|
|
210
|
+
| [dsh-output-styles](https://github.com/PerryLink/dsh-output-styles) | Claude Code outputStyles-समतुल्य रनटाइम स्टाइल स्विचिंग |
|
|
211
|
+
| [dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind) | Claude Code /rewind-समतुल्य: स्नैपशॉट, सत्र फ़ोर्क, एक-चरण पुनर्स्थापन |
|
|
212
|
+
| [dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules) | Claude Code-शैली घोषणात्मक allow/deny/ask अनुमति नियम, ऑडिट के साथ |
|
|
213
|
+
| [dsh-auto-review](https://github.com/PerryLink/dsh-auto-review) | अनुमोदन श्रृंखला पर द्वितीय-मॉडल ऑटो-समीक्षा, डिफ़ॉल्ट fail-closed |
|
|
214
|
+
| [dsh-memento](https://github.com/PerryLink/dsh-memento) | अनुमोदन-गेटेड क्रॉस-सत्र मेमोरी: ctx.memory seam + SQLite + memory टूल |
|
|
215
|
+
| [dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security) | सुरक्षा-ऑडिट स्किल पैक: सीक्रेट स्कैन, निर्भरता और आपूर्ति-श्रृंखला समीक्षा |
|
|
216
|
+
| [dsh-session-pin](https://github.com/PerryLink/dsh-session-pin) | टिकाऊ क्रम के साथ Web साइडबार में सत्र पिन करें |
|
|
217
|
+
| [dsh-composer-history](https://github.com/PerryLink/dsh-composer-history) | web composer के लिए टर्मिनल-शैली इनपुट इतिहास: तीर, Ctrl+R खोज |
|
|
218
|
+
| [dsh-github](https://github.com/PerryLink/dsh-github) | DSH के लिए GitHub PR/issues एकीकरण, हर लेखन अनुमोदन-गेटेड |
|
|
219
|
+
| [dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide) | माँग पर एजेंट स्किल के रूप में प्लगइन-विकास ज्ञानकोश |
|
|
220
|
+
| [dsh-claude-move](https://github.com/PerryLink/dsh-claude-move) | Claude Code सत्र, मेमोरी, स्किल्स और CLAUDE.md को DSH में माइग्रेट करें |
|
|
174
221
|
|
|
175
222
|
## License
|
|
176
223
|
|
|
177
|
-
[Apache License 2.0](LICENSE)
|
|
224
|
+
[Apache License 2.0](LICENSE) © 2026 dsh-lsp-actions contributors
|