@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.
@@ -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
- - name: Typecheck
44
- run: npm run typecheck
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
@@ -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 >= 20
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