deepseek-cli-mode 0.0.0-stage → 1.0.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.
package/docs/PARITY.md ADDED
@@ -0,0 +1,108 @@
1
+ # Feature parity: Web/Desktop vs. the CLI
2
+
3
+ This page is the honest audit of how much of the DeepSeek Harness Web/Desktop product the terminal CLI reproduces.
4
+ Two facts drive it:
5
+
6
+ 1. The CLI is **not a re-implementation**. It boots the same `dsh-base` + `dsh-headless` bundles the GUI runs, so the
7
+ agent loop, tools, sandbox, approvals, session store, compaction, goals, plans, skills, subagents, workflows and
8
+ MCP resource plumbing are literally the same code.
9
+ 2. The **surface** differs. A terminal has no sidebar, no drag-and-drop, no browser panel, and no pixel cards. Some
10
+ GUI features map to a command; some are meaningless; a few are genuinely missing.
11
+
12
+ Legend: ✅ works · 🟡 terminal adaptation · ❌ not available in the CLI
13
+
14
+ ## Chat and conversation
15
+
16
+ | Web / Desktop | CLI | Notes |
17
+ |---|---|---|
18
+ | ✅ Streaming assistant text | ✅ | Token-level via `agent/assistant-stream` |
19
+ | ✅ Markdown rendering | 🟡 | Headings, bold, inline code, fenced code; no tables/images layout |
20
+ | ✅ Stop a running turn | ✅ | Ctrl+C → `agent.cancel()` |
21
+ | ✅ Multi-turn context | ✅ | One live Agent per process; `/new` starts a fresh session |
22
+ | ✅ Resume a conversation | ✅ | `deepseek -r [id]`, `-c`, `/resume <id>`, `/sessions` |
23
+ | ✅ Session titles/list | 🟡 | `/sessions` lists ids + age; titles are generated in the log but not shown |
24
+ | ✅ Rename / delete / pin sessions | ❌ | Not exposed by any CLI surface |
25
+ | ✅ Message edit & retry | ❌ | No rewind/retry command |
26
+ | ✅ Message feedback | 🟡 | `/feedback` (native Harness command) writes the record |
27
+ | ✅ Attach images (paste/drag) | 🟡 | `/image <path>` or `@photo.png`; stored durably, model sees them |
28
+ | ✅ Attach files | 🟡 | `@path` inlines text up to 200 KB; no binary upload |
29
+ | ✅ @-file references | ✅ | `@path` resolves against the working directory |
30
+ | ✅ Token usage meter | ✅ | Per-turn `· 12.3k in / 456 out` line |
31
+
32
+ ## Tools and agent control
33
+
34
+ | Web / Desktop | CLI | Notes |
35
+ |---|---|---|
36
+ | ✅ Tool cards (read/write/edit/grep/glob/pwsh/web/…) | 🟡 | One-line icons + path preview; results summarized |
37
+ | ✅ File diffs in cards | ❌ | No diff renderer (use `/diff`-style tooling or git in another shell) |
38
+ | ✅ Approval prompts | ✅ | `Allow write …? [y/N]`; `-y/--yes` auto-approves |
39
+ | ✅ Permission presets | ✅ | Native `/permission`, plus `/permissions` alias |
40
+ | ✅ Todo checklist | ✅ | Live `☑ 2/3` checklist with incremental updates |
41
+ | ✅ Subagent cards | 🟡 | `↳ subagent … started/finished` progress lines |
42
+ | ✅ Jobs panel | ✅ | `/jobs` lists id, status, label, progress |
43
+ | ✅ Workflow run view | 🟡 | Tool calls stream; no dedicated tree view |
44
+ | ✅ Deliverables / present cards | ❌ | No card surface in a terminal |
45
+ | ✅ Plan mode | ✅ | Native `/plan`, `/plan off`; plan review uses the terminal question provider |
46
+ | ✅ Goal mode | ✅ | Native `/goal set/view/pause/resume` + goal tools |
47
+ | ✅ Compaction | ✅ | Automatic, plus native `/compact` |
48
+ | ✅ Ask-user questions | ✅ | Rendered with numbered options in the terminal |
49
+ | ✅ Scheduled reminders | ❌ | Needs the Host Web session controller; not mountable in a CLI-only profile |
50
+ | ✅ Skills | 🟡 | `/skills` lists them; the model invokes them through the skill tool |
51
+
52
+ ## Models, auth, settings
53
+
54
+ | Web / Desktop | CLI | Notes |
55
+ |---|---|---|
56
+ | ✅ Pick model / reasoning effort | ✅ | `/model`, `/reasoning`, `--model`, `--reasoning` |
57
+ | ✅ API key management UI | 🟡 | Reuses the key saved by the GUI; `DEEPSEEK_API_KEY` override |
58
+ | ✅ Account / balance panel | ❌ | No account surface |
59
+ | ✅ Provider list / model discovery | 🟡 | Adapter discovery runs on boot; no picker UI |
60
+ | ✅ Permission, theme, font, language settings | 🟡 | Permission via `/permission`; the rest via env vars/`$DSH_HOME` config |
61
+ | ✅ Plugin manager / marketplace | ❌ | Use `dsh plugin --profile dsh-cli add <pkg>` from a shell |
62
+ | ✅ MCP server management | ❌ | The CLI profile does not mount `mcp-client` |
63
+
64
+ ## Workspace and host surface
65
+
66
+ | Web / Desktop | CLI | Notes |
67
+ |---|---|---|
68
+ | ✅ File tree / file preview | ❌ | The terminal is the workspace |
69
+ | ✅ Git changes panel | ❌ | Use git in the shell (tools can run it) |
70
+ | ✅ Integrated terminal panel | ❌ | The CLI *is* a terminal |
71
+ | ✅ Browser panel | ❌ | Desktop-only |
72
+ | ✅ Document preview / Office conversion | ❌ | Office skills still work through tools |
73
+ | ✅ Voice input | ❌ | Desktop/Web only |
74
+ | ✅ Session trajectory / outline / stats / log download | 🟡 | `/export` writes the current run as markdown; no trajectory viewer |
75
+ | ✅ Multiple tabs / concurrent sessions | 🟡 | Run several `deepseek` processes (each owns one session) |
76
+ | ✅ Notifications, tray, auto-update | ❌ | Desktop shell features |
77
+
78
+ ## Commands and workflows that are identical
79
+
80
+ Because the CLI executes the shared `ctx.commands` registry, these behave exactly like the GUI:
81
+
82
+ - `/compact` — compact older history
83
+ - `/goal …` — set/view/pause/resume a long-running goal
84
+ - `/plan …` — enter/leave plan mode
85
+ - `/permission …` — switch the sandbox + approval preset
86
+ - `/feedback` — record session feedback
87
+ - Any command added by a third-party plugin in the profile
88
+
89
+ Run `/help` inside a session to see the live list.
90
+
91
+ ## What is deliberately different
92
+
93
+ - **No GUI chrome.** No sidebar, cards, drag-and-drop, browser, or settings screens.
94
+ - **One session per process.** The Web app multiplexes many sessions in one host; the CLI keeps one live Agent (spawn
95
+ another terminal for another conversation).
96
+ - **stdout is scriptable.** One-shot mode prints only the final answer on stdout, all progress on stderr.
97
+ - **Local paths only.** Attachments come from the filesystem (`@path`, `/image`), never from a browser upload.
98
+
99
+ ## Bottom line
100
+
101
+ Roughly **four fifths of the agent-facing product is shared by construction** (tools, policies, sessions, plans, goals,
102
+ compaction, skills, subagents, workflows). The CLI adds terminal equivalents for most user-facing controls
103
+ (`/plan`, `/goal`, `/permission`, `/compact`, `/jobs`, `/todos`, `/skills`, `/image`, `/export`). What remains
104
+ Web/Desktop-only is the **visual host**: sidebar and cards, file/browser/terminal panels, diff viewer, drag-and-drop,
105
+ voice, account and plugin-management screens, and scheduled reminders (which require the Host session controller).
106
+
107
+ If you need one of those in the terminal, the practical path is a thin client over the same Host API rather than a
108
+ second implementation — that would be a separate project.
package/index.js ADDED
@@ -0,0 +1,13 @@
1
+ // Programmatic entry point. This package is a CLI, so importing it never starts
2
+ // a session — it only exposes the package metadata and the executable path for
3
+ // tooling that discovers CLIs programmatically.
4
+ import { readFileSync } from "node:fs";
5
+ import { fileURLToPath } from "node:url";
6
+
7
+ const manifest = JSON.parse(readFileSync(new URL("./package.json", import.meta.url), "utf8"));
8
+
9
+ export const name = manifest.name;
10
+ export const version = manifest.version;
11
+ /** Absolute path to the executable that `bin` maps to. */
12
+ export const binPath = fileURLToPath(new URL("./bin/deepseek.js", import.meta.url));
13
+ export default manifest;
package/package.json CHANGED
@@ -1,6 +1,52 @@
1
1
  {
2
2
  "name": "deepseek-cli-mode",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "1.0.1",
4
+ "description": "Terminal (CLI) mode for DeepSeek Harness — an interactive, Claude Code-style coding agent for your shell.",
5
+ "type": "module",
6
+ "main": "index.js",
7
+ "bin": {
8
+ "deepseek": "bin/deepseek.js",
9
+ "deepseek-cli-mode": "bin/deepseek.js",
10
+ "dsh-cli": "bin/deepseek.js"
11
+ },
12
+ "files": [
13
+ "bin",
14
+ "runner",
15
+ "docs",
16
+ "CHANGELOG.md",
17
+ "index.js",
18
+ "README.md"
19
+ ],
20
+ "engines": {
21
+ "node": ">=20"
22
+ },
23
+ "scripts": {
24
+ "start": "node bin/deepseek.js",
25
+ "test": "node bin/deepseek.js --version",
26
+ "pack:check": "npm pack --dry-run"
27
+ },
28
+ "keywords": [
29
+ "deepseek",
30
+ "deepseek-harness",
31
+ "dsh",
32
+ "cli",
33
+ "terminal",
34
+ "tui",
35
+ "coding-agent",
36
+ "ai-agent",
37
+ "claude-code",
38
+ "developer-tools"
39
+ ],
40
+ "license": "MIT",
41
+ "publishConfig": {
42
+ "access": "public"
43
+ },
44
+ "peerDependencies": {
45
+ "@deepseek-ai/dsh": ">=0.2.1"
46
+ },
47
+ "peerDependenciesMeta": {
48
+ "@deepseek-ai/dsh": {
49
+ "optional": true
50
+ }
51
+ }
52
+ }