@este.systems/dsc 0.5.2 → 1.0.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/CHANGELOG.md +36 -1
- package/README.md +68 -3
- package/dist/agent.js +24 -2
- package/dist/agent.js.map +1 -1
- package/dist/mcp.js +350 -0
- package/dist/mcp.js.map +1 -0
- package/dist/slash.js +2 -0
- package/dist/slash.js.map +1 -1
- package/dist/tui/History.js +14 -42
- package/dist/tui/History.js.map +1 -1
- package/dist/tui/Markdown.js +1 -1
- package/dist/tui/Markdown.js.map +1 -1
- package/dist/tui.js +161 -1
- package/dist/tui.js.map +1 -1
- package/package.json +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.0.0] - 2026-05-19
|
|
11
|
+
|
|
12
|
+
First stable release. The TUI, the agent loop, the tool surface, the
|
|
13
|
+
session model, the approval flow, the MCP integration, the install/
|
|
14
|
+
update story — all of it has been used in real work for weeks and the
|
|
15
|
+
rough edges are sanded. Future minor versions remain backwards-
|
|
16
|
+
compatible in the slash command surface, the config file shape, and
|
|
17
|
+
the on-disk session format.
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
- MCP stdio transport. `mcp.servers.<name>` now supports `transport: "stdio"` with `command` / `args` / `env`, spawning a local subprocess MCP server (filesystem, git, custom in-house, anything `npx`-distributable). Child env merges on top of `process.env` so the subprocess still sees PATH etc; `${VAR}` references expand in command, args, and env values. Transport is inferred from which of `url`/`command` is set when not explicit.
|
|
21
|
+
- MCP approval gating. Every server has a `requireApproval` policy: `"always"` (every call asks), `"never"` (pass through), `"auto"` (heuristic — tool names / descriptions matching destructive verbs like write/delete/send/run/etc get prompted, clearly read-only ones pass). Defaults: `"always"` for stdio, `"auto"` for HTTP. The `a` (always) answer adds the namespaced tool name to a per-session allowlist so repeated identical calls skip the dialog. Args are pretty-printed in the approval body so the user sees what's about to happen before saying yes.
|
|
22
|
+
- Expanded test coverage. 5 new suites: `prompt.test.ts` (system-prompt assembly + cache-prefix hygiene), `markdown.test.ts` (block-parser invariants), `mcp.test.ts` (approval heuristic + env-var expansion), `store.test.ts` (pub/sub contract), `api.test.ts` (configPath, key sources, cost math). 42 new tests; total 69 across 13 suites. `parseBlocks` (Markdown), `autoRequiresApproval` and `expandEnv` (mcp) are now exported for direct testing.
|
|
23
|
+
- `/budget [usd|off]` sets a per-session USD ceiling. One-time `info()` warning at 80% of the limit; the next turn after the limit is reached refuses to send with a clear error pointing at `/budget off` and `/budget <amount>`. Catches runaway `/auto-continue` loops where you walk away from dsc and come back to a $4 conversation. Session-scoped (not persisted across restarts); resetting the limit clears the warned flag so the new threshold gets its own notice.
|
|
24
|
+
- `/edit` added to the in-app `/help` listing (already worked; was undocumented).
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
- MCP "auto" approval heuristic now catches `write_file` / `delete_record` / etc. The previous `\bwrite\b`-style regex didn't fire on snake_case names because JS treats `_` as a word character. Replaced with tokenizing on non-letters and checking against a set of destructive verbs (including common `-s` / irregular `-ed` forms so verb-shaped descriptions like "sends a message" also trip). Test added.
|
|
28
|
+
- `/update` now retries once after an 8 s delay when npm fails with `ETARGET` — the publish-propagation race where the registry's metadata is updated but the tarball hasn't reached every CDN edge yet. Stops legitimate "yes there's a newer version but I can't install it" failures in the minute or two after `npm publish`.
|
|
29
|
+
|
|
30
|
+
## [0.6.0] - 2026-05-19
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
- Generic MCP (Model Context Protocol) client. Configure remote MCP servers under `mcp.servers` in `~/.config/deepseek/deepseek.json`; dsc connects at boot, discovers tools via `listTools`, and exposes them to the agent alongside the built-ins. Tool names get namespaced as `mcp_<server>_<tool>` so multiple servers don't collide. Headers/query support `${VAR}` env expansion so API keys don't have to live in the config file. `/mcp` lists connected servers and their tools. HTTP (Streamable HTTP) transport only in this release; stdio is a future addition. New runtime dependency on `@modelcontextprotocol/sdk`.
|
|
34
|
+
- Test scaffold using `node --test` invoked through `tsx` — no new dependency. `npm test` discovers and runs `tests/*.test.ts`. Seed coverage on `completeSlash`, `compareSemver`, `loadInstructions` (with temp-dir + isolated XDG_CONFIG_HOME), and `history` save/load/list/export/import (with isolated XDG_DATA_HOME). 27 tests, 5 suites at landing.
|
|
35
|
+
- GitHub Actions CI: typecheck + tests on Linux / macOS / Windows for every push and PR.
|
|
36
|
+
|
|
37
|
+
## [0.5.3] - 2026-05-19
|
|
38
|
+
|
|
39
|
+
### Fixed
|
|
40
|
+
- Streaming markdown actually streams now. 0.5.2 only rendered rich once a paragraph "committed" via a trailing blank line — too conservative for typical model output, which rarely emits a blank until the end. Now the entire streaming content goes through `Markdown` on every chunk; `React.memo` skips the parse when `source` is unchanged (spinner ticks etc). Partial markers (open `**`, half-typed ```) render literal and snap to formatted once they pair.
|
|
41
|
+
|
|
10
42
|
## [0.5.2] - 2026-05-18
|
|
11
43
|
|
|
12
44
|
### Changed
|
|
@@ -172,7 +204,10 @@ Initial public release.
|
|
|
172
204
|
- DECSTBM-pinned status bar.
|
|
173
205
|
- Cross-platform packaging (`npm pack` + per-OS installer scripts).
|
|
174
206
|
|
|
175
|
-
[Unreleased]: https://github.com/EsteSystems/dsc/compare/
|
|
207
|
+
[Unreleased]: https://github.com/EsteSystems/dsc/compare/v1.0.0...HEAD
|
|
208
|
+
[1.0.0]: https://github.com/EsteSystems/dsc/compare/v0.6.0...v1.0.0
|
|
209
|
+
[0.6.0]: https://github.com/EsteSystems/dsc/compare/v0.5.3...v0.6.0
|
|
210
|
+
[0.5.3]: https://github.com/EsteSystems/dsc/compare/v0.5.2...v0.5.3
|
|
176
211
|
[0.5.2]: https://github.com/EsteSystems/dsc/compare/v0.5.1...v0.5.2
|
|
177
212
|
[0.5.1]: https://github.com/EsteSystems/dsc/compare/v0.5.0...v0.5.1
|
|
178
213
|
[0.5.0]: https://github.com/EsteSystems/dsc/compare/v0.4.1...v0.5.0
|
package/README.md
CHANGED
|
@@ -425,6 +425,64 @@ content. Empty files are treated as absent. Files larger than 64 KB are
|
|
|
425
425
|
skipped silently — keep instruction files reasonably short, both for the
|
|
426
426
|
cache prefix and because the model parses them every turn.
|
|
427
427
|
|
|
428
|
+
## MCP servers
|
|
429
|
+
|
|
430
|
+
dsc can connect to remote [MCP](https://modelcontextprotocol.io) servers
|
|
431
|
+
at boot and expose their tools to the agent alongside the built-ins.
|
|
432
|
+
Configure under `mcp.servers` in `~/.config/deepseek/deepseek.json`:
|
|
433
|
+
|
|
434
|
+
```jsonc
|
|
435
|
+
{
|
|
436
|
+
"api_key": "sk-...",
|
|
437
|
+
"mcp": {
|
|
438
|
+
"servers": {
|
|
439
|
+
"tavily": {
|
|
440
|
+
"url": "https://mcp.tavily.com/mcp/",
|
|
441
|
+
"headers": { "Authorization": "Bearer ${TAVILY_API_KEY}" }
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
Per-server fields:
|
|
449
|
+
|
|
450
|
+
| Field | Notes |
|
|
451
|
+
|---|---|
|
|
452
|
+
| `transport` | `"http"` or `"stdio"`. Inferred from which of `url`/`command` is set; specify when ambiguous. |
|
|
453
|
+
| `url` | Required for HTTP transport. Remote MCP endpoint. |
|
|
454
|
+
| `headers` | HTTP only. Static map merged into every request. `${VAR}` references expand against `process.env` at connect time; missing vars throw. |
|
|
455
|
+
| `query` | HTTP only. Appended as URL query params (e.g. `?tavilyApiKey=…`). Same `${VAR}` expansion. |
|
|
456
|
+
| `command` | Required for stdio transport. Executable for the local subprocess (e.g. `"npx"`). |
|
|
457
|
+
| `args` | stdio only. Argv list. `${VAR}` expanded. |
|
|
458
|
+
| `env` | stdio only. Extra env vars for the child, merged on top of `process.env` so it still sees PATH etc. `${VAR}` expanded. |
|
|
459
|
+
| `requireApproval` | `"always"` / `"never"` / `"auto"`. Defaults: `"always"` for stdio (local subprocesses usually touch the filesystem), `"auto"` for HTTP (heuristic on tool names — write/delete/send/run/etc trigger the dialog; read/list/search/get pass through). The `a` (always) answer adds the namespaced tool name to a session-scoped allowlist so repeats skip the prompt. |
|
|
460
|
+
| `enabled` | Optional, default `true`. Set to `false` to skip without removing the entry. |
|
|
461
|
+
| `timeoutMs` | Optional connect timeout. Default 8 s. |
|
|
462
|
+
|
|
463
|
+
Each server's tools are advertised to the model as `mcp_<server>_<tool>`,
|
|
464
|
+
so two servers exposing the same tool name don't collide. `/mcp` shows
|
|
465
|
+
the connected servers + their tools.
|
|
466
|
+
|
|
467
|
+
Example with both transports:
|
|
468
|
+
|
|
469
|
+
```jsonc
|
|
470
|
+
{
|
|
471
|
+
"mcp": {
|
|
472
|
+
"servers": {
|
|
473
|
+
"tavily": {
|
|
474
|
+
"url": "https://mcp.tavily.com/mcp/",
|
|
475
|
+
"headers": { "Authorization": "Bearer ${TAVILY_API_KEY}" }
|
|
476
|
+
},
|
|
477
|
+
"fs": {
|
|
478
|
+
"command": "npx",
|
|
479
|
+
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/workspace"]
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
```
|
|
485
|
+
|
|
428
486
|
## Sessions and history
|
|
429
487
|
|
|
430
488
|
Each session is a JSON file under `$XDG_DATA_HOME/dsc/sessions/`
|
|
@@ -568,8 +626,9 @@ access. To release:
|
|
|
568
626
|
# bottom. Commit the changelog edit before npm version so the bump
|
|
569
627
|
# commit and the changelog entry land in the same release.
|
|
570
628
|
|
|
571
|
-
# 2. Bump the version (semver)
|
|
572
|
-
npm version patch # → 0.1
|
|
629
|
+
# 2. Bump the version (semver):
|
|
630
|
+
npm version patch # → 1.0.1 (creates a commit + git tag)
|
|
631
|
+
# use `minor` or `major` for the others
|
|
573
632
|
|
|
574
633
|
# 3. Make sure you're logged in to npm:
|
|
575
634
|
npm whoami # should print your username
|
|
@@ -601,12 +660,18 @@ Notes:
|
|
|
601
660
|
## Development
|
|
602
661
|
|
|
603
662
|
```sh
|
|
604
|
-
npm run dev # tsx src/
|
|
663
|
+
npm run dev # tsx src/tui.tsx
|
|
605
664
|
npm run typecheck # tsc --noEmit
|
|
665
|
+
npm test # node --test, runs tests/*.test.ts via tsx
|
|
606
666
|
npm run build # compiles to dist/
|
|
607
667
|
npm run package # build + npm pack into pkg/
|
|
608
668
|
```
|
|
609
669
|
|
|
670
|
+
Tests live under `tests/`, separate from `src/` so they don't ship in
|
|
671
|
+
the npm tarball. The runner is Node's built-in `node --test` invoked
|
|
672
|
+
through `tsx` (no extra test-framework dependency). CI runs the same
|
|
673
|
+
command on Linux, macOS, and Windows for every push and PR.
|
|
674
|
+
|
|
610
675
|
Source layout:
|
|
611
676
|
|
|
612
677
|
```
|
package/dist/agent.js
CHANGED
|
@@ -135,7 +135,13 @@ export async function runAgent(opts) {
|
|
|
135
135
|
resp = await chatStream({
|
|
136
136
|
model,
|
|
137
137
|
messages: buildApi(),
|
|
138
|
-
tools
|
|
138
|
+
// Built-in tools first, MCP-provided tools appended. Order
|
|
139
|
+
// doesn't affect dispatch (we route on the mcp_ prefix), but
|
|
140
|
+
// keeping built-ins first is a stable, predictable shape in
|
|
141
|
+
// the prompt for the model.
|
|
142
|
+
tools: opts.extraTools?.length
|
|
143
|
+
? TOOL_SCHEMAS.concat(opts.extraTools)
|
|
144
|
+
: TOOL_SCHEMAS,
|
|
139
145
|
signal,
|
|
140
146
|
onContent: handlers.onContent,
|
|
141
147
|
onReasoning: handlers.onReasoning,
|
|
@@ -185,7 +191,23 @@ export async function runAgent(opts) {
|
|
|
185
191
|
let result;
|
|
186
192
|
let throwAfter = null;
|
|
187
193
|
try {
|
|
188
|
-
|
|
194
|
+
// MCP-provided tools have names like `mcp_<server>_<tool>`.
|
|
195
|
+
// Route them to the caller-supplied dispatcher; everything else
|
|
196
|
+
// goes through the built-in executor in tools.ts.
|
|
197
|
+
if (opts.dispatchExtraTool && name.startsWith("mcp_")) {
|
|
198
|
+
let parsedArgs = {};
|
|
199
|
+
try {
|
|
200
|
+
parsedArgs = JSON.parse(argsRaw || "{}");
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
// fall through with empty args — dispatcher returns a useful
|
|
204
|
+
// error string in its own ToolResult
|
|
205
|
+
}
|
|
206
|
+
result = await opts.dispatchExtraTool(name, parsedArgs);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
result = await executeTool(name, argsRaw, toolCtx, signal);
|
|
210
|
+
}
|
|
189
211
|
}
|
|
190
212
|
catch (e) {
|
|
191
213
|
// Convert the throw into a synthetic tool result so the assistant's
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.js
ADDED
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic MCP (Model Context Protocol) client integration.
|
|
3
|
+
*
|
|
4
|
+
* Lets the user point dsc at one or more remote MCP servers (Tavily,
|
|
5
|
+
* filesystem, GitHub, custom, ...) via a `mcp.servers` block in
|
|
6
|
+
* deepseek.json. At boot we connect each enabled server, ask for its
|
|
7
|
+
* tool list, and expose those tools to the agent as additional callable
|
|
8
|
+
* tools alongside the built-ins (read_file, bash, etc).
|
|
9
|
+
*
|
|
10
|
+
* Phase 1 (this file): HTTP transport only. Stdio transport (for local
|
|
11
|
+
* subprocess servers) is a future addition — it requires child-process
|
|
12
|
+
* lifecycle management we don't need yet.
|
|
13
|
+
*
|
|
14
|
+
* Naming: server-provided tool `foo` reachable through server name
|
|
15
|
+
* `tavily` is advertised to the model as `mcp_tavily_foo`. The `mcp_`
|
|
16
|
+
* prefix makes routing decisions trivial — when the agent calls a tool
|
|
17
|
+
* starting with `mcp_`, dispatch goes through the MCP client instead of
|
|
18
|
+
* the built-in `executeTool` switch. The server prefix prevents
|
|
19
|
+
* collisions when two servers expose tools with the same name.
|
|
20
|
+
*/
|
|
21
|
+
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
22
|
+
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
23
|
+
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
24
|
+
import { confirm } from "./approval.js";
|
|
25
|
+
import { getConfig } from "./api.js";
|
|
26
|
+
/**
|
|
27
|
+
* Whole words that, appearing in a tool name or description, suggest
|
|
28
|
+
* the call mutates state somewhere. The "auto" approval policy gates
|
|
29
|
+
* anything matching and lets clearly-read-only tools (search / list /
|
|
30
|
+
* get / read / ...) pass.
|
|
31
|
+
*
|
|
32
|
+
* We can't use \b word boundaries with a regex because JS treats `_`
|
|
33
|
+
* as a word character — so \bwrite\b would never match inside
|
|
34
|
+
* `write_file`, the most common tool-name shape. Instead we tokenize
|
|
35
|
+
* the input on any non-letter sequence and check each token against
|
|
36
|
+
* this set.
|
|
37
|
+
*
|
|
38
|
+
* Kept deliberately broad — false positives just ask the user, which
|
|
39
|
+
* is the safer failure mode. A missed destructive verb (false negative)
|
|
40
|
+
* is the costly one.
|
|
41
|
+
*/
|
|
42
|
+
const DESTRUCTIVE_WORDS = new Set([
|
|
43
|
+
// Base + common -s / -ed (irregular) forms so verb-shaped descriptions
|
|
44
|
+
// like "sends a message" or "deletes the row" trip the heuristic. We
|
|
45
|
+
// skip -ing forms — they're rare in tool names and descriptions, and
|
|
46
|
+
// including them all would balloon the list without much value.
|
|
47
|
+
"write", "writes",
|
|
48
|
+
"create", "creates", "created",
|
|
49
|
+
"delete", "deletes", "deleted",
|
|
50
|
+
"remove", "removes", "removed",
|
|
51
|
+
"update", "updates", "updated",
|
|
52
|
+
"set", "sets",
|
|
53
|
+
"send", "sends", "sent",
|
|
54
|
+
"post", "posts",
|
|
55
|
+
"publish", "publishes", "published",
|
|
56
|
+
"run", "runs",
|
|
57
|
+
"exec", "execute", "executes",
|
|
58
|
+
"kill", "kills",
|
|
59
|
+
"move", "moves",
|
|
60
|
+
"rename", "renames",
|
|
61
|
+
"insert", "inserts",
|
|
62
|
+
"drop", "drops",
|
|
63
|
+
"push", "pushes",
|
|
64
|
+
"put", "puts",
|
|
65
|
+
"patch", "patches",
|
|
66
|
+
"edit", "edits",
|
|
67
|
+
"modify", "modifies",
|
|
68
|
+
"append", "appends",
|
|
69
|
+
"truncate", "truncates",
|
|
70
|
+
"destroy", "destroys",
|
|
71
|
+
"spawn", "spawns",
|
|
72
|
+
"invoke", "invokes",
|
|
73
|
+
]);
|
|
74
|
+
export function autoRequiresApproval(toolName, description) {
|
|
75
|
+
const haystack = description ? `${toolName} ${description}` : toolName;
|
|
76
|
+
for (const token of haystack.toLowerCase().split(/[^a-z]+/)) {
|
|
77
|
+
if (token && DESTRUCTIVE_WORDS.has(token))
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
const NAME_PATTERN = /^[a-zA-Z0-9_-]+$/;
|
|
83
|
+
/**
|
|
84
|
+
* Walk `${VAR}` references in a string against process.env. Throws when
|
|
85
|
+
* a referenced var is unset — fail-fast beats a silent auth bypass.
|
|
86
|
+
*/
|
|
87
|
+
export function expandEnv(input, where) {
|
|
88
|
+
return input.replace(/\$\{([A-Z0-9_]+)\}/gi, (_match, name) => {
|
|
89
|
+
const v = process.env[name];
|
|
90
|
+
if (typeof v !== "string" || v.length === 0) {
|
|
91
|
+
throw new Error(`${where}: environment variable \${${name}} is unset; required for MCP server config`);
|
|
92
|
+
}
|
|
93
|
+
return v;
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
/** Read mcp.servers from deepseek.json (via the same cache api.ts uses). */
|
|
97
|
+
export function loadMCPConfig() {
|
|
98
|
+
const cfg = getConfig();
|
|
99
|
+
if (!cfg)
|
|
100
|
+
return {};
|
|
101
|
+
const mcp = cfg.mcp;
|
|
102
|
+
if (!mcp || typeof mcp !== "object")
|
|
103
|
+
return {};
|
|
104
|
+
const servers = mcp.servers;
|
|
105
|
+
if (!servers || typeof servers !== "object")
|
|
106
|
+
return {};
|
|
107
|
+
return servers;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Connect to a single MCP server and discover its tools. Resolves with
|
|
111
|
+
* the connection on success, throws on any failure (caller catches and
|
|
112
|
+
* surfaces — we don't want one broken server to take dsc down).
|
|
113
|
+
*/
|
|
114
|
+
async function connectOne(name, config) {
|
|
115
|
+
if (!NAME_PATTERN.test(name)) {
|
|
116
|
+
throw new Error(`mcp server name "${name}" must match ${NAME_PATTERN} (alphanumeric, '_', '-')`);
|
|
117
|
+
}
|
|
118
|
+
// Disambiguate transport: explicit `transport` field wins; otherwise
|
|
119
|
+
// infer from which field is set. Explicit `stdio` plus `url` is an
|
|
120
|
+
// error, etc.
|
|
121
|
+
const transportKind = config.transport ?? (config.command ? "stdio" : "http");
|
|
122
|
+
let transport;
|
|
123
|
+
if (transportKind === "http") {
|
|
124
|
+
if (!config.url) {
|
|
125
|
+
throw new Error(`mcp.${name}: url is required for http transport`);
|
|
126
|
+
}
|
|
127
|
+
const url = new URL(expandEnv(config.url, `mcp.${name}.url`));
|
|
128
|
+
if (config.query) {
|
|
129
|
+
for (const [k, v] of Object.entries(config.query)) {
|
|
130
|
+
url.searchParams.set(k, expandEnv(v, `mcp.${name}.query.${k}`));
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Expand headers up-front; the transport accepts a static headers
|
|
134
|
+
// map (any provider needing dynamic re-auth should switch to an
|
|
135
|
+
// AuthProvider, which the SDK supports — out of scope here).
|
|
136
|
+
const headers = {};
|
|
137
|
+
if (config.headers) {
|
|
138
|
+
for (const [k, v] of Object.entries(config.headers)) {
|
|
139
|
+
headers[k] = expandEnv(v, `mcp.${name}.headers.${k}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
transport = new StreamableHTTPClientTransport(url, {
|
|
143
|
+
requestInit: { headers },
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
// stdio transport — spawn a local subprocess.
|
|
148
|
+
if (!config.command) {
|
|
149
|
+
throw new Error(`mcp.${name}: command is required for stdio transport`);
|
|
150
|
+
}
|
|
151
|
+
const command = expandEnv(config.command, `mcp.${name}.command`);
|
|
152
|
+
const args = (config.args ?? []).map((a, i) => expandEnv(a, `mcp.${name}.args[${i}]`));
|
|
153
|
+
// Inherit parent env first so the child sees PATH etc. Explicit
|
|
154
|
+
// entries override; `${VAR}` expansion lets users forward specific
|
|
155
|
+
// env vars without restating them. Filter undefined values for
|
|
156
|
+
// type-safety against process.env's loose shape.
|
|
157
|
+
const env = {};
|
|
158
|
+
for (const [k, v] of Object.entries(process.env)) {
|
|
159
|
+
if (typeof v === "string")
|
|
160
|
+
env[k] = v;
|
|
161
|
+
}
|
|
162
|
+
if (config.env) {
|
|
163
|
+
for (const [k, v] of Object.entries(config.env)) {
|
|
164
|
+
env[k] = expandEnv(v, `mcp.${name}.env.${k}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
transport = new StdioClientTransport({ command, args, env });
|
|
168
|
+
}
|
|
169
|
+
const client = new Client({ name: "dsc", version: "0.5.3" });
|
|
170
|
+
// Connect with a bounded timeout so a hung server doesn't stall dsc
|
|
171
|
+
// boot indefinitely.
|
|
172
|
+
const timeoutMs = config.timeoutMs ?? 8000;
|
|
173
|
+
await withTimeout(client.connect(transport), timeoutMs, `mcp.${name}: connect timed out after ${timeoutMs}ms`);
|
|
174
|
+
// Ask the server what tools it offers, translate to OpenAI shape.
|
|
175
|
+
const listed = await withTimeout(client.listTools(), timeoutMs, `mcp.${name}: listTools timed out`);
|
|
176
|
+
const tools = [];
|
|
177
|
+
const toolMap = new Map();
|
|
178
|
+
for (const t of listed.tools ?? []) {
|
|
179
|
+
if (!t.name || !NAME_PATTERN.test(t.name)) {
|
|
180
|
+
// Skip tools whose names won't survive the OpenAI tool-name regex;
|
|
181
|
+
// we can't safely call them from chatStream regardless.
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
const namespaced = `mcp_${name}_${t.name}`;
|
|
185
|
+
tools.push({
|
|
186
|
+
type: "function",
|
|
187
|
+
function: {
|
|
188
|
+
name: namespaced,
|
|
189
|
+
description: t.description ?? `tool from MCP server ${name}`,
|
|
190
|
+
// MCP gives us a JSON Schema; OpenAI/DeepSeek's `parameters`
|
|
191
|
+
// accepts JSON Schema directly. Default to empty-object when
|
|
192
|
+
// the server omits inputSchema.
|
|
193
|
+
parameters: t.inputSchema ?? {
|
|
194
|
+
type: "object",
|
|
195
|
+
properties: {},
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
});
|
|
199
|
+
toolMap.set(namespaced, t.name);
|
|
200
|
+
}
|
|
201
|
+
return { name, client, transport, tools, toolMap, config };
|
|
202
|
+
}
|
|
203
|
+
async function withTimeout(p, ms, msg) {
|
|
204
|
+
let timer;
|
|
205
|
+
try {
|
|
206
|
+
return await Promise.race([
|
|
207
|
+
p,
|
|
208
|
+
new Promise((_, reject) => {
|
|
209
|
+
timer = setTimeout(() => reject(new Error(msg)), ms);
|
|
210
|
+
}),
|
|
211
|
+
]);
|
|
212
|
+
}
|
|
213
|
+
finally {
|
|
214
|
+
if (timer)
|
|
215
|
+
clearTimeout(timer);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Connect every enabled MCP server. Failures are isolated per server —
|
|
220
|
+
* one broken config doesn't kill the others. Returns the list of
|
|
221
|
+
* successful connections plus an array of `{ name, error }` for what
|
|
222
|
+
* failed, so the caller can surface them to the user.
|
|
223
|
+
*/
|
|
224
|
+
export async function connectAll() {
|
|
225
|
+
const servers = loadMCPConfig();
|
|
226
|
+
const connections = [];
|
|
227
|
+
const errors = [];
|
|
228
|
+
for (const [name, cfg] of Object.entries(servers)) {
|
|
229
|
+
if (cfg.enabled === false)
|
|
230
|
+
continue;
|
|
231
|
+
try {
|
|
232
|
+
const c = await connectOne(name, cfg);
|
|
233
|
+
connections.push(c);
|
|
234
|
+
}
|
|
235
|
+
catch (e) {
|
|
236
|
+
errors.push({ name, error: e.message });
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return { connections, errors };
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Invoke a namespaced tool (`mcp_<server>_<tool>`) by name. Returns a
|
|
243
|
+
* ToolResult compatible with the rest of the agent's tool path.
|
|
244
|
+
*
|
|
245
|
+
* Approval gating: each server has a `requireApproval` policy
|
|
246
|
+
* ("always" | "never" | "auto"). "auto" uses the DESTRUCTIVE_VERBS_RE
|
|
247
|
+
* heuristic on the tool name + description. When approval is required
|
|
248
|
+
* we route through approval.confirm() before calling. "always"
|
|
249
|
+
* answers add the namespaced tool name to `sessionApprovals` so
|
|
250
|
+
* subsequent identical tool calls in this session skip the dialog.
|
|
251
|
+
*/
|
|
252
|
+
export async function callMCPTool(connections, name, args, opts) {
|
|
253
|
+
// The first underscore-segmented `_<server>_` identifies which
|
|
254
|
+
// connection to dispatch to. We split on the *second* underscore so
|
|
255
|
+
// tool names containing dashes (e.g. tavily-search) work.
|
|
256
|
+
const m = /^mcp_([^_]+)_(.+)$/.exec(name);
|
|
257
|
+
if (!m) {
|
|
258
|
+
return { content: `error: malformed mcp tool name '${name}'` };
|
|
259
|
+
}
|
|
260
|
+
const [, serverName, toolName] = m;
|
|
261
|
+
const conn = connections.find((c) => c.name === serverName);
|
|
262
|
+
if (!conn) {
|
|
263
|
+
return { content: `error: mcp server '${serverName}' not connected` };
|
|
264
|
+
}
|
|
265
|
+
// Confirm the tool is one the server actually advertised (in case the
|
|
266
|
+
// schema got out of sync between connect and invoke).
|
|
267
|
+
const original = conn.toolMap.get(name);
|
|
268
|
+
if (!original || original !== toolName) {
|
|
269
|
+
return { content: `error: tool '${toolName}' not available on '${serverName}'` };
|
|
270
|
+
}
|
|
271
|
+
// ── Approval gate ────────────────────────────────────────────────
|
|
272
|
+
// Default policy: stdio servers always ask (local subprocesses
|
|
273
|
+
// typically have filesystem access). HTTP servers default to "auto"
|
|
274
|
+
// since they're scope-limited to whatever API they wrap.
|
|
275
|
+
const defaultPolicy = (conn.config.transport ?? (conn.config.command ? "stdio" : "http")) === "stdio"
|
|
276
|
+
? "always"
|
|
277
|
+
: "auto";
|
|
278
|
+
const policy = conn.config.requireApproval ?? defaultPolicy;
|
|
279
|
+
let mustAsk = false;
|
|
280
|
+
if (policy === "always") {
|
|
281
|
+
mustAsk = true;
|
|
282
|
+
}
|
|
283
|
+
else if (policy === "auto") {
|
|
284
|
+
const desc = conn.tools.find((t) => t.function.name === name)?.function
|
|
285
|
+
.description;
|
|
286
|
+
mustAsk = autoRequiresApproval(toolName, desc);
|
|
287
|
+
}
|
|
288
|
+
const alreadyApproved = opts?.sessionApprovals?.has(name) ?? false;
|
|
289
|
+
if (mustAsk && !alreadyApproved) {
|
|
290
|
+
// Pretty-print the args so the user sees what's about to happen.
|
|
291
|
+
// Cap so a huge argument blob doesn't drown the dialog.
|
|
292
|
+
let argsPreview = JSON.stringify(args, null, 2);
|
|
293
|
+
if (argsPreview.length > 1200) {
|
|
294
|
+
argsPreview = argsPreview.slice(0, 1200) + "\n…(truncated)";
|
|
295
|
+
}
|
|
296
|
+
const ans = await confirm({
|
|
297
|
+
title: `Run MCP tool ${name}`,
|
|
298
|
+
body: argsPreview,
|
|
299
|
+
kind: "command",
|
|
300
|
+
});
|
|
301
|
+
if (ans === "no") {
|
|
302
|
+
return { content: "rejected by user", rejected: true };
|
|
303
|
+
}
|
|
304
|
+
if (ans === "always") {
|
|
305
|
+
opts?.sessionApprovals?.add(name);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
try {
|
|
309
|
+
const r = await conn.client.callTool({ name: toolName, arguments: args });
|
|
310
|
+
// MCP returns content as an array of typed items (text, image, etc).
|
|
311
|
+
// Concatenate text parts; flag any non-text content so the agent
|
|
312
|
+
// knows something was elided.
|
|
313
|
+
const parts = [];
|
|
314
|
+
for (const item of r.content ?? []) {
|
|
315
|
+
if (item.type === "text" && typeof item.text === "string") {
|
|
316
|
+
parts.push(item.text);
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
parts.push(`(non-text mcp content: ${String(item.type)})`);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
return { content: parts.join("\n") || "(empty result)" };
|
|
323
|
+
}
|
|
324
|
+
catch (e) {
|
|
325
|
+
return { content: `error: ${e.message}` };
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
/** Terminate sessions and close clients. Best-effort.
|
|
329
|
+
* HTTP transports get terminateSession (server-side cleanup); stdio
|
|
330
|
+
* transports don't have one (closing the client kills the child). */
|
|
331
|
+
export async function closeAll(connections) {
|
|
332
|
+
for (const c of connections) {
|
|
333
|
+
try {
|
|
334
|
+
if ("terminateSession" in c.transport &&
|
|
335
|
+
typeof c.transport.terminateSession === "function") {
|
|
336
|
+
await c.transport.terminateSession();
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
catch {
|
|
340
|
+
// best-effort
|
|
341
|
+
}
|
|
342
|
+
try {
|
|
343
|
+
await c.client.close();
|
|
344
|
+
}
|
|
345
|
+
catch {
|
|
346
|
+
// best-effort
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
//# sourceMappingURL=mcp.js.map
|
package/dist/mcp.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/slash.js
CHANGED
|
@@ -5,6 +5,7 @@ export const SLASH_COMMANDS = [
|
|
|
5
5
|
"api-key",
|
|
6
6
|
"audit",
|
|
7
7
|
"auto-continue",
|
|
8
|
+
"budget",
|
|
8
9
|
"clear",
|
|
9
10
|
"compact",
|
|
10
11
|
"copy",
|
|
@@ -17,6 +18,7 @@ export const SLASH_COMMANDS = [
|
|
|
17
18
|
"instructions",
|
|
18
19
|
"lang",
|
|
19
20
|
"list",
|
|
21
|
+
"mcp",
|
|
20
22
|
"model",
|
|
21
23
|
"queue",
|
|
22
24
|
"quit",
|
package/dist/slash.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slash.js","sourceRoot":"","sources":["../src/slash.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,wEAAwE;AACxE,qCAAqC;AACrC,MAAM,CAAC,MAAM,cAAc,GAA0B;IACnD,SAAS;IACT,OAAO;IACP,eAAe;IACf,OAAO;IACP,SAAS;IACT,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,cAAc;IACd,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,MAAM;CACP,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IAIxC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAClE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAClE,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CACrE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CACf,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACjE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;IAC3E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAc;IACzC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"slash.js","sourceRoot":"","sources":["../src/slash.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,wEAAwE;AACxE,qCAAqC;AACrC,MAAM,CAAC,MAAM,cAAc,GAA0B;IACnD,SAAS;IACT,OAAO;IACP,eAAe;IACf,QAAQ;IACR,OAAO;IACP,SAAS;IACT,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,cAAc;IACd,MAAM;IACN,MAAM;IACN,KAAK;IACL,OAAO;IACP,OAAO;IACP,MAAM;IACN,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,MAAM;CACP,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IAIxC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAClE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAClE,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CACrE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CACf,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACjE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;IAC3E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAc;IACzC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|