@namzu/cli 30.0.0 → 33.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 +261 -1
- package/dist/browser/commands.js +11 -7
- package/dist/browser/commands.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +26 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/acp.d.ts +20 -2
- package/dist/commands/acp.d.ts.map +1 -1
- package/dist/commands/acp.js +42 -5
- package/dist/commands/acp.js.map +1 -1
- package/dist/commands/archive.d.ts +4 -0
- package/dist/commands/archive.d.ts.map +1 -0
- package/dist/commands/archive.js +62 -0
- package/dist/commands/archive.js.map +1 -0
- package/dist/commands/drain.d.ts.map +1 -1
- package/dist/commands/drain.js +2 -1
- package/dist/commands/drain.js.map +1 -1
- package/dist/commands/exec-json.d.ts.map +1 -1
- package/dist/commands/exec-json.js +24 -1
- package/dist/commands/exec-json.js.map +1 -1
- package/dist/commands/exec.d.ts.map +1 -1
- package/dist/commands/exec.js +2 -1
- package/dist/commands/exec.js.map +1 -1
- package/dist/commands/login.d.ts +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +33 -11
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/mcp-oauth-login.d.ts +19 -0
- package/dist/commands/mcp-oauth-login.d.ts.map +1 -0
- package/dist/commands/mcp-oauth-login.js +213 -0
- package/dist/commands/mcp-oauth-login.js.map +1 -0
- package/dist/commands/mcp.d.ts +3 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +288 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/prior-messages.d.ts.map +1 -1
- package/dist/commands/prior-messages.js +42 -2
- package/dist/commands/prior-messages.js.map +1 -1
- package/dist/commands/schedule.d.ts.map +1 -1
- package/dist/commands/schedule.js +7 -5
- package/dist/commands/schedule.js.map +1 -1
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +60 -5
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/types.d.ts +2 -0
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/worktree.d.ts +6 -0
- package/dist/commands/worktree.d.ts.map +1 -0
- package/dist/commands/worktree.js +85 -0
- package/dist/commands/worktree.js.map +1 -0
- package/dist/config/composer-triggers.d.ts +41 -0
- package/dist/config/composer-triggers.d.ts.map +1 -0
- package/dist/config/composer-triggers.js +80 -0
- package/dist/config/composer-triggers.js.map +1 -0
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +58 -0
- package/dist/config/load.js.map +1 -1
- package/dist/config/schema.d.ts +34 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/config/user-config.d.ts +2 -0
- package/dist/config/user-config.d.ts.map +1 -1
- package/dist/config/user-config.js +76 -6
- package/dist/config/user-config.js.map +1 -1
- package/dist/context/doctrine.d.ts +3 -3
- package/dist/context/doctrine.d.ts.map +1 -1
- package/dist/context/doctrine.js +3 -3
- package/dist/context/doctrine.js.map +1 -1
- package/dist/context/runtime-message.d.ts.map +1 -1
- package/dist/context/runtime-message.js +4 -0
- package/dist/context/runtime-message.js.map +1 -1
- package/dist/doctor/checks/credentials.d.ts.map +1 -1
- package/dist/doctor/checks/credentials.js +2 -0
- package/dist/doctor/checks/credentials.js.map +1 -1
- package/dist/integrations/mcp/oauth-store.d.ts +40 -0
- package/dist/integrations/mcp/oauth-store.d.ts.map +1 -0
- package/dist/integrations/mcp/oauth-store.js +549 -0
- package/dist/integrations/mcp/oauth-store.js.map +1 -0
- package/dist/integrations/mcp/servers.d.ts +72 -5
- package/dist/integrations/mcp/servers.d.ts.map +1 -1
- package/dist/integrations/mcp/servers.js +298 -24
- package/dist/integrations/mcp/servers.js.map +1 -1
- package/dist/integrations/mcp/user-config.d.ts +25 -0
- package/dist/integrations/mcp/user-config.d.ts.map +1 -0
- package/dist/integrations/mcp/user-config.js +92 -0
- package/dist/integrations/mcp/user-config.js.map +1 -0
- package/dist/integrations/plugins/runtime.d.ts +11 -9
- package/dist/integrations/plugins/runtime.d.ts.map +1 -1
- package/dist/integrations/plugins/runtime.js +17 -36
- package/dist/integrations/plugins/runtime.js.map +1 -1
- package/dist/integrations/providers/credential-store.d.ts +8 -0
- package/dist/integrations/providers/credential-store.d.ts.map +1 -1
- package/dist/integrations/providers/credential-store.js +111 -22
- package/dist/integrations/providers/credential-store.js.map +1 -1
- package/dist/integrations/providers/discover.d.ts +11 -5
- package/dist/integrations/providers/discover.d.ts.map +1 -1
- package/dist/integrations/providers/discover.js +26 -12
- package/dist/integrations/providers/discover.js.map +1 -1
- package/dist/integrations/providers/index.d.ts +1 -1
- package/dist/integrations/providers/index.d.ts.map +1 -1
- package/dist/integrations/providers/index.js +1 -1
- package/dist/integrations/providers/index.js.map +1 -1
- package/dist/integrations/resident/session-step.d.ts.map +1 -1
- package/dist/integrations/resident/session-step.js +2 -1
- package/dist/integrations/resident/session-step.js.map +1 -1
- package/dist/integrations/sessions/store.d.ts +23 -5
- package/dist/integrations/sessions/store.d.ts.map +1 -1
- package/dist/integrations/sessions/store.js +184 -26
- package/dist/integrations/sessions/store.js.map +1 -1
- package/dist/integrations/subagents/NamzuCliAgent.d.ts +8 -0
- package/dist/integrations/subagents/NamzuCliAgent.d.ts.map +1 -0
- package/dist/integrations/subagents/NamzuCliAgent.js +9 -0
- package/dist/integrations/subagents/NamzuCliAgent.js.map +1 -0
- package/dist/integrations/subagents/runtime.d.ts +9 -6
- package/dist/integrations/subagents/runtime.d.ts.map +1 -1
- package/dist/integrations/subagents/runtime.js +108 -19
- package/dist/integrations/subagents/runtime.js.map +1 -1
- package/dist/integrations/subagents/worktree-driver.d.ts +17 -0
- package/dist/integrations/subagents/worktree-driver.d.ts.map +1 -0
- package/dist/integrations/subagents/worktree-driver.js +72 -0
- package/dist/integrations/subagents/worktree-driver.js.map +1 -0
- package/dist/integrations/web/search.d.ts.map +1 -1
- package/dist/integrations/web/search.js +8 -6
- package/dist/integrations/web/search.js.map +1 -1
- package/dist/integrations/worktrees/managed.d.ts +49 -0
- package/dist/integrations/worktrees/managed.d.ts.map +1 -0
- package/dist/integrations/worktrees/managed.js +231 -0
- package/dist/integrations/worktrees/managed.js.map +1 -0
- package/dist/permissions/rules.d.ts +5 -1
- package/dist/permissions/rules.d.ts.map +1 -1
- package/dist/permissions/rules.js +85 -3
- package/dist/permissions/rules.js.map +1 -1
- package/dist/schedule/build.d.ts +19 -2
- package/dist/schedule/build.d.ts.map +1 -1
- package/dist/schedule/build.js +119 -21
- package/dist/schedule/build.js.map +1 -1
- package/dist/schedule/changes.d.ts.map +1 -1
- package/dist/schedule/changes.js +13 -0
- package/dist/schedule/changes.js.map +1 -1
- package/dist/schedule/commands/add.d.ts +1 -1
- package/dist/schedule/commands/add.d.ts.map +1 -1
- package/dist/schedule/commands/add.js +186 -40
- package/dist/schedule/commands/add.js.map +1 -1
- package/dist/schedule/commands/list.d.ts +2 -0
- package/dist/schedule/commands/list.d.ts.map +1 -1
- package/dist/schedule/commands/list.js +64 -19
- package/dist/schedule/commands/list.js.map +1 -1
- package/dist/schedule/daemon/daemon.d.ts +1 -1
- package/dist/schedule/daemon/daemon.d.ts.map +1 -1
- package/dist/schedule/daemon/daemon.js +17 -5
- package/dist/schedule/daemon/daemon.js.map +1 -1
- package/dist/schedule/daemon/notify.d.ts +21 -1
- package/dist/schedule/daemon/notify.d.ts.map +1 -1
- package/dist/schedule/daemon/notify.js +43 -0
- package/dist/schedule/daemon/notify.js.map +1 -1
- package/dist/schedule/fire/fire.d.ts +1 -1
- package/dist/schedule/fire/fire.d.ts.map +1 -1
- package/dist/schedule/fire/fire.js +205 -14
- package/dist/schedule/fire/fire.js.map +1 -1
- package/dist/schedule/fire/result.d.ts +1 -1
- package/dist/schedule/fire/result.d.ts.map +1 -1
- package/dist/schedule/fire/result.js +2 -1
- package/dist/schedule/fire/result.js.map +1 -1
- package/dist/schedule/fire/run-script.d.ts +46 -0
- package/dist/schedule/fire/run-script.d.ts.map +1 -0
- package/dist/schedule/fire/run-script.js +81 -0
- package/dist/schedule/fire/run-script.js.map +1 -0
- package/dist/schedule/fire/unattended-note.d.ts +8 -0
- package/dist/schedule/fire/unattended-note.d.ts.map +1 -1
- package/dist/schedule/fire/unattended-note.js +5 -0
- package/dist/schedule/fire/unattended-note.js.map +1 -1
- package/dist/schedule/fire/wake-gate.d.ts +39 -0
- package/dist/schedule/fire/wake-gate.d.ts.map +1 -0
- package/dist/schedule/fire/wake-gate.js +90 -0
- package/dist/schedule/fire/wake-gate.js.map +1 -0
- package/dist/schedule/floor.d.ts +1 -1
- package/dist/schedule/floor.d.ts.map +1 -1
- package/dist/schedule/floor.js +288 -16
- package/dist/schedule/floor.js.map +1 -1
- package/dist/schedule/policy.d.ts +40 -0
- package/dist/schedule/policy.d.ts.map +1 -1
- package/dist/schedule/policy.js +36 -0
- package/dist/schedule/policy.js.map +1 -1
- package/dist/schedule/script-check.d.ts +53 -0
- package/dist/schedule/script-check.d.ts.map +1 -0
- package/dist/schedule/script-check.js +145 -0
- package/dist/schedule/script-check.js.map +1 -0
- package/dist/schedule/script-shell.d.ts +3 -0
- package/dist/schedule/script-shell.d.ts.map +1 -0
- package/dist/schedule/script-shell.js +5 -0
- package/dist/schedule/script-shell.js.map +1 -0
- package/dist/schedule/service/manifest.js +1 -1
- package/dist/schedule/service/manifest.js.map +1 -1
- package/dist/schedule/store/atomic.d.ts +5 -2
- package/dist/schedule/store/atomic.d.ts.map +1 -1
- package/dist/schedule/store/atomic.js +7 -4
- package/dist/schedule/store/atomic.js.map +1 -1
- package/dist/schedule/store/claims.js +1 -1
- package/dist/schedule/store/claims.js.map +1 -1
- package/dist/schedule/store/history.d.ts +1 -1
- package/dist/schedule/store/history.d.ts.map +1 -1
- package/dist/schedule/store/history.js +4 -1
- package/dist/schedule/store/history.js.map +1 -1
- package/dist/schedule/store/jobs.d.ts +19 -3
- package/dist/schedule/store/jobs.d.ts.map +1 -1
- package/dist/schedule/store/jobs.js +83 -16
- package/dist/schedule/store/jobs.js.map +1 -1
- package/dist/schedule/store/state.js +1 -1
- package/dist/schedule/store/state.js.map +1 -1
- package/dist/schedule/types.d.ts +71 -6
- package/dist/schedule/types.d.ts.map +1 -1
- package/dist/schedule/types.js +25 -1
- package/dist/schedule/types.js.map +1 -1
- package/dist/schedule/visible-source.d.ts +18 -0
- package/dist/schedule/visible-source.d.ts.map +1 -0
- package/dist/schedule/visible-source.js +59 -0
- package/dist/schedule/visible-source.js.map +1 -0
- package/dist/skills/audit.d.ts +31 -0
- package/dist/skills/audit.d.ts.map +1 -0
- package/dist/skills/audit.js +75 -0
- package/dist/skills/audit.js.map +1 -0
- package/dist/test-support/toolset.d.ts +23 -0
- package/dist/test-support/toolset.d.ts.map +1 -0
- package/dist/test-support/toolset.js +27 -0
- package/dist/test-support/toolset.js.map +1 -0
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +568 -106
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/ChoicePicker.d.ts +2 -0
- package/dist/tui/ChoicePicker.d.ts.map +1 -1
- package/dist/tui/ChoicePicker.js +10 -2
- package/dist/tui/ChoicePicker.js.map +1 -1
- package/dist/tui/Composer.d.ts +62 -3
- package/dist/tui/Composer.d.ts.map +1 -1
- package/dist/tui/Composer.js +162 -25
- package/dist/tui/Composer.js.map +1 -1
- package/dist/tui/ComposerFrame.d.ts +1 -1
- package/dist/tui/ComposerFrame.js +3 -3
- package/dist/tui/ComposerFrame.js.map +1 -1
- package/dist/tui/EffortSlider.d.ts +8 -9
- package/dist/tui/EffortSlider.d.ts.map +1 -1
- package/dist/tui/EffortSlider.js +15 -12
- package/dist/tui/EffortSlider.js.map +1 -1
- package/dist/tui/Picker.d.ts.map +1 -1
- package/dist/tui/Picker.js +18 -3
- package/dist/tui/Picker.js.map +1 -1
- package/dist/tui/ResumePicker.d.ts +2 -1
- package/dist/tui/ResumePicker.d.ts.map +1 -1
- package/dist/tui/ResumePicker.js +3 -3
- package/dist/tui/ResumePicker.js.map +1 -1
- package/dist/tui/StatusBar.d.ts +12 -12
- package/dist/tui/StatusBar.d.ts.map +1 -1
- package/dist/tui/StatusBar.js +15 -15
- package/dist/tui/StatusBar.js.map +1 -1
- package/dist/tui/agent.d.ts +46 -7
- package/dist/tui/agent.d.ts.map +1 -1
- package/dist/tui/agent.js +399 -182
- package/dist/tui/agent.js.map +1 -1
- package/dist/tui/browser-notices.d.ts.map +1 -1
- package/dist/tui/browser-notices.js +6 -1
- package/dist/tui/browser-notices.js.map +1 -1
- package/dist/tui/credential-entry.d.ts +4 -29
- package/dist/tui/credential-entry.d.ts.map +1 -1
- package/dist/tui/credential-entry.js +7 -29
- package/dist/tui/credential-entry.js.map +1 -1
- package/dist/tui/hypermode.d.ts +37 -0
- package/dist/tui/hypermode.d.ts.map +1 -0
- package/dist/tui/hypermode.js +58 -0
- package/dist/tui/hypermode.js.map +1 -0
- package/dist/tui/login-prompt.d.ts +3 -1
- package/dist/tui/login-prompt.d.ts.map +1 -1
- package/dist/tui/login-prompt.js +11 -0
- package/dist/tui/login-prompt.js.map +1 -1
- package/dist/tui/permission-review.d.ts +1 -1
- package/dist/tui/permission-review.js +1 -1
- package/dist/tui/provider-list.d.ts.map +1 -1
- package/dist/tui/provider-list.js +3 -1
- package/dist/tui/provider-list.js.map +1 -1
- package/dist/tui/schedule/host-commands.d.ts.map +1 -1
- package/dist/tui/schedule/host-commands.js +94 -33
- package/dist/tui/schedule/host-commands.js.map +1 -1
- package/dist/tui/schedule/integration.d.ts +6 -2
- package/dist/tui/schedule/integration.d.ts.map +1 -1
- package/dist/tui/schedule/integration.js +3 -1
- package/dist/tui/schedule/integration.js.map +1 -1
- package/dist/tui/schedule/resume.d.ts.map +1 -1
- package/dist/tui/schedule/resume.js +10 -1
- package/dist/tui/schedule/resume.js.map +1 -1
- package/dist/tui/schedule/tool-host.d.ts +4 -1
- package/dist/tui/schedule/tool-host.d.ts.map +1 -1
- package/dist/tui/schedule/tool-host.js +155 -40
- package/dist/tui/schedule/tool-host.js.map +1 -1
- package/dist/tui/slashCommands.d.ts +33 -6
- package/dist/tui/slashCommands.d.ts.map +1 -1
- package/dist/tui/slashCommands.js +96 -34
- package/dist/tui/slashCommands.js.map +1 -1
- package/dist/tui/theme.d.ts +10 -4
- package/dist/tui/theme.d.ts.map +1 -1
- package/dist/tui/theme.js +4 -3
- package/dist/tui/theme.js.map +1 -1
- package/dist/tui/triggers/analyze.d.ts +57 -0
- package/dist/tui/triggers/analyze.d.ts.map +1 -0
- package/dist/tui/triggers/analyze.js +221 -0
- package/dist/tui/triggers/analyze.js.map +1 -0
- package/dist/tui/triggers/context-text.d.ts +21 -0
- package/dist/tui/triggers/context-text.d.ts.map +1 -0
- package/dist/tui/triggers/context-text.js +44 -0
- package/dist/tui/triggers/context-text.js.map +1 -0
- package/dist/tui/triggers/copy.d.ts +38 -0
- package/dist/tui/triggers/copy.d.ts.map +1 -0
- package/dist/tui/triggers/copy.js +163 -0
- package/dist/tui/triggers/copy.js.map +1 -0
- package/dist/tui/triggers/detect.d.ts +83 -0
- package/dist/tui/triggers/detect.d.ts.map +1 -0
- package/dist/tui/triggers/detect.js +295 -0
- package/dist/tui/triggers/detect.js.map +1 -0
- package/dist/tui/triggers/fold.d.ts +34 -0
- package/dist/tui/triggers/fold.d.ts.map +1 -0
- package/dist/tui/triggers/fold.js +44 -0
- package/dist/tui/triggers/fold.js.map +1 -0
- package/dist/tui/triggers/pattern.d.ts +66 -0
- package/dist/tui/triggers/pattern.d.ts.map +1 -0
- package/dist/tui/triggers/pattern.js +243 -0
- package/dist/tui/triggers/pattern.js.map +1 -0
- package/dist/tui/triggers/provenance.d.ts +58 -0
- package/dist/tui/triggers/provenance.d.ts.map +1 -0
- package/dist/tui/triggers/provenance.js +98 -0
- package/dist/tui/triggers/provenance.js.map +1 -0
- package/dist/tui/triggers/registry.d.ts +113 -0
- package/dist/tui/triggers/registry.d.ts.map +1 -0
- package/dist/tui/triggers/registry.js +164 -0
- package/dist/tui/triggers/registry.js.map +1 -0
- package/dist/tui/triggers/setting.d.ts +18 -0
- package/dist/tui/triggers/setting.d.ts.map +1 -0
- package/dist/tui/triggers/setting.js +61 -0
- package/dist/tui/triggers/setting.js.map +1 -0
- package/dist/tui/triggers/verbs.d.ts +29 -0
- package/dist/tui/triggers/verbs.d.ts.map +1 -0
- package/dist/tui/triggers/verbs.js +140 -0
- package/dist/tui/triggers/verbs.js.map +1 -0
- package/dist/tui/turn-interruption.d.ts.map +1 -1
- package/dist/tui/turn-interruption.js +4 -0
- package/dist/tui/turn-interruption.js.map +1 -1
- package/dist/tui/types.d.ts +3 -1
- package/dist/tui/types.d.ts.map +1 -1
- package/package.json +13 -12
- package/skills/schedule-task/SKILL.md +115 -3
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* "search": { "url": "https://tools.example.internal/mcp" }
|
|
15
15
|
* }
|
|
16
16
|
*
|
|
17
|
-
* Its tools arrive prefixed with the server's name (`
|
|
17
|
+
* Its tools arrive prefixed with the server's name (`mcp__tickets__create`), so
|
|
18
18
|
* two servers offering `search` do not collide and the transcript says where a
|
|
19
19
|
* call went.
|
|
20
20
|
*
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
* and a headless run has nobody to read anything, so it refuses. This module
|
|
32
32
|
* reports; the callers decide.
|
|
33
33
|
*/
|
|
34
|
-
import { type MCPTransportUnion, type ToolDefinition } from '@namzu/sdk';
|
|
34
|
+
import { type MCPToolDrift, type MCPTransportUnion, type ToolDefinition, type Toolset } from '@namzu/sdk';
|
|
35
35
|
/**
|
|
36
36
|
* How long a single server gets to connect, hand shake and list its tools.
|
|
37
37
|
*
|
|
@@ -55,6 +55,15 @@ export interface McpServerSpec {
|
|
|
55
55
|
/** Stdio: the executable to run. */
|
|
56
56
|
readonly command?: string;
|
|
57
57
|
readonly args?: readonly string[];
|
|
58
|
+
/**
|
|
59
|
+
* A value may reference the operator's own environment with a bare
|
|
60
|
+
* `${VAR_NAME}` — no `${VAR:-default}` fallback, and an unset
|
|
61
|
+
* `VAR_NAME` fails this server with a named reason rather than running
|
|
62
|
+
* with an empty string. See {@link expandEnvRefsInRecord}. Prefer
|
|
63
|
+
* `inheritEnv` below for a plain "grant this variable under its own
|
|
64
|
+
* name"; use `${VAR_NAME}` here to rename a variable into whatever key
|
|
65
|
+
* the server expects.
|
|
66
|
+
*/
|
|
58
67
|
readonly env?: Readonly<Record<string, string>>;
|
|
59
68
|
/**
|
|
60
69
|
* Variables from the operator's own environment this server may have.
|
|
@@ -72,6 +81,11 @@ export interface McpServerSpec {
|
|
|
72
81
|
readonly cwd?: string;
|
|
73
82
|
/** HTTP: the server's endpoint. */
|
|
74
83
|
readonly url?: string;
|
|
84
|
+
/**
|
|
85
|
+
* Same `${VAR_NAME}` expansion as `env` above — the only secret-safe
|
|
86
|
+
* option for a header value, since `inheritEnv` reaches the stdio
|
|
87
|
+
* child's process environment only, never an HTTP header.
|
|
88
|
+
*/
|
|
75
89
|
readonly headers?: Readonly<Record<string, string>>;
|
|
76
90
|
/**
|
|
77
91
|
* How long THIS server gets to connect, hand shake and list its tools, in
|
|
@@ -100,6 +114,18 @@ export interface McpServerSpec {
|
|
|
100
114
|
* `connectTimeoutMs` for the handshake that will actually answer.
|
|
101
115
|
*/
|
|
102
116
|
readonly eraProbeTimeoutMs?: number;
|
|
117
|
+
/** Server-reported names admitted from tools, prompts and resources. */
|
|
118
|
+
readonly allow?: readonly string[];
|
|
119
|
+
/** Server-reported names refused even if `allow` includes them. */
|
|
120
|
+
readonly deny?: readonly string[];
|
|
121
|
+
/** Retries only tool calls the SDK marks safe to repeat. Defaults to none. */
|
|
122
|
+
readonly maxRetries?: number;
|
|
123
|
+
/** Require a person to approve every call this server contributes. */
|
|
124
|
+
readonly requireApproval?: boolean;
|
|
125
|
+
/** Trust this server's read-only hints for review exemptions. Defaults to false. */
|
|
126
|
+
readonly readOnlyHintTrusted?: boolean;
|
|
127
|
+
/** Include the server's own initialize instructions as untrusted turn context. Default false. */
|
|
128
|
+
readonly instructions?: boolean;
|
|
103
129
|
}
|
|
104
130
|
export type McpServersConfig = Readonly<Record<string, McpServerSpec>>;
|
|
105
131
|
export interface ConnectedMcpServer {
|
|
@@ -109,11 +135,21 @@ export interface ConnectedMcpServer {
|
|
|
109
135
|
* What this server actually contributes, by tool name.
|
|
110
136
|
*
|
|
111
137
|
* Carried from the listing rather than recovered later. The names arrive
|
|
112
|
-
* prefixed with the server's own (`
|
|
138
|
+
* prefixed with the server's own (`mcp__tickets__create`), so a caller COULD
|
|
113
139
|
* split them back apart — but that turns an encoding this file owns into a
|
|
114
140
|
* format two places have to agree about, and the list is free right here.
|
|
115
141
|
*/
|
|
116
142
|
readonly tools: readonly string[];
|
|
143
|
+
/** The server's current initialize instructions, if it supplied any. */
|
|
144
|
+
readonly instructions?: string;
|
|
145
|
+
/** Names changed since this connection's first listing; changed definitions remain held. */
|
|
146
|
+
readonly drift?: MCPToolDrift;
|
|
147
|
+
/** Current allow/deny refusals, by server-reported name. */
|
|
148
|
+
readonly refused?: readonly {
|
|
149
|
+
kind: 'tools' | 'prompts' | 'resources';
|
|
150
|
+
name: string;
|
|
151
|
+
reason: 'not_allowed' | 'denied';
|
|
152
|
+
}[];
|
|
117
153
|
}
|
|
118
154
|
export interface FailedMcpServer {
|
|
119
155
|
readonly name: string;
|
|
@@ -121,8 +157,13 @@ export interface FailedMcpServer {
|
|
|
121
157
|
readonly reason: string;
|
|
122
158
|
}
|
|
123
159
|
export interface McpConnection {
|
|
124
|
-
/**
|
|
160
|
+
/** Current definitions from every connected server, read from its live toolsets. */
|
|
125
161
|
readonly tools: readonly ToolDefinition[];
|
|
162
|
+
/**
|
|
163
|
+
* Two live entries per connected server: its configured main tools and its
|
|
164
|
+
* always-deferred resource tools. Both carry the `mcp:<server>` source.
|
|
165
|
+
*/
|
|
166
|
+
readonly toolsets: readonly Toolset[];
|
|
126
167
|
/** One coherent live snapshot; use this when successes and failures are shown together. */
|
|
127
168
|
current(): {
|
|
128
169
|
readonly connected: readonly ConnectedMcpServer[];
|
|
@@ -142,6 +183,32 @@ export interface McpConnection {
|
|
|
142
183
|
*/
|
|
143
184
|
close(): Promise<void>;
|
|
144
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Expand `${VAR}` references inside `env`/`headers` values against the
|
|
188
|
+
* operator's own environment.
|
|
189
|
+
*
|
|
190
|
+
* Deliberately narrower than the interpolation some other MCP clients'
|
|
191
|
+
* configs use (see docs/cli/mcp-servers.md): bare `${VAR}` only, no
|
|
192
|
+
* `${VAR:-default}` fallback, and only inside `env` and `headers` values —
|
|
193
|
+
* never `command`, `args`, `url` or `cwd`, which have no legitimate secret
|
|
194
|
+
* use case and would only widen the surface for an accidental literal `${`
|
|
195
|
+
* to break. A referenced variable that is unset is refused with a named
|
|
196
|
+
* reason, not silently substituted with an empty string: that is exactly
|
|
197
|
+
* the footgun a `:-default` fallback would reintroduce, and this module's
|
|
198
|
+
* whole design is "every failure is named" rather than a server running
|
|
199
|
+
* quietly with a secret it never got.
|
|
200
|
+
*
|
|
201
|
+
* `inheritEnv` stays the primary idiom for "grant this named variable to
|
|
202
|
+
* the child process under its own name" — this is for the config VALUE
|
|
203
|
+
* itself, letting an operator rename an env var into whatever key or
|
|
204
|
+
* header a server expects, and giving `headers` a secret-safe option it
|
|
205
|
+
* has never had (`inheritEnv` only reaches the stdio child's process env,
|
|
206
|
+
* not header values).
|
|
207
|
+
*
|
|
208
|
+
* Returns the expanded record, or a reason string naming the first unset
|
|
209
|
+
* variable a value referenced.
|
|
210
|
+
*/
|
|
211
|
+
export declare function expandEnvRefsInRecord(record: Readonly<Record<string, string>>, env: NodeJS.ProcessEnv): Readonly<Record<string, string>> | string;
|
|
145
212
|
/**
|
|
146
213
|
* Turn one spec into a transport, or say why it is not one.
|
|
147
214
|
*
|
|
@@ -149,7 +216,7 @@ export interface McpConnection {
|
|
|
149
216
|
* operator who edited one into a file that already had the other, and picking
|
|
150
217
|
* either would run something they did not mean to run.
|
|
151
218
|
*/
|
|
152
|
-
export declare function transportFor(spec: McpServerSpec, defaultCwd: string): MCPTransportUnion | string;
|
|
219
|
+
export declare function transportFor(spec: McpServerSpec, defaultCwd: string, env?: NodeJS.ProcessEnv): MCPTransportUnion | string;
|
|
153
220
|
/**
|
|
154
221
|
* The connect deadline a spec asks for, or why it cannot have it.
|
|
155
222
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"servers.d.ts","sourceRoot":"","sources":["../../../src/integrations/mcp/servers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;
|
|
1
|
+
{"version":3,"file":"servers.d.ts","sourceRoot":"","sources":["../../../src/integrations/mcp/servers.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* "search": { "url": "https://tools.example.internal/mcp" }
|
|
15
15
|
* }
|
|
16
16
|
*
|
|
17
|
-
* Its tools arrive prefixed with the server's name (`
|
|
17
|
+
* Its tools arrive prefixed with the server's name (`mcp__tickets__create`), so
|
|
18
18
|
* two servers offering `search` do not collide and the transcript says where a
|
|
19
19
|
* call went.
|
|
20
20
|
*
|
|
@@ -31,7 +31,9 @@
|
|
|
31
31
|
* and a headless run has nobody to read anything, so it refuses. This module
|
|
32
32
|
* reports; the callers decide.
|
|
33
33
|
*/
|
|
34
|
-
import {
|
|
34
|
+
import { UnauthorizedError, auth, extractWWWAuthenticateParams, withOAuth, } from '@modelcontextprotocol/client';
|
|
35
|
+
import { MCPClient, MCPHttpStatusError, mcpToolset, requireApproval, } from '@namzu/sdk';
|
|
36
|
+
import { McpOAuthLoginRequiredError, McpOAuthStoreError, createMcpOAuthProvider, hasMcpOAuthTokens, isSecureMcpOAuthUrl, mcpOAuthPath, } from './oauth-store.js';
|
|
35
37
|
/**
|
|
36
38
|
* How long a single server gets to connect, hand shake and list its tools.
|
|
37
39
|
*
|
|
@@ -50,6 +52,55 @@ export const CONNECT_TIMEOUT_MS = 10_000;
|
|
|
50
52
|
* command open past the work it was asked to do.
|
|
51
53
|
*/
|
|
52
54
|
export const CLOSE_TIMEOUT_MS = 2_000;
|
|
55
|
+
/**
|
|
56
|
+
* A bare `${VAR}` reference inside an `env` or `headers` value — identifier
|
|
57
|
+
* characters only, no `:-default` fallback. See {@link expandEnvRefsInRecord}.
|
|
58
|
+
*/
|
|
59
|
+
const ENV_REF_PATTERN = /\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g;
|
|
60
|
+
/**
|
|
61
|
+
* Expand `${VAR}` references inside `env`/`headers` values against the
|
|
62
|
+
* operator's own environment.
|
|
63
|
+
*
|
|
64
|
+
* Deliberately narrower than the interpolation some other MCP clients'
|
|
65
|
+
* configs use (see docs/cli/mcp-servers.md): bare `${VAR}` only, no
|
|
66
|
+
* `${VAR:-default}` fallback, and only inside `env` and `headers` values —
|
|
67
|
+
* never `command`, `args`, `url` or `cwd`, which have no legitimate secret
|
|
68
|
+
* use case and would only widen the surface for an accidental literal `${`
|
|
69
|
+
* to break. A referenced variable that is unset is refused with a named
|
|
70
|
+
* reason, not silently substituted with an empty string: that is exactly
|
|
71
|
+
* the footgun a `:-default` fallback would reintroduce, and this module's
|
|
72
|
+
* whole design is "every failure is named" rather than a server running
|
|
73
|
+
* quietly with a secret it never got.
|
|
74
|
+
*
|
|
75
|
+
* `inheritEnv` stays the primary idiom for "grant this named variable to
|
|
76
|
+
* the child process under its own name" — this is for the config VALUE
|
|
77
|
+
* itself, letting an operator rename an env var into whatever key or
|
|
78
|
+
* header a server expects, and giving `headers` a secret-safe option it
|
|
79
|
+
* has never had (`inheritEnv` only reaches the stdio child's process env,
|
|
80
|
+
* not header values).
|
|
81
|
+
*
|
|
82
|
+
* Returns the expanded record, or a reason string naming the first unset
|
|
83
|
+
* variable a value referenced.
|
|
84
|
+
*/
|
|
85
|
+
export function expandEnvRefsInRecord(record, env) {
|
|
86
|
+
const result = {};
|
|
87
|
+
for (const [key, raw] of Object.entries(record)) {
|
|
88
|
+
let missing;
|
|
89
|
+
const expanded = raw.replace(ENV_REF_PATTERN, (whole, name) => {
|
|
90
|
+
const value = env[name];
|
|
91
|
+
if (value === undefined) {
|
|
92
|
+
missing = name;
|
|
93
|
+
return whole;
|
|
94
|
+
}
|
|
95
|
+
return value;
|
|
96
|
+
});
|
|
97
|
+
if (missing !== undefined) {
|
|
98
|
+
return `references \${${missing}}, which is not set in the operator's environment`;
|
|
99
|
+
}
|
|
100
|
+
result[key] = expanded;
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
53
104
|
/**
|
|
54
105
|
* Turn one spec into a transport, or say why it is not one.
|
|
55
106
|
*
|
|
@@ -57,31 +108,179 @@ export const CLOSE_TIMEOUT_MS = 2_000;
|
|
|
57
108
|
* operator who edited one into a file that already had the other, and picking
|
|
58
109
|
* either would run something they did not mean to run.
|
|
59
110
|
*/
|
|
60
|
-
export function transportFor(spec, defaultCwd) {
|
|
111
|
+
export function transportFor(spec, defaultCwd, env = process.env) {
|
|
61
112
|
const hasCommand = typeof spec.command === 'string' && spec.command.trim().length > 0;
|
|
62
113
|
const hasUrl = typeof spec.url === 'string' && spec.url.trim().length > 0;
|
|
63
114
|
if (hasCommand && hasUrl) {
|
|
64
115
|
return 'it declares both a command and a url — pick one';
|
|
65
116
|
}
|
|
66
117
|
if (hasCommand) {
|
|
118
|
+
const expandedEnv = spec.env ? expandEnvRefsInRecord(spec.env, env) : undefined;
|
|
119
|
+
if (typeof expandedEnv === 'string')
|
|
120
|
+
return expandedEnv;
|
|
67
121
|
return {
|
|
68
122
|
type: 'stdio',
|
|
69
123
|
command: spec.command,
|
|
70
124
|
...(spec.args ? { args: [...spec.args] } : {}),
|
|
71
|
-
...(
|
|
125
|
+
...(expandedEnv ? { env: expandedEnv } : {}),
|
|
72
126
|
...(spec.inheritEnv ? { inheritEnv: [...spec.inheritEnv] } : {}),
|
|
73
127
|
cwd: spec.cwd ?? defaultCwd,
|
|
74
128
|
};
|
|
75
129
|
}
|
|
76
130
|
if (hasUrl) {
|
|
131
|
+
const expandedHeaders = spec.headers ? expandEnvRefsInRecord(spec.headers, env) : undefined;
|
|
132
|
+
if (typeof expandedHeaders === 'string')
|
|
133
|
+
return expandedHeaders;
|
|
77
134
|
return {
|
|
78
135
|
type: 'streamable-http',
|
|
79
136
|
url: spec.url,
|
|
80
|
-
...(
|
|
137
|
+
...(expandedHeaders ? { headers: expandedHeaders } : {}),
|
|
81
138
|
};
|
|
82
139
|
}
|
|
83
140
|
return 'it declares neither a command nor a url';
|
|
84
141
|
}
|
|
142
|
+
/** One refresh per credential file; unrelated MCP requests remain concurrent. */
|
|
143
|
+
const mcpOAuthRefreshes = new Map();
|
|
144
|
+
function mcpOAuthUnauthorized() {
|
|
145
|
+
return new MCPHttpStatusError('MCP OAuth', 401, 'authorization required; run `namzu mcp login <server>`', '');
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* A running agent may reuse a saved OAuth grant, including its refresh token,
|
|
149
|
+
* but only an explicit `mcp login` may begin browser authorization. The store
|
|
150
|
+
* binds the grant to this complete URL (path and query included), and the
|
|
151
|
+
* fetch guard keeps it there even if a transport changes its request target.
|
|
152
|
+
*/
|
|
153
|
+
function withSavedMcpOAuth(transport) {
|
|
154
|
+
if (transport.type !== 'streamable-http')
|
|
155
|
+
return transport;
|
|
156
|
+
// A configured Authorization header is the operator's chosen credential.
|
|
157
|
+
// The official middleware would replace it with the saved bearer token.
|
|
158
|
+
if (Object.keys(transport.headers ?? {}).some((key) => key.toLowerCase() === 'authorization')) {
|
|
159
|
+
return transport;
|
|
160
|
+
}
|
|
161
|
+
let endpoint;
|
|
162
|
+
try {
|
|
163
|
+
endpoint = new URL(transport.url);
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return transport;
|
|
167
|
+
}
|
|
168
|
+
// The OAuth store accepts HTTPS and loopback HTTP. Preserve ordinary MCP
|
|
169
|
+
// behavior for other URLs instead of turning their lack of OAuth into an
|
|
170
|
+
// unrelated startup error.
|
|
171
|
+
if (!isSecureMcpOAuthUrl(endpoint))
|
|
172
|
+
return transport;
|
|
173
|
+
if (!hasMcpOAuthTokens(transport.url))
|
|
174
|
+
return transport;
|
|
175
|
+
const provider = createMcpOAuthProvider({ endpoint: transport.url });
|
|
176
|
+
const rawFetch = fetch;
|
|
177
|
+
const oauthNetworkFetch = (input, init) => {
|
|
178
|
+
const target = new URL(String(input));
|
|
179
|
+
if (!isSecureMcpOAuthUrl(target)) {
|
|
180
|
+
throw new McpOAuthStoreError('MCP OAuth network requests require HTTPS or loopback HTTP.');
|
|
181
|
+
}
|
|
182
|
+
// OAuth discovery and token requests may carry a client secret or refresh
|
|
183
|
+
// token. A 307/308 must never replay their POST body to a redirect target.
|
|
184
|
+
return rawFetch(input, { ...init, redirect: 'manual' });
|
|
185
|
+
};
|
|
186
|
+
const credentialKey = mcpOAuthPath(transport.url);
|
|
187
|
+
const authenticatedFetch = withOAuth(provider, transport.url)(async (input, init) => {
|
|
188
|
+
if (input.toString() !== transport.url) {
|
|
189
|
+
throw new Error('MCP OAuth refused a request to a different endpoint');
|
|
190
|
+
}
|
|
191
|
+
// The bearer token is attached by `withOAuth` before this call. Never
|
|
192
|
+
// auto-follow a redirect with it, including to another path on the
|
|
193
|
+
// same origin, even if an SDK transport changes its own redirect mode.
|
|
194
|
+
const response = await rawFetch(input, { ...init, redirect: 'manual' });
|
|
195
|
+
if (response.status !== 401)
|
|
196
|
+
return response;
|
|
197
|
+
// Intercept the challenge before `withOAuth` can start an independent
|
|
198
|
+
// refresh for every simultaneous request. Its token attachment remains
|
|
199
|
+
// authoritative; the official `auth()` performs the refresh once.
|
|
200
|
+
const attemptedAuthorization = new Headers(init?.headers).get('authorization');
|
|
201
|
+
const { resourceMetadataUrl, scope } = extractWWWAuthenticateParams(response);
|
|
202
|
+
void response.body?.cancel().catch(() => undefined);
|
|
203
|
+
let refresh = mcpOAuthRefreshes.get(credentialKey);
|
|
204
|
+
if (!refresh) {
|
|
205
|
+
refresh = (async () => {
|
|
206
|
+
const current = await provider.tokens();
|
|
207
|
+
if (!current)
|
|
208
|
+
throw new McpOAuthLoginRequiredError();
|
|
209
|
+
// Another connection or process may have renewed this grant while
|
|
210
|
+
// the old request was in flight. Its new access token is enough.
|
|
211
|
+
if (attemptedAuthorization !== `Bearer ${current.access_token}`)
|
|
212
|
+
return;
|
|
213
|
+
const result = await auth(provider, {
|
|
214
|
+
serverUrl: transport.url,
|
|
215
|
+
resourceMetadataUrl,
|
|
216
|
+
scope,
|
|
217
|
+
fetchFn: oauthNetworkFetch,
|
|
218
|
+
});
|
|
219
|
+
if (result !== 'AUTHORIZED')
|
|
220
|
+
throw new McpOAuthLoginRequiredError();
|
|
221
|
+
})();
|
|
222
|
+
mcpOAuthRefreshes.set(credentialKey, refresh);
|
|
223
|
+
const ownedRefresh = refresh;
|
|
224
|
+
void ownedRefresh.then(() => {
|
|
225
|
+
if (mcpOAuthRefreshes.get(credentialKey) === ownedRefresh) {
|
|
226
|
+
mcpOAuthRefreshes.delete(credentialKey);
|
|
227
|
+
}
|
|
228
|
+
}, () => {
|
|
229
|
+
if (mcpOAuthRefreshes.get(credentialKey) === ownedRefresh) {
|
|
230
|
+
mcpOAuthRefreshes.delete(credentialKey);
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
try {
|
|
235
|
+
await refresh;
|
|
236
|
+
}
|
|
237
|
+
catch {
|
|
238
|
+
// A second process may have won a rotating-token refresh while
|
|
239
|
+
// this one failed. The store's issuer/endpoint binding still holds;
|
|
240
|
+
// one retry with its new token is safe and avoids a false failure.
|
|
241
|
+
const latest = await provider.tokens();
|
|
242
|
+
if (!latest || attemptedAuthorization === `Bearer ${latest.access_token}`) {
|
|
243
|
+
throw mcpOAuthUnauthorized();
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
const current = await provider.tokens();
|
|
247
|
+
if (!current)
|
|
248
|
+
throw mcpOAuthUnauthorized();
|
|
249
|
+
const headers = new Headers(init?.headers);
|
|
250
|
+
headers.set('Authorization', `Bearer ${current.access_token}`);
|
|
251
|
+
const retried = await rawFetch(input, { ...init, headers, redirect: 'manual' });
|
|
252
|
+
if (retried.status === 401) {
|
|
253
|
+
void retried.body?.cancel().catch(() => undefined);
|
|
254
|
+
throw mcpOAuthUnauthorized();
|
|
255
|
+
}
|
|
256
|
+
return retried;
|
|
257
|
+
});
|
|
258
|
+
const oauthFetch = async (input, init) => {
|
|
259
|
+
// `withOAuth` authenticates any URL handed to it. Our Streamable HTTP
|
|
260
|
+
// transport sends the configured URL exactly; reject any other target
|
|
261
|
+
// before the bearer token can reach it.
|
|
262
|
+
if (input !== transport.url) {
|
|
263
|
+
throw new Error('MCP OAuth refused a request to a different endpoint');
|
|
264
|
+
}
|
|
265
|
+
try {
|
|
266
|
+
if (!(await provider.tokens()))
|
|
267
|
+
throw new McpOAuthLoginRequiredError();
|
|
268
|
+
return await authenticatedFetch(input, init);
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
if (error instanceof UnauthorizedError ||
|
|
272
|
+
error instanceof McpOAuthLoginRequiredError ||
|
|
273
|
+
error instanceof McpOAuthStoreError) {
|
|
274
|
+
// The official middleware throws after a 401 or failed refresh.
|
|
275
|
+
// The SDK's era probe recognizes its own HTTP status error and
|
|
276
|
+
// refuses 401 instead of offering a legacy initialize handshake.
|
|
277
|
+
throw mcpOAuthUnauthorized();
|
|
278
|
+
}
|
|
279
|
+
throw error;
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
return { ...transport, fetch: oauthFetch };
|
|
283
|
+
}
|
|
85
284
|
async function withDeadline(work, ms, what) {
|
|
86
285
|
let timer;
|
|
87
286
|
try {
|
|
@@ -136,9 +335,38 @@ export function eraProbeTimeoutFor(spec) {
|
|
|
136
335
|
}
|
|
137
336
|
return ms;
|
|
138
337
|
}
|
|
338
|
+
function toolsetOptionsFor(spec, name) {
|
|
339
|
+
for (const field of ['allow', 'deny']) {
|
|
340
|
+
const value = spec[field];
|
|
341
|
+
if (value !== undefined &&
|
|
342
|
+
(!Array.isArray(value) || !value.every((item) => typeof item === 'string' && item.length > 0))) {
|
|
343
|
+
return `${field} must be a list of nonempty server-reported names`;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
if (spec.maxRetries !== undefined &&
|
|
347
|
+
(!Number.isSafeInteger(spec.maxRetries) || spec.maxRetries < 0)) {
|
|
348
|
+
return `maxRetries must be a nonnegative integer, got ${JSON.stringify(spec.maxRetries)}`;
|
|
349
|
+
}
|
|
350
|
+
if (spec.requireApproval !== undefined && typeof spec.requireApproval !== 'boolean') {
|
|
351
|
+
return 'requireApproval must be true or false';
|
|
352
|
+
}
|
|
353
|
+
if (spec.readOnlyHintTrusted !== undefined && typeof spec.readOnlyHintTrusted !== 'boolean') {
|
|
354
|
+
return 'readOnlyHintTrusted must be true or false';
|
|
355
|
+
}
|
|
356
|
+
if (spec.instructions !== undefined && typeof spec.instructions !== 'boolean') {
|
|
357
|
+
return 'instructions must be true or false';
|
|
358
|
+
}
|
|
359
|
+
return {
|
|
360
|
+
id: `mcp:${name}`,
|
|
361
|
+
allow: spec.allow,
|
|
362
|
+
deny: spec.deny,
|
|
363
|
+
maxRetries: spec.maxRetries,
|
|
364
|
+
readOnlyHintTrusted: spec.readOnlyHintTrusted,
|
|
365
|
+
};
|
|
366
|
+
}
|
|
139
367
|
export async function connectMcpServers(config, options) {
|
|
140
368
|
const entries = Object.entries(config ?? {});
|
|
141
|
-
const
|
|
369
|
+
const toolsets = [];
|
|
142
370
|
const startupFailed = [];
|
|
143
371
|
const clients = [];
|
|
144
372
|
const liveServers = [];
|
|
@@ -147,6 +375,10 @@ export async function connectMcpServers(config, options) {
|
|
|
147
375
|
// of nothing and the failure output arrive interleaved, for a saving that
|
|
148
376
|
// matters only to someone running many servers, who has other problems.
|
|
149
377
|
for (const [name, spec] of entries) {
|
|
378
|
+
if (typeof spec !== 'object' || spec === null) {
|
|
379
|
+
startupFailed.push({ name, reason: 'server spec must be a mapping' });
|
|
380
|
+
continue;
|
|
381
|
+
}
|
|
150
382
|
const transport = transportFor(spec, options.cwd);
|
|
151
383
|
if (typeof transport === 'string') {
|
|
152
384
|
startupFailed.push({ name, reason: transport });
|
|
@@ -162,26 +394,50 @@ export async function connectMcpServers(config, options) {
|
|
|
162
394
|
startupFailed.push({ name, reason: eraProbeTimeoutMs });
|
|
163
395
|
continue;
|
|
164
396
|
}
|
|
397
|
+
const toolsetOptions = toolsetOptionsFor(spec, name);
|
|
398
|
+
if (typeof toolsetOptions === 'string') {
|
|
399
|
+
startupFailed.push({ name, reason: toolsetOptions });
|
|
400
|
+
continue;
|
|
401
|
+
}
|
|
402
|
+
let connectedTransport;
|
|
403
|
+
try {
|
|
404
|
+
connectedTransport =
|
|
405
|
+
transport.type === 'streamable-http' ? withSavedMcpOAuth(transport) : transport;
|
|
406
|
+
}
|
|
407
|
+
catch (error) {
|
|
408
|
+
startupFailed.push({ name, reason: reasonOf(error) });
|
|
409
|
+
continue;
|
|
410
|
+
}
|
|
165
411
|
const client = new MCPClient({
|
|
166
412
|
serverName: name,
|
|
167
|
-
transport,
|
|
413
|
+
transport: connectedTransport,
|
|
168
414
|
...(eraProbeTimeoutMs !== undefined ? { eraProbeTimeoutMs } : {}),
|
|
169
415
|
});
|
|
416
|
+
const discovery = {
|
|
417
|
+
added: new Set(),
|
|
418
|
+
removed: new Set(),
|
|
419
|
+
changed: new Set(),
|
|
420
|
+
refused: new Map(),
|
|
421
|
+
};
|
|
170
422
|
try {
|
|
171
423
|
await withDeadline(client.connect(), deadline, `server "${name}"`);
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
};
|
|
184
|
-
|
|
424
|
+
const discovered = await withDeadline(mcpToolset(client, {
|
|
425
|
+
...toolsetOptions,
|
|
426
|
+
onDrift: ({ drift }) => {
|
|
427
|
+
for (const item of drift.added)
|
|
428
|
+
discovery.added.add(item);
|
|
429
|
+
for (const item of drift.removed)
|
|
430
|
+
discovery.removed.add(item);
|
|
431
|
+
for (const item of drift.changed)
|
|
432
|
+
discovery.changed.add(item);
|
|
433
|
+
},
|
|
434
|
+
onRefused: ({ kind, refused }) => discovery.refused.set(kind, refused),
|
|
435
|
+
}), deadline, `server "${name}" discovering its tools`);
|
|
436
|
+
const mounted = spec.requireApproval
|
|
437
|
+
? discovered.map((entry) => requireApproval(entry))
|
|
438
|
+
: [...discovered];
|
|
439
|
+
toolsets.push(...mounted);
|
|
440
|
+
liveServers.push({ client, name, toolsets: mounted, discovery });
|
|
185
441
|
clients.push(client);
|
|
186
442
|
}
|
|
187
443
|
catch (err) {
|
|
@@ -207,14 +463,28 @@ export async function connectMcpServers(config, options) {
|
|
|
207
463
|
const current = () => {
|
|
208
464
|
const connected = [];
|
|
209
465
|
const failed = [...startupFailed];
|
|
210
|
-
for (const { client,
|
|
466
|
+
for (const { client, name, toolsets: serverToolsets, discovery } of liveServers) {
|
|
211
467
|
const state = client.getState();
|
|
212
468
|
if (state.status === 'connected') {
|
|
213
|
-
|
|
469
|
+
const names = serverToolsets.flatMap((entry) => entry.tools().map((tool) => tool.name));
|
|
470
|
+
connected.push({
|
|
471
|
+
name,
|
|
472
|
+
toolCount: names.length,
|
|
473
|
+
tools: names,
|
|
474
|
+
drift: {
|
|
475
|
+
added: [...discovery.added],
|
|
476
|
+
removed: [...discovery.removed],
|
|
477
|
+
changed: [...discovery.changed],
|
|
478
|
+
},
|
|
479
|
+
refused: [...discovery.refused.entries()].flatMap(([kind, items]) => items.map((item) => ({ kind, ...item }))),
|
|
480
|
+
...(state.serverInstructions !== undefined
|
|
481
|
+
? { instructions: state.serverInstructions }
|
|
482
|
+
: {}),
|
|
483
|
+
});
|
|
214
484
|
continue;
|
|
215
485
|
}
|
|
216
486
|
failed.push({
|
|
217
|
-
name
|
|
487
|
+
name,
|
|
218
488
|
reason: state.error ??
|
|
219
489
|
(state.status === 'disconnected'
|
|
220
490
|
? 'connection closed after startup'
|
|
@@ -224,7 +494,10 @@ export async function connectMcpServers(config, options) {
|
|
|
224
494
|
return { connected, failed };
|
|
225
495
|
};
|
|
226
496
|
return {
|
|
227
|
-
tools
|
|
497
|
+
get tools() {
|
|
498
|
+
return toolsets.flatMap((entry) => entry.tools());
|
|
499
|
+
},
|
|
500
|
+
toolsets,
|
|
228
501
|
current,
|
|
229
502
|
get connected() {
|
|
230
503
|
return current().connected;
|
|
@@ -233,6 +506,7 @@ export async function connectMcpServers(config, options) {
|
|
|
233
506
|
return current().failed;
|
|
234
507
|
},
|
|
235
508
|
close: async () => {
|
|
509
|
+
await Promise.all(toolsets.map((entry) => entry.close?.()));
|
|
236
510
|
await Promise.all(clients.map((c) => withDeadline(c.disconnect(), CLOSE_TIMEOUT_MS, 'closing a tool server').catch(() => {
|
|
237
511
|
// Shutting down is best effort by definition: the process may
|
|
238
512
|
// already be gone, and nothing useful follows from saying so.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"servers.js","sourceRoot":"","sources":["../../../src/integrations/mcp/servers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"servers.js","sourceRoot":"","sources":["../../../src/integrations/mcp/servers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type UserConfigWriteOptions } from '../../config/user-config.js';
|
|
2
|
+
import type { McpServerSpec } from './servers.js';
|
|
3
|
+
export interface UserMcpServer {
|
|
4
|
+
readonly name: string;
|
|
5
|
+
readonly spec: unknown;
|
|
6
|
+
}
|
|
7
|
+
/** Read only the user's own entries, not project/profile/managed overrides. */
|
|
8
|
+
export declare function readUserMcpServers(opts?: UserConfigWriteOptions): readonly UserMcpServer[];
|
|
9
|
+
export declare function isUserMcpName(name: string): boolean;
|
|
10
|
+
/** Never replace an entry silently: the existing server may carry permissions. */
|
|
11
|
+
export declare function addUserMcpServer(name: string, spec: McpServerSpec, opts?: UserConfigWriteOptions): string;
|
|
12
|
+
export declare function removeUserMcpServer(name: string, opts?: UserConfigWriteOptions): boolean;
|
|
13
|
+
export interface UserMcpServerSummary {
|
|
14
|
+
readonly name: string;
|
|
15
|
+
readonly transport: 'stdio' | 'http' | 'invalid';
|
|
16
|
+
readonly command?: string;
|
|
17
|
+
readonly endpoint?: string;
|
|
18
|
+
readonly argumentCount?: number;
|
|
19
|
+
readonly envNames?: readonly string[];
|
|
20
|
+
readonly headerNames?: readonly string[];
|
|
21
|
+
readonly inheritEnv?: readonly string[];
|
|
22
|
+
}
|
|
23
|
+
/** Display metadata only. Headers, environment values, and argv can contain secrets. */
|
|
24
|
+
export declare function summarizeUserMcpServer(entry: UserMcpServer): UserMcpServerSummary;
|
|
25
|
+
//# sourceMappingURL=user-config.d.ts.map
|