dsh-code 1.0.6 → 1.2.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.
Files changed (86) hide show
  1. package/README.en.md +123 -26
  2. package/README.md +124 -27
  3. package/bin/deepseek.mjs +283 -35
  4. package/cordis.patch.yml +97 -0
  5. package/lib/index.mjs +5008 -881
  6. package/lib/session-query.mjs +150 -0
  7. package/lib/startup.mjs +4 -4
  8. package/lib/{theme-DCT8Y2xf.mjs → theme-7u5Qo3dF.mjs} +657 -20
  9. package/lib/types/app.d.ts +106 -62
  10. package/lib/types/authorization-panel.d.ts +3 -3
  11. package/lib/types/git-workflow.d.ts +91 -2
  12. package/lib/types/i18n.d.ts +39 -0
  13. package/lib/types/index.d.ts +100 -1
  14. package/lib/types/input-split.d.ts +1 -1
  15. package/lib/types/kernel-panels.d.ts +107 -29
  16. package/lib/types/language-panel.d.ts +12 -0
  17. package/lib/types/locales/en.d.ts +450 -0
  18. package/lib/types/locales/zh.d.ts +9 -0
  19. package/lib/types/mentions.d.ts +7 -3
  20. package/lib/types/models.d.ts +14 -0
  21. package/lib/types/panel-accent.d.ts +28 -0
  22. package/lib/types/rainbow.d.ts +69 -0
  23. package/lib/types/render/animations.d.ts +42 -0
  24. package/lib/types/render/editor.d.ts +4 -3
  25. package/lib/types/render/ime-cursor.d.ts +60 -0
  26. package/lib/types/render/inspector.d.ts +26 -0
  27. package/lib/types/render/lines.d.ts +21 -1
  28. package/lib/types/render/markdown.d.ts +1 -1
  29. package/lib/types/render/projection.d.ts +130 -4
  30. package/lib/types/render/status.d.ts +9 -9
  31. package/lib/types/render/text.d.ts +6 -0
  32. package/lib/types/render/usage.d.ts +113 -0
  33. package/lib/types/session-directory.d.ts +17 -0
  34. package/lib/types/session-query.d.ts +92 -0
  35. package/lib/types/startup.d.ts +1 -1
  36. package/lib/types/terminal-title.d.ts +66 -0
  37. package/lib/types/theme-panel.d.ts +2 -2
  38. package/lib/types/theme.d.ts +271 -52
  39. package/lib/types/update-panel.d.ts +49 -0
  40. package/lib/types/update.d.ts +75 -0
  41. package/lib/types/version.d.ts +4 -3
  42. package/package.json +246 -90
  43. package/src/app.ts +1369 -509
  44. package/src/approval.ts +166 -166
  45. package/src/authorization-panel.ts +19 -16
  46. package/src/editor-keys.ts +371 -371
  47. package/src/git-workflow.ts +229 -3
  48. package/src/i18n.ts +68 -0
  49. package/src/index.ts +534 -80
  50. package/src/input-split.ts +3 -3
  51. package/src/internals.ts +5 -0
  52. package/src/kernel-panels.ts +554 -86
  53. package/src/keyboard.ts +5 -4
  54. package/src/language-panel.ts +53 -0
  55. package/src/locales/en.ts +489 -0
  56. package/src/locales/zh.ts +488 -0
  57. package/src/mentions.ts +8 -4
  58. package/src/models.ts +264 -212
  59. package/src/panel-accent.ts +41 -0
  60. package/src/presets.ts +1 -1
  61. package/src/provider-settings.ts +1 -1
  62. package/src/rainbow.ts +208 -0
  63. package/src/render/animations.ts +104 -6
  64. package/src/render/editor.ts +25 -24
  65. package/src/render/export.ts +116 -95
  66. package/src/render/ime-cursor.ts +147 -0
  67. package/src/render/inspector.ts +42 -0
  68. package/src/render/lines.ts +628 -415
  69. package/src/render/markdown.ts +15 -3
  70. package/src/render/projection.ts +572 -21
  71. package/src/render/status.ts +59 -39
  72. package/src/render/text.ts +14 -0
  73. package/src/render/tool-preview.ts +77 -77
  74. package/src/render/usage.ts +430 -0
  75. package/src/render/width.ts +2 -2
  76. package/src/session-directory.ts +8 -6
  77. package/src/session-query.ts +239 -0
  78. package/src/startup.ts +3 -3
  79. package/src/subagents.ts +229 -229
  80. package/src/terminal-title.ts +190 -0
  81. package/src/theme-panel.ts +17 -21
  82. package/src/theme.ts +281 -33
  83. package/src/update-panel.ts +256 -0
  84. package/src/update.ts +126 -0
  85. package/src/version.ts +58 -20
  86. package/src/whale-glyph.ts +23 -23
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Child-process adapter for the launcher update pipeline. The launcher
3
+ * (bin/deepseek.mjs) stays the single owner of update semantics — plan,
4
+ * guards, and the aligned install sequence — so the TUI only spawns
5
+ * `update --json` (read-only probe) and `update --apply` (streamed run)
6
+ * and never re-implements version-line decisions.
7
+ */
8
+ import { type ChildProcess } from 'node:child_process';
9
+ /** Spawn double acceptable to the adapter (tests inject an EventEmitter). */
10
+ export type SpawnLike = (command: string, args: readonly string[], options: {
11
+ readonly stdio: readonly string[];
12
+ readonly windowsHide: boolean;
13
+ }) => ChildProcess;
14
+ /** Structured `update --json` payload; mirrors the launcher buildUpdateStatus. */
15
+ export interface LauncherUpdateStatus {
16
+ readonly code: {
17
+ readonly running: string;
18
+ readonly latest: string | null;
19
+ };
20
+ readonly host: {
21
+ readonly installed: string | null;
22
+ readonly targetLine: string | null;
23
+ };
24
+ readonly profile: {
25
+ readonly spec: string | null;
26
+ readonly mounted: string | null;
27
+ readonly localCheckout: boolean;
28
+ };
29
+ readonly plan: {
30
+ readonly dshSpec: string;
31
+ readonly codeSpec: string;
32
+ readonly pluginSpecs: readonly string[];
33
+ };
34
+ readonly blockers: {
35
+ readonly registry: string | null;
36
+ readonly downgrade: boolean;
37
+ readonly localCheckout: readonly string[] | null;
38
+ };
39
+ readonly upToDate: boolean;
40
+ /** True when this install is newer than npm latest (apply would downgrade). */
41
+ readonly aheadOfRegistry?: boolean;
42
+ }
43
+ /** Exact specs the TUI confirmed; apply must install these, not re-query latest. */
44
+ export interface LauncherUpdatePlan {
45
+ readonly dshSpec: string;
46
+ readonly codeSpec: string;
47
+ readonly pluginSpecs: readonly string[];
48
+ }
49
+ /** The launcher entrypoint that ships beside this bundle (lib/../bin). */
50
+ export declare function launcherUpdateCommand(args: readonly string[], moduleUrl?: string): {
51
+ readonly command: string;
52
+ readonly args: string[];
53
+ };
54
+ /**
55
+ * Split a streamed chunk sequence into complete display lines: CR is
56
+ * stripped, a chunk boundary may split a line, and the trailing partial
57
+ * stays pending until its newline arrives (npm writes whole lines, but a
58
+ * pipe may cut anywhere). Blank lines carry no progress information and
59
+ * are dropped so the panel budget is not spent on gaps.
60
+ */
61
+ export declare function createLineSplitter(onLine: (line: string) => void): (chunk: string) => void;
62
+ /**
63
+ * Probe the aligned update status. Read-only: `update --json` never
64
+ * installs anything. The probe is bounded (npm view may hang on a broken
65
+ * network) and resolves with the parsed status.
66
+ */
67
+ export declare function probeLauncherUpdate(spawnProcess?: SpawnLike): Promise<LauncherUpdateStatus>;
68
+ /**
69
+ * Run the aligned update (`update --apply`) as a child process and stream
70
+ * its sanitized progress lines to the caller. Resolves with the child
71
+ * exit code (0 success); rejects only when the process could not start.
72
+ * No timeout: an npm install may legitimately take minutes.
73
+ */
74
+ export declare function applyPlanArgs(plan: LauncherUpdatePlan): string[];
75
+ export declare function applyLauncherUpdate(onLine: (line: string) => void, spawnProcess?: SpawnLike, plan?: LauncherUpdatePlan): Promise<number>;
@@ -3,9 +3,10 @@
3
3
  export declare const DSH_CODE_VERSION: string;
4
4
  /**
5
5
  * Resolve the running dsh CLI host's version from its entry file
6
- * (`process.argv[1]`, e.g. `.../@deepseek-ai/dsh/lib/bin.js`). Only a manifest
7
- * literally named `@deepseek-ai/dsh` counts, so an unrelated entry (vitest, a
8
- * plain node script) resolves to undefined instead of faking a kernel version.
6
+ * (`process.argv[1]`, e.g. `.../@deepseek-ai/dsh/lib/bin.js` or a PATH
7
+ * symlink `.../bin/dsh` that file). Only a manifest literally named
8
+ * `@deepseek-ai/dsh` counts, so an unrelated entry (vitest, a plain node
9
+ * script) resolves to undefined instead of faking a kernel version.
9
10
  */
10
11
  export declare function resolveDshHostVersion(entry?: string | undefined): string | undefined;
11
12
  /**
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dsh-code",
3
3
  "description": "DeepSeek Harness CLI core bundle: interactive coding terminal, durable sessions, and model management for dsh --profile cli",
4
- "version": "1.0.6",
4
+ "version": "1.2.0",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "deepseek": "./bin/deepseek.mjs",
@@ -14,17 +14,21 @@
14
14
  "types": "./lib/types/index.d.ts",
15
15
  "default": "./lib/index.mjs"
16
16
  },
17
- "./startup": {
18
- "types": "./lib/types/startup.d.ts",
19
- "default": "./lib/startup.mjs"
20
- },
17
+ "./cordis.patch.yml": "./cordis.patch.yml",
21
18
  "./invariant": {
22
19
  "types": "./lib/types/invariant.d.ts",
23
20
  "default": "./lib/invariant.mjs"
24
21
  },
25
- "./cordis.patch.yml": "./cordis.patch.yml",
22
+ "./package.json": "./package.json",
23
+ "./session-query": {
24
+ "types": "./lib/types/session-query.d.ts",
25
+ "default": "./lib/session-query.mjs"
26
+ },
26
27
  "./src/*": "./src/*",
27
- "./package.json": "./package.json"
28
+ "./startup": {
29
+ "types": "./lib/types/startup.d.ts",
30
+ "default": "./lib/startup.mjs"
31
+ }
28
32
  },
29
33
  "files": [
30
34
  "lib",
@@ -54,18 +58,24 @@
54
58
  "scripts": {
55
59
  "build": "tsdown && tsc -p tsconfig.json",
56
60
  "test": "vitest run",
61
+ "test:coverage": "vitest run --coverage",
57
62
  "typecheck": "tsc -p tsconfig.json --noEmit",
63
+ "typecheck:tests": "tsc -p tsconfig.test.json --noEmit",
64
+ "lint": "eslint .",
65
+ "lint:fix": "eslint . --fix",
66
+ "verify": "pnpm lint && pnpm typecheck && pnpm typecheck:tests && pnpm test",
58
67
  "gen:whale": "tsx scripts/gen-whale-glyph.ts",
59
68
  "prepare": "pnpm build",
60
- "prepublishOnly": "pnpm typecheck && pnpm test && pnpm build"
69
+ "prepublishOnly": "pnpm typecheck && pnpm typecheck:tests && pnpm test && pnpm build"
61
70
  },
62
71
  "engines": {
63
72
  "node": "^22.19 || >=24"
64
73
  },
65
74
  "dependencies": {
66
- "@deepseek-ai/dsh-authorization": "0.1.5-rc.1",
67
- "@deepseek-ai/dsh-web-fetch-http": "0.1.5-rc.1",
68
- "@deepseek-ai/dsh-util-values": "0.1.5-rc.1",
75
+ "@deepseek-ai/dsh-authorization": "0.1.5-rc.2",
76
+ "@deepseek-ai/dsh-tool-session-query": "0.1.5-rc.2",
77
+ "@deepseek-ai/dsh-util-values": "0.1.5-rc.2",
78
+ "@deepseek-ai/dsh-web-fetch-http": "0.1.5-rc.2",
69
79
  "@deepseek-ai/schemastery": "^3.18.2",
70
80
  "chalk": "^5.6.2",
71
81
  "commander": "^15.0.0",
@@ -75,94 +85,240 @@
75
85
  "peerDependencies": {
76
86
  "@deepseek-ai/cordis": "^4.0.2",
77
87
  "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
78
- "@deepseek-ai/dsh-attachment": "0.1.5-rc.1",
79
- "@deepseek-ai/dsh-agent": "0.1.5-rc.1",
80
- "@deepseek-ai/dsh-agent-default-model": "0.1.5-rc.1",
81
- "@deepseek-ai/dsh-agent-presets": "0.1.5-rc.1",
82
- "@deepseek-ai/dsh-cmdline": "0.1.5-rc.1",
83
- "@deepseek-ai/dsh-code-runtime-worker-thread": "0.1.5-rc.1",
84
- "@deepseek-ai/dsh-commands": "0.1.5-rc.1",
85
- "@deepseek-ai/dsh-compaction": "0.1.5-rc.1",
86
- "@deepseek-ai/dsh-cordis-host-runner": "0.1.5-rc.1",
87
- "@deepseek-ai/dsh-credentials": "0.1.5-rc.1",
88
- "@deepseek-ai/dsh-file-reference-local": "0.1.5-rc.1",
89
- "@deepseek-ai/dsh-goal": "0.1.5-rc.1",
90
- "@deepseek-ai/dsh-invariants": "0.1.5-rc.1",
91
- "@deepseek-ai/dsh-jobs": "0.1.5-rc.1",
92
- "@deepseek-ai/dsh-llm": "0.1.5-rc.1",
93
- "@deepseek-ai/dsh-llm-retry": "0.1.5-rc.1",
94
- "@deepseek-ai/dsh-permission-presets": "0.1.5-rc.1",
95
- "@deepseek-ai/dsh-plan-mode": "0.1.5-rc.1",
96
- "@deepseek-ai/dsh-sandbox-policy": "0.1.5-rc.1",
97
- "@deepseek-ai/dsh-session": "0.1.5-rc.1",
98
- "@deepseek-ai/dsh-session-persistence": "0.1.5-rc.1",
99
- "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.5-rc.1",
100
- "@deepseek-ai/dsh-subagent": "0.1.5-rc.1",
101
- "@deepseek-ai/dsh-session-reference": "0.1.5-rc.1",
102
- "@deepseek-ai/dsh-session-title": "0.1.5-rc.1",
103
- "@deepseek-ai/dsh-skill": "0.1.5-rc.1",
104
- "@deepseek-ai/dsh-user-approval": "0.1.5-rc.1",
105
- "@deepseek-ai/dsh-user-questions": "0.1.5-rc.1"
88
+ "@deepseek-ai/dsh-agent": "0.1.5-rc.2",
89
+ "@deepseek-ai/dsh-agent-default-model": "0.1.5-rc.2",
90
+ "@deepseek-ai/dsh-agent-presets": "0.1.5-rc.2",
91
+ "@deepseek-ai/dsh-attachment": "0.1.5-rc.2",
92
+ "@deepseek-ai/dsh-cmdline": "0.1.5-rc.2",
93
+ "@deepseek-ai/dsh-code-runtime-worker-thread": "0.1.5-rc.2",
94
+ "@deepseek-ai/dsh-commands": "0.1.5-rc.2",
95
+ "@deepseek-ai/dsh-compaction": "0.1.5-rc.2",
96
+ "@deepseek-ai/dsh-cordis-host-runner": "0.1.5-rc.2",
97
+ "@deepseek-ai/dsh-credentials": "0.1.5-rc.2",
98
+ "@deepseek-ai/dsh-file-reference-local": "0.1.5-rc.2",
99
+ "@deepseek-ai/dsh-goal": "0.1.5-rc.2",
100
+ "@deepseek-ai/dsh-hooks-claude-code": "0.1.5-rc.2",
101
+ "@deepseek-ai/dsh-hooks-codex": "0.1.5-rc.2",
102
+ "@deepseek-ai/dsh-invariants": "0.1.5-rc.2",
103
+ "@deepseek-ai/dsh-jobs": "0.1.5-rc.2",
104
+ "@deepseek-ai/dsh-llm": "0.1.5-rc.2",
105
+ "@deepseek-ai/dsh-llm-retry": "0.1.5-rc.2",
106
+ "@deepseek-ai/dsh-lsp": "0.1.5-rc.2",
107
+ "@deepseek-ai/dsh-lsp-stdio": "0.1.5-rc.2",
108
+ "@deepseek-ai/dsh-mcp-client": "0.1.5-rc.2",
109
+ "@deepseek-ai/dsh-permission-presets": "0.1.5-rc.2",
110
+ "@deepseek-ai/dsh-plan-mode": "0.1.5-rc.2",
111
+ "@deepseek-ai/dsh-sandbox-policy": "0.1.5-rc.2",
112
+ "@deepseek-ai/dsh-schedule": "0.1.5-rc.2",
113
+ "@deepseek-ai/dsh-session": "0.1.5-rc.2",
114
+ "@deepseek-ai/dsh-session-persistence": "0.1.5-rc.2",
115
+ "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.5-rc.2",
116
+ "@deepseek-ai/dsh-session-projection": "0.1.5-rc.2",
117
+ "@deepseek-ai/dsh-session-query": "0.1.5-rc.2",
118
+ "@deepseek-ai/dsh-session-query-sqlite": "0.1.5-rc.2",
119
+ "@deepseek-ai/dsh-session-reference": "0.1.5-rc.2",
120
+ "@deepseek-ai/dsh-session-title": "0.1.5-rc.2",
121
+ "@deepseek-ai/dsh-skill": "0.1.5-rc.2",
122
+ "@deepseek-ai/dsh-subagent": "0.1.5-rc.2",
123
+ "@deepseek-ai/dsh-terminal": "0.1.5-rc.2",
124
+ "@deepseek-ai/dsh-terminal-bash": "0.1.5-rc.2",
125
+ "@deepseek-ai/dsh-time-context": "0.1.5-rc.2",
126
+ "@deepseek-ai/dsh-tmux-context": "0.1.5-rc.2",
127
+ "@deepseek-ai/dsh-token-meter": "0.1.5-rc.2",
128
+ "@deepseek-ai/dsh-tool-lsp": "0.1.5-rc.2",
129
+ "@deepseek-ai/dsh-tool-terminal": "0.1.5-rc.2",
130
+ "@deepseek-ai/dsh-user-approval": "0.1.5-rc.2",
131
+ "@deepseek-ai/dsh-user-questions": "0.1.5-rc.2"
106
132
  },
107
133
  "peerDependenciesMeta": {
108
- "@deepseek-ai/cordis": { "optional": true },
109
- "@deepseek-ai/cordis-plugin-loader": { "optional": true },
110
- "@deepseek-ai/dsh-agent": { "optional": true },
111
- "@deepseek-ai/dsh-attachment": { "optional": true },
112
- "@deepseek-ai/dsh-agent-default-model": { "optional": true },
113
- "@deepseek-ai/dsh-agent-presets": { "optional": true },
114
- "@deepseek-ai/dsh-cmdline": { "optional": true },
115
- "@deepseek-ai/dsh-cordis-host-runner": { "optional": true },
116
- "@deepseek-ai/dsh-credentials": { "optional": true },
117
- "@deepseek-ai/dsh-file-reference-local": { "optional": true },
118
- "@deepseek-ai/dsh-code-runtime-worker-thread": { "optional": true },
119
- "@deepseek-ai/dsh-commands": { "optional": true },
120
- "@deepseek-ai/dsh-compaction": { "optional": true },
121
- "@deepseek-ai/dsh-goal": { "optional": true },
122
- "@deepseek-ai/dsh-invariants": { "optional": true },
123
- "@deepseek-ai/dsh-jobs": { "optional": true },
124
- "@deepseek-ai/dsh-llm": { "optional": true },
125
- "@deepseek-ai/dsh-llm-retry": { "optional": true },
126
- "@deepseek-ai/dsh-permission-presets": { "optional": true },
127
- "@deepseek-ai/dsh-plan-mode": { "optional": true },
128
- "@deepseek-ai/dsh-sandbox-policy": { "optional": true },
129
- "@deepseek-ai/dsh-session": { "optional": true },
130
- "@deepseek-ai/dsh-session-persistence": { "optional": true },
131
- "@deepseek-ai/dsh-session-persistence-jsonl": { "optional": true },
132
- "@deepseek-ai/dsh-subagent": { "optional": true },
133
- "@deepseek-ai/dsh-session-reference": { "optional": true },
134
- "@deepseek-ai/dsh-session-title": { "optional": true },
135
- "@deepseek-ai/dsh-skill": { "optional": true },
136
- "@deepseek-ai/dsh-user-approval": { "optional": true },
137
- "@deepseek-ai/dsh-user-questions": { "optional": true }
134
+ "@deepseek-ai/cordis": {
135
+ "optional": true
136
+ },
137
+ "@deepseek-ai/cordis-plugin-loader": {
138
+ "optional": true
139
+ },
140
+ "@deepseek-ai/dsh-agent": {
141
+ "optional": true
142
+ },
143
+ "@deepseek-ai/dsh-agent-default-model": {
144
+ "optional": true
145
+ },
146
+ "@deepseek-ai/dsh-agent-presets": {
147
+ "optional": true
148
+ },
149
+ "@deepseek-ai/dsh-attachment": {
150
+ "optional": true
151
+ },
152
+ "@deepseek-ai/dsh-cmdline": {
153
+ "optional": true
154
+ },
155
+ "@deepseek-ai/dsh-code-runtime-worker-thread": {
156
+ "optional": true
157
+ },
158
+ "@deepseek-ai/dsh-commands": {
159
+ "optional": true
160
+ },
161
+ "@deepseek-ai/dsh-compaction": {
162
+ "optional": true
163
+ },
164
+ "@deepseek-ai/dsh-cordis-host-runner": {
165
+ "optional": true
166
+ },
167
+ "@deepseek-ai/dsh-credentials": {
168
+ "optional": true
169
+ },
170
+ "@deepseek-ai/dsh-file-reference-local": {
171
+ "optional": true
172
+ },
173
+ "@deepseek-ai/dsh-goal": {
174
+ "optional": true
175
+ },
176
+ "@deepseek-ai/dsh-hooks-claude-code": {
177
+ "optional": true
178
+ },
179
+ "@deepseek-ai/dsh-hooks-codex": {
180
+ "optional": true
181
+ },
182
+ "@deepseek-ai/dsh-invariants": {
183
+ "optional": true
184
+ },
185
+ "@deepseek-ai/dsh-jobs": {
186
+ "optional": true
187
+ },
188
+ "@deepseek-ai/dsh-llm": {
189
+ "optional": true
190
+ },
191
+ "@deepseek-ai/dsh-llm-retry": {
192
+ "optional": true
193
+ },
194
+ "@deepseek-ai/dsh-lsp": {
195
+ "optional": true
196
+ },
197
+ "@deepseek-ai/dsh-lsp-stdio": {
198
+ "optional": true
199
+ },
200
+ "@deepseek-ai/dsh-mcp-client": {
201
+ "optional": true
202
+ },
203
+ "@deepseek-ai/dsh-permission-presets": {
204
+ "optional": true
205
+ },
206
+ "@deepseek-ai/dsh-plan-mode": {
207
+ "optional": true
208
+ },
209
+ "@deepseek-ai/dsh-sandbox-policy": {
210
+ "optional": true
211
+ },
212
+ "@deepseek-ai/dsh-schedule": {
213
+ "optional": true
214
+ },
215
+ "@deepseek-ai/dsh-session": {
216
+ "optional": true
217
+ },
218
+ "@deepseek-ai/dsh-session-persistence": {
219
+ "optional": true
220
+ },
221
+ "@deepseek-ai/dsh-session-persistence-jsonl": {
222
+ "optional": true
223
+ },
224
+ "@deepseek-ai/dsh-session-projection": {
225
+ "optional": true
226
+ },
227
+ "@deepseek-ai/dsh-session-query": {
228
+ "optional": true
229
+ },
230
+ "@deepseek-ai/dsh-session-query-sqlite": {
231
+ "optional": true
232
+ },
233
+ "@deepseek-ai/dsh-session-reference": {
234
+ "optional": true
235
+ },
236
+ "@deepseek-ai/dsh-session-title": {
237
+ "optional": true
238
+ },
239
+ "@deepseek-ai/dsh-skill": {
240
+ "optional": true
241
+ },
242
+ "@deepseek-ai/dsh-subagent": {
243
+ "optional": true
244
+ },
245
+ "@deepseek-ai/dsh-terminal": {
246
+ "optional": true
247
+ },
248
+ "@deepseek-ai/dsh-terminal-bash": {
249
+ "optional": true
250
+ },
251
+ "@deepseek-ai/dsh-time-context": {
252
+ "optional": true
253
+ },
254
+ "@deepseek-ai/dsh-tmux-context": {
255
+ "optional": true
256
+ },
257
+ "@deepseek-ai/dsh-token-meter": {
258
+ "optional": true
259
+ },
260
+ "@deepseek-ai/dsh-tool-lsp": {
261
+ "optional": true
262
+ },
263
+ "@deepseek-ai/dsh-tool-terminal": {
264
+ "optional": true
265
+ },
266
+ "@deepseek-ai/dsh-user-approval": {
267
+ "optional": true
268
+ },
269
+ "@deepseek-ai/dsh-user-questions": {
270
+ "optional": true
271
+ }
138
272
  },
139
273
  "devDependencies": {
140
- "@deepseek-ai/dsh-agent-presets": "0.1.5-rc.1",
141
- "@deepseek-ai/dsh-attachment": "0.1.5-rc.1",
142
- "@deepseek-ai/dsh-compaction": "0.1.5-rc.1",
143
- "@deepseek-ai/dsh-commands": "0.1.5-rc.1",
144
- "@deepseek-ai/dsh-credentials": "0.1.5-rc.1",
145
- "@deepseek-ai/dsh-settings": "0.1.5-rc.1",
146
- "@deepseek-ai/dsh-tool-todo": "0.1.5-rc.1",
147
- "@deepseek-ai/dsh-goal": "0.1.5-rc.1",
148
- "@deepseek-ai/dsh-jobs": "0.1.5-rc.1",
149
- "@deepseek-ai/dsh-llm-retry": "0.1.5-rc.1",
150
- "@deepseek-ai/dsh-permission-presets": "0.1.5-rc.1",
151
- "@deepseek-ai/dsh-plan-mode": "0.1.5-rc.1",
152
- "@deepseek-ai/dsh-sandbox-policy": "0.1.5-rc.1",
153
- "@deepseek-ai/dsh-session-persistence": "0.1.5-rc.1",
154
- "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.5-rc.1",
155
- "@deepseek-ai/dsh-subagent": "0.1.5-rc.1",
156
- "@deepseek-ai/dsh-session-reference": "0.1.5-rc.1",
157
- "@deepseek-ai/dsh-session-title": "0.1.5-rc.1",
158
- "@deepseek-ai/dsh-skill": "0.1.5-rc.1",
159
- "@deepseek-ai/dsh-user-approval": "0.1.5-rc.1",
160
- "@deepseek-ai/dsh-user-questions": "0.1.5-rc.1",
274
+ "@deepseek-ai/dsh-agent-presets": "0.1.5-rc.2",
275
+ "@deepseek-ai/dsh-attachment": "0.1.5-rc.2",
276
+ "@deepseek-ai/dsh-commands": "0.1.5-rc.2",
277
+ "@deepseek-ai/dsh-compaction": "0.1.5-rc.2",
278
+ "@deepseek-ai/dsh-credentials": "0.1.5-rc.2",
279
+ "@deepseek-ai/dsh-goal": "0.1.5-rc.2",
280
+ "@deepseek-ai/dsh-hooks-claude-code": "0.1.5-rc.2",
281
+ "@deepseek-ai/dsh-hooks-codex": "0.1.5-rc.2",
282
+ "@deepseek-ai/dsh-jobs": "0.1.5-rc.2",
283
+ "@deepseek-ai/dsh-llm-retry": "0.1.5-rc.2",
284
+ "@deepseek-ai/dsh-lsp": "0.1.5-rc.2",
285
+ "@deepseek-ai/dsh-lsp-stdio": "0.1.5-rc.2",
286
+ "@deepseek-ai/dsh-mcp-client": "0.1.5-rc.2",
287
+ "@deepseek-ai/dsh-permission-presets": "0.1.5-rc.2",
288
+ "@deepseek-ai/dsh-plan-mode": "0.1.5-rc.2",
289
+ "@deepseek-ai/dsh-sandbox-policy": "0.1.5-rc.2",
290
+ "@deepseek-ai/dsh-schedule": "0.1.5-rc.2",
291
+ "@deepseek-ai/dsh-session-persistence": "0.1.5-rc.2",
292
+ "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.5-rc.2",
293
+ "@deepseek-ai/dsh-session-projection": "0.1.5-rc.2",
294
+ "@deepseek-ai/dsh-session-query": "0.1.5-rc.2",
295
+ "@deepseek-ai/dsh-session-query-sqlite": "0.1.5-rc.2",
296
+ "@deepseek-ai/dsh-session-reference": "0.1.5-rc.2",
297
+ "@deepseek-ai/dsh-session-title": "0.1.5-rc.2",
298
+ "@deepseek-ai/dsh-settings": "0.1.5-rc.2",
299
+ "@deepseek-ai/dsh-skill": "0.1.5-rc.2",
300
+ "@deepseek-ai/dsh-subagent": "0.1.5-rc.2",
301
+ "@deepseek-ai/dsh-terminal": "0.1.5-rc.2",
302
+ "@deepseek-ai/dsh-terminal-bash": "0.1.5-rc.2",
303
+ "@deepseek-ai/dsh-time-context": "0.1.5-rc.2",
304
+ "@deepseek-ai/dsh-tmux-context": "0.1.5-rc.2",
305
+ "@deepseek-ai/dsh-token-meter": "0.1.5-rc.2",
306
+ "@deepseek-ai/dsh-tool-lsp": "0.1.5-rc.2",
307
+ "@deepseek-ai/dsh-tool-terminal": "0.1.5-rc.2",
308
+ "@deepseek-ai/dsh-tool-todo": "0.1.5-rc.2",
309
+ "@deepseek-ai/dsh-user-approval": "0.1.5-rc.2",
310
+ "@deepseek-ai/dsh-user-questions": "0.1.5-rc.2",
311
+ "@types/js-yaml": "^4.0.9",
161
312
  "@types/node": "^24.0.0",
162
313
  "@types/react": "~18.3.1",
314
+ "@vitest/coverage-v8": "^3.2.7",
315
+ "eslint": "^10.10.0",
316
+ "eslint-plugin-react-hooks": "^7.1.1",
317
+ "js-yaml": "^4.3.1",
163
318
  "tsdown": "^0.22.2",
164
319
  "tsx": "^4.22.4",
165
320
  "typescript": "^5.9.0",
321
+ "typescript-eslint": "^8.70.0",
166
322
  "vitest": "^3.0.0"
167
323
  }
168
324
  }