dsh-ssh-tui 0.7.4 → 0.8.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.en.md +3 -0
- package/README.md +7 -1
- package/docs/remote-ops.md +53 -0
- package/lib/auth-failure.js +92 -0
- package/lib/auth-failure.js.map +1 -0
- package/lib/commands.js +1 -0
- package/lib/commands.js.map +1 -1
- package/lib/i18n/en.js +9 -0
- package/lib/i18n/en.js.map +1 -1
- package/lib/i18n/zh.js +9 -0
- package/lib/i18n/zh.js.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/tui.js +116 -0
- package/lib/tui.js.map +1 -1
- package/lib/types/auth-failure.d.ts +48 -0
- package/lib/types/commands.d.ts +3 -0
- package/lib/types/index.d.ts +7 -0
- package/lib/types/tui.d.ts +23 -0
- package/package.json +90 -93
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where an authentication failure came from.
|
|
3
|
+
*
|
|
4
|
+
* A turn can die with `code: "AUTH"` for two very different reasons, and the
|
|
5
|
+
* difference decides what the reader should do:
|
|
6
|
+
*
|
|
7
|
+
* - **provider**: the request left the machine and the provider (or something
|
|
8
|
+
* between it and the model) rejected it. The local credential is present, so
|
|
9
|
+
* changing it is the wrong move — the usual causes are a transient upstream
|
|
10
|
+
* failure, a plan/quota limit, or a model the account may not call. Retrying
|
|
11
|
+
* is reasonable.
|
|
12
|
+
* - **local**: nothing usable is configured on this machine, so every request
|
|
13
|
+
* would fail the same way. Retrying changes nothing; the key has to be set.
|
|
14
|
+
*
|
|
15
|
+
* The host reports both as `AUTH`, and the only place the difference survives is
|
|
16
|
+
* the message body — which is why this is a text classifier and why it is kept
|
|
17
|
+
* pure: the caller resolves the actual credential and decides what to say.
|
|
18
|
+
*
|
|
19
|
+
* Observed bodies (2026-09-29, command-code):
|
|
20
|
+
* provider → `OpenAI API error (403): {"message":"Authentication failed.
|
|
21
|
+
* Please check your credentials.","type":"permission_error"}`
|
|
22
|
+
* provider → `403 {"type":"error","error":{"type":"permission_error",
|
|
23
|
+
* "message":"MODEL_NOT_IN_PLAN: …"}}`
|
|
24
|
+
* local → `dsh-llm: no API key for provider "x" (set X_API_KEY)`
|
|
25
|
+
* A *missing* credential on that gateway answered with a 401 and its own
|
|
26
|
+
* envelope (`{"success":false,"error":{"code":"UNAUTHORIZED"}}`), which is why
|
|
27
|
+
* an HTTP status alone cannot classify this: 401 and 403 both appear on the
|
|
28
|
+
* provider side.
|
|
29
|
+
*
|
|
30
|
+
* @module dsh-ssh-tui/auth-failure
|
|
31
|
+
*/
|
|
32
|
+
/** Which side rejected the request. */
|
|
33
|
+
export type AuthFailureOrigin = 'provider' | 'local';
|
|
34
|
+
export interface AuthFailure {
|
|
35
|
+
origin: AuthFailureOrigin;
|
|
36
|
+
/** The HTTP status, when the message carried one. */
|
|
37
|
+
status?: number;
|
|
38
|
+
}
|
|
39
|
+
/** The HTTP status inside a host-formatted failure, if there is one. */
|
|
40
|
+
export declare function statusOf(message: string): number | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Classify one failure message.
|
|
43
|
+
* @param message - the failure text the host attached to the turn.
|
|
44
|
+
* @returns the origin (and status when known), or undefined when the message
|
|
45
|
+
* says nothing about authentication — an unrelated failure keeps its own row
|
|
46
|
+
* and gets no advice.
|
|
47
|
+
*/
|
|
48
|
+
export declare function classifyAuthFailure(message: string): AuthFailure | undefined;
|
package/lib/types/commands.d.ts
CHANGED
|
@@ -39,6 +39,9 @@ export declare const LOCAL_COMMANDS: readonly [{
|
|
|
39
39
|
}, {
|
|
40
40
|
readonly name: "disconnect";
|
|
41
41
|
readonly key: "cmd.disconnect";
|
|
42
|
+
}, {
|
|
43
|
+
readonly name: "retryauth";
|
|
44
|
+
readonly key: "cmd.retryauth";
|
|
42
45
|
}, {
|
|
43
46
|
readonly name: "notify";
|
|
44
47
|
readonly key: "cmd.notify";
|
package/lib/types/index.d.ts
CHANGED
|
@@ -46,6 +46,12 @@ export interface Config {
|
|
|
46
46
|
autoApproval?: string;
|
|
47
47
|
/** Milliseconds a leftover finished Host waits before exiting; 0 = never. */
|
|
48
48
|
idleExit?: number;
|
|
49
|
+
/**
|
|
50
|
+
* Retry once when the *provider* rejects a request with 401/403 while a local
|
|
51
|
+
* credential is configured (see `auth-failure.ts`). Off by default: the retry
|
|
52
|
+
* re-sends the whole context, which in a long session is expensive.
|
|
53
|
+
*/
|
|
54
|
+
retryProviderAuth?: boolean;
|
|
49
55
|
}
|
|
50
56
|
/** Every field above, as schemastery resolves them (all optional). */
|
|
51
57
|
interface ConfigFields {
|
|
@@ -65,6 +71,7 @@ interface ConfigFields {
|
|
|
65
71
|
disconnect?: string;
|
|
66
72
|
autoApproval?: string;
|
|
67
73
|
idleExit?: number;
|
|
74
|
+
retryProviderAuth?: boolean;
|
|
68
75
|
}
|
|
69
76
|
/**
|
|
70
77
|
* The entry's schema. Everything a launch supplies (`config:` in
|
package/lib/types/tui.d.ts
CHANGED
|
@@ -274,6 +274,14 @@ export declare class SshTui {
|
|
|
274
274
|
private commandSuggestions;
|
|
275
275
|
private suggestionIndex;
|
|
276
276
|
private focusedRow;
|
|
277
|
+
/**
|
|
278
|
+
* The text of the last prompt the user sent, kept so an opted-in retry can
|
|
279
|
+
* send the same thing again after a provider-side auth failure. Cleared when
|
|
280
|
+
* the retry fires, which is what bounds it to one attempt per user message.
|
|
281
|
+
*/
|
|
282
|
+
private lastUserText;
|
|
283
|
+
/** Set on every turn/start; a retry consumes it. */
|
|
284
|
+
private authRetryArmed;
|
|
277
285
|
private pendingMessages;
|
|
278
286
|
private lastActivity;
|
|
279
287
|
private lastIdleCtrlCAt;
|
|
@@ -1216,6 +1224,21 @@ export declare class SshTui {
|
|
|
1216
1224
|
*/
|
|
1217
1225
|
private runNotifyCommand;
|
|
1218
1226
|
/** /disconnect: pause (default) or continue the turn after SSH drop. */
|
|
1227
|
+
/**
|
|
1228
|
+
* Say where an auth failure came from, and retry it if the user asked for that.
|
|
1229
|
+
*
|
|
1230
|
+
* `code: "AUTH"` collapses two opposite situations (see `auth-failure.ts`), and
|
|
1231
|
+
* the host does not retry either of them: a provider-side 401/403 that lasted
|
|
1232
|
+
* 45 seconds killed two turns in a row on 2026-09-29 while the same key, model
|
|
1233
|
+
* and route answered 200 straight afterwards. The hint costs nothing and the
|
|
1234
|
+
* retry is opt-in, because resending a long session re-sends its whole context.
|
|
1235
|
+
*/
|
|
1236
|
+
private reportAuthFailure;
|
|
1237
|
+
private explainAuthFailure;
|
|
1238
|
+
/** Whether the opt-in retry is on (`/retryauth`, the settings form, or the env). */
|
|
1239
|
+
private retryProviderAuthEnabled;
|
|
1240
|
+
/** `/retryauth [on|off]` — the setting that lets one provider 401/403 retry itself. */
|
|
1241
|
+
private runRetryAuthCommand;
|
|
1219
1242
|
private runDisconnectCommand;
|
|
1220
1243
|
/** /mode: pick an agent preset (standard / minimal / ptc / cordis / routing-suite / ...). */
|
|
1221
1244
|
private runModeCommand;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-ssh-tui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "SSH-friendly interactive terminal TUI plugin for DeepSeek Harness",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek-harness",
|
|
@@ -68,18 +68,19 @@
|
|
|
68
68
|
"patch": "./cordis.patch.yml"
|
|
69
69
|
},
|
|
70
70
|
"compatibility": {
|
|
71
|
-
"dsh": ">=0.1.
|
|
71
|
+
"dsh": ">=0.1.7-rc.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
72
72
|
"dshReleases": {
|
|
73
73
|
"0.1.2-rc.1": "incompatible",
|
|
74
|
-
"0.1.3-alpha.1": "
|
|
75
|
-
"0.1.3-alpha.2": "
|
|
76
|
-
"0.1.5-alpha.1": "
|
|
77
|
-
"0.1.5-alpha.2": "
|
|
78
|
-
"0.1.5-rc.1": "
|
|
79
|
-
"0.1.5-rc.2": "
|
|
80
|
-
"0.1.5-rc.3": "
|
|
74
|
+
"0.1.3-alpha.1": "incompatible",
|
|
75
|
+
"0.1.3-alpha.2": "incompatible",
|
|
76
|
+
"0.1.5-alpha.1": "incompatible",
|
|
77
|
+
"0.1.5-alpha.2": "incompatible",
|
|
78
|
+
"0.1.5-rc.1": "incompatible",
|
|
79
|
+
"0.1.5-rc.2": "incompatible",
|
|
80
|
+
"0.1.5-rc.3": "incompatible",
|
|
81
81
|
"0.1.7-rc.1": "compatible",
|
|
82
|
-
"0.1.7-rc.2": "compatible"
|
|
82
|
+
"0.1.7-rc.2": "compatible",
|
|
83
|
+
"0.2.0-rc.1": "compatible"
|
|
83
84
|
},
|
|
84
85
|
"profiles": [
|
|
85
86
|
"tui"
|
|
@@ -112,22 +113,21 @@
|
|
|
112
113
|
},
|
|
113
114
|
"peerDependencies": {
|
|
114
115
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
115
|
-
"@deepseek-ai/dsh-agent": ">=0.1.
|
|
116
|
-
"@deepseek-ai/dsh-agent-default-model": ">=0.1.
|
|
117
|
-
"@deepseek-ai/dsh-agent-loop": ">=0.1.
|
|
118
|
-
"@deepseek-ai/dsh-agent-preset": ">=0.1.7-rc.1 <0.1.8",
|
|
119
|
-
"@deepseek-ai/dsh-agent-preset-registry": ">=0.1.7-rc.1 <0.1.8",
|
|
120
|
-
"@deepseek-ai/dsh-
|
|
121
|
-
"@deepseek-ai/dsh-
|
|
122
|
-
"@deepseek-ai/dsh-
|
|
123
|
-
"@deepseek-ai/dsh-
|
|
124
|
-
"@deepseek-ai/dsh-
|
|
125
|
-
"@deepseek-ai/dsh-session": ">=0.1.
|
|
126
|
-
"@deepseek-ai/dsh-
|
|
127
|
-
"@deepseek-ai/dsh-
|
|
128
|
-
"@deepseek-ai/dsh-
|
|
129
|
-
"@deepseek-ai/dsh-user-
|
|
130
|
-
"@deepseek-ai/dsh-user-questions": ">=0.1.3-alpha.2 <0.1.6 || >=0.1.5-alpha.1 <0.1.6 || >=0.1.7-rc.1 <0.1.8"
|
|
116
|
+
"@deepseek-ai/dsh-agent": ">=0.1.7-rc.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
117
|
+
"@deepseek-ai/dsh-agent-default-model": ">=0.1.7-rc.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
118
|
+
"@deepseek-ai/dsh-agent-loop": ">=0.1.7-rc.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
119
|
+
"@deepseek-ai/dsh-agent-preset": ">=0.1.7-rc.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
120
|
+
"@deepseek-ai/dsh-agent-preset-registry": ">=0.1.7-rc.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
121
|
+
"@deepseek-ai/dsh-cmdline": ">=0.1.7-rc.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
122
|
+
"@deepseek-ai/dsh-commands": ">=0.1.7-rc.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
123
|
+
"@deepseek-ai/dsh-credentials": ">=0.1.7-rc.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
124
|
+
"@deepseek-ai/dsh-llm": ">=0.1.7-rc.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
125
|
+
"@deepseek-ai/dsh-session": ">=0.1.7-rc.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
126
|
+
"@deepseek-ai/dsh-session-persistence": ">=0.1.7-rc.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
127
|
+
"@deepseek-ai/dsh-settings": ">=0.1.7-rc.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
128
|
+
"@deepseek-ai/dsh-subagent": ">=0.1.7-rc.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
129
|
+
"@deepseek-ai/dsh-user-approval": ">=0.1.7-rc.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
130
|
+
"@deepseek-ai/dsh-user-questions": ">=0.1.7-rc.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1"
|
|
131
131
|
},
|
|
132
132
|
"peerDependenciesMeta": {
|
|
133
133
|
"@deepseek-ai/dsh-agent-preset": {
|
|
@@ -136,9 +136,6 @@
|
|
|
136
136
|
"@deepseek-ai/dsh-agent-preset-registry": {
|
|
137
137
|
"optional": true
|
|
138
138
|
},
|
|
139
|
-
"@deepseek-ai/dsh-agent-presets": {
|
|
140
|
-
"optional": true
|
|
141
|
-
},
|
|
142
139
|
"@deepseek-ai/dsh-credentials": {
|
|
143
140
|
"optional": true
|
|
144
141
|
},
|
|
@@ -159,75 +156,75 @@
|
|
|
159
156
|
"@deepseek-ai/cordis-plugin-include": "1.0.9",
|
|
160
157
|
"@deepseek-ai/cordis-plugin-loader": "1.0.5",
|
|
161
158
|
"@deepseek-ai/cordis-plugin-timer": "1.1.6",
|
|
162
|
-
"@deepseek-ai/dsh": "0.
|
|
163
|
-
"@deepseek-ai/dsh-agent": "0.
|
|
164
|
-
"@deepseek-ai/dsh-agent-default-model": "0.
|
|
165
|
-
"@deepseek-ai/dsh-agent-loop": "0.
|
|
166
|
-
"@deepseek-ai/dsh-agent-preset": "0.
|
|
167
|
-
"@deepseek-ai/dsh-agent-preset-registry": "0.
|
|
168
|
-
"@deepseek-ai/dsh-atomic-write": "0.
|
|
169
|
-
"@deepseek-ai/dsh-attachment": "0.
|
|
170
|
-
"@deepseek-ai/dsh-brand": "0.
|
|
171
|
-
"@deepseek-ai/dsh-cmdline": "0.
|
|
172
|
-
"@deepseek-ai/dsh-commands": "0.
|
|
173
|
-
"@deepseek-ai/dsh-credentials": "0.
|
|
174
|
-
"@deepseek-ai/dsh-home-paths": "0.
|
|
175
|
-
"@deepseek-ai/dsh-invariants": "0.
|
|
176
|
-
"@deepseek-ai/dsh-jobs": "0.
|
|
177
|
-
"@deepseek-ai/dsh-llm": "0.
|
|
178
|
-
"@deepseek-ai/dsh-llm-mock-server": "0.
|
|
179
|
-
"@deepseek-ai/dsh-sandbox": "0.
|
|
180
|
-
"@deepseek-ai/dsh-sandbox-policy": "0.
|
|
181
|
-
"@deepseek-ai/dsh-scope": "0.
|
|
182
|
-
"@deepseek-ai/dsh-session": "0.
|
|
183
|
-
"@deepseek-ai/dsh-session-persistence": "0.
|
|
184
|
-
"@deepseek-ai/dsh-session-projection": "0.
|
|
185
|
-
"@deepseek-ai/dsh-session-projection-cache": "0.
|
|
186
|
-
"@deepseek-ai/dsh-settings": "0.
|
|
187
|
-
"@deepseek-ai/dsh-subagent": "0.
|
|
188
|
-
"@deepseek-ai/dsh-system-prompt": "0.
|
|
189
|
-
"@deepseek-ai/dsh-timeout": "0.
|
|
190
|
-
"@deepseek-ai/dsh-tools": "0.
|
|
191
|
-
"@deepseek-ai/dsh-typert-protocol": "0.
|
|
192
|
-
"@deepseek-ai/dsh-user-approval": "0.
|
|
193
|
-
"@deepseek-ai/dsh-user-questions": "0.
|
|
159
|
+
"@deepseek-ai/dsh": "0.2.0-rc.1",
|
|
160
|
+
"@deepseek-ai/dsh-agent": "0.2.0-rc.1",
|
|
161
|
+
"@deepseek-ai/dsh-agent-default-model": "0.2.0-rc.1",
|
|
162
|
+
"@deepseek-ai/dsh-agent-loop": "0.2.0-rc.1",
|
|
163
|
+
"@deepseek-ai/dsh-agent-preset": "0.2.0-rc.1",
|
|
164
|
+
"@deepseek-ai/dsh-agent-preset-registry": "0.2.0-rc.1",
|
|
165
|
+
"@deepseek-ai/dsh-atomic-write": "0.2.0-rc.1",
|
|
166
|
+
"@deepseek-ai/dsh-attachment": "0.2.0-rc.1",
|
|
167
|
+
"@deepseek-ai/dsh-brand": "0.2.0-rc.1",
|
|
168
|
+
"@deepseek-ai/dsh-cmdline": "0.2.0-rc.1",
|
|
169
|
+
"@deepseek-ai/dsh-commands": "0.2.0-rc.1",
|
|
170
|
+
"@deepseek-ai/dsh-credentials": "0.2.0-rc.1",
|
|
171
|
+
"@deepseek-ai/dsh-home-paths": "0.2.0-rc.1",
|
|
172
|
+
"@deepseek-ai/dsh-invariants": "0.2.0-rc.1",
|
|
173
|
+
"@deepseek-ai/dsh-jobs": "0.2.0-rc.1",
|
|
174
|
+
"@deepseek-ai/dsh-llm": "0.2.0-rc.1",
|
|
175
|
+
"@deepseek-ai/dsh-llm-mock-server": "0.2.0-rc.1",
|
|
176
|
+
"@deepseek-ai/dsh-sandbox": "0.2.0-rc.1",
|
|
177
|
+
"@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.1",
|
|
178
|
+
"@deepseek-ai/dsh-scope": "0.2.0-rc.1",
|
|
179
|
+
"@deepseek-ai/dsh-session": "0.2.0-rc.1",
|
|
180
|
+
"@deepseek-ai/dsh-session-persistence": "0.2.0-rc.1",
|
|
181
|
+
"@deepseek-ai/dsh-session-projection": "0.2.0-rc.1",
|
|
182
|
+
"@deepseek-ai/dsh-session-projection-cache": "0.2.0-rc.1",
|
|
183
|
+
"@deepseek-ai/dsh-settings": "0.2.0-rc.1",
|
|
184
|
+
"@deepseek-ai/dsh-subagent": "0.2.0-rc.1",
|
|
185
|
+
"@deepseek-ai/dsh-system-prompt": "0.2.0-rc.1",
|
|
186
|
+
"@deepseek-ai/dsh-timeout": "0.2.0-rc.1",
|
|
187
|
+
"@deepseek-ai/dsh-tools": "0.2.0-rc.1",
|
|
188
|
+
"@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.1",
|
|
189
|
+
"@deepseek-ai/dsh-user-approval": "0.2.0-rc.1",
|
|
190
|
+
"@deepseek-ai/dsh-user-questions": "0.2.0-rc.1",
|
|
194
191
|
"@types/node": "^24.0.0",
|
|
195
192
|
"@xterm/headless": "^6.0.0",
|
|
196
193
|
"semver": "^7.8.5",
|
|
197
194
|
"typescript": "^5.9.0"
|
|
198
195
|
},
|
|
199
196
|
"overrides": {
|
|
200
|
-
"@deepseek-ai/dsh": "0.
|
|
201
|
-
"@deepseek-ai/dsh-agent": "0.
|
|
202
|
-
"@deepseek-ai/dsh-agent-default-model": "0.
|
|
203
|
-
"@deepseek-ai/dsh-agent-loop": "0.
|
|
204
|
-
"@deepseek-ai/dsh-agent-preset": "0.
|
|
205
|
-
"@deepseek-ai/dsh-agent-preset-registry": "0.
|
|
206
|
-
"@deepseek-ai/dsh-atomic-write": "0.
|
|
207
|
-
"@deepseek-ai/dsh-attachment": "0.
|
|
208
|
-
"@deepseek-ai/dsh-brand": "0.
|
|
209
|
-
"@deepseek-ai/dsh-cmdline": "0.
|
|
210
|
-
"@deepseek-ai/dsh-commands": "0.
|
|
211
|
-
"@deepseek-ai/dsh-credentials": "0.
|
|
212
|
-
"@deepseek-ai/dsh-home-paths": "0.
|
|
213
|
-
"@deepseek-ai/dsh-invariants": "0.
|
|
214
|
-
"@deepseek-ai/dsh-jobs": "0.
|
|
215
|
-
"@deepseek-ai/dsh-llm": "0.
|
|
216
|
-
"@deepseek-ai/dsh-llm-mock-server": "0.
|
|
217
|
-
"@deepseek-ai/dsh-sandbox": "0.
|
|
218
|
-
"@deepseek-ai/dsh-sandbox-policy": "0.
|
|
219
|
-
"@deepseek-ai/dsh-scope": "0.
|
|
220
|
-
"@deepseek-ai/dsh-session": "0.
|
|
221
|
-
"@deepseek-ai/dsh-session-persistence": "0.
|
|
222
|
-
"@deepseek-ai/dsh-session-projection": "0.
|
|
223
|
-
"@deepseek-ai/dsh-session-projection-cache": "0.
|
|
224
|
-
"@deepseek-ai/dsh-settings": "0.
|
|
225
|
-
"@deepseek-ai/dsh-subagent": "0.
|
|
226
|
-
"@deepseek-ai/dsh-system-prompt": "0.
|
|
227
|
-
"@deepseek-ai/dsh-timeout": "0.
|
|
228
|
-
"@deepseek-ai/dsh-tools": "0.
|
|
229
|
-
"@deepseek-ai/dsh-typert-protocol": "0.
|
|
230
|
-
"@deepseek-ai/dsh-user-approval": "0.
|
|
231
|
-
"@deepseek-ai/dsh-user-questions": "0.
|
|
197
|
+
"@deepseek-ai/dsh": "0.2.0-rc.1",
|
|
198
|
+
"@deepseek-ai/dsh-agent": "0.2.0-rc.1",
|
|
199
|
+
"@deepseek-ai/dsh-agent-default-model": "0.2.0-rc.1",
|
|
200
|
+
"@deepseek-ai/dsh-agent-loop": "0.2.0-rc.1",
|
|
201
|
+
"@deepseek-ai/dsh-agent-preset": "0.2.0-rc.1",
|
|
202
|
+
"@deepseek-ai/dsh-agent-preset-registry": "0.2.0-rc.1",
|
|
203
|
+
"@deepseek-ai/dsh-atomic-write": "0.2.0-rc.1",
|
|
204
|
+
"@deepseek-ai/dsh-attachment": "0.2.0-rc.1",
|
|
205
|
+
"@deepseek-ai/dsh-brand": "0.2.0-rc.1",
|
|
206
|
+
"@deepseek-ai/dsh-cmdline": "0.2.0-rc.1",
|
|
207
|
+
"@deepseek-ai/dsh-commands": "0.2.0-rc.1",
|
|
208
|
+
"@deepseek-ai/dsh-credentials": "0.2.0-rc.1",
|
|
209
|
+
"@deepseek-ai/dsh-home-paths": "0.2.0-rc.1",
|
|
210
|
+
"@deepseek-ai/dsh-invariants": "0.2.0-rc.1",
|
|
211
|
+
"@deepseek-ai/dsh-jobs": "0.2.0-rc.1",
|
|
212
|
+
"@deepseek-ai/dsh-llm": "0.2.0-rc.1",
|
|
213
|
+
"@deepseek-ai/dsh-llm-mock-server": "0.2.0-rc.1",
|
|
214
|
+
"@deepseek-ai/dsh-sandbox": "0.2.0-rc.1",
|
|
215
|
+
"@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.1",
|
|
216
|
+
"@deepseek-ai/dsh-scope": "0.2.0-rc.1",
|
|
217
|
+
"@deepseek-ai/dsh-session": "0.2.0-rc.1",
|
|
218
|
+
"@deepseek-ai/dsh-session-persistence": "0.2.0-rc.1",
|
|
219
|
+
"@deepseek-ai/dsh-session-projection": "0.2.0-rc.1",
|
|
220
|
+
"@deepseek-ai/dsh-session-projection-cache": "0.2.0-rc.1",
|
|
221
|
+
"@deepseek-ai/dsh-settings": "0.2.0-rc.1",
|
|
222
|
+
"@deepseek-ai/dsh-subagent": "0.2.0-rc.1",
|
|
223
|
+
"@deepseek-ai/dsh-system-prompt": "0.2.0-rc.1",
|
|
224
|
+
"@deepseek-ai/dsh-timeout": "0.2.0-rc.1",
|
|
225
|
+
"@deepseek-ai/dsh-tools": "0.2.0-rc.1",
|
|
226
|
+
"@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.1",
|
|
227
|
+
"@deepseek-ai/dsh-user-approval": "0.2.0-rc.1",
|
|
228
|
+
"@deepseek-ai/dsh-user-questions": "0.2.0-rc.1"
|
|
232
229
|
}
|
|
233
230
|
}
|