@perrylink/dsh-github 0.7.0 → 0.7.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/README.es.md CHANGED
@@ -12,6 +12,7 @@
12
12
  [![CI](https://img.shields.io/github/actions/workflow/status/PerryLink/dsh-github/ci.yml?branch=main&label=CI)](https://github.com/PerryLink/dsh-github/actions)
13
13
  [![Version](https://img.shields.io/github/v/tag/PerryLink/dsh-github?label=version)](https://github.com/PerryLink/dsh-github/releases)
14
14
  [![npm version](https://img.shields.io/npm/v/%40perrylink%2Fdsh-github)](https://www.npmjs.com/package/@perrylink/dsh-github)
15
+ - **Canal 1024 store**: `npm i -g dsh1024` una vez, luego `dsh1024 plugin --profile web add @perrylink/dsh-github` (cuenta para el ranking de instalaciones de [deepseek1024.com](https://deepseek1024.com)).
15
16
  [![npm downloads](https://img.shields.io/npm/dm/%40perrylink%2Fdsh-github)](https://www.npmjs.com/package/@perrylink/dsh-github)
16
17
 
17
18
  [English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
@@ -209,25 +210,42 @@ scripts/prepare.mjs self-contained git-install build
209
210
 
210
211
  ## Familia de plugins DSH de PerryLink
211
212
 
212
- Este proyecto es uno de los [15 plugins de DeepSeek Harness](https://github.com/PerryLink) mantenidos por [PerryLink](https://github.com/PerryLink). Si este te resulta útil, es probable que los demás también:
213
+ Este proyecto es uno de los [33 complementos de DeepSeek Harness](https://github.com/PerryLink) mantenidos por [PerryLink](https://github.com/PerryLink). Si este te ayuda, probablemente los demás también:
213
214
 
214
- | Plugin | Descripción |
215
+ | Plugin | One-liner |
215
216
  |---|---|
216
- | [dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel) | Panel MCP de solo lectura en tiempo de ejecución: comando /mcp + pestaña de ajustes con estado, herramientas y errores |
217
- | [dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck) | Guardián de disciplina de ingeniería: interrogatorio de requisitos, puertas de pruebas, revisión adversaria |
218
- | [dsh-background-agents](https://github.com/PerryLink/dsh-background-agents) | Agentes hijo en segundo plano duraderos con barra lateral web, mensajería e interrupción |
219
- | [dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions) | Diagnósticos, formato, completado, acciones de código y renombrado LSP sobre servidores de lenguaje |
220
- | [dsh-output-styles](https://github.com/PerryLink/dsh-output-styles) | Cambio de estilo en tiempo de ejecución equivalente a outputStyles de Claude Code |
221
- | [dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind) | Equivalente a /rewind de Claude Code: instantáneas, bifurcaciones de sesión, restauración de un solo uso |
222
- | [dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules) | Reglas de permisos declarativas allow/deny/ask estilo Claude Code con auditoría |
223
- | [dsh-auto-review](https://github.com/PerryLink/dsh-auto-review) | Auto-revisión de un segundo modelo en la cadena de aprobación, cerrada ante fallo por defecto |
224
- | [dsh-memento](https://github.com/PerryLink/dsh-memento) | Memoria entre sesiones con aprobación: seam ctx.memory + SQLite + herramienta de memoria |
225
- | [dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security) | Paquete de habilidades de auditoría de seguridad: escaneo de secretos, revisión de dependencias y cadena de suministro |
226
- | [dsh-session-pin](https://github.com/PerryLink/dsh-session-pin) | Fija sesiones en la barra lateral web con orden duradero |
227
- | [dsh-composer-history](https://github.com/PerryLink/dsh-composer-history) | Historial de entrada estilo terminal para el compositor web: flechas, búsqueda Ctrl+R |
228
- | **[dsh-github](https://github.com/PerryLink/dsh-github)** | Integración de PR/issues de GitHub para DSH, cada escritura con aprobación |
229
- | [dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide) | Base de conocimiento de desarrollo de plugins como habilidad de agente bajo demanda |
230
- | [dsh-claude-move](https://github.com/PerryLink/dsh-claude-move) | Migra sesiones, memoria, habilidades y CLAUDE.md de Claude Code a DSH |
217
+ | **[dsh-dsh-auto-review](https://github.com/PerryLink/dsh-dsh-auto-review)** | Auto-revisión de segundo modelo en la cadena de aprobación, con cierre en fallo por defecto | |
218
+ | **[dsh-dsh-background-agents](https://github.com/PerryLink/dsh-dsh-background-agents)** | Agentes hijos en segundo plano durables con barra lateral de UI web, mensajería e interrupción | |
219
+ | **[dsh-dsh-budget](https://github.com/PerryLink/dsh-dsh-budget)** | Gobernanza de costes para DeepSeek Harness: presupuestos, carbono y latencia en un panel. | |
220
+ | **[dsh-dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-dsh-checkpoint-rewind)** | Equivalente a /rewind de Claude Code: instantáneas, bifurcaciones de sesión, restauración de un solo uso | |
221
+ | **[dsh-dsh-claude-move](https://github.com/PerryLink/dsh-dsh-claude-move)** | Migra sesiones, memoria, habilidades y CLAUDE.md de Claude Code a DSH | |
222
+ | **[dsh-dsh-click](https://github.com/PerryLink/dsh-dsh-click)** | Control de escritorio nativo multiplataforma para DeepSeek Harness — Windows primero. | |
223
+ | **[dsh-dsh-composer-history](https://github.com/PerryLink/dsh-dsh-composer-history)** | Historial de entrada estilo terminal para el compositor web: flechas, búsqueda Ctrl+R | |
224
+ | **[dsh-dsh-data-quality](https://github.com/PerryLink/dsh-dsh-data-quality)** | Comprobaciones de calidad de datasets y verificación de citas (el puente numérico opcional consumido aquí) | |
225
+ | **[dsh-dsh-defend](https://github.com/PerryLink/dsh-dsh-defend)** | Defensa contra inyección de prompts, jailbreak y fuga de secretos para DeepSeek Harness. | |
226
+ | **[dsh-dsh-doublecheck](https://github.com/PerryLink/dsh-dsh-doublecheck)** | Guardián de disciplina de ingeniería: interrogatorio de requisitos, puertas de pruebas, revisión adversaria | |
227
+ | **[dsh-dsh-draw](https://github.com/PerryLink/dsh-dsh-draw)** | Enrutamiento unificado de generación de imágenes estáticas para DeepSeek Harness. | |
228
+ | **[dsh-dsh-fast](https://github.com/PerryLink/dsh-dsh-fast)** | Diagnóstico de rendimiento de solo lectura para DeepSeek Harness. | |
229
+ | **[dsh-dsh-fund-research](https://github.com/PerryLink/dsh-dsh-fund-research)** | Informes de investigación deterministas para fondos mutuos públicos chinos | |
230
+ | **[dsh-dsh-industry-research](https://github.com/PerryLink/dsh-dsh-industry-research)** | Orquestación de investigación sectorial que sella sus entregables mediante el `ctx.researchReport.assemble` de este plugin | |
231
+ | **[dsh-dsh-library](https://github.com/PerryLink/dsh-dsh-library)** | Base de conocimiento documental local para DeepSeek Harness. | |
232
+ | **[dsh-dsh-local-ai](https://github.com/PerryLink/dsh-dsh-local-ai)** | Integración de modelos locales (Ollama) para DeepSeek Harness. | |
233
+ | **[dsh-dsh-lsp-actions](https://github.com/PerryLink/dsh-dsh-lsp-actions)** | Diagnósticos, formato, autocompletado, acciones de código y renombrado LSP sobre servidores de lenguaje | |
234
+ | **[dsh-dsh-mask](https://github.com/PerryLink/dsh-dsh-mask)** | Middleware de enmascaramiento de PII: anonimiza en el límite del modelo, restaura en la capa de visualización | |
235
+ | **[dsh-dsh-mcp-panel](https://github.com/PerryLink/dsh-dsh-mcp-panel)** | Panel de tiempo de ejecución MCP de solo lectura: comando /mcp + pestaña Settings con estado, herramientas y errores | |
236
+ | **[dsh-dsh-memento](https://github.com/PerryLink/dsh-dsh-memento)** | Memoria entre sesiones controlada por aprobación: costura ctx.memory + SQLite + herramienta de memoria | |
237
+ | **[dsh-dsh-observe](https://github.com/PerryLink/dsh-dsh-observe)** | Exportador de observabilidad OpenTelemetry y Langfuse para DeepSeek Harness. | |
238
+ | **[dsh-dsh-output-styles](https://github.com/PerryLink/dsh-dsh-output-styles)** | Cambio de estilo en tiempo de ejecución equivalente a outputStyles de Claude Code | |
239
+ | **[dsh-dsh-permission-rules](https://github.com/PerryLink/dsh-dsh-permission-rules)** | Reglas de permisos declarativas allow/deny/ask estilo Claude Code con auditoría | |
240
+ | **[dsh-dsh-plugin-guide](https://github.com/PerryLink/dsh-dsh-plugin-guide)** | Base de conocimiento de desarrollo de plugins como habilidad de agente bajo demanda | |
241
+ | **[dsh-dsh-research-report](https://github.com/PerryLink/dsh-dsh-research-report)** | Motor de informes de investigación verificables con evidencia direccionada por contenido | |
242
+ | **[dsh-dsh-score](https://github.com/PerryLink/dsh-dsh-score)** | Puntuación de calidad multidimensional para plugins de DeepSeek Harness. | |
243
+ | **[dsh-dsh-session-pin](https://github.com/PerryLink/dsh-dsh-session-pin)** | Fija sesiones en la barra lateral web con orden durable | |
244
+ | **[dsh-dsh-session-sync](https://github.com/PerryLink/dsh-dsh-session-sync)** | Sincronización de sesiones entre dispositivos para DeepSeek Harness — un espejo git dedicado de tu almacén de sesiones. | |
245
+ | **[dsh-dsh-skill-pack-security](https://github.com/PerryLink/dsh-dsh-skill-pack-security)** | Paquete de habilidades de auditoría de seguridad: escaneo de secretos, revisión de dependencias y cadena de suministro | |
246
+ | **[dsh-dsh-talk](https://github.com/PerryLink/dsh-dsh-talk)** | Bucle de sesión con voz para DeepSeek Harness: háblale y escucha su respuesta. | |
247
+ | **[dsh-dsh-test-drive](https://github.com/PerryLink/dsh-dsh-test-drive)** | Pruebas de instalación y humo aisladas para plugins de DeepSeek Harness. | |
248
+ | **[dsh-dsh-translate](https://github.com/PerryLink/dsh-dsh-translate)** | Traducción de parámetros entre proveedores y reparación determinista de JSON para DeepSeek Harness. | |
231
249
 
232
250
  ## Licencia
233
251
 
package/README.hi.md CHANGED
@@ -12,6 +12,7 @@
12
12
  [![CI](https://img.shields.io/github/actions/workflow/status/PerryLink/dsh-github/ci.yml?branch=main&label=CI)](https://github.com/PerryLink/dsh-github/actions)
13
13
  [![Version](https://img.shields.io/github/v/tag/PerryLink/dsh-github?label=version)](https://github.com/PerryLink/dsh-github/releases)
14
14
  [![npm version](https://img.shields.io/npm/v/%40perrylink%2Fdsh-github)](https://www.npmjs.com/package/@perrylink/dsh-github)
15
+ - **1024 स्टोर चैनल**: एक बार `npm i -g dsh1024`, फिर `dsh1024 plugin --profile web add @perrylink/dsh-github` ([deepseek1024.com](https://deepseek1024.com) इंस्टॉल रैंकिंग में गिना जाता है)।
15
16
  [![npm downloads](https://img.shields.io/npm/dm/%40perrylink%2Fdsh-github)](https://www.npmjs.com/package/@perrylink/dsh-github)
16
17
 
17
18
  [English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
@@ -209,25 +210,42 @@ scripts/prepare.mjs self-contained git-install build
209
210
 
210
211
  ## PerryLink DSH प्लगइन परिवार
211
212
 
212
- यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [15 DeepSeek Harness plugins](https://github.com/PerryLink) में से एक है। यदि यह आपकी मदद करता है, तो बाकी भी संभवतः करेंगे:
213
+ यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [33 DeepSeek Harness प्लगइनों](https://github.com/PerryLink) में से एक है। अगर यह आपकी मदद करता है, तो बाकी भी करेंगे:
213
214
 
214
- | Plugin | विवरण |
215
+ | Plugin | One-liner |
215
216
  |---|---|
216
- | [dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel) | Read-only MCP runtime panel: /mcp command + status, tools और errors वाला Settings tab |
217
- | [dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck) | Engineering-discipline guard: requirements grill, test gates, adversary review |
218
- | [dsh-background-agents](https://github.com/PerryLink/dsh-background-agents) | Web UI sidebar, messaging और interrupt के साथ durable background child agents |
219
- | [dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions) | Language servers पर LSP diagnostics, formatting, completion, code actions और rename |
220
- | [dsh-output-styles](https://github.com/PerryLink/dsh-output-styles) | Claude Code outputStyles-समतुल्य runtime style switching |
221
- | [dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind) | Claude Code /rewind-समतुल्य: snapshots, session forks, one-shot restore |
222
- | [dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules) | Audit के साथ Claude Code-शैली declarative allow/deny/ask permission rules |
223
- | [dsh-auto-review](https://github.com/PerryLink/dsh-auto-review) | Approval chain पर second-model auto-review, डिफ़ॉल्ट रूप से fail-closed |
224
- | [dsh-memento](https://github.com/PerryLink/dsh-memento) | Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool |
225
- | [dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security) | Security-audit skill pack: secret scan, dependency और supply-chain review |
226
- | [dsh-session-pin](https://github.com/PerryLink/dsh-session-pin) | Durable ordering के साथ Web sidebar में sessions pin करें |
227
- | [dsh-composer-history](https://github.com/PerryLink/dsh-composer-history) | Web composer के लिए terminal-शैली input history: arrows, Ctrl+R search |
228
- | **[dsh-github](https://github.com/PerryLink/dsh-github)** | DSH के लिए GitHub PR/issues integration, हर write approval से नियंत्रित |
229
- | [dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide) | On-demand agent skill के रूप में plugin-development knowledge base |
230
- | [dsh-claude-move](https://github.com/PerryLink/dsh-claude-move) | Claude Code sessions, memory, skills और CLAUDE.md को DSH में migrate करें |
217
+ | **[dsh-dsh-auto-review](https://github.com/PerryLink/dsh-dsh-auto-review)** | अनुमोदन श्रृंखला पर द्वितीय-मॉडल स्वतः-समीक्षा, डिफ़ॉल्ट रूप से विफल-बंद | |
218
+ | **[dsh-dsh-background-agents](https://github.com/PerryLink/dsh-dsh-background-agents)** | वेब UI साइडबार, संदेश और अवरोधन के साथ टिकाऊ पृष्ठभूमि चाइल्ड एजेंट | |
219
+ | **[dsh-dsh-budget](https://github.com/PerryLink/dsh-dsh-budget)** | DeepSeek Harness के लिए लागत प्रशासन: बजट, कार्बन और विलंबता एक पैनल में। | |
220
+ | **[dsh-dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-dsh-checkpoint-rewind)** | Claude Code /rewind-समतुल्य: स्नैपशॉट, सत्र फ़ॉर्क, एक-बार पुनर्स्थापना | |
221
+ | **[dsh-dsh-claude-move](https://github.com/PerryLink/dsh-dsh-claude-move)** | Claude Code सत्र, मेमोरी, कौशल और CLAUDE.md को DSH में स्थानांतरित करें | |
222
+ | **[dsh-dsh-click](https://github.com/PerryLink/dsh-dsh-click)** | DeepSeek Harness के लिए क्रॉस-प्लेटफ़ॉर्म नेटिव डेस्कटॉप नियंत्रण — Windows पहले। | |
223
+ | **[dsh-dsh-composer-history](https://github.com/PerryLink/dsh-dsh-composer-history)** | वेब कंपोज़र के लिए टर्मिनल-शैली इनपुट इतिहास: तीर, Ctrl+R खोज | |
224
+ | **[dsh-dsh-data-quality](https://github.com/PerryLink/dsh-dsh-data-quality)** | डेटासेट गुणवत्ता जाँच व उद्धरण सत्यापन (यहाँ उपभोग किया गया वैकल्पिक संख्या-सेतु) | |
225
+ | **[dsh-dsh-defend](https://github.com/PerryLink/dsh-dsh-defend)** | DeepSeek Harness के लिए प्रॉम्प्ट-इंजेक्शन, जेलब्रेक और सीक्रेट-लीक रक्षा। | |
226
+ | **[dsh-dsh-doublecheck](https://github.com/PerryLink/dsh-dsh-doublecheck)** | इंजीनियरिंग-अनुशासन रक्षक: आवश्यकताओं की पूछताछ, परीक्षण द्वार, प्रतिद्वंद्वी समीक्षा | |
227
+ | **[dsh-dsh-draw](https://github.com/PerryLink/dsh-dsh-draw)** | DeepSeek Harness के लिए एकीकृत स्थैतिक-छवि निर्माण रूटिंग। | |
228
+ | **[dsh-dsh-fast](https://github.com/PerryLink/dsh-dsh-fast)** | DeepSeek Harness के लिए रीड-ओनली प्रदर्शन डायग्नोस्टिक्स। | |
229
+ | **[dsh-dsh-fund-research](https://github.com/PerryLink/dsh-dsh-fund-research)** | चीनी सार्वजनिक म्यूचुअल फंड के लिए नियतात्मक अनुसंधान रिपोर्ट | |
230
+ | **[dsh-dsh-industry-research](https://github.com/PerryLink/dsh-dsh-industry-research)** | उद्योग-अनुसंधान ऑर्केस्ट्रेशन जो इस प्लगिन के `ctx.researchReport.assemble` से डिलीवरेबल सील करता है | |
231
+ | **[dsh-dsh-library](https://github.com/PerryLink/dsh-dsh-library)** | DeepSeek Harness के लिए स्थानीय दस्तावेज़ ज्ञानकोश। | |
232
+ | **[dsh-dsh-local-ai](https://github.com/PerryLink/dsh-dsh-local-ai)** | DeepSeek Harness के लिए स्थानीय-मॉडल (Ollama) एकीकरण। | |
233
+ | **[dsh-dsh-lsp-actions](https://github.com/PerryLink/dsh-dsh-lsp-actions)** | भाषा सर्वरों पर LSP निदान, फ़ॉर्मेटिंग, पूर्णता, कोड क्रियाएँ और नाम बदलना | |
234
+ | **[dsh-dsh-mask](https://github.com/PerryLink/dsh-dsh-mask)** | PII मास्किंग मिडलवेयर: मॉडल सीमा पर अनाम करें, डिस्प्ले लेयर पर पुनर्स्थापित करें | |
235
+ | **[dsh-dsh-mcp-panel](https://github.com/PerryLink/dsh-dsh-mcp-panel)** | केवल-पढ़ने वाला MCP रनटाइम पैनल: /mcp कमांड + स्थिति, टूल और त्रुटियों वाला Settings टैब | |
236
+ | **[dsh-dsh-memento](https://github.com/PerryLink/dsh-dsh-memento)** | अनुमोदन-द्वारित क्रॉस-सत्र मेमोरी: ctx.memory सीम + SQLite + मेमोरी टूल | |
237
+ | **[dsh-dsh-observe](https://github.com/PerryLink/dsh-dsh-observe)** | DeepSeek Harness के लिए OpenTelemetry और Langfuse अवलोकनीयता निर्यातक। | |
238
+ | **[dsh-dsh-output-styles](https://github.com/PerryLink/dsh-dsh-output-styles)** | Claude Code outputStyles-समतुल्य रनटाइम शैली बदलाव | |
239
+ | **[dsh-dsh-permission-rules](https://github.com/PerryLink/dsh-dsh-permission-rules)** | ऑडिट के साथ Claude Code-शैली घोषणात्मक allow/deny/ask अनुमति नियम | |
240
+ | **[dsh-dsh-plugin-guide](https://github.com/PerryLink/dsh-dsh-plugin-guide)** | माँग पर एजेंट कौशल के रूप में प्लगइन-विकास ज्ञान आधार | |
241
+ | **[dsh-dsh-research-report](https://github.com/PerryLink/dsh-dsh-research-report)** | सामग्री-पता साक्ष्य और सीलबंद संस्करणों वाला सत्यापन-योग्य अनुसंधान-रिपोर्ट इंजन | |
242
+ | **[dsh-dsh-score](https://github.com/PerryLink/dsh-dsh-score)** | DeepSeek Harness प्लगिनों की बहु-आयामी गुणवत्ता स्कोरिंग। | |
243
+ | **[dsh-dsh-session-pin](https://github.com/PerryLink/dsh-dsh-session-pin)** | टिकाऊ क्रम के साथ वेब साइडबार में सत्र पिन करें | |
244
+ | **[dsh-dsh-session-sync](https://github.com/PerryLink/dsh-dsh-session-sync)** | DeepSeek Harness के लिए क्रॉस-डिवाइस सत्र सिंक — आपके सत्र स्टोर का एक समर्पित git मिरर। | |
245
+ | **[dsh-dsh-skill-pack-security](https://github.com/PerryLink/dsh-dsh-skill-pack-security)** | सुरक्षा-ऑडिट कौशल पैक: गुप्त स्कैन, निर्भरता और आपूर्ति-श्रृंखला समीक्षा | |
246
+ | **[dsh-dsh-talk](https://github.com/PerryLink/dsh-dsh-talk)** | DeepSeek Harness के लिए आवाज़-प्रथम सत्र लूप: बोलें और उत्तर सुनें। | |
247
+ | **[dsh-dsh-test-drive](https://github.com/PerryLink/dsh-dsh-test-drive)** | DeepSeek Harness प्लगिनों के लिए पृथक इंस्टॉल-एंड-स्मोक टेस्ट ड्राइव। | |
248
+ | **[dsh-dsh-translate](https://github.com/PerryLink/dsh-dsh-translate)** | DeepSeek Harness के लिए वेंडर पैरामीटर अनुवाद और नियतात्मक JSON मरम्मत। | |
231
249
 
232
250
  ## लाइसेंस
233
251
 
package/README.md CHANGED
@@ -7,12 +7,15 @@
7
7
 
8
8
  *Create, review, merge, and search GitHub from the agent, with a CI composite action, polling review bot, and status-check gate.*
9
9
 
10
+ > **Official repository.** This is the only official repository of dsh-github, maintained by PerryLink. Same-name repositories under other accounts are not affiliated.
11
+
10
12
  [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
11
13
  [![DSH plugin](https://img.shields.io/badge/dsh-plugin-✅-green)](https://github.com/topics/dsh-plugin)
12
14
  [![Node](https://img.shields.io/badge/node-%5E22.19%20%7C%7C%20%3E%3D24-brightgreen.svg)](#)
13
15
  [![CI](https://img.shields.io/github/actions/workflow/status/PerryLink/dsh-github/ci.yml?branch=main&label=CI)](https://github.com/PerryLink/dsh-github/actions)
14
16
  [![Version](https://img.shields.io/github/v/tag/PerryLink/dsh-github?label=version)](https://github.com/PerryLink/dsh-github/releases)
15
17
  [![npm version](https://img.shields.io/npm/v/%40perrylink%2Fdsh-github)](https://www.npmjs.com/package/@perrylink/dsh-github)
18
+ - **1024 store channel**: `npm i -g dsh1024` once, then `dsh1024 plugin --profile web add @perrylink/dsh-github` (counts toward the [deepseek1024.com](https://deepseek1024.com) install ranking).
16
19
  [![npm downloads](https://img.shields.io/npm/dm/%40perrylink%2Fdsh-github)](https://www.npmjs.com/package/@perrylink/dsh-github)
17
20
 
18
21
  [English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
@@ -210,25 +213,42 @@ scripts/prepare.mjs self-contained git-install build
210
213
 
211
214
  ## PerryLink DSH Plugin Family
212
215
 
213
- This project is one of the [15 DeepSeek Harness plugins](https://github.com/PerryLink) maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
216
+ This project is one of the [33 DeepSeek Harness plugins](https://github.com/PerryLink) maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
214
217
 
215
218
  | Plugin | One-liner |
216
219
  |---|---|
217
- | [dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel) | Read-only MCP runtime panel: /mcp command + Settings tab with status, tools and errors |
218
- | [dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck) | Engineering-discipline guard: requirements grill, test gates, adversary review |
219
- | [dsh-background-agents](https://github.com/PerryLink/dsh-background-agents) | Durable background child agents with a Web UI sidebar, messaging and interrupt |
220
- | [dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions) | LSP diagnostics, formatting, completion, code actions and rename over language servers |
221
- | [dsh-output-styles](https://github.com/PerryLink/dsh-output-styles) | Claude Code outputStyles-equivalent runtime style switching |
222
- | [dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind) | Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore |
223
- | [dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules) | Claude Code-style declarative allow/deny/ask permission rules with audit |
224
- | [dsh-auto-review](https://github.com/PerryLink/dsh-auto-review) | Second-model auto-review on the approval chain, fail-closed by default |
225
- | [dsh-memento](https://github.com/PerryLink/dsh-memento) | Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool |
226
- | [dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security) | Security-audit skill pack: secret scan, dependency and supply-chain review |
227
- | [dsh-session-pin](https://github.com/PerryLink/dsh-session-pin) | Pin sessions in the Web sidebar with durable ordering |
228
- | [dsh-composer-history](https://github.com/PerryLink/dsh-composer-history) | Terminal-style input history for the web composer: arrows, Ctrl+R search |
229
- | **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/issues integration for DSH, every write gated by approval |
230
- | [dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide) | Plugin-development knowledge base as an on-demand agent skill |
231
- | [dsh-claude-move](https://github.com/PerryLink/dsh-claude-move) | Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH |
220
+ | **[dsh-dsh-auto-review](https://github.com/PerryLink/dsh-dsh-auto-review)** | Second-model auto-review on the approval chain, fail-closed by default | |
221
+ | **[dsh-dsh-background-agents](https://github.com/PerryLink/dsh-dsh-background-agents)** | Durable background child agents with a Web UI sidebar, messaging and interrupt | |
222
+ | **[dsh-dsh-budget](https://github.com/PerryLink/dsh-dsh-budget)** | Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel. | |
223
+ | **[dsh-dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-dsh-checkpoint-rewind)** | Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore | |
224
+ | **[dsh-dsh-claude-move](https://github.com/PerryLink/dsh-dsh-claude-move)** | Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH | |
225
+ | **[dsh-dsh-click](https://github.com/PerryLink/dsh-dsh-click)** | Cross-platform native desktop control for DeepSeek Harness — Windows first. | |
226
+ | **[dsh-dsh-composer-history](https://github.com/PerryLink/dsh-dsh-composer-history)** | Terminal-style input history for the web composer: arrows, Ctrl+R search | |
227
+ | **[dsh-dsh-data-quality](https://github.com/PerryLink/dsh-dsh-data-quality)** | Dataset quality checks and citation cross-checks (the optional numeric bridge consumed here) | |
228
+ | **[dsh-dsh-defend](https://github.com/PerryLink/dsh-dsh-defend)** | Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness. | |
229
+ | **[dsh-dsh-doublecheck](https://github.com/PerryLink/dsh-dsh-doublecheck)** | Engineering-discipline guard: requirements grill, test gates, adversary review | |
230
+ | **[dsh-dsh-draw](https://github.com/PerryLink/dsh-dsh-draw)** | Unified static-image generation routing for DeepSeek Harness. | |
231
+ | **[dsh-dsh-fast](https://github.com/PerryLink/dsh-dsh-fast)** | Read-only performance diagnostics for DeepSeek Harness. | |
232
+ | **[dsh-dsh-fund-research](https://github.com/PerryLink/dsh-dsh-fund-research)** | Deterministic research reports for Chinese public mutual funds | |
233
+ | **[dsh-dsh-industry-research](https://github.com/PerryLink/dsh-dsh-industry-research)** | Industry research orchestration that seals its deliverables through this plugin's `ctx.researchReport.assemble` | |
234
+ | **[dsh-dsh-library](https://github.com/PerryLink/dsh-dsh-library)** | Local document knowledge base for DeepSeek Harness. | |
235
+ | **[dsh-dsh-local-ai](https://github.com/PerryLink/dsh-dsh-local-ai)** | Local-model (Ollama) integration for DeepSeek Harness. | |
236
+ | **[dsh-dsh-lsp-actions](https://github.com/PerryLink/dsh-dsh-lsp-actions)** | LSP diagnostics, formatting, completion, code actions and rename over language servers | |
237
+ | **[dsh-dsh-mask](https://github.com/PerryLink/dsh-dsh-mask)** | PII masking middleware: anonymize at the model boundary, restore at the display layer | |
238
+ | **[dsh-dsh-mcp-panel](https://github.com/PerryLink/dsh-dsh-mcp-panel)** | Read-only MCP runtime panel: /mcp command + Settings tab with status, tools and errors | |
239
+ | **[dsh-dsh-memento](https://github.com/PerryLink/dsh-dsh-memento)** | Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool | |
240
+ | **[dsh-dsh-observe](https://github.com/PerryLink/dsh-dsh-observe)** | OpenTelemetry and Langfuse observability exporter for DeepSeek Harness. | |
241
+ | **[dsh-dsh-output-styles](https://github.com/PerryLink/dsh-dsh-output-styles)** | Claude Code outputStyles-equivalent runtime style switching | |
242
+ | **[dsh-dsh-permission-rules](https://github.com/PerryLink/dsh-dsh-permission-rules)** | Claude Code-style declarative allow/deny/ask permission rules with audit | |
243
+ | **[dsh-dsh-plugin-guide](https://github.com/PerryLink/dsh-dsh-plugin-guide)** | Plugin-development knowledge base as an on-demand agent skill | |
244
+ | **[dsh-dsh-research-report](https://github.com/PerryLink/dsh-dsh-research-report)** | Verifiable research-report engine: content-addressed evidence ledger and sealed versions | |
245
+ | **[dsh-dsh-score](https://github.com/PerryLink/dsh-dsh-score)** | Multi-dimensional quality scoring for DeepSeek Harness plugins. | |
246
+ | **[dsh-dsh-session-pin](https://github.com/PerryLink/dsh-dsh-session-pin)** | Pin sessions in the Web sidebar with durable ordering | |
247
+ | **[dsh-dsh-session-sync](https://github.com/PerryLink/dsh-dsh-session-sync)** | Cross-device session sync for DeepSeek Harness — a dedicated git mirror of your session store. | |
248
+ | **[dsh-dsh-skill-pack-security](https://github.com/PerryLink/dsh-dsh-skill-pack-security)** | Security-audit skill pack: secret scan, dependency and supply-chain review | |
249
+ | **[dsh-dsh-talk](https://github.com/PerryLink/dsh-dsh-talk)** | Voice-first session loop for DeepSeek Harness: talk to it, hear it answer. | |
250
+ | **[dsh-dsh-test-drive](https://github.com/PerryLink/dsh-dsh-test-drive)** | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | |
251
+ | **[dsh-dsh-translate](https://github.com/PerryLink/dsh-dsh-translate)** | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | |
232
252
 
233
253
  ## License
234
254
 
package/README.pt.md CHANGED
@@ -12,6 +12,7 @@
12
12
  [![CI](https://img.shields.io/github/actions/workflow/status/PerryLink/dsh-github/ci.yml?branch=main&label=CI)](https://github.com/PerryLink/dsh-github/actions)
13
13
  [![Version](https://img.shields.io/github/v/tag/PerryLink/dsh-github?label=version)](https://github.com/PerryLink/dsh-github/releases)
14
14
  [![npm version](https://img.shields.io/npm/v/%40perrylink%2Fdsh-github)](https://www.npmjs.com/package/@perrylink/dsh-github)
15
+ - **Canal 1024 store**: `npm i -g dsh1024` uma vez, depois `dsh1024 plugin --profile web add @perrylink/dsh-github` (conta para o ranking de instalações do [deepseek1024.com](https://deepseek1024.com)).
15
16
  [![npm downloads](https://img.shields.io/npm/dm/%40perrylink%2Fdsh-github)](https://www.npmjs.com/package/@perrylink/dsh-github)
16
17
 
17
18
  [English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
@@ -209,25 +210,42 @@ scripts/prepare.mjs self-contained git-install build
209
210
 
210
211
  ## Família de plugins DSH da PerryLink
211
212
 
212
- Este projeto é um dos [15 plugins do DeepSeek Harness](https://github.com/PerryLink) mantidos por [PerryLink](https://github.com/PerryLink). Se este lhe ajuda, os outros provavelmente também ajudarão:
213
+ Este projeto é um dos [33 plugins de DeepSeek Harness](https://github.com/PerryLink) mantidos por [PerryLink](https://github.com/PerryLink). Se este ajuda você, os outros provavelmente também:
213
214
 
214
- | Plugin | Descrição |
215
+ | Plugin | One-liner |
215
216
  |---|---|
216
- | [dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel) | Painel MCP de somente leitura em tempo de execução: comando /mcp + aba de ajustes com status, ferramentas e erros |
217
- | [dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck) | Guardião de disciplina de engenharia: interrogatório de requisitos, portões de testes, revisão adversária |
218
- | [dsh-background-agents](https://github.com/PerryLink/dsh-background-agents) | Agentes filhos em segundo plano duráveis com barra lateral web, mensagens e interrupção |
219
- | [dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions) | Diagnósticos, formatação, conclusão, ações de código e renomeação LSP sobre servidores de linguagem |
220
- | [dsh-output-styles](https://github.com/PerryLink/dsh-output-styles) | Troca de estilo em tempo de execução equivalente ao outputStyles do Claude Code |
221
- | [dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind) | Equivalente ao /rewind do Claude Code: instantâneos, bifurcações de sessão, restauração de uso único |
222
- | [dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules) | Regras de permissão declarativas allow/deny/ask estilo Claude Code com auditoria |
223
- | [dsh-auto-review](https://github.com/PerryLink/dsh-auto-review) | Auto-revisão por segundo modelo na cadeia de aprovação, falha fechada por padrão |
224
- | [dsh-memento](https://github.com/PerryLink/dsh-memento) | Memória entre sessões com aprovação: seam ctx.memory + SQLite + ferramenta de memória |
225
- | [dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security) | Pacote de habilidades de auditoria de segurança: varredura de segredos, revisão de dependências e cadeia de suprimentos |
226
- | [dsh-session-pin](https://github.com/PerryLink/dsh-session-pin) | Fixa sessões na barra lateral web com ordenação durável |
227
- | [dsh-composer-history](https://github.com/PerryLink/dsh-composer-history) | Histórico de entrada estilo terminal para o compositor web: setas, busca Ctrl+R |
228
- | **[dsh-github](https://github.com/PerryLink/dsh-github)** | Integração de PR/issues do GitHub para DSH, toda gravação com aprovação |
229
- | [dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide) | Base de conhecimento de desenvolvimento de plugins como habilidade de agente sob demanda |
230
- | [dsh-claude-move](https://github.com/PerryLink/dsh-claude-move) | Migra sessões, memória, habilidades e CLAUDE.md do Claude Code para o DSH |
217
+ | **[dsh-dsh-auto-review](https://github.com/PerryLink/dsh-dsh-auto-review)** | Auto-revisão de segundo modelo na cadeia de aprovação, com falha fechada por padrão | |
218
+ | **[dsh-dsh-background-agents](https://github.com/PerryLink/dsh-dsh-background-agents)** | Agentes filhos em segundo plano duráveis com barra lateral de UI web, mensagens e interrupção | |
219
+ | **[dsh-dsh-budget](https://github.com/PerryLink/dsh-dsh-budget)** | Governança de custos para DeepSeek Harness: orçamentos, carbono e latência em um painel. | |
220
+ | **[dsh-dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-dsh-checkpoint-rewind)** | Equivalente ao /rewind do Claude Code: instantâneos, bifurcações de sessão, restauração de uso único | |
221
+ | **[dsh-dsh-claude-move](https://github.com/PerryLink/dsh-dsh-claude-move)** | Migre sessões, memória, habilidades e CLAUDE.md do Claude Code para o DSH | |
222
+ | **[dsh-dsh-click](https://github.com/PerryLink/dsh-dsh-click)** | Controle de desktop nativo multiplataforma para DeepSeek Harness — Windows primeiro. | |
223
+ | **[dsh-dsh-composer-history](https://github.com/PerryLink/dsh-dsh-composer-history)** | Histórico de entrada estilo terminal para o compositor web: setas, busca Ctrl+R | |
224
+ | **[dsh-dsh-data-quality](https://github.com/PerryLink/dsh-dsh-data-quality)** | Verificações de qualidade de datasets e verificação de citações (a ponte numérica opcional consumida aqui) | |
225
+ | **[dsh-dsh-defend](https://github.com/PerryLink/dsh-dsh-defend)** | Defesa contra injeção de prompt, jailbreak e vazamento de segredos para DeepSeek Harness. | |
226
+ | **[dsh-dsh-doublecheck](https://github.com/PerryLink/dsh-dsh-doublecheck)** | Guardião de disciplina de engenharia: sabatina de requisitos, portões de teste, revisão adversária | |
227
+ | **[dsh-dsh-draw](https://github.com/PerryLink/dsh-dsh-draw)** | Roteamento unificado de geração de imagens estáticas para DeepSeek Harness. | |
228
+ | **[dsh-dsh-fast](https://github.com/PerryLink/dsh-dsh-fast)** | Diagnóstico de desempenho só de leitura para DeepSeek Harness. | |
229
+ | **[dsh-dsh-fund-research](https://github.com/PerryLink/dsh-dsh-fund-research)** | Relatórios de pesquisa deterministas para fundos mútuos públicos chineses | |
230
+ | **[dsh-dsh-industry-research](https://github.com/PerryLink/dsh-dsh-industry-research)** | Orquestração de pesquisa setorial que sela as suas entregas através do `ctx.researchReport.assemble` deste plugin | |
231
+ | **[dsh-dsh-library](https://github.com/PerryLink/dsh-dsh-library)** | Base de conhecimento documental local para DeepSeek Harness. | |
232
+ | **[dsh-dsh-local-ai](https://github.com/PerryLink/dsh-dsh-local-ai)** | Integração de modelos locais (Ollama) para DeepSeek Harness. | |
233
+ | **[dsh-dsh-lsp-actions](https://github.com/PerryLink/dsh-dsh-lsp-actions)** | Diagnósticos, formatação, autocompletar, ações de código e renomeação LSP sobre servidores de linguagem | |
234
+ | **[dsh-dsh-mask](https://github.com/PerryLink/dsh-dsh-mask)** | Middleware de mascaramento de PII: anonimiza no limite do modelo, restaura na camada de exibição | |
235
+ | **[dsh-dsh-mcp-panel](https://github.com/PerryLink/dsh-dsh-mcp-panel)** | Painel de tempo de execução MCP somente leitura: comando /mcp + aba Settings com status, ferramentas e erros | |
236
+ | **[dsh-dsh-memento](https://github.com/PerryLink/dsh-dsh-memento)** | Memória entre sessões controlada por aprovação: costura ctx.memory + SQLite + ferramenta de memória | |
237
+ | **[dsh-dsh-observe](https://github.com/PerryLink/dsh-dsh-observe)** | Exportador de observabilidade OpenTelemetry e Langfuse para DeepSeek Harness. | |
238
+ | **[dsh-dsh-output-styles](https://github.com/PerryLink/dsh-dsh-output-styles)** | Troca de estilo em tempo de execução equivalente ao outputStyles do Claude Code | |
239
+ | **[dsh-dsh-permission-rules](https://github.com/PerryLink/dsh-dsh-permission-rules)** | Regras de permissão declarativas allow/deny/ask estilo Claude Code com auditoria | |
240
+ | **[dsh-dsh-plugin-guide](https://github.com/PerryLink/dsh-dsh-plugin-guide)** | Base de conhecimento de desenvolvimento de plugins como habilidade de agente sob demanda | |
241
+ | **[dsh-dsh-research-report](https://github.com/PerryLink/dsh-dsh-research-report)** | Motor de relatórios de pesquisa verificáveis com evidência endereçada por conteúdo | |
242
+ | **[dsh-dsh-score](https://github.com/PerryLink/dsh-dsh-score)** | Pontuação de qualidade multidimensional para plugins de DeepSeek Harness. | |
243
+ | **[dsh-dsh-session-pin](https://github.com/PerryLink/dsh-dsh-session-pin)** | Fixe sessões na barra lateral web com ordenação durável | |
244
+ | **[dsh-dsh-session-sync](https://github.com/PerryLink/dsh-dsh-session-sync)** | Sincronização de sessões entre dispositivos para DeepSeek Harness — um espelho git dedicado do seu armazenamento de sessões. | |
245
+ | **[dsh-dsh-skill-pack-security](https://github.com/PerryLink/dsh-dsh-skill-pack-security)** | Pacote de habilidades de auditoria de segurança: varredura de segredos, revisão de dependências e cadeia de suprimentos | |
246
+ | **[dsh-dsh-talk](https://github.com/PerryLink/dsh-dsh-talk)** | Loop de sessão com voz para DeepSeek Harness: fale e ouça a resposta. | |
247
+ | **[dsh-dsh-test-drive](https://github.com/PerryLink/dsh-dsh-test-drive)** | Test drives isolados de instalação e smoke para plugins de DeepSeek Harness. | |
248
+ | **[dsh-dsh-translate](https://github.com/PerryLink/dsh-dsh-translate)** | Tradução de parâmetros entre fornecedores e reparo determinístico de JSON para DeepSeek Harness. | |
231
249
 
232
250
  ## Licença
233
251
 
package/README.zh.md CHANGED
@@ -6,12 +6,15 @@
6
6
 
7
7
  *在 agent 中创建、审查、合并与搜索 GitHub,附带 CI 复合动作、轮询式审查机器人与状态检查门禁。*
8
8
 
9
+ > **官方仓库。** 本仓库是 dsh-github 的唯一官方仓库,由 PerryLink 维护。其他账号下的同名仓库与本项目无关。
10
+
9
11
  [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
10
12
  [![DSH plugin](https://img.shields.io/badge/dsh-plugin-✅-green)](https://github.com/topics/dsh-plugin)
11
13
  [![Node](https://img.shields.io/badge/node-%5E22.19%20%7C%7C%20%3E%3D24-brightgreen.svg)](#)
12
14
  [![CI](https://img.shields.io/github/actions/workflow/status/PerryLink/dsh-github/ci.yml?branch=main&label=CI)](https://github.com/PerryLink/dsh-github/actions)
13
15
  [![Version](https://img.shields.io/github/v/tag/PerryLink/dsh-github?label=version)](https://github.com/PerryLink/dsh-github/releases)
14
16
  [![npm version](https://img.shields.io/npm/v/%40perrylink%2Fdsh-github)](https://www.npmjs.com/package/@perrylink/dsh-github)
17
+ - **1024 商店渠道**:先 `npm i -g dsh1024`,再 `dsh1024 plugin --profile web add @perrylink/dsh-github`(计入 [deepseek1024.com](https://deepseek1024.com) 安装排行)。
15
18
  [![npm downloads](https://img.shields.io/npm/dm/%40perrylink%2Fdsh-github)](https://www.npmjs.com/package/@perrylink/dsh-github)
16
19
 
17
20
  [English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
@@ -209,25 +212,42 @@ scripts/prepare.mjs self-contained git-install build
209
212
 
210
213
  ## PerryLink DSH 插件家族
211
214
 
212
- 本项目是 [PerryLink](https://github.com/PerryLink) 维护的 [15 个 DeepSeek Harness 插件](https://github.com/PerryLink)之一。如果你觉得这个插件有用,其余的很可能同样有用:
215
+ 这是 [PerryLink](https://github.com/PerryLink) 维护的 [33 个 DeepSeek Harness 插件](https://github.com/PerryLink) 之一。如果它能帮到你,其他的也会:
213
216
 
214
- | 插件 | 一句话说明 |
217
+ | Plugin | One-liner |
215
218
  |---|---|
216
- | [dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel) | 只读 MCP 运行时面板:/mcp 命令 + 设置页,状态/工具/错误一览 |
217
- | [dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck) | 工程纪律守门:需求审讯、测试证据门、对抗评审 |
218
- | [dsh-background-agents](https://github.com/PerryLink/dsh-background-agents) | 持久化后台子代理:Web 侧边栏进度、随时留言与打断 |
219
- | [dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions) | 基于语言服务器的诊断/格式化/补全/代码动作/重命名 |
220
- | [dsh-output-styles](https://github.com/PerryLink/dsh-output-styles) | 对标 Claude Code outputStyles 的运行时风格切换 |
221
- | [dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind) | 对标 Claude Code /rewind:快照、会话 fork、一键回退 |
222
- | [dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules) | Claude Code 风格声明式 allow/deny/ask 权限规则,带审计 |
223
- | [dsh-auto-review](https://github.com/PerryLink/dsh-auto-review) | 审批链上的第二模型自动审查,默认 fail-closed |
224
- | [dsh-memento](https://github.com/PerryLink/dsh-memento) | 带审批门的跨会话记忆:ctx.memory + SQLite + memory 工具 |
225
- | [dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security) | 安全审计技能包:密钥扫描、依赖与供应链审查 |
226
- | [dsh-session-pin](https://github.com/PerryLink/dsh-session-pin) | 在 Web 侧边栏置顶会话,持久排序 |
227
- | [dsh-composer-history](https://github.com/PerryLink/dsh-composer-history) | Web 作曲器终端式输入历史:方向键、Ctrl+R 搜索 |
228
- | **[dsh-github](https://github.com/PerryLink/dsh-github)** | DSH 的 GitHub PR/issue 集成,所有写操作经审批门 |
229
- | [dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide) | 插件开发知识库,随 bundle 安装的按需 agent 技能 |
230
- | [dsh-claude-move](https://github.com/PerryLink/dsh-claude-move) | 把 Claude Code 会话、记忆、技能和 CLAUDE.md 迁入 DSH |
219
+ | **[dsh-dsh-auto-review](https://github.com/PerryLink/dsh-dsh-auto-review)** | 审批链上的第二模型自动审查,默认失败关闭 | |
220
+ | **[dsh-dsh-background-agents](https://github.com/PerryLink/dsh-dsh-background-agents)** | 带 Web UI 侧栏、消息与中断的持久后台子代理 | |
221
+ | **[dsh-dsh-budget](https://github.com/PerryLink/dsh-dsh-budget)** | DeepSeek Harness 的成本治理:预算、碳排与延迟一屏呈现。 | |
222
+ | **[dsh-dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-dsh-checkpoint-rewind)** | Claude Code /rewind 等价:快照、会话 fork、一次性恢复 | |
223
+ | **[dsh-dsh-claude-move](https://github.com/PerryLink/dsh-dsh-claude-move)** | 把 Claude Code 会话、记忆、技能与 CLAUDE.md 迁入 DSH | |
224
+ | **[dsh-dsh-click](https://github.com/PerryLink/dsh-dsh-click)** | 跨平台原生桌面控制(DeepSeek Harness),Windows 优先。 | |
225
+ | **[dsh-dsh-composer-history](https://github.com/PerryLink/dsh-dsh-composer-history)** | Web 输入框的终端式历史:方向键、Ctrl+R 搜索 | |
226
+ | **[dsh-dsh-data-quality](https://github.com/PerryLink/dsh-dsh-data-quality)** | 数据集质量检查与引文核查(本插件可选消费的数字核查桥) | |
227
+ | **[dsh-dsh-defend](https://github.com/PerryLink/dsh-dsh-defend)** | DeepSeek Harness 的提示注入、越狱与密钥泄露防护。 | |
228
+ | **[dsh-dsh-doublecheck](https://github.com/PerryLink/dsh-dsh-doublecheck)** | 工程纪律守卫:需求质询、测试门禁、对手评审 | |
229
+ | **[dsh-dsh-draw](https://github.com/PerryLink/dsh-dsh-draw)** | DeepSeek Harness 的统一静态图像生成路由。 | |
230
+ | **[dsh-dsh-fast](https://github.com/PerryLink/dsh-dsh-fast)** | DeepSeek Harness 只读性能诊断。 | |
231
+ | **[dsh-dsh-fund-research](https://github.com/PerryLink/dsh-dsh-fund-research)** | 面向中国公募基金的确定性研究报告 | |
232
+ | **[dsh-dsh-industry-research](https://github.com/PerryLink/dsh-dsh-industry-research)** | 行业研究编排,经本插件的 `ctx.researchReport.assemble` 封存交付物 | |
233
+ | **[dsh-dsh-library](https://github.com/PerryLink/dsh-dsh-library)** | DeepSeek Harness 的本地文档知识库。 | |
234
+ | **[dsh-dsh-local-ai](https://github.com/PerryLink/dsh-dsh-local-ai)** | DeepSeek Harness 的本地模型(Ollama)接入。 | |
235
+ | **[dsh-dsh-lsp-actions](https://github.com/PerryLink/dsh-dsh-lsp-actions)** | 通过语言服务器的 LSP 诊断、格式化、补全、代码操作与重命名 | |
236
+ | **[dsh-dsh-mask](https://github.com/PerryLink/dsh-dsh-mask)** | PII 脱敏中间件:模型边界匿名化、展示层还原 | |
237
+ | **[dsh-dsh-mcp-panel](https://github.com/PerryLink/dsh-dsh-mcp-panel)** | 只读 MCP 运行时面板:/mcp 命令 + 带状态、工具与错误的 Settings 标签页 | |
238
+ | **[dsh-dsh-memento](https://github.com/PerryLink/dsh-dsh-memento)** | 审批门控的跨会话记忆:ctx.memory 接缝 + SQLite + 记忆工具 | |
239
+ | **[dsh-dsh-observe](https://github.com/PerryLink/dsh-dsh-observe)** | DeepSeek Harness 的 OpenTelemetry 与 Langfuse 可观测导出器。 | |
240
+ | **[dsh-dsh-output-styles](https://github.com/PerryLink/dsh-dsh-output-styles)** | Claude Code outputStyles 等价的运行时风格切换 | |
241
+ | **[dsh-dsh-permission-rules](https://github.com/PerryLink/dsh-dsh-permission-rules)** | Claude Code 风格声明式 allow/deny/ask 权限规则,带审计 | |
242
+ | **[dsh-dsh-plugin-guide](https://github.com/PerryLink/dsh-dsh-plugin-guide)** | 作为按需代理技能的插件开发知识库 | |
243
+ | **[dsh-dsh-research-report](https://github.com/PerryLink/dsh-dsh-research-report)** | 可验证研究报告引擎:内容寻址证据账本与封存版本 | |
244
+ | **[dsh-dsh-score](https://github.com/PerryLink/dsh-dsh-score)** | DeepSeek Harness 插件的多维质量评分。 | |
245
+ | **[dsh-dsh-session-pin](https://github.com/PerryLink/dsh-dsh-session-pin)** | 在 Web 侧栏置顶会话,带持久排序 | |
246
+ | **[dsh-dsh-session-sync](https://github.com/PerryLink/dsh-dsh-session-sync)** | DeepSeek Harness 的跨设备会话同步——会话存储的专用 git 镜像。 | |
247
+ | **[dsh-dsh-skill-pack-security](https://github.com/PerryLink/dsh-dsh-skill-pack-security)** | 安全审计技能包:密钥扫描、依赖与供应链审查 | |
248
+ | **[dsh-dsh-talk](https://github.com/PerryLink/dsh-dsh-talk)** | DeepSeek Harness 的语音优先会话闭环:对它说,听它答。 | |
249
+ | **[dsh-dsh-test-drive](https://github.com/PerryLink/dsh-dsh-test-drive)** | DeepSeek Harness 插件的隔离试装冒烟。 | |
250
+ | **[dsh-dsh-translate](https://github.com/PerryLink/dsh-dsh-translate)** | DeepSeek Harness 的厂商参数翻译与确定性 JSON 修复。 | |
231
251
 
232
252
  ## 许可证
233
253
 
package/lib/client.js CHANGED
@@ -1,22 +1,3 @@
1
- /**
2
- * dsh-github browser half — one card in the "Plugins" settings section.
3
- *
4
- * The card edits the `dsh-github` settings namespace and lets the user fill
5
- * the GitHub token directly from the settings page. The token literal never
6
- * rides the settings document: it is written through the credentials domain,
7
- * addressed by the reference the namespace names (`tokenRef`, default
8
- * `GITHUB_TOKEN`), which is exactly where the host half resolves it — per
9
- * operation, no restart needed.
10
- *
11
- * The card is collapsible and mirrors the host's `PluginCard` chrome one for
12
- * one (same design tokens, same layout), the way the market card does: the
13
- * plugins tab only lays out a flex column and dispatches
14
- * `settings.plugin.item`, so the container is ours to draw, but drawing it
15
- * with the same tokens is what keeps it from looking like it wandered in from
16
- * another product. Buttons and the chevron come from the shared primitives.
17
- *
18
- * This file is a self-contained bundle executed by the browser module loader.
19
- */
20
1
  window.__ModuleLoader__.load({
21
2
  id: "@perrylink/dsh-github",
22
3
  factory: (require) => {
@@ -25,52 +6,56 @@ window.__ModuleLoader__.load({
25
6
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
26
7
  let react = require("react");
27
8
  let _deepseek_ai_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
28
- let _deepseek_ai_dsh_client_runtime_client = require("@deepseek-ai/dsh-client-runtime/client");
29
-
30
- // ── styles (mirrors the host PluginCard / market card tokens) ────────────
31
-
32
- const css = [
33
- "/* @perrylink/dsh-github: token configuration card */",
34
- ".ghc-card{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);background:var(--dsw-alias-bg-layer-3,#fff);border-radius:12px;list-style:none;transition:border-color .16s,background .16s}",
35
- ".ghc-card:hover{border-color:var(--dsw-alias-label-dimmed,#c8ccd4)}",
36
- ".ghc-cardOpen{background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-color:var(--dsw-alias-label-dimmed,#c8ccd4)}",
37
- ".ghc-header{-webkit-appearance:none;appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:center;gap:12px;padding:14px 16px;display:flex}",
38
- ".ghc-header:focus-visible{outline:2px solid var(--dsw-alias-brand-primary,#4f6ef7);outline-offset:-2px}",
39
- ".ghc-headText{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}",
40
- ".ghc-name{color:var(--dsw-alias-label-primary,#1f2328);font-size:15px;font-weight:600;line-height:1.4}",
41
- ".ghc-description{color:var(--dsw-alias-label-tertiary,#8b93a1);font-size:13px;line-height:1.5}",
42
- ".ghc-chevron{color:var(--dsw-alias-label-tertiary,#8b93a1);flex:none;transition:transform .16s;display:inline-flex}",
43
- ".ghc-chevronOpen{transform:rotate(180deg)}",
44
- ".ghc-pending{white-space:nowrap;background:var(--dsw-alias-bg-module-platform,#eef0f4);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:999px;flex:none;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px}",
45
- ".ghc-body{border-top:1px solid var(--dsw-alias-border-l2,#e5e7eb);margin:0 16px;padding-bottom:8px}",
46
- ".ghc-readOnly{color:var(--dsw-alias-label-tertiary,#8b93a1);margin:12px 0 0;font-size:12px;line-height:1.5}",
47
- ".ghc-field{flex-direction:column;gap:6px;padding:12px 0;display:flex}",
48
- ".ghc-head{align-items:center;gap:8px;display:flex}",
49
- ".ghc-label{min-width:0;color:var(--dsw-alias-label-primary,#1f2328);flex:1;font-size:13px;font-weight:500;line-height:1.5}",
50
- ".ghc-badges{align-items:center;gap:8px;display:inline-flex}",
51
- ".ghc-badge{white-space:nowrap;background:var(--dsw-alias-bg-module-platform,#eef0f4);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:999px;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px}",
52
- ".ghc-badgeMuted{white-space:nowrap;color:var(--dsw-alias-label-tertiary,#8b93a1);border-radius:999px;padding:1px 8px;font-size:11px;line-height:17px}",
53
- ".ghc-input{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);background:var(--dsw-alias-bg-layer-3,#fff);height:34px;font:inherit;color:var(--dsw-alias-label-primary,#1f2328);border-radius:8px;padding:0 12px;font-size:13px;line-height:1.5}",
54
- ".ghc-input:focus-visible{border-color:var(--dsw-alias-brand-primary,#4f6ef7);outline:none}",
55
- ".ghc-input:disabled{color:var(--dsw-alias-label-tertiary,#8b93a1);cursor:default}",
56
- ".ghc-hint{color:var(--dsw-alias-label-tertiary,#8b93a1);margin:0;font-size:12px;line-height:1.5}",
57
- ".ghc-actions{border-top:1px solid var(--dsw-alias-border-l2,#e5e7eb);justify-content:flex-end;align-items:center;gap:8px;padding:12px 0 4px;display:flex}",
58
- ".ghc-failed{min-width:0;color:var(--dsw-alias-label-error,#dc2626);flex:1;margin:0;font-size:12px;line-height:1.5}",
59
- ".ghc-spin{display:inline-flex;animation:ghc-spin .8s linear infinite}",
60
- "@keyframes ghc-spin{to{transform:rotate(360deg)}}",
61
- ].join("");
62
- const tagId = "@perrylink/dsh-github/github-card.css";
63
- if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
64
- const tag = document.createElement("style");
65
- tag.dataset.plugin = "@perrylink/dsh-github";
66
- tag.dataset.pluginCss = tagId;
67
- tag.textContent = css;
68
- document.head.appendChild(tag);
9
+ //#region D:/deepseek-harness/Project/Plugins/dsh-github/src/client.ts
10
+ /**
11
+ * dsh-github browser half — one card in the "Plugins" settings section.
12
+ *
13
+ * The card edits the `dsh-github` settings namespace and lets the user fill
14
+ * the GitHub token directly from the settings page. The token literal never
15
+ * rides the settings document: it is written through the credentials domain,
16
+ * addressed by the reference the namespace names (`tokenRef`, default
17
+ * `GITHUB_TOKEN`), which is exactly where the host half resolves it — per
18
+ * operation, no restart needed.
19
+ *
20
+ * The card is collapsible and mirrors the host's `PluginCard` chrome one for
21
+ * one (same design tokens, same layout), the way the market card does: the
22
+ * plugins tab only lays out a flex column and dispatches
23
+ * `settings.plugin.item`, so the container is ours to draw, but drawing it
24
+ * with the same tokens is what keeps it from looking like it wandered in from
25
+ * another product. Buttons and the chevron come from the shared primitives.
26
+ *
27
+ * The shipped `lib/client.js` is the __ModuleLoader__ bundle built from this
28
+ * module (plain ESM here; the bundle wraps it in the loader factory). The
29
+ * browser module loader executes that bundle, not this file.
30
+ * @module @perrylink/dsh-github/client
31
+ */
32
+ /**
33
+ * Create the minimal card store.
34
+ * @param init - initial state.
35
+ * @returns the store.
36
+ */
37
+ function createSnapshotStore(init) {
38
+ let state = init;
39
+ const listeners = /* @__PURE__ */ new Set();
40
+ return {
41
+ getSnapshot: () => state,
42
+ subscribe: (listener) => {
43
+ listeners.add(listener);
44
+ return () => {
45
+ listeners.delete(listener);
46
+ };
47
+ },
48
+ set: (next) => {
49
+ state = next;
50
+ for (const listener of [...listeners]) listener();
51
+ }
52
+ };
69
53
  }
70
-
71
- // ── locale ───────────────────────────────────────────────────────────────
72
-
73
- /** English copy for the card. */
54
+ /** Namespace of the GitHub capability. Spelled here rather than imported: a client package must not depend on a Host package. */
55
+ const GITHUB_NS = "dsh-github";
56
+ /** Credential reference the provider resolves when the section names none. */
57
+ const DEFAULT_TOKEN_REF = "GITHUB_TOKEN";
58
+ /** English copy. */
74
59
  const en = {
75
60
  githubTitle: "GitHub",
76
61
  githubDescription: "GitHub pull requests, issues, and CI through the agent.",
@@ -83,7 +68,7 @@ window.__ModuleLoader__.load({
83
68
  save: "Save",
84
69
  saving: "Saving…",
85
70
  discard: "Discard",
86
- saveFailed: "The deployment did not accept this value; it was left for you to correct.",
71
+ saveFailed: "The deployment did not accept this value; it was left for you to correct."
87
72
  };
88
73
  /** Simplified Chinese copy. */
89
74
  const zh = {
@@ -98,37 +83,30 @@ window.__ModuleLoader__.load({
98
83
  save: "保存",
99
84
  saving: "保存中…",
100
85
  discard: "放弃修改",
101
- saveFailed: "本部署没有接受该值,已保留供你修改。",
86
+ saveFailed: "本部署没有接受该值,已保留供你修改。"
102
87
  };
103
-
104
- // ── controller ───────────────────────────────────────────────────────────
105
-
106
88
  /**
107
- * Namespace of the GitHub capability. Spelled here rather than imported:
108
- * a client package must not depend on a Host package.
109
- */
110
- const GITHUB_NS = "dsh-github";
111
- /** Credential reference the provider resolves when the section names none. */
112
- const DEFAULT_TOKEN_REF = "GITHUB_TOKEN";
113
-
114
- /**
115
- * Bridges the `dsh-github` scope and the credentials domain onto the
116
- * card. The token is the one control that does not live in the section:
117
- * its literal never rides a response, so the card learns only whether
118
- * one is configured and writes it through the credentials domain,
119
- * addressed by the reference the section names.
120
- */
89
+ * Bridges the `dsh-github` scope and the credentials domain onto the card.
90
+ * The token is the one control that does not live in the section: its literal
91
+ * never rides a response, so the card learns only whether one is configured
92
+ * and writes it through the credentials domain, addressed by the reference the
93
+ * section names.
94
+ */
121
95
  var GithubCardController = class {
122
96
  scope;
123
97
  api;
124
98
  store;
125
99
  saving = false;
126
100
  failed = false;
127
- credential = { ref: "", configured: false, writable: true };
101
+ credential = {
102
+ ref: "",
103
+ configured: false,
104
+ writable: true
105
+ };
128
106
  constructor(scope, api) {
129
107
  this.scope = scope;
130
108
  this.api = api;
131
- this.store = (0, _deepseek_ai_dsh_client_runtime_client.createSnapshotStore)(this.projection());
109
+ this.store = createSnapshotStore(this.projection());
132
110
  scope.subscribe(() => {
133
111
  this.readCredential();
134
112
  this.publish();
@@ -145,56 +123,62 @@ window.__ModuleLoader__.load({
145
123
  credentialWritable: this.credential.writable,
146
124
  saving: this.saving,
147
125
  failed: this.failed,
148
- ref: this.credential.ref,
126
+ ref: this.credential.ref
149
127
  };
150
128
  }
151
129
  /** The credential reference the section names, or the provider default. */
152
130
  refOf() {
153
- const snapshot = this.scope.getSnapshot();
154
- const declared = snapshot.value?.tokenRef;
131
+ const declared = this.scope.getSnapshot().value?.tokenRef;
155
132
  return declared !== void 0 && declared.length > 0 ? declared : DEFAULT_TOKEN_REF;
156
133
  }
157
134
  /**
158
- * Ask the credentials domain about the reference the section names.
159
- * A response is published only while it still answers for the
160
- * reference in force, so two reads settling out of order cannot
161
- * clobber each other.
162
- */
135
+ * Ask the credentials domain about the reference the section names. A
136
+ * response is published only while it still answers for the reference in
137
+ * force, so two reads settling out of order cannot clobber each other.
138
+ */
163
139
  async readCredential() {
164
140
  const ref = this.refOf();
165
141
  if (ref !== this.credential.ref) {
166
- this.credential = { ref, configured: false, writable: true };
142
+ this.credential = {
143
+ ref,
144
+ configured: false,
145
+ writable: true
146
+ };
167
147
  this.publish();
168
148
  }
169
149
  let response;
170
150
  try {
171
- response = await this.api.credentials.describe({ refs: [ref] });
172
- } catch (_credentialReadFailure) {
151
+ response = await this.api.describe({ refs: [ref] });
152
+ } catch {
173
153
  return;
174
154
  }
175
155
  if (!response.result.ok || ref !== this.refOf()) return;
176
156
  const view = response.result.value.credentials[ref];
177
- const next = { ref, configured: view?.configured ?? false, writable: view?.writable ?? true };
157
+ const next = {
158
+ ref,
159
+ configured: view?.configured ?? false,
160
+ writable: view?.writable ?? true
161
+ };
178
162
  if (next.configured === this.credential.configured && next.writable === this.credential.writable) return;
179
163
  this.credential = next;
180
164
  this.publish();
181
165
  }
182
166
  /**
183
- * Re-read after the Host reports a change to the reference this card
184
- * watches — a token can be written from elsewhere, and the section
185
- * does not change when it is.
186
- * @param ref - the reference the Host reports as changed.
187
- */
167
+ * Re-read after the Host reports a change to the reference this card
168
+ * watches — a token can be written from elsewhere, and the section does not
169
+ * change when it is.
170
+ * @param ref - the reference the Host reports as changed.
171
+ */
188
172
  refreshCredential(ref) {
189
173
  if (ref !== this.credential.ref) return;
190
174
  this.readCredential();
191
175
  }
192
176
  /**
193
- * Write the staged token, then re-read whether the Host now holds
194
- * one. A blank value writes nothing, which keeps the stored key.
195
- * @param value - the staged credential literal.
196
- * @returns whether the Host reports a configured credential afterwards.
197
- */
177
+ * Write the staged token, then re-read whether the Host now holds one. A
178
+ * blank value writes nothing, which keeps the stored key.
179
+ * @param value - the staged credential literal.
180
+ * @returns whether the Host reports a configured credential afterwards.
181
+ */
198
182
  async save(value) {
199
183
  const text = (value ?? "").trim();
200
184
  if (text === "" || this.saving) return false;
@@ -202,9 +186,11 @@ window.__ModuleLoader__.load({
202
186
  this.failed = false;
203
187
  this.publish();
204
188
  try {
205
- await this.api.credentials.set({ ref: this.refOf(), value: text });
206
- } catch (_credentialWriteFailure) {
207
- }
189
+ await this.api.set({
190
+ ref: this.refOf(),
191
+ value: text
192
+ });
193
+ } catch {}
208
194
  await this.readCredential();
209
195
  const landed = this.credential.configured;
210
196
  this.saving = false;
@@ -216,127 +202,107 @@ window.__ModuleLoader__.load({
216
202
  inject() {
217
203
  return {
218
204
  hooks: { githubCard: this.store },
219
- submit: (value) => this.save(value),
205
+ submit: (value) => this.save(value)
220
206
  };
221
207
  }
222
208
  publish() {
223
209
  this.store.set(this.projection());
224
210
  }
225
211
  };
226
-
227
- // ── card component ───────────────────────────────────────────────────────
228
-
212
+ /** One class name builder (static strings only — no bundler CSS modules here). */
213
+ const cx = (...parts) => parts.filter(Boolean).join(" ");
229
214
  /**
230
- * Render the GitHub card: a collapsible header naming the plugin, and —
231
- * once expanded — the token control and the save/discard row.
232
- * Renders nothing while the namespace is unavailable.
233
- */
215
+ * Render the GitHub card: a collapsible header naming the plugin, and — once
216
+ * expanded — the token control and the save/discard row. Renders nothing
217
+ * while the namespace is unavailable.
218
+ */
234
219
  function GithubCard(props) {
235
220
  const { t } = props;
236
221
  const state = props.useGithubCard((snapshot) => snapshot);
237
- const [open, setOpen] = react.useState(false);
238
- const [draft, setDraft] = react.useState("");
222
+ const [open, setOpen] = (0, react.useState)(false);
223
+ const [draft, setDraft] = (0, react.useState)("");
239
224
  if (!state.available) return null;
240
225
  const title = t("githubTitle");
241
226
  const dirty = draft.trim() !== "";
242
227
  const saveLabel = state.saving ? t("saving") : t("save");
243
- return react.createElement("li", {
244
- className: "ghc-card" + (open ? " ghc-cardOpen" : ""),
245
- },
246
- react.createElement("button", {
247
- type: "button",
248
- className: "ghc-header",
249
- "aria-expanded": open,
250
- "aria-label": (open ? "Collapse" : "Expand") + ": " + title,
251
- onClick: () => setOpen(!open),
252
- },
253
- react.createElement("span", { className: "ghc-headText" },
254
- react.createElement("span", { className: "ghc-name" }, title),
255
- react.createElement("span", { className: "ghc-description" }, t("githubDescription")),
256
- ),
257
- dirty ? react.createElement("span", { className: "ghc-pending" }, t("unsaved")) : null,
258
- react.createElement("span", { className: "ghc-chevron" + (open ? " ghc-chevronOpen" : "") },
259
- react.createElement(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutline14, { size: 14 }),
260
- ),
261
- ),
262
- open ? react.createElement("div", { className: "ghc-body" },
263
- !state.writable ? react.createElement("p", { className: "ghc-readOnly", role: "status" }, t("readOnly")) : null,
264
- react.createElement("div", { className: "ghc-field" },
265
- react.createElement("div", { className: "ghc-head" },
266
- react.createElement("label", { className: "ghc-label", htmlFor: "plugin-config-github-token" }, t("tokenLabel")),
267
- react.createElement("span", { className: "ghc-badges" },
268
- react.createElement("span", { className: state.configured ? "ghc-badge" : "ghc-badgeMuted" },
269
- state.configured ? t("tokenSet") : t("tokenUnset"),
270
- ),
271
- ),
272
- ),
273
- react.createElement("input", {
274
- id: "plugin-config-github-token",
275
- className: "ghc-input",
276
- type: "password",
277
- autoComplete: "off",
278
- value: draft,
279
- disabled: !state.credentialWritable,
280
- onChange: (event) => setDraft(event.target.value),
281
- }),
282
- react.createElement("p", { className: "ghc-hint" }, t("tokenHint")),
283
- ),
284
- react.createElement("div", { className: "ghc-actions" },
285
- state.failed ? react.createElement("p", { className: "ghc-failed", role: "status" }, t("saveFailed")) : null,
286
- react.createElement(_deepseek_ai_dsh_client_ui_primitives.Button, {
287
- variant: "ghost",
288
- size: "sm",
289
- disabled: !dirty || state.saving,
290
- onClick: () => setDraft(""),
291
- }, t("discard")),
292
- react.createElement(_deepseek_ai_dsh_client_ui_primitives.Button, {
293
- variant: "primary",
294
- size: "sm",
295
- disabled: !state.writable || !dirty || state.saving,
296
- icon: state.saving ? react.createElement("span", { className: "ghc-spin" },
297
- react.createElement(_deepseek_ai_dsh_client_ui_primitives.IconLoadingOutline16, { size: 16 }),
298
- ) : void 0,
299
- onClick: async () => {
300
- const landed = await props.submit(draft);
301
- if (landed) setDraft("");
302
- },
303
- }, saveLabel),
304
- ),
305
- ) : null,
306
- );
228
+ return (0, react.createElement)("li", { className: cx("ghc-card", open && "ghc-cardOpen") }, (0, react.createElement)("button", {
229
+ type: "button",
230
+ className: "ghc-header",
231
+ "aria-expanded": open,
232
+ "aria-label": `${open ? "Collapse" : "Expand"}: ${title}`,
233
+ onClick: () => setOpen(!open)
234
+ }, (0, react.createElement)("span", { className: "ghc-headText" }, (0, react.createElement)("span", { className: "ghc-name" }, title), (0, react.createElement)("span", { className: "ghc-description" }, t("githubDescription"))), dirty ? (0, react.createElement)("span", { className: "ghc-pending" }, t("unsaved")) : null, (0, react.createElement)("span", { className: cx("ghc-chevron", open && "ghc-chevronOpen") }, (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutline14, { size: 14 }))), open ? (0, react.createElement)("div", { className: "ghc-body" }, !state.writable ? (0, react.createElement)("p", {
235
+ className: "ghc-readOnly",
236
+ role: "status"
237
+ }, t("readOnly")) : null, (0, react.createElement)("div", { className: "ghc-field" }, (0, react.createElement)("div", { className: "ghc-head" }, (0, react.createElement)("label", {
238
+ className: "ghc-label",
239
+ htmlFor: "plugin-config-github-token"
240
+ }, t("tokenLabel")), (0, react.createElement)("span", { className: "ghc-badges" }, (0, react.createElement)("span", { className: state.configured ? "ghc-badge" : "ghc-badgeMuted" }, state.configured ? t("tokenSet") : t("tokenUnset")))), (0, react.createElement)("input", {
241
+ id: "plugin-config-github-token",
242
+ className: "ghc-input",
243
+ type: "password",
244
+ autoComplete: "off",
245
+ value: draft,
246
+ disabled: !state.credentialWritable,
247
+ onChange: (event) => setDraft(event.target.value)
248
+ }), (0, react.createElement)("p", { className: "ghc-hint" }, t("tokenHint"))), (0, react.createElement)("div", { className: "ghc-actions" }, state.failed ? (0, react.createElement)("p", {
249
+ className: "ghc-failed",
250
+ role: "status"
251
+ }, t("saveFailed")) : null, (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
252
+ variant: "ghost",
253
+ size: "sm",
254
+ disabled: !dirty || state.saving,
255
+ onClick: () => setDraft("")
256
+ }, t("discard")), (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
257
+ variant: "primary",
258
+ size: "sm",
259
+ disabled: !state.writable || !dirty || state.saving,
260
+ icon: state.saving ? (0, react.createElement)("span", { className: "ghc-spin" }, (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconLoadingOutline16, { size: 16 })) : void 0,
261
+ onClick: async () => {
262
+ if (await props.submit(draft)) setDraft("");
263
+ }
264
+ }, saveLabel))) : null);
307
265
  }
308
-
309
- // ── entry ────────────────────────────────────────────────────────────────
310
-
311
266
  /** Dictionary namespace owned by this plugin. */
312
267
  const NS = "dsh-github";
313
268
  /** Required services (cordis fiber inject). */
314
- const inject = ["slots", "locale", "connection", "remote", "settingsScope"];
315
-
316
- /**
317
- * Mount the GitHub configuration card into the plugins settings section.
318
- * @param ctx - the browser plugin context.
319
- */
269
+ const inject = [
270
+ "slots",
271
+ "locale",
272
+ "connection",
273
+ "remote",
274
+ "settingsScope"
275
+ ];
276
+ /** Mount the GitHub configuration card into the plugins settings section. */
320
277
  function apply(ctx) {
321
- const { api } = ctx.get("connection");
322
- const t = ctx.locale.bind(NS);
323
- ctx.effect(() => ctx.locale.register(NS, { zh, en }), "dsh-github: card dictionaries");
324
- const github = new GithubCardController(ctx.settingsScope.bind({ namespace: NS }), api);
325
- ctx.effect(() => ctx.remote.$on("credentials/reference-updated", (ref) => {
326
- github.refreshCredential(ref);
327
- }), "dsh-github: credential invalidations");
278
+ const connection = ctx.get("connection");
279
+ ctx.locale.bind(NS);
280
+ ctx.effect(() => ctx.locale.register(NS, {
281
+ zh,
282
+ en
283
+ }), "dsh-github: card dictionaries");
284
+ const github = new GithubCardController(ctx.settingsScope.bind({ namespace: NS }), connection.api);
285
+ ctx.effect(() => ctx.remote.$on("credentials/reference-updated", (ref) => github.refreshCredential(ref)), "dsh-github: credential invalidations");
328
286
  ctx.slots.inject("settings.plugin.item", function* () {
329
287
  yield ctx.slots.register({
330
288
  name: "settings.plugin.item",
331
289
  key: NS,
332
290
  locale: NS,
333
- inject: () => github.inject(),
291
+ inject: () => github.inject()
334
292
  }, GithubCard);
335
293
  });
336
294
  }
337
-
295
+ //#endregion
296
+ exports.DEFAULT_TOKEN_REF = DEFAULT_TOKEN_REF;
297
+ exports.GITHUB_NS = GITHUB_NS;
298
+ exports.GithubCard = GithubCard;
299
+ exports.GithubCardController = GithubCardController;
300
+ exports.NS = NS;
338
301
  exports.apply = apply;
302
+ exports.createSnapshotStore = createSnapshotStore;
303
+ exports.en = en;
339
304
  exports.inject = inject;
305
+ exports.zh = zh;
340
306
  return module.exports;
341
307
  }
342
308
  });
@@ -3,11 +3,11 @@
3
3
  * card contributed to the "Plugins" settings section.
4
4
  * @module @perrylink/dsh-github/client
5
5
  */
6
- import type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client';
6
+ import type { Context } from '@deepseek-ai/cordis';
7
7
  /** Required services (cordis fiber inject). */
8
8
  export declare const inject: string[];
9
9
  /**
10
10
  * Mount the GitHub configuration card into the plugins settings section.
11
11
  * @param ctx - the browser plugin context.
12
12
  */
13
- export declare function apply(ctx: ClientContext): void;
13
+ export declare function apply(ctx: Context): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perrylink/dsh-github",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "description": "Official-grade GitHub CI for DeepSeek Harness: composite action (review PRs / fix CI / report), polling PR review bot with idempotent inline comments, a status-check gate, and approval-gated PR/issue/repo/file tools",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -71,7 +71,7 @@
71
71
  "inject": [
72
72
  "@deepseek-ai/dsh-client-connection",
73
73
  "@deepseek-ai/dsh-client-locale",
74
- "@deepseek-ai/dsh-client-runtime",
74
+ "@deepseek-ai/dsh-client-ui-settings",
75
75
  "@deepseek-ai/dsh-client-ui-slots"
76
76
  ],
77
77
  "platform": "web"
@@ -121,11 +121,26 @@
121
121
  },
122
122
  "peerDependencies": {
123
123
  "@deepseek-ai/cordis": "^4.0.1",
124
+ "@deepseek-ai/dsh-client-ui-primitives": "^0.1.1-rc.2",
125
+ "@deepseek-ai/dsh-client-ui-settings": ">=0.1.1-rc.2 <0.2.0",
124
126
  "@deepseek-ai/dsh-credentials": ">=0.1.0-rc.8 <0.2.0",
125
127
  "@deepseek-ai/dsh-llm": ">=0.1.0-rc.8 <0.2.0",
126
128
  "@deepseek-ai/dsh-session": ">=0.1.0-rc.8 <0.2.0",
127
129
  "@deepseek-ai/dsh-settings": ">=0.1.0-rc.8 <0.2.0",
128
- "@deepseek-ai/dsh-tools": ">=0.1.0-rc.8 <0.2.0"
130
+ "@deepseek-ai/dsh-tool-jobs": "^0.1.1-rc.2",
131
+ "@deepseek-ai/dsh-tools": ">=0.1.0-rc.8 <0.2.0",
132
+ "react": "^18.0.0 || ^19.0.0"
133
+ },
134
+ "peerDependenciesMeta": {
135
+ "@deepseek-ai/dsh-client-ui-primitives": {
136
+ "optional": true
137
+ },
138
+ "@deepseek-ai/dsh-client-ui-settings": {
139
+ "optional": true
140
+ },
141
+ "react": {
142
+ "optional": true
143
+ }
129
144
  },
130
145
  "devDependencies": {
131
146
  "@deepseek-ai/cordis": "4.0.1",
@@ -141,5 +156,9 @@
141
156
  "oxlint": "0.18.1",
142
157
  "typescript": "^5.7.0",
143
158
  "vitest": "^3.2.0"
159
+ },
160
+ "funding": {
161
+ "type": "individual",
162
+ "url": "https://github.com/sponsors/PerryLink"
144
163
  }
145
164
  }