@opvs-ai/mcp 2.7.1 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -1
- package/dist/.build-stamp.json +5 -5
- 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/index.d.ts +1 -1
- package/dist/index.js +22 -24
- package/dist/index.js.map +1 -1
- package/dist/memory.d.ts +133 -0
- package/dist/memory.js +286 -0
- package/dist/memory.js.map +1 -0
- package/dist/whoami.d.ts +2 -0
- package/dist/whoami.js +111 -0
- package/dist/whoami.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -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
|
package/dist/.build-stamp.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"stamp_version": 1,
|
|
3
3
|
"package": "@opvs-ai/mcp",
|
|
4
|
-
"version": "2.
|
|
5
|
-
"source_digest": "
|
|
6
|
-
"source_files":
|
|
7
|
-
"built_at": "2026-
|
|
8
|
-
"node": "v22.
|
|
4
|
+
"version": "2.9.0",
|
|
5
|
+
"source_digest": "27c64e5c11cf8bea3bb0d5e9f5cff7dbd564bc0e852ae0c95545b5f57076e683",
|
|
6
|
+
"source_files": 9,
|
|
7
|
+
"built_at": "2026-10-02T07:48:20.537Z",
|
|
8
|
+
"node": "v22.23.3"
|
|
9
9
|
}
|
|
@@ -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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @opvs-ai/mcp — MCP server for the OPVS on-demand model
|
|
4
4
|
*
|
|
5
|
-
* Exposes
|
|
5
|
+
* Exposes 19 tools — the 8 that mirror the gateway's `skills-meta` plugin (so
|
|
6
6
|
* external MCP hosts like Claude Desktop, Cursor, Antigravity and Windsurf get
|
|
7
7
|
* the same surface OPVS-hosted agents see), plus `board_as_markdown` (Topic 1 /
|
|
8
8
|
* S1.4 — a whole AgentBoard as a Markdown plan in one call; it has no
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @opvs-ai/mcp — MCP server for the OPVS on-demand model
|
|
4
4
|
*
|
|
5
|
-
* Exposes
|
|
5
|
+
* Exposes 19 tools — the 8 that mirror the gateway's `skills-meta` plugin (so
|
|
6
6
|
* external MCP hosts like Claude Desktop, Cursor, Antigravity and Windsurf get
|
|
7
7
|
* the same surface OPVS-hosted agents see), plus `board_as_markdown` (Topic 1 /
|
|
8
8
|
* S1.4 — a whole AgentBoard as a Markdown plan in one call; it has no
|
|
@@ -41,11 +41,13 @@
|
|
|
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";
|
|
45
44
|
import { BOARD_TOOLS, handleBoardAsMarkdown } from "./board.js";
|
|
46
45
|
import { FACTORY_HELP_GUIDANCE } from "./factory-guidance.js";
|
|
46
|
+
import { brandScopeMismatch } from "./brand-scope.js";
|
|
47
47
|
import { del204, err, getJson, getText, ok, postJson } from "./http.js";
|
|
48
48
|
import { FLEET_TOOLS, handleFleetList, handleFleetLogins, handleSlotGet, handleSlotHealth, handleSlotOrder, } from "./fleet.js";
|
|
49
|
+
import { handleWhoami } from "./whoami.js";
|
|
50
|
+
import { MEMORY_TOOLS, handleMemoryContext, handleMemoryRequestPin, handleMemorySearch, } from "./memory.js";
|
|
49
51
|
import { readFileSync } from "node:fs";
|
|
50
52
|
import { fileURLToPath } from "node:url";
|
|
51
53
|
import { dirname, join } from "node:path";
|
|
@@ -257,7 +259,10 @@ const TOOLS = [
|
|
|
257
259
|
params: {
|
|
258
260
|
type: "object",
|
|
259
261
|
description: "Method parameters. The runtime forwarder splits these into path/query/body " +
|
|
260
|
-
"based on the skill's schema. Never set `brand_id`
|
|
262
|
+
"based on the skill's schema. Never set `brand_id`, `workspace`, `workspace_slug` " +
|
|
263
|
+
"or `brand` here — an OPVS-internal skill always answers for the brand this PAT " +
|
|
264
|
+
"is pinned to, and a value naming a DIFFERENT brand is refused rather than " +
|
|
265
|
+
"silently answered for the wrong one. To reach another brand, use a token for it.",
|
|
261
266
|
additionalProperties: true,
|
|
262
267
|
},
|
|
263
268
|
},
|
|
@@ -357,6 +362,7 @@ const TOOLS = [
|
|
|
357
362
|
},
|
|
358
363
|
},
|
|
359
364
|
...BOARD_TOOLS,
|
|
365
|
+
...MEMORY_TOOLS,
|
|
360
366
|
{
|
|
361
367
|
name: "sandbox_chat",
|
|
362
368
|
description: "VENDOR TEST MODE — live-chat your marketplace sandbox test agent through the " +
|
|
@@ -615,6 +621,13 @@ async function handleToolCall(args) {
|
|
|
615
621
|
return err(`skill '${args.skill}' not installed on this brand`, "#audit.error:skill=not-installed " +
|
|
616
622
|
"#next:try tool_search to discover candidates → tool_install to add one.");
|
|
617
623
|
}
|
|
624
|
+
const mismatch = brandScopeMismatch(resolved.vendor, args.params);
|
|
625
|
+
if (mismatch) {
|
|
626
|
+
return err(`tool_call refused: ${mismatch}`, "#audit.error:brand-scope-mismatch " +
|
|
627
|
+
"#next:switch the token's workspace (`opvs workspace use <slug>`, or a PAT " +
|
|
628
|
+
"for that brand) and re-call — or drop the parameter to accept this brand. " +
|
|
629
|
+
"#dont:do not read this answer as being about the workspace you named.");
|
|
630
|
+
}
|
|
618
631
|
// W2.0.A — resolve the URL skill segment from `manifest.skills[].id`, not the
|
|
619
632
|
// package name. Three branches when input is @vendor/name. Bare-name inputs
|
|
620
633
|
// pass through as-is (existing behaviour where sub-skill id == package name).
|
|
@@ -723,27 +736,6 @@ async function handleToolUninstall(args) {
|
|
|
723
736
|
return err(`tool_uninstall failed: ${error.status ?? "?"} ${error.detail ?? ""}`, "#audit.error:uninstall");
|
|
724
737
|
}
|
|
725
738
|
}
|
|
726
|
-
async function handleWhoami() {
|
|
727
|
-
try {
|
|
728
|
-
const cfg = getEffectiveConfig();
|
|
729
|
-
const me = await getJson("/api/v1/auth/me");
|
|
730
|
-
return ok({
|
|
731
|
-
api_url: cfg.api_url,
|
|
732
|
-
workspace: cfg.workspace_slug ?? null,
|
|
733
|
-
brand_id: cfg.brand_id ?? null,
|
|
734
|
-
identity: me,
|
|
735
|
-
_guidance: cfg.brand_id != null
|
|
736
|
-
? `#audit.ok:brand_id=${cfg.brand_id} workspace=${cfg.workspace_slug ?? "?"}`
|
|
737
|
-
: "#audit.warn:brand=missing — this PAT isn't brand-scoped; brand-pinned " +
|
|
738
|
-
"tools (tool_call, tool_list_installed) will refuse. Run `opvs auth request` " +
|
|
739
|
-
"with a brand-scoped workspace.",
|
|
740
|
-
});
|
|
741
|
-
}
|
|
742
|
-
catch (e) {
|
|
743
|
-
const error = e;
|
|
744
|
-
return err(`whoami failed: ${error.status ?? "?"} ${error.detail ?? ""}`, "#audit.error:auth — PAT may be missing or expired. Run `opvs auth request`.");
|
|
745
|
-
}
|
|
746
|
-
}
|
|
747
739
|
async function handleSandboxChat(args) {
|
|
748
740
|
if (!args.vendor || !args.message) {
|
|
749
741
|
return err("vendor and message are required", "#audit.error:input=missing — sandbox_chat needs your vendor id and a message. " +
|
|
@@ -801,6 +793,12 @@ async function handleTool(name, args) {
|
|
|
801
793
|
return handleWhoami();
|
|
802
794
|
case "board_as_markdown":
|
|
803
795
|
return handleBoardAsMarkdown(args);
|
|
796
|
+
case "memory_search":
|
|
797
|
+
return handleMemorySearch(args);
|
|
798
|
+
case "memory_context":
|
|
799
|
+
return handleMemoryContext(args);
|
|
800
|
+
case "memory_request_pin":
|
|
801
|
+
return handleMemoryRequestPin(args);
|
|
804
802
|
case "sandbox_chat":
|
|
805
803
|
return handleSandboxChat(args);
|
|
806
804
|
case "fleet_list":
|
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/memory.d.ts
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { type ToolResult } from "./http.js";
|
|
2
|
+
type SearchArgs = {
|
|
3
|
+
q?: string;
|
|
4
|
+
scope?: string;
|
|
5
|
+
type?: string;
|
|
6
|
+
anchor?: string;
|
|
7
|
+
pinned_first?: boolean;
|
|
8
|
+
include_retired?: boolean;
|
|
9
|
+
};
|
|
10
|
+
type ContextDependencies = {
|
|
11
|
+
repoRoot: (cwd: string) => string;
|
|
12
|
+
readServices: (root: string) => string;
|
|
13
|
+
isFile: (path: string) => boolean;
|
|
14
|
+
getMemory: (path: string) => Promise<unknown>;
|
|
15
|
+
};
|
|
16
|
+
export declare const MEMORY_TOOLS: ({
|
|
17
|
+
name: string;
|
|
18
|
+
description: string;
|
|
19
|
+
inputSchema: {
|
|
20
|
+
type: string;
|
|
21
|
+
properties: {
|
|
22
|
+
q: {
|
|
23
|
+
type: string;
|
|
24
|
+
description: string;
|
|
25
|
+
};
|
|
26
|
+
scope: {
|
|
27
|
+
type: string;
|
|
28
|
+
description: string;
|
|
29
|
+
};
|
|
30
|
+
type: {
|
|
31
|
+
type: string;
|
|
32
|
+
description: string;
|
|
33
|
+
};
|
|
34
|
+
anchor: {
|
|
35
|
+
type: string;
|
|
36
|
+
description: string;
|
|
37
|
+
};
|
|
38
|
+
pinned_first: {
|
|
39
|
+
type: string;
|
|
40
|
+
description: string;
|
|
41
|
+
};
|
|
42
|
+
include_retired: {
|
|
43
|
+
type: string;
|
|
44
|
+
description: string;
|
|
45
|
+
};
|
|
46
|
+
cwd?: undefined;
|
|
47
|
+
char_budget?: undefined;
|
|
48
|
+
entry_id?: undefined;
|
|
49
|
+
reason?: undefined;
|
|
50
|
+
};
|
|
51
|
+
required?: undefined;
|
|
52
|
+
};
|
|
53
|
+
} | {
|
|
54
|
+
name: string;
|
|
55
|
+
description: string;
|
|
56
|
+
inputSchema: {
|
|
57
|
+
type: string;
|
|
58
|
+
properties: {
|
|
59
|
+
cwd: {
|
|
60
|
+
type: string;
|
|
61
|
+
description: string;
|
|
62
|
+
};
|
|
63
|
+
q: {
|
|
64
|
+
type: string;
|
|
65
|
+
description: string;
|
|
66
|
+
};
|
|
67
|
+
scope: {
|
|
68
|
+
type: string;
|
|
69
|
+
description: string;
|
|
70
|
+
};
|
|
71
|
+
type: {
|
|
72
|
+
type: string;
|
|
73
|
+
description: string;
|
|
74
|
+
};
|
|
75
|
+
anchor: {
|
|
76
|
+
type: string;
|
|
77
|
+
description: string;
|
|
78
|
+
};
|
|
79
|
+
include_retired: {
|
|
80
|
+
type: string;
|
|
81
|
+
description: string;
|
|
82
|
+
};
|
|
83
|
+
char_budget: {
|
|
84
|
+
type: string;
|
|
85
|
+
description: string;
|
|
86
|
+
};
|
|
87
|
+
pinned_first?: undefined;
|
|
88
|
+
entry_id?: undefined;
|
|
89
|
+
reason?: undefined;
|
|
90
|
+
};
|
|
91
|
+
required: string[];
|
|
92
|
+
};
|
|
93
|
+
} | {
|
|
94
|
+
name: string;
|
|
95
|
+
description: string;
|
|
96
|
+
inputSchema: {
|
|
97
|
+
type: string;
|
|
98
|
+
properties: {
|
|
99
|
+
entry_id: {
|
|
100
|
+
type: string;
|
|
101
|
+
description: string;
|
|
102
|
+
};
|
|
103
|
+
reason: {
|
|
104
|
+
type: string;
|
|
105
|
+
description: string;
|
|
106
|
+
};
|
|
107
|
+
q?: undefined;
|
|
108
|
+
scope?: undefined;
|
|
109
|
+
type?: undefined;
|
|
110
|
+
anchor?: undefined;
|
|
111
|
+
pinned_first?: undefined;
|
|
112
|
+
include_retired?: undefined;
|
|
113
|
+
cwd?: undefined;
|
|
114
|
+
char_budget?: undefined;
|
|
115
|
+
};
|
|
116
|
+
required: string[];
|
|
117
|
+
};
|
|
118
|
+
})[];
|
|
119
|
+
export declare function handleMemorySearch(args: SearchArgs): Promise<ToolResult>;
|
|
120
|
+
export declare function handleMemoryContext(args: {
|
|
121
|
+
cwd: string;
|
|
122
|
+
q?: string;
|
|
123
|
+
scope?: string;
|
|
124
|
+
type?: string;
|
|
125
|
+
anchor?: string;
|
|
126
|
+
include_retired?: boolean;
|
|
127
|
+
char_budget?: number;
|
|
128
|
+
}, dependencies?: Partial<ContextDependencies>): Promise<ToolResult>;
|
|
129
|
+
export declare function handleMemoryRequestPin(args: {
|
|
130
|
+
entry_id: string;
|
|
131
|
+
reason: string;
|
|
132
|
+
}): Promise<ToolResult>;
|
|
133
|
+
export {};
|
package/dist/memory.js
ADDED
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
/** Read-only typed-memory tools for MCP hosts. */
|
|
2
|
+
import { execFileSync } from "node:child_process";
|
|
3
|
+
import { readFileSync, statSync } from "node:fs";
|
|
4
|
+
import { isAbsolute, relative, resolve } from "node:path";
|
|
5
|
+
import { err, getJson, ok } from "./http.js";
|
|
6
|
+
const DEFAULT_CONTEXT_DEPENDENCIES = {
|
|
7
|
+
repoRoot: (cwd) => execFileSync("git", ["rev-parse", "--show-toplevel"], {
|
|
8
|
+
cwd,
|
|
9
|
+
encoding: "utf8",
|
|
10
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
11
|
+
}).trim(),
|
|
12
|
+
readServices: (root) => readFileSync(resolve(root, "memory", "services.yaml"), "utf8"),
|
|
13
|
+
isFile: (path) => statSync(path).isFile(),
|
|
14
|
+
getMemory: getJson,
|
|
15
|
+
};
|
|
16
|
+
export const MEMORY_TOOLS = [
|
|
17
|
+
{
|
|
18
|
+
name: "memory_search",
|
|
19
|
+
description: "Search the brand's typed memory entries through the OPVS gateway. Read-only. " +
|
|
20
|
+
"Filter by free text, registered service scope, entry type, or repository anchor; " +
|
|
21
|
+
"pinned entries are returned first by default. Brand is pinned by the PAT.",
|
|
22
|
+
inputSchema: {
|
|
23
|
+
type: "object",
|
|
24
|
+
properties: {
|
|
25
|
+
q: { type: "string", description: "Free-text query." },
|
|
26
|
+
scope: { type: "string", description: "Registered scope such as service:agentmemory." },
|
|
27
|
+
type: { type: "string", description: "Typed-memory entry type, such as lesson or decision." },
|
|
28
|
+
anchor: { type: "string", description: "Exact repository-relative file anchor." },
|
|
29
|
+
pinned_first: { type: "boolean", description: "Return pinned entries first. Default true." },
|
|
30
|
+
include_retired: { type: "boolean", description: "Include retired entries. Default false." },
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "memory_context",
|
|
36
|
+
description: "Build compact, pinned-first typed-memory context for a repository working directory. " +
|
|
37
|
+
"Read-only and bounded by a hard character budget so the result is safe to add to a prompt.",
|
|
38
|
+
inputSchema: {
|
|
39
|
+
type: "object",
|
|
40
|
+
properties: {
|
|
41
|
+
cwd: { type: "string", description: "Absolute working directory used to find the repository and service." },
|
|
42
|
+
q: { type: "string", description: "Optional free-text query; never inferred from cwd." },
|
|
43
|
+
scope: { type: "string", description: "Optional registered service scope; otherwise inferred from cwd." },
|
|
44
|
+
type: { type: "string", description: "Optional typed-memory entry type." },
|
|
45
|
+
anchor: { type: "string", description: "Optional exact repository-relative file anchor." },
|
|
46
|
+
include_retired: { type: "boolean", description: "Include retired entries. Default false." },
|
|
47
|
+
char_budget: {
|
|
48
|
+
type: "number",
|
|
49
|
+
description: "Maximum returned characters (1-20000, default 12000).",
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
required: ["cwd"],
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: "memory_request_pin",
|
|
57
|
+
description: "Prepare a human-curator pin request for an existing typed-memory entry. Read-only: " +
|
|
58
|
+
"this verifies the entry through search and returns a proposal; it never sets a pin, " +
|
|
59
|
+
"because pins require an authenticated human dashboard session.",
|
|
60
|
+
inputSchema: {
|
|
61
|
+
type: "object",
|
|
62
|
+
properties: {
|
|
63
|
+
entry_id: { type: "string", description: "Exact typed-memory entry id to propose for pinning." },
|
|
64
|
+
reason: { type: "string", description: "Why this memory should remain permanently visible." },
|
|
65
|
+
},
|
|
66
|
+
required: ["entry_id", "reason"],
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
function searchPath(args) {
|
|
71
|
+
const query = new URLSearchParams();
|
|
72
|
+
for (const key of ["q", "scope", "type", "anchor"]) {
|
|
73
|
+
const value = args[key];
|
|
74
|
+
if (typeof value === "string" && value)
|
|
75
|
+
query.set(key, value);
|
|
76
|
+
}
|
|
77
|
+
query.set("pinned_first", String(args.pinned_first ?? true));
|
|
78
|
+
if (typeof args.include_retired === "boolean") {
|
|
79
|
+
query.set("include_retired", String(args.include_retired));
|
|
80
|
+
}
|
|
81
|
+
return `/api/v1/memory/entries/search?${query.toString()}`;
|
|
82
|
+
}
|
|
83
|
+
function unquote(value) {
|
|
84
|
+
const trimmed = value.trim();
|
|
85
|
+
if (trimmed.length >= 2
|
|
86
|
+
&& ((trimmed.startsWith('"') && trimmed.endsWith('"'))
|
|
87
|
+
|| (trimmed.startsWith("'") && trimmed.endsWith("'")))) {
|
|
88
|
+
return trimmed.slice(1, -1);
|
|
89
|
+
}
|
|
90
|
+
return trimmed;
|
|
91
|
+
}
|
|
92
|
+
function parseServicePatterns(registry) {
|
|
93
|
+
const patterns = [];
|
|
94
|
+
let service;
|
|
95
|
+
let inCodePaths = false;
|
|
96
|
+
for (const line of registry.split(/\r?\n/)) {
|
|
97
|
+
const serviceMatch = line.match(/^ {2}- name:\s*(\S+)\s*$/);
|
|
98
|
+
if (serviceMatch) {
|
|
99
|
+
service = unquote(serviceMatch[1]);
|
|
100
|
+
inCodePaths = false;
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (!service)
|
|
104
|
+
continue;
|
|
105
|
+
const planningMatch = line.match(/^ {4}planning_dir:\s*(.+?)\s*$/);
|
|
106
|
+
if (planningMatch) {
|
|
107
|
+
const planningDir = unquote(planningMatch[1].replace(/\s+#.*$/, ""));
|
|
108
|
+
if (planningDir !== "null")
|
|
109
|
+
patterns.push({ service, pattern: planningDir });
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
if (/^ {4}code_paths:\s*$/.test(line)) {
|
|
113
|
+
inCodePaths = true;
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (/^ {4}\S/.test(line)) {
|
|
117
|
+
inCodePaths = false;
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
if (inCodePaths) {
|
|
121
|
+
const pathMatch = line.match(/^ {6}-\s+(.+?)\s*$/);
|
|
122
|
+
if (pathMatch) {
|
|
123
|
+
const pattern = unquote(pathMatch[1].replace(/\s+#.*$/, ""));
|
|
124
|
+
if (pattern)
|
|
125
|
+
patterns.push({ service, pattern });
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return patterns;
|
|
130
|
+
}
|
|
131
|
+
function globRegex(pattern) {
|
|
132
|
+
const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, "\\$&").replace(/\*+/g, ".*");
|
|
133
|
+
return new RegExp(`^${escaped}${pattern.endsWith("/") ? "" : "$"}`);
|
|
134
|
+
}
|
|
135
|
+
function serviceForPath(path, patterns) {
|
|
136
|
+
const normalized = path.replace(/\\/g, "/").replace(/^\.\//, "");
|
|
137
|
+
let best;
|
|
138
|
+
for (const candidate of patterns) {
|
|
139
|
+
const matches = candidate.pattern.includes("*")
|
|
140
|
+
? globRegex(candidate.pattern).test(normalized)
|
|
141
|
+
: candidate.pattern.endsWith("/")
|
|
142
|
+
? normalized.startsWith(candidate.pattern)
|
|
143
|
+
: normalized === candidate.pattern;
|
|
144
|
+
if (!matches)
|
|
145
|
+
continue;
|
|
146
|
+
if (!best) {
|
|
147
|
+
best = candidate;
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
const candidateWildcard = candidate.pattern.indexOf("*");
|
|
151
|
+
const bestWildcard = best.pattern.indexOf("*");
|
|
152
|
+
const candidatePrefix = candidateWildcard === -1 ? candidate.pattern.length : candidateWildcard;
|
|
153
|
+
const bestPrefix = bestWildcard === -1 ? best.pattern.length : bestWildcard;
|
|
154
|
+
if (candidatePrefix > bestPrefix
|
|
155
|
+
|| (candidatePrefix === bestPrefix && candidate.pattern.length > best.pattern.length)) {
|
|
156
|
+
best = candidate;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return best?.service;
|
|
160
|
+
}
|
|
161
|
+
function entries(payload) {
|
|
162
|
+
if (Array.isArray(payload))
|
|
163
|
+
return payload;
|
|
164
|
+
if (!payload || typeof payload !== "object")
|
|
165
|
+
return [];
|
|
166
|
+
const body = payload;
|
|
167
|
+
for (const key of ["items", "entries", "memories"]) {
|
|
168
|
+
if (Array.isArray(body[key]))
|
|
169
|
+
return body[key];
|
|
170
|
+
}
|
|
171
|
+
return [];
|
|
172
|
+
}
|
|
173
|
+
function isPinned(entry) {
|
|
174
|
+
return entry.pinned === true || entry.is_pinned === true;
|
|
175
|
+
}
|
|
176
|
+
function boundedContext(items, budget) {
|
|
177
|
+
const sorted = items
|
|
178
|
+
.map((entry, index) => ({ entry, index }))
|
|
179
|
+
.sort((a, b) => Number(isPinned(b.entry)) - Number(isPinned(a.entry)) || a.index - b.index)
|
|
180
|
+
.map(({ entry }) => entry);
|
|
181
|
+
const rendered = sorted
|
|
182
|
+
.map((entry) => {
|
|
183
|
+
const id = String(entry.id ?? entry.path ?? "memory");
|
|
184
|
+
const body = [entry.body, entry.content, entry.text, entry.core, entry.summary]
|
|
185
|
+
.find((value) => typeof value === "string") ?? JSON.stringify(entry);
|
|
186
|
+
return `## ${isPinned(entry) ? "[pinned] " : ""}${id}\n${body}`;
|
|
187
|
+
})
|
|
188
|
+
.join("\n\n");
|
|
189
|
+
if (rendered.length <= budget)
|
|
190
|
+
return rendered;
|
|
191
|
+
return budget === 1 ? "…" : `${rendered.slice(0, budget - 1)}…`;
|
|
192
|
+
}
|
|
193
|
+
function normalizeAnchor(anchor, root, deps) {
|
|
194
|
+
const normalized = anchor.replace(/\\/g, "/").replace(/^\.\//, "");
|
|
195
|
+
const file = normalized.split("#", 1)[0];
|
|
196
|
+
if (!file || isAbsolute(normalized) || normalized.split("/").includes("..")) {
|
|
197
|
+
throw new Error("anchor must be a repository-relative file path");
|
|
198
|
+
}
|
|
199
|
+
try {
|
|
200
|
+
if (!deps.isFile(resolve(root, file)))
|
|
201
|
+
throw new Error();
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
throw new Error("anchor must be a repository-relative file path");
|
|
205
|
+
}
|
|
206
|
+
return normalized;
|
|
207
|
+
}
|
|
208
|
+
function contextSearchArgs(args, deps) {
|
|
209
|
+
let root;
|
|
210
|
+
try {
|
|
211
|
+
root = deps.repoRoot(args.cwd);
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
return undefined;
|
|
215
|
+
}
|
|
216
|
+
const result = {
|
|
217
|
+
q: args.q,
|
|
218
|
+
scope: args.scope,
|
|
219
|
+
type: args.type,
|
|
220
|
+
pinned_first: true,
|
|
221
|
+
include_retired: args.include_retired,
|
|
222
|
+
};
|
|
223
|
+
if (args.anchor)
|
|
224
|
+
result.anchor = normalizeAnchor(args.anchor, root, deps);
|
|
225
|
+
if (!result.scope) {
|
|
226
|
+
const rel = relative(root, args.cwd).replace(/\\/g, "/");
|
|
227
|
+
if (rel) {
|
|
228
|
+
const patterns = parseServicePatterns(deps.readServices(root));
|
|
229
|
+
const service = serviceForPath(`${rel.replace(/\/$/, "")}/`, patterns)
|
|
230
|
+
?? serviceForPath(rel, patterns);
|
|
231
|
+
if (service)
|
|
232
|
+
result.scope = `service:${service}`;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return result;
|
|
236
|
+
}
|
|
237
|
+
export async function handleMemorySearch(args) {
|
|
238
|
+
try {
|
|
239
|
+
return ok(await getJson(searchPath(args)));
|
|
240
|
+
}
|
|
241
|
+
catch (e) {
|
|
242
|
+
const error = e;
|
|
243
|
+
return err(`memory_search failed: ${error.status ?? "?"} ${error.detail ?? "unknown"}`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
export async function handleMemoryContext(args, dependencies = {}) {
|
|
247
|
+
if (!args.cwd || typeof args.cwd !== "string")
|
|
248
|
+
return err("cwd is required");
|
|
249
|
+
const budget = args.char_budget ?? 12_000;
|
|
250
|
+
if (!Number.isInteger(budget) || budget < 1 || budget > 20_000) {
|
|
251
|
+
return err("char_budget must be an integer from 1 to 20000");
|
|
252
|
+
}
|
|
253
|
+
const deps = { ...DEFAULT_CONTEXT_DEPENDENCIES, ...dependencies };
|
|
254
|
+
try {
|
|
255
|
+
const searchArgs = contextSearchArgs(args, deps);
|
|
256
|
+
if (!searchArgs)
|
|
257
|
+
return ok("");
|
|
258
|
+
const payload = await deps.getMemory(searchPath(searchArgs));
|
|
259
|
+
return ok(boundedContext(entries(payload), budget));
|
|
260
|
+
}
|
|
261
|
+
catch (e) {
|
|
262
|
+
const error = e;
|
|
263
|
+
return err(`memory_context failed: ${error.status ?? "?"} ${error.detail ?? error.message ?? "unknown"}`);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
export async function handleMemoryRequestPin(args) {
|
|
267
|
+
if (!args.entry_id || !args.reason)
|
|
268
|
+
return err("entry_id and reason are required");
|
|
269
|
+
try {
|
|
270
|
+
const payload = await getJson(searchPath({ q: args.entry_id, pinned_first: true }));
|
|
271
|
+
const match = entries(payload).find((entry) => entry.id === args.entry_id || entry.path === args.entry_id);
|
|
272
|
+
if (!match)
|
|
273
|
+
return err(`memory entry '${args.entry_id}' was not found`);
|
|
274
|
+
return ok({
|
|
275
|
+
request: { entry_id: args.entry_id, reason: args.reason },
|
|
276
|
+
persisted: false,
|
|
277
|
+
_guidance: "Ask a human curator to approve this pin in the AgentMemory dashboard. " +
|
|
278
|
+
"This read-only MCP tool did not change pin state.",
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
catch (e) {
|
|
282
|
+
const error = e;
|
|
283
|
+
return err(`memory_request_pin failed: ${error.status ?? "?"} ${error.detail ?? "unknown"}`);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAmB,MAAM,WAAW,CAAC;AAoB9D,MAAM,4BAA4B,GAAwB;IACxD,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAChB,YAAY,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE;QACpD,GAAG;QACH,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;KACpC,CAAC,CAAC,IAAI,EAAE;IACX,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC;IACtF,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;IACzC,SAAS,EAAE,OAAO;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,+EAA+E;YAC/E,mFAAmF;YACnF,2EAA2E;QAC7E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;gBACtD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE;gBACvF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sDAAsD,EAAE;gBAC7F,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBACjF,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,4CAA4C,EAAE;gBAC5F,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,yCAAyC,EAAE;aAC7F;SACF;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,uFAAuF;YACvF,4FAA4F;QAC9F,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qEAAqE,EAAE;gBAC3G,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oDAAoD,EAAE;gBACxF,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iEAAiE,EAAE;gBACzG,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;gBAC1E,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iDAAiD,EAAE;gBAC1F,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,yCAAyC,EAAE;gBAC5F,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uDAAuD;iBACrE;aACF;YACD,QAAQ,EAAE,CAAC,KAAK,CAAC;SAClB;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,qFAAqF;YACrF,sFAAsF;YACtF,gEAAgE;QAClE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qDAAqD,EAAE;gBAChG,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oDAAoD,EAAE;aAC9F;YACD,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;SACjC;KACF;CACF,CAAC;AAEF,SAAS,UAAU,CAAC,IAAgB;IAClC,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;IACpC,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAU,EAAE,CAAC;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC;IAC7D,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAC9C,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,iCAAiC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC7D,CAAC;AAED,SAAS,OAAO,CAAC,KAAa;IAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IACE,OAAO,CAAC,MAAM,IAAI,CAAC;WAChB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;eACjD,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EACxD,CAAC;QACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,IAAI,OAA2B,CAAC;IAChC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC5D,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,WAAW,GAAG,KAAK,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACnE,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YACrE,IAAI,WAAW,KAAK,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YAC7E,SAAS;QACX,CAAC;QACD,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,WAAW,GAAG,IAAI,CAAC;YACnB,SAAS;QACX,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,WAAW,GAAG,KAAK,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACnD,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC7D,IAAI,OAAO;oBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACpF,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,QAA0B;IAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACjE,IAAI,IAAgC,CAAC;IACrC,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC7C,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;YAC/C,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAC/B,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC;gBAC1C,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,OAAO,CAAC;QACvC,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,SAAS,CAAC;YACjB,SAAS;QACX,CAAC;QACD,MAAM,iBAAiB,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACzD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,eAAe,GAAG,iBAAiB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAChG,MAAM,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;QAC5E,IACE,eAAe,GAAG,UAAU;eACzB,CAAC,eAAe,KAAK,UAAU,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EACrF,CAAC;YACD,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,EAAE,OAAO,CAAC;AACvB,CAAC;AAED,SAAS,OAAO,CAAC,OAAgB;IAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,OAAkB,CAAC;IACtD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,OAAkC,CAAC;IAChD,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC;QACnD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,CAAY,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAY;IAC5B,OAAO,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;AAC3D,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,MAAc;IACpD,MAAM,MAAM,GAAG,KAAK;SACjB,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;SACzC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;SAC1F,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,QAAQ,GAAG,MAAM;SACpB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;aAC5E,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC;IAClE,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAC;IAChB,IAAI,QAAQ,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,QAAQ,CAAC;IAC/C,OAAO,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;AAClE,CAAC;AAED,SAAS,eAAe,CAAC,MAAc,EAAE,IAAY,EAAE,IAAyB;IAC9E,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,EAAE,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,iBAAiB,CACxB,IAOC,EACD,IAAyB;IAEzB,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAe;QACzB,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,IAAI,CAAC,eAAe;KACtC,CAAC;IACF,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,CAAC,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1E,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACzD,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC;mBACjE,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACnC,IAAI,OAAO;gBAAE,MAAM,CAAC,KAAK,GAAG,WAAW,OAAO,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAgB;IACvD,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,CAAyC,CAAC;QACxD,OAAO,GAAG,CAAC,yBAAyB,KAAK,CAAC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAQC,EACD,eAA6C,EAAE;IAE/C,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,MAAM,EAAE,CAAC;QAC/D,OAAO,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,GAAG,4BAA4B,EAAE,GAAG,YAAY,EAAE,CAAC;IAClE,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;QAC7D,OAAO,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,CAA2D,CAAC;QAC1E,OAAO,GAAG,CACR,0BAA0B,KAAK,CAAC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,SAAS,EAAE,CAC9F,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAG5C;IACC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,GAAG,CAAC,kCAAkC,CAAC,CAAC;IACnF,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACpF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CACjC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CACtE,CAAC;QACF,IAAI,CAAC,KAAK;YAAE,OAAO,GAAG,CAAC,iBAAiB,IAAI,CAAC,QAAQ,iBAAiB,CAAC,CAAC;QACxE,OAAO,EAAE,CAAC;YACR,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACzD,SAAS,EAAE,KAAK;YAChB,SAAS,EACP,wEAAwE;gBACxE,mDAAmD;SACtD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,CAAyC,CAAC;QACxD,OAAO,GAAG,CACR,8BAA8B,KAAK,CAAC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE,CACjF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
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,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opvs-ai/mcp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.9.0",
|
|
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": {
|