@opvs-ai/mcp 2.7.0 → 2.8.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/README.md +24 -3
- package/dist/.build-stamp.json +9 -0
- package/dist/board.d.ts +66 -0
- package/dist/board.js +175 -0
- package/dist/board.js.map +1 -0
- package/dist/brand-scope.d.ts +32 -0
- package/dist/brand-scope.js +71 -0
- package/dist/brand-scope.js.map +1 -0
- package/dist/factory-guidance.d.ts +14 -0
- package/dist/factory-guidance.js +27 -0
- package/dist/factory-guidance.js.map +1 -0
- package/dist/http.d.ts +12 -0
- package/dist/http.js +22 -0
- package/dist/http.js.map +1 -1
- package/dist/index.js +16 -109
- package/dist/index.js.map +1 -1
- package/dist/whoami.d.ts +2 -0
- package/dist/whoami.js +111 -0
- package/dist/whoami.js.map +1 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ OPVS MCP server for the **on-demand model** — 16 tools that give any MCP host
|
|
|
13
13
|
| `tool_install` | `/marketplace/packages/{id}/install` | Add a package with explicit consent |
|
|
14
14
|
| `tool_uninstall` | `DELETE /marketplace/installed/{id}` | Remove a package |
|
|
15
15
|
| `whoami` | `/auth/me` | Session probe — brand, agent, workspace |
|
|
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) |
|
|
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). A board over the server's 1 MiB export ceiling is **refused, not truncated** — the refusal carries `actual_bytes`/`limit_bytes`/`retry_with` as fields. It does **not** silently retry at a lower detail: the tool promises these exact bytes, so substituting a different document is the caller's decision |
|
|
17
17
|
|
|
18
18
|
### Fleet — machines and slots
|
|
19
19
|
|
|
@@ -85,15 +85,36 @@ npm view @opvs-ai/mcp version --@opvs-ai:registry=https://registry.npmjs.org
|
|
|
85
85
|
|
|
86
86
|
## Auth
|
|
87
87
|
|
|
88
|
-
Reads
|
|
88
|
+
Reads credentials from **two sources, in this order** (PC-249 / OD-327):
|
|
89
|
+
|
|
90
|
+
1. **Environment variables** — `OPVS_TOKEN` and `OPVS_API_URL`. The mainstream
|
|
91
|
+
way to inject credentials in containers, CI jobs and hosted MCP runners
|
|
92
|
+
that have no writable home.
|
|
93
|
+
2. **`~/.opvs/config.json`** — the file `opvs auth request` writes; shared
|
|
94
|
+
with `@opvs-ai/cli`. A config file's stored token is overridden if
|
|
95
|
+
`OPVS_TOKEN` is exported; the workspace slug, brand_id and brand_name come
|
|
96
|
+
from the file and the server pins the brand from the PAT itself.
|
|
97
|
+
|
|
98
|
+
If neither source has a token, `whoami` returns a structured error with
|
|
99
|
+
`code: "no_credentials_found"` and guidance naming both sources — not a
|
|
100
|
+
"PAT may be missing or expired" message, which is the wrong fix for that
|
|
101
|
+
case.
|
|
89
102
|
|
|
90
103
|
```bash
|
|
104
|
+
# On a developer machine — file path
|
|
91
105
|
npm install -g @opvs-ai/cli @opvs-ai/mcp
|
|
92
106
|
opvs auth request -w <workspace-slug> -e <admin-email>
|
|
93
107
|
# (approve the email link)
|
|
94
108
|
opvs whoami # confirm brand pinned
|
|
109
|
+
|
|
110
|
+
# In a container / CI — env path (no config file needed)
|
|
111
|
+
OPVS_TOKEN=opvs_pat_xxx OPVS_API_URL=https://app.opvs.ai opvs-mcp
|
|
95
112
|
```
|
|
96
113
|
|
|
114
|
+
The brand is pinned server-side from the PAT — `tool_call` will refuse if the
|
|
115
|
+
PAT isn't brand-scoped. Env-only callers whose PAT was minted without a brand
|
|
116
|
+
will see a `#audit.warn:brand=missing` line in every `whoami` response.
|
|
117
|
+
|
|
97
118
|
## MCP client config
|
|
98
119
|
|
|
99
120
|
### Claude Desktop
|
|
@@ -195,7 +216,7 @@ Every tool returns a single text-content block whose payload is JSON with:
|
|
|
195
216
|
- **Optional flat sibling `_findings: [...]`** — only when the server emits one (e.g. `audit_level=all`).
|
|
196
217
|
- **`telemetry_signal`** in search results — closed enum: `absent | cold | warm | hot`.
|
|
197
218
|
|
|
198
|
-
The contract was locked with SpiderIQ on 2026-05-15 PM. See [`docs/planning/Marketplace/
|
|
219
|
+
The contract was locked with SpiderIQ on 2026-05-15 PM. See [`docs/planning/Marketplace/CLAUDE.md`](../../docs/planning/Marketplace/CLAUDE.md#architecture) for the gateway-side semantics this MCP mirrors.
|
|
199
220
|
|
|
200
221
|
## tool_pin status
|
|
201
222
|
|
package/dist/board.d.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Board tools — `board_as_markdown` (Topic 1 / S1.3).
|
|
3
|
+
*
|
|
4
|
+
* Lives outside `index.ts` because that file ends in a top-level
|
|
5
|
+
* `await server.connect(transport)` — importing it to unit-test a handler would
|
|
6
|
+
* start a server. See `http.ts` and `fleet.ts` for the same reasoning (OSB-119).
|
|
7
|
+
*
|
|
8
|
+
* Carved out at OSB-207, whose whole subject is what this tool does when the
|
|
9
|
+
* export is REFUSED, and which could not be tested where it was.
|
|
10
|
+
*/
|
|
11
|
+
import { type ToolResult } from "./http.js";
|
|
12
|
+
export declare const BOARD_TOOLS: {
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
inputSchema: {
|
|
16
|
+
type: string;
|
|
17
|
+
properties: {
|
|
18
|
+
board_id: {
|
|
19
|
+
type: string;
|
|
20
|
+
description: string;
|
|
21
|
+
};
|
|
22
|
+
detail: {
|
|
23
|
+
type: string;
|
|
24
|
+
enum: string[];
|
|
25
|
+
description: string;
|
|
26
|
+
};
|
|
27
|
+
columns: {
|
|
28
|
+
type: string;
|
|
29
|
+
description: string;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
required: string[];
|
|
33
|
+
};
|
|
34
|
+
}[];
|
|
35
|
+
/** The shape `@opvs-ai/core` throws, plus the parsed body it now carries. */
|
|
36
|
+
type UpstreamError = {
|
|
37
|
+
detail?: string;
|
|
38
|
+
status?: number;
|
|
39
|
+
body?: unknown;
|
|
40
|
+
};
|
|
41
|
+
/** The structured half of AgentBoard's 413, when it sent one. */
|
|
42
|
+
type ExportRefusal = {
|
|
43
|
+
error?: unknown;
|
|
44
|
+
message?: unknown;
|
|
45
|
+
actual_bytes?: unknown;
|
|
46
|
+
limit_bytes?: unknown;
|
|
47
|
+
detail_level?: unknown;
|
|
48
|
+
retry_with?: unknown;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Pull AgentBoard's structured refusal out of a thrown error, if it sent one.
|
|
52
|
+
*
|
|
53
|
+
* Returns `null` for the PROSE shape — which is not a failure to handle but the
|
|
54
|
+
* ordinary state during a deploy window: this package and AgentBoard ship on
|
|
55
|
+
* different schedules, so a rebuilt MCP will spend some hours talking to a
|
|
56
|
+
* server that still answers `{"detail": "<sentence>"}`. The caller must stay
|
|
57
|
+
* useful on that path, so nothing here parses the sentence for numbers — an
|
|
58
|
+
* absent field is honest, a number scraped out of English is a guess.
|
|
59
|
+
*/
|
|
60
|
+
export declare function exportRefusalFields(e: UpstreamError): ExportRefusal | null;
|
|
61
|
+
export declare function handleBoardAsMarkdown(args: {
|
|
62
|
+
board_id: string;
|
|
63
|
+
detail?: string;
|
|
64
|
+
columns?: string;
|
|
65
|
+
}): Promise<ToolResult>;
|
|
66
|
+
export {};
|
package/dist/board.js
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Board tools — `board_as_markdown` (Topic 1 / S1.3).
|
|
3
|
+
*
|
|
4
|
+
* Lives outside `index.ts` because that file ends in a top-level
|
|
5
|
+
* `await server.connect(transport)` — importing it to unit-test a handler would
|
|
6
|
+
* start a server. See `http.ts` and `fleet.ts` for the same reasoning (OSB-119).
|
|
7
|
+
*
|
|
8
|
+
* Carved out at OSB-207, whose whole subject is what this tool does when the
|
|
9
|
+
* export is REFUSED, and which could not be tested where it was.
|
|
10
|
+
*/
|
|
11
|
+
import { err, errFields, getText, ok } from "./http.js";
|
|
12
|
+
export const BOARD_TOOLS = [
|
|
13
|
+
{
|
|
14
|
+
name: "board_as_markdown",
|
|
15
|
+
description: "Read a WHOLE AgentBoard (or a chosen subset of its columns) as a single " +
|
|
16
|
+
"Markdown plan/PRD document — one call instead of N task fetches. Cheaper on " +
|
|
17
|
+
"tokens and gives narrative context, not raw rows. Returns the rendered " +
|
|
18
|
+
"Markdown string verbatim (read-only, deterministic — same board state → same " +
|
|
19
|
+
"bytes, each task row carries an HTML comment with its UUID for diffing). " +
|
|
20
|
+
"Brand is pinned server-side from the PAT — never pass a brand_id. Pick `detail`: " +
|
|
21
|
+
"`summary` = compact one-row-per-task table (token-cheapest); `standard` " +
|
|
22
|
+
"(default) = the nested plan format with task bodies, subtasks and stages; " +
|
|
23
|
+
"`full` = the exhaustive dump including comments. " +
|
|
24
|
+
"SIZE: a big board can exceed the server's 1 MiB export ceiling at `standard` " +
|
|
25
|
+
"or `full` and is then REFUSED (413) rather than truncated — the refusal is " +
|
|
26
|
+
"machine-readable (`actual_bytes`, `limit_bytes`, `retry_with`) and this tool " +
|
|
27
|
+
"does NOT silently retry at a lower detail, because it promises these exact " +
|
|
28
|
+
"bytes. On a board you know is large, ask for `detail='summary'` up front: it " +
|
|
29
|
+
"is the one narrowing that drops no card.",
|
|
30
|
+
inputSchema: {
|
|
31
|
+
type: "object",
|
|
32
|
+
properties: {
|
|
33
|
+
board_id: {
|
|
34
|
+
type: "string",
|
|
35
|
+
description: "The board UUID to render.",
|
|
36
|
+
},
|
|
37
|
+
detail: {
|
|
38
|
+
type: "string",
|
|
39
|
+
enum: ["summary", "standard", "full"],
|
|
40
|
+
description: "Render depth. Default `standard` (the nested plan/PRD shape). " +
|
|
41
|
+
"`summary` is the compact table; `full` adds comments.",
|
|
42
|
+
},
|
|
43
|
+
columns: {
|
|
44
|
+
type: "string",
|
|
45
|
+
description: "Optional comma-separated column filter — names OR ids, mixed. Each token " +
|
|
46
|
+
"is resolved name-first-then-id; an unknown token fails loud (400). Omit to " +
|
|
47
|
+
"render every column.",
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
required: ["board_id"],
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
/**
|
|
55
|
+
* Pull AgentBoard's structured refusal out of a thrown error, if it sent one.
|
|
56
|
+
*
|
|
57
|
+
* Returns `null` for the PROSE shape — which is not a failure to handle but the
|
|
58
|
+
* ordinary state during a deploy window: this package and AgentBoard ship on
|
|
59
|
+
* different schedules, so a rebuilt MCP will spend some hours talking to a
|
|
60
|
+
* server that still answers `{"detail": "<sentence>"}`. The caller must stay
|
|
61
|
+
* useful on that path, so nothing here parses the sentence for numbers — an
|
|
62
|
+
* absent field is honest, a number scraped out of English is a guess.
|
|
63
|
+
*/
|
|
64
|
+
export function exportRefusalFields(e) {
|
|
65
|
+
const body = e.body;
|
|
66
|
+
const detail = body?.detail;
|
|
67
|
+
if (!detail || typeof detail !== "object" || Array.isArray(detail))
|
|
68
|
+
return null;
|
|
69
|
+
const d = detail;
|
|
70
|
+
return d.error === "markdown_export_too_large" ? d : null;
|
|
71
|
+
}
|
|
72
|
+
function asNumber(v) {
|
|
73
|
+
return typeof v === "number" && Number.isFinite(v) ? v : undefined;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Turn a 413 into a refusal an agent can act on without reading English.
|
|
77
|
+
*
|
|
78
|
+
* DECISION (OSB-207): this does NOT retry at `summary` itself.
|
|
79
|
+
*
|
|
80
|
+
* The tool's contract is "the rendered Markdown string verbatim — same board
|
|
81
|
+
* state → same bytes", which is what makes the output safe to commit and diff.
|
|
82
|
+
* There is no envelope on the success path to announce a substitution in, so
|
|
83
|
+
* auto-retrying would have to either corrupt those bytes with a banner or hand
|
|
84
|
+
* back a compact table where task bodies were asked for — and an agent that
|
|
85
|
+
* receives a table silently has no way to tell "the cards have no descriptions"
|
|
86
|
+
* from "I was served a different document than I requested". The cost of not
|
|
87
|
+
* retrying is one round-trip; the cost of retrying is a wrong conclusion that
|
|
88
|
+
* looks like data. The numbers and the exact next call go in the refusal
|
|
89
|
+
* instead, so that round-trip is always correct.
|
|
90
|
+
*/
|
|
91
|
+
function tooLargeResult(boardId, requested, e) {
|
|
92
|
+
const fields = exportRefusalFields(e);
|
|
93
|
+
const actual = asNumber(fields?.actual_bytes);
|
|
94
|
+
const limit = asNumber(fields?.limit_bytes);
|
|
95
|
+
// The server reports the level it refused; fall back to the one WE asked
|
|
96
|
+
// for, which is known here and is not a guess. Undefined only when the
|
|
97
|
+
// caller omitted `detail` AND the server sent prose — we do not assert the
|
|
98
|
+
// server's default on its behalf.
|
|
99
|
+
const level = typeof fields?.detail_level === "string" ? fields.detail_level : requested;
|
|
100
|
+
const sizes = actual != null && limit != null
|
|
101
|
+
? ` — ${actual.toLocaleString("en-US")} bytes, over the ${limit.toLocaleString("en-US")}-byte limit`
|
|
102
|
+
: "";
|
|
103
|
+
const at = level ? ` at detail='${level}'` : "";
|
|
104
|
+
// `summary` is exempt from the ceiling server-side, so this branch is
|
|
105
|
+
// unreachable today. It exists because the alternative is guidance that
|
|
106
|
+
// names the level that just failed — the "a ceiling that can reject its own
|
|
107
|
+
// remedy is a dead end" shape, one layer out. Cheap to be right about.
|
|
108
|
+
const summaryAlsoRefused = level === "summary";
|
|
109
|
+
const guidance = summaryAlsoRefused
|
|
110
|
+
? "#audit.error:too-large — even detail='summary' exceeds the server's " +
|
|
111
|
+
"Markdown export ceiling for this board, so there is no lossless export " +
|
|
112
|
+
"of the whole board. This is NOT an auth, brand or board_id problem. " +
|
|
113
|
+
`#next:board_as_markdown(board_id='${boardId}', detail='summary', ` +
|
|
114
|
+
"columns='<name,name>') — a SUBSET, lossy: cards outside the named " +
|
|
115
|
+
"columns are absent from the document entirely. Use " +
|
|
116
|
+
"tool_call(@opvs-ai/agentboard, list_columns) for the valid names."
|
|
117
|
+
: "#audit.error:too-large — the board exceeds the server's Markdown export " +
|
|
118
|
+
"ceiling at this detail level. This is NOT an auth, brand or board_id " +
|
|
119
|
+
"problem, and retrying the identical call will fail identically. " +
|
|
120
|
+
`#next:board_as_markdown(board_id='${boardId}', detail='summary') — a ` +
|
|
121
|
+
"compact one-row-per-task table over EVERY card, each keeping its " +
|
|
122
|
+
"<!-- task: uuid --> anchor, so no card is dropped. Pass " +
|
|
123
|
+
"columns='<name,name>' instead to export a SUBSET — lossy: cards outside " +
|
|
124
|
+
"the named columns are absent from the document entirely.";
|
|
125
|
+
return errFields(`board_as_markdown: board '${boardId}' is too large to export${at}${sizes}.`, {
|
|
126
|
+
code: "markdown_export_too_large",
|
|
127
|
+
...(actual != null ? { actual_bytes: actual } : {}),
|
|
128
|
+
...(limit != null ? { limit_bytes: limit } : {}),
|
|
129
|
+
...(level != null ? { detail_level: level } : {}),
|
|
130
|
+
// The one narrowing that drops no card, as a parameter not a sentence —
|
|
131
|
+
// omitted when it is the thing that was just refused.
|
|
132
|
+
...(summaryAlsoRefused ? {} : { retry_with: { detail: "summary" } }),
|
|
133
|
+
lossy_alternative: { columns: "<name,name>" },
|
|
134
|
+
}, guidance);
|
|
135
|
+
}
|
|
136
|
+
export async function handleBoardAsMarkdown(args) {
|
|
137
|
+
if (!args.board_id || typeof args.board_id !== "string") {
|
|
138
|
+
return err("board_id is required", "#audit.error:input=missing — board_as_markdown needs the board UUID. " +
|
|
139
|
+
"Use tool_call(@opvs-ai/agentboard, list_boards) to find one.");
|
|
140
|
+
}
|
|
141
|
+
if (args.detail != null &&
|
|
142
|
+
!["summary", "standard", "full"].includes(args.detail)) {
|
|
143
|
+
return err(`invalid detail '${args.detail}'`, "#audit.error:input=bad-detail — detail must be summary | standard | full. " +
|
|
144
|
+
"#next:omit it for the default (standard).");
|
|
145
|
+
}
|
|
146
|
+
// Mirror the export contract: format=md is fixed; detail/columns are forwarded
|
|
147
|
+
// only when the caller set them (don't synthesize defaults — let the backend
|
|
148
|
+
// own them; LEARNINGS #38, the silent-drop tax cuts both ways).
|
|
149
|
+
const q = new URLSearchParams({ format: "md" });
|
|
150
|
+
if (args.detail)
|
|
151
|
+
q.set("detail", args.detail);
|
|
152
|
+
if (args.columns)
|
|
153
|
+
q.set("columns", args.columns);
|
|
154
|
+
const path = `/api/v1/board/boards/${encodeURIComponent(args.board_id)}/export?${q.toString()}`;
|
|
155
|
+
try {
|
|
156
|
+
const md = await getText(path);
|
|
157
|
+
return ok(md);
|
|
158
|
+
}
|
|
159
|
+
catch (e) {
|
|
160
|
+
const error = e;
|
|
161
|
+
if (error.status === 413) {
|
|
162
|
+
return tooLargeResult(args.board_id, args.detail, error);
|
|
163
|
+
}
|
|
164
|
+
if (error.status === 400) {
|
|
165
|
+
return err(`board_as_markdown: ${error.detail ?? "bad request"}`, "#audit.error:bad-columns — an unknown column name/id was passed. " +
|
|
166
|
+
"#next:tool_call(@opvs-ai/agentboard, list_columns) to see valid columns, or omit `columns`.");
|
|
167
|
+
}
|
|
168
|
+
if (error.status === 404) {
|
|
169
|
+
return err(`board '${args.board_id}' not found (or not visible to this brand)`, "#audit.error:board=missing #next:whoami to confirm the PAT's brand; " +
|
|
170
|
+
"tool_call(@opvs-ai/agentboard, list_boards) to list boards.");
|
|
171
|
+
}
|
|
172
|
+
return err(`board_as_markdown failed: ${error.status ?? "?"} ${error.detail ?? ""}`, "#audit.error:upstream #next:whoami to verify auth/brand; check the board_id.");
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=board.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board.js","sourceRoot":"","sources":["../src/board.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Params that NAME A TENANT. On an OPVS-internal skill the server pins the
|
|
3
|
+
* brand from the PAT and ignores every one of them.
|
|
4
|
+
*
|
|
5
|
+
* That silence is the whole problem. A caller who passes
|
|
6
|
+
* `workspace: "someone-elses-brand"` gets a 200 and a confident answer about
|
|
7
|
+
* a DIFFERENT brand than the one they asked about, with nothing in the
|
|
8
|
+
* response saying so. Ignoring the parameter is correct — honouring it would
|
|
9
|
+
* be a cross-tenant read — but answering as though it had been understood is
|
|
10
|
+
* not. Reported by @di-atomic 2026-09-21.
|
|
11
|
+
*
|
|
12
|
+
* `brand_id` is here too: the `tool_call` description has always said "never
|
|
13
|
+
* set brand_id — it's pinned server-side", and a rule stated only in prose is
|
|
14
|
+
* a rule nothing enforces.
|
|
15
|
+
*/
|
|
16
|
+
export declare const BRAND_SCOPING_PARAMS: string[];
|
|
17
|
+
/**
|
|
18
|
+
* Refuse a brand-scoping param that DISAGREES with the PAT's own workspace.
|
|
19
|
+
*
|
|
20
|
+
* Deliberately narrow on three axes, because a false refusal here breaks a
|
|
21
|
+
* working call:
|
|
22
|
+
*
|
|
23
|
+
* - only `@opvs-ai` skills. A third-party skill's `workspace` may mean a
|
|
24
|
+
* Slack workspace, a Notion workspace, anything — passthrough is sacred
|
|
25
|
+
* and this must not touch it;
|
|
26
|
+
* - only a MISMATCH. A value that agrees with the PAT is redundant, not
|
|
27
|
+
* wrong, and passes through untouched;
|
|
28
|
+
* - only when the PAT's own workspace and brand are BOTH known. With
|
|
29
|
+
* nothing to compare against there is no mismatch to report, and
|
|
30
|
+
* guessing would be the same defect pointed the other way.
|
|
31
|
+
*/
|
|
32
|
+
export declare function brandScopeMismatch(vendor: string, params: Record<string, unknown> | undefined): string | null;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A brand-scoping parameter that names a DIFFERENT brand is refused, not ignored.
|
|
3
|
+
*
|
|
4
|
+
* Lives in its own module so it can be unit-tested: `index.ts` connects a stdio
|
|
5
|
+
* transport at module scope, so importing it from a test starts a server.
|
|
6
|
+
*/
|
|
7
|
+
import { getEffectiveConfig } from "@opvs-ai/core";
|
|
8
|
+
/**
|
|
9
|
+
* Params that NAME A TENANT. On an OPVS-internal skill the server pins the
|
|
10
|
+
* brand from the PAT and ignores every one of them.
|
|
11
|
+
*
|
|
12
|
+
* That silence is the whole problem. A caller who passes
|
|
13
|
+
* `workspace: "someone-elses-brand"` gets a 200 and a confident answer about
|
|
14
|
+
* a DIFFERENT brand than the one they asked about, with nothing in the
|
|
15
|
+
* response saying so. Ignoring the parameter is correct — honouring it would
|
|
16
|
+
* be a cross-tenant read — but answering as though it had been understood is
|
|
17
|
+
* not. Reported by @di-atomic 2026-09-21.
|
|
18
|
+
*
|
|
19
|
+
* `brand_id` is here too: the `tool_call` description has always said "never
|
|
20
|
+
* set brand_id — it's pinned server-side", and a rule stated only in prose is
|
|
21
|
+
* a rule nothing enforces.
|
|
22
|
+
*/
|
|
23
|
+
export const BRAND_SCOPING_PARAMS = ["workspace", "workspace_slug", "brand", "brand_id"];
|
|
24
|
+
/**
|
|
25
|
+
* Refuse a brand-scoping param that DISAGREES with the PAT's own workspace.
|
|
26
|
+
*
|
|
27
|
+
* Deliberately narrow on three axes, because a false refusal here breaks a
|
|
28
|
+
* working call:
|
|
29
|
+
*
|
|
30
|
+
* - only `@opvs-ai` skills. A third-party skill's `workspace` may mean a
|
|
31
|
+
* Slack workspace, a Notion workspace, anything — passthrough is sacred
|
|
32
|
+
* and this must not touch it;
|
|
33
|
+
* - only a MISMATCH. A value that agrees with the PAT is redundant, not
|
|
34
|
+
* wrong, and passes through untouched;
|
|
35
|
+
* - only when the PAT's own workspace and brand are BOTH known. With
|
|
36
|
+
* nothing to compare against there is no mismatch to report, and
|
|
37
|
+
* guessing would be the same defect pointed the other way.
|
|
38
|
+
*/
|
|
39
|
+
export function brandScopeMismatch(vendor, params) {
|
|
40
|
+
if (vendor !== "@opvs-ai" && vendor !== "opvs-ai")
|
|
41
|
+
return null;
|
|
42
|
+
if (!params)
|
|
43
|
+
return null;
|
|
44
|
+
let cfg;
|
|
45
|
+
try {
|
|
46
|
+
cfg = getEffectiveConfig();
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return null; // no resolvable workspace — nothing to compare
|
|
50
|
+
}
|
|
51
|
+
const mine = new Set();
|
|
52
|
+
if (cfg.workspace_slug)
|
|
53
|
+
mine.add(String(cfg.workspace_slug).toLowerCase());
|
|
54
|
+
if (cfg.brand_id != null)
|
|
55
|
+
mine.add(String(cfg.brand_id));
|
|
56
|
+
if (mine.size === 0)
|
|
57
|
+
return null;
|
|
58
|
+
for (const key of BRAND_SCOPING_PARAMS) {
|
|
59
|
+
const asked = params[key];
|
|
60
|
+
if (asked == null || asked === "")
|
|
61
|
+
continue;
|
|
62
|
+
if (mine.has(String(asked).toLowerCase()))
|
|
63
|
+
continue;
|
|
64
|
+
return (`this token is pinned to workspace '${cfg.workspace_slug ?? "?"}' ` +
|
|
65
|
+
`(brand_id ${cfg.brand_id ?? "?"}), but \`${key}\` asked for '${String(asked)}'. ` +
|
|
66
|
+
"An OPVS-internal skill always answers for the token's own brand, so the " +
|
|
67
|
+
"reply would have described a different workspace than the one you named.");
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=brand-scope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-scope.js","sourceRoot":"","sources":["../src/brand-scope.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAEzF;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,MAA2C;IAE3C,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC/D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,IAAI,GAAiE,CAAC;IACtE,IAAI,CAAC;QACH,GAAG,GAAG,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,CAAC,+CAA+C;IAC9D,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,GAAG,CAAC,cAAc;QAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3E,IAAI,GAAG,CAAC,QAAQ,IAAI,IAAI;QAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzD,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEjC,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;YAAE,SAAS;QAC5C,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAAE,SAAS;QACpD,OAAO,CACL,sCAAsC,GAAG,CAAC,cAAc,IAAI,GAAG,IAAI;YACnE,aAAa,GAAG,CAAC,QAAQ,IAAI,GAAG,YAAY,GAAG,iBAAiB,MAAM,CAAC,KAAK,CAAC,KAAK;YAClF,0EAA0E;YAC1E,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Routing nudge for board/factory skills (GS.2). A POINTER to the canonical
|
|
2
|
+
* sources (the skill's SKILL.md + its references, read with `tool_read`, and
|
|
3
|
+
* the live claimTask/getRunnable `_guidance` envelopes), carrying the few
|
|
4
|
+
* platform invariants an MCP agent needs at decision time so it can't drive a
|
|
5
|
+
* factory board blind. Deliberately terse — the full recipe is
|
|
6
|
+
* references/run-a-factory-board.md; this never restates it.
|
|
7
|
+
*
|
|
8
|
+
* ASP-73: this used to send agents to `section='description'` for "the
|
|
9
|
+
* operating model + references index". tool_help's description section is the
|
|
10
|
+
* registry's one-line package description, so the pointer led back to this
|
|
11
|
+
* same `_guidance` — a loop. The operating model is what `tool_read` serves.
|
|
12
|
+
* ASP-75: the one-active-project claim gate is stated here too, because it
|
|
13
|
+
* refuses every claim before any of the other invariants matter. */
|
|
14
|
+
export declare const FACTORY_HELP_GUIDANCE: string;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Routing nudge for board/factory skills (GS.2). A POINTER to the canonical
|
|
2
|
+
* sources (the skill's SKILL.md + its references, read with `tool_read`, and
|
|
3
|
+
* the live claimTask/getRunnable `_guidance` envelopes), carrying the few
|
|
4
|
+
* platform invariants an MCP agent needs at decision time so it can't drive a
|
|
5
|
+
* factory board blind. Deliberately terse — the full recipe is
|
|
6
|
+
* references/run-a-factory-board.md; this never restates it.
|
|
7
|
+
*
|
|
8
|
+
* ASP-73: this used to send agents to `section='description'` for "the
|
|
9
|
+
* operating model + references index". tool_help's description section is the
|
|
10
|
+
* registry's one-line package description, so the pointer led back to this
|
|
11
|
+
* same `_guidance` — a loop. The operating model is what `tool_read` serves.
|
|
12
|
+
* ASP-75: the one-active-project claim gate is stated here too, because it
|
|
13
|
+
* refuses every claim before any of the other invariants matter. */
|
|
14
|
+
export const FACTORY_HELP_GUIDANCE = "#use:board/DAG/factory task pipelines. " +
|
|
15
|
+
"#read:tool_read(name) for the operating model (the skill's SKILL.md) — its " +
|
|
16
|
+
"`layers[]` lists every recipe; tool_read(name, path='references/run-a-factory-board.md') " +
|
|
17
|
+
"is the factory recipe. " +
|
|
18
|
+
"#factory:the board must be in exactly ONE active project (moveBoardToProject " +
|
|
19
|
+
"mode=move) or every claimTask returns task_id:null reason board_project_unresolved. " +
|
|
20
|
+
"New cards land in Backlog (staging, NOT claimable) → move to Ready " +
|
|
21
|
+
"(claimable by role 'builder') → a worker claims and it auto-moves to Executing. " +
|
|
22
|
+
"A factory board runs NOTHING until an opvs-sidecar worker is pointed at its " +
|
|
23
|
+
"board_id; set a `mode:` label (auto|assisted|manual) per card for build autonomy. " +
|
|
24
|
+
"#next:the live claimTask + getRunnable responses carry their own `_guidance` " +
|
|
25
|
+
"envelope (e.g. a claim that returns task_id:null+reason is a misconfig, " +
|
|
26
|
+
"not no-work) — read it.";
|
|
27
|
+
//# sourceMappingURL=factory-guidance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory-guidance.js","sourceRoot":"","sources":["../src/factory-guidance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;qEAYqE;AACrE,MAAM,CAAC,MAAM,qBAAqB,GAChC,yCAAyC;IACzC,6EAA6E;IAC7E,2FAA2F;IAC3F,yBAAyB;IACzB,+EAA+E;IAC/E,sFAAsF;IACtF,qEAAqE;IACrE,kFAAkF;IAClF,8EAA8E;IAC9E,oFAAoF;IACpF,+EAA+E;IAC/E,0EAA0E;IAC1E,yBAAyB,CAAC"}
|
package/dist/http.d.ts
CHANGED
|
@@ -18,6 +18,18 @@ export declare function ok(body: unknown): ToolResult;
|
|
|
18
18
|
/** Standard error envelope: flat-sibling `_guidance` (W1.A discipline,
|
|
19
19
|
* confirmed with SpiderIQ 2026-05-15 PM). Never wrap. */
|
|
20
20
|
export declare function err(message: string, guidance?: string): ToolResult;
|
|
21
|
+
/**
|
|
22
|
+
* `err` plus machine-readable fields, as FLAT SIBLINGS of `error` — the same
|
|
23
|
+
* W1.A discipline `_guidance` follows. Never wrap: a nested `details: {...}`
|
|
24
|
+
* would make the agent reach one level deeper for exactly the values the
|
|
25
|
+
* refusal exists to hand it.
|
|
26
|
+
*
|
|
27
|
+
* For refusals an agent must ACT on rather than merely report. A 413 whose
|
|
28
|
+
* numbers live only inside an English sentence forces the model to parse prose
|
|
29
|
+
* to decide what to do next, which is the failure this envelope removes
|
|
30
|
+
* (OSB-207). `error` and `_guidance` are reserved and cannot be overwritten.
|
|
31
|
+
*/
|
|
32
|
+
export declare function errFields(message: string, fields: Record<string, unknown>, guidance?: string): ToolResult;
|
|
21
33
|
export declare function client(): ReturnType<typeof createClient>;
|
|
22
34
|
export declare function getJson<T = unknown>(path: string): Promise<T>;
|
|
23
35
|
export declare function postJson<T = unknown>(path: string, body?: unknown): Promise<T>;
|
package/dist/http.js
CHANGED
|
@@ -20,6 +20,28 @@ export function err(message, guidance) {
|
|
|
20
20
|
body._guidance = guidance;
|
|
21
21
|
return { content: [{ type: "text", text: JSON.stringify(body) }] };
|
|
22
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* `err` plus machine-readable fields, as FLAT SIBLINGS of `error` — the same
|
|
25
|
+
* W1.A discipline `_guidance` follows. Never wrap: a nested `details: {...}`
|
|
26
|
+
* would make the agent reach one level deeper for exactly the values the
|
|
27
|
+
* refusal exists to hand it.
|
|
28
|
+
*
|
|
29
|
+
* For refusals an agent must ACT on rather than merely report. A 413 whose
|
|
30
|
+
* numbers live only inside an English sentence forces the model to parse prose
|
|
31
|
+
* to decide what to do next, which is the failure this envelope removes
|
|
32
|
+
* (OSB-207). `error` and `_guidance` are reserved and cannot be overwritten.
|
|
33
|
+
*/
|
|
34
|
+
export function errFields(message, fields, guidance) {
|
|
35
|
+
const body = { error: message };
|
|
36
|
+
for (const [k, v] of Object.entries(fields)) {
|
|
37
|
+
if (k === "error" || k === "_guidance")
|
|
38
|
+
continue;
|
|
39
|
+
body[k] = v;
|
|
40
|
+
}
|
|
41
|
+
if (guidance)
|
|
42
|
+
body._guidance = guidance;
|
|
43
|
+
return { content: [{ type: "text", text: JSON.stringify(body) }] };
|
|
44
|
+
}
|
|
23
45
|
// ── API client ────────────────────────────────────────────────────────
|
|
24
46
|
// The explicit return type is load-bearing: `createClient` returns an anonymous
|
|
25
47
|
// class with private fields, which TypeScript refuses to export inferentially
|
package/dist/http.js.map
CHANGED
|
@@ -1 +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"}
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -41,9 +41,12 @@
|
|
|
41
41
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
42
42
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
43
43
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
44
|
-
import {
|
|
44
|
+
import { BOARD_TOOLS, handleBoardAsMarkdown } from "./board.js";
|
|
45
|
+
import { FACTORY_HELP_GUIDANCE } from "./factory-guidance.js";
|
|
46
|
+
import { brandScopeMismatch } from "./brand-scope.js";
|
|
45
47
|
import { del204, err, getJson, getText, ok, postJson } from "./http.js";
|
|
46
48
|
import { FLEET_TOOLS, handleFleetList, handleFleetLogins, handleSlotGet, handleSlotHealth, handleSlotOrder, } from "./fleet.js";
|
|
49
|
+
import { handleWhoami } from "./whoami.js";
|
|
47
50
|
import { readFileSync } from "node:fs";
|
|
48
51
|
import { fileURLToPath } from "node:url";
|
|
49
52
|
import { dirname, join } from "node:path";
|
|
@@ -255,7 +258,10 @@ const TOOLS = [
|
|
|
255
258
|
params: {
|
|
256
259
|
type: "object",
|
|
257
260
|
description: "Method parameters. The runtime forwarder splits these into path/query/body " +
|
|
258
|
-
"based on the skill's schema. Never set `brand_id`
|
|
261
|
+
"based on the skill's schema. Never set `brand_id`, `workspace`, `workspace_slug` " +
|
|
262
|
+
"or `brand` here — an OPVS-internal skill always answers for the brand this PAT " +
|
|
263
|
+
"is pinned to, and a value naming a DIFFERENT brand is refused rather than " +
|
|
264
|
+
"silently answered for the wrong one. To reach another brand, use a token for it.",
|
|
259
265
|
additionalProperties: true,
|
|
260
266
|
},
|
|
261
267
|
},
|
|
@@ -354,40 +360,7 @@ const TOOLS = [
|
|
|
354
360
|
properties: {},
|
|
355
361
|
},
|
|
356
362
|
},
|
|
357
|
-
|
|
358
|
-
name: "board_as_markdown",
|
|
359
|
-
description: "Read a WHOLE AgentBoard (or a chosen subset of its columns) as a single " +
|
|
360
|
-
"Markdown plan/PRD document — one call instead of N task fetches. Cheaper on " +
|
|
361
|
-
"tokens and gives narrative context, not raw rows. Returns the rendered " +
|
|
362
|
-
"Markdown string verbatim (read-only, deterministic — same board state → same " +
|
|
363
|
-
"bytes, each task row carries an HTML comment with its UUID for diffing). " +
|
|
364
|
-
"Brand is pinned server-side from the PAT — never pass a brand_id. Pick `detail`: " +
|
|
365
|
-
"`summary` = compact one-row-per-task table (token-cheapest); `standard` " +
|
|
366
|
-
"(default) = the nested plan format with task bodies, subtasks and stages; " +
|
|
367
|
-
"`full` = the exhaustive dump including comments.",
|
|
368
|
-
inputSchema: {
|
|
369
|
-
type: "object",
|
|
370
|
-
properties: {
|
|
371
|
-
board_id: {
|
|
372
|
-
type: "string",
|
|
373
|
-
description: "The board UUID to render.",
|
|
374
|
-
},
|
|
375
|
-
detail: {
|
|
376
|
-
type: "string",
|
|
377
|
-
enum: ["summary", "standard", "full"],
|
|
378
|
-
description: "Render depth. Default `standard` (the nested plan/PRD shape). " +
|
|
379
|
-
"`summary` is the compact table; `full` adds comments.",
|
|
380
|
-
},
|
|
381
|
-
columns: {
|
|
382
|
-
type: "string",
|
|
383
|
-
description: "Optional comma-separated column filter — names OR ids, mixed. Each token " +
|
|
384
|
-
"is resolved name-first-then-id; an unknown token fails loud (400). Omit to " +
|
|
385
|
-
"render every column.",
|
|
386
|
-
},
|
|
387
|
-
},
|
|
388
|
-
required: ["board_id"],
|
|
389
|
-
},
|
|
390
|
-
},
|
|
363
|
+
...BOARD_TOOLS,
|
|
391
364
|
{
|
|
392
365
|
name: "sandbox_chat",
|
|
393
366
|
description: "VENDOR TEST MODE — live-chat your marketplace sandbox test agent through the " +
|
|
@@ -512,22 +485,6 @@ function isBoardFactorySkill(refName, data) {
|
|
|
512
485
|
return true;
|
|
513
486
|
return /agentboard|\bboard\b/.test(refName.toLowerCase());
|
|
514
487
|
}
|
|
515
|
-
/** Routing nudge for board/factory skills (GS.2). A POINTER to the canonical
|
|
516
|
-
* sources (the SKILL.md `description` section + its references index + the live
|
|
517
|
-
* claimTask/getRunnable `_guidance` envelopes), carrying the few platform
|
|
518
|
-
* invariants an MCP agent needs at decision time so it can't drive a factory
|
|
519
|
-
* board blind. Deliberately terse — the full recipe is run-a-factory-board.md,
|
|
520
|
-
* surfaced via section='description'; this never restates it. */
|
|
521
|
-
const FACTORY_HELP_GUIDANCE = "#use:board/DAG/factory task pipelines. " +
|
|
522
|
-
"#read:section='description' for the operating model + references index (the " +
|
|
523
|
-
"run-a-factory-board recipe). " +
|
|
524
|
-
"#factory:new cards land in Backlog (staging, NOT claimable) → move to Ready " +
|
|
525
|
-
"(claimable by role 'builder') → a worker claims and it auto-moves to Executing. " +
|
|
526
|
-
"A factory board runs NOTHING until an opvs-sidecar worker is pointed at its " +
|
|
527
|
-
"board_id; set a `mode:` label (auto|assisted|manual) per card for build autonomy. " +
|
|
528
|
-
"#next:the live claimTask + getRunnable responses carry their own `_guidance` " +
|
|
529
|
-
"envelope (e.g. a claim that returns task_id:null+reason is a worker misconfig, " +
|
|
530
|
-
"not no-work) — read it.";
|
|
531
488
|
/** Inject the factory `_guidance` sibling into a tool_help payload when the
|
|
532
489
|
* descriptor is a board/factory skill. Object bodies only; never wraps. */
|
|
533
490
|
function okWithFactoryGuidance(body, refName, data) {
|
|
@@ -662,6 +619,13 @@ async function handleToolCall(args) {
|
|
|
662
619
|
return err(`skill '${args.skill}' not installed on this brand`, "#audit.error:skill=not-installed " +
|
|
663
620
|
"#next:try tool_search to discover candidates → tool_install to add one.");
|
|
664
621
|
}
|
|
622
|
+
const mismatch = brandScopeMismatch(resolved.vendor, args.params);
|
|
623
|
+
if (mismatch) {
|
|
624
|
+
return err(`tool_call refused: ${mismatch}`, "#audit.error:brand-scope-mismatch " +
|
|
625
|
+
"#next:switch the token's workspace (`opvs workspace use <slug>`, or a PAT " +
|
|
626
|
+
"for that brand) and re-call — or drop the parameter to accept this brand. " +
|
|
627
|
+
"#dont:do not read this answer as being about the workspace you named.");
|
|
628
|
+
}
|
|
665
629
|
// W2.0.A — resolve the URL skill segment from `manifest.skills[].id`, not the
|
|
666
630
|
// package name. Three branches when input is @vendor/name. Bare-name inputs
|
|
667
631
|
// pass through as-is (existing behaviour where sub-skill id == package name).
|
|
@@ -770,63 +734,6 @@ async function handleToolUninstall(args) {
|
|
|
770
734
|
return err(`tool_uninstall failed: ${error.status ?? "?"} ${error.detail ?? ""}`, "#audit.error:uninstall");
|
|
771
735
|
}
|
|
772
736
|
}
|
|
773
|
-
async function handleWhoami() {
|
|
774
|
-
try {
|
|
775
|
-
const cfg = getEffectiveConfig();
|
|
776
|
-
const me = await getJson("/api/v1/auth/me");
|
|
777
|
-
return ok({
|
|
778
|
-
api_url: cfg.api_url,
|
|
779
|
-
workspace: cfg.workspace_slug ?? null,
|
|
780
|
-
brand_id: cfg.brand_id ?? null,
|
|
781
|
-
identity: me,
|
|
782
|
-
_guidance: cfg.brand_id != null
|
|
783
|
-
? `#audit.ok:brand_id=${cfg.brand_id} workspace=${cfg.workspace_slug ?? "?"}`
|
|
784
|
-
: "#audit.warn:brand=missing — this PAT isn't brand-scoped; brand-pinned " +
|
|
785
|
-
"tools (tool_call, tool_list_installed) will refuse. Run `opvs auth request` " +
|
|
786
|
-
"with a brand-scoped workspace.",
|
|
787
|
-
});
|
|
788
|
-
}
|
|
789
|
-
catch (e) {
|
|
790
|
-
const error = e;
|
|
791
|
-
return err(`whoami failed: ${error.status ?? "?"} ${error.detail ?? ""}`, "#audit.error:auth — PAT may be missing or expired. Run `opvs auth request`.");
|
|
792
|
-
}
|
|
793
|
-
}
|
|
794
|
-
async function handleBoardAsMarkdown(args) {
|
|
795
|
-
if (!args.board_id || typeof args.board_id !== "string") {
|
|
796
|
-
return err("board_id is required", "#audit.error:input=missing — board_as_markdown needs the board UUID. " +
|
|
797
|
-
"Use tool_call(@opvs-ai/agentboard, list_boards) to find one.");
|
|
798
|
-
}
|
|
799
|
-
if (args.detail != null &&
|
|
800
|
-
!["summary", "standard", "full"].includes(args.detail)) {
|
|
801
|
-
return err(`invalid detail '${args.detail}'`, "#audit.error:input=bad-detail — detail must be summary | standard | full. " +
|
|
802
|
-
"#next:omit it for the default (standard).");
|
|
803
|
-
}
|
|
804
|
-
// Mirror the export contract: format=md is fixed; detail/columns are forwarded
|
|
805
|
-
// only when the caller set them (don't synthesize defaults — let the backend
|
|
806
|
-
// own them; LEARNINGS #38, the silent-drop tax cuts both ways).
|
|
807
|
-
const q = new URLSearchParams({ format: "md" });
|
|
808
|
-
if (args.detail)
|
|
809
|
-
q.set("detail", args.detail);
|
|
810
|
-
if (args.columns)
|
|
811
|
-
q.set("columns", args.columns);
|
|
812
|
-
const path = `/api/v1/board/boards/${encodeURIComponent(args.board_id)}/export?${q.toString()}`;
|
|
813
|
-
try {
|
|
814
|
-
const md = await getText(path);
|
|
815
|
-
return ok(md);
|
|
816
|
-
}
|
|
817
|
-
catch (e) {
|
|
818
|
-
const error = e;
|
|
819
|
-
if (error.status === 400) {
|
|
820
|
-
return err(`board_as_markdown: ${error.detail ?? "bad request"}`, "#audit.error:bad-columns — an unknown column name/id was passed. " +
|
|
821
|
-
"#next:tool_call(@opvs-ai/agentboard, list_columns) to see valid columns, or omit `columns`.");
|
|
822
|
-
}
|
|
823
|
-
if (error.status === 404) {
|
|
824
|
-
return err(`board '${args.board_id}' not found (or not visible to this brand)`, "#audit.error:board=missing #next:whoami to confirm the PAT's brand; " +
|
|
825
|
-
"tool_call(@opvs-ai/agentboard, list_boards) to list boards.");
|
|
826
|
-
}
|
|
827
|
-
return err(`board_as_markdown failed: ${error.status ?? "?"} ${error.detail ?? ""}`, "#audit.error:upstream #next:whoami to verify auth/brand; check the board_id.");
|
|
828
|
-
}
|
|
829
|
-
}
|
|
830
737
|
async function handleSandboxChat(args) {
|
|
831
738
|
if (!args.vendor || !args.message) {
|
|
832
739
|
return err("vendor and message are required", "#audit.error:input=missing — sandbox_chat needs your vendor id and a message. " +
|
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/dist/whoami.d.ts
ADDED
package/dist/whoami.js
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `whoami` — the auth probe that surfaces who the MCP server thinks it is.
|
|
3
|
+
*
|
|
4
|
+
* Lives outside `index.ts` because that file ends in a top-level
|
|
5
|
+
* `await server.connect(transport)` — importing it to unit-test a handler would
|
|
6
|
+
* start a server. Same reasoning as `board.ts` and `fleet.ts` (OSB-119,
|
|
7
|
+
* OSB-207).
|
|
8
|
+
*
|
|
9
|
+
* Two failure shapes that share the response envelope but mean very different
|
|
10
|
+
* things — keep them apart so an agent that reads the message can act on it
|
|
11
|
+
* (PC-249 / OD-327):
|
|
12
|
+
*
|
|
13
|
+
* no_credentials_found `OPVS_TOKEN` is unset AND no `~/.opvs/config.json`
|
|
14
|
+
* has a token. The fix is to mint a token or inject
|
|
15
|
+
* one as an env var.
|
|
16
|
+
*
|
|
17
|
+
* upstream_401 (etc.) a token WAS presented but the server refused it.
|
|
18
|
+
* The fix is to mint a fresh token, not to set the
|
|
19
|
+
* env var — the env var is already there.
|
|
20
|
+
*
|
|
21
|
+
* The old code collapsed both into `whoami failed: ? ` and blamed an expired
|
|
22
|
+
* token, which sent the operator down the wrong path. The 401-vs-missing split
|
|
23
|
+
* is the whole reason this module exists alongside the auth fix in
|
|
24
|
+
* `@opvs-ai/core`'s `getEffectiveConfig`.
|
|
25
|
+
*/
|
|
26
|
+
import { getEffectiveConfig } from "@opvs-ai/core";
|
|
27
|
+
import { errFields, getJson, ok } from "./http.js";
|
|
28
|
+
const NO_CREDENTIALS_DETAIL = "no credentials found (set OPVS_TOKEN or run opvs auth)";
|
|
29
|
+
/**
|
|
30
|
+
* Plain-Error-from-config vs APIError-from-upstream. `getEffectiveConfig` now
|
|
31
|
+
* throws with `status` and `detail` when no credential source exists, but
|
|
32
|
+
* earlier callers or earlier versions still produce a vanilla `Error`. The
|
|
33
|
+
* "no token source" check below reads `detail` so both shapes are recognized.
|
|
34
|
+
*/
|
|
35
|
+
function isNoCredentialsError(e) {
|
|
36
|
+
if (!e || typeof e !== "object")
|
|
37
|
+
return false;
|
|
38
|
+
const err = e;
|
|
39
|
+
const detail = typeof err.detail === "string" ? err.detail : "";
|
|
40
|
+
const message = typeof err.message === "string" ? err.message : "";
|
|
41
|
+
return (detail.includes("no credentials found") || message.includes("no credentials found"));
|
|
42
|
+
}
|
|
43
|
+
export async function handleWhoami() {
|
|
44
|
+
let cfg;
|
|
45
|
+
try {
|
|
46
|
+
cfg = getEffectiveConfig();
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
if (isNoCredentialsError(e)) {
|
|
50
|
+
return errFields("no credentials found", { code: "no_credentials_found", status: 401 }, "#audit.error:no-credentials — no credential source was found. " +
|
|
51
|
+
"Set OPVS_TOKEN (and OPVS_API_URL if not https://app.opvs.ai), or " +
|
|
52
|
+
"run `opvs auth request` to write ~/.opvs/config.json. Looked at " +
|
|
53
|
+
"OPVS_TOKEN and ~/.opvs/config.json; both were empty.");
|
|
54
|
+
}
|
|
55
|
+
throw e;
|
|
56
|
+
}
|
|
57
|
+
// A configured workspace with an EMPTY stored token is returned by core with
|
|
58
|
+
// token "" (so `opvs auth status` can say "Not authenticated"); for whoami it
|
|
59
|
+
// is the same "no credentials" answer, and no request is sent.
|
|
60
|
+
if (!cfg.token) {
|
|
61
|
+
return errFields("no credentials found", { code: "no_credentials_found", status: 401 }, "#audit.error:no-credentials — no credential source was found. " +
|
|
62
|
+
"Set OPVS_TOKEN (and OPVS_API_URL if not https://app.opvs.ai), or " +
|
|
63
|
+
"run `opvs auth request` to write ~/.opvs/config.json. Looked at " +
|
|
64
|
+
"OPVS_TOKEN and ~/.opvs/config.json; both were empty.");
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
const me = await getJson("/api/v1/auth/me");
|
|
68
|
+
return ok({
|
|
69
|
+
api_url: cfg.api_url,
|
|
70
|
+
workspace: cfg.workspace_slug ?? null,
|
|
71
|
+
brand_id: cfg.brand_id ?? null,
|
|
72
|
+
identity: me,
|
|
73
|
+
_guidance: cfg.brand_id != null
|
|
74
|
+
? `#audit.ok:brand_id=${cfg.brand_id} workspace=${cfg.workspace_slug ?? "?"}`
|
|
75
|
+
: "#audit.warn:brand=missing — this PAT isn't brand-scoped; brand-pinned " +
|
|
76
|
+
"tools (tool_call, tool_list_installed) will refuse. Run `opvs auth request` " +
|
|
77
|
+
"with a brand-scoped workspace.",
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
const error = e;
|
|
82
|
+
const status = typeof error.status === "number" ? error.status : null;
|
|
83
|
+
const detail = (error.detail ?? "").trim();
|
|
84
|
+
// Surface status + body so an agent can read what the server actually said.
|
|
85
|
+
// The old format `${error.status ?? "?"} ${error.detail ?? ""}` produced
|
|
86
|
+
// `whoami failed: ? ` for any thrown value that lacked `status` AND
|
|
87
|
+
// `detail` — the swallowing this card fixes (F5).
|
|
88
|
+
const fields = {
|
|
89
|
+
status,
|
|
90
|
+
body: error.body ?? null,
|
|
91
|
+
};
|
|
92
|
+
if (status === 401) {
|
|
93
|
+
fields.code = "auth_rejected";
|
|
94
|
+
return errFields(`whoami failed: ${status} ${detail}`, fields, "#audit.error:auth-rejected — the server refused the token (401). " +
|
|
95
|
+
"Mint a fresh one with `opvs auth request`. The PAT may be wrong, " +
|
|
96
|
+
"expired, or for a different brand.");
|
|
97
|
+
}
|
|
98
|
+
if (status != null) {
|
|
99
|
+
fields.code = "upstream_error";
|
|
100
|
+
return errFields(`whoami failed: ${status} ${detail}`, fields, "#audit.error:upstream — see `body` for what the server returned. " +
|
|
101
|
+
"Confirm OPVS_API_URL points at a healthy gateway.");
|
|
102
|
+
}
|
|
103
|
+
// No status at all: the request never reached a status line. Either the
|
|
104
|
+
// transport failed (network/DNS/timeout) or a non-APIError was thrown.
|
|
105
|
+
fields.code = "transport_error";
|
|
106
|
+
return errFields(`whoami failed: ? ${detail}`, fields, "#audit.error:transport — no HTTP status reached this client. Check " +
|
|
107
|
+
"OPVS_API_URL is reachable. The PAT may also be missing — see the " +
|
|
108
|
+
"no-credentials guidance.");
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=whoami.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../src/whoami.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opvs-ai/mcp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.8.1",
|
|
4
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"
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
|
-
"build": "tsc",
|
|
10
|
+
"build": "tsc && node ../../scripts/dist-stale.mjs stamp",
|
|
11
11
|
"dev": "tsx src/index.ts",
|
|
12
12
|
"start": "node dist/index.js",
|
|
13
13
|
"list-tools": "node scripts/list-tools.mjs",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
20
|
-
"@opvs-ai/core": "^0.4.
|
|
20
|
+
"@opvs-ai/core": "^0.4.8",
|
|
21
21
|
"zod": "^3.23.0"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|