dsh-mask 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -2
- package/README.es.md +6 -2
- package/README.hi.md +6 -2
- package/README.md +7 -3
- package/README.pt.md +6 -2
- package/README.zh.md +7 -3
- package/package.json +20 -19
package/CHANGELOG.md
CHANGED
|
@@ -1,10 +1,27 @@
|
|
|
1
|
-
# Changelog
|
|
1
|
+
# Changelog
|
|
2
2
|
|
|
3
3
|
All notable changes to this project are documented in this file.
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.2.4] - 2026-09-07
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Align the `@deepseek-ai/dsh-*` peer ranges to `>=0.1.2-rc.1 <0.2.0`: the older `>=0.1.0-rc.8 <0.2.0` band resolved to only the `0.1.0-rc.8` prerelease under registry-driven resolution and broke fresh tarball installs; no behavior change.
|
|
13
|
+
|
|
14
|
+
### Docs
|
|
15
|
+
|
|
16
|
+
- Refresh the five-language README support-version wording: the verified GitHub tag `dsh-v0.1.3-alpha.1` now leads the compatibility claim, while npm `0.1.2-rc.1` stays the published dependency-pin line (peers `>=0.1.2-rc.1 <0.2.0`); no behavior change.
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## [0.2.3] - 2026-09-04
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- Align the devDependency pins to the published dsh `0.1.2-rc.1` line, move the compat CI probes from `0.1.1-rc.2` to `0.1.2-rc.1`, and re-verify the adaptive audit gate (unchanged: the gate stays closed on rc.1); no behavior change.
|
|
24
|
+
|
|
8
25
|
## [0.2.2] - 2026-09-01
|
|
9
26
|
|
|
10
27
|
### Changed
|
|
@@ -59,7 +76,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
59
76
|
|
|
60
77
|
### Added
|
|
61
78
|
|
|
62
|
-
- PII masking middleware for DeepSeek Harness: request-time anonymization at the `agent/pre-step` boundary (phones, emails, ID cards, bank cards, keys, and opt-in IPs become `<TYPE_N>` placeholders), a `placeholder
|
|
79
|
+
- PII masking middleware for DeepSeek Harness: request-time anonymization at the `agent/pre-step` boundary (phones, emails, ID cards, bank cards, keys, and opt-in IPs become `<TYPE_N>` placeholders), a `placeholder 鈫?original` restore table kept only in memory and the controlled `dsh_mask` storage domain, and a `mask/applied` audit session event that records counts + type distribution only.
|
|
63
80
|
- The `/mask` command (`status`/`on`/`off`/`restore <text>`/`help`) and the `mask_test` model tool (mask a snippet, never reveal the original).
|
|
64
81
|
- The regex PII detector ported from Pii-Stripper-Middleware (`lib/strip.mjs`), plus a `key` detector for the spec's secret-type PII.
|
|
65
82
|
- Pure display/log sanitizers (`lib/sanitize.mjs`) with extreme-case coverage: PII plaintext and the mapping table never leak into logs or results.
|
package/README.es.md
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
|
|
26
26
|
| Superficie | Estado |
|
|
27
27
|
|---|---|
|
|
28
|
-
| Harness | DeepSeek Harness `
|
|
28
|
+
| Harness | DeepSeek Harness `dsh-v0.1.3-alpha.1` (adaptado el 2026-09-02): el sobre de sesión conserva su campo ignorable solo para compatibilidad de lectura de logs almacenados - Session.append aún no puede estamparlo, por lo que el comportamiento de la puerta no cambia. Verificado el 2026-09-06 contra el checkout master `dsh-v0.1.3-alpha.1` (cadena completa de puertas + smoke de instalación de perfil). |
|
|
29
29
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
30
30
|
| Plataformas | Donde corra DSH (host puro, regex sin dependencias; sin mitad de navegador) |
|
|
31
31
|
| Modelo | Modelos de texto totalmente soportados |
|
|
@@ -121,7 +121,7 @@ Todas las opciones son campos Schemastery `Config` (modificables desde cordis.ym
|
|
|
121
121
|
|
|
122
122
|
- **Solo regex.** `person` y `address` requieren un reconocedor NER externo; fallan al cargar. Cubierto de serie: teléfono, correo, documento, tarjeta, clave e IP (opt-in).
|
|
123
123
|
- **La restauración visual necesita una mitad de cliente.** Enmascarar es host-side; desenmascarar burbujas en la UI es una función de navegador que esta forma host puro no incluye. La tabla y `restore()` son el seam host-side completo.
|
|
124
|
-
- **Eventos en `0.1.2-
|
|
124
|
+
- **Eventos en `0.1.2-rc.1`.** El host aún no registra `mask/*`, así que los appends de auditoría se omiten (las sesiones siguen cargando).
|
|
125
125
|
|
|
126
126
|
## Development
|
|
127
127
|
|
|
@@ -191,3 +191,7 @@ Este proyecto es uno de los [33 complementos de DeepSeek Harness](https://github
|
|
|
191
191
|
## License
|
|
192
192
|
|
|
193
193
|
[LICENSE](LICENSE) (Apache License 2.0) © 2026 dsh-mask contributors
|
|
194
|
+
|
|
195
|
+
### Instalar desde el mercado de DSH Desktop
|
|
196
|
+
|
|
197
|
+
Todos los plugins de PerryLink pueden explorarse en el mercado integrado de DSH Desktop: **Market → Sources → add source → pegar** `https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json` **→ seleccionarlo**. La instalación sigue pasando por la verificación de identidad npm del mercado y tu confirmación.
|
package/README.hi.md
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
|
|
26
26
|
| सतह | स्थिति |
|
|
27
27
|
|---|---|
|
|
28
|
-
| Harness | DeepSeek Harness `
|
|
28
|
+
| Harness | DeepSeek Harness `dsh-v0.1.3-alpha.1` (2026-09-02 को अनुकूलित): सत्र लिफ़ाफ़ा अपना ignorable फ़ील्ड केवल संग्रहीत-लॉग पठन संगतता के लिए रखता है - Session.append अभी भी इसे स्टैम्प नहीं कर सकता, इसलिए गेट व्यवहार अपरिवर्तित है। 2026-09-06 को `dsh-v0.1.3-alpha.1` master checkout के विरुद्ध सत्यापित (पूर्ण गेट शृंखला + profile इंस्टॉल स्मोक)। |
|
|
29
29
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
30
30
|
| प्लेटफ़ॉर्म | जहाँ DSH चले (शुद्ध host, शून्य-निर्भरता regex; कोई ब्राउज़र आधा नहीं) |
|
|
31
31
|
| मॉडल | टेक्स्ट मॉडल पूर्ण रूप से समर्थित |
|
|
@@ -121,7 +121,7 @@ dsh --profile web --dump-config | grep -A2 'id: mask'
|
|
|
121
121
|
|
|
122
122
|
- **केवल regex।** `person` और `address` को बाहरी NER पहचानकर्ता चाहिए; लोड पर विफल। बॉक्स में: फ़ोन, ईमेल, आईडी कार्ड, बैंक कार्ड, कुंजी और IP (opt-in)।
|
|
123
123
|
- **डिस्प्ले-लेयर पुनर्स्थापना को क्लाइंट आधा चाहिए।** मास्किंग host-side है; UI बुलबुलों को खोलना एक ब्राउज़र-आधा सुविधा है जो यह शुद्ध-host रूप नहीं देता। तालिका और `restore()` पूर्ण host-side seam हैं।
|
|
124
|
-
- **`0.1.2-
|
|
124
|
+
- **`0.1.2-rc.1` इवेंट।** host अभी `mask/*` दर्ज नहीं करता, इसलिए ऑडिट appends छोड़े जाते हैं (सत्र लोड होते रहते हैं)।
|
|
125
125
|
|
|
126
126
|
## Development
|
|
127
127
|
|
|
@@ -191,3 +191,7 @@ PII बेंचमार्क (108 सिंथेटिक नमूनों
|
|
|
191
191
|
## License
|
|
192
192
|
|
|
193
193
|
[LICENSE](LICENSE) (Apache License 2.0) © 2026 dsh-mask contributors
|
|
194
|
+
|
|
195
|
+
### DSH Desktop मार्केट से इंस्टॉल करें
|
|
196
|
+
|
|
197
|
+
सभी PerryLink प्लगइन DSH Desktop के बिल्ट-इन मार्केट में देखे जा सकते हैं: **Market → Sources → add source → पेस्ट करें** `https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json` **→ चुनें**। इंस्टॉलेशन मार्केट के npm-identity सत्यापन और आपकी पुष्टि से ही होता है।
|
package/README.md
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
|
|
27
27
|
| Surface | Status |
|
|
28
28
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `
|
|
29
|
+
| Harness | DeepSeek Harness `dsh-v0.1.3-alpha.1` (adapted 2026-09-02): the session envelope keeps its ignorable field for stored-log read compatibility only - Session.append still cannot stamp it, so audit-gate behavior is unchanged. Verified 2026-09-06 against the dsh-v0.1.3-alpha.1 master checkout (full gate chain + profile install smoke). |
|
|
30
30
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
31
31
|
| Platforms | Anywhere DSH runs (pure host, zero-dependency regex; no browser half) |
|
|
32
32
|
| Model | Text models fully supported; no extra model capability required |
|
|
@@ -142,13 +142,13 @@ Example override in your profile patch:
|
|
|
142
142
|
|
|
143
143
|
- **Regex only.** Name (`person`) and address (`address`) recognition needs an external NER recognizer, which the pure-host zero-dependency form does not bundle; `mode: regex+ner` and those entities fail loudly at load. The PII types covered out of the box are phone, email, ID card, bank card, key, and (opt-in) IP.
|
|
144
144
|
- **Display-layer restore needs a client half.** Masking is fully host-side, but transparently un-masking the assistant bubbles in the client UI is a browser-half feature this pure-host form does not ship; the restore table and `restore()` are the complete host-side seam a client plugin would consume, and `/mask restore` covers interactive needs today.
|
|
145
|
-
- **Session events on `0.1.2-
|
|
145
|
+
- **Session events on `0.1.2-rc.1`.** The harness does not yet record `mask/*` event types, and its `Session.append` does not stamp the `ignorable` envelope, so on alpha.3 the session-log audit appends are skipped (sessions keep loading); the plugin enables them automatically once a host records the types or supports the `ignorable` envelope.
|
|
146
146
|
|
|
147
147
|
## Development
|
|
148
148
|
|
|
149
149
|
```sh
|
|
150
150
|
pnpm install # node ^22.19 || >=24
|
|
151
|
-
pnpm run typecheck && pnpm run typecheck:ci # tsc --checkJs against the published 0.1.2-
|
|
151
|
+
pnpm run typecheck && pnpm run typecheck:ci # tsc --checkJs against the published 0.1.2-rc.1 peers
|
|
152
152
|
pnpm test # node --test
|
|
153
153
|
pnpm run verify:self-contained # dependency specs resolve from the registry
|
|
154
154
|
pnpm run verify:artifacts # shipped files present + index.mjs importable
|
|
@@ -209,6 +209,10 @@ This project is one of the [33 DeepSeek Harness plugins](https://github.com/Perr
|
|
|
209
209
|
| **[dsh-dsh-test-drive](https://github.com/PerryLink/dsh-dsh-test-drive)** | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | |
|
|
210
210
|
| **[dsh-dsh-translate](https://github.com/PerryLink/dsh-dsh-translate)** | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | |
|
|
211
211
|
|
|
212
|
+
### Install from the DSH Desktop Market
|
|
213
|
+
|
|
214
|
+
All PerryLink plugins are browsable in the built-in DSH Desktop Market: **Market → Sources → add source → paste** `https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json` **→ select it**. Installation still goes through the Market's npm-identity verification and your confirmation.
|
|
215
|
+
|
|
212
216
|
## License
|
|
213
217
|
|
|
214
218
|
[LICENSE](LICENSE) (Apache License 2.0) © 2026 dsh-mask contributors
|
package/README.pt.md
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
|
|
26
26
|
| Superfície | Estado |
|
|
27
27
|
|---|---|
|
|
28
|
-
| Harness | DeepSeek Harness `
|
|
28
|
+
| Harness | DeepSeek Harness `dsh-v0.1.3-alpha.1` (adaptado em 2026-09-02): o envelope de sessão mantém seu campo ignorable apenas para compatibilidade de leitura de logs armazenados - o Session.append ainda não consegue estampá-lo, então o comportamento da porta não muda. Verificado em 2026-09-06 contra o checkout master `dsh-v0.1.3-alpha.1` (cadeia completa de portas + smoke de instalação de perfil). |
|
|
29
29
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
30
30
|
| Plataformas | Onde o DSH rodar (host puro, regex sem dependências; sem metade de navegador) |
|
|
31
31
|
| Modelo | Modelos de texto totalmente suportados |
|
|
@@ -121,7 +121,7 @@ Todas as opções são campos Schemastery `Config` (alteráveis via cordis.yml).
|
|
|
121
121
|
|
|
122
122
|
- **Somente regex.** `person` e `address` exigem um reconhecedor NER externo; falham ao carregar. Coberto de série: telefone, e-mail, documento, cartão, chave e IP (opt-in).
|
|
123
123
|
- **A restauração visual precisa de uma metade de cliente.** Mascarar é host-side; desmascarar bolhas na UI é uma função de navegador que esta forma host puro não inclui. A tabela e `restore()` são o seam host-side completo.
|
|
124
|
-
- **Eventos em `0.1.2-
|
|
124
|
+
- **Eventos em `0.1.2-rc.1`.** O host ainda não registra `mask/*`, então os appends de auditoria são omitidos (sessões continuam carregando).
|
|
125
125
|
|
|
126
126
|
## Development
|
|
127
127
|
|
|
@@ -191,3 +191,7 @@ Este projeto é um dos [33 plugins de DeepSeek Harness](https://github.com/Perry
|
|
|
191
191
|
## License
|
|
192
192
|
|
|
193
193
|
[LICENSE](LICENSE) (Apache License 2.0) © 2026 dsh-mask contributors
|
|
194
|
+
|
|
195
|
+
### Instalar a partir do mercado do DSH Desktop
|
|
196
|
+
|
|
197
|
+
Todos os plugins PerryLink podem ser explorados no mercado integrado do DSH Desktop: **Market → Sources → add source → colar** `https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json` **→ selecionar**. A instalação continua passando pela verificação de identidade npm do mercado e pela sua confirmação.
|
package/README.zh.md
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
|
|
26
26
|
| 维度 | 状态 |
|
|
27
27
|
|---|---|
|
|
28
|
-
| Harness | DeepSeek Harness `
|
|
28
|
+
| Harness | DeepSeek Harness `dsh-v0.1.3-alpha.1`(2026-09-02 已适配):会话信封保留 ignorable 字段但仅用于存量日志读取兼容——Session.append 仍无法盖章,门控行为不变。已于 2026-09-06 针对 `dsh-v0.1.3-alpha.1` master checkout 核验(全量门禁链 + profile 安装冒烟测试)。 |
|
|
29
29
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
30
30
|
| 平台 | 任何 DSH 可运行处(纯 host、零依赖正则;无浏览器半) |
|
|
31
31
|
| 模型 | 文本模型完全支持;无需额外模型能力 |
|
|
@@ -139,13 +139,13 @@ profile patch 覆盖示例:
|
|
|
139
139
|
|
|
140
140
|
- **仅正则。** 姓名(`person`)与地址(`address`)识别需要外部 NER 识别器,纯 host 零依赖形态未捆绑;`mode: regex+ner` 与这些实体在加载期响亮失败。开箱即用覆盖电话、邮箱、身份证、银行卡、密钥与(可选)IP。
|
|
141
141
|
- **展示层还原需要浏览器半。** 遮罩完全在 host 侧,但客户端 UI 中透明还原助手气泡属于浏览器半功能,本纯 host 形态未交付;恢复表与 `restore()` 是供客户端插件消费的完整 host 侧 seam,交互需求现由 `/mask restore` 覆盖。
|
|
142
|
-
- **`0.1.2-
|
|
142
|
+
- **`0.1.2-rc.1` 会话事件。** 宿主尚未收录 `mask/*` 事件类型,且其 `Session.append` 不盖章 `ignorable` 信封,因此 alpha.3 上会话日志审计 append 被跳过(会话仍可加载);宿主收录类型或支持 `ignorable` 信封后自动开启。
|
|
143
143
|
|
|
144
144
|
## Development
|
|
145
145
|
|
|
146
146
|
```sh
|
|
147
147
|
pnpm install # node ^22.19 || >=24
|
|
148
|
-
pnpm run typecheck && pnpm run typecheck:ci # tsc --checkJs(对照 0.1.2-
|
|
148
|
+
pnpm run typecheck && pnpm run typecheck:ci # tsc --checkJs(对照 0.1.2-rc.1 peers)
|
|
149
149
|
pnpm test # node --test
|
|
150
150
|
pnpm run verify:self-contained # 依赖 spec 均来自 registry
|
|
151
151
|
pnpm run verify:artifacts # 发布文件齐全 + index.mjs 可 import
|
|
@@ -209,3 +209,7 @@ PII 基准(108 个合成样本的逐类 P/R/F1)见 [`benchmark/RESULTS.md`](
|
|
|
209
209
|
## License
|
|
210
210
|
|
|
211
211
|
[LICENSE](LICENSE)(Apache License 2.0)© 2026 dsh-mask contributors
|
|
212
|
+
|
|
213
|
+
### 从 DSH Desktop 市场安装
|
|
214
|
+
|
|
215
|
+
所有 PerryLink 插件均可在 DSH Desktop 内置市场中浏览:**市场 → 来源 → 添加来源 → 粘贴** `https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json` **→ 选中**。安装仍需通过市场的 npm 身份校验与你的确认。
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-mask",
|
|
3
3
|
"description": "PII masking middleware for DeepSeek Harness: anonymize names, phones, emails, ID cards, bank cards, keys, and addresses to placeholders before they reach the model, restore them at the display layer, keep the restore table only in memory and a controlled storage domain, never log plaintext, and expose /mask and the mask_test tool",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.4",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "git+https://github.com/PerryLink/dsh-mask.git"
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
],
|
|
71
71
|
"compatibility": {
|
|
72
72
|
"dshVersions": [
|
|
73
|
-
"0.1.2-
|
|
73
|
+
"0.1.2-rc.1"
|
|
74
74
|
]
|
|
75
75
|
},
|
|
76
76
|
"capability": {
|
|
@@ -88,29 +88,30 @@
|
|
|
88
88
|
},
|
|
89
89
|
"peerDependencies": {
|
|
90
90
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
91
|
-
"@deepseek-ai/dsh-commands": ">=0.1.
|
|
92
|
-
"@deepseek-ai/dsh-session": ">=0.1.
|
|
93
|
-
"@deepseek-ai/dsh-storage": ">=0.1.
|
|
94
|
-
"@deepseek-ai/dsh-storage-domain": ">=0.1.
|
|
95
|
-
"@deepseek-ai/dsh-storage-json": ">=0.1.
|
|
96
|
-
"@deepseek-ai/dsh-tools": ">=0.1.
|
|
91
|
+
"@deepseek-ai/dsh-commands": ">=0.1.2-rc.1 <0.2.0",
|
|
92
|
+
"@deepseek-ai/dsh-session": ">=0.1.2-rc.1 <0.2.0",
|
|
93
|
+
"@deepseek-ai/dsh-storage": ">=0.1.2-rc.1 <0.2.0",
|
|
94
|
+
"@deepseek-ai/dsh-storage-domain": ">=0.1.2-rc.1 <0.2.0",
|
|
95
|
+
"@deepseek-ai/dsh-storage-json": ">=0.1.2-rc.1 <0.2.0",
|
|
96
|
+
"@deepseek-ai/dsh-tools": ">=0.1.2-rc.1 <0.2.0",
|
|
97
97
|
"@deepseek-ai/schemastery": "^3.18.2"
|
|
98
98
|
},
|
|
99
99
|
"dependencies": {
|
|
100
100
|
"zod": "^4.4.3"
|
|
101
101
|
},
|
|
102
|
-
"devDependencies": {
|
|
102
|
+
"devDependencies": {
|
|
103
|
+
"@deepseek-ai/dsh-attachment": "0.1.2-rc.1",
|
|
103
104
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
104
|
-
"@deepseek-ai/cordis-plugin-include": "1.0.
|
|
105
|
-
"@deepseek-ai/cordis-plugin-loader": "1.0.
|
|
106
|
-
"@deepseek-ai/dsh-agent": "0.1.2-
|
|
107
|
-
"@deepseek-ai/dsh-commands": "0.1.2-
|
|
108
|
-
"@deepseek-ai/dsh-session": "0.1.2-
|
|
109
|
-
"@deepseek-ai/dsh-storage": "0.1.2-
|
|
110
|
-
"@deepseek-ai/dsh-storage-domain": "0.1.2-
|
|
111
|
-
"@deepseek-ai/dsh-storage-json": "0.1.2-
|
|
112
|
-
"@deepseek-ai/dsh-system-prompt": "0.1.2-
|
|
113
|
-
"@deepseek-ai/dsh-tools": "0.1.2-
|
|
105
|
+
"@deepseek-ai/cordis-plugin-include": "^1.0.7",
|
|
106
|
+
"@deepseek-ai/cordis-plugin-loader": "^1.0.3",
|
|
107
|
+
"@deepseek-ai/dsh-agent": "0.1.2-rc.1",
|
|
108
|
+
"@deepseek-ai/dsh-commands": "0.1.2-rc.1",
|
|
109
|
+
"@deepseek-ai/dsh-session": "0.1.2-rc.1",
|
|
110
|
+
"@deepseek-ai/dsh-storage": "0.1.2-rc.1",
|
|
111
|
+
"@deepseek-ai/dsh-storage-domain": "0.1.2-rc.1",
|
|
112
|
+
"@deepseek-ai/dsh-storage-json": "0.1.2-rc.1",
|
|
113
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.2-rc.1",
|
|
114
|
+
"@deepseek-ai/dsh-tools": "0.1.2-rc.1",
|
|
114
115
|
"@deepseek-ai/schemastery": "^3.18.2",
|
|
115
116
|
"@types/node": "^22.19.0",
|
|
116
117
|
"oxlint": "0.18.1",
|