- 1024 स्टोर चैनल: पहले
npm i -g dsh1024, फिरdsh1024 plugin --profile web add @perrylink/dsh-plugin-kit(deepseek1024.com इंस्टॉल रैंकिंग में गिना जाता है)।
PerryLink DSH प्लगइन रिपॉज़िटरीज़ के लिए साझा शून्य-रनटाइम-निर्भरता टूलकिट। प्रति-प्रोजेक्ट ऑडिट में पाया गया कि 33 में से 20+ प्लगइन एक ही Provider seam हाथ से लिखते हैं और एक जैसी sanitize/pricing/निर्णय आकृतियाँ दोहराते हैं, इसलिए यह पैकेज वह सब — प्लगेबल Provider seam, fail-closed अनुमोदन और अनुकूली सत्र-घटना गेट, यांत्रिक verify स्क्रिप्ट और साझा sanitize/pricing/judge शुद्ध मॉड्यूल — एक ESM + TypeScript पैकेज में निकालता है।
- DSH harness: किट रनटाइम पर
@deepseek-ai/*से कुछ भी import नहीं करता।@deepseek-ai/cordis(^4.0.2),@deepseek-ai/schemastery(^3.18.2) और@deepseek-ai/dsh-*पैकेज PerryLink प्लगइन रिपोज़ की साझा>=0.1.2-rc.1 <0.2.0बैंड में वैकल्पिक peer dependencies हैं; वे केवल टाइप इंटरऑप के लिए हैं। 2026-09-10 कोdsh-v0.1.5-rc.1master checkout के विरुद्ध सत्यापित (पूर्ण गेट शृंखला + profile इंस्टॉल स्मोक)। - Node:
^22.19.0 || >=24.0.0, केवल ESM। - वायर अनुकूलता: नाम और आकृतियाँ
dsh-mask(sanitize),dsh-budget(pricing) औरdsh-auto-review(judge वfallbackPolicyशब्दावली) का दर्पण हैं, इसलिए माइग्रेशन यांत्रिक है।
- शून्य रनटाइम निर्भरताएँ — शुद्ध कोर (
seam,gates,shared) ब्राउज़र-सुरक्षित है। - ESM + सख्त TypeScript — हर मॉड्यूल पर JSDoc अनुबंध;
strict,noUncheckedIndexedAccess,exactOptionalPropertyTypes। - Fail-closed और अनुकूली गेट — अनुमोदन कभी डिफ़ॉल्ट से अनुदान नहीं देता; अज्ञात घटना प्रकार अस्वीकार करने वाले होस्ट पर सत्र-घटनाएँ सुंदरता से अपमानित होती हैं।
- नया-प्लगइन कंकाल —
template/मेंcordis.yml, तीन-भूमिका वालाsrc/index.ts(Service Definition / Provider / Consumer), एक टेस्ट और साझा Renovate प्रीसेट।
npm से:
pnpm add @perrylink/dsh-plugin-kitgit से (prepare स्क्रिप्ट केवल उत्पादन निर्भरताओं से lib/ बनाती है):
pnpm add github:PerryLink/dsh-plugin-kitहाथ से लिखी रजिस्ट्री एक चरण में बदलें:
import { ProviderRegistry } from '@perrylink/dsh-plugin-kit/seam'
const registry = new ProviderRegistry<Detector>({
default: { name: 'regex', impl: new RegexDetector() },
})
ctx.effect(() => registry.register('ner', new NerDetector()))
const active = registry.use('ner') ?? registry.use()इंस्टॉल pnpm add है (त्वरित शुरुआत देखें)। हटाने के लिए:
pnpm remove @perrylink/dsh-plugin-kitकुछ भी वैश्विक स्थिति पंजीकृत नहीं करता: अनइंस्टॉल इंस्टॉल का ठीक उल्टा है।
रनटाइम कॉन्फ़िगरेशन नहीं है: गेट और सहायक शुद्ध फ़ंक्शन हैं। एकमात्र
कॉन्फ़िगरेशन सतह cordis.patch.yml है — harness प्रोफ़ाइल संयोजन के लिए
वितरित bundle-patch परत; यह कोई प्लगइन पंक्ति नहीं जोड़ती (किट एक लाइब्रेरी
है) और बताती है कि उपभोक्ता प्लगइन अपनी पंक्तियाँ कैसे जोड़ें।
| उपपथ | उद्देश्य |
|---|---|
seam |
ProviderRegistry<T> — प्रतिवर्ती, नामित provider रजिस्ट्री जो ज़ोर से विफल होती है। |
gates |
applyFailClosed; makeEventGate / maybeAppendSessionEvent / probeIgnorableAppend। |
shared |
sanitize (Stripper, redactText, redactMapping, sanitizeText, sanitizeUrl), pricing (BUILTIN_PRICES, estimateUsageCost, tokenCarbon, latencyStats, formatMoney, formatTokens), judge (parseVerdict, VERDICT_SCHEMA, riskExceeds)। |
verify |
यांत्रिक CI गेट (verify-license, verify-readme-languages, verify-seam) VerifyReport और गैर-शून्य निकास CLI के साथ: node lib/verify/cli.js all . |
template/ |
नए प्लगइन का कंकाल (cordis.yml, तीन-भूमिका प्लगइन, टेस्ट, README, renovate.json5)। |
| मूल barrel | उपरोक्त सब पुनः निर्यात करता है। |
किट स्वयं कोई I/O, नेटवर्क एक्सेस या सबप्रोसेस नहीं करता। Stripper
placeholder→original मैपिंग केवल मेमोरी में रखता है, और
stats()/redactMapping() कभी प्लेनटेक्स्ट नहीं देते; मैपिंग को स्थायी करने
वाला उपभोक्ता उस निर्णय और उसकी स्टोरेज अनुमतियों का स्वामी है।
sanitize/redact*प्रदर्शन स्वच्छता हैं, सुरक्षा सीमा नहीं: वे लॉग और परिणामों में रिसाव घटाते हैं, प्रमाणित या अधिकृत नहीं करते।- अनुमोदन गेट डिफ़ॉल्ट से fail closed हैं (
rejected); अनुदान का एकमात्र रास्ता स्पष्टallow-onceविकल्प है। - होस्ट द्वारा अस्वीकृत सत्र-घटनाएँ छोड़ दी जाती हैं, कभी ऐसे पुनर्प्रयास नहीं किए जाते जो सत्र रिज़्यूम तोड़ सकें।
- कमज़ोरियाँ GitHub Security Advisories से रिपोर्ट करें —
SECURITY.mdदेखें।
- जिन होस्ट का
Session.appendतीसरा तर्कSurfaceIntentहै (0.1.2-rc.1), वे ignorable-लिफ़ाफ़ा जाँच परvalidateNextफेंकते हैं; गेट अज्ञात-छोड़ने में अपमानित होता है, इसलिए ऐसे होस्ट पर ऑडिट घटनाएँ लिखे जाने के बजाय छोड़ दी जाती हैं (fail closed)। - 0.1.2-rc.1 (2026-09-02 को अनुकूलित): सत्र लिफ़ाफ़ा अपना ignorable फ़ील्ड केवल संग्रहीत-लॉग पठन संगतता के लिए रखता है - Session.append अभी भी इसे स्टैम्प नहीं कर सकता, इसलिए गेट व्यवहार अपरिवर्तित है।
- किट में ब्राउज़र UI आधा नहीं है: यह एक लाइब्रेरी है जिसे अन्य प्लगइन के Host (और वैकल्पिक Client) आधे उपभोग करते हैं।
pnpm install
pnpm run typecheck # tsc --noEmit
pnpm run typecheck:ci # CI चेहरा: tsc -p tsconfig.ci.json --noEmit
pnpm test # vitest यूनिट टेस्ट
pnpm run build # lib/ व घोषणाएँ उत्सर्जित करता है (prepare भी)
pnpm run verify:self-contained
pnpm run verify:artifactsयह रिपॉज़िटरी 33 प्लगइन रिपोज़ का रखरखाव केंद्र भी है:
scripts/sync-peer-range.mjs एक कमांड में सभी रिपोज़ की साझा peer बैंड फिर से
पिन करता है, renovate/default.json5 वह साझा Renovate प्रीसेट है जिसे हर
रिपो विस्तारित करता है, .github/workflows/npm-publish.yml एक पुन: प्रयोज्य
tag-ट्रिगर प्रकाशन वर्कफ़्लो है (केवल एक NPM_TOKEN सीक्रेट चाहिए), और
data/repos.json पोर्टल द्वारा उपभोग की जाने वाली इकोसिस्टम रजिस्ट्री है।
docs/ecosystem-tooling.md देखें।
कीवर्ड: dsh, dsh-plugin, deepseek-harness, deepseek, cordis, perrylink, provider, seam, approval, sanitize, pricing, judge।
PerryLink द्वारा अनुरक्षित, DSH प्लगइन इकोसिस्टम के योगदान के साथ।
Apache-2.0 — LICENSE देखें।