@opvs-ai/mcp 2.6.0 → 2.7.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/README.md +78 -3
- package/dist/fleet.d.ts +169 -0
- package/dist/fleet.js +474 -0
- package/dist/fleet.js.map +1 -0
- package/dist/http.d.ts +27 -0
- package/dist/http.js +61 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +16 -2
- package/dist/index.js +31 -50
- package/dist/index.js.map +1 -1
- package/package.json +9 -6
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @opvs-ai/mcp
|
|
2
2
|
|
|
3
|
-
OPVS MCP server for the **on-demand model** —
|
|
3
|
+
OPVS MCP server for the **on-demand model** — 16 tools that give any MCP host (Claude Desktop, Cursor, Antigravity, Windsurf, Claude Code) the same surface OPVS-hosted agents see: 10 always-on marketplace tools, `sandbox_chat` (a vendor test mode), and 5 **fleet** tools for machines and slots. Everything else is reached through `tool_call` indirection so the package fits under the ~100-tool cap every current MCP client enforces.
|
|
4
4
|
|
|
5
5
|
| Tool | Wraps | Purpose |
|
|
6
6
|
|------|-------|---------|
|
|
@@ -15,11 +15,57 @@ OPVS MCP server for the **on-demand model** — 10 always-on tools that give any
|
|
|
15
15
|
| `whoami` | `/auth/me` | Session probe — brand, agent, workspace |
|
|
16
16
|
| `board_as_markdown` | `/board/boards/{id}/export?format=md` | A whole AgentBoard as a Markdown plan in one call (`detail` summary/standard/full, `columns` filter) |
|
|
17
17
|
|
|
18
|
+
### Fleet — machines and slots
|
|
19
|
+
|
|
20
|
+
The environment layer had **no agent-reachable surface at all** until these landed, so
|
|
21
|
+
"dashboard or MCP" was dashboard-only. They are native tools rather than `tool_call` routes
|
|
22
|
+
for the same reason `board_as_markdown` is: there is no marketplace skill for environments,
|
|
23
|
+
so there is no `schema.yaml` to route through.
|
|
24
|
+
|
|
25
|
+
| Tool | Wraps | Purpose |
|
|
26
|
+
|------|-------|---------|
|
|
27
|
+
| `fleet_list` | `/environments` + `/environments/allowance` | Every slot this brand owns + the machine allowance it spends, grouped by machine. `detail` compact/full |
|
|
28
|
+
| `slot_get` | `/environments/{ref}` → `/workstations/{uuid}` | One slot + its per-step onboarding checklist, and `next_action` — the single step to act on |
|
|
29
|
+
| `slot_health` | `/environments/{ref}/health` | **Live** sidecar probe (reaches the box over WireGuard) |
|
|
30
|
+
| `fleet_logins` | `/environments/credentials/reauth-status` | Lapsed logins on both credential lanes, reported separately |
|
|
31
|
+
| `slot_order` | `POST /workstations` | Order a slot — **writes**: spends the allowance, mints a one-shot install PAT |
|
|
32
|
+
|
|
33
|
+
#### Vocabulary
|
|
34
|
+
|
|
35
|
+
At the product surface there are exactly two nouns, and the tool names use them
|
|
36
|
+
([`MACHINE-AND-SLOT.md`](../../docs/planning/opvsRunner/MACHINE-AND-SLOT.md) §3, owner ruling
|
|
37
|
+
2026-09-07):
|
|
38
|
+
|
|
39
|
+
- **MACHINE** — the physical host. What a tunnel terminates at. Keyed by `machine_id`.
|
|
40
|
+
- **SLOT** — the worker at a desk on it. What a card is claimed by, what a terminal opens into.
|
|
41
|
+
|
|
42
|
+
**On the wire it is still `environments`**, and that disagreement is deliberate — renaming a
|
|
43
|
+
live table, its router and its TS type buys nothing a reader needs. The words *box* and *desk*
|
|
44
|
+
are retired from new writing but appear throughout the older docs. Every tool description names
|
|
45
|
+
the synonyms, so an agent told "list my environments" or "check my box" still finds the tool.
|
|
46
|
+
|
|
47
|
+
#### Three things that surprise people
|
|
48
|
+
|
|
49
|
+
1. **Any ref shape works on `slot_get` and `slot_health`.** Full UUID, an 8-or-more hex prefix,
|
|
50
|
+
or the `env_…` short code. `slot_get` resolves the ref *first* and then uses the canonical
|
|
51
|
+
UUID for the checklist hop — because `/workstations/{id}` accepts **only** a UUID and 404s a
|
|
52
|
+
short code, which would otherwise read as "your slot does not exist".
|
|
53
|
+
2. **A `null` is never a green light.** `allowance: null` is paired with `allowance_error`;
|
|
54
|
+
`onboarding: null` with `onboarding_error`. Both mean *unknown*, never *fine* — do not tell
|
|
55
|
+
an operator they have room, or that nothing is outstanding, on the strength of a null.
|
|
56
|
+
3. **`fleet_logins` reports two lanes and never sums them.** `lease` is the build credential
|
|
57
|
+
(lapsed → builds fall back to metered pricing); `desk` is what the box's terminal opens
|
|
58
|
+
(lapsed → the desk will not start). A box can be perfect on one and unusable on the other,
|
|
59
|
+
so a single total could not say which broke. Desk state is four-valued —
|
|
60
|
+
`healthy | not_applicable | unknown | lapsed` — and "nobody asked OPVS to manage this desk"
|
|
61
|
+
is a different sentence from "OPVS was asked and cannot vouch for it".
|
|
62
|
+
|
|
63
|
+
|
|
18
64
|
All tool names match `^[a-zA-Z0-9_-]+$` (the OpenAI tool-name regex; dots break Lola/Roni/planner on first call).
|
|
19
65
|
|
|
20
66
|
## Install
|
|
21
67
|
|
|
22
|
-
This package is published to OPVS's Verdaccio registry
|
|
68
|
+
This package is published to **both** public npm and OPVS's Verdaccio registry (npm.opvs.ai). A plain `npm install -g @opvs-ai/mcp` works from npmjs.com. Inside a repo whose `.npmrc` pins the `@opvs-ai` scope to Verdaccio, that pin wins over any `--registry` flag — including on reads, so verify with the scope override:
|
|
23
69
|
|
|
24
70
|
```bash
|
|
25
71
|
echo "@opvs-ai:registry=https://npm.opvs.ai/" >> ~/.npmrc
|
|
@@ -28,7 +74,14 @@ npm install -g @opvs-ai/mcp
|
|
|
28
74
|
|
|
29
75
|
Provides the `opvs-mcp` binary.
|
|
30
76
|
|
|
31
|
-
|
|
77
|
+
```bash
|
|
78
|
+
npm view @opvs-ai/mcp version --@opvs-ai:registry=https://registry.npmjs.org
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
> **Corrected 2026-08-18.** This section used to say the npmjs publish was
|
|
82
|
+
> deferred and that the package was Verdaccio-only. That stopped being true when
|
|
83
|
+
> the 2.x line reached npmjs; the note outlived the condition it described. Read
|
|
84
|
+
> the registry, not this file.
|
|
32
85
|
|
|
33
86
|
## Auth
|
|
34
87
|
|
|
@@ -168,6 +221,28 @@ The on-demand model (10 always-on + `tool_call` indirection) reaches the same sk
|
|
|
168
221
|
|
|
169
222
|
Versions ≤ 0.7.4 are end-of-life. There is no `@opvs-ai/mcp@0.x → 1.0` migration code path — replace the old install with a fresh one.
|
|
170
223
|
|
|
224
|
+
## Development
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
cd ../core && npm install && npx tsc # REQUIRED FIRST — see below
|
|
228
|
+
cd ../mcp && npm install
|
|
229
|
+
npx vitest run # unit tests
|
|
230
|
+
npm run build && OPVS_TOKEN=smoke-test npm run list-tools
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Two things bite from a clean checkout:
|
|
234
|
+
|
|
235
|
+
- **Build `@opvs-ai/core` first.** Its `main` points at `dist/`, so without that step the
|
|
236
|
+
suite dies at *collection* with `Failed to resolve entry for package "@opvs-ai/core"` —
|
|
237
|
+
a missing build, not a broken suite.
|
|
238
|
+
- **`npm run list-tools` is a real gate, not a printout.** It drives the actual stdio
|
|
239
|
+
protocol against the built server and exits non-zero on a tool name that fails
|
|
240
|
+
`^[a-zA-Z0-9_-]+$` (exit 2) or on going over the tool-count ceiling (exit 3). A unit test
|
|
241
|
+
of the `TOOLS` array cannot prove a tool is *registered*; this can. Both run in CI under
|
|
242
|
+
**TS Library Tests**.
|
|
243
|
+
|
|
244
|
+
Counts move. Measure them at your SHA rather than citing a number from here.
|
|
245
|
+
|
|
171
246
|
## Related packages
|
|
172
247
|
|
|
173
248
|
- [`@opvs-ai/cli`](../cli) — terminal access (no MCP layer)
|
package/dist/fleet.d.ts
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fleet tools — the MACHINE and SLOT surface (OSB-119, BYO plan row 3.2).
|
|
3
|
+
*
|
|
4
|
+
* Until this module the MCP package had 11 tools and NONE of them reached the
|
|
5
|
+
* environment layer, so the owner's "dashboard or MCP" was dashboard-only.
|
|
6
|
+
*
|
|
7
|
+
* Lives outside `index.ts` because that file ends in a top-level
|
|
8
|
+
* `await server.connect(transport)` — importing it to unit-test a handler would
|
|
9
|
+
* start a server. See `http.ts` for the same reasoning.
|
|
10
|
+
*/
|
|
11
|
+
import { type ToolResult } from "./http.js";
|
|
12
|
+
export declare const FLEET_TOOLS: ({
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
inputSchema: {
|
|
16
|
+
type: string;
|
|
17
|
+
properties: {
|
|
18
|
+
detail: {
|
|
19
|
+
type: string;
|
|
20
|
+
enum: string[];
|
|
21
|
+
description: string;
|
|
22
|
+
};
|
|
23
|
+
slot?: undefined;
|
|
24
|
+
name?: undefined;
|
|
25
|
+
runtime?: undefined;
|
|
26
|
+
region?: undefined;
|
|
27
|
+
description?: undefined;
|
|
28
|
+
};
|
|
29
|
+
required?: undefined;
|
|
30
|
+
};
|
|
31
|
+
} | {
|
|
32
|
+
name: string;
|
|
33
|
+
description: string;
|
|
34
|
+
inputSchema: {
|
|
35
|
+
type: string;
|
|
36
|
+
properties: {
|
|
37
|
+
slot: {
|
|
38
|
+
type: string;
|
|
39
|
+
description: string;
|
|
40
|
+
};
|
|
41
|
+
detail?: undefined;
|
|
42
|
+
name?: undefined;
|
|
43
|
+
runtime?: undefined;
|
|
44
|
+
region?: undefined;
|
|
45
|
+
description?: undefined;
|
|
46
|
+
};
|
|
47
|
+
required: string[];
|
|
48
|
+
};
|
|
49
|
+
} | {
|
|
50
|
+
name: string;
|
|
51
|
+
description: string;
|
|
52
|
+
inputSchema: {
|
|
53
|
+
type: string;
|
|
54
|
+
properties: {
|
|
55
|
+
detail?: undefined;
|
|
56
|
+
slot?: undefined;
|
|
57
|
+
name?: undefined;
|
|
58
|
+
runtime?: undefined;
|
|
59
|
+
region?: undefined;
|
|
60
|
+
description?: undefined;
|
|
61
|
+
};
|
|
62
|
+
required?: undefined;
|
|
63
|
+
};
|
|
64
|
+
} | {
|
|
65
|
+
name: string;
|
|
66
|
+
description: string;
|
|
67
|
+
inputSchema: {
|
|
68
|
+
type: string;
|
|
69
|
+
properties: {
|
|
70
|
+
name: {
|
|
71
|
+
type: string;
|
|
72
|
+
description: string;
|
|
73
|
+
};
|
|
74
|
+
runtime: {
|
|
75
|
+
type: string;
|
|
76
|
+
enum: string[];
|
|
77
|
+
description: string;
|
|
78
|
+
};
|
|
79
|
+
region: {
|
|
80
|
+
type: string;
|
|
81
|
+
description: string;
|
|
82
|
+
};
|
|
83
|
+
description: {
|
|
84
|
+
type: string;
|
|
85
|
+
description: string;
|
|
86
|
+
};
|
|
87
|
+
detail?: undefined;
|
|
88
|
+
slot?: undefined;
|
|
89
|
+
};
|
|
90
|
+
required: string[];
|
|
91
|
+
};
|
|
92
|
+
})[];
|
|
93
|
+
/** The slot fields a compact fleet row carries.
|
|
94
|
+
*
|
|
95
|
+
* AN ENUMERATION IS ITSELF A CLAIM, so this list is exported into the
|
|
96
|
+
* `fleet_list` description verbatim and `detail: "full"` exists to escape it.
|
|
97
|
+
* A trim that nobody can see is indistinguishable from a field the server
|
|
98
|
+
* stopped sending.
|
|
99
|
+
*/
|
|
100
|
+
export declare const COMPACT_SLOT_FIELDS: readonly ["id", "short_id", "name", "status", "dormant", "runtime", "machine_id", "sidecar_port", "wg_address", "sidecar_version", "last_health_check", "last_sync_at", "pending_sync_count"];
|
|
101
|
+
export declare function compactSlot(row: Record<string, unknown>): Record<string, unknown>;
|
|
102
|
+
/** Group slots under the machine that reported hosting them.
|
|
103
|
+
*
|
|
104
|
+
* 🔴 A NULL `machine_id` is NOT a group. The column is written by the health
|
|
105
|
+
* poller from `/etc/machine-id` and is NULL whenever the sidecar is too old to
|
|
106
|
+
* report it — which is still the common case. Two boxes that both decline to
|
|
107
|
+
* say where they run are not thereby co-tenants, and collapsing them would
|
|
108
|
+
* invent a co-tenancy the platform has no evidence for
|
|
109
|
+
* (`schemas/environment.py`, `machine_id`). They go to `unplaced`, one entry
|
|
110
|
+
* each, in list order.
|
|
111
|
+
*/
|
|
112
|
+
export declare function groupByMachine(rows: Array<Record<string, unknown>>): {
|
|
113
|
+
machines: Array<{
|
|
114
|
+
machine_id: string;
|
|
115
|
+
slot_count: number;
|
|
116
|
+
slots: string[];
|
|
117
|
+
}>;
|
|
118
|
+
unplaced: string[];
|
|
119
|
+
};
|
|
120
|
+
export declare function handleFleetList(args: {
|
|
121
|
+
detail?: string;
|
|
122
|
+
}): Promise<ToolResult>;
|
|
123
|
+
/** Resolve any slot ref (UUID | 8+ hex prefix | `env_…` short code) to the
|
|
124
|
+
* canonical environment row.
|
|
125
|
+
*
|
|
126
|
+
* 🔑 THIS EXISTS BECAUSE THE TWO ROUTES DISAGREE ABOUT REF SHAPES.
|
|
127
|
+
* `GET /environments/{ref}` funnels through `_resolve_env`, which accepts all
|
|
128
|
+
* three. `GET /workstations/{id}` gates on `_is_uuid` and returns 404 for
|
|
129
|
+
* anything else — so an agent that reads `short_id` out of `fleet_list` and
|
|
130
|
+
* hands it to the checklist route gets "not found" for a slot that plainly
|
|
131
|
+
* exists. Resolving here, once, and then using the row's own `id` for the
|
|
132
|
+
* second hop is what keeps `slot_get` honest about which refs it accepts.
|
|
133
|
+
*/
|
|
134
|
+
export declare function resolveSlot(ref: string): Promise<{
|
|
135
|
+
ok: true;
|
|
136
|
+
row: Record<string, unknown>;
|
|
137
|
+
} | {
|
|
138
|
+
ok: false;
|
|
139
|
+
result: ToolResult;
|
|
140
|
+
}>;
|
|
141
|
+
type OnboardingStep = {
|
|
142
|
+
key?: unknown;
|
|
143
|
+
state?: unknown;
|
|
144
|
+
reason?: unknown;
|
|
145
|
+
hint?: unknown;
|
|
146
|
+
title?: unknown;
|
|
147
|
+
};
|
|
148
|
+
/** The one step an operator should act on: the first that is not `done`.
|
|
149
|
+
*
|
|
150
|
+
* Everything after it is `blocked_by:<key>` by construction (OSB-113), so
|
|
151
|
+
* picking the first non-done step is what turns four competing lines into one.
|
|
152
|
+
* Returns null when every step is done — a genuinely ready slot.
|
|
153
|
+
*/
|
|
154
|
+
export declare function nextAction(steps: OnboardingStep[]): Record<string, unknown> | null;
|
|
155
|
+
export declare function handleSlotGet(args: {
|
|
156
|
+
slot: string;
|
|
157
|
+
}): Promise<ToolResult>;
|
|
158
|
+
export declare function handleSlotHealth(args: {
|
|
159
|
+
slot: string;
|
|
160
|
+
}): Promise<ToolResult>;
|
|
161
|
+
export declare function handleFleetLogins(): Promise<ToolResult>;
|
|
162
|
+
export declare const SLOT_RUNTIMES: string[];
|
|
163
|
+
export declare function handleSlotOrder(args: {
|
|
164
|
+
name: string;
|
|
165
|
+
runtime?: string;
|
|
166
|
+
region?: string;
|
|
167
|
+
description?: string;
|
|
168
|
+
}): Promise<ToolResult>;
|
|
169
|
+
export {};
|
package/dist/fleet.js
ADDED
|
@@ -0,0 +1,474 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fleet tools — the MACHINE and SLOT surface (OSB-119, BYO plan row 3.2).
|
|
3
|
+
*
|
|
4
|
+
* Until this module the MCP package had 11 tools and NONE of them reached the
|
|
5
|
+
* environment layer, so the owner's "dashboard or MCP" was dashboard-only.
|
|
6
|
+
*
|
|
7
|
+
* Lives outside `index.ts` because that file ends in a top-level
|
|
8
|
+
* `await server.connect(transport)` — importing it to unit-test a handler would
|
|
9
|
+
* start a server. See `http.ts` for the same reasoning.
|
|
10
|
+
*/
|
|
11
|
+
import { err, getJson, ok, postJson } from "./http.js";
|
|
12
|
+
export const FLEET_TOOLS = [
|
|
13
|
+
//
|
|
14
|
+
// VOCABULARY IS RULED, NOT FREE. `MACHINE-AND-SLOT.md` §3 (owner ruling
|
|
15
|
+
// 2026-09-07) settles the product surface on exactly two nouns: a MACHINE is
|
|
16
|
+
// the host you connect, a SLOT is the worker sitting at a desk on it. "box"
|
|
17
|
+
// and "desk" are retired from new writing, and this is new writing. The wire
|
|
18
|
+
// keeps saying `environments` — that disagreement is deliberate and is
|
|
19
|
+
// recorded there, not re-litigated here.
|
|
20
|
+
//
|
|
21
|
+
// Every description below therefore names the wire word and the retired
|
|
22
|
+
// synonyms explicitly, so an agent that was told "list my environments" or
|
|
23
|
+
// "check my box" still finds the right tool. Discoverability is paid for in
|
|
24
|
+
// the description; the NAME follows the ruling.
|
|
25
|
+
{
|
|
26
|
+
name: "fleet_list",
|
|
27
|
+
description: "List every SLOT this brand owns (a slot = one worker desk = one row of the " +
|
|
28
|
+
"`environments` table; also called an environment, box, desk, machine or " +
|
|
29
|
+
"workstation elsewhere), together with the machine allowance it spends. ONE " +
|
|
30
|
+
"call replaces list + allowance + a per-slot fetch. Slots are also grouped " +
|
|
31
|
+
"under their MACHINE (the physical host, keyed by `machine_id`) so co-tenancy " +
|
|
32
|
+
"is visible. Slots whose machine has not identified itself are listed under " +
|
|
33
|
+
"`unplaced` and are NEVER grouped together — two boxes that both decline to " +
|
|
34
|
+
"say where they run are not thereby on the same host. Brand is pinned " +
|
|
35
|
+
"server-side from the PAT — never pass a brand_id; `brand_id` is echoed back " +
|
|
36
|
+
"so an empty fleet says WHOSE fleet is empty. Read-only. `detail=compact` " +
|
|
37
|
+
"(default) emits id, short_id, name, status, dormant, runtime, machine_id, " +
|
|
38
|
+
"sidecar_port, wg_address, sidecar_version and the three freshness fields; " +
|
|
39
|
+
"`full` passes every server field through untouched.",
|
|
40
|
+
inputSchema: {
|
|
41
|
+
type: "object",
|
|
42
|
+
properties: {
|
|
43
|
+
detail: {
|
|
44
|
+
type: "string",
|
|
45
|
+
enum: ["compact", "full"],
|
|
46
|
+
description: "Row depth. Default `compact` (the decision fields, token-cheapest). " +
|
|
47
|
+
"`full` returns each slot exactly as the server sent it.",
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "slot_get",
|
|
54
|
+
description: "Fetch ONE slot (environment / box / desk / workstation) plus its live " +
|
|
55
|
+
"ONBOARDING CHECKLIST — the four steps run_installer → wg_register → " +
|
|
56
|
+
"sidecar_up → ready, each with its OWN state (pending | done | failed | " +
|
|
57
|
+
"blocked), a machine-readable `reason` and an operator `hint`. This is the " +
|
|
58
|
+
"tool that answers 'why is my machine stuck?': it also returns " +
|
|
59
|
+
"`next_action`, the single step to act on, so a stalled desk reads as one " +
|
|
60
|
+
"line rather than four competing ones. Accepts ANY ref shape — the full " +
|
|
61
|
+
"UUID, an 8+ hex prefix, or the `env_…` short code — and canonicalizes it " +
|
|
62
|
+
"for you. Read-only; touches no box. Use `slot_health` for a live probe.",
|
|
63
|
+
inputSchema: {
|
|
64
|
+
type: "object",
|
|
65
|
+
properties: {
|
|
66
|
+
slot: {
|
|
67
|
+
type: "string",
|
|
68
|
+
description: "The slot ref: full UUID, an 8-or-more hex prefix, or the `env_…` " +
|
|
69
|
+
"short code. From `fleet_list`.",
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
required: ["slot"],
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: "slot_health",
|
|
77
|
+
description: "LIVE health probe of one slot's sidecar — this call reaches out to the " +
|
|
78
|
+
"actual box over WireGuard, so it is slower than `slot_get` and can time " +
|
|
79
|
+
"out when the machine is down. Returns the stored status alongside " +
|
|
80
|
+
"`sidecar_reachable` and the version + code digest the sidecar reports " +
|
|
81
|
+
"about ITSELF right now (which may differ from the copy stored on the row). " +
|
|
82
|
+
"`sidecar_reachable: false` is a real answer, not a failure — it means the " +
|
|
83
|
+
"box did not respond. Accepts any ref shape (UUID, 8+ hex prefix, `env_…`).",
|
|
84
|
+
inputSchema: {
|
|
85
|
+
type: "object",
|
|
86
|
+
properties: {
|
|
87
|
+
slot: {
|
|
88
|
+
type: "string",
|
|
89
|
+
description: "The slot ref — UUID, 8+ hex prefix, or `env_…` short code.",
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
required: ["slot"],
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: "fleet_logins",
|
|
97
|
+
description: "Which logins have lapsed across the whole fleet, on BOTH credential lanes " +
|
|
98
|
+
"— they are different lanes and are reported separately ON PURPOSE. " +
|
|
99
|
+
"`lease` is the SpiderGate BUILD credential (when it lapses a build falls " +
|
|
100
|
+
"back to metered pricing); `desk` is what the box's TERMINAL actually opens " +
|
|
101
|
+
"(when it lapses the desk will not start). A box can be perfect on one and " +
|
|
102
|
+
"unusable on the other. Desk state is FOUR-valued (healthy | " +
|
|
103
|
+
"not_applicable | unknown | lapsed) and must be rendered as four — " +
|
|
104
|
+
"'nobody asked OPVS to manage this desk' and 'OPVS was asked and cannot " +
|
|
105
|
+
"vouch for it' are different sentences. The two lanes' attention counts are " +
|
|
106
|
+
"returned separately and are never summed: a single total cannot say which " +
|
|
107
|
+
"lane broke. `checked` is the denominator; `dormant` counts boxes skipped " +
|
|
108
|
+
"because nothing has been heard from them. Read-only, fleet-wide, no params.",
|
|
109
|
+
inputSchema: {
|
|
110
|
+
type: "object",
|
|
111
|
+
properties: {},
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: "slot_order",
|
|
116
|
+
description: "ORDER A NEW SLOT — the self-serve onboarding door (the MCP equivalent of " +
|
|
117
|
+
"the dashboard's '+ HIRE'). ⚠️ THIS WRITES: it spends one unit of the " +
|
|
118
|
+
"brand's machine allowance (check `fleet_list.allowance` first — a full " +
|
|
119
|
+
"allowance is refused with 402/403) and it mints a ONE-SHOT install PAT. " +
|
|
120
|
+
"That PAT and the `install_command` one-liner that embeds it are returned " +
|
|
121
|
+
"EXACTLY ONCE, here, and are never retrievable again — hand them straight " +
|
|
122
|
+
"to the operator to paste onto the target VPS. Nothing is provisioned by " +
|
|
123
|
+
"this call; it creates the record and the installer command. The box goes " +
|
|
124
|
+
"`provisioning` → `ready` on its own once the one-liner has run and the " +
|
|
125
|
+
"sidecar registers. Poll `slot_get` to watch the checklist advance.",
|
|
126
|
+
inputSchema: {
|
|
127
|
+
type: "object",
|
|
128
|
+
properties: {
|
|
129
|
+
name: {
|
|
130
|
+
type: "string",
|
|
131
|
+
description: "Human name for the slot, 1-128 chars. E.g. 'frontend-1'.",
|
|
132
|
+
},
|
|
133
|
+
runtime: {
|
|
134
|
+
type: "string",
|
|
135
|
+
enum: ["claude_code", "codex", "custom"],
|
|
136
|
+
description: "Agent runtime installed on the slot. Default `claude_code`. " +
|
|
137
|
+
"`custom` installs the sidecar but auto-launches nothing.",
|
|
138
|
+
},
|
|
139
|
+
region: {
|
|
140
|
+
type: "string",
|
|
141
|
+
description: "Preferred region hint (advisory only — nothing enforces it).",
|
|
142
|
+
},
|
|
143
|
+
description: {
|
|
144
|
+
type: "string",
|
|
145
|
+
description: "Optional free-text note, max 1000 chars.",
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
required: ["name"],
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
];
|
|
152
|
+
// ── Fleet handlers — MACHINES and SLOTS (OSB-119) ─────────────────────
|
|
153
|
+
/** The slot fields a compact fleet row carries.
|
|
154
|
+
*
|
|
155
|
+
* AN ENUMERATION IS ITSELF A CLAIM, so this list is exported into the
|
|
156
|
+
* `fleet_list` description verbatim and `detail: "full"` exists to escape it.
|
|
157
|
+
* A trim that nobody can see is indistinguishable from a field the server
|
|
158
|
+
* stopped sending.
|
|
159
|
+
*/
|
|
160
|
+
export const COMPACT_SLOT_FIELDS = [
|
|
161
|
+
"id",
|
|
162
|
+
"short_id",
|
|
163
|
+
"name",
|
|
164
|
+
"status",
|
|
165
|
+
"dormant",
|
|
166
|
+
"runtime",
|
|
167
|
+
"machine_id",
|
|
168
|
+
"sidecar_port",
|
|
169
|
+
"wg_address",
|
|
170
|
+
"sidecar_version",
|
|
171
|
+
"last_health_check",
|
|
172
|
+
"last_sync_at",
|
|
173
|
+
"pending_sync_count",
|
|
174
|
+
];
|
|
175
|
+
export function compactSlot(row) {
|
|
176
|
+
const out = {};
|
|
177
|
+
for (const f of COMPACT_SLOT_FIELDS) {
|
|
178
|
+
if (row[f] !== undefined)
|
|
179
|
+
out[f] = row[f];
|
|
180
|
+
}
|
|
181
|
+
return out;
|
|
182
|
+
}
|
|
183
|
+
/** Group slots under the machine that reported hosting them.
|
|
184
|
+
*
|
|
185
|
+
* 🔴 A NULL `machine_id` is NOT a group. The column is written by the health
|
|
186
|
+
* poller from `/etc/machine-id` and is NULL whenever the sidecar is too old to
|
|
187
|
+
* report it — which is still the common case. Two boxes that both decline to
|
|
188
|
+
* say where they run are not thereby co-tenants, and collapsing them would
|
|
189
|
+
* invent a co-tenancy the platform has no evidence for
|
|
190
|
+
* (`schemas/environment.py`, `machine_id`). They go to `unplaced`, one entry
|
|
191
|
+
* each, in list order.
|
|
192
|
+
*/
|
|
193
|
+
export function groupByMachine(rows) {
|
|
194
|
+
const byMachine = new Map();
|
|
195
|
+
const unplaced = [];
|
|
196
|
+
for (const row of rows) {
|
|
197
|
+
const label = typeof row.name === "string" && row.name ? row.name : String(row.id ?? "?");
|
|
198
|
+
const ref = `${String(row.id ?? "?")} (${label})`;
|
|
199
|
+
const mid = row.machine_id;
|
|
200
|
+
if (typeof mid === "string" && mid.length > 0) {
|
|
201
|
+
const bucket = byMachine.get(mid);
|
|
202
|
+
if (bucket)
|
|
203
|
+
bucket.push(ref);
|
|
204
|
+
else
|
|
205
|
+
byMachine.set(mid, [ref]);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
unplaced.push(ref);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return {
|
|
212
|
+
machines: [...byMachine.entries()].map(([machine_id, slots]) => ({
|
|
213
|
+
machine_id,
|
|
214
|
+
slot_count: slots.length,
|
|
215
|
+
slots,
|
|
216
|
+
})),
|
|
217
|
+
unplaced,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
export async function handleFleetList(args) {
|
|
221
|
+
if (args.detail != null && !["compact", "full"].includes(args.detail)) {
|
|
222
|
+
return err(`invalid detail '${args.detail}'`, "#audit.error:input=bad-detail — detail must be compact | full. " +
|
|
223
|
+
"#next:omit it for the default (compact).");
|
|
224
|
+
}
|
|
225
|
+
const full = args.detail === "full";
|
|
226
|
+
let fleet;
|
|
227
|
+
try {
|
|
228
|
+
fleet = await getJson("/api/v1/environments");
|
|
229
|
+
}
|
|
230
|
+
catch (e) {
|
|
231
|
+
const error = e;
|
|
232
|
+
if (error.status === 401 || error.status === 403) {
|
|
233
|
+
return err(`fleet_list forbidden: ${error.detail ?? "not authorized for this brand"}`, "#audit.error:auth #next:whoami to confirm which brand this PAT is pinned to.");
|
|
234
|
+
}
|
|
235
|
+
return err(`fleet_list failed: ${error.status ?? "?"} ${error.detail ?? ""}`, "#audit.error:upstream #next:whoami to verify auth; check the API is reachable.");
|
|
236
|
+
}
|
|
237
|
+
const rows = Array.isArray(fleet.environments) ? fleet.environments : [];
|
|
238
|
+
// The allowance is a SECOND upstream read and is allowed to fail on its own.
|
|
239
|
+
// A fleet listing is still useful without the cap, so a failure here is
|
|
240
|
+
// REPORTED rather than swallowed into a null: `allowance: null` alone would
|
|
241
|
+
// be indistinguishable from an uncapped brand, which is the one reading that
|
|
242
|
+
// must not be invented (`EnvironmentAllowance` carries `unlimited` explicitly
|
|
243
|
+
// for exactly this reason).
|
|
244
|
+
let allowance = null;
|
|
245
|
+
let allowanceError = null;
|
|
246
|
+
try {
|
|
247
|
+
allowance = await getJson("/api/v1/environments/allowance");
|
|
248
|
+
}
|
|
249
|
+
catch (e) {
|
|
250
|
+
const error = e;
|
|
251
|
+
allowanceError = `${error.status ?? "?"} ${error.detail ?? "allowance read failed"}`;
|
|
252
|
+
}
|
|
253
|
+
const grouped = groupByMachine(rows);
|
|
254
|
+
const body = {
|
|
255
|
+
// Echoed from the SERVER, never from a client guess: `get_current_brand`
|
|
256
|
+
// may settle on a different brand than the caller assumed, and an empty
|
|
257
|
+
// list has to be able to say whose fleet is empty (OSB-164).
|
|
258
|
+
brand_id: fleet.brand_id ?? null,
|
|
259
|
+
total: fleet.total ?? rows.length,
|
|
260
|
+
slots: full ? rows : rows.map(compactSlot),
|
|
261
|
+
machines: grouped.machines,
|
|
262
|
+
unplaced: grouped.unplaced,
|
|
263
|
+
allowance,
|
|
264
|
+
};
|
|
265
|
+
if (allowanceError) {
|
|
266
|
+
body.allowance_error = allowanceError;
|
|
267
|
+
body._guidance =
|
|
268
|
+
"#audit.partial:allowance — the fleet listing is complete; the machine " +
|
|
269
|
+
"allowance could not be read, so `allowance` is null because it is UNKNOWN, " +
|
|
270
|
+
"not because the brand is uncapped. Do not tell the operator they have room.";
|
|
271
|
+
}
|
|
272
|
+
return ok(body);
|
|
273
|
+
}
|
|
274
|
+
/** Resolve any slot ref (UUID | 8+ hex prefix | `env_…` short code) to the
|
|
275
|
+
* canonical environment row.
|
|
276
|
+
*
|
|
277
|
+
* 🔑 THIS EXISTS BECAUSE THE TWO ROUTES DISAGREE ABOUT REF SHAPES.
|
|
278
|
+
* `GET /environments/{ref}` funnels through `_resolve_env`, which accepts all
|
|
279
|
+
* three. `GET /workstations/{id}` gates on `_is_uuid` and returns 404 for
|
|
280
|
+
* anything else — so an agent that reads `short_id` out of `fleet_list` and
|
|
281
|
+
* hands it to the checklist route gets "not found" for a slot that plainly
|
|
282
|
+
* exists. Resolving here, once, and then using the row's own `id` for the
|
|
283
|
+
* second hop is what keeps `slot_get` honest about which refs it accepts.
|
|
284
|
+
*/
|
|
285
|
+
export async function resolveSlot(ref) {
|
|
286
|
+
try {
|
|
287
|
+
const row = await getJson(`/api/v1/environments/${encodeURIComponent(ref)}`);
|
|
288
|
+
return { ok: true, row };
|
|
289
|
+
}
|
|
290
|
+
catch (e) {
|
|
291
|
+
const error = e;
|
|
292
|
+
if (error.status === 404) {
|
|
293
|
+
return {
|
|
294
|
+
ok: false,
|
|
295
|
+
result: err(`slot '${ref}' not found (or not owned by this brand)`, "#audit.error:slot=missing #next:fleet_list to see this brand's slots; " +
|
|
296
|
+
"whoami to confirm which brand the PAT is pinned to. Any of the full " +
|
|
297
|
+
"UUID, an 8+ hex prefix or the `env_…` short code is accepted."),
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
if (error.status === 409) {
|
|
301
|
+
return {
|
|
302
|
+
ok: false,
|
|
303
|
+
result: err(`slot ref '${ref}' is ambiguous: ${error.detail ?? "matches more than one slot"}`, "#audit.error:slot=ambiguous #next:lengthen the hex prefix, or use the " +
|
|
304
|
+
"full UUID / `env_…` short code from fleet_list. Retrying the same ref fails identically."),
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
if (error.status === 401 || error.status === 403) {
|
|
308
|
+
return {
|
|
309
|
+
ok: false,
|
|
310
|
+
result: err(`slot '${ref}' forbidden: ${error.detail ?? "not authorized for this brand"}`, "#audit.error:auth #next:whoami to confirm the PAT's brand."),
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
return {
|
|
314
|
+
ok: false,
|
|
315
|
+
result: err(`slot lookup failed: ${error.status ?? "?"} ${error.detail ?? ""}`, "#audit.error:upstream #next:whoami to verify auth; check the API is reachable."),
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
/** The one step an operator should act on: the first that is not `done`.
|
|
320
|
+
*
|
|
321
|
+
* Everything after it is `blocked_by:<key>` by construction (OSB-113), so
|
|
322
|
+
* picking the first non-done step is what turns four competing lines into one.
|
|
323
|
+
* Returns null when every step is done — a genuinely ready slot.
|
|
324
|
+
*/
|
|
325
|
+
export function nextAction(steps) {
|
|
326
|
+
const pending = steps.find((s) => s.state !== "done");
|
|
327
|
+
if (!pending)
|
|
328
|
+
return null;
|
|
329
|
+
return {
|
|
330
|
+
key: pending.key ?? null,
|
|
331
|
+
state: pending.state ?? null,
|
|
332
|
+
reason: pending.reason ?? null,
|
|
333
|
+
hint: pending.hint ?? null,
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
export async function handleSlotGet(args) {
|
|
337
|
+
if (!args.slot || typeof args.slot !== "string") {
|
|
338
|
+
return err("slot is required", "#audit.error:input=missing — slot_get needs a slot ref (UUID, 8+ hex " +
|
|
339
|
+
"prefix, or `env_…` short code). #next:fleet_list to find one.");
|
|
340
|
+
}
|
|
341
|
+
const resolved = await resolveSlot(args.slot);
|
|
342
|
+
if (!resolved.ok)
|
|
343
|
+
return resolved.result;
|
|
344
|
+
const row = resolved.row;
|
|
345
|
+
// Second hop, by CANONICAL UUID — see `resolveSlot`. The onboarding checklist
|
|
346
|
+
// hangs off the workstation view, which is the same `environments` row mapped
|
|
347
|
+
// through `_to_view`; a workstation id IS an env id.
|
|
348
|
+
const canonical = typeof row.id === "string" ? row.id : args.slot;
|
|
349
|
+
const body = { slot: row };
|
|
350
|
+
try {
|
|
351
|
+
const view = await getJson(`/api/v1/workstations/${encodeURIComponent(canonical)}`);
|
|
352
|
+
const steps = Array.isArray(view.onboarding_steps) ? view.onboarding_steps : [];
|
|
353
|
+
body.onboarding = {
|
|
354
|
+
ready: view.ready ?? null,
|
|
355
|
+
steps,
|
|
356
|
+
next_action: nextAction(steps),
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
catch (e) {
|
|
360
|
+
// The slot itself resolved, so returning it without the checklist beats
|
|
361
|
+
// failing the whole call — but the gap is NAMED. A missing `onboarding` key
|
|
362
|
+
// that the caller has to notice is how a checklist comes to read as "no
|
|
363
|
+
// steps outstanding".
|
|
364
|
+
const error = e;
|
|
365
|
+
body.onboarding = null;
|
|
366
|
+
body.onboarding_error = `${error.status ?? "?"} ${error.detail ?? "checklist read failed"}`;
|
|
367
|
+
body._guidance =
|
|
368
|
+
"#audit.partial:onboarding — the slot resolved but its checklist could not " +
|
|
369
|
+
"be read. `onboarding: null` means UNKNOWN, not 'nothing outstanding'.";
|
|
370
|
+
}
|
|
371
|
+
return ok(body);
|
|
372
|
+
}
|
|
373
|
+
export async function handleSlotHealth(args) {
|
|
374
|
+
if (!args.slot || typeof args.slot !== "string") {
|
|
375
|
+
return err("slot is required", "#audit.error:input=missing — slot_health needs a slot ref (UUID, 8+ hex " +
|
|
376
|
+
"prefix, or `env_…` short code). #next:fleet_list to find one.");
|
|
377
|
+
}
|
|
378
|
+
try {
|
|
379
|
+
const data = await getJson(`/api/v1/environments/${encodeURIComponent(args.slot)}/health`);
|
|
380
|
+
return ok(data);
|
|
381
|
+
}
|
|
382
|
+
catch (e) {
|
|
383
|
+
const error = e;
|
|
384
|
+
if (error.status === 404) {
|
|
385
|
+
return err(`slot '${args.slot}' not found (or not owned by this brand)`, "#audit.error:slot=missing #next:fleet_list to see this brand's slots.");
|
|
386
|
+
}
|
|
387
|
+
if (error.status === 409) {
|
|
388
|
+
return err(`slot ref '${args.slot}' is ambiguous: ${error.detail ?? "matches more than one slot"}`, "#audit.error:slot=ambiguous #next:lengthen the prefix or use the full UUID.");
|
|
389
|
+
}
|
|
390
|
+
// A DOWN BOX IS NOT AN ERROR OF THIS TOOL. The route probes the sidecar over
|
|
391
|
+
// WireGuard, so a dead machine surfaces as an upstream failure here rather
|
|
392
|
+
// than as `sidecar_reachable: false` — say which of the two it was, because
|
|
393
|
+
// "the API is broken" and "the box is off" call for different actions.
|
|
394
|
+
return err(`slot_health failed: ${error.status ?? "?"} ${error.detail ?? ""}`, "#audit.error:upstream — this call reaches the box itself, so a timeout " +
|
|
395
|
+
"here usually means the MACHINE is unreachable, not that OPVS is down. " +
|
|
396
|
+
"#next:slot_get for the stored status + onboarding checklist, which touches no box.");
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
export async function handleFleetLogins() {
|
|
400
|
+
try {
|
|
401
|
+
const data = await getJson("/api/v1/environments/credentials/reauth-status");
|
|
402
|
+
return ok({
|
|
403
|
+
// Passed through by LANE, deliberately un-merged. The two counts answer
|
|
404
|
+
// different questions and the schema is explicit that a rail which adds
|
|
405
|
+
// them cannot say which lane broke.
|
|
406
|
+
lease: {
|
|
407
|
+
flagged: data.environments ?? [],
|
|
408
|
+
total_providers: data.total_providers ?? 0,
|
|
409
|
+
},
|
|
410
|
+
desk: {
|
|
411
|
+
rows: data.desk ?? [],
|
|
412
|
+
needs_attention: data.desk_needs_attention ?? 0,
|
|
413
|
+
},
|
|
414
|
+
checked: data.checked ?? 0,
|
|
415
|
+
// Skipped boxes are COUNTED rather than dropped: `checked` is the
|
|
416
|
+
// denominator every figure above is read against, and shrinking it
|
|
417
|
+
// silently would turn "all fine" into a claim about a fleet that was
|
|
418
|
+
// never examined (OSB-158).
|
|
419
|
+
dormant: data.dormant ?? 0,
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
catch (e) {
|
|
423
|
+
const error = e;
|
|
424
|
+
if (error.status === 401 || error.status === 403) {
|
|
425
|
+
return err(`fleet_logins forbidden: ${error.detail ?? "not authorized for this brand"}`, "#audit.error:auth #next:whoami to confirm the PAT's brand.");
|
|
426
|
+
}
|
|
427
|
+
return err(`fleet_logins failed: ${error.status ?? "?"} ${error.detail ?? ""}`, "#audit.error:upstream #next:whoami to verify auth; check the API is reachable.");
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
export const SLOT_RUNTIMES = ["claude_code", "codex", "custom"];
|
|
431
|
+
export async function handleSlotOrder(args) {
|
|
432
|
+
if (!args.name || typeof args.name !== "string" || args.name.trim() === "") {
|
|
433
|
+
return err("name is required", "#audit.error:input=missing — slot_order needs a human name for the slot, " +
|
|
434
|
+
"1-128 chars. Nothing is created without it.");
|
|
435
|
+
}
|
|
436
|
+
if (args.runtime != null && !SLOT_RUNTIMES.includes(args.runtime)) {
|
|
437
|
+
// Refused HERE rather than forwarded, because the upstream 422 arrives after
|
|
438
|
+
// the allowance gate has already been consulted and reads as a server fault.
|
|
439
|
+
return err(`invalid runtime '${args.runtime}'`, `#audit.error:input=bad-runtime — runtime must be one of ${SLOT_RUNTIMES.join(" | ")}. #next:omit it for the default (claude_code). Note \`gemini-cli\` and ` +
|
|
440
|
+
"`openhands` are NOT slot runtimes — they exist on other axes.");
|
|
441
|
+
}
|
|
442
|
+
const body = { name: args.name };
|
|
443
|
+
if (args.runtime)
|
|
444
|
+
body.runtime = args.runtime;
|
|
445
|
+
if (args.region)
|
|
446
|
+
body.region = args.region;
|
|
447
|
+
if (args.description)
|
|
448
|
+
body.description = args.description;
|
|
449
|
+
try {
|
|
450
|
+
const data = await postJson("/api/v1/workstations", body);
|
|
451
|
+
return ok({
|
|
452
|
+
...data,
|
|
453
|
+
_guidance: "#audit.write:slot-ordered — `pat` and `install_command` are ONE-SHOT and " +
|
|
454
|
+
"are not retrievable again from any endpoint. Hand the one-liner to the " +
|
|
455
|
+
"operator now; if it is lost, rotate with a fresh PAT rather than " +
|
|
456
|
+
"re-ordering (a second order spends the allowance again). Nothing is " +
|
|
457
|
+
"installed yet — poll slot_get to watch the checklist advance.",
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
catch (e) {
|
|
461
|
+
const error = e;
|
|
462
|
+
if (error.status === 402 || error.status === 403) {
|
|
463
|
+
return err(`slot_order denied: ${error.detail ?? "machine allowance exhausted"}`, "#audit.error:quota — ORDER and ATTACH spend the SAME allowance; there is " +
|
|
464
|
+
"one cap, not two. #next:fleet_list to read `allowance`, then release an " +
|
|
465
|
+
"unused slot or raise the plan's `max_environments_per_brand`.");
|
|
466
|
+
}
|
|
467
|
+
if (error.status === 400 || error.status === 422) {
|
|
468
|
+
return err(`slot_order rejected: ${error.detail ?? "invalid request"}`, "#audit.error:input — check `name` (1-128 chars) and `description` (max 1000).");
|
|
469
|
+
}
|
|
470
|
+
return err(`slot_order failed: ${error.status ?? "?"} ${error.detail ?? ""}`, "#audit.error:upstream — a failure here may still have created the slot. " +
|
|
471
|
+
"#next:fleet_list BEFORE retrying, or you will spend the allowance twice.");
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
//# sourceMappingURL=fleet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet.js","sourceRoot":"","sources":["../src/fleet.ts"],"names":[],"mappings":"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"}
|
package/dist/http.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared transport + response helpers for the OPVS MCP server.
|
|
3
|
+
*
|
|
4
|
+
* Carved out of `index.ts` (OSB-119) for one reason: `index.ts` ends in a
|
|
5
|
+
* top-level `await server.connect(transport)`, so importing it to test anything
|
|
6
|
+
* STARTS A SERVER. Any unit test of a handler therefore needs the handler to
|
|
7
|
+
* live somewhere that can be imported without that side effect. This module and
|
|
8
|
+
* `fleet.ts` are that somewhere; the move is pure, with no behaviour change.
|
|
9
|
+
*/
|
|
10
|
+
import { createClient } from "@opvs-ai/core";
|
|
11
|
+
export type ToolResult = {
|
|
12
|
+
content: Array<{
|
|
13
|
+
type: "text";
|
|
14
|
+
text: string;
|
|
15
|
+
}>;
|
|
16
|
+
};
|
|
17
|
+
export declare function ok(body: unknown): ToolResult;
|
|
18
|
+
/** Standard error envelope: flat-sibling `_guidance` (W1.A discipline,
|
|
19
|
+
* confirmed with SpiderIQ 2026-05-15 PM). Never wrap. */
|
|
20
|
+
export declare function err(message: string, guidance?: string): ToolResult;
|
|
21
|
+
export declare function client(): ReturnType<typeof createClient>;
|
|
22
|
+
export declare function getJson<T = unknown>(path: string): Promise<T>;
|
|
23
|
+
export declare function postJson<T = unknown>(path: string, body?: unknown): Promise<T>;
|
|
24
|
+
/** GET a path and return the raw response body as text (no JSON parse). Used
|
|
25
|
+
* for endpoints that emit Markdown / plain text such as the board export. */
|
|
26
|
+
export declare function getText(path: string): Promise<string>;
|
|
27
|
+
export declare function del204(path: string): Promise<void>;
|
package/dist/http.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared transport + response helpers for the OPVS MCP server.
|
|
3
|
+
*
|
|
4
|
+
* Carved out of `index.ts` (OSB-119) for one reason: `index.ts` ends in a
|
|
5
|
+
* top-level `await server.connect(transport)`, so importing it to test anything
|
|
6
|
+
* STARTS A SERVER. Any unit test of a handler therefore needs the handler to
|
|
7
|
+
* live somewhere that can be imported without that side effect. This module and
|
|
8
|
+
* `fleet.ts` are that somewhere; the move is pure, with no behaviour change.
|
|
9
|
+
*/
|
|
10
|
+
import { createClient, getResponseText } from "@opvs-ai/core";
|
|
11
|
+
export function ok(body) {
|
|
12
|
+
const text = typeof body === "string" ? body : JSON.stringify(body);
|
|
13
|
+
return { content: [{ type: "text", text }] };
|
|
14
|
+
}
|
|
15
|
+
/** Standard error envelope: flat-sibling `_guidance` (W1.A discipline,
|
|
16
|
+
* confirmed with SpiderIQ 2026-05-15 PM). Never wrap. */
|
|
17
|
+
export function err(message, guidance) {
|
|
18
|
+
const body = { error: message };
|
|
19
|
+
if (guidance)
|
|
20
|
+
body._guidance = guidance;
|
|
21
|
+
return { content: [{ type: "text", text: JSON.stringify(body) }] };
|
|
22
|
+
}
|
|
23
|
+
// ── API client ────────────────────────────────────────────────────────
|
|
24
|
+
// The explicit return type is load-bearing: `createClient` returns an anonymous
|
|
25
|
+
// class with private fields, which TypeScript refuses to export inferentially
|
|
26
|
+
// (TS4094). Naming it via ReturnType keeps the export legal without widening it.
|
|
27
|
+
export function client() {
|
|
28
|
+
return createClient();
|
|
29
|
+
}
|
|
30
|
+
export async function getJson(path) {
|
|
31
|
+
const res = await client().get(path);
|
|
32
|
+
const text = await getResponseText(res);
|
|
33
|
+
try {
|
|
34
|
+
return JSON.parse(text);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return text;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export async function postJson(path, body) {
|
|
41
|
+
const res = await client().post(path, body);
|
|
42
|
+
const text = await getResponseText(res);
|
|
43
|
+
try {
|
|
44
|
+
return JSON.parse(text);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return text;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/** GET a path and return the raw response body as text (no JSON parse). Used
|
|
51
|
+
* for endpoints that emit Markdown / plain text such as the board export. */
|
|
52
|
+
export async function getText(path) {
|
|
53
|
+
const res = await client().get(path);
|
|
54
|
+
return getResponseText(res);
|
|
55
|
+
}
|
|
56
|
+
export async function del204(path) {
|
|
57
|
+
// The OPVS DELETE endpoints we hit return 204 No Content; createClient
|
|
58
|
+
// throws on non-2xx, so reaching here = success.
|
|
59
|
+
await client().delete(path);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=http.js.map
|
package/dist/http.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAQ9D,MAAM,UAAU,EAAE,CAAC,IAAa;IAC9B,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACpE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED;0DAC0D;AAC1D,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,QAAiB;IACpD,MAAM,IAAI,GAA4B,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACzD,IAAI,QAAQ;QAAE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IACxC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,yEAAyE;AAEzE,gFAAgF;AAChF,8EAA8E;AAC9E,iFAAiF;AACjF,MAAM,UAAU,MAAM;IACpB,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAc,IAAY;IACrD,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAoB,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,IAAY,EACZ,IAAc;IAEd,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAoB,CAAC;IAC9B,CAAC;AACH,CAAC;AAED;8EAC8E;AAC9E,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAY;IACxC,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY;IACvC,uEAAuE;IACvE,iDAAiD;IACjD,MAAM,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @opvs-ai/mcp — MCP server for the OPVS on-demand model
|
|
4
4
|
*
|
|
5
|
-
* Exposes
|
|
5
|
+
* Exposes 16 tools — the 8 that mirror the gateway's `skills-meta` plugin (so
|
|
6
6
|
* external MCP hosts like Claude Desktop, Cursor, Antigravity and Windsurf get
|
|
7
7
|
* the same surface OPVS-hosted agents see), plus `board_as_markdown` (Topic 1 /
|
|
8
8
|
* S1.4 — a whole AgentBoard as a Markdown plan in one call; it has no
|
|
@@ -11,12 +11,26 @@
|
|
|
11
11
|
* `references/` layers on-demand from the catalog bundle, with nothing
|
|
12
12
|
* installed), plus `sandbox_chat` (vendor test mode — drive your marketplace
|
|
13
13
|
* sandbox test agent through the real gateway, per Vendor-Upstream-and-Testing
|
|
14
|
-
* decision 4: a MODE of this package, not a new one)
|
|
14
|
+
* decision 4: a MODE of this package, not a new one), plus the FIVE fleet tools
|
|
15
|
+
* (OSB-119 — `fleet_list`, `slot_get`, `slot_health`, `fleet_logins`,
|
|
16
|
+
* `slot_order`: the environment layer had no agent-reachable surface at all,
|
|
17
|
+
* so "dashboard or MCP" was dashboard-only). Every other capability is
|
|
15
18
|
* reached through `tool_call` indirection so the package fits under the
|
|
16
19
|
* ~100-tool cap that all current MCP clients enforce.
|
|
17
20
|
*
|
|
21
|
+
* The fleet tools are NATIVE rather than `tool_call` routes for the same reason
|
|
22
|
+
* `board_as_markdown` is: there is no marketplace skill for environments, so
|
|
23
|
+
* there is no schema.yaml to route through.
|
|
24
|
+
*
|
|
18
25
|
* Tool names match OpenAI's `^[a-zA-Z0-9_-]+$` (see
|
|
19
26
|
* `feedback-openai-tool-name-regex` memory). Dots, `@`, and `/` are rejected.
|
|
27
|
+
* `src/index.test.ts` asserts this over the whole TOOLS array, so tool number
|
|
28
|
+
* 17 is covered on the day it is written rather than the day someone remembers.
|
|
29
|
+
*
|
|
30
|
+
* ⚠️ The schema field here is `inputSchema` — that is the MCP specification and
|
|
31
|
+
* it is CORRECT. The OPVS gateway PLUGIN convention (`parameters`, and an
|
|
32
|
+
* `execute(toolCallId, params)` signature) is a different runtime; do not
|
|
33
|
+
* "align" the two.
|
|
20
34
|
*
|
|
21
35
|
* Transport: stdio (JSON-RPC). Never write to stdout outside the SDK.
|
|
22
36
|
* Debug logs go to stderr via console.error().
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @opvs-ai/mcp — MCP server for the OPVS on-demand model
|
|
4
4
|
*
|
|
5
|
-
* Exposes
|
|
5
|
+
* Exposes 16 tools — the 8 that mirror the gateway's `skills-meta` plugin (so
|
|
6
6
|
* external MCP hosts like Claude Desktop, Cursor, Antigravity and Windsurf get
|
|
7
7
|
* the same surface OPVS-hosted agents see), plus `board_as_markdown` (Topic 1 /
|
|
8
8
|
* S1.4 — a whole AgentBoard as a Markdown plan in one call; it has no
|
|
@@ -11,12 +11,26 @@
|
|
|
11
11
|
* `references/` layers on-demand from the catalog bundle, with nothing
|
|
12
12
|
* installed), plus `sandbox_chat` (vendor test mode — drive your marketplace
|
|
13
13
|
* sandbox test agent through the real gateway, per Vendor-Upstream-and-Testing
|
|
14
|
-
* decision 4: a MODE of this package, not a new one)
|
|
14
|
+
* decision 4: a MODE of this package, not a new one), plus the FIVE fleet tools
|
|
15
|
+
* (OSB-119 — `fleet_list`, `slot_get`, `slot_health`, `fleet_logins`,
|
|
16
|
+
* `slot_order`: the environment layer had no agent-reachable surface at all,
|
|
17
|
+
* so "dashboard or MCP" was dashboard-only). Every other capability is
|
|
15
18
|
* reached through `tool_call` indirection so the package fits under the
|
|
16
19
|
* ~100-tool cap that all current MCP clients enforce.
|
|
17
20
|
*
|
|
21
|
+
* The fleet tools are NATIVE rather than `tool_call` routes for the same reason
|
|
22
|
+
* `board_as_markdown` is: there is no marketplace skill for environments, so
|
|
23
|
+
* there is no schema.yaml to route through.
|
|
24
|
+
*
|
|
18
25
|
* Tool names match OpenAI's `^[a-zA-Z0-9_-]+$` (see
|
|
19
26
|
* `feedback-openai-tool-name-regex` memory). Dots, `@`, and `/` are rejected.
|
|
27
|
+
* `src/index.test.ts` asserts this over the whole TOOLS array, so tool number
|
|
28
|
+
* 17 is covered on the day it is written rather than the day someone remembers.
|
|
29
|
+
*
|
|
30
|
+
* ⚠️ The schema field here is `inputSchema` — that is the MCP specification and
|
|
31
|
+
* it is CORRECT. The OPVS gateway PLUGIN convention (`parameters`, and an
|
|
32
|
+
* `execute(toolCallId, params)` signature) is a different runtime; do not
|
|
33
|
+
* "align" the two.
|
|
20
34
|
*
|
|
21
35
|
* Transport: stdio (JSON-RPC). Never write to stdout outside the SDK.
|
|
22
36
|
* Debug logs go to stderr via console.error().
|
|
@@ -27,7 +41,9 @@
|
|
|
27
41
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
28
42
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
29
43
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
30
|
-
import {
|
|
44
|
+
import { getEffectiveConfig } from "@opvs-ai/core";
|
|
45
|
+
import { del204, err, getJson, getText, ok, postJson } from "./http.js";
|
|
46
|
+
import { FLEET_TOOLS, handleFleetList, handleFleetLogins, handleSlotGet, handleSlotHealth, handleSlotOrder, } from "./fleet.js";
|
|
31
47
|
import { readFileSync } from "node:fs";
|
|
32
48
|
import { fileURLToPath } from "node:url";
|
|
33
49
|
import { dirname, join } from "node:path";
|
|
@@ -43,18 +59,6 @@ const PKG_VERSION = (() => {
|
|
|
43
59
|
return "0.0.0";
|
|
44
60
|
}
|
|
45
61
|
})();
|
|
46
|
-
function ok(body) {
|
|
47
|
-
const text = typeof body === "string" ? body : JSON.stringify(body);
|
|
48
|
-
return { content: [{ type: "text", text }] };
|
|
49
|
-
}
|
|
50
|
-
/** Standard error envelope: flat-sibling `_guidance` (W1.A discipline,
|
|
51
|
-
* confirmed with SpiderIQ 2026-05-15 PM). Never wrap. */
|
|
52
|
-
function err(message, guidance) {
|
|
53
|
-
const body = { error: message };
|
|
54
|
-
if (guidance)
|
|
55
|
-
body._guidance = guidance;
|
|
56
|
-
return { content: [{ type: "text", text: JSON.stringify(body) }] };
|
|
57
|
-
}
|
|
58
62
|
// ── Skill-ref helpers ─────────────────────────────────────────────────
|
|
59
63
|
function normalizeSkillRef(ref) {
|
|
60
64
|
// Accept "@vendor/name", "vendor/name", or bare "name".
|
|
@@ -65,41 +69,6 @@ function normalizeSkillRef(ref) {
|
|
|
65
69
|
}
|
|
66
70
|
return { full: cleaned, vendor: "", name: cleaned };
|
|
67
71
|
}
|
|
68
|
-
// ── API client ────────────────────────────────────────────────────────
|
|
69
|
-
function client() {
|
|
70
|
-
return createClient();
|
|
71
|
-
}
|
|
72
|
-
async function getJson(path) {
|
|
73
|
-
const res = await client().get(path);
|
|
74
|
-
const text = await getResponseText(res);
|
|
75
|
-
try {
|
|
76
|
-
return JSON.parse(text);
|
|
77
|
-
}
|
|
78
|
-
catch {
|
|
79
|
-
return text;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
async function postJson(path, body) {
|
|
83
|
-
const res = await client().post(path, body);
|
|
84
|
-
const text = await getResponseText(res);
|
|
85
|
-
try {
|
|
86
|
-
return JSON.parse(text);
|
|
87
|
-
}
|
|
88
|
-
catch {
|
|
89
|
-
return text;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/** GET a path and return the raw response body as text (no JSON parse). Used
|
|
93
|
-
* for endpoints that emit Markdown / plain text such as the board export. */
|
|
94
|
-
async function getText(path) {
|
|
95
|
-
const res = await client().get(path);
|
|
96
|
-
return getResponseText(res);
|
|
97
|
-
}
|
|
98
|
-
async function del204(path) {
|
|
99
|
-
// The OPVS DELETE endpoints we hit return 204 No Content; createClient
|
|
100
|
-
// throws on non-2xx, so reaching here = success.
|
|
101
|
-
await client().delete(path);
|
|
102
|
-
}
|
|
103
72
|
/** Fetch the package descriptor from the registry and return the canonical
|
|
104
73
|
* `manifest.skills[].id` array. Mirrors `SkillsMetaClient.fetchManifestSkillIds`
|
|
105
74
|
* in the gateway plugin (W2.0.A). */
|
|
@@ -451,6 +420,8 @@ const TOOLS = [
|
|
|
451
420
|
required: ["vendor", "message"],
|
|
452
421
|
},
|
|
453
422
|
},
|
|
423
|
+
// The fleet surface (OSB-119) lives in `fleet.ts` — see the note there.
|
|
424
|
+
...FLEET_TOOLS,
|
|
454
425
|
];
|
|
455
426
|
// ── Tool execution ────────────────────────────────────────────────────
|
|
456
427
|
/** Build the exact `@vendor/name` from a search-result row (defensive on field names). */
|
|
@@ -915,6 +886,16 @@ async function handleTool(name, args) {
|
|
|
915
886
|
return handleBoardAsMarkdown(args);
|
|
916
887
|
case "sandbox_chat":
|
|
917
888
|
return handleSandboxChat(args);
|
|
889
|
+
case "fleet_list":
|
|
890
|
+
return handleFleetList(args);
|
|
891
|
+
case "slot_get":
|
|
892
|
+
return handleSlotGet(args);
|
|
893
|
+
case "slot_health":
|
|
894
|
+
return handleSlotHealth(args);
|
|
895
|
+
case "fleet_logins":
|
|
896
|
+
return handleFleetLogins();
|
|
897
|
+
case "slot_order":
|
|
898
|
+
return handleSlotOrder(args);
|
|
918
899
|
default:
|
|
919
900
|
return err(`unknown tool: ${name}`);
|
|
920
901
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opvs-ai/mcp",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "OPVS MCP server
|
|
3
|
+
"version": "2.7.0",
|
|
4
|
+
"description": "OPVS MCP server \u2014 16 tools \u2014 10 always-on (tool_search, tool_help, tool_read, tool_call, tool_pin, tool_list_installed, tool_install, tool_uninstall, whoami, board_as_markdown), sandbox_chat, and the 5 fleet tools (fleet_list, slot_get, slot_health, fleet_logins, slot_order) for the on-demand model. Fits under the ~100-tool cap every MCP client enforces. Routes everything else through tool_call indirection.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"opvs-mcp": "dist/index.js"
|
|
@@ -11,17 +11,20 @@
|
|
|
11
11
|
"dev": "tsx src/index.ts",
|
|
12
12
|
"start": "node dist/index.js",
|
|
13
13
|
"list-tools": "node scripts/list-tools.mjs",
|
|
14
|
-
"live-smoke": "node scripts/live-smoke.mjs"
|
|
14
|
+
"live-smoke": "node scripts/live-smoke.mjs",
|
|
15
|
+
"test": "vitest run",
|
|
16
|
+
"test:watch": "vitest"
|
|
15
17
|
},
|
|
16
18
|
"dependencies": {
|
|
17
19
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
18
|
-
"@opvs-ai/core": "^0.4.
|
|
20
|
+
"@opvs-ai/core": "^0.4.6",
|
|
19
21
|
"zod": "^3.23.0"
|
|
20
22
|
},
|
|
21
23
|
"devDependencies": {
|
|
22
24
|
"@types/node": "^20.14.0",
|
|
23
25
|
"tsx": "^4.15.0",
|
|
24
|
-
"typescript": "^5.5.0"
|
|
26
|
+
"typescript": "^5.5.0",
|
|
27
|
+
"vitest": "^3.2.4"
|
|
25
28
|
},
|
|
26
29
|
"engines": {
|
|
27
30
|
"node": ">=18.0.0"
|
|
@@ -42,7 +45,7 @@
|
|
|
42
45
|
],
|
|
43
46
|
"license": "MIT",
|
|
44
47
|
"publishConfig": {
|
|
45
|
-
"registry": "https://
|
|
48
|
+
"registry": "https://registry.npmjs.org/",
|
|
46
49
|
"access": "public"
|
|
47
50
|
},
|
|
48
51
|
"repository": {
|