@projectsolo/solo-mission-mcp 0.23.2 → 0.23.3
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/.github/workflows/lint.yml +42 -0
- package/.github/workflows/release.yml +20 -8
- package/.github/workflows/test.yml +37 -0
- package/DEVELOPER_README.md +3 -1
- package/README.md +3 -1
- package/dist/index.js +26 -1397
- package/dist/server-U6ZDX3NA.js +1403 -0
- package/package.json +2 -2
- package/src/index.ts +14 -86
- package/src/nodeVersion.test.ts +67 -0
- package/src/nodeVersion.ts +49 -0
- package/src/server.ts +92 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
name: Lint
|
|
2
|
+
|
|
3
|
+
# Stage 1 of the CI contract: a PR into dev runs fast static checks only
|
|
4
|
+
# (typecheck + the live-spec tool-coverage gate). No tests, no build.
|
|
5
|
+
on:
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [dev]
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ${{ github.workflow }}-pr-${{ github.event.pull_request.number }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
lint:
|
|
15
|
+
name: Typecheck & spec coverage
|
|
16
|
+
timeout-minutes: 5
|
|
17
|
+
runs-on: [self-hosted, solo_mission_mcp-vps]
|
|
18
|
+
permissions:
|
|
19
|
+
contents: read
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v4
|
|
23
|
+
|
|
24
|
+
# No setup-node npm cache: ci-runner-vm keeps ~/.npm warm on local disk.
|
|
25
|
+
# Node floor ^22.23.4: older 22.x trusts the eMudhra CAs compromised in
|
|
26
|
+
# October 2026 (the server refuses to start on it). check-latest still
|
|
27
|
+
# picks up later 22.x security releases.
|
|
28
|
+
- uses: actions/setup-node@v4
|
|
29
|
+
with:
|
|
30
|
+
node-version: '^22.23.4'
|
|
31
|
+
check-latest: true
|
|
32
|
+
|
|
33
|
+
- name: Install dependencies
|
|
34
|
+
run: npm ci
|
|
35
|
+
|
|
36
|
+
- name: Typecheck
|
|
37
|
+
run: npm run typecheck
|
|
38
|
+
|
|
39
|
+
# Static regex over src/tools/*.ts plus one fetch of the live OpenAPI spec:
|
|
40
|
+
# fails if the spec documents a route no MCP tool calls.
|
|
41
|
+
- name: Check tool coverage against live API spec
|
|
42
|
+
run: npx tsx src/scripts/check-tools-against-spec.ts
|
|
@@ -12,6 +12,13 @@ on:
|
|
|
12
12
|
- 'v[0-9]+.[0-9]+.[0-9]+'
|
|
13
13
|
- 'u[0-9]+.[0-9]+.[0-9]+'
|
|
14
14
|
|
|
15
|
+
# One group per workflow (not per ref: every tag is its own ref). A newer tag
|
|
16
|
+
# replaces an older run that is still queued; a publish already running is
|
|
17
|
+
# never cancelled, so npm is never left with a half-finished publish.
|
|
18
|
+
concurrency:
|
|
19
|
+
group: ${{ github.workflow }}-release
|
|
20
|
+
cancel-in-progress: false
|
|
21
|
+
|
|
15
22
|
jobs:
|
|
16
23
|
publish:
|
|
17
24
|
name: Build & Publish to npm
|
|
@@ -24,11 +31,19 @@ jobs:
|
|
|
24
31
|
steps:
|
|
25
32
|
- uses: actions/checkout@v4
|
|
26
33
|
|
|
34
|
+
# npm cache is skipped on the self-hosted (u*) path: ci-runner-vm keeps
|
|
35
|
+
# ~/.npm warm on local disk between jobs, so actions/setup-node's npm
|
|
36
|
+
# cache there only round-trips a tarball through GitHub's remote cache
|
|
37
|
+
# every run for no benefit. GitHub-hosted (v*) runners are ephemeral,
|
|
38
|
+
# so caching still helps there.
|
|
39
|
+
# Node floor ^22.23.4: older 22.x trusts the eMudhra CAs compromised in
|
|
40
|
+
# October 2026, and this job carries the npm publish credential.
|
|
41
|
+
# check-latest still picks up later 22.x security releases.
|
|
27
42
|
- uses: actions/setup-node@v4
|
|
28
43
|
with:
|
|
29
|
-
node-version: 22
|
|
44
|
+
node-version: '^22.23.4'
|
|
30
45
|
check-latest: true
|
|
31
|
-
cache: npm
|
|
46
|
+
cache: ${{ startsWith(github.ref_name, 'u') && '' || 'npm' }}
|
|
32
47
|
registry-url: 'https://registry.npmjs.org'
|
|
33
48
|
|
|
34
49
|
# Trusted Publishing (OIDC) requires npm CLI >= 11.5.1; Node 22's bundled
|
|
@@ -40,15 +55,12 @@ jobs:
|
|
|
40
55
|
- name: Install dependencies
|
|
41
56
|
run: npm ci
|
|
42
57
|
|
|
43
|
-
-
|
|
44
|
-
|
|
45
|
-
|
|
58
|
+
# Typecheck and the spec-coverage gate run on the PR (lint.yml), unit
|
|
59
|
+
# tests on the push to dev (test.yml). Release only builds what npm
|
|
60
|
+
# ships, checks the tag against package.json, and publishes.
|
|
46
61
|
- name: Build
|
|
47
62
|
run: npm run build
|
|
48
63
|
|
|
49
|
-
- name: Check tool coverage against live API spec
|
|
50
|
-
run: npx tsx src/scripts/check-tools-against-spec.ts
|
|
51
|
-
|
|
52
64
|
- name: Verify tag matches package.json version
|
|
53
65
|
run: |
|
|
54
66
|
TAG_VERSION="${GITHUB_REF_NAME#[uv]}"
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: Test
|
|
2
|
+
|
|
3
|
+
# Stage 2 of the CI contract: a push to dev (i.e. a merge) runs the unit
|
|
4
|
+
# tests only. Lint already ran on the PR; nothing deploys here.
|
|
5
|
+
on:
|
|
6
|
+
push:
|
|
7
|
+
branches: [dev]
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
test:
|
|
15
|
+
name: Unit tests (vitest)
|
|
16
|
+
timeout-minutes: 10
|
|
17
|
+
runs-on: [self-hosted, solo_mission_mcp-vps]
|
|
18
|
+
permissions:
|
|
19
|
+
contents: read
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v4
|
|
23
|
+
|
|
24
|
+
# No setup-node npm cache: ci-runner-vm keeps ~/.npm warm on local disk.
|
|
25
|
+
# Node floor ^22.23.4: older 22.x trusts the eMudhra CAs compromised in
|
|
26
|
+
# October 2026 (the server refuses to start on it). check-latest still
|
|
27
|
+
# picks up later 22.x security releases.
|
|
28
|
+
- uses: actions/setup-node@v4
|
|
29
|
+
with:
|
|
30
|
+
node-version: '^22.23.4'
|
|
31
|
+
check-latest: true
|
|
32
|
+
|
|
33
|
+
- name: Install dependencies
|
|
34
|
+
run: npm ci
|
|
35
|
+
|
|
36
|
+
- name: Run tests
|
|
37
|
+
run: npm test
|
package/DEVELOPER_README.md
CHANGED
|
@@ -6,6 +6,8 @@ For end-user usage and setup, see [README.md](README.md).
|
|
|
6
6
|
|
|
7
7
|
## Local Development
|
|
8
8
|
|
|
9
|
+
Use Node.js 22.23.4+, 24.22.1+ or 26.12.1+. Older releases still trust the eMudhra certificate authorities compromised in October 2026, so the server (including `npm run dev` and the inspector) exits at startup on them, with no override.
|
|
10
|
+
|
|
9
11
|
Clone and build from source:
|
|
10
12
|
|
|
11
13
|
```bash
|
|
@@ -64,7 +66,7 @@ If you're developing the MCP server and want to point your client at the built o
|
|
|
64
66
|
}
|
|
65
67
|
```
|
|
66
68
|
|
|
67
|
-
Restart the client after changing config.
|
|
69
|
+
Restart the client after changing config. `"command": "node"` must resolve to a patched Node.js (see above); if the client's `PATH` finds an older one, give the absolute path to a patched `node` binary instead.
|
|
68
70
|
|
|
69
71
|
---
|
|
70
72
|
|
package/README.md
CHANGED
|
@@ -57,7 +57,7 @@ The Agent SDK spawns the MCP server as a subprocess, exposes all Solo tools to C
|
|
|
57
57
|
|
|
58
58
|
## Prerequisites
|
|
59
59
|
|
|
60
|
-
- Node.js
|
|
60
|
+
- Node.js **22.23.4+, 24.22.1+ or 26.12.1+**. Older releases, including all of Node 20, 21, 23 and 25, still trust eMudhra certificate authorities compromised in October 2026, so a network attacker could read or change the server's traffic, including your agent key; the server refuses to start on them.
|
|
61
61
|
- A Solo account at [solomission.ai](https://solomission.ai)
|
|
62
62
|
- An agent API key (see below)
|
|
63
63
|
|
|
@@ -132,6 +132,8 @@ Edit `~/.cursor/mcp.json` (or your project’s `.cursor/mcp.json`):
|
|
|
132
132
|
|
|
133
133
|
Restart the client. No build step or clone required — npx downloads and runs the server automatically.
|
|
134
134
|
|
|
135
|
+
`npx` runs the server with the first `node` on the client's `PATH`, so that Node.js must meet the [Prerequisites](#prerequisites); on an older one the server exits with an upgrade message in the client's MCP log.
|
|
136
|
+
|
|
135
137
|
**Building from source or using a local path?** See [DEVELOPER_README.md](DEVELOPER_README.md).
|
|
136
138
|
|
|
137
139
|
### Optional env var
|