ssh-mcp-pro 1.1.4 → 1.2.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/CHANGELOG.md +29 -0
- package/README.md +58 -10
- package/REGISTRY_SUBMISSION.md +3 -3
- package/SECURITY.md +4 -0
- package/SECURITY_DECISIONS.md +32 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -1
- package/dist/connector-profile.d.ts +3 -0
- package/dist/connector-profile.d.ts.map +1 -1
- package/dist/connector-profile.js +36 -14
- package/dist/connector-profile.js.map +1 -1
- package/dist/http-security.d.ts.map +1 -1
- package/dist/http-security.js +19 -4
- package/dist/http-security.js.map +1 -1
- package/dist/http-server-lifecycle.d.ts +17 -0
- package/dist/http-server-lifecycle.d.ts.map +1 -0
- package/dist/http-server-lifecycle.js +122 -0
- package/dist/http-server-lifecycle.js.map +1 -0
- package/dist/http-server-router.d.ts +28 -0
- package/dist/http-server-router.d.ts.map +1 -0
- package/dist/http-server-router.js +108 -0
- package/dist/http-server-router.js.map +1 -0
- package/dist/http-server-runtime.d.ts +21 -0
- package/dist/http-server-runtime.d.ts.map +1 -0
- package/dist/http-server-runtime.js +415 -0
- package/dist/http-server-runtime.js.map +1 -0
- package/dist/http-session-registry.d.ts +35 -0
- package/dist/http-session-registry.d.ts.map +1 -0
- package/dist/http-session-registry.js +96 -0
- package/dist/http-session-registry.js.map +1 -0
- package/dist/index.js +12 -5
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts +1 -1
- package/dist/mcp.js +1 -1
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +8 -1
- package/dist/prompts.js.map +1 -1
- package/dist/remote/agent-cli.d.ts.map +1 -1
- package/dist/remote/agent-cli.js +20 -1
- package/dist/remote/agent-cli.js.map +1 -1
- package/dist/remote/agent-connection-lifecycle.d.ts +47 -0
- package/dist/remote/agent-connection-lifecycle.d.ts.map +1 -0
- package/dist/remote/agent-connection-lifecycle.js +304 -0
- package/dist/remote/agent-connection-lifecycle.js.map +1 -0
- package/dist/remote/agent-executor.d.ts.map +1 -1
- package/dist/remote/agent-executor.js +93 -68
- package/dist/remote/agent-executor.js.map +1 -1
- package/dist/remote/agent-handler.d.ts +22 -8
- package/dist/remote/agent-handler.d.ts.map +1 -1
- package/dist/remote/agent-handler.js +151 -98
- package/dist/remote/agent-handler.js.map +1 -1
- package/dist/remote/config.d.ts.map +1 -1
- package/dist/remote/config.js +14 -0
- package/dist/remote/config.js.map +1 -1
- package/dist/remote/control-plane.d.ts.map +1 -1
- package/dist/remote/control-plane.js +28 -3
- package/dist/remote/control-plane.js.map +1 -1
- package/dist/remote/oauth-handler.d.ts +2 -0
- package/dist/remote/oauth-handler.d.ts.map +1 -1
- package/dist/remote/oauth-handler.js +62 -1
- package/dist/remote/oauth-handler.js.map +1 -1
- package/dist/remote/policy-update-guard.d.ts +14 -0
- package/dist/remote/policy-update-guard.d.ts.map +1 -0
- package/dist/remote/policy-update-guard.js +27 -0
- package/dist/remote/policy-update-guard.js.map +1 -0
- package/dist/remote/policy.d.ts.map +1 -1
- package/dist/remote/policy.js +13 -2
- package/dist/remote/policy.js.map +1 -1
- package/dist/remote/safe-file.d.ts +5 -0
- package/dist/remote/safe-file.d.ts.map +1 -0
- package/dist/remote/safe-file.js +194 -0
- package/dist/remote/safe-file.js.map +1 -0
- package/dist/remote/store.d.ts +1 -0
- package/dist/remote/store.d.ts.map +1 -1
- package/dist/remote/store.js +5 -0
- package/dist/remote/store.js.map +1 -1
- package/dist/remote/types.d.ts +5 -0
- package/dist/remote/types.d.ts.map +1 -1
- package/dist/remote/websocket.d.ts +38 -13
- package/dist/remote/websocket.d.ts.map +1 -1
- package/dist/remote/websocket.js +90 -126
- package/dist/remote/websocket.js.map +1 -1
- package/dist/render-http.js +2 -1
- package/dist/render-http.js.map +1 -1
- package/dist/retry.d.ts.map +1 -1
- package/dist/retry.js +4 -2
- package/dist/retry.js.map +1 -1
- package/dist/server-http.d.ts +1 -1
- package/dist/server-http.d.ts.map +1 -1
- package/dist/server-http.js +1 -431
- package/dist/server-http.js.map +1 -1
- package/dist/tools/connector.provider.d.ts.map +1 -1
- package/dist/tools/connector.provider.js +5 -3
- package/dist/tools/connector.provider.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/output-schemas.d.ts.map +1 -1
- package/dist/tools/output-schemas.js +1 -0
- package/dist/tools/output-schemas.js.map +1 -1
- package/dist/tools/process.provider.d.ts +2 -0
- package/dist/tools/process.provider.d.ts.map +1 -1
- package/dist/tools/process.provider.js +60 -1
- package/dist/tools/process.provider.js.map +1 -1
- package/dist/tools/system.provider.d.ts +13 -0
- package/dist/tools/system.provider.d.ts.map +1 -1
- package/dist/tools/system.provider.js +304 -2
- package/dist/tools/system.provider.js.map +1 -1
- package/dist/types.d.ts +39 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +34 -0
- package/dist/types.js.map +1 -1
- package/docs/adding-a-device.md +127 -0
- package/docs/agent-runtime-config.md +34 -0
- package/docs/development/api-stability.md +44 -0
- package/docs/development/coding-standards.md +35 -0
- package/docs/development/commit-conventions.md +35 -0
- package/docs/development/dependency-management.md +60 -0
- package/docs/development/deprecation-policy.md +29 -0
- package/docs/development/local-setup.md +46 -0
- package/docs/development/release-process.md +57 -0
- package/docs/development/testing-policy.md +47 -0
- package/docs/explanation/architecture.md +44 -0
- package/docs/how-to/README.md +14 -0
- package/docs/how-to/configure-ssh-policy.md +50 -0
- package/docs/openssf-evidence.md +75 -0
- package/docs/openssf-gap-analysis.md +63 -0
- package/docs/openssf-proposal-links.md +37 -0
- package/docs/professionalization-plan.md +81 -0
- package/docs/reference/README.md +21 -0
- package/docs/reference/cli.md +41 -0
- package/docs/reference/compatibility.md +46 -0
- package/docs/reference/configuration.md +72 -0
- package/docs/remote-mcp-hardening.md +59 -0
- package/docs/repo-maturity-report.md +565 -0
- package/docs/security/assurance-case.md +58 -0
- package/docs/security/dependency-audit-exceptions.json +4 -0
- package/docs/security/dependency-audit-exceptions.md +15 -0
- package/docs/security/input-validation.md +54 -0
- package/docs/security/release-integrity.md +28 -0
- package/docs/security/scanning-policy.md +50 -0
- package/docs/security/secrets-management.md +49 -0
- package/docs/security/threat-model.md +65 -0
- package/docs/testing.md +24 -0
- package/docs/troubleshooting.md +56 -0
- package/docs/tutorials/getting-started.md +84 -0
- package/mcp.json +1 -1
- package/package.json +37 -18
- package/registry/ssh-mcp-pro/mcp.json +1 -1
- package/server.json +3 -3
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -181,4 +181,38 @@ export const TunnelCloseSchema = z.object({
|
|
|
181
181
|
export const TunnelListSchema = z.object({
|
|
182
182
|
sessionId: z.string().min(1).optional(),
|
|
183
183
|
});
|
|
184
|
+
export const ProcListSchema = z.object({
|
|
185
|
+
sessionId: z.string().min(1),
|
|
186
|
+
});
|
|
187
|
+
export const ProcKillSchema = z.object({
|
|
188
|
+
sessionId: z.string().min(1),
|
|
189
|
+
pid: z.number().int().positive(),
|
|
190
|
+
signal: z
|
|
191
|
+
.enum(["SIGTERM", "SIGKILL", "SIGHUP", "SIGINT", "SIGUSR1", "SIGUSR2"])
|
|
192
|
+
.default("SIGTERM"),
|
|
193
|
+
});
|
|
194
|
+
export const ServiceNameSchema = z.object({
|
|
195
|
+
sessionId: z.string().min(1),
|
|
196
|
+
name: z.string().min(1),
|
|
197
|
+
});
|
|
198
|
+
export const ServiceLogsSchema = z.object({
|
|
199
|
+
sessionId: z.string().min(1),
|
|
200
|
+
name: z.string().min(1),
|
|
201
|
+
lines: z.number().int().positive().max(1000).default(50),
|
|
202
|
+
});
|
|
203
|
+
export const DiskUsageSchema = z.object({
|
|
204
|
+
sessionId: z.string().min(1),
|
|
205
|
+
path: z.string().optional(),
|
|
206
|
+
});
|
|
207
|
+
export const PortCheckSchema = z.object({
|
|
208
|
+
sessionId: z.string().min(1),
|
|
209
|
+
port: z.number().int().min(1).max(65535),
|
|
210
|
+
host: z.string().default("127.0.0.1"),
|
|
211
|
+
});
|
|
212
|
+
export const LogTailSchema = z.object({
|
|
213
|
+
sessionId: z.string().min(1),
|
|
214
|
+
path: z.string().optional(),
|
|
215
|
+
service: z.string().optional(),
|
|
216
|
+
lines: z.number().int().positive().max(1000).default(50),
|
|
217
|
+
});
|
|
184
218
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Adding a device (agent enrollment)
|
|
2
|
+
|
|
3
|
+
This guide explains the professional, repeatable way to connect a new
|
|
4
|
+
machine ("device") to the ssh-mcp-pro control plane. You never edit the
|
|
5
|
+
database by hand — every device is onboarded with a one-time enrollment
|
|
6
|
+
token and a chosen capability profile.
|
|
7
|
+
|
|
8
|
+
## Mental model
|
|
9
|
+
|
|
10
|
+
- The **control plane** is the always-on HTTP/WebSocket service that ChatGPT
|
|
11
|
+
(or any MCP client) talks to. It holds the agent registry, policies, and
|
|
12
|
+
the audit log.
|
|
13
|
+
- An **agent** is a small outbound process running on each device. It dials
|
|
14
|
+
the control plane over WebSocket and executes only the actions its policy
|
|
15
|
+
allows. Devices never accept inbound connections.
|
|
16
|
+
- A **profile** is the capability set granted to an agent. It is chosen when
|
|
17
|
+
the enrollment token is created, and can be changed later without
|
|
18
|
+
re-enrolling.
|
|
19
|
+
|
|
20
|
+
## Profiles
|
|
21
|
+
|
|
22
|
+
| Profile | Capabilities | Use it for |
|
|
23
|
+
| ------------ | -------------------------------------------------------- | -------------------------------- |
|
|
24
|
+
| `read-only` | host/system/log/audit read | Monitoring, safe default |
|
|
25
|
+
| `operations` | read + service management + docker + file read | Day-to-day administration |
|
|
26
|
+
| `full-admin` | everything, including `shell.exec` and `sudo.exec` | Full remote control of a machine |
|
|
27
|
+
|
|
28
|
+
Start with the least privilege a device needs. You can raise the profile
|
|
29
|
+
later (see [Changing a policy later](#changing-a-policy-later)).
|
|
30
|
+
|
|
31
|
+
## Step 1 — Create an enrollment token (on the control plane side)
|
|
32
|
+
|
|
33
|
+
Tokens are one-time and short-lived. Pick the profile here.
|
|
34
|
+
|
|
35
|
+
### Option A: HTTP API
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
curl -sS -X POST "https://your-control-plane.example.com/api/agents/enrollment-tokens" \
|
|
39
|
+
-H "Authorization: Bearer <admin-access-token>" \
|
|
40
|
+
-H "Content-Type: application/json" \
|
|
41
|
+
-d '{"alias":"office-pc","requested_profile":"operations"}'
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The response includes a one-time `enrollment_token` and a ready-to-paste
|
|
45
|
+
install command. The calling identity must have the `agents:admin` scope.
|
|
46
|
+
|
|
47
|
+
### Option B: From ChatGPT
|
|
48
|
+
|
|
49
|
+
If your connector has the `agents:admin` scope, ask it to call the
|
|
50
|
+
`create_enrollment_token` tool with the alias and requested profile. It
|
|
51
|
+
returns the same token and install command.
|
|
52
|
+
|
|
53
|
+
## Step 2 — Run the bootstrap on the new device
|
|
54
|
+
|
|
55
|
+
The bootstrap installs the package, enrolls the machine, and registers a
|
|
56
|
+
service so the agent reconnects on boot. It needs Node 22.22+ or 24+.
|
|
57
|
+
|
|
58
|
+
### Linux / WSL
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
curl -fsSL https://raw.githubusercontent.com/oaslananka/ssh-mcp-pro/main/scripts/install-agent.sh -o install-agent.sh
|
|
62
|
+
bash install-agent.sh \
|
|
63
|
+
--server https://your-control-plane.example.com \
|
|
64
|
+
--token <one-time-token> \
|
|
65
|
+
--alias office-pc
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
This creates a **user** systemd service and enables linger so it survives
|
|
69
|
+
logout and starts at boot. Pass `--system` (with `sudo`) to install a
|
|
70
|
+
system-wide service instead.
|
|
71
|
+
|
|
72
|
+
### Windows (PowerShell)
|
|
73
|
+
|
|
74
|
+
```powershell
|
|
75
|
+
irm https://raw.githubusercontent.com/oaslananka/ssh-mcp-pro/main/scripts/install-agent.ps1 -OutFile install-agent.ps1
|
|
76
|
+
./install-agent.ps1 -Server https://your-control-plane.example.com -Token <one-time-token> -Alias office-pc
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
This registers a Scheduled Task that runs the agent at logon and restarts it
|
|
80
|
+
on failure. For a fully headless host that must run before any user logs in,
|
|
81
|
+
run the agent under a service manager such as NSSM instead.
|
|
82
|
+
|
|
83
|
+
## Step 3 — Verify
|
|
84
|
+
|
|
85
|
+
On the device:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
ssh-mcp-pro-agent status
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
It prints the agent id, alias, server, and active profile. On the control
|
|
92
|
+
plane side the agent shows up as `online` in the fleet list, and the audit
|
|
93
|
+
log records `enrollment_token_created` and `agent_connected`.
|
|
94
|
+
|
|
95
|
+
## Changing a policy later
|
|
96
|
+
|
|
97
|
+
Capabilities are server-authoritative and pushed live to a connected agent —
|
|
98
|
+
you do **not** re-enroll to change them. Use the proper management path so
|
|
99
|
+
the change is validated and audited:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
curl -sS -X PATCH "https://your-control-plane.example.com/api/agents/<agent-id>/policy" \
|
|
103
|
+
-H "Authorization: Bearer <admin-access-token>" \
|
|
104
|
+
-H "Content-Type: application/json" \
|
|
105
|
+
-d '{"policy":{"profile":"full-admin"}}'
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
or call the `update_agent_policy` tool from an admin-scoped connector. The
|
|
109
|
+
control plane pushes a `policy.update` to the running agent within seconds; no
|
|
110
|
+
restart is required.
|
|
111
|
+
|
|
112
|
+
> Do not edit `data/sshautomator.db` directly to change capabilities. The
|
|
113
|
+
> database is an implementation detail; the API and tools are the supported
|
|
114
|
+
> interface and they keep the audit trail intact.
|
|
115
|
+
|
|
116
|
+
## Troubleshooting
|
|
117
|
+
|
|
118
|
+
- **`shell.exec` denied / tool call fails**: the agent profile is too low.
|
|
119
|
+
Raise it with the policy API above. Read-only agents intentionally cannot
|
|
120
|
+
run shell commands, and a connection cannot grant itself more access.
|
|
121
|
+
- **Agent shows offline**: check the service
|
|
122
|
+
(`systemctl --user status ssh-mcp-pro-agent` on Linux, the Scheduled Task on
|
|
123
|
+
Windows) and that the device can reach the control plane URL over HTTPS.
|
|
124
|
+
- **Enrollment fails with an expired token**: tokens are single-use and
|
|
125
|
+
short-lived. Create a fresh one and retry.
|
|
126
|
+
- **WebSocket error on start**: the runtime is too old. Install Node 22.22+
|
|
127
|
+
or 24+.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Agent Runtime Configuration
|
|
2
|
+
|
|
3
|
+
This document gives copyable configuration examples for running `ssh-mcp-pro` from popular MCP-capable agent runtimes.
|
|
4
|
+
|
|
5
|
+
## Claude Code
|
|
6
|
+
|
|
7
|
+
The repository includes `.claude-plugin/plugin.json`, `.mcp.json`, and product skills under `skills/`.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
claude plugin validate .
|
|
11
|
+
claude --plugin-dir .
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Codex CLI
|
|
15
|
+
|
|
16
|
+
Copy `.codex/config.example.toml` into your Codex config and adjust environment values if needed.
|
|
17
|
+
|
|
18
|
+
## VS Code / GitHub Copilot
|
|
19
|
+
|
|
20
|
+
Use `.vscode/mcp.example.json` as a workspace MCP configuration example.
|
|
21
|
+
|
|
22
|
+
## OpenCode
|
|
23
|
+
|
|
24
|
+
Copy `opencode.example.jsonc` to `opencode.json`, or merge the `mcp` block into an existing OpenCode config. OpenCode skills are mirrored under `.opencode/skills/`.
|
|
25
|
+
|
|
26
|
+
## Generic MCP clients
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx ssh-mcp-pro
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Safety
|
|
33
|
+
|
|
34
|
+
`ssh-mcp-pro` can affect remote systems. Treat privileged, destructive, service-affecting, or persistent changes as requiring explicit human approval.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# API Stability
|
|
2
|
+
|
|
3
|
+
This project has never made an explicit stability statement before this document. It's
|
|
4
|
+
written now to describe intent going forward, not to claim a history of enforcement
|
|
5
|
+
that doesn't exist — see [docs/repo-maturity-report.md](../repo-maturity-report.md)
|
|
6
|
+
("API/CLI stability") for the audit that identified this gap.
|
|
7
|
+
|
|
8
|
+
## What is considered "the public API"
|
|
9
|
+
|
|
10
|
+
For SemVer purposes, going forward:
|
|
11
|
+
|
|
12
|
+
1. **MCP tool/resource/prompt schemas** exposed by the `full` profile — names, required
|
|
13
|
+
parameters, and result shapes. Covered by `test/unit/mcp-contract.test.ts`.
|
|
14
|
+
2. **CLI flags** in `docs/reference/cli.md` (mirrors `src/cli.ts`).
|
|
15
|
+
3. **`SSH_MCP_*` environment variables** and their default values.
|
|
16
|
+
4. **The two published binaries' existence and basic invocation** (`ssh-mcp-pro`,
|
|
17
|
+
`ssh-mcp-pro-agent`).
|
|
18
|
+
|
|
19
|
+
## What is explicitly not covered
|
|
20
|
+
|
|
21
|
+
- Internal module structure under `src/` (anything not re-exported).
|
|
22
|
+
- Exact wording of error messages and log lines.
|
|
23
|
+
- The shape of `SSH_MCP_POLICY_FILE` beyond what's documented — see the config-schema
|
|
24
|
+
gap noted in the maturity report; this will need its own versioning story before it
|
|
25
|
+
can be a stability guarantee.
|
|
26
|
+
- Tool profiles *other than* `full` gaining new tools without a version bump — adding a
|
|
27
|
+
tool to a restricted profile is additive from that profile's consumer's perspective,
|
|
28
|
+
but is still called out here as unresolved: **Needs human confirmation** on whether
|
|
29
|
+
profile membership changes should be treated as SemVer-significant.
|
|
30
|
+
|
|
31
|
+
## What counts as breaking
|
|
32
|
+
|
|
33
|
+
Per Conventional Commits (`!` / `BREAKING CHANGE:` — see
|
|
34
|
+
[commit-conventions.md](commit-conventions.md)): removing or renaming a tool/flag/env
|
|
35
|
+
var, changing a tool's required parameters, changing a default value that changes
|
|
36
|
+
security posture (e.g. flipping a deny-by-default to allow-by-default), or removing a
|
|
37
|
+
supported Node.js version ahead of its own EOL.
|
|
38
|
+
|
|
39
|
+
## Current honest caveat
|
|
40
|
+
|
|
41
|
+
The project is on `1.x` but is 5 days old with zero external consumers on record. This
|
|
42
|
+
policy is aspirational until it's been exercised against a real breaking change and a
|
|
43
|
+
real major version bump — that will be the first real test of whether this document
|
|
44
|
+
holds up in practice.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Coding Standards
|
|
2
|
+
|
|
3
|
+
This is a reference index, not a new rulebook — every rule below is already enforced by
|
|
4
|
+
a config file or CI job. It exists so "what are the coding standards" has one answer
|
|
5
|
+
instead of requiring a tour of five config files.
|
|
6
|
+
|
|
7
|
+
| Concern | Enforced by | Command |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| Formatting | [.prettierrc.json](../../.prettierrc.json), [.editorconfig](../../.editorconfig) | `pnpm run format:check` |
|
|
10
|
+
| Linting | [eslint.config.mjs](../../eslint.config.mjs) | `pnpm run lint` |
|
|
11
|
+
| Type safety | [tsconfig.json](../../tsconfig.json) (`strict` mode) | `pnpm run typecheck` |
|
|
12
|
+
| Module size | [scripts/check-module-size.mjs](../../scripts/check-module-size.mjs) | `pnpm run check:module-size` |
|
|
13
|
+
| Circular dependencies | [.dependency-cruiser.mjs](../../.dependency-cruiser.mjs) | `pnpm run check:circular` |
|
|
14
|
+
| Unused code/exports | [knip.jsonc](../../knip.jsonc) | `pnpm run check:knip` |
|
|
15
|
+
| Commit messages | [.commitlintrc.json](../../.commitlintrc.json) | see [commit-conventions.md](commit-conventions.md) |
|
|
16
|
+
| Documentation prose | [scripts/check-doc-language.mjs](../../scripts/check-doc-language.mjs) | `pnpm run check:doc-language` |
|
|
17
|
+
|
|
18
|
+
Run everything at once with `pnpm run check:maintainability` (module size + circular
|
|
19
|
+
deps + unused exports) or `pnpm run check:quality` (formatting, lint, typecheck, audit,
|
|
20
|
+
licenses, and more — see [CONTRIBUTING.md](../../CONTRIBUTING.md) for the full gate).
|
|
21
|
+
|
|
22
|
+
## Security-sensitive code
|
|
23
|
+
|
|
24
|
+
Files covered by [.github/CODEOWNERS](../../.github/CODEOWNERS) (`src/safety.ts`,
|
|
25
|
+
`src/session.ts`, `src/logging.ts`, `src/tools/`) and the mutation-tested surfaces listed
|
|
26
|
+
in [testing-policy.md](testing-policy.md) receive extra scrutiny. Changes there should
|
|
27
|
+
be justified against [SECURITY_DECISIONS.md](../../SECURITY_DECISIONS.md), not just
|
|
28
|
+
against passing tests.
|
|
29
|
+
|
|
30
|
+
## Pre-commit / pre-push hooks
|
|
31
|
+
|
|
32
|
+
[.pre-commit-config.yaml](../../.pre-commit-config.yaml) and the git hooks installed by
|
|
33
|
+
`scripts/setup-git-hooks.mjs` (run automatically via the `prepare` npm script) run a
|
|
34
|
+
subset of the above on staged files before commit, and the full `check:push` gate before
|
|
35
|
+
push. See [CONTRIBUTING.md](../../CONTRIBUTING.md#git-hooks) for details.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Commit Conventions
|
|
2
|
+
|
|
3
|
+
ssh-mcp-pro uses [Conventional Commits](https://www.conventionalcommits.org/), enforced
|
|
4
|
+
by [.commitlintrc.json](../../.commitlintrc.json) and
|
|
5
|
+
[scripts/lint-commits.mjs](../../scripts/lint-commits.mjs) (`pnpm run lint:commits`).
|
|
6
|
+
PR titles are additionally linted by
|
|
7
|
+
[scripts/lint-pr-title.mjs](../../scripts/lint-pr-title.mjs) (`pnpm run lint:pr-title`),
|
|
8
|
+
since release-please derives the changelog and version bump from these.
|
|
9
|
+
|
|
10
|
+
## Format
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
<type>[optional !][: ]<description>
|
|
14
|
+
|
|
15
|
+
[optional body]
|
|
16
|
+
|
|
17
|
+
[optional footer(s)]
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Types in use
|
|
21
|
+
|
|
22
|
+
`feat`, `fix`, `docs`, `test`, `refactor`, `build`, `ci`, `chore` — see
|
|
23
|
+
[CONTRIBUTING.md](../../CONTRIBUTING.md) for the authoritative list and examples.
|
|
24
|
+
|
|
25
|
+
## Breaking changes
|
|
26
|
+
|
|
27
|
+
Mark with `!` after the type (e.g. `feat!:`) or a `BREAKING CHANGE:` footer.
|
|
28
|
+
Release-please uses this to trigger a major version bump and a distinct CHANGELOG
|
|
29
|
+
section — see [docs/development/release-process.md](release-process.md) and
|
|
30
|
+
[MIGRATION.md](../../MIGRATION.md).
|
|
31
|
+
|
|
32
|
+
## Branch naming
|
|
33
|
+
|
|
34
|
+
`feature/*`, `fix/*`, `docs/*`, `chore/*` (and project-specific prefixes such as
|
|
35
|
+
`codex/SSH-*`) — see [CONTRIBUTING.md](../../CONTRIBUTING.md) for current conventions.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Dependency Management
|
|
2
|
+
|
|
3
|
+
## Two update bots, two ecosystems, by design
|
|
4
|
+
|
|
5
|
+
- **[renovate.json](../../renovate.json)** manages the `npm` ecosystem (production and
|
|
6
|
+
dev dependencies). Patch/minor devDependency updates automerge; the MCP SDK
|
|
7
|
+
(`@modelcontextprotocol/sdk`) is explicitly excluded from automerge given how central
|
|
8
|
+
it is; typescript-eslint packages are grouped.
|
|
9
|
+
- **[.github/dependabot.yml](../../.github/dependabot.yml)** manages the
|
|
10
|
+
`github-actions` ecosystem only, weekly, capped at 5 open PRs.
|
|
11
|
+
|
|
12
|
+
npm dependencies are deliberately **not** duplicated into `dependabot.yml` — running two
|
|
13
|
+
bots against the same ecosystem tends to produce competing PRs for the same bump. If
|
|
14
|
+
you're looking for why Dependabot doesn't also open npm PRs, this is why; it's a design
|
|
15
|
+
choice, not an oversight (see the corresponding row in
|
|
16
|
+
[docs/repo-maturity-report.md](../repo-maturity-report.md)).
|
|
17
|
+
|
|
18
|
+
## Vulnerability response
|
|
19
|
+
|
|
20
|
+
- `pnpm audit --audit-level moderate` (the `audit` script) runs as part of
|
|
21
|
+
`check:quality`.
|
|
22
|
+
- The `Dependency Review` job in [ci.yml](../../.github/workflows/ci.yml) is the single
|
|
23
|
+
canonical dependency review for pull requests. It uses
|
|
24
|
+
`dependency-review-action` with `fail-on-severity: moderate`, so a newly introduced
|
|
25
|
+
advisory rated moderate, high, or critical blocks the pull request. A second standalone
|
|
26
|
+
dependency-review workflow is intentionally not used because duplicate checks can apply
|
|
27
|
+
contradictory thresholds and create ambiguous merge signals.
|
|
28
|
+
- The same job enforces the repository license allowlist. The allowlist is kept identical
|
|
29
|
+
to [scripts/check-licenses.mjs](../../scripts/check-licenses.mjs) by a regression test;
|
|
30
|
+
changing either policy requires a reviewed pull request that updates both surfaces.
|
|
31
|
+
- GitHub Dependabot alerts (vulnerability scanning, distinct from the version-update
|
|
32
|
+
bot config above) apply automatically on a public GitHub repository. Whether
|
|
33
|
+
"Dependabot security updates" (automatic fix PRs) is enabled is a repository Settings
|
|
34
|
+
toggle — see the manual actions list in the maturity report.
|
|
35
|
+
|
|
36
|
+
### Published artifact verification
|
|
37
|
+
|
|
38
|
+
`pnpm run audit:packed` installs the generated npm tarball in a clean consumer project
|
|
39
|
+
and audits the resolved production graph without inheriting workspace overrides. Any
|
|
40
|
+
remaining finding must match the machine-readable, time-bounded policy in
|
|
41
|
+
[dependency-audit-exceptions.json](../security/dependency-audit-exceptions.json) and the
|
|
42
|
+
public rationale in [Dependency Audit Exceptions](../security/dependency-audit-exceptions.md).
|
|
43
|
+
Unexpected, expired, or stale exceptions fail the package gate.
|
|
44
|
+
|
|
45
|
+
## License compliance
|
|
46
|
+
|
|
47
|
+
[scripts/check-licenses.mjs](../../scripts/check-licenses.mjs) enforces an allowlist
|
|
48
|
+
(MIT, Apache-2.0, BSD-2/3-Clause, BlueOak-1.0.0, CC-\*, ISC, Python-2.0, Unlicense)
|
|
49
|
+
against every resolved dependency, run via `pnpm run licenses:check` as part of
|
|
50
|
+
`check:quality`.
|
|
51
|
+
|
|
52
|
+
## Freshness (advisory)
|
|
53
|
+
|
|
54
|
+
`pnpm run check:freshness` (`scripts/check-dependency-freshness.mjs`) compares the
|
|
55
|
+
pinned Node.js floor, pnpm version, and dependency versions against upstream metadata,
|
|
56
|
+
producing `artifacts/dependency-freshness.{json,md}`. It's advisory unless a pinned
|
|
57
|
+
version is unsupported, EOL, deprecated, or vulnerable — see
|
|
58
|
+
[CONTRIBUTING.md](../../CONTRIBUTING.md) for the exact policy and
|
|
59
|
+
[docs/audit/2026-06-05-ecosystem-audit.md](../audit/2026-06-05-ecosystem-audit.md) for
|
|
60
|
+
the most recent full audit.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Deprecation Policy
|
|
2
|
+
|
|
3
|
+
No formal deprecation has ever happened in this project's history (it's 5 days old at
|
|
4
|
+
time of writing), so this document states intent, not a track record — consistent with
|
|
5
|
+
[docs/development/api-stability.md](api-stability.md).
|
|
6
|
+
|
|
7
|
+
## Policy going forward
|
|
8
|
+
|
|
9
|
+
1. **Announce before removing.** A deprecated tool, flag, or environment variable is
|
|
10
|
+
marked as such in `CHANGELOG.md` and, where feasible, the tool/flag continues to
|
|
11
|
+
function with a warning for at least one minor release before removal.
|
|
12
|
+
2. **Removal is a breaking change.** Per
|
|
13
|
+
[docs/development/api-stability.md](api-stability.md), actual removal happens in a
|
|
14
|
+
major version bump, using Conventional Commits' `!`/`BREAKING CHANGE:` convention.
|
|
15
|
+
3. **Security-driven deprecation is the exception.** If a default or feature is found
|
|
16
|
+
to be actively unsafe (not just superseded), it may be deprecated and disabled faster
|
|
17
|
+
than the normal window, with the rationale documented in
|
|
18
|
+
[SECURITY_DECISIONS.md](../../SECURITY_DECISIONS.md) — safety takes priority over the
|
|
19
|
+
standard notice period.
|
|
20
|
+
4. **`MIGRATION.md` is the landing page** for any deprecation that requires action from
|
|
21
|
+
users upgrading between versions.
|
|
22
|
+
|
|
23
|
+
## What this policy does not yet cover
|
|
24
|
+
|
|
25
|
+
- A specific minimum notice period (e.g. "one minor version" vs. "90 days") — left
|
|
26
|
+
unspecified until there's a real deprecation to calibrate against.
|
|
27
|
+
- Deprecation of MCP tool schema fields specifically (as opposed to whole tools) — see
|
|
28
|
+
the open question in [docs/development/api-stability.md](api-stability.md) about
|
|
29
|
+
whether profile/schema changes are SemVer-significant.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Local Setup
|
|
2
|
+
|
|
3
|
+
The authoritative setup steps are in
|
|
4
|
+
[CONTRIBUTING.md#setup](../../CONTRIBUTING.md#setup) — this page doesn't duplicate them,
|
|
5
|
+
it adds the one-command shortcuts.
|
|
6
|
+
|
|
7
|
+
## Fastest path
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
git clone https://github.com/oaslananka/ssh-mcp-pro.git
|
|
11
|
+
cd ssh-mcp-pro
|
|
12
|
+
task install # or: corepack enable && corepack prepare pnpm@11.5.1 --activate && pnpm install --frozen-lockfile
|
|
13
|
+
task verify # lint + format:check + typecheck + test + build
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
[Taskfile.yml](../../Taskfile.yml) wraps the same pnpm scripts CONTRIBUTING.md documents
|
|
17
|
+
— use whichever you prefer; there is no behavioral difference between `task lint` and
|
|
18
|
+
`pnpm run lint`.
|
|
19
|
+
|
|
20
|
+
## What `pnpm run prepare` does
|
|
21
|
+
|
|
22
|
+
Configures `core.hooksPath=.githooks` so pre-commit/pre-push hooks
|
|
23
|
+
(`pnpm run hook:pre-commit`, `pnpm run hook:pre-push`) run automatically. This runs
|
|
24
|
+
automatically after `pnpm install` via the `prepare` script — you don't need to invoke
|
|
25
|
+
it manually unless hooks stop working.
|
|
26
|
+
|
|
27
|
+
## Docker-based integration tests
|
|
28
|
+
|
|
29
|
+
Integration/E2E tests exercise a real SSH fixture via Docker, not a mock:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pnpm run docker:ssh-fixture:up
|
|
33
|
+
pnpm run test:integration
|
|
34
|
+
pnpm run docker:ssh-fixture:down
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
See [docker-compose.yml](../../docker-compose.yml) and
|
|
38
|
+
[Dockerfile.test](../../Dockerfile.test).
|
|
39
|
+
|
|
40
|
+
## No `.devcontainer` (by design, for now)
|
|
41
|
+
|
|
42
|
+
This repo doesn't ship a `.devcontainer/`. Given the toolchain is one `pnpm install`
|
|
43
|
+
away from working and Docker is only needed for integration tests, this was assessed as
|
|
44
|
+
optional rather than required — see "Developer experience maturity" in
|
|
45
|
+
[docs/repo-maturity-report.md](../repo-maturity-report.md). Revisit if Windows/macOS
|
|
46
|
+
contributors report toolchain friction that a devcontainer would solve.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Release Process
|
|
2
|
+
|
|
3
|
+
## Versioning
|
|
4
|
+
|
|
5
|
+
Semantic Versioning, automated by [release-please](https://github.com/googleapis/release-please)
|
|
6
|
+
per [release-please-config.json](../../release-please-config.json) (`node` release
|
|
7
|
+
type). Conventional Commit types on `main` (see
|
|
8
|
+
[commit-conventions.md](commit-conventions.md)) drive whether the next release is a
|
|
9
|
+
patch, minor, or major bump.
|
|
10
|
+
|
|
11
|
+
## How a release happens
|
|
12
|
+
|
|
13
|
+
1. Conventional commits land on `main`.
|
|
14
|
+
2. The `release` job in [.github/workflows/release.yml](../../.github/workflows/release.yml)
|
|
15
|
+
runs `googleapis/release-please-action`, which opens or updates a release PR
|
|
16
|
+
(updating `CHANGELOG.md`, `.release-please-manifest.json`, and the version fields
|
|
17
|
+
release-please is configured to touch — see `extra-files` in
|
|
18
|
+
`release-please-config.json`, which includes `mcp.json`, `server.json`, and the MCP
|
|
19
|
+
registry record).
|
|
20
|
+
3. Merging that PR triggers `release_created`, which runs the `release-assets` job:
|
|
21
|
+
- `pnpm run check` (full quality gate) must pass.
|
|
22
|
+
- `pnpm run sbom` generates a CycloneDX SBOM.
|
|
23
|
+
- The package is packed with `pnpm pack`, and both the tarball and the SBOM get a
|
|
24
|
+
`sha256sum` checksum file.
|
|
25
|
+
- `actions/attest-build-provenance` runs twice — once for the package, once for the
|
|
26
|
+
SBOM — producing verifiable build provenance attestations.
|
|
27
|
+
- All artifacts (tarball, SBOM, checksums) are attached to the GitHub Release.
|
|
28
|
+
- npm publish only happens if the repository variable `AUTO_RELEASE_PUBLISH` is
|
|
29
|
+
`"true"`; otherwise the step is a documented no-op ("npm publishing is disabled by
|
|
30
|
+
AUTO_RELEASE_PUBLISH").
|
|
31
|
+
|
|
32
|
+
## Verifying a release artifact
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
sha256sum -c ssh-mcp-pro-<version>.tgz.sha256
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
For provenance, use [GitHub CLI attestation verification](https://cli.github.com/manual/gh_attestation_verify):
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
gh attestation verify ssh-mcp-pro-<version>.tgz --owner oaslananka
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
See [docs/security/release-integrity.md](../security/release-integrity.md) for the full
|
|
45
|
+
supply-chain rationale.
|
|
46
|
+
|
|
47
|
+
## Current status
|
|
48
|
+
|
|
49
|
+
No release has been published yet (repository created 2026-06-28). Release PR #1
|
|
50
|
+
(`chore(main): release ssh-mcp-pro 1.2.0`) is open and is the first opportunity to
|
|
51
|
+
exercise this pipeline end-to-end — see [ROADMAP.md](../../ROADMAP.md).
|
|
52
|
+
|
|
53
|
+
## Container images
|
|
54
|
+
|
|
55
|
+
Published separately by [.github/workflows/docker.yml](../../.github/workflows/docker.yml)
|
|
56
|
+
on tagged releases; see [docs/docker.md](../docker.md) for tag policy and digest-pinned
|
|
57
|
+
usage.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Testing Policy
|
|
2
|
+
|
|
3
|
+
## Test layers
|
|
4
|
+
|
|
5
|
+
Defined in [vitest.config.ts](../../vitest.config.ts) as separate projects:
|
|
6
|
+
|
|
7
|
+
| Project | Location | Run with |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| Unit | `test/unit/**` | `pnpm test` |
|
|
10
|
+
| Integration | `test/integration/**` | `pnpm run test:integration` |
|
|
11
|
+
| Windows command-path integration | `test/integration/windows-ssh.integration.test.ts` | `pnpm run test:integration:windows` |
|
|
12
|
+
| E2E | `test/e2e/**` | `pnpm run test:e2e` |
|
|
13
|
+
| Performance | `test/perf/**` | `pnpm run test:perf` (baseline: `test:perf:baseline`) |
|
|
14
|
+
|
|
15
|
+
Integration and E2E projects run sequentially (single worker, no file parallelism) —
|
|
16
|
+
they exercise a real SSH fixture (see `scripts/docker-ssh-fixture.mjs` and
|
|
17
|
+
[docker-compose.yml](../../docker-compose.yml)) and aren't safe to parallelize against
|
|
18
|
+
shared fixture state. Protected CI verifies the Docker fixture before each Linux suite and then checks the generated JUnit report to ensure the env-gated tests executed instead of being silently skipped. Failure runs retain sanitized container state, fixture logs, and JUnit evidence for 14 days.
|
|
19
|
+
|
|
20
|
+
The `Windows Command-Path Integration` job executes PowerShell-capable command selection and Windows package-manager paths locally on a Windows runner. It does not claim a network connection to a real Windows OpenSSH server.
|
|
21
|
+
|
|
22
|
+
## Coverage policy
|
|
23
|
+
|
|
24
|
+
`pnpm run test:coverage` enforces the thresholds in `vitest.config.ts`: 85% branches,
|
|
25
|
+
85% functions, 90% lines, 90% statements repo-wide, with a scoped 75/80/85/85 threshold
|
|
26
|
+
for `src/remote/**` (the remote control-plane surface, which has more integration-only
|
|
27
|
+
paths that are harder to unit-test in isolation). These thresholds are a CI gate, not a
|
|
28
|
+
suggestion — `check:quality`'s downstream `check` script fails the build below them.
|
|
29
|
+
|
|
30
|
+
## Mutation testing
|
|
31
|
+
|
|
32
|
+
`pnpm run test:mutation` runs [Stryker](../../stryker.conf.mjs) against specific line
|
|
33
|
+
ranges in the highest-consequence files: `auth.ts`, `policy.ts`, `safety.ts`,
|
|
34
|
+
`config.ts`, `session.ts`, `http-security.ts`, `oauth.ts`, and the `remote/*` control
|
|
35
|
+
plane. Thresholds are 80% mutation score to be considered healthy, 60% as the floor
|
|
36
|
+
(`break: null`, i.e. advisory rather than a hard CI failure today). See
|
|
37
|
+
[docs/testing.md](../testing.md) for the rationale behind the line-range allowlist and
|
|
38
|
+
promotion criteria for adding more files to it.
|
|
39
|
+
|
|
40
|
+
## What a PR is expected to include
|
|
41
|
+
|
|
42
|
+
Per [CONTRIBUTING.md](../../CONTRIBUTING.md): new functionality needs accompanying
|
|
43
|
+
tests, and `pnpm run check` (which includes `test:coverage`) must pass before a PR is
|
|
44
|
+
considered ready. There is currently no CI gate that *requires* a human reviewer's
|
|
45
|
+
approval before merge (see the branch-protection gap in
|
|
46
|
+
[docs/repo-maturity-report.md](../repo-maturity-report.md)) — treat the automated gate
|
|
47
|
+
as necessary, not sufficient.
|