@agi-fans/oh-my-dsh 0.19.0 → 0.20.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 +1 -3
- package/config/cordis.yml +33 -19
- package/config/presets/code.patch.yml +3 -0
- package/config/presets/cordis.patch.yml +16 -2
- package/config/presets/standard.patch.yml +3 -0
- package/lib/bin.js +1 -1
- package/lib/boot.js +20 -2
- package/lib/plugin.d.ts +1 -1
- package/lib/plugin.js +50 -45
- package/package.json +127 -124
package/README.md
CHANGED
|
@@ -14,9 +14,7 @@ omdsh is a focused, keyboard-first DeepSeek coding agent built on the plugin arc
|
|
|
14
14
|
|
|
15
15
|
</div>
|
|
16
16
|
|
|
17
|
-
 for the current turn presentation and navigation.
|
|
17
|
+
[](https://github.com/agi-fans/oh-my-dsh/blob/main/apps/site/public/hello-oh-my-dsh.mp4)
|
|
20
18
|
|
|
21
19
|
## Quick start
|
|
22
20
|
|
package/config/cordis.yml
CHANGED
|
@@ -10,6 +10,17 @@
|
|
|
10
10
|
- id: timer
|
|
11
11
|
name: '@deepseek-ai/cordis-plugin-timer'
|
|
12
12
|
|
|
13
|
+
- id: hmr
|
|
14
|
+
name: '@deepseek-ai/dsh-hmr'
|
|
15
|
+
config:
|
|
16
|
+
root: []
|
|
17
|
+
|
|
18
|
+
- id: plugin-manager
|
|
19
|
+
name: '@deepseek-ai/dsh-plugin-manager'
|
|
20
|
+
|
|
21
|
+
- id: plugin-inventory
|
|
22
|
+
name: '@deepseek-ai/dsh-host-plugin-inventory'
|
|
23
|
+
|
|
13
24
|
- id: llm
|
|
14
25
|
name: '@deepseek-ai/dsh-llm'
|
|
15
26
|
|
|
@@ -136,6 +147,12 @@
|
|
|
136
147
|
|
|
137
148
|
- id: attachments
|
|
138
149
|
name: '@deepseek-ai/dsh-attachment-local'
|
|
150
|
+
|
|
151
|
+
- id: tui-command-files
|
|
152
|
+
name: '@agi-fans/dsh-tui/command-files'
|
|
153
|
+
|
|
154
|
+
- id: hook-settings
|
|
155
|
+
name: '@agi-fans/dsh-tui/hook-settings'
|
|
139
156
|
config:
|
|
140
157
|
dshHome: !!js process.env.OMDSH_HOME || process.env.DSH_HOME || undefined
|
|
141
158
|
|
|
@@ -160,9 +177,6 @@
|
|
|
160
177
|
- id: authorization
|
|
161
178
|
name: '@deepseek-ai/dsh-authorization'
|
|
162
179
|
|
|
163
|
-
- id: authorization-invariant
|
|
164
|
-
name: '@deepseek-ai/dsh-authorization/invariant'
|
|
165
|
-
|
|
166
180
|
# Dormant multi-provider twin: zero extra picker routes until a `llm-pi-ai:`
|
|
167
181
|
# settings section supplies profiles. /login writes those profiles; /model
|
|
168
182
|
# lists whatever routes become live. Keep llm-deepseek as the official
|
|
@@ -305,21 +319,6 @@
|
|
|
305
319
|
- id: jobs
|
|
306
320
|
name: '@deepseek-ai/dsh-jobs-local'
|
|
307
321
|
|
|
308
|
-
- id: invariants
|
|
309
|
-
name: '@deepseek-ai/dsh-invariants'
|
|
310
|
-
|
|
311
|
-
- id: session-invariant
|
|
312
|
-
name: '@deepseek-ai/dsh-session/invariant'
|
|
313
|
-
|
|
314
|
-
- id: agent-invariant
|
|
315
|
-
name: '@deepseek-ai/dsh-agent/invariant'
|
|
316
|
-
|
|
317
|
-
- id: scope-invariant
|
|
318
|
-
name: '@deepseek-ai/dsh-scope/invariant'
|
|
319
|
-
|
|
320
|
-
- id: agent-loop-invariant
|
|
321
|
-
name: '@deepseek-ai/dsh-agent-loop/invariant'
|
|
322
|
-
|
|
323
322
|
- id: shell-env
|
|
324
323
|
name: '@deepseek-ai/dsh-shell-env'
|
|
325
324
|
config:
|
|
@@ -352,10 +351,15 @@
|
|
|
352
351
|
|
|
353
352
|
- id: terminal-bash
|
|
354
353
|
name: '@deepseek-ai/dsh-terminal-bash'
|
|
354
|
+
config:
|
|
355
|
+
shellDialect: !!js "process.platform === 'win32' ? 'pwsh' : 'bash'"
|
|
355
356
|
|
|
356
357
|
- id: tool-terminal
|
|
357
358
|
name: '@deepseek-ai/dsh-tool-terminal'
|
|
358
359
|
|
|
360
|
+
- id: tui-command-terminal
|
|
361
|
+
name: '@agi-fans/dsh-tui/command-terminal'
|
|
362
|
+
|
|
359
363
|
- id: agent-loop
|
|
360
364
|
name: '@deepseek-ai/dsh-agent-loop'
|
|
361
365
|
config:
|
|
@@ -363,6 +367,9 @@
|
|
|
363
367
|
|
|
364
368
|
- id: ptc-runtime
|
|
365
369
|
name: '@deepseek-ai/dsh-ptc-runtime-node'
|
|
370
|
+
config:
|
|
371
|
+
# Leave time for a default question wait and its recorded sub-call result.
|
|
372
|
+
timeoutMs: 180000
|
|
366
373
|
|
|
367
374
|
- id: cordis-host-runner
|
|
368
375
|
name: '@deepseek-ai/dsh-cordis-host-runner'
|
|
@@ -375,7 +382,8 @@
|
|
|
375
382
|
- id: tool-ask-user
|
|
376
383
|
name: '@deepseek-ai/dsh-tool-ask-user'
|
|
377
384
|
config:
|
|
378
|
-
mode:
|
|
385
|
+
mode: timed
|
|
386
|
+
timeout: 120
|
|
379
387
|
|
|
380
388
|
- id: plan-mode
|
|
381
389
|
name: '@deepseek-ai/dsh-plan-mode'
|
|
@@ -504,6 +512,9 @@
|
|
|
504
512
|
- id: subagent
|
|
505
513
|
name: '@deepseek-ai/dsh-subagent'
|
|
506
514
|
|
|
515
|
+
- id: subagent-model-selection-settings
|
|
516
|
+
name: '@deepseek-ai/dsh-tool-subagent/model-selection-settings'
|
|
517
|
+
|
|
507
518
|
- id: subagent-spawn
|
|
508
519
|
name: '@deepseek-ai/dsh-subagent-spawn-in-process'
|
|
509
520
|
config:
|
|
@@ -679,6 +690,9 @@
|
|
|
679
690
|
- id: tui-command-integrations
|
|
680
691
|
name: '@agi-fans/dsh-tui/command-integrations'
|
|
681
692
|
|
|
693
|
+
- id: tui-command-plugins
|
|
694
|
+
name: '@agi-fans/dsh-tui/command-plugins'
|
|
695
|
+
|
|
682
696
|
- id: tui-command-jobs
|
|
683
697
|
name: '@agi-fans/dsh-tui/command-jobs'
|
|
684
698
|
|
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
description: Standard coding agent optimized for programmatic tool calling through the generated TypeScript SDK.
|
|
11
11
|
order: 2
|
|
12
12
|
plugins:
|
|
13
|
+
- id: subagent-model-selection
|
|
14
|
+
name: '@agi-fans/dsh-tui/subagent-model-selection'
|
|
15
|
+
|
|
13
16
|
- id: persona
|
|
14
17
|
name: '@deepseek-ai/dsh-persona'
|
|
15
18
|
config:
|
|
@@ -7,16 +7,30 @@
|
|
|
7
7
|
config:
|
|
8
8
|
id: cordis
|
|
9
9
|
name: Cordis
|
|
10
|
-
description:
|
|
10
|
+
description: Coding agent with runtime inspection, development skills, and plugin management for Harness compositions.
|
|
11
11
|
order: 4
|
|
12
12
|
plugins:
|
|
13
|
+
- id: subagent-model-selection
|
|
14
|
+
name: '@agi-fans/dsh-tui/subagent-model-selection'
|
|
15
|
+
|
|
13
16
|
- id: persona
|
|
14
17
|
name: '@deepseek-ai/dsh-persona'
|
|
15
18
|
config:
|
|
16
19
|
prefix: |-
|
|
17
20
|
You are a coding agent powered by the {{model}} model, running on the DeepSeek Harness. Your working directory is {{cwd}}.
|
|
18
21
|
|
|
19
|
-
You can inspect the live Cordis runtime while authoring compositions and plugins. Host composition owns shared registries and backends; an Agent preset owns one session's tools, persona, prompt sections, and isolated services. Use cordis_inspect_list to discover providers, then cordis_inspect_query to read exact Service, Event, and Tool APIs.
|
|
22
|
+
You can inspect the live Cordis runtime while authoring compositions and plugins. Host composition owns shared registries and backends; an Agent preset owns one session's tools, persona, prompt sections, and isolated services. Use cordis_inspect_list to discover providers, then cordis_inspect_query to read exact Service, Event, and Tool APIs. Use the development skills for composition and plugin authoring. The plugin_manager tool manages this profile; it requires full host access or explicit approval, and dependency scripts require separate approval.
|
|
20
23
|
|
|
21
24
|
- id: tool-cordis
|
|
22
25
|
name: '@deepseek-ai/dsh-tool-cordis'
|
|
26
|
+
|
|
27
|
+
- id: cordis-skills
|
|
28
|
+
name: '@deepseek-ai/dsh-skill-filesystem'
|
|
29
|
+
config:
|
|
30
|
+
providerName: cordis-authoring
|
|
31
|
+
includeDefaultRoots: false
|
|
32
|
+
customSkillDirs:
|
|
33
|
+
- !!js process.getBuiltinModule('node:path').join(process.getBuiltinModule('node:path').dirname(process.getBuiltinModule('node:module').createRequire(baseUrl).resolve('@deepseek-ai/dsh-agent-preset/package.json')), 'skills')
|
|
34
|
+
|
|
35
|
+
- id: tool-plugin-manager
|
|
36
|
+
name: '@deepseek-ai/dsh-plugin-manager/tools'
|
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
description: Full coding agent with files, shell, search, skills, planning, goals, and delegation.
|
|
11
11
|
order: 1
|
|
12
12
|
plugins:
|
|
13
|
+
- id: subagent-model-selection
|
|
14
|
+
name: '@agi-fans/dsh-tui/subagent-model-selection'
|
|
15
|
+
|
|
13
16
|
- id: persona
|
|
14
17
|
name: '@deepseek-ai/dsh-persona'
|
|
15
18
|
config:
|
package/lib/bin.js
CHANGED
|
@@ -29,7 +29,7 @@ else if (invocation.plugin) {
|
|
|
29
29
|
const { runPlugin } = await import("./plugin.js");
|
|
30
30
|
try {
|
|
31
31
|
prepareLaunchEnvironment();
|
|
32
|
-
process.exitCode = runPlugin(invocation.pluginArgs);
|
|
32
|
+
process.exitCode = await runPlugin(invocation.pluginArgs);
|
|
33
33
|
}
|
|
34
34
|
catch (error) {
|
|
35
35
|
process.stderr.write(dumpErrorMessage(error) + '\n');
|
package/lib/boot.js
CHANGED
|
@@ -48,15 +48,18 @@ export async function runOmdsh(prompt, resume) {
|
|
|
48
48
|
overlays: composed.overlays,
|
|
49
49
|
telemetryDisabledEnv: process.env.DSH_TELEMETRY_DISABLED,
|
|
50
50
|
};
|
|
51
|
-
//
|
|
51
|
+
// Initial package table: installation packages first
|
|
52
52
|
// (every `@deepseek-ai/*` and `@agi-fans/dsh-tui` module resolves from the
|
|
53
53
|
// omdsh installation), then the Profile's own `node_modules`, then the
|
|
54
|
-
// Profile's linked roots.
|
|
54
|
+
// Profile's linked roots. Runtime plugin operations publish later tables;
|
|
55
|
+
// already retained compositions keep their revisions. No fallback links are created.
|
|
55
56
|
const resolution = await createRuntimeResolution({
|
|
56
57
|
installAnchor: INSTALL_ANCHOR,
|
|
57
58
|
profile: composed.profile,
|
|
58
59
|
home,
|
|
59
60
|
});
|
|
61
|
+
let ready = false;
|
|
62
|
+
const readyListeners = new Set();
|
|
60
63
|
const ctx = await boot(NAME, composed.rootConfig, structuredClone(composed.patches), async (hostCtx) => {
|
|
61
64
|
app.current = hostCtx;
|
|
62
65
|
hostCtx.provide('profileContext', profileContext);
|
|
@@ -65,9 +68,24 @@ export async function runOmdsh(prompt, resume) {
|
|
|
65
68
|
provideCmdline(hostCtx, {
|
|
66
69
|
args: resume === undefined ? prompt : ['--resume', resume],
|
|
67
70
|
exit: (code) => { void shutdown.shutdown(code); },
|
|
71
|
+
ready: { onReady(listener) {
|
|
72
|
+
if (ready) {
|
|
73
|
+
listener();
|
|
74
|
+
return () => { };
|
|
75
|
+
}
|
|
76
|
+
readyListeners.add(listener);
|
|
77
|
+
return () => { readyListeners.delete(listener); };
|
|
78
|
+
} },
|
|
68
79
|
});
|
|
69
80
|
});
|
|
70
81
|
app.current = ctx;
|
|
82
|
+
// FiberState is a published const enum, absent from native ESM exports.
|
|
83
|
+
if (ctx.fiber.state === 2 && ctx.get('loader') !== undefined) {
|
|
84
|
+
ready = true;
|
|
85
|
+
for (const listener of readyListeners)
|
|
86
|
+
listener();
|
|
87
|
+
}
|
|
88
|
+
readyListeners.clear();
|
|
71
89
|
return { ctx, shutdown };
|
|
72
90
|
}
|
|
73
91
|
//# sourceMappingURL=boot.js.map
|
package/lib/plugin.d.ts
CHANGED
|
@@ -61,4 +61,4 @@ export declare function anchorPathSpec(argument: string, cwd: string): string;
|
|
|
61
61
|
* Run one `omdsh plugin` invocation: init if needed, forward to pnpm, check
|
|
62
62
|
* peers, reconcile.
|
|
63
63
|
*/
|
|
64
|
-
export declare function runPlugin(args: readonly string[], options?: PluginRunOptions): number
|
|
64
|
+
export declare function runPlugin(args: readonly string[], options?: PluginRunOptions): Promise<number>;
|
package/lib/plugin.js
CHANGED
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { spawnSync } from 'node:child_process';
|
|
12
12
|
import { createRequire } from 'node:module';
|
|
13
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
13
|
+
import { existsSync, mkdirSync, readFileSync } from 'node:fs';
|
|
14
|
+
import { withFileLock } from '@deepseek-ai/dsh-atomic-write';
|
|
14
15
|
import { dirname, join, resolve } from 'node:path';
|
|
15
16
|
import { readProfileManifest, resolveBundleDir, resolveProfileDir, writeProfileManifest, } from '@deepseek-ai/dsh-app-boot';
|
|
16
17
|
import { omdshHome } from "./config-paths.js";
|
|
@@ -26,8 +27,9 @@ Usage:
|
|
|
26
27
|
The Profile lives at $OMDSH_HOME/profiles/omdsh (else $DSH_HOME, else ~/.dsh).
|
|
27
28
|
Filesystem specs such as ./examples/hello are relative to the invoking
|
|
28
29
|
directory. A missing ./path walks parent directories for the same relative
|
|
29
|
-
path and fails if nothing exists. pnpm must be on PATH. Restart
|
|
30
|
-
|
|
30
|
+
path and fails if nothing exists. pnpm must be on PATH. Restart after CLI
|
|
31
|
+
package operations. Use /plugins to apply changes in the running profile with
|
|
32
|
+
cancellation and explicit application results.
|
|
31
33
|
`.trim();
|
|
32
34
|
function writeLine(write, text) {
|
|
33
35
|
write(text.endsWith('\n') ? text : text + '\n');
|
|
@@ -366,7 +368,7 @@ function spawnPnpm(args, dir) {
|
|
|
366
368
|
* Run one `omdsh plugin` invocation: init if needed, forward to pnpm, check
|
|
367
369
|
* peers, reconcile.
|
|
368
370
|
*/
|
|
369
|
-
export function runPlugin(args, options = {}) {
|
|
371
|
+
export async function runPlugin(args, options = {}) {
|
|
370
372
|
const write = options.write ?? ((text) => { process.stderr.write(text); });
|
|
371
373
|
if (args.length === 0 || args[0] === '-h' || args[0] === '--help') {
|
|
372
374
|
writeLine(write, PLUGIN_USAGE);
|
|
@@ -387,50 +389,53 @@ export function runPlugin(args, options = {}) {
|
|
|
387
389
|
}
|
|
388
390
|
const home = omdshHome(environment);
|
|
389
391
|
const dir = resolveProfileDir(PROFILE_NAME, home);
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
if (exitCode !== 0) {
|
|
407
|
-
writeLine(write, `${NAME}: pnpm failed in profile directory ${dir}`);
|
|
408
|
-
if (args.some(argument => /^git\+|^github:|\.git(?:#|$)/u.test(argument))) {
|
|
409
|
-
writeLine(write, `${NAME}: git-hosted plugins build on install via their prepare script, which pnpm blocks until allowed — `
|
|
410
|
-
+ `add the exact key pnpm printed above under allowBuilds in ${join(dir, 'pnpm-workspace.yaml')}, then re-run`);
|
|
392
|
+
mkdirSync(dir, { recursive: true });
|
|
393
|
+
return withFileLock(join(dir, 'package.json'), async () => {
|
|
394
|
+
const created = !existsSync(join(dir, 'package.json'));
|
|
395
|
+
ensureOmdshProfile(home);
|
|
396
|
+
if (created)
|
|
397
|
+
writeLine(write, `${NAME}: initialized profile ${PROFILE_NAME} at ${dir}`);
|
|
398
|
+
const before = readProfileManifest(NAME, dir);
|
|
399
|
+
const forwarded = resolved.map(item => item.argument);
|
|
400
|
+
const runPnpm = options.runPnpm ?? spawnPnpm;
|
|
401
|
+
const result = runPnpm(forwarded, dir);
|
|
402
|
+
if (result.error !== undefined) {
|
|
403
|
+
if (result.error.code === 'ENOENT') {
|
|
404
|
+
writeLine(write, `${NAME}: pnpm not found on PATH — install pnpm to manage profile plugins`);
|
|
405
|
+
return 127;
|
|
406
|
+
}
|
|
407
|
+
throw result.error;
|
|
411
408
|
}
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
const added = Object.keys(readProfileManifest(NAME, dir).dependencies ?? {})
|
|
419
|
-
.filter(name => !(before.dependencies ?? {})[name]);
|
|
420
|
-
if (verb === 'add' && added.length > 0) {
|
|
421
|
-
const rollback = runPnpm(['remove', ...added], dir);
|
|
422
|
-
if ((rollback.status ?? 1) !== 0) {
|
|
423
|
-
writeLine(write, `${NAME}: failed to roll back incompatible packages: ${added.join(', ')}`);
|
|
409
|
+
const exitCode = result.status ?? 1;
|
|
410
|
+
if (exitCode !== 0) {
|
|
411
|
+
writeLine(write, `${NAME}: pnpm failed in profile directory ${dir}`);
|
|
412
|
+
if (args.some(argument => /^git\+|^github:|\.git(?:#|$)/u.test(argument))) {
|
|
413
|
+
writeLine(write, `${NAME}: git-hosted plugins build on install via their prepare script, which pnpm blocks until allowed — `
|
|
414
|
+
+ `add the exact key pnpm printed above under allowBuilds in ${join(dir, 'pnpm-workspace.yaml')}, then re-run`);
|
|
424
415
|
}
|
|
425
|
-
|
|
426
|
-
|
|
416
|
+
return exitCode;
|
|
417
|
+
}
|
|
418
|
+
const incompatible = incompatiblePeerMessage(dir);
|
|
419
|
+
if (incompatible !== undefined) {
|
|
420
|
+
writeLine(write, incompatible);
|
|
421
|
+
const verb = firstVerb(args);
|
|
422
|
+
const added = Object.keys(readProfileManifest(NAME, dir).dependencies ?? {})
|
|
423
|
+
.filter(name => !(before.dependencies ?? {})[name]);
|
|
424
|
+
if (verb === 'add' && added.length > 0) {
|
|
425
|
+
const rollback = runPnpm(['remove', ...added], dir);
|
|
426
|
+
if ((rollback.status ?? 1) !== 0) {
|
|
427
|
+
writeLine(write, `${NAME}: failed to roll back incompatible packages: ${added.join(', ')}`);
|
|
428
|
+
}
|
|
429
|
+
else {
|
|
430
|
+
writeLine(write, `${NAME}: removed incompatible packages: ${added.join(', ')}`);
|
|
431
|
+
}
|
|
427
432
|
}
|
|
433
|
+
return 1;
|
|
428
434
|
}
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
return 0;
|
|
435
|
+
for (const warning of bundlelessWarnings(before, dir))
|
|
436
|
+
writeLine(write, warning);
|
|
437
|
+
reconcilePlugins(before, dir);
|
|
438
|
+
return 0;
|
|
439
|
+
}, { waitMs: 120_000 });
|
|
435
440
|
}
|
|
436
441
|
//# sourceMappingURL=plugin.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agi-fans/oh-my-dsh",
|
|
3
3
|
"description": "omdsh: a keyboard-first DeepSeek TUI coding agent on the DeepSeek Harness runtime",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.20.0",
|
|
5
5
|
"homepage": "https://omdsh.agi.fans/",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"omdsh",
|
|
@@ -55,134 +55,137 @@
|
|
|
55
55
|
"access": "public"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@deepseek-ai/cordis-plugin-loader": "1.0.
|
|
59
|
-
"@deepseek-ai/cordis-plugin-timer": "1.1.
|
|
60
|
-
"@deepseek-ai/dsh-agent": "0.2.
|
|
61
|
-
"@deepseek-ai/dsh-agent-default-model": "0.2.
|
|
62
|
-
"@deepseek-ai/dsh-agent-instructions": "0.2.
|
|
63
|
-
"@deepseek-ai/dsh-agent-loop": "0.2.
|
|
64
|
-
"@deepseek-ai/dsh-agent-preset": "0.2.
|
|
65
|
-
"@deepseek-ai/dsh-agent-preset-registry": "0.2.
|
|
66
|
-
"@deepseek-ai/dsh-agent-tool-presentation": "0.2.
|
|
67
|
-
"@deepseek-ai/dsh-app-boot": "0.2.
|
|
68
|
-
"@deepseek-ai/dsh-
|
|
69
|
-
"@deepseek-ai/dsh-
|
|
70
|
-
"@deepseek-ai/dsh-
|
|
71
|
-
"@deepseek-ai/dsh-
|
|
72
|
-
"@deepseek-ai/dsh-
|
|
73
|
-
"@deepseek-ai/dsh-command-
|
|
74
|
-
"@deepseek-ai/dsh-command-
|
|
75
|
-
"@deepseek-ai/dsh-
|
|
76
|
-
"@deepseek-ai/dsh-
|
|
77
|
-
"@deepseek-ai/dsh-compaction-
|
|
78
|
-
"@deepseek-ai/dsh-compaction-
|
|
79
|
-
"@deepseek-ai/dsh-
|
|
80
|
-
"@deepseek-ai/dsh-
|
|
81
|
-
"@deepseek-ai/dsh-
|
|
82
|
-
"@deepseek-ai/dsh-
|
|
83
|
-
"@deepseek-ai/dsh-file-reference
|
|
84
|
-
"@deepseek-ai/dsh-
|
|
85
|
-
"@deepseek-ai/dsh-fs-
|
|
86
|
-
"@deepseek-ai/dsh-fs-
|
|
87
|
-
"@deepseek-ai/dsh-
|
|
88
|
-
"@deepseek-ai/dsh-goal
|
|
89
|
-
"@deepseek-ai/dsh-
|
|
90
|
-
"@deepseek-ai/dsh-
|
|
91
|
-
"@deepseek-ai/dsh-
|
|
92
|
-
"@deepseek-ai/dsh-
|
|
93
|
-
"@deepseek-ai/dsh-
|
|
94
|
-
"@deepseek-ai/dsh-
|
|
95
|
-
"@deepseek-ai/dsh-llm
|
|
96
|
-
"@deepseek-ai/dsh-llm-
|
|
97
|
-
"@deepseek-ai/dsh-
|
|
98
|
-
"@deepseek-ai/dsh-
|
|
99
|
-
"@deepseek-ai/dsh-
|
|
100
|
-
"@deepseek-ai/dsh-
|
|
101
|
-
"@deepseek-ai/dsh-
|
|
102
|
-
"@deepseek-ai/dsh-
|
|
103
|
-
"@deepseek-ai/dsh-
|
|
104
|
-
"@deepseek-ai/dsh-
|
|
105
|
-
"@deepseek-ai/dsh-
|
|
106
|
-
"@deepseek-ai/dsh-
|
|
107
|
-
"@deepseek-ai/dsh-
|
|
108
|
-
"@deepseek-ai/dsh-
|
|
109
|
-
"@deepseek-ai/dsh-
|
|
110
|
-
"@deepseek-ai/dsh-sandbox
|
|
111
|
-
"@deepseek-ai/dsh-
|
|
112
|
-
"@deepseek-ai/dsh-
|
|
113
|
-
"@deepseek-ai/dsh-
|
|
114
|
-
"@deepseek-ai/dsh-
|
|
115
|
-
"@deepseek-ai/dsh-session
|
|
116
|
-
"@deepseek-ai/dsh-session-
|
|
117
|
-
"@deepseek-ai/dsh-session-
|
|
118
|
-
"@deepseek-ai/dsh-session-
|
|
119
|
-
"@deepseek-ai/dsh-session-
|
|
120
|
-
"@deepseek-ai/dsh-session-
|
|
121
|
-
"@deepseek-ai/dsh-session-
|
|
122
|
-
"@deepseek-ai/dsh-session-
|
|
123
|
-
"@deepseek-ai/dsh-
|
|
124
|
-
"@deepseek-ai/dsh-
|
|
125
|
-
"@deepseek-ai/dsh-
|
|
126
|
-
"@deepseek-ai/dsh-
|
|
127
|
-
"@deepseek-ai/dsh-
|
|
128
|
-
"@deepseek-ai/dsh-
|
|
129
|
-
"@deepseek-ai/dsh-
|
|
130
|
-
"@deepseek-ai/dsh-
|
|
131
|
-
"@deepseek-ai/dsh-
|
|
132
|
-
"@deepseek-ai/dsh-
|
|
133
|
-
"@deepseek-ai/dsh-
|
|
134
|
-
"@deepseek-ai/dsh-
|
|
135
|
-
"@deepseek-ai/dsh-
|
|
136
|
-
"@deepseek-ai/dsh-subagent
|
|
137
|
-
"@deepseek-ai/dsh-subagent-
|
|
138
|
-
"@deepseek-ai/dsh-
|
|
139
|
-
"@deepseek-ai/dsh-
|
|
140
|
-
"@deepseek-ai/dsh-
|
|
141
|
-
"@deepseek-ai/dsh-
|
|
142
|
-
"@deepseek-ai/dsh-
|
|
143
|
-
"@deepseek-ai/dsh-
|
|
144
|
-
"@deepseek-ai/dsh-
|
|
145
|
-
"@deepseek-ai/dsh-
|
|
146
|
-
"@deepseek-ai/dsh-
|
|
147
|
-
"@deepseek-ai/dsh-tool-
|
|
148
|
-
"@deepseek-ai/dsh-tool-
|
|
149
|
-
"@deepseek-ai/dsh-tool-
|
|
150
|
-
"@deepseek-ai/dsh-tool-
|
|
151
|
-
"@deepseek-ai/dsh-tool-
|
|
152
|
-
"@deepseek-ai/dsh-tool-
|
|
153
|
-
"@deepseek-ai/dsh-tool-
|
|
154
|
-
"@deepseek-ai/dsh-tool-
|
|
155
|
-
"@deepseek-ai/dsh-tool-
|
|
156
|
-
"@deepseek-ai/dsh-tool-
|
|
157
|
-
"@deepseek-ai/dsh-tool-
|
|
158
|
-
"@deepseek-ai/dsh-tool-
|
|
159
|
-
"@deepseek-ai/dsh-tool-
|
|
160
|
-
"@deepseek-ai/dsh-tool-
|
|
161
|
-
"@deepseek-ai/dsh-tool-
|
|
162
|
-
"@deepseek-ai/dsh-tool-
|
|
163
|
-
"@deepseek-ai/dsh-tool-
|
|
164
|
-
"@deepseek-ai/dsh-tool-
|
|
165
|
-
"@deepseek-ai/dsh-tool-
|
|
166
|
-
"@deepseek-ai/dsh-tool-
|
|
167
|
-
"@deepseek-ai/dsh-
|
|
168
|
-
"@deepseek-ai/dsh-
|
|
169
|
-
"@deepseek-ai/dsh-
|
|
170
|
-
"@deepseek-ai/dsh-
|
|
171
|
-
"@deepseek-ai/dsh-
|
|
172
|
-
"@deepseek-ai/dsh-
|
|
173
|
-
"@deepseek-ai/dsh-
|
|
174
|
-
"@deepseek-ai/dsh-
|
|
175
|
-
"@deepseek-ai/dsh-
|
|
176
|
-
"@deepseek-ai/dsh-
|
|
177
|
-
"@deepseek-ai/
|
|
58
|
+
"@deepseek-ai/cordis-plugin-loader": "1.0.6-alpha.1",
|
|
59
|
+
"@deepseek-ai/cordis-plugin-timer": "1.1.7-alpha.1",
|
|
60
|
+
"@deepseek-ai/dsh-agent": "0.2.1-alpha.1",
|
|
61
|
+
"@deepseek-ai/dsh-agent-default-model": "0.2.1-alpha.1",
|
|
62
|
+
"@deepseek-ai/dsh-agent-instructions": "0.2.1-alpha.1",
|
|
63
|
+
"@deepseek-ai/dsh-agent-loop": "0.2.1-alpha.1",
|
|
64
|
+
"@deepseek-ai/dsh-agent-preset": "0.2.1-alpha.1",
|
|
65
|
+
"@deepseek-ai/dsh-agent-preset-registry": "0.2.1-alpha.1",
|
|
66
|
+
"@deepseek-ai/dsh-agent-tool-presentation": "0.2.1-alpha.1",
|
|
67
|
+
"@deepseek-ai/dsh-app-boot": "0.2.1-alpha.1",
|
|
68
|
+
"@deepseek-ai/dsh-atomic-write": "0.2.1-alpha.1",
|
|
69
|
+
"@deepseek-ai/dsh-attachment-local": "0.2.1-alpha.1",
|
|
70
|
+
"@deepseek-ai/dsh-authorization": "0.2.1-alpha.1",
|
|
71
|
+
"@deepseek-ai/dsh-bash-sandbox": "0.2.1-alpha.1",
|
|
72
|
+
"@deepseek-ai/dsh-cmdline": "0.2.1-alpha.1",
|
|
73
|
+
"@deepseek-ai/dsh-command-compact": "0.2.1-alpha.1",
|
|
74
|
+
"@deepseek-ai/dsh-command-feedback": "0.2.1-alpha.1",
|
|
75
|
+
"@deepseek-ai/dsh-command-goal": "0.2.1-alpha.1",
|
|
76
|
+
"@deepseek-ai/dsh-commands": "0.2.1-alpha.1",
|
|
77
|
+
"@deepseek-ai/dsh-compaction-basic": "0.2.1-alpha.1",
|
|
78
|
+
"@deepseek-ai/dsh-compaction-image-offload": "0.2.1-alpha.1",
|
|
79
|
+
"@deepseek-ai/dsh-compaction-tool-result-pruner": "0.2.1-alpha.1",
|
|
80
|
+
"@deepseek-ai/dsh-config-editor": "0.2.1-alpha.1",
|
|
81
|
+
"@deepseek-ai/dsh-cordis-host-runner": "0.2.1-alpha.1",
|
|
82
|
+
"@deepseek-ai/dsh-credentials-local": "0.2.1-alpha.1",
|
|
83
|
+
"@deepseek-ai/dsh-file-reference": "0.2.1-alpha.1",
|
|
84
|
+
"@deepseek-ai/dsh-file-reference-local": "0.2.1-alpha.1",
|
|
85
|
+
"@deepseek-ai/dsh-fs-local": "0.2.1-alpha.1",
|
|
86
|
+
"@deepseek-ai/dsh-fs-observation-policy": "0.2.1-alpha.1",
|
|
87
|
+
"@deepseek-ai/dsh-fs-sandbox": "0.2.1-alpha.1",
|
|
88
|
+
"@deepseek-ai/dsh-goal": "0.2.1-alpha.1",
|
|
89
|
+
"@deepseek-ai/dsh-goal-round-driver": "0.2.1-alpha.1",
|
|
90
|
+
"@deepseek-ai/dsh-hmr": "0.2.1-alpha.1",
|
|
91
|
+
"@deepseek-ai/dsh-host-plugin-inventory": "0.2.1-alpha.1",
|
|
92
|
+
"@deepseek-ai/dsh-http-proxy": "0.2.1-alpha.1",
|
|
93
|
+
"@deepseek-ai/dsh-jobs-local": "0.2.1-alpha.1",
|
|
94
|
+
"@deepseek-ai/dsh-launch-environment": "0.2.1-alpha.1",
|
|
95
|
+
"@deepseek-ai/dsh-llm": "0.2.1-alpha.1",
|
|
96
|
+
"@deepseek-ai/dsh-llm-deepseek-api-key": "0.2.1-alpha.1",
|
|
97
|
+
"@deepseek-ai/dsh-llm-pi-ai": "0.2.1-alpha.1",
|
|
98
|
+
"@deepseek-ai/dsh-llm-retry": "0.2.1-alpha.1",
|
|
99
|
+
"@deepseek-ai/dsh-lsp": "0.2.1-alpha.1",
|
|
100
|
+
"@deepseek-ai/dsh-lsp-stdio": "0.2.1-alpha.1",
|
|
101
|
+
"@deepseek-ai/dsh-mcp-client": "0.2.1-alpha.1",
|
|
102
|
+
"@deepseek-ai/dsh-mcp-resources": "0.2.1-alpha.1",
|
|
103
|
+
"@deepseek-ai/dsh-output-retention": "0.2.1-alpha.1",
|
|
104
|
+
"@deepseek-ai/dsh-permission-presets": "0.2.1-alpha.1",
|
|
105
|
+
"@deepseek-ai/dsh-persona": "0.2.1-alpha.1",
|
|
106
|
+
"@deepseek-ai/dsh-plan-mode": "0.2.1-alpha.1",
|
|
107
|
+
"@deepseek-ai/dsh-plugin-manager": "0.2.1-alpha.1",
|
|
108
|
+
"@deepseek-ai/dsh-ptc-runtime-node": "0.2.1-alpha.1",
|
|
109
|
+
"@deepseek-ai/dsh-pwsh-local": "0.2.1-alpha.1",
|
|
110
|
+
"@deepseek-ai/dsh-pwsh-sandbox": "0.2.1-alpha.1",
|
|
111
|
+
"@deepseek-ai/dsh-repeat-tool-reminder": "0.2.1-alpha.1",
|
|
112
|
+
"@deepseek-ai/dsh-sandbox-local": "0.2.1-alpha.1",
|
|
113
|
+
"@deepseek-ai/dsh-sandbox-policy": "0.2.1-alpha.1",
|
|
114
|
+
"@deepseek-ai/dsh-scope": "0.2.1-alpha.1",
|
|
115
|
+
"@deepseek-ai/dsh-session": "0.2.1-alpha.1",
|
|
116
|
+
"@deepseek-ai/dsh-session-checkpoint-policy": "0.2.1-alpha.1",
|
|
117
|
+
"@deepseek-ai/dsh-session-persistence-jsonl": "0.2.1-alpha.1",
|
|
118
|
+
"@deepseek-ai/dsh-session-projection": "0.2.1-alpha.1",
|
|
119
|
+
"@deepseek-ai/dsh-session-projection-cache": "0.2.1-alpha.1",
|
|
120
|
+
"@deepseek-ai/dsh-session-query": "0.2.1-alpha.1",
|
|
121
|
+
"@deepseek-ai/dsh-session-query-sqlite": "0.2.1-alpha.1",
|
|
122
|
+
"@deepseek-ai/dsh-session-reference": "0.2.1-alpha.1",
|
|
123
|
+
"@deepseek-ai/dsh-session-stats": "0.2.1-alpha.1",
|
|
124
|
+
"@deepseek-ai/dsh-session-title": "0.2.1-alpha.1",
|
|
125
|
+
"@deepseek-ai/dsh-session-title-first-prompt-llm": "0.2.1-alpha.1",
|
|
126
|
+
"@deepseek-ai/dsh-settings": "0.2.1-alpha.1",
|
|
127
|
+
"@deepseek-ai/dsh-shell-env": "0.2.1-alpha.1",
|
|
128
|
+
"@deepseek-ai/dsh-skill": "0.2.1-alpha.1",
|
|
129
|
+
"@deepseek-ai/dsh-skill-filesystem": "0.2.1-alpha.1",
|
|
130
|
+
"@deepseek-ai/dsh-spill": "0.2.1-alpha.1",
|
|
131
|
+
"@deepseek-ai/dsh-spill-local": "0.2.1-alpha.1",
|
|
132
|
+
"@deepseek-ai/dsh-spill-policy": "0.2.1-alpha.1",
|
|
133
|
+
"@deepseek-ai/dsh-storage": "0.2.1-alpha.1",
|
|
134
|
+
"@deepseek-ai/dsh-storage-domain": "0.2.1-alpha.1",
|
|
135
|
+
"@deepseek-ai/dsh-storage-json": "0.2.1-alpha.1",
|
|
136
|
+
"@deepseek-ai/dsh-subagent": "0.2.1-alpha.1",
|
|
137
|
+
"@deepseek-ai/dsh-subagent-acp": "0.2.1-alpha.1",
|
|
138
|
+
"@deepseek-ai/dsh-subagent-fork-in-process": "0.2.1-alpha.1",
|
|
139
|
+
"@deepseek-ai/dsh-subagent-in-process-driver": "0.2.1-alpha.1",
|
|
140
|
+
"@deepseek-ai/dsh-subagent-spawn-in-process": "0.2.1-alpha.1",
|
|
141
|
+
"@deepseek-ai/dsh-subprocess-local": "0.2.1-alpha.1",
|
|
142
|
+
"@deepseek-ai/dsh-system-prompt": "0.2.1-alpha.1",
|
|
143
|
+
"@deepseek-ai/dsh-terminal": "0.2.1-alpha.1",
|
|
144
|
+
"@deepseek-ai/dsh-terminal-bash": "0.2.1-alpha.1",
|
|
145
|
+
"@deepseek-ai/dsh-timeout": "0.2.1-alpha.1",
|
|
146
|
+
"@deepseek-ai/dsh-token-meter": "0.2.1-alpha.1",
|
|
147
|
+
"@deepseek-ai/dsh-tool-ask-user": "0.2.1-alpha.1",
|
|
148
|
+
"@deepseek-ai/dsh-tool-bash": "0.2.1-alpha.1",
|
|
149
|
+
"@deepseek-ai/dsh-tool-bash-persistent": "0.2.1-alpha.1",
|
|
150
|
+
"@deepseek-ai/dsh-tool-call-timeout-policy": "0.2.1-alpha.1",
|
|
151
|
+
"@deepseek-ai/dsh-tool-cordis": "0.2.1-alpha.1",
|
|
152
|
+
"@deepseek-ai/dsh-tool-fs": "0.2.1-alpha.1",
|
|
153
|
+
"@deepseek-ai/dsh-tool-fs-search": "0.2.1-alpha.1",
|
|
154
|
+
"@deepseek-ai/dsh-tool-goal": "0.2.1-alpha.1",
|
|
155
|
+
"@deepseek-ai/dsh-tool-jobs": "0.2.1-alpha.1",
|
|
156
|
+
"@deepseek-ai/dsh-tool-lsp": "0.2.1-alpha.1",
|
|
157
|
+
"@deepseek-ai/dsh-tool-present": "0.2.1-alpha.1",
|
|
158
|
+
"@deepseek-ai/dsh-tool-pwsh": "0.2.1-alpha.1",
|
|
159
|
+
"@deepseek-ai/dsh-tool-pwsh-persistent": "0.2.1-alpha.1",
|
|
160
|
+
"@deepseek-ai/dsh-tool-ralph": "0.2.1-alpha.1",
|
|
161
|
+
"@deepseek-ai/dsh-tool-session-query": "0.2.1-alpha.1",
|
|
162
|
+
"@deepseek-ai/dsh-tool-skill": "0.2.1-alpha.1",
|
|
163
|
+
"@deepseek-ai/dsh-tool-str-replace-editor": "0.2.1-alpha.1",
|
|
164
|
+
"@deepseek-ai/dsh-tool-subagent": "0.2.1-alpha.1",
|
|
165
|
+
"@deepseek-ai/dsh-tool-subagent-control": "0.2.1-alpha.1",
|
|
166
|
+
"@deepseek-ai/dsh-tool-terminal": "0.2.1-alpha.1",
|
|
167
|
+
"@deepseek-ai/dsh-tool-todo": "0.2.1-alpha.1",
|
|
168
|
+
"@deepseek-ai/dsh-tool-web": "0.2.1-alpha.1",
|
|
169
|
+
"@deepseek-ai/dsh-tool-workflow": "0.2.1-alpha.1",
|
|
170
|
+
"@deepseek-ai/dsh-tools": "0.2.1-alpha.1",
|
|
171
|
+
"@deepseek-ai/dsh-user-approval": "0.2.1-alpha.1",
|
|
172
|
+
"@deepseek-ai/dsh-user-questions": "0.2.1-alpha.1",
|
|
173
|
+
"@deepseek-ai/dsh-web": "0.2.1-alpha.1",
|
|
174
|
+
"@deepseek-ai/dsh-web-fetch-http": "0.2.1-alpha.1",
|
|
175
|
+
"@deepseek-ai/dsh-web-search-deepseek": "0.2.1-alpha.1",
|
|
176
|
+
"@deepseek-ai/dsh-workflow": "0.2.1-alpha.1",
|
|
177
|
+
"@deepseek-ai/dsh-workflow-ptc": "0.2.1-alpha.1",
|
|
178
|
+
"@deepseek-ai/dsh-workspace": "0.2.1-alpha.1",
|
|
179
|
+
"@deepseek-ai/dsh-workspace-changes": "0.2.1-alpha.1",
|
|
180
|
+
"@deepseek-ai/schemastery": "3.18.5-alpha.1",
|
|
178
181
|
"node-addon-require-builtin": "^0.1.6",
|
|
179
|
-
"@agi-fans/dsh-tui": "^0.
|
|
182
|
+
"@agi-fans/dsh-tui": "^0.20.0"
|
|
180
183
|
},
|
|
181
184
|
"peerDependencies": {
|
|
182
|
-
"@deepseek-ai/cordis": "
|
|
185
|
+
"@deepseek-ai/cordis": "~4.0.5-alpha.1"
|
|
183
186
|
},
|
|
184
187
|
"devDependencies": {
|
|
185
|
-
"@deepseek-ai/cordis": "4.0.
|
|
188
|
+
"@deepseek-ai/cordis": "4.0.5-alpha.1",
|
|
186
189
|
"@types/node": "^22.10.0",
|
|
187
190
|
"tsx": "^4.19.0",
|
|
188
191
|
"typescript": "^5.6.0",
|