@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 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 `~/.opvs/config.json` (shared with `@opvs-ai/cli`). If you've already run `opvs auth request`, this MCP works immediately. The brand is pinned server-side from the PAT — `tool_call` will refuse if the PAT isn't brand-scoped.
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/architecture/skills-system-reference.md`](../../docs/planning/Marketplace/architecture/skills-system-reference.md#skills-meta) for the gateway-side semantics this MCP mirrors.
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
 
@@ -0,0 +1,9 @@
1
+ {
2
+ "stamp_version": 1,
3
+ "package": "@opvs-ai/mcp",
4
+ "version": "2.8.1",
5
+ "source_digest": "915b24ded903f7fb8c307958d4887fab6fbc99e26f3ee119a0fafe2555809dea",
6
+ "source_files": 8,
7
+ "built_at": "2026-09-29T12:58:00.513Z",
8
+ "node": "v22.23.2"
9
+ }
@@ -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 { getEffectiveConfig } from "@opvs-ai/core";
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` here — it's pinned server-side.",
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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"}
@@ -0,0 +1,2 @@
1
+ import { type ToolResult } from "./http.js";
2
+ export declare function handleWhoami(): Promise<ToolResult>;
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.7.0",
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.6",
20
+ "@opvs-ai/core": "^0.4.8",
21
21
  "zod": "^3.23.0"
22
22
  },
23
23
  "devDependencies": {