dsh-eslat 1.0.0 → 2.0.0
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.md +117 -180
- package/lib/client.js +1502 -162
- package/lib/client.js.map +1 -1
- package/locale/en.json +1 -1
- package/locale/es.json +1 -1
- package/package.json +8 -6
package/README.md
CHANGED
|
@@ -1,31 +1,30 @@
|
|
|
1
1
|
# dsh-eslat · EsLat
|
|
2
2
|
|
|
3
|
-
> **English summary** — **EsLat
|
|
4
|
-
> language bundle that
|
|
5
|
-
>
|
|
6
|
-
>
|
|
7
|
-
>
|
|
8
|
-
>
|
|
9
|
-
>
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
original en inglés.
|
|
3
|
+
> **English summary** — **EsLat** is a [DeepSeek Harness](https://github.com/deepseek-ai/DeepSeek-Harness)
|
|
4
|
+
> language bundle that translates the **whole web GUI** into neutral **Latin American Spanish**:
|
|
5
|
+
> 1,615 labels across all 36 client namespaces shipped by DSH 0.2.0-rc.2 — conversation, sidebar,
|
|
6
|
+
> settings, trajectory, tool calls, status summaries, dialogs, errors and empty states. Nothing is
|
|
7
|
+
> left falling back to English. Install with `dsh plugin add dsh-eslat`, or from the **Plugins** page
|
|
8
|
+
> in the sidebar. Revert to English with Settings → *Idioma* → English. Full documentation below is
|
|
9
|
+
> in Spanish.
|
|
10
|
+
|
|
11
|
+
Traducción completa al **español neutro de Latinoamérica** de la interfaz web de DSH. Es un paquete
|
|
12
|
+
de idioma: registra el idioma `es` y un diccionario para **cada** namespace que el cliente de DSH
|
|
13
|
+
publica, de modo que la interfaz entera —no solo las herramientas— aparece en español.
|
|
15
14
|
|
|
16
15
|
```
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
Conversación → Escribe un mensaje o una tarea, / para comandos, @ para archivos o sesiones
|
|
17
|
+
Barra lateral → Espacios de trabajo · Sesiones · Archivar · Fijar · Cambiar nombre
|
|
18
|
+
Ajustes → Configuración · Apariencia · Permisos · Tamaño de letra · Atajos
|
|
19
|
+
Trayectoria → Turnos · Llamadas · Solicitudes · Mediciones · Uso de tokens
|
|
20
|
+
Herramientas → Leer / Escribir / Editar / Buscar en el contenido / PowerShell / Crear subagente
|
|
21
|
+
Estados → En ejecución / Preparando la llamada / Fallida / Detenida
|
|
22
|
+
Resúmenes → Leyendo archivos · Completado en 12 s · Se leyeron archivos y se ejecutaron comandos
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
## Instalación
|
|
26
26
|
|
|
27
|
-
Es un **bundle** de DSH (`dsh.bundle.patch`), así que se instala como cualquier otro plugin.
|
|
28
|
-
formas, de la más cómoda a la más manual:
|
|
27
|
+
Es un **bundle** de DSH (`dsh.bundle.patch`), así que se instala como cualquier otro plugin.
|
|
29
28
|
|
|
30
29
|
### Desde npm
|
|
31
30
|
|
|
@@ -38,10 +37,10 @@ o en la interfaz web: barra lateral → **Plugins** → **Add plugin** → escri
|
|
|
38
37
|
|
|
39
38
|
### Desde un tarball
|
|
40
39
|
|
|
41
|
-
Sin cuenta de npm y sin permisos de compilación: el tarball
|
|
40
|
+
Sin cuenta de npm y sin permisos de compilación: el tarball trae la mitad Cliente ya construida.
|
|
42
41
|
|
|
43
42
|
```
|
|
44
|
-
dsh plugin add ./dsh-eslat-
|
|
43
|
+
dsh plugin add ./dsh-eslat-2.0.0.tgz
|
|
45
44
|
```
|
|
46
45
|
|
|
47
46
|
### Desde un repositorio Git
|
|
@@ -50,60 +49,70 @@ dsh plugin add ./dsh-eslat-1.0.0.tgz
|
|
|
50
49
|
dsh plugin add github:Amador-Aguilar/dsh-eslat
|
|
51
50
|
```
|
|
52
51
|
|
|
53
|
-
Este paquete **no necesita `prepare` ni autorizar scripts de compilación
|
|
54
|
-
|
|
52
|
+
Este paquete **no necesita `prepare` ni autorizar scripts de compilación**: el bundle del navegador
|
|
53
|
+
(`lib/client.js`) se publica construido, no se genera al instalar.
|
|
55
54
|
|
|
56
55
|
### En este equipo (desarrollo)
|
|
57
56
|
|
|
58
|
-
En el perfil `desktop` está instalado
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
// C:\Users\HP ZBook\.dsh\profiles\desktop\package.json
|
|
62
|
-
"dependencies": { "dsh-eslat": "link:C:/Users/HP ZBook/Documents/deepseek-harness/default-workspace/dsh-eslat" },
|
|
63
|
-
"dsh": { "profile": { "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-eslat"] } }
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
Como es un enlace, editar `src/*.es.json`, ejecutar `node tools/build.mjs` y recargar la página
|
|
67
|
-
aplica los cambios sin reinstalar.
|
|
68
|
-
|
|
69
|
-
Al desactivarlo, el idioma `es` desaparece del selector y la interfaz vuelve al idioma disponible (no
|
|
70
|
-
borra la preferencia guardada, simplemente deja de estar disponible).
|
|
57
|
+
En el perfil `desktop` está instalado desde el registro (`"dsh-eslat": "^2.0.0"`). Para probar
|
|
58
|
+
cambios locales sin publicar, instálalo desde la ruta del proyecto con el gestor de plugins: queda
|
|
59
|
+
como `link:` y los cambios de `src/` + `node tools/build.mjs` se aplican al recargar la página.
|
|
71
60
|
|
|
72
61
|
## Activación
|
|
73
62
|
|
|
74
|
-
Al montarse, el plugin
|
|
63
|
+
Al montarse, el plugin registra el idioma y sus diccionarios, y selecciona **Español** una sola vez,
|
|
75
64
|
sustituyendo únicamente el idioma por defecto (`en`). Después:
|
|
76
65
|
|
|
77
66
|
| Situación | Qué ocurre |
|
|
78
67
|
|---|---|
|
|
79
|
-
| La interfaz estaba en inglés (por defecto) | Pasa a Español;
|
|
80
|
-
| Ya estaba en chino
|
|
81
|
-
| El usuario cambia a otro idioma en
|
|
68
|
+
| La interfaz estaba en inglés (por defecto) | Pasa a Español; toda la interfaz cambia |
|
|
69
|
+
| Ya estaba en chino u otro idioma elegido | No se toca nada: solo sustituye el idioma por defecto |
|
|
70
|
+
| El usuario cambia a otro idioma en Configuración → Idioma | Se respeta para siempre; el plugin no vuelve a forzar el español |
|
|
82
71
|
| Un shell nativo vuelve a anunciar su idioma por defecto | El plugin recupera el español, porque la elección no fue del usuario |
|
|
83
72
|
|
|
84
|
-
La memoria de esa decisión vive en `localStorage` del navegador
|
|
85
|
-
|
|
86
|
-
|
|
73
|
+
La memoria de esa decisión vive en `localStorage` del navegador (`dsh-eslat:activation`). Si el
|
|
74
|
+
almacenamiento no está disponible, el plugin selecciona español en cada carga cuando la interfaz está
|
|
75
|
+
en inglés.
|
|
87
76
|
|
|
88
|
-
**Para volver atrás:**
|
|
89
|
-
plugin no las cambiará de nuevo. Para quitarlo del todo, desactívalo o desinstálalo desde la página
|
|
77
|
+
**Para volver atrás:** Configuración → General → *Idioma* → English. Para desinstalarlo, página
|
|
90
78
|
**Plugins**.
|
|
91
79
|
|
|
92
|
-
##
|
|
80
|
+
## Cobertura
|
|
93
81
|
|
|
94
|
-
|
|
95
|
-
|
|
82
|
+
**1.615 de 1.615 claves (100 %) en 36 de 36 namespaces.** La verificación por clave lo garantiza y
|
|
83
|
+
falla si alguna falta.
|
|
96
84
|
|
|
97
|
-
|
|
|
98
|
-
|
|
99
|
-
|
|
|
100
|
-
|
|
|
101
|
-
| `
|
|
102
|
-
| `settings
|
|
85
|
+
| Grupo | Namespaces | Claves |
|
|
86
|
+
|---|---|---:|
|
|
87
|
+
| Conversación y chat | `conversation` 367 · `chat` 186 | 553 |
|
|
88
|
+
| Trayectoria y entregables | `trajectory` 192 · `deliverables` 60 | 252 |
|
|
89
|
+
| Navegación y paneles | `workspace` 112 · `sidebarRight` 34 · `sidebarBrowser` 19 · `sidebarFiles` 11 · `sidebarDocumentPreview` 11 · `sidebar` 5 · `sidebarTerminal` 1 | 193 |
|
|
90
|
+
| Ajustes y preferencias | `settings` 34 · `shortcuts` 28 · `permission.access` 17 · `settings.permission` 12 · `settings.theme` 9 | 100 |
|
|
91
|
+
| Tareas y automatización | `schedule.manager` 133 · `job` 39 · `workflowRun` 18 · `schedule.catalog` 16 | 206 |
|
|
92
|
+
| Herramientas y agentes | `cordis` 51 · `subagent` 39 · `model` 23 · `slash.menu` 9 · `skill` 8 | 130 |
|
|
93
|
+
| Comandos y diálogos | `question` 31 · `command` 28 · `feedback` 20 · `plan` 17 · `goal` 12 · `approval` 1 | 109 |
|
|
94
|
+
| Base compartida | `common` 41 · `open-in-app` 15 · `reference` 11 · `documentMarkdown` 4 · `settings.locale` 1 | 72 |
|
|
103
95
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
96
|
+
## Dialecto
|
|
97
|
+
|
|
98
|
+
Español neutro de Latinoamérica, con estas decisiones aplicadas en todo el paquete:
|
|
99
|
+
|
|
100
|
+
| Se usa | En lugar de |
|
|
101
|
+
|---|---|
|
|
102
|
+
| Configuración | Ajustes |
|
|
103
|
+
| presiona / haz clic | pulsa / pincha |
|
|
104
|
+
| agregar | añadir |
|
|
105
|
+
| computadora, celular | ordenador, móvil |
|
|
106
|
+
| archivo | fichero |
|
|
107
|
+
| costo | coste |
|
|
108
|
+
| `dd/mm/aaaa`, millar con punto (`1.615`) | formato inglés |
|
|
109
|
+
|
|
110
|
+
Términos que se mantienen: `Bash`, `PowerShell`, `JSON`, `ZIP`, `TTFT`, `tok/s`, `Markdown`,
|
|
111
|
+
`Cordis`, `sandbox`, `preset` y los nombres de modelos.
|
|
112
|
+
|
|
113
|
+
`test/verify.mjs` incluye un **guardián de dialecto**: falla si reaparece un lexema peninsular
|
|
114
|
+
(`ordenador`, `fichero`, `puls…`, `añad…`, `vosotros`, `móvil`, `coger`, `pinch…`, `zumo`, `patata`,
|
|
115
|
+
`coche`).
|
|
107
116
|
|
|
108
117
|
## Identidad del plugin
|
|
109
118
|
|
|
@@ -111,156 +120,84 @@ estados, inglés en el resto.
|
|
|
111
120
|
|---|---|---|
|
|
112
121
|
| Nombre visible | **EsLat** | `locale/{en,es}.json` → `meta.title` |
|
|
113
122
|
| Nombre técnico (npm y **id del módulo del navegador**) | `dsh-eslat` | `package.json` → `name` |
|
|
114
|
-
| Icono |
|
|
123
|
+
| Icono | «Es» sobre «Lat»: degradado azul + cian, 36×36 | `icon.svg` |
|
|
115
124
|
| Autor | Amador Aguilar (`@amador_aguilar` en npm, `Amador-Aguilar` en GitHub) | `package.json` → `author` |
|
|
116
125
|
| Repositorio | [github.com/Amador-Aguilar/dsh-eslat](https://github.com/Amador-Aguilar/dsh-eslat) | `package.json` → `repository` |
|
|
117
126
|
|
|
118
|
-
La
|
|
119
|
-
|
|
120
|
-
consulta con `npm owner ls dsh-eslat`.
|
|
121
|
-
|
|
122
|
-
### Si prefieres un nombre con ámbito
|
|
123
|
-
|
|
124
|
-
`@amador_aguilar/dsh-eslat` es válido en npm (el ámbito es tu usuario, confirmado) y pone tu nombre en
|
|
125
|
-
el propio nombre del paquete. Cuesta tres cambios y una reconstrucción, y la verificación falla si te
|
|
126
|
-
falta uno:
|
|
127
|
-
|
|
128
|
-
```powershell
|
|
129
|
-
# 1. package.json → "name": "@amador_aguilar/dsh-eslat"
|
|
130
|
-
# 2. cordis.patch.yml → name: '@amador_aguilar/dsh-eslat'
|
|
131
|
-
node tools/build.mjs # 3. regenera el id del módulo
|
|
132
|
-
npm run verify
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
El paquete sin ámbito es más fácil de teclear y de encontrar por búsqueda; el ámbito pone tu usuario
|
|
136
|
-
a la vista. Ambas opciones son válidas: npm registra al editor en cualquiera de las dos.
|
|
137
|
-
|
|
138
|
-
### Campos del repositorio (ya configurados)
|
|
139
|
-
|
|
140
|
-
`package.json` ya enlaza el código, así que la ficha de npm mostrará los botones de repositorio e
|
|
141
|
-
incidencias:
|
|
142
|
-
|
|
143
|
-
```jsonc
|
|
144
|
-
"repository": { "type": "git", "url": "git+https://github.com/Amador-Aguilar/dsh-eslat.git" },
|
|
145
|
-
"homepage": "https://github.com/Amador-Aguilar/dsh-eslat#readme",
|
|
146
|
-
"bugs": { "url": "https://github.com/Amador-Aguilar/dsh-eslat/issues" }
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
## Publicar
|
|
150
|
-
|
|
151
|
-
Requisitos de DSH para que un paquete sea instalable y aparezca como tarjeta en **Plugins**
|
|
152
|
-
(según la [guía oficial de empaquetado](https://github.com/deepseek-ai/DeepSeek-Harness/blob/master/docs/user/develop/basic/publish.zh.md)
|
|
153
|
-
y el [cookbook de paquetes](https://deepseek-harness.github.io/deepseek-harness/en/reference/cookbook/adding-a-package)):
|
|
154
|
-
|
|
155
|
-
| Requisito | Estado |
|
|
156
|
-
|---|---|
|
|
157
|
-
| `dsh.bundle.patch` con un archivo existente | `./cordis.patch.yml` |
|
|
158
|
-
| La fila del patch usa el **nombre del paquete** (no una ruta) | `dsh-eslat` |
|
|
159
|
-
| `name` + `version` no vacíos (identidad en el inventario) | `dsh-eslat@1.0.0` |
|
|
160
|
-
| Mitad Cliente **ya construida**: nadie ejecuta tu build al instalar | `lib/client.js` versionado |
|
|
161
|
-
| `dsh.client.platform: 'web'` y `exports["./client"]` | presentes |
|
|
162
|
-
| `files` incluye todo lo que hace falta en ejecución | bundle, map, patch, `locale/*.json` |
|
|
163
|
-
| `engines.dsh` declarado | `>=0.2.0-rc.2` (solo mínimo; sin techo) |
|
|
164
|
-
|
|
165
|
-
`test/verify.mjs` comprueba todas esas condiciones, incluido que `package.json`, la fila del patch y
|
|
166
|
-
el `id` del bundle se llamen igual, y que `files` no deje fuera el artefacto. `prepublishOnly`
|
|
167
|
-
encadena build + verificación + pruebas, así que un `publish` no puede salir con el bundle obsoleto.
|
|
168
|
-
|
|
169
|
-
### Pasos
|
|
170
|
-
|
|
171
|
-
```powershell
|
|
172
|
-
# 1. Comprobar que todo sigue en verde y que el bundle está al día
|
|
173
|
-
npm run verify
|
|
174
|
-
|
|
175
|
-
# 2. Revisar el contenido exacto del paquete (9 archivos, ~19 kB)
|
|
176
|
-
npm pack --dry-run
|
|
177
|
-
|
|
178
|
-
# 3. Publicar en npm (la primera vez: npm adduser)
|
|
179
|
-
npm publish
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
Si el `dsh-eslat` ya estuviera ocupado en el registro, publica con tu ámbito:
|
|
183
|
-
|
|
184
|
-
```powershell
|
|
185
|
-
# cambiar el nombre en package.json, cordis.patch.yml y reconstruir:
|
|
186
|
-
# "name": "@tu-usuario/dsh-eslat"
|
|
187
|
-
node tools/build.mjs
|
|
188
|
-
npm publish --access public
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
El `id` del módulo del navegador sale de `package.json`, así que reconstruir es obligatorio: la
|
|
192
|
-
verificación falla si el bundle, el patch y el manifiesto discrepan.
|
|
193
|
-
|
|
194
|
-
### Notas de compatibilidad
|
|
195
|
-
|
|
196
|
-
- **Sin `peerDependencies` sobre `@deepseek-ai/dsh*`** a propósito: DSH rechaza instalar y arrancar
|
|
197
|
-
un bundle cuyos peers (o su `engines.dsh`) no satisfagan el runtime. Este plugin no importa nada
|
|
198
|
-
de DSH —solo usa servicios ambientales del cliente—, así que no declara ninguno y no queda atado a
|
|
199
|
-
una versión concreta. `engines.dsh` solo pone el mínimo.
|
|
200
|
-
- **`engines.dsh` sin techo superior**: `>=0.2.0-rc.2` documenta el mínimo real (la versión cuyos
|
|
201
|
-
diccionarios se verifican) sin bloquear versiones futuras.
|
|
202
|
-
- **Sin scripts de instalación**: no hay `prepare`, `install` ni `postinstall`, así que instalar
|
|
203
|
-
desde Git o tarball no pide autorizar la ejecución de código en la máquina del usuario.
|
|
204
|
-
- **Sin actualización automática**: DSH no actualiza plugins instalados; una versión nueva se
|
|
205
|
-
instala desinstalando la anterior.
|
|
206
|
-
- **Descubrimiento**: en `0.2.0-rc.2` no hay catálogo de terceros ni formulario de envío. El grupo
|
|
207
|
-
**Official** de la página Plugins es lo que la instalación de DSH trae consigo, no un canal de
|
|
208
|
-
publicación. La distribución es npm (o Git/tarball), y el descubrimiento pasa por las palabras
|
|
209
|
-
clave del `package.json`, el repositorio y las listas de la comunidad.
|
|
127
|
+
La autoría formal la registra npm al publicar (`npm owner ls dsh-eslat`); la tarjeta de Plugins solo
|
|
128
|
+
muestra icono, título y descripción.
|
|
210
129
|
|
|
211
130
|
## Estructura
|
|
212
131
|
|
|
213
132
|
```
|
|
214
133
|
package.json manifiesto: dsh.bundle.patch + dsh.client (platform web)
|
|
215
|
-
cordis.patch.yml capa de parche del bundle: inserta la fila
|
|
134
|
+
cordis.patch.yml capa de parche del bundle: inserta la fila eslat
|
|
216
135
|
lib/index.js mitad Host: inerte, solo mantiene el paquete en el árbol del Loader
|
|
217
136
|
lib/client.js mitad Cliente construida (generada) — todo el comportamiento vive aquí
|
|
218
137
|
lib/client.js.map source map de identidad del bundle
|
|
219
138
|
locale/{en,es}.json título y descripción del plugin en la página Plugins
|
|
220
|
-
|
|
221
|
-
src
|
|
139
|
+
icon.svg icono de la tarjeta (36×36, convención de DSH)
|
|
140
|
+
src/<namespace>.es.json un diccionario por namespace; añadir cobertura es añadir un archivo
|
|
222
141
|
src/language.json definición del idioma: id, etiqueta y respaldo
|
|
223
|
-
tools/build.mjs construye lib/client.js a partir de src/
|
|
224
|
-
tools/extract-shipped-keys.mjs regenera la instantánea de claves
|
|
225
|
-
test/verify.mjs claves, marcadores, frescura del bundle y requisitos de publicación
|
|
142
|
+
tools/build.mjs construye lib/client.js y su map a partir de src/
|
|
143
|
+
tools/extract-shipped-keys.mjs descubre los namespaces de DSH y regenera la instantánea de claves
|
|
144
|
+
test/verify.mjs claves, marcadores, dialecto, frescura del bundle y requisitos de publicación
|
|
226
145
|
test/smoke.mjs ejecuta la mitad Cliente contra dobles de prueba
|
|
146
|
+
test/shipped-en.json instantánea de los diccionarios ingleses de DSH 0.2.0-rc.2
|
|
227
147
|
```
|
|
228
148
|
|
|
229
|
-
Solo se publica la primera mitad: `src/`, `tools/` y `test/` son material del repositorio.
|
|
230
|
-
instantánea `test/shipped-en.json` es lo que permite verificar el paquete sin tener DSH delante.
|
|
149
|
+
Solo se publica la primera mitad: `src/`, `tools/` y `test/` son material del repositorio.
|
|
231
150
|
|
|
232
151
|
### Por qué la mitad Cliente es un archivo construido
|
|
233
152
|
|
|
234
153
|
DSH sirve cada plugin del navegador como un bundle *lazy-CJS* ya construido: el host lee
|
|
235
154
|
`exports["./client"]` y el navegador evalúa el archivo, que debe estar en la forma del cargador de
|
|
236
155
|
módulos (`window.__ModuleLoader__.load({ id, factory })`) y no puede importar nada, porque el
|
|
237
|
-
protocolo no admite `require` relativos entre bundles.
|
|
156
|
+
protocolo no admite `require` relativos entre bundles. Por eso los diccionarios viven en `src/` y se
|
|
157
|
+
incorporan al bundle generado.
|
|
158
|
+
|
|
159
|
+
## Desarrollo
|
|
160
|
+
|
|
161
|
+
```powershell
|
|
162
|
+
node tools/build.mjs # regenera lib/client.js y su map
|
|
163
|
+
node test/verify.mjs # claves, marcadores, dialecto, frescura, publicación
|
|
164
|
+
node test/verify.mjs --strict # además exige cobertura 100 %
|
|
165
|
+
node test/smoke.mjs # comportamiento de la mitad Cliente
|
|
166
|
+
node tools/extract-shipped-keys.mjs # re-descubre los namespaces de la imagen instalada
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
`verify` distingue **errores** (clave inexistente, marcador `{…}` que no cuadra, bundle obsoleto,
|
|
170
|
+
lexema peninsular) de **cobertura pendiente**, que informa; `--strict` la exige y es lo que corre
|
|
171
|
+
`prepublishOnly`.
|
|
172
|
+
|
|
173
|
+
`test/shipped-en.json` es una instantánea extraída de DSH `0.2.0-rc.2`. Si una versión futura
|
|
174
|
+
renombra o añade claves, `node tools/extract-shipped-keys.mjs` refresca la instantánea y `verify`
|
|
175
|
+
dice exactamente qué falta.
|
|
176
|
+
|
|
177
|
+
## Publicar
|
|
238
178
|
|
|
239
|
-
|
|
240
|
-
|
|
179
|
+
`prepublishOnly` encadena build + `verify --strict` + smoke, así que no puede salir una versión con
|
|
180
|
+
cobertura incompleta.
|
|
241
181
|
|
|
242
182
|
```powershell
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
node test/smoke.mjs # comportamiento de la mitad Cliente
|
|
183
|
+
npm run verify # build + verificación + pruebas
|
|
184
|
+
npm publish # con OTP: npm publish --otp=123456
|
|
246
185
|
```
|
|
247
186
|
|
|
248
|
-
`
|
|
249
|
-
`
|
|
250
|
-
|
|
187
|
+
Requisitos que `verify` comprueba: `dsh.bundle.patch` presente, la fila del patch con el nombre del
|
|
188
|
+
paquete, `name`/`version` válidos, mitad Cliente construida y en `files`, `engines.dsh`, licencia y
|
|
189
|
+
`prepublishOnly`.
|
|
251
190
|
|
|
252
191
|
## Limitaciones
|
|
253
192
|
|
|
254
|
-
- **Interfaz mixta por diseño** — solo se sustituyen las etiquetas de herramientas y de estado; el
|
|
255
|
-
resto sigue en inglés a través del respaldo `en`.
|
|
256
193
|
- **Claves atadas a una versión** — la verificación está anclada a DSH `0.2.0-rc.2`. Una clave
|
|
257
|
-
renombrada aguas arriba revierte esa etiqueta al inglés hasta que se actualice el diccionario
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
- **Sin configuración** — el plugin no declara esquema
|
|
266
|
-
|
|
194
|
+
renombrada aguas arriba revierte esa etiqueta al inglés hasta que se actualice el diccionario; el
|
|
195
|
+
extractor y el verificador lo detectan.
|
|
196
|
+
- **Los datos no se traducen** — rutas de archivos, descripciones de comandos, resúmenes derivados de
|
|
197
|
+
los argumentos de cada herramienta y la respuesta del modelo siguen en el idioma en que lleguen.
|
|
198
|
+
- **Enumeraciones de tres o más elementos** — DSH une los resúmenes cerrados con un separador fijo,
|
|
199
|
+
sin ranura para la conjunción final, así que una lista de tres sale con comas en lugar de «y».
|
|
200
|
+
- **Sin reglas de plural propias** — se usan las ranuras `.one`/`.other` que DSH consulta; `es`
|
|
201
|
+
comparte con `en` la regla singular/plural.
|
|
202
|
+
- **Sin configuración** — el plugin no declara esquema: activarlo o desactivarlo en la página Plugins
|
|
203
|
+
es el único mando.
|