@corenel/mcp 0.5.1 → 0.6.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/dist/asAgentTools.d.ts +13 -1
- package/dist/asAgentTools.d.ts.map +1 -1
- package/dist/asAgentTools.js +2 -2
- package/dist/asAgentTools.js.map +1 -1
- package/dist/auth.d.ts +2 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +23 -7
- package/dist/auth.js.map +1 -1
- package/dist/config.d.ts +29 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +279 -64
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/oauth/login.d.ts +4 -0
- package/dist/oauth/login.d.ts.map +1 -1
- package/dist/oauth/login.js +2 -2
- package/dist/oauth/login.js.map +1 -1
- package/dist/portTools.d.ts +3 -0
- package/dist/portTools.d.ts.map +1 -0
- package/dist/portTools.js +36 -0
- package/dist/portTools.js.map +1 -0
- package/dist/registry.d.ts +22 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +102 -6
- package/dist/registry.js.map +1 -1
- package/dist/url.d.ts +2 -0
- package/dist/url.d.ts.map +1 -0
- package/dist/url.js +23 -0
- package/dist/url.js.map +1 -0
- package/package.json +5 -5
package/dist/asAgentTools.d.ts
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
|
-
import type { AgentTool } from '@corenel/protocol';
|
|
1
|
+
import type { AgentTool, JsonSchema } from '@corenel/protocol';
|
|
2
2
|
import type { McpRegistry } from './registry';
|
|
3
|
+
/** `McpTool.inputSchema` is `unknown` -- some servers send no schema at all,
|
|
4
|
+
* or something that isn't a JSON Schema object. Never pass that through as
|
|
5
|
+
* `undefined`: an `AgentTool` with no `parameters` is one a model can call
|
|
6
|
+
* with any arguments at all, which is worse than an (accurate) empty one. */
|
|
7
|
+
export declare function toParameters(inputSchema: unknown): JsonSchema;
|
|
8
|
+
/** MCP's `tools/call` result content is `unknown` by the time it reaches
|
|
9
|
+
* here (httpClient.ts passes the JSON-RPC `result.content` through as-is).
|
|
10
|
+
* The common shape per the MCP spec is an array of content blocks
|
|
11
|
+
* (`{ type: 'text', text }` and friends); join the text blocks the way the
|
|
12
|
+
* model expects a tool result to read, and fall back to JSON for anything
|
|
13
|
+
* that isn't that shape rather than losing the payload. */
|
|
14
|
+
export declare function formatContent(content: unknown): string;
|
|
3
15
|
/** Build one `AgentTool` per registry entry, in the registry's order.
|
|
4
16
|
*
|
|
5
17
|
* A server/tool pair whose name can't be safely packed into a wire name
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asAgentTools.d.ts","sourceRoot":"","sources":["../src/asAgentTools.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"asAgentTools.d.ts","sourceRoot":"","sources":["../src/asAgentTools.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ9C;;;8EAG8E;AAC9E,wBAAgB,YAAY,CAAC,WAAW,EAAE,OAAO,GAAG,UAAU,CAG7D;AAED;;;;;4DAK4D;AAC5D,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAWtD;AAED;;;;;;;oDAOoD;AACpD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,EAAE,CAa/D"}
|
package/dist/asAgentTools.js
CHANGED
|
@@ -6,7 +6,7 @@ function isPlainObject(v) {
|
|
|
6
6
|
* or something that isn't a JSON Schema object. Never pass that through as
|
|
7
7
|
* `undefined`: an `AgentTool` with no `parameters` is one a model can call
|
|
8
8
|
* with any arguments at all, which is worse than an (accurate) empty one. */
|
|
9
|
-
function toParameters(inputSchema) {
|
|
9
|
+
export function toParameters(inputSchema) {
|
|
10
10
|
if (isPlainObject(inputSchema))
|
|
11
11
|
return inputSchema;
|
|
12
12
|
return { type: 'object', properties: {} };
|
|
@@ -17,7 +17,7 @@ function toParameters(inputSchema) {
|
|
|
17
17
|
* (`{ type: 'text', text }` and friends); join the text blocks the way the
|
|
18
18
|
* model expects a tool result to read, and fall back to JSON for anything
|
|
19
19
|
* that isn't that shape rather than losing the payload. */
|
|
20
|
-
function formatContent(content) {
|
|
20
|
+
export function formatContent(content) {
|
|
21
21
|
if (typeof content === 'string')
|
|
22
22
|
return content;
|
|
23
23
|
if (Array.isArray(content)) {
|
package/dist/asAgentTools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asAgentTools.js","sourceRoot":"","sources":["../src/asAgentTools.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEhF,SAAS,aAAa,CAAC,CAAU;IAC/B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;;8EAG8E;AAC9E,
|
|
1
|
+
{"version":3,"file":"asAgentTools.js","sourceRoot":"","sources":["../src/asAgentTools.ts"],"names":[],"mappings":"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"}
|
package/dist/auth.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type McpCredentialSlot } from './config';
|
|
1
2
|
import type { McpServer } from './types';
|
|
2
3
|
/** True when `url` is an https URL on the ORIGIN of one of `bases` and its path
|
|
3
4
|
* is a hosted-relay path (`.../mcp/hosted/<name>`). Origin, not suffix: a
|
|
@@ -31,5 +32,5 @@ export interface AuthProvider {
|
|
|
31
32
|
* a stub without a real socket -- production callers (Task 6) pass none and
|
|
32
33
|
* get the real network.
|
|
33
34
|
*/
|
|
34
|
-
export declare function authProviderFor(stateDir: string, server: McpServer, fetchImpl?: typeof fetch, accountToken?: () => Promise<string | null>, relayBases?: () => Promise<readonly string[]>, devApiBases?: readonly string[]): AuthProvider;
|
|
35
|
+
export declare function authProviderFor(stateDir: string, server: McpServer, fetchImpl?: typeof fetch, accountToken?: () => Promise<string | null>, relayBases?: () => Promise<readonly string[]>, devApiBases?: readonly string[], slot?: McpCredentialSlot): AuthProvider;
|
|
35
36
|
//# sourceMappingURL=auth.d.ts.map
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAsE,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACtH,OAAO,KAAK,EAAE,SAAS,EAAsB,MAAM,SAAS,CAAC;AAS7D;;;;;;;;+DAQ+D;AAC/D,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,WAAW,GAAE,SAAS,MAAM,EAAO,GAAG,OAAO,CAUrH;AAOD,MAAM,WAAW,YAAY;IAC3B;;;8EAG0E;IAC1E,OAAO,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAC;IACtD;;;mEAG+D;IAC/D,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACpC;AASD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,EACjB,SAAS,GAAE,OAAO,KAAa,EAW/B,YAAY,GAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAoB,EAG7D,UAAU,GAAE,MAAM,OAAO,CAAC,SAAS,MAAM,EAAE,CAAkB,EAG7D,WAAW,GAAE,SAAS,MAAM,EAAO,EAGnC,IAAI,GAAE,iBAA+B,GACpC,YAAY,CAuEd"}
|
package/dist/auth.js
CHANGED
|
@@ -19,16 +19,16 @@
|
|
|
19
19
|
* static header that was just rejected is pure latency, never a fix.
|
|
20
20
|
*
|
|
21
21
|
* This module owns the refresh (`oauth/tokens.ts`) and expiry decision, and
|
|
22
|
-
* persists a refreshed credential back through `
|
|
22
|
+
* persists a refreshed credential back through `replaceMcpCredentialIfUnchanged` before
|
|
23
23
|
* handing out its headers -- Task 6's client must never read or write
|
|
24
24
|
* auth.json itself, or the two would drift the way daemon.json/auth.json
|
|
25
25
|
* already drift when two writers touch one file without a merge (see
|
|
26
26
|
* mcp/config.ts's module comment).
|
|
27
27
|
*/
|
|
28
|
-
import {
|
|
28
|
+
import { readMcpCredentialFor, replaceMcpCredentialIfUnchanged, SERVER_SLOT } from './config.js';
|
|
29
29
|
import { discoverAuthMetadata } from './oauth/discovery.js';
|
|
30
30
|
import { refresh as refreshOAuthToken, isExpired } from './oauth/tokens.js';
|
|
31
|
-
import { DEFAULT_API_BASE } from '@corenel/protocol';
|
|
31
|
+
import { DEFAULT_API_BASE, AGENT_CREDENTIAL_MISSING } from '@corenel/protocol';
|
|
32
32
|
function safeOrigin(url) {
|
|
33
33
|
try {
|
|
34
34
|
return new URL(url).origin;
|
|
@@ -98,19 +98,32 @@ accountToken = async () => null,
|
|
|
98
98
|
relayBases = async () => [],
|
|
99
99
|
/* The source-run dev profile's API base, when the daemon is on it (see
|
|
100
100
|
* isCorenelRelayUrl). Empty in a production run. */
|
|
101
|
-
devApiBases = []
|
|
101
|
+
devApiBases = [],
|
|
102
|
+
/* Whose credential (spec 2026-10-01 Part D). An agent slot reads only that
|
|
103
|
+
* agent's entry and never the server's own. */
|
|
104
|
+
slot = SERVER_SLOT) {
|
|
102
105
|
async function doRefresh(cred) {
|
|
103
106
|
if (!cred.refreshToken) {
|
|
107
|
+
/* An agent's sign-in is its owner's to redo; the server-slot command
|
|
108
|
+
* below would sign the DAEMON in, not the agent. */
|
|
109
|
+
if (slot.kind === 'agent') {
|
|
110
|
+
throw new Error(`${AGENT_CREDENTIAL_MISSING}: the agent credential for MCP server "${server.name}" has expired and has no refresh token; the agent's owner must sign the agent in again.`);
|
|
111
|
+
}
|
|
104
112
|
throw new Error(`"${server.name}" has no refresh token on file -- run: corenel mcp login ${server.name}`);
|
|
105
113
|
}
|
|
106
114
|
const meta = await discoverAuthMetadata(cred.authServer, fetchImpl);
|
|
107
115
|
const refreshed = await refreshOAuthToken(meta, cred, fetchImpl);
|
|
108
|
-
|
|
116
|
+
/* Written only if the stored credential is still the one refreshed: a
|
|
117
|
+
* clear or replace that landed while the refresh was in flight wins, and
|
|
118
|
+
* this refreshed token (of the old credential) is discarded. */
|
|
119
|
+
if (!(await replaceMcpCredentialIfUnchanged(stateDir, server.name, slot, cred, refreshed))) {
|
|
120
|
+
throw new Error(`The credential for MCP server "${server.name}" changed while it was being refreshed; retry the call.`);
|
|
121
|
+
}
|
|
109
122
|
return refreshed;
|
|
110
123
|
}
|
|
111
124
|
return {
|
|
112
125
|
async headers() {
|
|
113
|
-
const cred = await
|
|
126
|
+
const cred = await readMcpCredentialFor(stateDir, server.name, slot);
|
|
114
127
|
/* A HOSTED server may legitimately have no credential yet: the relay is
|
|
115
128
|
* still reachable with the account token alone, and the upstream 401 is
|
|
116
129
|
* what carries the WWW-Authenticate that starts the OAuth flow. A direct
|
|
@@ -122,6 +135,9 @@ devApiBases = []) {
|
|
|
122
135
|
if (server.hosted && !isCorenelRelayUrl(server.url, [DEFAULT_API_BASE, ...(await relayBases())], devApiBases)) {
|
|
123
136
|
throw new Error(`"${server.name}" is marked hosted but ${safeOrigin(server.url)} is not a Corenel relay; refusing to send the account token there.`);
|
|
124
137
|
}
|
|
138
|
+
if (!cred && slot.kind === 'agent') {
|
|
139
|
+
throw new Error(`${AGENT_CREDENTIAL_MISSING}: no agent credential is set for MCP server "${server.name}"`);
|
|
140
|
+
}
|
|
125
141
|
if (!cred && !server.hosted) {
|
|
126
142
|
throw new Error(`No credential stored for MCP server "${server.name}" -- run: corenel mcp login ${server.name} (or set-header, for a static token).`);
|
|
127
143
|
}
|
|
@@ -138,7 +154,7 @@ devApiBases = []) {
|
|
|
138
154
|
return account ? [...moved, { name: 'Authorization', value: `Bearer ${account}` }] : moved;
|
|
139
155
|
},
|
|
140
156
|
async onUnauthorized() {
|
|
141
|
-
const cred = await
|
|
157
|
+
const cred = await readMcpCredentialFor(stateDir, server.name, slot);
|
|
142
158
|
// Nothing to refresh: no credential at all, or a static header --
|
|
143
159
|
// retrying a header the server just rejected fixes nothing.
|
|
144
160
|
if (!cred || cred.kind !== 'oauth')
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -82,4 +82,33 @@ export declare function clearMcpCredential(stateDir: string, server: string): Pr
|
|
|
82
82
|
* registered OAuth client. Called whenever a server is removed. */
|
|
83
83
|
export declare function forgetMcpServerSecrets(stateDir: string, server: string): Promise<void>;
|
|
84
84
|
export declare function writeMcpCredential(stateDir: string, server: string, cred: McpCredential): Promise<void>;
|
|
85
|
+
/** Whose credential a call uses: the server's own (auth.json `mcp`), or one
|
|
86
|
+
* team agent's (auth.json `agents[accessKey]`, spec 2026-10-01 Part D). An
|
|
87
|
+
* agent slot NEVER falls back to the server's: that would be the daemon's
|
|
88
|
+
* credential acting for the agent. */
|
|
89
|
+
export type McpCredentialSlot = {
|
|
90
|
+
kind: 'server';
|
|
91
|
+
} | {
|
|
92
|
+
kind: 'agent';
|
|
93
|
+
accessKey: string;
|
|
94
|
+
};
|
|
95
|
+
export declare const SERVER_SLOT: McpCredentialSlot;
|
|
96
|
+
export declare function readMcpCredentialFor(stateDir: string, server: string, slot: McpCredentialSlot): Promise<McpCredential | null>;
|
|
97
|
+
export declare function writeMcpCredentialFor(stateDir: string, server: string, slot: McpCredentialSlot, cred: McpCredential): Promise<void>;
|
|
98
|
+
/**
|
|
99
|
+
* Write `next` into `slot`'s credential for `server` ONLY if the stored one is
|
|
100
|
+
* still `expected`, in one read-modify-write (Task 9 review fix round 1).
|
|
101
|
+
*
|
|
102
|
+
* A token refresh reads a credential, goes to the network, and writes the
|
|
103
|
+
* result back. If the owner cleared or replaced the credential meanwhile, an
|
|
104
|
+
* unconditional write would bring the revoked one back and persist it. Returns
|
|
105
|
+
* false, writing nothing, when the slot is empty or holds something else.
|
|
106
|
+
* Reads strictly (docForClear): an unreadable auth.json throws, and a missing
|
|
107
|
+
* or corrupt one holds nothing to replace.
|
|
108
|
+
*/
|
|
109
|
+
export declare function replaceMcpCredentialIfUnchanged(stateDir: string, server: string, slot: McpCredentialSlot, expected: McpCredential, next: McpCredential): Promise<boolean>;
|
|
110
|
+
/** Forget one agent's credential for one server. */
|
|
111
|
+
export declare function clearAgentCredential(stateDir: string, accessKey: string, server: string): Promise<void>;
|
|
112
|
+
/** Forget every credential of one agent (the agent was deleted). */
|
|
113
|
+
export declare function clearAgentCredentials(stateDir: string, accessKey: string): Promise<void>;
|
|
85
114
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -20,10 +20,11 @@
|
|
|
20
20
|
* replacing the whole file instead of merging into it would sign the user
|
|
21
21
|
* out (or drop an unrelated server's credential) as a side effect of an
|
|
22
22
|
* MCP write neither operation has any business touching. The other
|
|
23
|
-
* direction of that same merge matters too:
|
|
24
|
-
* `
|
|
25
|
-
* module's `mcp`
|
|
26
|
-
*
|
|
23
|
+
* direction of that same merge matters too: @corenel/tools-node's
|
|
24
|
+
* `writeLoginCredential` (every sign-in) and `clearAllCredentials`
|
|
25
|
+
* (every sign-out) must preserve this module's `mcp`, `mcpClients` and
|
|
26
|
+
* `agents` sections rather than replace or delete the whole file -- see
|
|
27
|
+
* the comments there.
|
|
27
28
|
*
|
|
28
29
|
* 3. readMcpCredential holds a stored entry to the SAME "never partially
|
|
29
30
|
* applied" standard as readMcpServers: `isUsableCredential` checks the
|
|
@@ -31,8 +32,8 @@
|
|
|
31
32
|
* half-written credential reads as absent, not as a broken one handed to
|
|
32
33
|
* a caller.
|
|
33
34
|
*/
|
|
34
|
-
import { readFile,
|
|
35
|
-
import { credentialFilePath, credentialDir } from '@corenel/tools-node';
|
|
35
|
+
import { readFile, mkdir } from 'node:fs/promises';
|
|
36
|
+
import { credentialFilePath, credentialDir, writeFilePrivateAtomic, readAuthDocForWrite, backupCorruptAuthDoc, withAuthDocLock } from '@corenel/tools-node';
|
|
36
37
|
import { readDaemonConfig, readDaemonConfigLayered, writeDaemonConfig } from '@corenel/config';
|
|
37
38
|
/** True for a value that is a usable {name,url} server entry -- the shape
|
|
38
39
|
* `readMcpServers` requires of every element it keeps. */
|
|
@@ -95,7 +96,12 @@ export async function writeMcpServers(stateDir, servers) {
|
|
|
95
96
|
}
|
|
96
97
|
/** Read auth.json as a bag of top-level keys, never throwing -- a missing or
|
|
97
98
|
* corrupt file reads as empty, exactly like readDaemonConfig treats
|
|
98
|
-
* daemon.json, so a credential lookup can never crash the daemon.
|
|
99
|
+
* daemon.json, so a credential lookup can never crash the daemon.
|
|
100
|
+
*
|
|
101
|
+
* READ-ONLY callers only. A writer must not use this: taking a file it could
|
|
102
|
+
* not read as empty and writing the document back drops every other section
|
|
103
|
+
* (`mcp`, `mcpClients`, `agents`, the sign-in). Writers use docForWrite or
|
|
104
|
+
* docForClear below. */
|
|
99
105
|
async function readAuthJson(stateDir) {
|
|
100
106
|
let raw;
|
|
101
107
|
try {
|
|
@@ -114,6 +120,34 @@ async function readAuthJson(stateDir) {
|
|
|
114
120
|
return {};
|
|
115
121
|
}
|
|
116
122
|
}
|
|
123
|
+
/** Every read-modify-write of auth.json below runs under this process's
|
|
124
|
+
* auth.json lock (@corenel/tools-node withAuthDocLock, shared with sign-in
|
|
125
|
+
* and sign-out), so two writers never read the same document and the second
|
|
126
|
+
* rename never drops the first one's change. Not re-entrant: a locked body
|
|
127
|
+
* never calls another locked writer. */
|
|
128
|
+
function locked(stateDir, fn) {
|
|
129
|
+
return withAuthDocLock(credentialFilePath(stateDir), fn);
|
|
130
|
+
}
|
|
131
|
+
/** auth.json for a writer that ADDS or REPLACES something: the same read a
|
|
132
|
+
* sign-in does (@corenel/tools-node readAuthDocForWrite). Missing is `{}`; a
|
|
133
|
+
* file that exists but cannot be read throws before anything is written; a
|
|
134
|
+
* corrupt one is backed up to `auth.json.bad-<ms>` and then reads as `{}`. */
|
|
135
|
+
async function docForWrite(stateDir) {
|
|
136
|
+
const path = credentialFilePath(stateDir);
|
|
137
|
+
const read = await readAuthDocForWrite(path, 'save');
|
|
138
|
+
if (read.kind === 'doc')
|
|
139
|
+
return read.doc;
|
|
140
|
+
if (read.kind === 'corrupt')
|
|
141
|
+
await backupCorruptAuthDoc(path, read.bytes);
|
|
142
|
+
return {};
|
|
143
|
+
}
|
|
144
|
+
/** auth.json for a writer that only REMOVES something: null when there is
|
|
145
|
+
* nothing to remove from (missing, or corrupt, which holds nothing usable and
|
|
146
|
+
* is left exactly as it is). Throws on a read error, like docForWrite. */
|
|
147
|
+
async function docForClear(stateDir) {
|
|
148
|
+
const read = await readAuthDocForWrite(credentialFilePath(stateDir), 'save');
|
|
149
|
+
return read.kind === 'doc' ? read.doc : null;
|
|
150
|
+
}
|
|
117
151
|
function isMcpAuthSection(v) {
|
|
118
152
|
return typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
119
153
|
}
|
|
@@ -189,84 +223,265 @@ export async function readMcpClient(stateDir, server) {
|
|
|
189
223
|
* writeMcpCredential does -- same file, same 0600, same preservation of every
|
|
190
224
|
* other key including ones this build knows nothing about. */
|
|
191
225
|
export async function writeMcpClient(stateDir, server, client) {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
`, { mode: 0o600 });
|
|
203
|
-
try {
|
|
204
|
-
await chmod(path, 0o600);
|
|
205
|
-
}
|
|
206
|
-
catch {
|
|
207
|
-
/* best effort on platforms without POSIX modes, matching auth/store.ts */
|
|
208
|
-
}
|
|
226
|
+
assertServerName(server);
|
|
227
|
+
await locked(stateDir, async () => {
|
|
228
|
+
const doc = await docForWrite(stateDir);
|
|
229
|
+
const prev = doc.mcpClients;
|
|
230
|
+
const section = (typeof prev === 'object' && prev !== null && !Array.isArray(prev))
|
|
231
|
+
? { ...prev }
|
|
232
|
+
: {};
|
|
233
|
+
section[server] = client;
|
|
234
|
+
await writeAuthJson(stateDir, { ...doc, mcpClients: section });
|
|
235
|
+
});
|
|
209
236
|
}
|
|
210
237
|
/** Forget `server`'s registered client, so the next sign-in registers afresh.
|
|
211
238
|
* Used when a server rejects the stored client_id -- the registration is gone
|
|
212
239
|
* on their side and keeping it only reproduces the failure. */
|
|
213
240
|
export async function clearMcpClient(stateDir, server) {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
await chmod(path, 0o600);
|
|
228
|
-
}
|
|
229
|
-
catch { /* as above */ }
|
|
241
|
+
await locked(stateDir, async () => {
|
|
242
|
+
const doc = await docForClear(stateDir);
|
|
243
|
+
if (!doc)
|
|
244
|
+
return;
|
|
245
|
+
const prev = doc.mcpClients;
|
|
246
|
+
if (typeof prev !== 'object' || prev === null || Array.isArray(prev))
|
|
247
|
+
return;
|
|
248
|
+
const section = { ...prev };
|
|
249
|
+
if (!(server in section))
|
|
250
|
+
return;
|
|
251
|
+
delete section[server];
|
|
252
|
+
await writeAuthJson(stateDir, { ...doc, mcpClients: section });
|
|
253
|
+
});
|
|
230
254
|
}
|
|
231
255
|
/** Forget `server`'s stored credential. Credentials are keyed by NAME, so a
|
|
232
256
|
* removed server's credential must go with it: otherwise a later add under
|
|
233
257
|
* the same name -- pointing anywhere -- inherits it. */
|
|
234
258
|
export async function clearMcpCredential(stateDir, server) {
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
await chmod(path, 0o600);
|
|
248
|
-
}
|
|
249
|
-
catch { /* best effort, as above */ }
|
|
259
|
+
await locked(stateDir, async () => {
|
|
260
|
+
const doc = await docForClear(stateDir);
|
|
261
|
+
if (!doc)
|
|
262
|
+
return;
|
|
263
|
+
if (!isMcpAuthSection(doc.mcp))
|
|
264
|
+
return;
|
|
265
|
+
const section = { ...doc.mcp };
|
|
266
|
+
if (!(server in section))
|
|
267
|
+
return;
|
|
268
|
+
delete section[server];
|
|
269
|
+
await writeAuthJson(stateDir, { ...doc, mcp: section });
|
|
270
|
+
});
|
|
250
271
|
}
|
|
251
272
|
/** Everything stored for `server` in auth.json: its credential and its
|
|
252
273
|
* registered OAuth client. Called whenever a server is removed. */
|
|
253
274
|
export async function forgetMcpServerSecrets(stateDir, server) {
|
|
254
275
|
await clearMcpCredential(stateDir, server);
|
|
255
276
|
await clearMcpClient(stateDir, server);
|
|
277
|
+
await clearServerFromAllAgents(stateDir, server);
|
|
256
278
|
}
|
|
257
279
|
export async function writeMcpCredential(stateDir, server, cred) {
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
280
|
+
assertServerName(server);
|
|
281
|
+
await locked(stateDir, async () => {
|
|
282
|
+
const doc = await docForWrite(stateDir);
|
|
283
|
+
const section = isMcpAuthSection(doc.mcp) ? { ...doc.mcp } : {};
|
|
284
|
+
section[server] = cred;
|
|
285
|
+
await writeAuthJson(stateDir, { ...doc, mcp: section });
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
export const SERVER_SLOT = { kind: 'server' };
|
|
289
|
+
/** Bound on an access key used as a JSON key: it is wire-reachable. */
|
|
290
|
+
const MAX_ACCESS_KEY_LEN = 512;
|
|
291
|
+
/** `__proto__` as a key of a plain object sets its PROTOTYPE instead of an
|
|
292
|
+
* own property, so the write would vanish (JSON.stringify skips it) or, read
|
|
293
|
+
* back, resolve to Object.prototype. Refused wherever a wire-reachable string
|
|
294
|
+
* becomes a key in auth.json. */
|
|
295
|
+
const FORBIDDEN_KEY = '__proto__';
|
|
296
|
+
function assertAccessKey(accessKey) {
|
|
297
|
+
if (typeof accessKey !== 'string' || !accessKey || accessKey.length > MAX_ACCESS_KEY_LEN || accessKey === FORBIDDEN_KEY) {
|
|
298
|
+
throw new Error('invalid agent access key');
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
function assertServerName(server) {
|
|
302
|
+
if (typeof server !== 'string' || !server || server === FORBIDDEN_KEY) {
|
|
303
|
+
throw new Error('invalid MCP server name');
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
/** auth.json `agents`, or an empty object for absent or malformed. */
|
|
307
|
+
function agentsOf(doc) {
|
|
308
|
+
const s = doc.agents;
|
|
309
|
+
return typeof s === 'object' && s !== null && !Array.isArray(s) ? { ...s } : {};
|
|
310
|
+
}
|
|
311
|
+
/** The ONE auth.json writer in this module: a 0600 temp file beside it,
|
|
312
|
+
* renamed over it (@corenel/tools-node writeFilePrivateAtomic, the same
|
|
313
|
+
* publish a sign-in uses). A truncate-then-fill write is seen half-done by a
|
|
314
|
+
* concurrent reader, and a sign-in reading a torn file to keep these sections
|
|
315
|
+
* would read it as empty. */
|
|
316
|
+
async function writeAuthJson(stateDir, next) {
|
|
263
317
|
await mkdir(credentialDir(stateDir), { recursive: true });
|
|
264
|
-
await writeFile(path, `${JSON.stringify(next, null, 2)}\n`, { mode: 0o600 });
|
|
265
318
|
try {
|
|
266
|
-
await
|
|
319
|
+
await writeFilePrivateAtomic(credentialFilePath(stateDir), `${JSON.stringify(next, null, 2)}\n`);
|
|
267
320
|
}
|
|
268
|
-
catch {
|
|
269
|
-
/*
|
|
321
|
+
catch (err) {
|
|
322
|
+
/* Windows refuses a rename over a file another process holds open. The
|
|
323
|
+
* live file is untouched (the temp is cleaned up), so this is a retry,
|
|
324
|
+
* not a loss: say so, and keep the code for anything that branches on it. */
|
|
325
|
+
const code = typeof err === 'object' && err !== null ? err.code : undefined;
|
|
326
|
+
if (code === 'EPERM' || code === 'EBUSY') {
|
|
327
|
+
throw Object.assign(new Error(`auth.json is in use; retry (${code})`), { code });
|
|
328
|
+
}
|
|
329
|
+
throw err;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
export async function readMcpCredentialFor(stateDir, server, slot) {
|
|
333
|
+
if (slot.kind === 'server')
|
|
334
|
+
return readMcpCredential(stateDir, server);
|
|
335
|
+
assertAccessKey(slot.accessKey);
|
|
336
|
+
assertServerName(server);
|
|
337
|
+
const agents = agentsOf(await readAuthJson(stateDir));
|
|
338
|
+
if (!Object.prototype.hasOwnProperty.call(agents, slot.accessKey))
|
|
339
|
+
return null;
|
|
340
|
+
const perAgent = agents[slot.accessKey];
|
|
341
|
+
if (!isMcpAuthSection(perAgent))
|
|
342
|
+
return null;
|
|
343
|
+
if (!Object.prototype.hasOwnProperty.call(perAgent, server))
|
|
344
|
+
return null;
|
|
345
|
+
const cred = perAgent[server];
|
|
346
|
+
return isUsableCredential(cred) ? cred : null;
|
|
347
|
+
}
|
|
348
|
+
export async function writeMcpCredentialFor(stateDir, server, slot, cred) {
|
|
349
|
+
if (slot.kind === 'server')
|
|
350
|
+
return writeMcpCredential(stateDir, server, cred);
|
|
351
|
+
assertAccessKey(slot.accessKey);
|
|
352
|
+
assertServerName(server);
|
|
353
|
+
const key = slot.accessKey;
|
|
354
|
+
await locked(stateDir, async () => {
|
|
355
|
+
const doc = await docForWrite(stateDir);
|
|
356
|
+
const agents = agentsOf(doc);
|
|
357
|
+
const prev = agents[key];
|
|
358
|
+
const perAgent = isMcpAuthSection(prev) ? { ...prev } : {};
|
|
359
|
+
perAgent[server] = cred;
|
|
360
|
+
agents[key] = perAgent;
|
|
361
|
+
await writeAuthJson(stateDir, { ...doc, agents });
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
/** True when `stored` is still the credential `expected` was read as: same
|
|
365
|
+
* kind and, for OAuth, the same refresh token (or access token when there is
|
|
366
|
+
* none); for headers, the same header list. */
|
|
367
|
+
function sameCredential(stored, expected) {
|
|
368
|
+
if (stored.kind === 'oauth' && expected.kind === 'oauth') {
|
|
369
|
+
return expected.refreshToken !== undefined
|
|
370
|
+
? stored.refreshToken === expected.refreshToken
|
|
371
|
+
: stored.refreshToken === undefined && stored.accessToken === expected.accessToken;
|
|
372
|
+
}
|
|
373
|
+
if (stored.kind === 'headers' && expected.kind === 'headers') {
|
|
374
|
+
return JSON.stringify(stored.headers) === JSON.stringify(expected.headers);
|
|
375
|
+
}
|
|
376
|
+
return false;
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Write `next` into `slot`'s credential for `server` ONLY if the stored one is
|
|
380
|
+
* still `expected`, in one read-modify-write (Task 9 review fix round 1).
|
|
381
|
+
*
|
|
382
|
+
* A token refresh reads a credential, goes to the network, and writes the
|
|
383
|
+
* result back. If the owner cleared or replaced the credential meanwhile, an
|
|
384
|
+
* unconditional write would bring the revoked one back and persist it. Returns
|
|
385
|
+
* false, writing nothing, when the slot is empty or holds something else.
|
|
386
|
+
* Reads strictly (docForClear): an unreadable auth.json throws, and a missing
|
|
387
|
+
* or corrupt one holds nothing to replace.
|
|
388
|
+
*/
|
|
389
|
+
export async function replaceMcpCredentialIfUnchanged(stateDir, server, slot, expected, next) {
|
|
390
|
+
assertServerName(server);
|
|
391
|
+
if (slot.kind === 'agent')
|
|
392
|
+
assertAccessKey(slot.accessKey);
|
|
393
|
+
return locked(stateDir, () => replaceIfUnchangedLocked(stateDir, server, slot, expected, next));
|
|
394
|
+
}
|
|
395
|
+
async function replaceIfUnchangedLocked(stateDir, server, slot, expected, next) {
|
|
396
|
+
const doc = await docForClear(stateDir);
|
|
397
|
+
if (!doc)
|
|
398
|
+
return false;
|
|
399
|
+
if (slot.kind === 'server') {
|
|
400
|
+
if (!isMcpAuthSection(doc.mcp))
|
|
401
|
+
return false;
|
|
402
|
+
const section = { ...doc.mcp };
|
|
403
|
+
if (!Object.prototype.hasOwnProperty.call(section, server))
|
|
404
|
+
return false;
|
|
405
|
+
const stored = section[server];
|
|
406
|
+
if (!isUsableCredential(stored) || !sameCredential(stored, expected))
|
|
407
|
+
return false;
|
|
408
|
+
section[server] = next;
|
|
409
|
+
await writeAuthJson(stateDir, { ...doc, mcp: section });
|
|
410
|
+
return true;
|
|
411
|
+
}
|
|
412
|
+
const agents = agentsOf(doc);
|
|
413
|
+
if (!Object.prototype.hasOwnProperty.call(agents, slot.accessKey))
|
|
414
|
+
return false;
|
|
415
|
+
const prev = agents[slot.accessKey];
|
|
416
|
+
if (!isMcpAuthSection(prev) || !Object.prototype.hasOwnProperty.call(prev, server))
|
|
417
|
+
return false;
|
|
418
|
+
const perAgent = { ...prev };
|
|
419
|
+
const stored = perAgent[server];
|
|
420
|
+
if (!isUsableCredential(stored) || !sameCredential(stored, expected))
|
|
421
|
+
return false;
|
|
422
|
+
perAgent[server] = next;
|
|
423
|
+
agents[slot.accessKey] = perAgent;
|
|
424
|
+
await writeAuthJson(stateDir, { ...doc, agents });
|
|
425
|
+
return true;
|
|
426
|
+
}
|
|
427
|
+
/** Forget one agent's credential for one server. */
|
|
428
|
+
export async function clearAgentCredential(stateDir, accessKey, server) {
|
|
429
|
+
assertAccessKey(accessKey);
|
|
430
|
+
assertServerName(server);
|
|
431
|
+
await locked(stateDir, async () => {
|
|
432
|
+
const doc = await docForClear(stateDir);
|
|
433
|
+
if (!doc)
|
|
434
|
+
return;
|
|
435
|
+
const agents = agentsOf(doc);
|
|
436
|
+
const prev = agents[accessKey];
|
|
437
|
+
if (!isMcpAuthSection(prev) || !Object.prototype.hasOwnProperty.call(prev, server))
|
|
438
|
+
return;
|
|
439
|
+
const perAgent = { ...prev };
|
|
440
|
+
delete perAgent[server];
|
|
441
|
+
if (Object.keys(perAgent).length)
|
|
442
|
+
agents[accessKey] = perAgent;
|
|
443
|
+
else
|
|
444
|
+
delete agents[accessKey];
|
|
445
|
+
await writeAuthJson(stateDir, { ...doc, agents });
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
/** Forget every credential of one agent (the agent was deleted). */
|
|
449
|
+
export async function clearAgentCredentials(stateDir, accessKey) {
|
|
450
|
+
assertAccessKey(accessKey);
|
|
451
|
+
await locked(stateDir, async () => {
|
|
452
|
+
const doc = await docForClear(stateDir);
|
|
453
|
+
if (!doc)
|
|
454
|
+
return;
|
|
455
|
+
const agents = agentsOf(doc);
|
|
456
|
+
if (!Object.prototype.hasOwnProperty.call(agents, accessKey))
|
|
457
|
+
return;
|
|
458
|
+
delete agents[accessKey];
|
|
459
|
+
await writeAuthJson(stateDir, { ...doc, agents });
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
/** Forget `server` from every agent: a removed server's agent credentials go
|
|
463
|
+
* with it, for the same reason its own credential does. */
|
|
464
|
+
async function clearServerFromAllAgents(stateDir, server) {
|
|
465
|
+
await locked(stateDir, () => clearServerFromAllAgentsLocked(stateDir, server));
|
|
466
|
+
}
|
|
467
|
+
async function clearServerFromAllAgentsLocked(stateDir, server) {
|
|
468
|
+
const doc = await docForClear(stateDir);
|
|
469
|
+
if (!doc)
|
|
470
|
+
return;
|
|
471
|
+
const agents = agentsOf(doc);
|
|
472
|
+
let changed = false;
|
|
473
|
+
for (const [key, prev] of Object.entries(agents)) {
|
|
474
|
+
if (!isMcpAuthSection(prev) || !Object.prototype.hasOwnProperty.call(prev, server))
|
|
475
|
+
continue;
|
|
476
|
+
const perAgent = { ...prev };
|
|
477
|
+
delete perAgent[server];
|
|
478
|
+
if (Object.keys(perAgent).length)
|
|
479
|
+
agents[key] = perAgent;
|
|
480
|
+
else
|
|
481
|
+
delete agents[key];
|
|
482
|
+
changed = true;
|
|
270
483
|
}
|
|
484
|
+
if (changed)
|
|
485
|
+
await writeAuthJson(stateDir, { ...doc, agents });
|
|
271
486
|
}
|
|
272
487
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,14 +2,17 @@ export type { McpServer, McpCredential, McpHeadersCredential, McpOAuthCredential
|
|
|
2
2
|
export type { McpTool } from './httpClient';
|
|
3
3
|
export { McpHttpClient } from './httpClient';
|
|
4
4
|
export type { McpRegisteredClient } from './config';
|
|
5
|
-
export { readMcpServers, writeMcpServers, readMcpCredential, writeMcpCredential, readMcpClient, writeMcpClient, clearMcpClient, clearMcpCredential, forgetMcpServerSecrets, } from './config';
|
|
5
|
+
export { readMcpServers, writeMcpServers, readMcpCredential, writeMcpCredential, readMcpClient, writeMcpClient, clearMcpClient, clearMcpCredential, forgetMcpServerSecrets, readMcpCredentialFor, writeMcpCredentialFor, replaceMcpCredentialIfUnchanged, clearAgentCredential, clearAgentCredentials, SERVER_SLOT, } from './config';
|
|
6
|
+
export type { McpCredentialSlot } from './config';
|
|
6
7
|
export type { McpClient, McpClientFactory, McpClientFactoryOptions, ServerReport, ConnectAllOptions } from './registry';
|
|
7
|
-
export { McpRegistry, SERVER_CONNECT_TIMEOUT_MS, accountTokenFor, mcpClientFactory } from './registry';
|
|
8
|
+
export { McpRegistry, SERVER_CONNECT_TIMEOUT_MS, accountTokenFor, mcpClientFactory, mcpClientKey } from './registry';
|
|
8
9
|
export type { McpCallDecision } from './policy';
|
|
9
10
|
export { mcpCallAllowed } from './policy';
|
|
10
11
|
export { asAgentTools } from './asAgentTools';
|
|
12
|
+
export { portAgentTools } from './portTools';
|
|
11
13
|
export { gatedAgentTools } from './gatedAgentTools';
|
|
12
14
|
export type { AuthProvider } from './auth';
|
|
13
15
|
export { authProviderFor, isCorenelRelayUrl } from './auth';
|
|
14
16
|
export { timedFetch, AUTH_REQUEST_TIMEOUT_MS } from './timedFetch';
|
|
17
|
+
export { normalizeMcpUrl } from './url';
|
|
15
18
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClG,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EACL,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClG,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EACL,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,+BAA+B,EAC/B,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,GACZ,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACxH,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,eAAe,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACrH,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export { McpHttpClient } from './httpClient.js';
|
|
2
|
-
export { readMcpServers, writeMcpServers, readMcpCredential, writeMcpCredential, readMcpClient, writeMcpClient, clearMcpClient, clearMcpCredential, forgetMcpServerSecrets, } from './config.js';
|
|
3
|
-
export { McpRegistry, SERVER_CONNECT_TIMEOUT_MS, accountTokenFor, mcpClientFactory } from './registry.js';
|
|
2
|
+
export { readMcpServers, writeMcpServers, readMcpCredential, writeMcpCredential, readMcpClient, writeMcpClient, clearMcpClient, clearMcpCredential, forgetMcpServerSecrets, readMcpCredentialFor, writeMcpCredentialFor, replaceMcpCredentialIfUnchanged, clearAgentCredential, clearAgentCredentials, SERVER_SLOT, } from './config.js';
|
|
3
|
+
export { McpRegistry, SERVER_CONNECT_TIMEOUT_MS, accountTokenFor, mcpClientFactory, mcpClientKey } from './registry.js';
|
|
4
4
|
export { mcpCallAllowed } from './policy.js';
|
|
5
5
|
export { asAgentTools } from './asAgentTools.js';
|
|
6
|
+
export { portAgentTools } from './portTools.js';
|
|
6
7
|
export { gatedAgentTools } from './gatedAgentTools.js';
|
|
7
8
|
export { authProviderFor, isCorenelRelayUrl } from './auth.js';
|
|
8
9
|
export { timedFetch, AUTH_REQUEST_TIMEOUT_MS } from './timedFetch.js';
|
|
10
|
+
export { normalizeMcpUrl } from './url.js';
|
|
9
11
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EACL,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EACL,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,+BAA+B,EAC/B,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,GACZ,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,eAAe,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAErH,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC"}
|
package/dist/oauth/login.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { McpServer } from '../types';
|
|
2
|
+
import { type McpCredentialSlot } from '../config';
|
|
2
3
|
/** Why a sign-in did not happen, when it did not. */
|
|
3
4
|
export type McpLoginOutcome = {
|
|
4
5
|
ok: true;
|
|
@@ -36,6 +37,9 @@ export interface McpLoginDeps {
|
|
|
36
37
|
* driving a REMOTE daemon can see the address they must open on THAT
|
|
37
38
|
* machine, since the redirect lands on its loopback and nowhere else. */
|
|
38
39
|
onAuthUrl?: (url: string) => void;
|
|
40
|
+
/** Where the won credential is stored (spec 2026-10-01 Part D): the server's
|
|
41
|
+
* own (default) or one agent's. The registered OAuth client is shared. */
|
|
42
|
+
slot?: McpCredentialSlot;
|
|
39
43
|
}
|
|
40
44
|
export declare function loginToMcpServer(stateDir: string, server: McpServer, deps?: McpLoginDeps): Promise<McpLoginOutcome>;
|
|
41
45
|
//# sourceMappingURL=login.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/oauth/login.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/oauth/login.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAqF,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAsBtI,qDAAqD;AACrD,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE;AACd,8EAA8E;GAC5E;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,CAAA;CAAE;AAC5E,4EAA4E;GAC1E;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AACtE,gCAAgC;GAC9B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC;AAE7E,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB;;;;;;8EAM0E;IAC1E,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;+EAC2E;IAC3E,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,EACjB,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,eAAe,CAAC,CAiN1B"}
|
package/dist/oauth/login.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { writeMcpCredentialFor, readMcpClient, writeMcpClient, clearMcpClient, SERVER_SLOT } from '../config.js';
|
|
2
2
|
import { discoverAuthServer, discoverAuthMetadata } from './discovery.js';
|
|
3
3
|
import { registerClient } from './register.js';
|
|
4
4
|
import { makePkce, makeState, authorizationUrl } from './pkce.js';
|
|
@@ -180,7 +180,7 @@ export async function loginToMcpServer(stateDir, server, deps = {}) {
|
|
|
180
180
|
resource: discovered.resource,
|
|
181
181
|
authServer: discovered.authServer,
|
|
182
182
|
}, fetchImpl, now);
|
|
183
|
-
await
|
|
183
|
+
await writeMcpCredentialFor(stateDir, server.name, deps.slot ?? SERVER_SLOT, cred);
|
|
184
184
|
return { ok: true };
|
|
185
185
|
}
|
|
186
186
|
catch (e) {
|
package/dist/oauth/login.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/oauth/login.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/oauth/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portTools.d.ts","sourceRoot":"","sources":["../src/portTools.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQhE,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,EAAE,CA0BvG"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { MCP_CALL_FAILED, canEncodeMcpWireName, mcpWireName, parseMcpToolAddress } from '@corenel/protocol';
|
|
2
|
+
import { formatContent, toParameters } from './asAgentTools.js';
|
|
3
|
+
/** The one thing a model is told when a call threw: no detail, which can carry
|
|
4
|
+
* a URL with a token or a state-dir path. The detail goes to `log`. */
|
|
5
|
+
const CALL_FAILED_TEXT = `Error: ${MCP_CALL_FAILED}: the MCP call failed before a result came back; it may or may not have run, so do not repeat it without checking.`;
|
|
6
|
+
export function portAgentTools(decls, log) {
|
|
7
|
+
const out = [];
|
|
8
|
+
for (const d of decls) {
|
|
9
|
+
const parsed = parseMcpToolAddress(d.address);
|
|
10
|
+
if (!parsed || !canEncodeMcpWireName(parsed.server, parsed.tool))
|
|
11
|
+
continue;
|
|
12
|
+
const address = d.address;
|
|
13
|
+
out.push({
|
|
14
|
+
name: mcpWireName(parsed.server, parsed.tool),
|
|
15
|
+
namespace: 'mcp',
|
|
16
|
+
description: d.description?.trim() || `MCP tool "${parsed.tool}" on server "${parsed.server}" (${address}).`,
|
|
17
|
+
parameters: toParameters(d.inputSchema),
|
|
18
|
+
mutates: true,
|
|
19
|
+
async run(args, ctx) {
|
|
20
|
+
if (!ctx.mcp)
|
|
21
|
+
return `Error: ${MCP_CALL_FAILED}: this run has no MCP connection`;
|
|
22
|
+
try {
|
|
23
|
+
const r = await ctx.mcp.call(address, args);
|
|
24
|
+
const text = formatContent(r.content);
|
|
25
|
+
return r.isError ? `Error: ${text}` : text;
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
log?.(`mcp port call ${address} threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
29
|
+
return CALL_FAILED_TEXT;
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return out;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=portTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portTools.js","sourceRoot":"","sources":["../src/portTools.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC5G,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE7D;wEACwE;AACxE,MAAM,gBAAgB,GAAG,UAAU,eAAe,oHAAoH,CAAC;AAEvK,MAAM,UAAU,cAAc,CAAC,KAA6B,EAAE,GAA4B;IACxF,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;YAAE,SAAS;QAC3E,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QAC1B,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;YAC7C,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,aAAa,MAAM,CAAC,IAAI,gBAAgB,MAAM,CAAC,MAAM,MAAM,OAAO,IAAI;YAC5G,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;YACvC,OAAO,EAAE,IAAI;YACb,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG;gBACjB,IAAI,CAAC,GAAG,CAAC,GAAG;oBAAE,OAAO,UAAU,eAAe,kCAAkC,CAAC;gBACjF,IAAI,CAAC;oBACH,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC5C,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBACtC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC7C,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,GAAG,EAAE,CAAC,iBAAiB,OAAO,WAAW,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACvF,OAAO,gBAAgB,CAAC;gBAC1B,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/registry.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { McpServer } from './types';
|
|
2
2
|
import type { McpTool } from './httpClient';
|
|
3
|
+
import { type McpCredentialSlot } from './config';
|
|
3
4
|
import type { CachedServer } from './cache';
|
|
4
5
|
/** The subset of `McpHttpClient` the registry needs. Named separately (not
|
|
5
6
|
* just `McpHttpClient` itself) so a test double can implement it without
|
|
@@ -16,7 +17,7 @@ export interface McpClient {
|
|
|
16
17
|
* `McpHttpClient` wired to the real `authProviderFor`; a test supplies a
|
|
17
18
|
* factory that returns a fake and never touches the network or the auth
|
|
18
19
|
* store. */
|
|
19
|
-
export type McpClientFactory = (stateDir: string, server: McpServer) => McpClient;
|
|
20
|
+
export type McpClientFactory = (stateDir: string, server: McpServer, slot?: McpCredentialSlot) => McpClient;
|
|
20
21
|
/**
|
|
21
22
|
* The daemon's OWN Corenel account token, or null when it has none.
|
|
22
23
|
*
|
|
@@ -67,6 +68,10 @@ export interface ConnectAllOptions {
|
|
|
67
68
|
* until the slowest server finishes. */
|
|
68
69
|
onServer?: (report: ServerReport) => void;
|
|
69
70
|
}
|
|
71
|
+
/** The cache key for one server and credential pair (spec 2026-10-01 Part D):
|
|
72
|
+
* a JSON array, `[server]` or `[server, accessKey]`, so no server name or
|
|
73
|
+
* access key can make two different pairs collide. */
|
|
74
|
+
export declare function mcpClientKey(server: string, slot: McpCredentialSlot): string;
|
|
70
75
|
export declare class McpRegistry {
|
|
71
76
|
private readonly stateDir;
|
|
72
77
|
private readonly clientFactory;
|
|
@@ -82,6 +87,8 @@ export declare class McpRegistry {
|
|
|
82
87
|
private serverOrder;
|
|
83
88
|
private readonly primed;
|
|
84
89
|
private readonly connecting;
|
|
90
|
+
private readonly slotted;
|
|
91
|
+
private readonly slotConnecting;
|
|
85
92
|
constructor(stateDir: string, clientFactory?: McpClientFactory,
|
|
86
93
|
/** A named config environment (`--env`/`CORENEL_ENV`), when
|
|
87
94
|
* one is active -- threaded through to every `readMcpServers` call below
|
|
@@ -133,6 +140,20 @@ export declare class McpRegistry {
|
|
|
133
140
|
content: unknown;
|
|
134
141
|
isError: boolean;
|
|
135
142
|
}>;
|
|
143
|
+
/** `server`'s tools as `slot`'s credential sees them. Throws when the
|
|
144
|
+
* server is not configured or cannot be reached with that credential. */
|
|
145
|
+
listAs(server: string, slot: McpCredentialSlot): Promise<McpTool[]>;
|
|
146
|
+
/** Call one tool with `slot`'s credential. The server slot is exactly
|
|
147
|
+
* `call()`; an agent slot never touches the server's own client. */
|
|
148
|
+
callAs(server: string, tool: string, args: unknown, slot: McpCredentialSlot): Promise<{
|
|
149
|
+
content: unknown;
|
|
150
|
+
isError: boolean;
|
|
151
|
+
}>;
|
|
152
|
+
/** Drop every agent-slot client of `accessKey` (credentials changed, or the
|
|
153
|
+
* agent was deleted); the next call connects afresh. In-flight connects are
|
|
154
|
+
* dropped too: one that settles after this is never cached. */
|
|
155
|
+
forgetAgentClients(accessKey: string): void;
|
|
156
|
+
private connectedAs;
|
|
136
157
|
/** Per-server connection state, for `doctor` (Task 10) to print. A server
|
|
137
158
|
* with `connected: false` always carries `error` -- there is no code path
|
|
138
159
|
* that records a failure without a reason, because "no tools" alone tells
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/registry.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { McpHttpClient } from './httpClient.js';
|
|
2
2
|
import { authProviderFor } from './auth.js';
|
|
3
3
|
import { resolveCredential } from '@corenel/config';
|
|
4
|
-
import { readMcpServers } from './config.js';
|
|
4
|
+
import { readMcpServers, SERVER_SLOT } from './config.js';
|
|
5
5
|
import { timedFetch, AUTH_REQUEST_TIMEOUT_MS } from './timedFetch.js';
|
|
6
6
|
/**
|
|
7
7
|
* The daemon's OWN Corenel account token, or null when it has none.
|
|
@@ -29,12 +29,16 @@ export async function accountTokenFor(stateDir) {
|
|
|
29
29
|
* as a hosted relay. `mcpClientFactory()` is exactly the default factory. */
|
|
30
30
|
export function mcpClientFactory(opts = {}) {
|
|
31
31
|
const devApiBases = [...(opts.devApiBases ?? [])];
|
|
32
|
-
return (stateDir, server) => buildClient(stateDir, server, devApiBases);
|
|
32
|
+
return (stateDir, server, slot = SERVER_SLOT) => buildClient(stateDir, server, devApiBases, slot);
|
|
33
33
|
}
|
|
34
|
-
function defaultClientFactory(stateDir, server) {
|
|
35
|
-
return buildClient(stateDir, server, []);
|
|
34
|
+
function defaultClientFactory(stateDir, server, slot = SERVER_SLOT) {
|
|
35
|
+
return buildClient(stateDir, server, [], slot);
|
|
36
36
|
}
|
|
37
|
-
|
|
37
|
+
/* `slot` is whose credential this client authenticates with (spec 2026-10-01
|
|
38
|
+
* Part D). It MUST reach authProviderFor: the daemon builds every client
|
|
39
|
+
* through mcpClientFactory -> here, so a slot dropped on this path would send
|
|
40
|
+
* an agent's calls with the daemon's own credential. */
|
|
41
|
+
function buildClient(stateDir, server, devApiBases, slot) {
|
|
38
42
|
/* THE FOURTH ARGUMENT IS WHY A HOSTED SERVER WORKS AT ALL, and omitting it
|
|
39
43
|
* was silent. A relayed server needs TWO credentials: the MCP one in
|
|
40
44
|
* `X-MCP-Authorization`, and the daemon's own Corenel account token in
|
|
@@ -54,7 +58,7 @@ function buildClient(stateDir, server, devApiBases) {
|
|
|
54
58
|
* daemon startup indefinitely. Those requests are never legitimately slow.
|
|
55
59
|
* A tool CALL can be, so the client keeps plain fetch; connect time is bounded
|
|
56
60
|
* per server by `connectAll` instead. */
|
|
57
|
-
return new McpHttpClient(server, authProviderFor(stateDir, server, timedFetch(AUTH_REQUEST_TIMEOUT_MS), () => accountTokenFor(stateDir), () => relayBasesFor(stateDir), devApiBases));
|
|
61
|
+
return new McpHttpClient(server, authProviderFor(stateDir, server, timedFetch(AUTH_REQUEST_TIMEOUT_MS), () => accountTokenFor(stateDir), () => relayBasesFor(stateDir), devApiBases, slot));
|
|
58
62
|
}
|
|
59
63
|
/** The API bases whose origin counts as OUR relay for this daemon, beyond
|
|
60
64
|
* DEFAULT_API_BASE: the one the stored account credential was minted
|
|
@@ -73,6 +77,27 @@ async function relayBasesFor(stateDir) {
|
|
|
73
77
|
* and the daemon moves on without it. Generous for a cold service; short
|
|
74
78
|
* enough that a stalled one reads as a failure, not a hang. */
|
|
75
79
|
export const SERVER_CONNECT_TIMEOUT_MS = 30_000;
|
|
80
|
+
/** The cache key for one server and credential pair (spec 2026-10-01 Part D):
|
|
81
|
+
* a JSON array, `[server]` or `[server, accessKey]`, so no server name or
|
|
82
|
+
* access key can make two different pairs collide. */
|
|
83
|
+
export function mcpClientKey(server, slot) {
|
|
84
|
+
return JSON.stringify(slot.kind === 'server' ? [server] : [server, slot.accessKey]);
|
|
85
|
+
}
|
|
86
|
+
/** The access key an agent-slot cache key was made for. */
|
|
87
|
+
function accessKeyOf(key) {
|
|
88
|
+
const parts = JSON.parse(key);
|
|
89
|
+
return Array.isArray(parts) && parts.length === 2 && typeof parts[1] === 'string' ? parts[1] : undefined;
|
|
90
|
+
}
|
|
91
|
+
/** `p`, or a rejection with `message` once `ms` have passed. The loser keeps
|
|
92
|
+
* running; its result is ignored and can never surface as unhandled. */
|
|
93
|
+
function withDeadline(p, ms, message) {
|
|
94
|
+
let timer;
|
|
95
|
+
const deadline = new Promise((_resolve, reject) => {
|
|
96
|
+
timer = setTimeout(() => reject(new Error(message)), ms);
|
|
97
|
+
});
|
|
98
|
+
p.catch(() => undefined);
|
|
99
|
+
return Promise.race([p, deadline]).finally(() => clearTimeout(timer));
|
|
100
|
+
}
|
|
76
101
|
export class McpRegistry {
|
|
77
102
|
stateDir;
|
|
78
103
|
clientFactory;
|
|
@@ -100,6 +125,11 @@ export class McpRegistry {
|
|
|
100
125
|
// that land on the same cold server in the same turn share one connection
|
|
101
126
|
// instead of racing three.
|
|
102
127
|
connecting = new Map();
|
|
128
|
+
// Agent-slot clients (spec 2026-10-01 Part D), keyed by mcpClientKey. Kept
|
|
129
|
+
// apart from `connected`: those are the daemon's own credential, and the
|
|
130
|
+
// two must never be confused for each other.
|
|
131
|
+
slotted = new Map();
|
|
132
|
+
slotConnecting = new Map();
|
|
103
133
|
constructor(stateDir, clientFactory = defaultClientFactory,
|
|
104
134
|
/** A named config environment (`--env`/`CORENEL_ENV`), when
|
|
105
135
|
* one is active -- threaded through to every `readMcpServers` call below
|
|
@@ -274,6 +304,72 @@ export class McpRegistry {
|
|
|
274
304
|
}
|
|
275
305
|
return entry.client.callTool(tool, args);
|
|
276
306
|
}
|
|
307
|
+
/** `server`'s tools as `slot`'s credential sees them. Throws when the
|
|
308
|
+
* server is not configured or cannot be reached with that credential. */
|
|
309
|
+
async listAs(server, slot) {
|
|
310
|
+
return (await this.connectedAs(server, slot)).tools;
|
|
311
|
+
}
|
|
312
|
+
/** Call one tool with `slot`'s credential. The server slot is exactly
|
|
313
|
+
* `call()`; an agent slot never touches the server's own client. */
|
|
314
|
+
async callAs(server, tool, args, slot) {
|
|
315
|
+
if (slot.kind === 'server')
|
|
316
|
+
return this.call(server, tool, args);
|
|
317
|
+
return (await this.connectedAs(server, slot)).client.callTool(tool, args);
|
|
318
|
+
}
|
|
319
|
+
/** Drop every agent-slot client of `accessKey` (credentials changed, or the
|
|
320
|
+
* agent was deleted); the next call connects afresh. In-flight connects are
|
|
321
|
+
* dropped too: one that settles after this is never cached. */
|
|
322
|
+
forgetAgentClients(accessKey) {
|
|
323
|
+
for (const key of [...this.slotted.keys()])
|
|
324
|
+
if (accessKeyOf(key) === accessKey)
|
|
325
|
+
this.slotted.delete(key);
|
|
326
|
+
for (const key of [...this.slotConnecting.keys()])
|
|
327
|
+
if (accessKeyOf(key) === accessKey)
|
|
328
|
+
this.slotConnecting.delete(key);
|
|
329
|
+
}
|
|
330
|
+
async connectedAs(server, slot) {
|
|
331
|
+
if (slot.kind === 'server') {
|
|
332
|
+
await this.ensureConnected(server);
|
|
333
|
+
const entry = this.connected.get(server);
|
|
334
|
+
if (!entry)
|
|
335
|
+
throw new Error(`MCP server "${server}" is not connected -- run: corenel mcp doctor`);
|
|
336
|
+
return entry;
|
|
337
|
+
}
|
|
338
|
+
const key = mcpClientKey(server, slot);
|
|
339
|
+
const hit = this.slotted.get(key);
|
|
340
|
+
if (hit)
|
|
341
|
+
return hit;
|
|
342
|
+
const inflight = this.slotConnecting.get(key);
|
|
343
|
+
if (inflight)
|
|
344
|
+
return inflight;
|
|
345
|
+
// This attempt's own registration, filled in once the promise exists:
|
|
346
|
+
// the async body below compares against it to tell whether a
|
|
347
|
+
// forgetAgentClients() removed it while the connect was in flight.
|
|
348
|
+
const self = {};
|
|
349
|
+
const current = () => self.attempt !== undefined && this.slotConnecting.get(key) === self.attempt;
|
|
350
|
+
const attempt = (async () => {
|
|
351
|
+
const def = (await readMcpServers(this.stateDir, this.configEnv)).find((s) => s.name === server);
|
|
352
|
+
if (!def)
|
|
353
|
+
throw new Error(`MCP server "${server}" is not configured on this daemon`);
|
|
354
|
+
const client = this.clientFactory(this.stateDir, def, slot);
|
|
355
|
+
const entry = await withDeadline((async () => {
|
|
356
|
+
await client.initialize();
|
|
357
|
+
return { client, tools: await client.listTools() };
|
|
358
|
+
})(), SERVER_CONNECT_TIMEOUT_MS, `MCP server "${server}" timed out after ${SERVER_CONNECT_TIMEOUT_MS / 1000}s`);
|
|
359
|
+
// Cached only while this attempt is still the registered one: a
|
|
360
|
+
// forgetAgentClients() during the connect removed it, and the client
|
|
361
|
+
// it built must not outlive the forget.
|
|
362
|
+
if (current())
|
|
363
|
+
this.slotted.set(key, entry);
|
|
364
|
+
return entry;
|
|
365
|
+
})().finally(() => {
|
|
366
|
+
if (current())
|
|
367
|
+
this.slotConnecting.delete(key);
|
|
368
|
+
});
|
|
369
|
+
self.attempt = attempt;
|
|
370
|
+
this.slotConnecting.set(key, attempt);
|
|
371
|
+
return attempt;
|
|
372
|
+
}
|
|
277
373
|
/** Per-server connection state, for `doctor` (Task 10) to print. A server
|
|
278
374
|
* with `connected: false` always carries `error` -- there is no code path
|
|
279
375
|
* that records a failure without a reason, because "no tools" alone tells
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/url.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../src/url.ts"],"names":[],"mappings":"AAOA,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAanD"}
|
package/dist/url.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/* The one form an MCP server URL is compared in (spec 2026-10-01 Part D, peer
|
|
2
|
+
* advertising and routing): lowercase scheme and host, no default port, no
|
|
3
|
+
* trailing slash. The result is advertised to the team daemon, so it never
|
|
4
|
+
* carries a credential: username, password, query string and fragment are all
|
|
5
|
+
* omitted. Two servers that differ only by query are therefore the same server.
|
|
6
|
+
* `URL` lowercases scheme and host and drops :80 / :443 for http / https; the
|
|
7
|
+
* path keeps its case because servers may treat it as significant. */
|
|
8
|
+
export function normalizeMcpUrl(url) {
|
|
9
|
+
let u;
|
|
10
|
+
try {
|
|
11
|
+
u = new URL(url);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
// Never echo the input: it may carry a password or a token.
|
|
15
|
+
throw new Error('an MCP server URL is not a valid URL');
|
|
16
|
+
}
|
|
17
|
+
if (u.protocol !== 'http:' && u.protocol !== 'https:') {
|
|
18
|
+
throw new Error(`an MCP server URL must be http or https, not "${u.protocol}"`);
|
|
19
|
+
}
|
|
20
|
+
const path = u.pathname.replace(/[/]+$/, '');
|
|
21
|
+
return `${u.protocol}//${u.host}${path}`;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=url.js.map
|
package/dist/url.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.js","sourceRoot":"","sources":["../src/url.ts"],"names":[],"mappings":"AAAA;;;;;;sEAMsE;AACtE,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,CAAM,CAAC;IACX,IAAI,CAAC;QACH,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;QAC5D,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC7C,OAAO,GAAG,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;AAC3C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@corenel/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"license": "Elastic-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Corenel MCP — a JSON-RPC-over-HTTP MCP client, its registry, OAuth and call policy. Node-only. Shared by the sidecar daemon and the CLI so the two cannot drift.",
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
"dist"
|
|
19
19
|
],
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@corenel/config": "0.
|
|
22
|
-
"@corenel/protocol": "0.
|
|
23
|
-
"@corenel/harness": "0.
|
|
24
|
-
"@corenel/tools-node": "0.
|
|
21
|
+
"@corenel/config": "0.7.1",
|
|
22
|
+
"@corenel/protocol": "0.15.0",
|
|
23
|
+
"@corenel/harness": "0.16.0",
|
|
24
|
+
"@corenel/tools-node": "0.8.1"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/node": "^24.13.1",
|