@revealui/mcp 0.7.1 → 0.8.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 +3 -3
- package/dist/cli.d.ts +17 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +41 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/oauth.d.ts +2 -52
- package/dist/oauth.d.ts.map +1 -1
- package/dist/oauth.js +2 -139
- package/dist/oauth.js.map +1 -1
- package/dist/servers/factories/contracts.d.ts +3 -1
- package/dist/servers/factories/contracts.d.ts.map +1 -1
- package/dist/servers/factories/revealui-content.d.ts +126 -0
- package/dist/servers/factories/revealui-content.d.ts.map +1 -1
- package/dist/servers/factories/revealui-content.js +279 -63
- package/dist/servers/factories/revealui-content.js.map +1 -1
- package/dist/servers/revealui-memory.d.ts +2 -2
- package/dist/streamable-http.d.ts +25 -2
- package/dist/streamable-http.d.ts.map +1 -1
- package/dist/streamable-http.js +16 -1
- package/dist/streamable-http.js.map +1 -1
- package/package.json +17 -8
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ Centralized MCP server infrastructure, configuration, and documentation for Reve
|
|
|
19
19
|
|
|
20
20
|
This package contains everything MCP-related:
|
|
21
21
|
|
|
22
|
-
- **14 MCP Servers**
|
|
22
|
+
- **14 MCP Servers** - Code Validator, Contracts Introspection, RevealUI Docs, Neon, Next.js DevTools, Playwright, RevealUI Content, RevealUI Email, RevealUI Memory, RevealUI Stripe, Stripe, Supabase, Vercel, and the Adapter base (BaseAdapter with retry and idempotency, plus the Vercel/Stripe/Neon adapter subclasses). This roster matches the CI counter in `scripts/validate/claim-drift.ts` (adapter counted, the underscore-prefixed email-provider utility not); the count is enforced by `pnpm validate:claims`. Of the 14, eight are RevealUI-authored and six are first-party launchers that start vendor MCP server packages.
|
|
23
23
|
- **Configuration Templates** - For Claude Code / Claude Desktop
|
|
24
24
|
- **Utilities** - Config management, database adapters
|
|
25
25
|
- **Documentation** - Complete guides and per-server docs
|
|
@@ -237,7 +237,7 @@ pnpm setup:mcp
|
|
|
237
237
|
|
|
238
238
|
```typescript
|
|
239
239
|
// Config utilities
|
|
240
|
-
import {
|
|
240
|
+
import { getMcpConfig } from '@revealui/mcp/config'
|
|
241
241
|
```
|
|
242
242
|
|
|
243
243
|
## Migration from Old Structure
|
|
@@ -272,5 +272,5 @@ FSL-1.1-MIT (Fair Source — converts to MIT after 2 years). See [LICENSE](../..
|
|
|
272
272
|
---
|
|
273
273
|
|
|
274
274
|
**Status:** ✅ Consolidated and Active
|
|
275
|
-
**Servers:**
|
|
275
|
+
**Servers:** 14 available (ground truth: `pnpm validate:claims` — source of truth is `packages/mcp/src/servers/`)
|
|
276
276
|
**Last Updated:** 2026-05-03
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* revealui-mcp — launch a first-party RevealUI MCP server by name.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* revealui-mcp <server>
|
|
7
|
+
* npx @revealui/mcp <server>
|
|
8
|
+
*
|
|
9
|
+
* Each server module self-starts on import (its own main() runs). The
|
|
10
|
+
* allowlist below is static so no user input ever reaches an import path.
|
|
11
|
+
* code-validator is repo-only (tsx, excluded from the build) and is not
|
|
12
|
+
* listed here.
|
|
13
|
+
*/
|
|
14
|
+
declare const SERVERS: Record<string, () => Promise<unknown>>;
|
|
15
|
+
declare const requested: string | undefined;
|
|
16
|
+
declare const launch: (() => Promise<unknown>) | undefined;
|
|
17
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG;AAEH,QAAA,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAanD,CAAC;AAEF,QAAA,MAAM,SAAS,oBAAkB,CAAC;AAClC,QAAA,MAAM,MAAM,SAhBwB,OAAO,CAAC,OAAO,CAAC,aAgBK,CAAC"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* revealui-mcp — launch a first-party RevealUI MCP server by name.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* revealui-mcp <server>
|
|
8
|
+
* npx @revealui/mcp <server>
|
|
9
|
+
*
|
|
10
|
+
* Each server module self-starts on import (its own main() runs). The
|
|
11
|
+
* allowlist below is static so no user input ever reaches an import path.
|
|
12
|
+
* code-validator is repo-only (tsx, excluded from the build) and is not
|
|
13
|
+
* listed here.
|
|
14
|
+
*/
|
|
15
|
+
const SERVERS = {
|
|
16
|
+
contracts: () => import('./servers/contracts.js'),
|
|
17
|
+
docs: () => import('./servers/docs.js'),
|
|
18
|
+
neon: () => import('./servers/neon.js'),
|
|
19
|
+
'next-devtools': () => import('./servers/next-devtools.js'),
|
|
20
|
+
playwright: () => import('./servers/playwright.js'),
|
|
21
|
+
'revealui-content': () => import('./servers/revealui-content.js'),
|
|
22
|
+
'revealui-email': () => import('./servers/revealui-email.js'),
|
|
23
|
+
'revealui-memory': () => import('./servers/revealui-memory.js'),
|
|
24
|
+
'revealui-stripe': () => import('./servers/revealui-stripe.js'),
|
|
25
|
+
stripe: () => import('./servers/stripe.js'),
|
|
26
|
+
supabase: () => import('./servers/supabase.js'),
|
|
27
|
+
vercel: () => import('./servers/vercel.js'),
|
|
28
|
+
};
|
|
29
|
+
const requested = process.argv[2];
|
|
30
|
+
const launch = requested ? SERVERS[requested] : undefined;
|
|
31
|
+
if (!launch) {
|
|
32
|
+
const list = Object.keys(SERVERS).join('\n ');
|
|
33
|
+
process.stderr.write(`Usage: revealui-mcp <server>\n\nAvailable servers:\n ${list}\n`);
|
|
34
|
+
process.exit(2);
|
|
35
|
+
}
|
|
36
|
+
launch().catch((error) => {
|
|
37
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
38
|
+
process.stderr.write(`revealui-mcp: failed to start ${requested}: ${message}\n`);
|
|
39
|
+
process.exit(1);
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AAEA;;;;;;;;;;;GAWG;AAEH,MAAM,OAAO,GAA2C;IACtD,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC;IACjD,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC;IACvC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC;IACvC,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,4BAA4B,CAAC;IAC3D,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC;IACnD,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,+BAA+B,CAAC;IACjE,gBAAgB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,6BAA6B,CAAC;IAC7D,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC;IAC/D,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC;IAC/D,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC;IAC3C,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC;IAC/C,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC;CAC5C,CAAC;AAEF,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAE1D,IAAI,CAAC,MAAM,EAAE,CAAC;IACZ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yDAAyD,IAAI,IAAI,CAAC,CAAC;IACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAChC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,SAAS,KAAK,OAAO,IAAI,CAAC,CAAC;IACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -26,13 +26,13 @@ export { disposeAllAdapters, generateIdempotencyKey, generateUniqueIdempotencyKe
|
|
|
26
26
|
export { type ContractCategoryName, type ContractCategorySchemas, type CreateContractsServerOptions, createContractsServer, getContractsCatalog, REGISTERED_CATEGORIES, validatePayload, } from './servers/factories/contracts.js';
|
|
27
27
|
export { type CreateDocsServerOptions, createDocsServer, enumeratePackages, getLibraryDoc, type LibraryDoc, listLibraries, type PackageEntry, type ResolveResult, resolveLibrary, } from './servers/factories/docs.js';
|
|
28
28
|
export { type AssembledContext, type CreateKnowledgeGraphServerOptions, createKnowledgeGraphServer, } from './servers/factories/knowledge-graph.js';
|
|
29
|
-
export { createRevealuiContentServer, setCredentials as setRevealuiContentCredentials, } from './servers/factories/revealui-content.js';
|
|
29
|
+
export { type CreateRevealuiContentServerOptions, type CredentialsProvider, createRevealuiContentServer, type McpToolAuditOutcome, type McpToolAuditRecord, type McpToolAuditSink, type McpToolCallContext, type ResolvedApiCredentials, setCredentials as setRevealuiContentCredentials, } from './servers/factories/revealui-content.js';
|
|
30
30
|
export { launchNeonMcp } from './servers/neon.js';
|
|
31
31
|
export { launchNextDevtoolsMcp } from './servers/next-devtools.js';
|
|
32
32
|
export { launchPlaywrightMcp } from './servers/playwright.js';
|
|
33
33
|
export { launchStripeMcp } from './servers/stripe.js';
|
|
34
34
|
export { launchSupabaseMcp } from './servers/supabase.js';
|
|
35
35
|
export { launchVercelMcp } from './servers/vercel.js';
|
|
36
|
-
export { createNodeStreamableHttpHandler, type StreamableHttpHandler, type StreamableHttpHandlerOptions, } from './streamable-http.js';
|
|
36
|
+
export { createNodeStreamableHttpHandler, type StreamableHttpControl, type StreamableHttpHandler, type StreamableHttpHandlerOptions, } from './streamable-http.js';
|
|
37
37
|
export { type McpEvent, type McpEventHandler, type McpEventType, McpTelemetry, } from './telemetry.js';
|
|
38
38
|
//# 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":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,mBAAmB;AACnB,OAAO,EACL,aAAa,EACb,eAAe,EACf,iBAAiB,GAKlB,MAAM,kBAAkB,CAAC;AAC1B,2DAA2D;AAC3D,OAAO,EACL,iBAAiB,EAEjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,wFAAwF;AACxF,OAAO,EAiBL,kBAAkB,EAClB,SAAS,EAET,oBAAoB,GAoBrB,MAAM,aAAa,CAAC;AACrB,gBAAgB;AAChB,OAAO,EACL,YAAY,GAGb,MAAM,mBAAmB,CAAC;AAC3B,0CAA0C;AAC1C,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,gCAAgC,EAEhC,sBAAsB,EAGtB,uBAAuB,EACvB,gBAAgB,EAGhB,yBAAyB,EACzB,iBAAiB,EACjB,gCAAgC,EAEhC,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,0DAA0D;AAC1D,OAAO,EAEL,aAAa,GAKd,MAAM,iBAAiB,CAAC;AAGzB,kFAAkF;AAClF,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EAEnB,gBAAgB,EAEhB,aAAa,EAKb,aAAa,GAGd,MAAM,YAAY,CAAC;AACpB,yCAAyC;AACzC,OAAO,EACL,eAAe,GAIhB,MAAM,eAAe,CAAC;AACvB,yCAAyC;AACzC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GAGrB,MAAM,uBAAuB,CAAC;AAC/B,2BAA2B;AAC3B,OAAO,EACL,mBAAmB,EACnB,cAAc,GAIf,MAAM,mBAAmB,CAAC;AAC3B,oBAAoB;AACpB,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,4BAA4B,EAE5B,UAAU,GAEX,MAAM,sBAAsB,CAAC;AAC9B,4EAA4E;AAC5E,OAAO,EAIL,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAC1C,+EAA+E;AAC/E,OAAO,EAEL,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EAEb,aAAa,EAGb,cAAc,GACf,MAAM,6BAA6B,CAAC;AACrC,2EAA2E;AAC3E,+EAA+E;AAC/E,OAAO,EAGL,0BAA0B,GAC3B,MAAM,wCAAwC,CAAC;AAChD,qEAAqE;AACrE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,mBAAmB;AACnB,OAAO,EACL,aAAa,EACb,eAAe,EACf,iBAAiB,GAKlB,MAAM,kBAAkB,CAAC;AAC1B,2DAA2D;AAC3D,OAAO,EACL,iBAAiB,EAEjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,wFAAwF;AACxF,OAAO,EAiBL,kBAAkB,EAClB,SAAS,EAET,oBAAoB,GAoBrB,MAAM,aAAa,CAAC;AACrB,gBAAgB;AAChB,OAAO,EACL,YAAY,GAGb,MAAM,mBAAmB,CAAC;AAC3B,0CAA0C;AAC1C,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,gCAAgC,EAEhC,sBAAsB,EAGtB,uBAAuB,EACvB,gBAAgB,EAGhB,yBAAyB,EACzB,iBAAiB,EACjB,gCAAgC,EAEhC,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,0DAA0D;AAC1D,OAAO,EAEL,aAAa,GAKd,MAAM,iBAAiB,CAAC;AAGzB,kFAAkF;AAClF,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EAEnB,gBAAgB,EAEhB,aAAa,EAKb,aAAa,GAGd,MAAM,YAAY,CAAC;AACpB,yCAAyC;AACzC,OAAO,EACL,eAAe,GAIhB,MAAM,eAAe,CAAC;AACvB,yCAAyC;AACzC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GAGrB,MAAM,uBAAuB,CAAC;AAC/B,2BAA2B;AAC3B,OAAO,EACL,mBAAmB,EACnB,cAAc,GAIf,MAAM,mBAAmB,CAAC;AAC3B,oBAAoB;AACpB,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,4BAA4B,EAE5B,UAAU,GAEX,MAAM,sBAAsB,CAAC;AAC9B,4EAA4E;AAC5E,OAAO,EAIL,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAC1C,+EAA+E;AAC/E,OAAO,EAEL,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EAEb,aAAa,EAGb,cAAc,GACf,MAAM,6BAA6B,CAAC;AACrC,2EAA2E;AAC3E,+EAA+E;AAC/E,OAAO,EAGL,0BAA0B,GAC3B,MAAM,wCAAwC,CAAC;AAChD,qEAAqE;AACrE,OAAO,EAGL,2BAA2B,EAM3B,cAAc,IAAI,6BAA6B,GAChD,MAAM,yCAAyC,CAAC;AACjD,mBAAmB;AACnB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,sDAAsD;AACtD,OAAO,EACL,+BAA+B,GAIhC,MAAM,sBAAsB,CAAC;AAC9B,8CAA8C;AAC9C,OAAO,EAIL,YAAY,GACb,MAAM,gBAAgB,CAAC"}
|
package/dist/oauth.d.ts
CHANGED
|
@@ -39,58 +39,8 @@
|
|
|
39
39
|
*/
|
|
40
40
|
import type { OAuthClientProvider } from '@modelcontextprotocol/sdk/client/auth.js';
|
|
41
41
|
import type { OAuthClientInformation, OAuthClientInformationFull, OAuthClientInformationMixed, OAuthClientMetadata, OAuthTokens } from '@modelcontextprotocol/sdk/shared/auth.js';
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
*
|
|
45
|
-
* Keys are revvault-style slash-delimited paths (e.g. `mcp/acme/linear/tokens`).
|
|
46
|
-
* Values are opaque strings; the provider JSON-encodes structured values
|
|
47
|
-
* before calling `set`.
|
|
48
|
-
*/
|
|
49
|
-
export interface Vault {
|
|
50
|
-
/** Returns the value at `path`, or `undefined` if not present. */
|
|
51
|
-
get(path: string): Promise<string | undefined>;
|
|
52
|
-
/** Stores `value` at `path`, overwriting any prior value. */
|
|
53
|
-
set(path: string, value: string): Promise<void>;
|
|
54
|
-
/** Deletes the value at `path`. No-op if not present. */
|
|
55
|
-
delete(path: string): Promise<void>;
|
|
56
|
-
/**
|
|
57
|
-
* Lists every path that starts with `prefix`. Returns an empty array when
|
|
58
|
-
* no matches exist. The return order is implementation-defined.
|
|
59
|
-
*
|
|
60
|
-
* Used by admin catalog tooling to enumerate configured servers without
|
|
61
|
-
* requiring an out-of-band registry.
|
|
62
|
-
*/
|
|
63
|
-
list(prefix: string): Promise<string[]>;
|
|
64
|
-
}
|
|
65
|
-
export interface RevvaultVaultOptions {
|
|
66
|
-
/** Path to the `revvault` binary. Defaults to `~/.local/bin/revvault`. */
|
|
67
|
-
binPath?: string;
|
|
68
|
-
/**
|
|
69
|
-
* Age identity path. Passed via `REVVAULT_IDENTITY` env var. Defaults to
|
|
70
|
-
* `~/.config/age/keys.txt`, matching revvault's own default.
|
|
71
|
-
*/
|
|
72
|
-
identityPath?: string;
|
|
73
|
-
/** Spawn timeout in ms. Defaults to 10_000. */
|
|
74
|
-
timeoutMs?: number;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Creates a {@link Vault} backed by the `revvault` CLI. Requires `revvault` to
|
|
78
|
-
* be installed on the host and the age identity to be readable.
|
|
79
|
-
*
|
|
80
|
-
* Production default for RevealUI deployments. In CI or test environments
|
|
81
|
-
* without revvault, prefer {@link createMemoryVault}.
|
|
82
|
-
*/
|
|
83
|
-
export declare function createRevvaultVault(options?: RevvaultVaultOptions): Vault;
|
|
84
|
-
export declare class RevvaultError extends Error {
|
|
85
|
-
constructor(message: string);
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Creates an in-memory {@link Vault} backed by a `Map`. Intended for tests and
|
|
89
|
-
* for short-lived processes where persistence is not required.
|
|
90
|
-
*
|
|
91
|
-
* An optional `seed` object prepopulates the map.
|
|
92
|
-
*/
|
|
93
|
-
export declare function createMemoryVault(seed?: Record<string, string>): Vault;
|
|
42
|
+
import { createMemoryVault, createRevvaultVault, RevvaultError, type RevvaultVaultOptions, type Vault } from '@revealui/setup/revvault';
|
|
43
|
+
export { createMemoryVault, createRevvaultVault, RevvaultError, type RevvaultVaultOptions, type Vault, };
|
|
94
44
|
/**
|
|
95
45
|
* Canonical revvault path layout for MCP OAuth credentials. Exported so admin
|
|
96
46
|
* tooling and audits can introspect the layout without reimplementing it.
|
package/dist/oauth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;
|
|
1
|
+
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}
|
package/dist/oauth.js
CHANGED
|
@@ -37,145 +37,8 @@
|
|
|
37
37
|
* rotation is transparent — the rotated refresh_token flows through
|
|
38
38
|
* `saveTokens` verbatim.
|
|
39
39
|
*/
|
|
40
|
-
import {
|
|
41
|
-
|
|
42
|
-
import { join } from 'node:path';
|
|
43
|
-
/**
|
|
44
|
-
* Creates a {@link Vault} backed by the `revvault` CLI. Requires `revvault` to
|
|
45
|
-
* be installed on the host and the age identity to be readable.
|
|
46
|
-
*
|
|
47
|
-
* Production default for RevealUI deployments. In CI or test environments
|
|
48
|
-
* without revvault, prefer {@link createMemoryVault}.
|
|
49
|
-
*/
|
|
50
|
-
export function createRevvaultVault(options = {}) {
|
|
51
|
-
const binPath = options.binPath ?? join(homedir(), '.local/bin/revvault');
|
|
52
|
-
const identityPath = options.identityPath ??
|
|
53
|
-
process.env.REVVAULT_IDENTITY ??
|
|
54
|
-
join(homedir(), '.config/age/keys.txt');
|
|
55
|
-
const timeoutMs = options.timeoutMs ?? 10_000;
|
|
56
|
-
const env = { ...process.env, REVVAULT_IDENTITY: identityPath };
|
|
57
|
-
const run = (args, stdin) => new Promise((resolve, reject) => {
|
|
58
|
-
const child = spawn(binPath, args, { env, timeout: timeoutMs });
|
|
59
|
-
let stdout = '';
|
|
60
|
-
let stderr = '';
|
|
61
|
-
child.stdout.setEncoding('utf8');
|
|
62
|
-
child.stderr.setEncoding('utf8');
|
|
63
|
-
child.stdout.on('data', (chunk) => {
|
|
64
|
-
stdout += chunk;
|
|
65
|
-
});
|
|
66
|
-
child.stderr.on('data', (chunk) => {
|
|
67
|
-
stderr += chunk;
|
|
68
|
-
});
|
|
69
|
-
child.on('error', reject);
|
|
70
|
-
child.on('close', (code) => {
|
|
71
|
-
resolve({ code, stdout, stderr });
|
|
72
|
-
});
|
|
73
|
-
if (stdin !== undefined) {
|
|
74
|
-
child.stdin.end(stdin);
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
child.stdin.end();
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
return {
|
|
81
|
-
async get(path) {
|
|
82
|
-
assertSafePath(path);
|
|
83
|
-
const { code, stdout, stderr } = await run(['get', '--full', path]);
|
|
84
|
-
if (code !== 0) {
|
|
85
|
-
throw new RevvaultError(`revvault get exited ${code}: ${stderr.trim()}`);
|
|
86
|
-
}
|
|
87
|
-
if (stdout.length === 0 && /not found/i.test(stderr)) {
|
|
88
|
-
return undefined;
|
|
89
|
-
}
|
|
90
|
-
if (stdout.length === 0) {
|
|
91
|
-
throw new RevvaultError(`revvault get returned empty output: ${stderr.trim()}`);
|
|
92
|
-
}
|
|
93
|
-
return stdout.endsWith('\n') ? stdout.slice(0, -1) : stdout;
|
|
94
|
-
},
|
|
95
|
-
async set(path, value) {
|
|
96
|
-
assertSafePath(path);
|
|
97
|
-
const { code, stderr } = await run(['set', '--force', path], value);
|
|
98
|
-
if (code !== 0) {
|
|
99
|
-
throw new RevvaultError(`revvault set exited ${code}: ${stderr.trim()}`);
|
|
100
|
-
}
|
|
101
|
-
},
|
|
102
|
-
async delete(path) {
|
|
103
|
-
assertSafePath(path);
|
|
104
|
-
const { code, stderr } = await run(['delete', '--force', path]);
|
|
105
|
-
if (code !== 0 && !/not found/i.test(stderr)) {
|
|
106
|
-
throw new RevvaultError(`revvault delete exited ${code}: ${stderr.trim()}`);
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
async list(prefix) {
|
|
110
|
-
assertSafePrefix(prefix);
|
|
111
|
-
const { code, stdout, stderr } = await run(['list', prefix]);
|
|
112
|
-
if (code !== 0) {
|
|
113
|
-
throw new RevvaultError(`revvault list exited ${code}: ${stderr.trim()}`);
|
|
114
|
-
}
|
|
115
|
-
// `revvault list` emits one path per line. Empty / informational output
|
|
116
|
-
// (e.g. `No secrets found.`) returns an empty array.
|
|
117
|
-
return stdout
|
|
118
|
-
.split('\n')
|
|
119
|
-
.map((line) => line.trim())
|
|
120
|
-
.filter((line) => line.length > 0 && line.startsWith(prefix));
|
|
121
|
-
},
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
/** Reject shell-metacharacter and traversal patterns in vault paths. */
|
|
125
|
-
function assertSafePath(path) {
|
|
126
|
-
if (!/^[A-Za-z0-9/_\-.]+$/.test(path)) {
|
|
127
|
-
throw new RevvaultError(`Vault path contains disallowed characters: ${path}`);
|
|
128
|
-
}
|
|
129
|
-
if (path.includes('..') || path.startsWith('/') || path.endsWith('/')) {
|
|
130
|
-
throw new RevvaultError(`Vault path is not well-formed: ${path}`);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
/** Same rules as {@link assertSafePath} but allows the trailing slash of a prefix. */
|
|
134
|
-
function assertSafePrefix(prefix) {
|
|
135
|
-
if (!/^[A-Za-z0-9/_\-.]+$/.test(prefix)) {
|
|
136
|
-
throw new RevvaultError(`Vault prefix contains disallowed characters: ${prefix}`);
|
|
137
|
-
}
|
|
138
|
-
if (prefix.includes('..') || prefix.startsWith('/')) {
|
|
139
|
-
throw new RevvaultError(`Vault prefix is not well-formed: ${prefix}`);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
export class RevvaultError extends Error {
|
|
143
|
-
constructor(message) {
|
|
144
|
-
super(message);
|
|
145
|
-
this.name = 'RevvaultError';
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
// ---------------------------------------------------------------------------
|
|
149
|
-
// In-memory vault (tests / ephemeral flows)
|
|
150
|
-
// ---------------------------------------------------------------------------
|
|
151
|
-
/**
|
|
152
|
-
* Creates an in-memory {@link Vault} backed by a `Map`. Intended for tests and
|
|
153
|
-
* for short-lived processes where persistence is not required.
|
|
154
|
-
*
|
|
155
|
-
* An optional `seed` object prepopulates the map.
|
|
156
|
-
*/
|
|
157
|
-
export function createMemoryVault(seed) {
|
|
158
|
-
const store = new Map(seed ? Object.entries(seed) : undefined);
|
|
159
|
-
return {
|
|
160
|
-
async get(path) {
|
|
161
|
-
return store.get(path);
|
|
162
|
-
},
|
|
163
|
-
async set(path, value) {
|
|
164
|
-
store.set(path, value);
|
|
165
|
-
},
|
|
166
|
-
async delete(path) {
|
|
167
|
-
store.delete(path);
|
|
168
|
-
},
|
|
169
|
-
async list(prefix) {
|
|
170
|
-
const out = [];
|
|
171
|
-
for (const key of store.keys()) {
|
|
172
|
-
if (key.startsWith(prefix))
|
|
173
|
-
out.push(key);
|
|
174
|
-
}
|
|
175
|
-
return out;
|
|
176
|
-
},
|
|
177
|
-
};
|
|
178
|
-
}
|
|
40
|
+
import { createMemoryVault, createRevvaultVault, RevvaultError, } from '@revealui/setup/revvault';
|
|
41
|
+
export { createMemoryVault, createRevvaultVault, RevvaultError, };
|
|
179
42
|
/** Build the {@link McpOAuthPaths} for a given `(tenant, server)` pair. */
|
|
180
43
|
export function mcpOAuthPaths(tenant, server) {
|
|
181
44
|
const prefix = `mcp/${tenant}/${server}`;
|
package/dist/oauth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -2864,10 +2864,10 @@ declare const SCHEMA_REGISTRY: {
|
|
|
2864
2864
|
readonly description: "DevKit profile id (Max-tier paywall feature) — one of revealui, agents, claude, cursor, zed.";
|
|
2865
2865
|
readonly schemas: {
|
|
2866
2866
|
readonly profileId: z.ZodEnum<{
|
|
2867
|
-
cursor: "cursor";
|
|
2868
2867
|
revealui: "revealui";
|
|
2869
2868
|
agents: "agents";
|
|
2870
2869
|
claude: "claude";
|
|
2870
|
+
cursor: "cursor";
|
|
2871
2871
|
zed: "zed";
|
|
2872
2872
|
}>;
|
|
2873
2873
|
};
|
|
@@ -6796,6 +6796,8 @@ declare const SCHEMA_REGISTRY: {
|
|
|
6796
6796
|
readonly description: "Supported LLM provider id — one of groq, huggingface, inference-snaps, ollama. Open models only.";
|
|
6797
6797
|
readonly schemas: {
|
|
6798
6798
|
readonly providerId: z.ZodEnum<{
|
|
6799
|
+
anthropic: "anthropic";
|
|
6800
|
+
openai: "openai";
|
|
6799
6801
|
groq: "groq";
|
|
6800
6802
|
huggingface: "huggingface";
|
|
6801
6803
|
"inference-snaps": "inference-snaps";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/servers/factories/contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAWnE,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAoK3B,QAAA,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/servers/factories/contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAWnE,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAoK3B,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2N6B,CAAC;AAEnD,KAAK,YAAY,GAAG,MAAM,OAAO,eAAe,CAAC;AAEjD;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAKhD,eAAO,MAAM,qBAAqB,EAAiB,SAAS,MAAM,EAAE,CAAC;AAMrE;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,sGAAsG;IACtG,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,CAqB3F;AAyBD,UAAU,eAAe;IACvB,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,KAAK,CAAC;IACf,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;QACjC,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ;AAED,KAAK,cAAc,GAAG,eAAe,GAAG,eAAe,CAAC;AAExD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,GACZ,cAAc,CAoChB;AA2ID,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,4BAA4B,GAAG,MAAM,CA6JpF"}
|
|
@@ -33,6 +33,94 @@
|
|
|
33
33
|
*/
|
|
34
34
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
35
35
|
import { z } from 'zod/v4';
|
|
36
|
+
/** Resolved REST credentials for one tool call. */
|
|
37
|
+
export interface ResolvedApiCredentials {
|
|
38
|
+
apiUrl: string;
|
|
39
|
+
apiKey: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Per-request context handed to the governed seams. Derived from the MCP
|
|
43
|
+
* request handler's `extra` (the transport threads `authInfo` from the
|
|
44
|
+
* authenticated HTTP request; `sessionId` is the routing key). `undefined`
|
|
45
|
+
* on the stdio path.
|
|
46
|
+
*/
|
|
47
|
+
export interface McpToolCallContext {
|
|
48
|
+
authInfo?: unknown;
|
|
49
|
+
sessionId?: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Governed-path credential resolver. Returns the credentials to forward for a
|
|
53
|
+
* single tool call — on the governed path, the caller's own bearer token so
|
|
54
|
+
* the REST layer enforces `access.read` against the real user. May throw /
|
|
55
|
+
* reject when no per-request credential exists; the call then fails closed.
|
|
56
|
+
*/
|
|
57
|
+
export type CredentialsProvider = (ctx: McpToolCallContext) => Promise<ResolvedApiCredentials> | ResolvedApiCredentials;
|
|
58
|
+
/** Terminal outcome of a governed tool call, as recorded in the receipt. */
|
|
59
|
+
export type McpToolAuditOutcome = 'invoked' | 'denied' | 'failed';
|
|
60
|
+
/**
|
|
61
|
+
* A governed tool-call receipt. Raw arguments are NEVER included — only a
|
|
62
|
+
* sha256 digest of the canonical JSON plus an allowlisted scalar subset
|
|
63
|
+
* (`collection`, `site_id`) that is safe to store in the clear.
|
|
64
|
+
*/
|
|
65
|
+
export interface McpToolAuditRecord {
|
|
66
|
+
outcome: McpToolAuditOutcome;
|
|
67
|
+
tool: string;
|
|
68
|
+
/** sha256 (hex) of the canonical JSON of the raw arguments. */
|
|
69
|
+
argsDigest: string;
|
|
70
|
+
/** Allowlisted non-secret identifiers pulled from the validated args. */
|
|
71
|
+
scalars: Record<string, string>;
|
|
72
|
+
durationMs: number;
|
|
73
|
+
httpStatus?: number;
|
|
74
|
+
/**
|
|
75
|
+
* Why a call was denied, when `outcome === 'denied'`. `'authz'` for a
|
|
76
|
+
* deny-by-default tool-permission miss (I-7); `'rate-limit'` when the
|
|
77
|
+
* per-user quota is exhausted (I-8). Absent for a validation/unknown-tool
|
|
78
|
+
* denial and for non-denied outcomes.
|
|
79
|
+
*/
|
|
80
|
+
reason?: string;
|
|
81
|
+
/** The MCP client that connected (from the `initialize` handshake). */
|
|
82
|
+
clientInfo?: {
|
|
83
|
+
name: string;
|
|
84
|
+
version: string;
|
|
85
|
+
};
|
|
86
|
+
context: McpToolCallContext;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Governed-path audit sink. Resolves when the receipt is durably written;
|
|
90
|
+
* rejects when the write failed. For a mutating tool a rejection fails the
|
|
91
|
+
* call (fail-closed); for a read tool it degrades to log-and-continue.
|
|
92
|
+
*/
|
|
93
|
+
export type McpToolAuditSink = (record: McpToolAuditRecord) => Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Deny-by-default per-tool authorization gate (GAP-371 Phase 2, I-7). Returns
|
|
96
|
+
* true iff the identity threaded through `ctx.authInfo` may execute `toolName`
|
|
97
|
+
* at its server-derived tier and role. Governs BOTH `tools/list` filtering and
|
|
98
|
+
* `tools/call` execution — a tool absent from the list is still independently
|
|
99
|
+
* denied on a direct call. Absent on the stdio path (every tool allowed).
|
|
100
|
+
*/
|
|
101
|
+
export type McpToolAuthorizer = (ctx: McpToolCallContext, toolName: string) => boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Per-call rate-limit gate (GAP-371 Phase 2, I-8). Consumed once per authorized
|
|
104
|
+
* `tools/call`, keyed by the caller's user + tool with limits from the
|
|
105
|
+
* server-derived tier. Returns false when the quota is exhausted. Absent on the
|
|
106
|
+
* stdio path (unlimited). Never consumed for `tools/list` or for a denied call.
|
|
107
|
+
*/
|
|
108
|
+
export type McpToolRateLimiter = (ctx: McpToolCallContext, toolName: string) => Promise<boolean> | boolean;
|
|
109
|
+
/** One usage-meter event, emitted once per EXECUTED tool call (I-8 tail). */
|
|
110
|
+
export interface McpToolMeterEvent {
|
|
111
|
+
tool: string;
|
|
112
|
+
durationMs: number;
|
|
113
|
+
/** True when the tool surfaced an error (bad args reaching the backend, throw, non-2xx). */
|
|
114
|
+
errored: boolean;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Usage-meter sink (GAP-371 Phase 2). Fired once per tool call that actually
|
|
118
|
+
* executed (success or failure) — never for an authz/rate-limit denial, which
|
|
119
|
+
* are audit events, not billable usage. Sink errors are swallowed: metering
|
|
120
|
+
* must never break the underlying tool call. Billing and audit are separate
|
|
121
|
+
* sinks by design.
|
|
122
|
+
*/
|
|
123
|
+
export type McpToolMeterSink = (ctx: McpToolCallContext, event: McpToolMeterEvent) => void | Promise<void>;
|
|
36
124
|
/**
|
|
37
125
|
* Set credential overrides for this server. Called by the hypervisor with
|
|
38
126
|
* resolved tenant credentials (or by an HTTP launcher before handing the
|
|
@@ -98,6 +186,44 @@ export interface CreateRevealuiContentServerOptions {
|
|
|
98
186
|
* directly; out-of-process subprocess consumers leave it unset.
|
|
99
187
|
*/
|
|
100
188
|
collectionsProvider?: CollectionsProvider;
|
|
189
|
+
/**
|
|
190
|
+
* Governed-path (GAP-371) per-request credential resolver. When set, it is
|
|
191
|
+
* the SOLE source of tool-call credentials — the `REVEALUI_API_KEY` /
|
|
192
|
+
* `setCredentials()` fallback is never consulted (invariant I-4). Leave
|
|
193
|
+
* unset for the stdio launcher to keep the process-global env-key model.
|
|
194
|
+
*/
|
|
195
|
+
credentialsProvider?: CredentialsProvider;
|
|
196
|
+
/**
|
|
197
|
+
* Governed-path audit sink. When set, every `tools/call` produces a receipt
|
|
198
|
+
* (invariant I-5). Mutating tools (see `mutatingTools`) fail closed if the
|
|
199
|
+
* receipt cannot be written; read tools degrade to log-and-continue.
|
|
200
|
+
*/
|
|
201
|
+
auditSink?: McpToolAuditSink;
|
|
202
|
+
/**
|
|
203
|
+
* Names of tools that mutate state and therefore require a durable receipt
|
|
204
|
+
* BEFORE they run. Phase 1 exposes read tools only, so this is empty in
|
|
205
|
+
* production; it exists so Phase 2 write tools inherit the fail-closed path
|
|
206
|
+
* (and so the branch is testable now with a simulated mutating tool).
|
|
207
|
+
*/
|
|
208
|
+
mutatingTools?: ReadonlySet<string>;
|
|
209
|
+
/**
|
|
210
|
+
* Governed-path deny-by-default per-tool authorization (I-7). When set, it
|
|
211
|
+
* gates BOTH `tools/list` (advertised set) and `tools/call` (execution). A
|
|
212
|
+
* tool the caller may not execute is neither listed nor callable. Leave unset
|
|
213
|
+
* for the stdio launcher (no per-tool authz — the OS account is the boundary).
|
|
214
|
+
*/
|
|
215
|
+
toolAuthorizer?: McpToolAuthorizer;
|
|
216
|
+
/**
|
|
217
|
+
* Governed-path per-call rate limiter (I-8). When set, an authorized
|
|
218
|
+
* `tools/call` consumes one token; exhaustion yields a JSON-RPC error and a
|
|
219
|
+
* `mcp:tool:denied` receipt with `reason: 'rate-limit'`. Unset → unlimited.
|
|
220
|
+
*/
|
|
221
|
+
rateLimiter?: McpToolRateLimiter;
|
|
222
|
+
/**
|
|
223
|
+
* Governed-path usage-meter sink. When set, one meter event fires per
|
|
224
|
+
* executed tool call (source `agent` downstream). Unset → no metering.
|
|
225
|
+
*/
|
|
226
|
+
meterSink?: McpToolMeterSink;
|
|
101
227
|
}
|
|
102
228
|
/**
|
|
103
229
|
* Create a fresh `revealui-content` MCP Server instance. Safe to call
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revealui-content.d.ts","sourceRoot":"","sources":["../../../src/servers/factories/revealui-content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;
|
|
1
|
+
{"version":3,"file":"revealui-content.d.ts","sourceRoot":"","sources":["../../../src/servers/factories/revealui-content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAWnE,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAe3B,mDAAmD;AACnD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAChC,GAAG,EAAE,kBAAkB,KACpB,OAAO,CAAC,sBAAsB,CAAC,GAAG,sBAAsB,CAAC;AAE9D,4EAA4E;AAC5E,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAElE;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;AAEvF;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,GAAG,EAAE,kBAAkB,EACvB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAEhC,6EAA6E;AAC7E,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,GAAG,EAAE,kBAAkB,EACvB,KAAK,EAAE,iBAAiB,KACrB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAyC1B;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAElE;AAkDD,eAAO,MAAM,mBAAmB;;;kBAKrB,CAAC;AAEZ,eAAO,MAAM,qBAAqB;;;;;;kBAQvB,CAAC;AAEZ,eAAO,MAAM,oBAAoB;;;kBAKtB,CAAC;AAEZ,eAAO,MAAM,mBAAmB;;;;kBAMrB,CAAC;AAEZ,eAAO,MAAM,mBAAmB;;kBAIrB,CAAC;AAuFZ;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,CAAC;AAE/E,MAAM,WAAW,kCAAkC;IACjD;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAE1C;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAE1C;;;;OAIG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAE7B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,iBAAiB,CAAC;IAEnC;;;;OAIG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAEjC;;;OAGG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B;AAkJD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,kCAAkC,GAAG,MAAM,CAgZhG"}
|