dsh-rewind-plugin 0.19.0 → 0.20.0-alpha.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.
@@ -23,26 +23,13 @@
23
23
  * not in that channel (see docs/compat/audit.md, RU-I18N), and no host command
24
24
  * OUTPUT is localized for anyone, so this dictionary is what carries it.
25
25
  *
26
- * English is the key-set source of truth; zh is checked complete against it.
26
+ * English is the canonical key set: every other dictionary is typed complete
27
+ * against it, and the tests compare every dictionary's template placeholders
28
+ * with it. Adding a language is one dictionary plus one entry in `HOST_DICTS`.
27
29
  *
28
30
  * @module dsh-rewind/locales
29
31
  */
30
- /** Host-side supported locale ids, mirroring the harness's shipped locales. */
31
- export type HostLocaleId = 'zh' | 'en';
32
- /**
33
- * The locale a durable preference selects from this plugin's dictionaries.
34
- *
35
- * The harness accepts any BCP 47-style id while this plugin ships only `zh` and
36
- * `en`, so the PRIMARY subtag decides (`zh-CN` → zh) and everything else — an
37
- * unset preference, an unsupported language, a non-string value — is English.
38
- * The client's own selection tries the full tag before the primary subtag; over
39
- * these two dictionaries the outcome is the same.
40
- *
41
- * @param preference - the raw `locale.preference` value.
42
- * @returns the dictionary this plugin renders its host copy in.
43
- */
44
- export declare function preferredLocale(preference: unknown): HostLocaleId;
45
- /** English dictionary — the key-set source of truth (neutral default). */
32
+ /** English dictionary — the canonical key set (neutral default). */
46
33
  export declare const en: {
47
34
  'plan.skip': string;
48
35
  'skipReason.oversized': string;
@@ -93,13 +80,101 @@ export declare const en: {
93
80
  export type HostKey = keyof typeof en;
94
81
  /** Chinese dictionary, checked complete against the en key set. */
95
82
  export declare const zh: Record<HostKey, string>;
96
- /** The host dictionaries keyed by locale id. */
97
- export declare const HOST_DICTS: Record<HostLocaleId, Record<HostKey, string>>;
83
+ /** Japanese dictionary, checked complete against the en key set. */
84
+ export declare const ja: Record<HostKey, string>;
85
+ /** Spanish dictionary, checked complete against the en key set. */
86
+ export declare const es: Record<HostKey, string>;
87
+ /** French dictionary, checked complete against the en key set. */
88
+ export declare const fr: Record<HostKey, string>;
89
+ /** German dictionary, checked complete against the en key set. */
90
+ export declare const de: Record<HostKey, string>;
91
+ /** Russian dictionary, checked complete against the en key set. */
92
+ export declare const ru: Record<HostKey, string>;
93
+ /** Brazilian Portuguese dictionary, checked complete against the en key set. */
94
+ export declare const pt: Record<HostKey, string>;
95
+ /**
96
+ * Every language this plugin ships a host dictionary for. English is first as
97
+ * the canonical dictionary; the rest follow the harness's language order.
98
+ * Adding a language is one dictionary above plus one entry here — the locale-id
99
+ * type, the preference resolver, and the tests all derive from this map.
100
+ */
101
+ export declare const HOST_DICTS: {
102
+ en: {
103
+ 'plan.skip': string;
104
+ 'skipReason.oversized': string;
105
+ 'error.invalidTarget': string;
106
+ 'sep.list': string;
107
+ 'sep.clause': string;
108
+ 'failures.suffix': string;
109
+ 'failures.item': string;
110
+ inflight: string;
111
+ stopFailed: string;
112
+ cancelled: string;
113
+ failed: string;
114
+ 'restore.count': string;
115
+ 'delete.count': string;
116
+ 'skip.count': string;
117
+ noRestorable: string;
118
+ backupOff: string;
119
+ storeUnsupported: string;
120
+ success: string;
121
+ noUserMessages: string;
122
+ 'command.description': string;
123
+ 'command.undoDescription': string;
124
+ 'engine.description': string;
125
+ 'engine.rejected': string;
126
+ 'engine.inputHint': string;
127
+ 'cleanup.description': string;
128
+ 'cleanup.inputHint': string;
129
+ 'cleanup.status': string;
130
+ 'cleanup.enabled': string;
131
+ 'cleanup.disabled': string;
132
+ 'cleanup.onOk': string;
133
+ 'cleanup.offOk': string;
134
+ 'cleanup.maxAgeOk': string;
135
+ 'cleanup.cfgInvalid': string;
136
+ 'cleanup.saveFailed': string;
137
+ 'cleanup.runDry': string;
138
+ 'cleanup.runApply': string;
139
+ 'cleanup.runFailed': string;
140
+ 'cleanup.skipped': string;
141
+ 'cleanup.clearDry': string;
142
+ 'cleanup.clearApply': string;
143
+ 'cleanup.clearActive': string;
144
+ 'cleanup.clearCancelled': string;
145
+ 'cleanup.clearFailed': string;
146
+ 'cleanup.usage': string;
147
+ };
148
+ zh: Record<"backupOff" | "cancelled" | "cleanup.cfgInvalid" | "cleanup.clearActive" | "cleanup.clearApply" | "cleanup.clearCancelled" | "cleanup.clearDry" | "cleanup.clearFailed" | "cleanup.description" | "cleanup.disabled" | "cleanup.enabled" | "cleanup.inputHint" | "cleanup.maxAgeOk" | "cleanup.offOk" | "cleanup.onOk" | "cleanup.runApply" | "cleanup.runDry" | "cleanup.runFailed" | "cleanup.saveFailed" | "cleanup.skipped" | "cleanup.status" | "cleanup.usage" | "command.description" | "command.undoDescription" | "delete.count" | "engine.description" | "engine.inputHint" | "engine.rejected" | "error.invalidTarget" | "failed" | "failures.item" | "failures.suffix" | "inflight" | "noRestorable" | "noUserMessages" | "plan.skip" | "restore.count" | "sep.clause" | "sep.list" | "skip.count" | "skipReason.oversized" | "stopFailed" | "storeUnsupported" | "success", string>;
149
+ ja: Record<"backupOff" | "cancelled" | "cleanup.cfgInvalid" | "cleanup.clearActive" | "cleanup.clearApply" | "cleanup.clearCancelled" | "cleanup.clearDry" | "cleanup.clearFailed" | "cleanup.description" | "cleanup.disabled" | "cleanup.enabled" | "cleanup.inputHint" | "cleanup.maxAgeOk" | "cleanup.offOk" | "cleanup.onOk" | "cleanup.runApply" | "cleanup.runDry" | "cleanup.runFailed" | "cleanup.saveFailed" | "cleanup.skipped" | "cleanup.status" | "cleanup.usage" | "command.description" | "command.undoDescription" | "delete.count" | "engine.description" | "engine.inputHint" | "engine.rejected" | "error.invalidTarget" | "failed" | "failures.item" | "failures.suffix" | "inflight" | "noRestorable" | "noUserMessages" | "plan.skip" | "restore.count" | "sep.clause" | "sep.list" | "skip.count" | "skipReason.oversized" | "stopFailed" | "storeUnsupported" | "success", string>;
150
+ es: Record<"backupOff" | "cancelled" | "cleanup.cfgInvalid" | "cleanup.clearActive" | "cleanup.clearApply" | "cleanup.clearCancelled" | "cleanup.clearDry" | "cleanup.clearFailed" | "cleanup.description" | "cleanup.disabled" | "cleanup.enabled" | "cleanup.inputHint" | "cleanup.maxAgeOk" | "cleanup.offOk" | "cleanup.onOk" | "cleanup.runApply" | "cleanup.runDry" | "cleanup.runFailed" | "cleanup.saveFailed" | "cleanup.skipped" | "cleanup.status" | "cleanup.usage" | "command.description" | "command.undoDescription" | "delete.count" | "engine.description" | "engine.inputHint" | "engine.rejected" | "error.invalidTarget" | "failed" | "failures.item" | "failures.suffix" | "inflight" | "noRestorable" | "noUserMessages" | "plan.skip" | "restore.count" | "sep.clause" | "sep.list" | "skip.count" | "skipReason.oversized" | "stopFailed" | "storeUnsupported" | "success", string>;
151
+ fr: Record<"backupOff" | "cancelled" | "cleanup.cfgInvalid" | "cleanup.clearActive" | "cleanup.clearApply" | "cleanup.clearCancelled" | "cleanup.clearDry" | "cleanup.clearFailed" | "cleanup.description" | "cleanup.disabled" | "cleanup.enabled" | "cleanup.inputHint" | "cleanup.maxAgeOk" | "cleanup.offOk" | "cleanup.onOk" | "cleanup.runApply" | "cleanup.runDry" | "cleanup.runFailed" | "cleanup.saveFailed" | "cleanup.skipped" | "cleanup.status" | "cleanup.usage" | "command.description" | "command.undoDescription" | "delete.count" | "engine.description" | "engine.inputHint" | "engine.rejected" | "error.invalidTarget" | "failed" | "failures.item" | "failures.suffix" | "inflight" | "noRestorable" | "noUserMessages" | "plan.skip" | "restore.count" | "sep.clause" | "sep.list" | "skip.count" | "skipReason.oversized" | "stopFailed" | "storeUnsupported" | "success", string>;
152
+ de: Record<"backupOff" | "cancelled" | "cleanup.cfgInvalid" | "cleanup.clearActive" | "cleanup.clearApply" | "cleanup.clearCancelled" | "cleanup.clearDry" | "cleanup.clearFailed" | "cleanup.description" | "cleanup.disabled" | "cleanup.enabled" | "cleanup.inputHint" | "cleanup.maxAgeOk" | "cleanup.offOk" | "cleanup.onOk" | "cleanup.runApply" | "cleanup.runDry" | "cleanup.runFailed" | "cleanup.saveFailed" | "cleanup.skipped" | "cleanup.status" | "cleanup.usage" | "command.description" | "command.undoDescription" | "delete.count" | "engine.description" | "engine.inputHint" | "engine.rejected" | "error.invalidTarget" | "failed" | "failures.item" | "failures.suffix" | "inflight" | "noRestorable" | "noUserMessages" | "plan.skip" | "restore.count" | "sep.clause" | "sep.list" | "skip.count" | "skipReason.oversized" | "stopFailed" | "storeUnsupported" | "success", string>;
153
+ ru: Record<"backupOff" | "cancelled" | "cleanup.cfgInvalid" | "cleanup.clearActive" | "cleanup.clearApply" | "cleanup.clearCancelled" | "cleanup.clearDry" | "cleanup.clearFailed" | "cleanup.description" | "cleanup.disabled" | "cleanup.enabled" | "cleanup.inputHint" | "cleanup.maxAgeOk" | "cleanup.offOk" | "cleanup.onOk" | "cleanup.runApply" | "cleanup.runDry" | "cleanup.runFailed" | "cleanup.saveFailed" | "cleanup.skipped" | "cleanup.status" | "cleanup.usage" | "command.description" | "command.undoDescription" | "delete.count" | "engine.description" | "engine.inputHint" | "engine.rejected" | "error.invalidTarget" | "failed" | "failures.item" | "failures.suffix" | "inflight" | "noRestorable" | "noUserMessages" | "plan.skip" | "restore.count" | "sep.clause" | "sep.list" | "skip.count" | "skipReason.oversized" | "stopFailed" | "storeUnsupported" | "success", string>;
154
+ pt: Record<"backupOff" | "cancelled" | "cleanup.cfgInvalid" | "cleanup.clearActive" | "cleanup.clearApply" | "cleanup.clearCancelled" | "cleanup.clearDry" | "cleanup.clearFailed" | "cleanup.description" | "cleanup.disabled" | "cleanup.enabled" | "cleanup.inputHint" | "cleanup.maxAgeOk" | "cleanup.offOk" | "cleanup.onOk" | "cleanup.runApply" | "cleanup.runDry" | "cleanup.runFailed" | "cleanup.saveFailed" | "cleanup.skipped" | "cleanup.status" | "cleanup.usage" | "command.description" | "command.undoDescription" | "delete.count" | "engine.description" | "engine.inputHint" | "engine.rejected" | "error.invalidTarget" | "failed" | "failures.item" | "failures.suffix" | "inflight" | "noRestorable" | "noUserMessages" | "plan.skip" | "restore.count" | "sep.clause" | "sep.list" | "skip.count" | "skipReason.oversized" | "stopFailed" | "storeUnsupported" | "success", string>;
155
+ };
156
+ /** Host-side supported locale ids (the registry keys). */
157
+ export type HostLocaleId = keyof typeof HOST_DICTS;
158
+ /** Neutral default, matching the harness's `FALLBACK_LOCALE`. */
159
+ export declare const DEFAULT_HOST_LOCALE: "en";
160
+ /**
161
+ * The locale a durable preference selects from this plugin's dictionaries.
162
+ *
163
+ * The harness accepts any BCP 47-style id while this plugin ships a fixed set,
164
+ * so the preference is matched against the registry: the full tag first
165
+ * (case-insensitively), then its primary subtag (`xx-YY` → `xx`), mirroring the
166
+ * client runtime. Anything else — an unset preference, an unsupported language,
167
+ * a non-string value — is the neutral default.
168
+ *
169
+ * @param preference - the raw `locale.preference` value.
170
+ * @returns the dictionary this plugin renders its host copy in.
171
+ */
172
+ export declare function preferredLocale(preference: unknown): HostLocaleId;
98
173
  /**
99
174
  * Render one dictionary key with `{name}` template interpolation. Unknown
100
175
  * params are ignored; a missing key falls back to the raw key so a dictionary
101
176
  * gap is visible instead of blank.
102
- * @param lang - the active locale.
177
+ * @param lang - the active locale id.
103
178
  * @param key - the dictionary key.
104
179
  * @param params - `{name}` substitution values.
105
180
  */
package/locale/de.json ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "meta": {
3
+ "title": "Unterhaltung zurückspulen",
4
+ "description": "Spulen Sie zu einer früheren Nachricht zurück und stellen Sie optional Arbeitsbereichsdateien wieder her.",
5
+ "detail": "docs/DETAIL.md"
6
+ }
7
+ }
package/locale/en.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "meta": {
3
3
  "title": "Conversation rewind",
4
- "description": "Rewind to an earlier message, optionally restoring workspace files."
4
+ "description": "Rewind to an earlier message, optionally restoring workspace files.",
5
+ "detail": "docs/DETAIL.md"
5
6
  }
6
7
  }
package/locale/es.json ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "meta": {
3
+ "title": "Rebobinado de la conversación",
4
+ "description": "Rebobina hasta un mensaje anterior y, opcionalmente, restaura los archivos del espacio de trabajo.",
5
+ "detail": "docs/DETAIL.md"
6
+ }
7
+ }
package/locale/fr.json ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "meta": {
3
+ "title": "Rembobinage de la conversation",
4
+ "description": "Rembobinez jusqu’à un message antérieur, avec restauration facultative des fichiers de l’espace de travail.",
5
+ "detail": "docs/DETAIL.md"
6
+ }
7
+ }
package/locale/ja.json ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "meta": {
3
+ "title": "会話の巻き戻し",
4
+ "description": "以前のメッセージまで巻き戻します。ワークスペースのファイルもあわせて復元できます。",
5
+ "detail": "docs/DETAIL.md"
6
+ }
7
+ }
package/locale/pt.json ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "meta": {
3
+ "title": "Rebobinar conversa",
4
+ "description": "Rebobine até uma mensagem anterior e, opcionalmente, restaure os arquivos do espaço de trabalho.",
5
+ "detail": "docs/DETAIL.md"
6
+ }
7
+ }
package/locale/ru.json ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "meta": {
3
+ "title": "Откат беседы",
4
+ "description": "Откатитесь к более раннему сообщению и при необходимости восстановите файлы рабочей области.",
5
+ "detail": "docs/DETAIL.md"
6
+ }
7
+ }
package/locale/zh.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "meta": {
3
3
  "title": "对话回退",
4
- "description": "把对话回退到更早的消息,可选一并还原工作区文件。"
4
+ "description": "把对话回退到更早的消息,可选一并还原工作区文件。",
5
+ "detail": "docs/DETAIL.zh.md"
5
6
  }
6
7
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dsh-rewind-plugin",
3
- "version": "0.19.0",
4
- "description": "In-window conversation rewind with workspace file restore · 同窗口内对话回退并可还原工作区文件",
3
+ "version": "0.20.0-alpha.1",
4
+ "description": "In-window conversation rewind with workspace file restore",
5
5
  "icon": "./assets/icon.svg",
6
6
  "keywords": [
7
7
  "deepseek-harness",
@@ -19,8 +19,8 @@
19
19
  "homepage": "https://github.com/SiriLee/dsh-rewind#readme",
20
20
  "license": "MIT",
21
21
  "engines": {
22
- "node": "^22.19.0 || >=24.0.0",
23
- "dsh": ">=0.2.1-rc.1 <0.3.0-0"
22
+ "node": ">=24.9.0",
23
+ "dsh": ">=0.2.2-alpha.2 <0.3.0-0"
24
24
  },
25
25
  "type": "module",
26
26
  "main": "lib/index.js",
@@ -40,10 +40,11 @@
40
40
  "files": [
41
41
  "lib",
42
42
  "cordis.patch.yml",
43
- "README.md",
44
- "README.en.md",
43
+ "docs/DETAIL.md",
44
+ "docs/DETAIL.zh.md",
45
+ "docs/preview.svg",
46
+ "docs/preview.zh.svg",
45
47
  "SECURITY.md",
46
- "LICENSE",
47
48
  "locale/*.json",
48
49
  "assets/icon.svg"
49
50
  ],
@@ -67,6 +68,7 @@
67
68
  "typecheck": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.client.json && tsc --noEmit -p tsconfig.client-test.json",
68
69
  "test": "vitest run",
69
70
  "verify:host": "node scripts/verify-host.mjs",
71
+ "verify:previews": "node scripts/verify-preview-assets.mjs",
70
72
  "check": "npm run typecheck && npm run build && npm test && node scripts/verify-host.mjs && npm pack --dry-run",
71
73
  "prepare": "npm run build"
72
74
  },
@@ -74,24 +76,24 @@
74
76
  "access": "public"
75
77
  },
76
78
  "peerDependencies": {
77
- "@deepseek-ai/cordis": "^4.0.5",
78
- "@deepseek-ai/dsh-client-connection": "^0.2.1-rc.1",
79
- "@deepseek-ai/dsh-client-locale": "^0.2.1-rc.1",
80
- "@deepseek-ai/dsh-client-ui-commands": "^0.2.1-rc.1",
81
- "@deepseek-ai/dsh-client-ui-plugin-manager": "^0.2.1-rc.1",
82
- "@deepseek-ai/dsh-client-ui-primitives": "^0.2.1-rc.1",
83
- "@deepseek-ai/dsh-client-ui-settings": "^0.2.1-rc.1",
84
- "@deepseek-ai/dsh-client-ui-slots": "^0.2.1-rc.1",
85
- "@deepseek-ai/dsh-commands": "^0.2.1-rc.1",
86
- "@deepseek-ai/dsh-fs": "^0.2.1-rc.1",
87
- "@deepseek-ai/dsh-home-paths": "^0.2.1-rc.1",
88
- "@deepseek-ai/dsh-llm": "^0.2.1-rc.1",
89
- "@deepseek-ai/dsh-sandbox": "^0.2.1-rc.1",
90
- "@deepseek-ai/dsh-session": "^0.2.1-rc.1",
91
- "@deepseek-ai/dsh-settings": "^0.2.1-rc.1",
92
- "@deepseek-ai/dsh-tools": "^0.2.1-rc.1",
93
- "@deepseek-ai/dsh-working-directory": "^0.2.1-rc.1",
94
- "@deepseek-ai/schemastery": "^3.18.5"
79
+ "@deepseek-ai/cordis": "^4.0.6-alpha.1",
80
+ "@deepseek-ai/dsh-client-connection": ">=0.2.2-alpha.2 <0.3.0-0",
81
+ "@deepseek-ai/dsh-client-locale": ">=0.2.2-alpha.2 <0.3.0-0",
82
+ "@deepseek-ai/dsh-client-ui-commands": ">=0.2.2-alpha.2 <0.3.0-0",
83
+ "@deepseek-ai/dsh-client-ui-plugin-manager": ">=0.2.2-alpha.2 <0.3.0-0",
84
+ "@deepseek-ai/dsh-client-ui-primitives": ">=0.2.2-alpha.2 <0.3.0-0",
85
+ "@deepseek-ai/dsh-client-ui-settings": ">=0.2.2-alpha.2 <0.3.0-0",
86
+ "@deepseek-ai/dsh-client-ui-slots": ">=0.2.2-alpha.2 <0.3.0-0",
87
+ "@deepseek-ai/dsh-commands": ">=0.2.2-alpha.2 <0.3.0-0",
88
+ "@deepseek-ai/dsh-fs": ">=0.2.2-alpha.2 <0.3.0-0",
89
+ "@deepseek-ai/dsh-home-paths": ">=0.2.2-alpha.2 <0.3.0-0",
90
+ "@deepseek-ai/dsh-llm": ">=0.2.2-alpha.2 <0.3.0-0",
91
+ "@deepseek-ai/dsh-sandbox": ">=0.2.2-alpha.2 <0.3.0-0",
92
+ "@deepseek-ai/dsh-session": ">=0.2.2-alpha.2 <0.3.0-0",
93
+ "@deepseek-ai/dsh-settings": ">=0.2.2-alpha.2 <0.3.0-0",
94
+ "@deepseek-ai/dsh-tools": ">=0.2.2-alpha.2 <0.3.0-0",
95
+ "@deepseek-ai/dsh-working-directory": ">=0.2.2-alpha.2 <0.3.0-0",
96
+ "@deepseek-ai/schemastery": "^3.18.6-alpha.1"
95
97
  },
96
98
  "peerDependenciesMeta": {
97
99
  "@deepseek-ai/cordis": {
@@ -150,45 +152,45 @@
150
152
  }
151
153
  },
152
154
  "devDependencies": {
153
- "@deepseek-ai/cordis": "4.0.5",
154
- "@deepseek-ai/cosmokit": "1.8.6",
155
- "@deepseek-ai/dsh-agent": "0.2.1-rc.3",
156
- "@deepseek-ai/dsh-api-session-controller": "0.2.1-rc.3",
157
- "@deepseek-ai/dsh-attachment": "0.2.1-rc.3",
158
- "@deepseek-ai/dsh-client-connection": "0.2.1-rc.3",
159
- "@deepseek-ai/dsh-client-locale": "0.2.1-rc.3",
160
- "@deepseek-ai/dsh-client-store": "0.2.1-rc.3",
161
- "@deepseek-ai/dsh-client-ui-commands": "0.2.1-rc.3",
162
- "@deepseek-ai/dsh-client-ui-conversation": "0.2.1-rc.3",
163
- "@deepseek-ai/dsh-client-ui-input-trigger": "0.2.1-rc.3",
164
- "@deepseek-ai/dsh-client-ui-plugin-manager": "0.2.1-rc.3",
165
- "@deepseek-ai/dsh-client-ui-primitives": "0.2.1-rc.3",
166
- "@deepseek-ai/dsh-client-ui-session": "0.2.1-rc.3",
167
- "@deepseek-ai/dsh-client-ui-settings": "0.2.1-rc.3",
168
- "@deepseek-ai/dsh-client-ui-slots": "0.2.1-rc.3",
169
- "@deepseek-ai/dsh-command-compact": "0.2.1-rc.3",
170
- "@deepseek-ai/dsh-commands": "0.2.1-rc.3",
171
- "@deepseek-ai/dsh-compaction": "0.2.1-rc.3",
172
- "@deepseek-ai/dsh-compaction-basic": "0.2.1-rc.3",
173
- "@deepseek-ai/dsh-compaction-image-offload": "0.2.1-rc.3",
174
- "@deepseek-ai/dsh-fs": "0.2.1-rc.3",
175
- "@deepseek-ai/dsh-goal": "0.2.1-rc.3",
176
- "@deepseek-ai/dsh-home-paths": "0.2.1-rc.3",
177
- "@deepseek-ai/dsh-llm": "0.2.1-rc.3",
178
- "@deepseek-ai/dsh-plan-mode": "0.2.1-rc.3",
179
- "@deepseek-ai/dsh-sandbox": "0.2.1-rc.3",
180
- "@deepseek-ai/dsh-scope": "0.2.1-rc.3",
181
- "@deepseek-ai/dsh-session": "0.2.1-rc.3",
182
- "@deepseek-ai/dsh-session-projection": "0.2.1-rc.3",
183
- "@deepseek-ai/dsh-session-stats": "0.2.1-rc.3",
184
- "@deepseek-ai/dsh-session-title": "0.2.1-rc.3",
185
- "@deepseek-ai/dsh-settings": "0.2.1-rc.3",
186
- "@deepseek-ai/dsh-token-meter": "0.2.1-rc.3",
187
- "@deepseek-ai/dsh-tools": "0.2.1-rc.3",
188
- "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.3",
189
- "@deepseek-ai/dsh-user-questions": "0.2.1-rc.3",
190
- "@deepseek-ai/dsh-working-directory": "0.2.1-rc.3",
191
- "@deepseek-ai/schemastery": "3.18.5",
155
+ "@deepseek-ai/cordis": "4.0.6-alpha.1",
156
+ "@deepseek-ai/cosmokit": "1.8.7-alpha.1",
157
+ "@deepseek-ai/dsh-agent": "0.2.2-alpha.2",
158
+ "@deepseek-ai/dsh-api-session-controller": "0.2.2-alpha.2",
159
+ "@deepseek-ai/dsh-attachment": "0.2.2-alpha.2",
160
+ "@deepseek-ai/dsh-client-connection": "0.2.2-alpha.2",
161
+ "@deepseek-ai/dsh-client-locale": "0.2.2-alpha.2",
162
+ "@deepseek-ai/dsh-client-store": "0.2.2-alpha.2",
163
+ "@deepseek-ai/dsh-client-ui-commands": "0.2.2-alpha.2",
164
+ "@deepseek-ai/dsh-client-ui-conversation": "0.2.2-alpha.2",
165
+ "@deepseek-ai/dsh-client-ui-input-trigger": "0.2.2-alpha.2",
166
+ "@deepseek-ai/dsh-client-ui-plugin-manager": "0.2.2-alpha.2",
167
+ "@deepseek-ai/dsh-client-ui-primitives": "0.2.2-alpha.2",
168
+ "@deepseek-ai/dsh-client-ui-session": "0.2.2-alpha.2",
169
+ "@deepseek-ai/dsh-client-ui-settings": "0.2.2-alpha.2",
170
+ "@deepseek-ai/dsh-client-ui-slots": "0.2.2-alpha.2",
171
+ "@deepseek-ai/dsh-command-compact": "0.2.2-alpha.2",
172
+ "@deepseek-ai/dsh-commands": "0.2.2-alpha.2",
173
+ "@deepseek-ai/dsh-compaction": "0.2.2-alpha.2",
174
+ "@deepseek-ai/dsh-compaction-basic": "0.2.2-alpha.2",
175
+ "@deepseek-ai/dsh-compaction-image-offload": "0.2.2-alpha.2",
176
+ "@deepseek-ai/dsh-fs": "0.2.2-alpha.2",
177
+ "@deepseek-ai/dsh-goal": "0.2.2-alpha.2",
178
+ "@deepseek-ai/dsh-home-paths": "0.2.2-alpha.2",
179
+ "@deepseek-ai/dsh-llm": "0.2.2-alpha.2",
180
+ "@deepseek-ai/dsh-plan-mode": "0.2.2-alpha.2",
181
+ "@deepseek-ai/dsh-sandbox": "0.2.2-alpha.2",
182
+ "@deepseek-ai/dsh-scope": "0.2.2-alpha.2",
183
+ "@deepseek-ai/dsh-session": "0.2.2-alpha.2",
184
+ "@deepseek-ai/dsh-session-projection": "0.2.2-alpha.2",
185
+ "@deepseek-ai/dsh-session-stats": "0.2.2-alpha.2",
186
+ "@deepseek-ai/dsh-session-title": "0.2.2-alpha.2",
187
+ "@deepseek-ai/dsh-settings": "0.2.2-alpha.2",
188
+ "@deepseek-ai/dsh-token-meter": "0.2.2-alpha.2",
189
+ "@deepseek-ai/dsh-tools": "0.2.2-alpha.2",
190
+ "@deepseek-ai/dsh-typert-protocol": "0.2.2-alpha.2",
191
+ "@deepseek-ai/dsh-user-questions": "0.2.2-alpha.2",
192
+ "@deepseek-ai/dsh-working-directory": "0.2.2-alpha.2",
193
+ "@deepseek-ai/schemastery": "3.18.6-alpha.1",
192
194
  "@types/node": "^24.0.0",
193
195
  "@types/react": "^18.3.31",
194
196
  "@types/react-dom": "^18.3.7",