@zhivex-ai/core 1.23.0 → 1.24.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/agent/children.d.ts.map +1 -1
- package/dist/agent/children.js +1 -0
- package/dist/agent/children.js.map +1 -1
- package/dist/agent/compaction.d.ts +6 -2
- package/dist/agent/compaction.d.ts.map +1 -1
- package/dist/agent/compaction.js +25 -16
- package/dist/agent/compaction.js.map +1 -1
- package/dist/agent/context.d.ts +3 -0
- package/dist/agent/context.d.ts.map +1 -1
- package/dist/agent/context.js +20 -2
- package/dist/agent/context.js.map +1 -1
- package/dist/agent/execution.d.ts.map +1 -1
- package/dist/agent/execution.js +177 -15
- package/dist/agent/execution.js.map +1 -1
- package/dist/agent-budget-coordinator.d.ts +23 -0
- package/dist/agent-budget-coordinator.d.ts.map +1 -0
- package/dist/agent-budget-coordinator.js +109 -0
- package/dist/agent-budget-coordinator.js.map +1 -0
- package/dist/agent-state.d.ts.map +1 -1
- package/dist/agent-state.js +49 -0
- package/dist/agent-state.js.map +1 -1
- package/dist/agents-entry.d.ts +1 -1
- package/dist/agents-entry.d.ts.map +1 -1
- package/dist/api-stability.d.ts.map +1 -1
- package/dist/api-stability.js +2 -0
- package/dist/api-stability.js.map +1 -1
- package/dist/catalog-contracts.d.ts +29 -1
- package/dist/catalog-contracts.d.ts.map +1 -1
- package/dist/catalog-contracts.js +97 -2
- package/dist/catalog-contracts.js.map +1 -1
- package/dist/catalog-entry.d.ts +4 -0
- package/dist/catalog-entry.d.ts.map +1 -0
- package/dist/catalog-entry.js +4 -0
- package/dist/catalog-entry.js.map +1 -0
- package/dist/catalog-recommendation.d.ts +39 -0
- package/dist/catalog-recommendation.d.ts.map +1 -0
- package/dist/catalog-recommendation.js +133 -0
- package/dist/catalog-recommendation.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-http-common.d.ts +28 -0
- package/dist/mcp-http-common.d.ts.map +1 -0
- package/dist/mcp-http-common.js +92 -0
- package/dist/mcp-http-common.js.map +1 -0
- package/dist/mcp-http.d.ts +34 -0
- package/dist/mcp-http.d.ts.map +1 -0
- package/dist/mcp-http.js +225 -0
- package/dist/mcp-http.js.map +1 -0
- package/dist/mcp-oauth.d.ts +48 -0
- package/dist/mcp-oauth.d.ts.map +1 -0
- package/dist/mcp-oauth.js +165 -0
- package/dist/mcp-oauth.js.map +1 -0
- package/dist/mcp.d.ts +69 -0
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js.map +1 -1
- package/dist/safety-policy.js +2 -2
- package/dist/safety-policy.js.map +1 -1
- package/dist/types/agent-state.d.ts +43 -0
- package/dist/types/agent-state.d.ts.map +1 -1
- package/package.json +7 -3
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface McpHttpAuthProvider {
|
|
2
|
+
getAccessToken(input: {
|
|
3
|
+
resource: string;
|
|
4
|
+
abortSignal: AbortSignal;
|
|
5
|
+
}): Promise<string | undefined>;
|
|
6
|
+
}
|
|
7
|
+
/** Stable machine-readable failures; messages never contain remote bodies or credentials. */
|
|
8
|
+
export type McpHttpErrorCode = "AUTH_REQUIRED" | "AUTH_EXPIRED" | "AUTH_REJECTED" | "INDETERMINATE" | "PROTOCOL_ERROR" | "LIMIT_EXCEEDED" | "DESTINATION_REJECTED" | "UNSUPPORTED_CAPABILITY";
|
|
9
|
+
export interface McpAuthorizationChallenge {
|
|
10
|
+
resourceMetadataUrl?: string;
|
|
11
|
+
scope?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare class McpHttpError extends Error {
|
|
14
|
+
readonly code: McpHttpErrorCode;
|
|
15
|
+
readonly authorization?: McpAuthorizationChallenge | undefined;
|
|
16
|
+
readonly name = "McpHttpError";
|
|
17
|
+
constructor(code: McpHttpErrorCode, message: string, authorization?: McpAuthorizationChallenge | undefined);
|
|
18
|
+
}
|
|
19
|
+
export type McpDestinationPurpose = "server" | "discovery" | "authorization" | "token";
|
|
20
|
+
/** Must enforce deployment-specific DNS/IP and tenant isolation in addition to URL policy. */
|
|
21
|
+
export type McpDestinationPolicy = (url: URL, purpose: McpDestinationPurpose) => boolean | Promise<boolean>;
|
|
22
|
+
export declare function checkMcpDestination(url: string | URL, purpose: McpDestinationPurpose, policy?: McpDestinationPolicy): Promise<URL>;
|
|
23
|
+
export declare function mcpPositiveInteger(value: number | undefined, fallback: number): number;
|
|
24
|
+
export declare function readMcpBody(response: Response, maxBytes: number): Promise<string>;
|
|
25
|
+
export declare function readMcpJson(response: Response, maxBytes: number): Promise<unknown>;
|
|
26
|
+
/** Node 18 compatible composition; listeners are removed on settlement. */
|
|
27
|
+
export declare function withMcpAbort<T>(operation: (signal: AbortSignal) => Promise<T>, signals: Array<AbortSignal | undefined>, timeoutMs?: number): Promise<T>;
|
|
28
|
+
//# sourceMappingURL=mcp-http-common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-http-common.d.ts","sourceRoot":"","sources":["../src/mcp-http-common.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,cAAc,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACpG;AAED,6FAA6F;AAC7F,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,cAAc,GAAG,eAAe,GAAG,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,sBAAsB,GAAG,wBAAwB,CAAC;AAC9L,MAAM,WAAW,yBAAyB;IAAG,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CAAE;AAC5F,qBAAa,YAAa,SAAQ,KAAK;IAEzB,QAAQ,CAAC,IAAI,EAAE,gBAAgB;IAAmB,QAAQ,CAAC,aAAa,CAAC,EAAE,yBAAyB;IADhH,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,YAAqB,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAW,aAAa,CAAC,EAAE,yBAAyB,YAAA,EAAqB;CACtI;AACD,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,WAAW,GAAG,eAAe,GAAG,OAAO,CAAC;AACvF,8FAA8F;AAC9F,MAAM,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,qBAAqB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5G,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,CAMxI;AACD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAItF;AACD,wBAAsB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAevF;AACD,wBAAsB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGxF;AACD,2EAA2E;AAC3E,wBAAsB,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAuB7J"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
export class McpHttpError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
authorization;
|
|
4
|
+
name = "McpHttpError";
|
|
5
|
+
constructor(code, message, authorization) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.code = code;
|
|
8
|
+
this.authorization = authorization;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export async function checkMcpDestination(url, purpose, policy) {
|
|
12
|
+
const parsed = new URL(url);
|
|
13
|
+
if (parsed.protocol !== "https:" || parsed.username || parsed.password || parsed.hash || (policy && !await policy(new URL(parsed), purpose))) {
|
|
14
|
+
throw new McpHttpError("DESTINATION_REJECTED", "MCP destination rejected by policy.");
|
|
15
|
+
}
|
|
16
|
+
return parsed;
|
|
17
|
+
}
|
|
18
|
+
export function mcpPositiveInteger(value, fallback) {
|
|
19
|
+
const result = value ?? fallback;
|
|
20
|
+
if (!Number.isSafeInteger(result) || result <= 0)
|
|
21
|
+
throw new McpHttpError("PROTOCOL_ERROR", "MCP limits must be positive safe integers.");
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
export async function readMcpBody(response, maxBytes) {
|
|
25
|
+
const reader = response.body?.getReader();
|
|
26
|
+
if (!reader)
|
|
27
|
+
return "";
|
|
28
|
+
const decoder = new TextDecoder("utf-8", { fatal: true });
|
|
29
|
+
let bytes = 0;
|
|
30
|
+
let text = "";
|
|
31
|
+
try {
|
|
32
|
+
while (true) {
|
|
33
|
+
const chunk = await reader.read();
|
|
34
|
+
if (chunk.done)
|
|
35
|
+
return text + decoder.decode();
|
|
36
|
+
bytes += chunk.value.byteLength;
|
|
37
|
+
if (bytes > maxBytes)
|
|
38
|
+
throw new McpHttpError("LIMIT_EXCEEDED", "MCP response exceeded byte limit.");
|
|
39
|
+
text += decoder.decode(chunk.value, { stream: true });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
finally {
|
|
43
|
+
await reader.cancel().catch(() => { });
|
|
44
|
+
reader.releaseLock();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export async function readMcpJson(response, maxBytes) {
|
|
48
|
+
try {
|
|
49
|
+
return JSON.parse(await readMcpBody(response, maxBytes));
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
if (error instanceof McpHttpError)
|
|
53
|
+
throw error;
|
|
54
|
+
throw new McpHttpError("PROTOCOL_ERROR", "Invalid MCP JSON response.");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/** Node 18 compatible composition; listeners are removed on settlement. */
|
|
58
|
+
export async function withMcpAbort(operation, signals, timeoutMs) {
|
|
59
|
+
const controller = new AbortController();
|
|
60
|
+
const subscriptions = [];
|
|
61
|
+
for (const signal of signals) {
|
|
62
|
+
if (!signal)
|
|
63
|
+
continue;
|
|
64
|
+
const abort = () => controller.abort(signal.reason);
|
|
65
|
+
if (signal.aborted)
|
|
66
|
+
abort();
|
|
67
|
+
else {
|
|
68
|
+
signal.addEventListener("abort", abort, { once: true });
|
|
69
|
+
subscriptions.push([signal, abort]);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const timer = timeoutMs === undefined ? undefined : setTimeout(() => controller.abort(new DOMException("MCP operation timed out.", "TimeoutError")), timeoutMs);
|
|
73
|
+
let abort;
|
|
74
|
+
try {
|
|
75
|
+
controller.signal.throwIfAborted();
|
|
76
|
+
return await Promise.race([operation(controller.signal), new Promise((_, reject) => {
|
|
77
|
+
abort = () => reject(controller.signal.reason);
|
|
78
|
+
controller.signal.addEventListener("abort", abort, { once: true });
|
|
79
|
+
if (controller.signal.aborted)
|
|
80
|
+
abort();
|
|
81
|
+
})]);
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
if (timer !== undefined)
|
|
85
|
+
clearTimeout(timer);
|
|
86
|
+
if (abort)
|
|
87
|
+
controller.signal.removeEventListener("abort", abort);
|
|
88
|
+
for (const [signal, listener] of subscriptions)
|
|
89
|
+
signal.removeEventListener("abort", listener);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=mcp-http-common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-http-common.js","sourceRoot":"","sources":["../src/mcp-http-common.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { McpCallToolOptions, McpClient, McpServerCapabilities } from "./mcp.js";
|
|
2
|
+
import { type McpDestinationPolicy, type McpHttpAuthProvider } from "./mcp-http-common.js";
|
|
3
|
+
export { McpHttpError } from "./mcp-http-common.js";
|
|
4
|
+
export type { McpHttpAuthProvider, McpHttpErrorCode, McpDestinationPolicy, McpDestinationPurpose, McpAuthorizationChallenge } from "./mcp-http-common.js";
|
|
5
|
+
export * from "./mcp-oauth.js";
|
|
6
|
+
export interface McpHttpClientOptions {
|
|
7
|
+
url: string;
|
|
8
|
+
fetch?: typeof globalThis.fetch;
|
|
9
|
+
auth?: McpHttpAuthProvider;
|
|
10
|
+
destinationPolicy?: McpDestinationPolicy;
|
|
11
|
+
timeoutMs?: number;
|
|
12
|
+
maxResponseBytes?: number;
|
|
13
|
+
maxRequestBytes?: number;
|
|
14
|
+
clientInfo?: {
|
|
15
|
+
name: string;
|
|
16
|
+
version: string;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export interface McpHttpClient extends McpClient {
|
|
20
|
+
initialize(options?: McpCallToolOptions): Promise<McpServerCapabilities>;
|
|
21
|
+
close(): void;
|
|
22
|
+
}
|
|
23
|
+
/** Opt-in Streamable HTTP client pinned to MCP 2025-11-25. Never retries a request. */
|
|
24
|
+
export declare function createMcpHttpClient(options: McpHttpClientOptions): McpHttpClient;
|
|
25
|
+
export interface McpPaginationOptions extends McpCallToolOptions {
|
|
26
|
+
maxPages?: number;
|
|
27
|
+
maxItems?: number;
|
|
28
|
+
}
|
|
29
|
+
/** Explicit bounded collection for any MCP list operation, without opaque-cursor assumptions. */
|
|
30
|
+
export declare function collectMcpPages<T>(listPage: (cursor: string | undefined, options: McpCallToolOptions) => Promise<{
|
|
31
|
+
items: T[];
|
|
32
|
+
nextCursor?: string;
|
|
33
|
+
}>, options?: McpPaginationOptions): Promise<T[]>;
|
|
34
|
+
//# sourceMappingURL=mcp-http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-http.d.ts","sourceRoot":"","sources":["../src/mcp-http.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EAAuE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChK,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAC1J,cAAc,gBAAgB,CAAC;AAE/B,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,iBAAiB,CAAC,EAAE,oBAAoB,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AACD,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,UAAU,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACzE,KAAK,IAAI,IAAI,CAAC;CACf;AAMD,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CA4IhF;AAED,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AACD,iGAAiG;AACjG,wBAAsB,eAAe,CAAC,CAAC,EACrC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC;IAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACnH,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,CAAC,EAAE,CAAC,CAmBd"}
|
package/dist/mcp-http.js
ADDED
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { checkMcpDestination, McpHttpError, mcpPositiveInteger, withMcpAbort } from "./mcp-http-common.js";
|
|
3
|
+
export { McpHttpError } from "./mcp-http-common.js";
|
|
4
|
+
export * from "./mcp-oauth.js";
|
|
5
|
+
const record = z.record(z.string(), z.unknown());
|
|
6
|
+
const page = { nextCursor: z.string().optional() };
|
|
7
|
+
const resource = z.object({ uri: z.string(), name: z.string(), title: z.string().optional(), description: z.string().optional(), mimeType: z.string().optional() });
|
|
8
|
+
const tool = z.object({ name: z.string(), inputSchema: record, description: z.string().optional() }).passthrough();
|
|
9
|
+
/** Opt-in Streamable HTTP client pinned to MCP 2025-11-25. Never retries a request. */
|
|
10
|
+
export function createMcpHttpClient(options) {
|
|
11
|
+
const endpoint = new URL(options.url).href;
|
|
12
|
+
const fetcher = options.fetch ?? globalThis.fetch;
|
|
13
|
+
const timeout = mcpPositiveInteger(options.timeoutMs, 30_000);
|
|
14
|
+
const maxBytes = mcpPositiveInteger(options.maxResponseBytes, 4 * 1024 * 1024);
|
|
15
|
+
const maxRequest = mcpPositiveInteger(options.maxRequestBytes, 1024 * 1024);
|
|
16
|
+
const lifetime = new AbortController();
|
|
17
|
+
let capabilities;
|
|
18
|
+
let session;
|
|
19
|
+
let nextId = 0;
|
|
20
|
+
let initializing;
|
|
21
|
+
async function post(method, params, call = {}, notification = false, rpcResponse) {
|
|
22
|
+
let dispatched = false;
|
|
23
|
+
return withMcpAbort(async (signal) => {
|
|
24
|
+
signal.throwIfAborted();
|
|
25
|
+
await checkMcpDestination(endpoint, "server", options.destinationPolicy);
|
|
26
|
+
const token = await options.auth?.getAccessToken({ resource: endpoint, abortSignal: signal });
|
|
27
|
+
signal.throwIfAborted();
|
|
28
|
+
const id = notification ? undefined : ++nextId;
|
|
29
|
+
const body = JSON.stringify(rpcResponse ?? { jsonrpc: "2.0", ...(id === undefined ? {} : { id }), method, params });
|
|
30
|
+
if (new TextEncoder().encode(body).byteLength > maxRequest)
|
|
31
|
+
throw new McpHttpError("LIMIT_EXCEEDED", "MCP request exceeded byte limit.");
|
|
32
|
+
try {
|
|
33
|
+
const headers = new Headers({ "Content-Type": "application/json", Accept: "application/json, text/event-stream", "MCP-Protocol-Version": "2025-11-25" });
|
|
34
|
+
if (session)
|
|
35
|
+
headers.set("Mcp-Session-Id", session);
|
|
36
|
+
if (token)
|
|
37
|
+
headers.set("Authorization", `Bearer ${token}`);
|
|
38
|
+
dispatched = true;
|
|
39
|
+
const response = await fetcher(endpoint, { method: "POST", headers, body, signal, redirect: "error" });
|
|
40
|
+
if (response.status === 401 || response.status === 403) {
|
|
41
|
+
await response.body?.cancel();
|
|
42
|
+
throw new McpHttpError(response.status === 403 ? "AUTH_REJECTED" : token ? "AUTH_EXPIRED" : "AUTH_REQUIRED", "MCP authentication required or rejected.", {
|
|
43
|
+
resourceMetadataUrl: response.headers.get("WWW-Authenticate")?.match(/(?:^|[\s,])resource_metadata\s*=\s*"([^"\\]+)"/i)?.[1],
|
|
44
|
+
scope: response.headers.get("WWW-Authenticate")?.match(/(?:^|[\s,])scope\s*=\s*"([^"\\]*)"/i)?.[1]
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
if (response.status === 404 && session) {
|
|
48
|
+
session = undefined;
|
|
49
|
+
capabilities = undefined;
|
|
50
|
+
initializing = undefined;
|
|
51
|
+
}
|
|
52
|
+
if (!response.ok) {
|
|
53
|
+
await response.body?.cancel();
|
|
54
|
+
throw new McpHttpError(method === "tools/call" ? "INDETERMINATE" : "PROTOCOL_ERROR", "MCP HTTP request failed.");
|
|
55
|
+
}
|
|
56
|
+
if (notification) {
|
|
57
|
+
await response.body?.cancel();
|
|
58
|
+
if (response.status !== 202)
|
|
59
|
+
throw new McpHttpError("PROTOCOL_ERROR", "MCP notification was not accepted.");
|
|
60
|
+
return {};
|
|
61
|
+
}
|
|
62
|
+
const sessionHeader = response.headers.get("Mcp-Session-Id");
|
|
63
|
+
if (method === "initialize" && sessionHeader) {
|
|
64
|
+
if (!/^[\x21-\x7e]{1,1024}$/.test(sessionHeader)) {
|
|
65
|
+
await response.body?.cancel();
|
|
66
|
+
throw new McpHttpError("PROTOCOL_ERROR", "Invalid MCP session identifier.");
|
|
67
|
+
}
|
|
68
|
+
session = sessionHeader;
|
|
69
|
+
}
|
|
70
|
+
const isSse = response.headers.get("Content-Type")?.split(";")[0].trim() === "text/event-stream";
|
|
71
|
+
if (!isSse && response.headers.get("Content-Type")?.split(";")[0].trim() !== "application/json") {
|
|
72
|
+
await response.body?.cancel();
|
|
73
|
+
throw new McpHttpError("PROTOCOL_ERROR", "Unsupported MCP response content type.");
|
|
74
|
+
}
|
|
75
|
+
const reader = response.body?.getReader();
|
|
76
|
+
if (!reader)
|
|
77
|
+
throw new McpHttpError("PROTOCOL_ERROR", "Empty MCP response.");
|
|
78
|
+
let bytes = 0;
|
|
79
|
+
let buffer = "";
|
|
80
|
+
const decoder = new TextDecoder("utf-8", { fatal: true });
|
|
81
|
+
const parse = async (data) => {
|
|
82
|
+
const message = JSON.parse(data);
|
|
83
|
+
if (!message || message.jsonrpc !== "2.0")
|
|
84
|
+
throw new McpHttpError("PROTOCOL_ERROR", "Invalid MCP response envelope.");
|
|
85
|
+
if (typeof message.method === "string") {
|
|
86
|
+
if (message.id !== undefined)
|
|
87
|
+
await post("", {}, call, true, { jsonrpc: "2.0", id: message.id, ...(message.method === "ping" ? { result: {} } : { error: { code: -32601, message: "Client capability not supported." } }) });
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (message.id !== id) {
|
|
91
|
+
if (message.id === undefined && typeof message.method === "string")
|
|
92
|
+
return;
|
|
93
|
+
throw new McpHttpError("PROTOCOL_ERROR", "Unexpected MCP response identifier.");
|
|
94
|
+
}
|
|
95
|
+
if (message.error)
|
|
96
|
+
throw new McpHttpError("PROTOCOL_ERROR", "MCP server returned a JSON-RPC error.");
|
|
97
|
+
if (!("result" in message))
|
|
98
|
+
throw new McpHttpError("PROTOCOL_ERROR", "Missing MCP response result.");
|
|
99
|
+
return { result: message.result };
|
|
100
|
+
};
|
|
101
|
+
try {
|
|
102
|
+
while (true) {
|
|
103
|
+
const chunk = await reader.read();
|
|
104
|
+
if (chunk.done)
|
|
105
|
+
break;
|
|
106
|
+
bytes += chunk.value.byteLength;
|
|
107
|
+
if (bytes > maxBytes)
|
|
108
|
+
throw new McpHttpError("LIMIT_EXCEEDED", "MCP response exceeded byte limit.");
|
|
109
|
+
buffer += decoder.decode(chunk.value, { stream: true });
|
|
110
|
+
if (isSse) {
|
|
111
|
+
let match;
|
|
112
|
+
while ((match = /\r\n\r\n|\n\n|\r\r/.exec(buffer))) {
|
|
113
|
+
const event = buffer.slice(0, match.index);
|
|
114
|
+
buffer = buffer.slice(match.index + match[0].length);
|
|
115
|
+
const data = event.split(/\r\n|\r|\n/).filter(line => line.startsWith("data:")).map(line => line.slice(5).replace(/^ /, "")).join("\n");
|
|
116
|
+
if (!data)
|
|
117
|
+
continue;
|
|
118
|
+
const parsed = await parse(data);
|
|
119
|
+
if (parsed)
|
|
120
|
+
return parsed.result;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
buffer += decoder.decode();
|
|
125
|
+
if (!isSse) {
|
|
126
|
+
const parsed = await parse(buffer);
|
|
127
|
+
if (parsed)
|
|
128
|
+
return parsed.result;
|
|
129
|
+
}
|
|
130
|
+
throw new McpHttpError("PROTOCOL_ERROR", "MCP stream ended without a response.");
|
|
131
|
+
}
|
|
132
|
+
finally {
|
|
133
|
+
await reader.cancel().catch(() => { });
|
|
134
|
+
reader.releaseLock();
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
if (error instanceof McpHttpError && error.code !== "PROTOCOL_ERROR" && error.code !== "LIMIT_EXCEEDED")
|
|
139
|
+
throw error;
|
|
140
|
+
if (dispatched && method === "tools/call")
|
|
141
|
+
throw new McpHttpError("INDETERMINATE", "MCP tool execution may have occurred; reconcile before retrying.");
|
|
142
|
+
if (error instanceof McpHttpError)
|
|
143
|
+
throw error;
|
|
144
|
+
if (signal.aborted)
|
|
145
|
+
throw signal.reason;
|
|
146
|
+
throw new McpHttpError("PROTOCOL_ERROR", "MCP transport failed.");
|
|
147
|
+
}
|
|
148
|
+
}, [lifetime.signal, call.abortSignal], mcpPositiveInteger(call.timeoutMs, timeout)).catch(error => {
|
|
149
|
+
if (dispatched && method === "tools/call" && !(error instanceof McpHttpError))
|
|
150
|
+
throw new McpHttpError("INDETERMINATE", "MCP tool execution may have occurred; reconcile before retrying.");
|
|
151
|
+
throw error;
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
async function initialize(call = {}) {
|
|
155
|
+
call.abortSignal?.throwIfAborted();
|
|
156
|
+
lifetime.signal.throwIfAborted();
|
|
157
|
+
if (capabilities)
|
|
158
|
+
return structuredClone(capabilities);
|
|
159
|
+
if (!initializing)
|
|
160
|
+
initializing = (async () => {
|
|
161
|
+
const result = z.object({ protocolVersion: z.literal("2025-11-25"), capabilities: z.object({ tools: record.optional(), resources: record.optional(), prompts: record.optional() }) }).safeParse(await post("initialize", { protocolVersion: "2025-11-25", capabilities: {}, clientInfo: options.clientInfo ?? { name: "zhivex-ai", version: "1" } }));
|
|
162
|
+
if (!result.success)
|
|
163
|
+
throw new McpHttpError("PROTOCOL_ERROR", "Unsupported MCP initialization result.");
|
|
164
|
+
await post("notifications/initialized", {}, {}, true);
|
|
165
|
+
capabilities = result.data.capabilities;
|
|
166
|
+
return capabilities;
|
|
167
|
+
})().catch(error => { initializing = undefined; session = undefined; throw error; });
|
|
168
|
+
return structuredClone(await withMcpAbort(() => initializing, [lifetime.signal, call.abortSignal], mcpPositiveInteger(call.timeoutMs, timeout)));
|
|
169
|
+
}
|
|
170
|
+
async function invoke(method, params, call) {
|
|
171
|
+
const caps = await initialize(call);
|
|
172
|
+
const capability = method.split("/")[0];
|
|
173
|
+
if (!caps[capability])
|
|
174
|
+
throw new McpHttpError("UNSUPPORTED_CAPABILITY", "MCP server does not advertise this capability.");
|
|
175
|
+
return post(method, params ?? {}, call);
|
|
176
|
+
}
|
|
177
|
+
async function validated(schema, method, params, call) {
|
|
178
|
+
const result = schema.safeParse(await invoke(method, params, call));
|
|
179
|
+
if (!result.success)
|
|
180
|
+
throw new McpHttpError("PROTOCOL_ERROR", "Invalid MCP result shape.");
|
|
181
|
+
return result.data;
|
|
182
|
+
}
|
|
183
|
+
return {
|
|
184
|
+
get capabilities() { return capabilities ? structuredClone(capabilities) : undefined; },
|
|
185
|
+
initialize,
|
|
186
|
+
close() { lifetime.abort(); capabilities = undefined; session = undefined; },
|
|
187
|
+
listTools: (input, call) => validated(z.object({ tools: z.array(tool), ...page }), "tools/list", input, call),
|
|
188
|
+
callTool: async (input, call) => {
|
|
189
|
+
const result = z.object({ content: z.array(z.json()), structuredContent: z.record(z.string(), z.json()).optional(), isError: z.boolean().optional() }).catchall(z.json()).safeParse(await invoke("tools/call", input, call));
|
|
190
|
+
if (!result.success)
|
|
191
|
+
throw new McpHttpError("INDETERMINATE", "Invalid MCP tool response; reconcile before retrying.");
|
|
192
|
+
return result.data;
|
|
193
|
+
},
|
|
194
|
+
listResources: (input, call) => validated(z.object({ resources: z.array(resource), ...page }), "resources/list", input, call),
|
|
195
|
+
listResourceTemplates: (input, call) => validated(z.object({ resourceTemplates: z.array(resource.omit({ uri: true }).extend({ uriTemplate: z.string() })), ...page }), "resources/templates/list", input, call),
|
|
196
|
+
readResource: (input, call) => validated(z.object({ contents: z.array(z.union([z.object({ uri: z.string(), mimeType: z.string().optional(), text: z.string() }), z.object({ uri: z.string(), mimeType: z.string().optional(), blob: z.string() })])) }), "resources/read", input, call),
|
|
197
|
+
listPrompts: (input, call) => validated(z.object({ prompts: z.array(z.object({ name: z.string(), description: z.string().optional(), arguments: z.array(z.object({ name: z.string(), description: z.string().optional(), required: z.boolean().optional() })).optional() })), ...page }), "prompts/list", input, call),
|
|
198
|
+
getPrompt: (input, call) => validated(z.object({ description: z.string().optional(), messages: z.array(z.object({ role: z.enum(["user", "assistant"]), content: z.json() })) }), "prompts/get", input, call)
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
/** Explicit bounded collection for any MCP list operation, without opaque-cursor assumptions. */
|
|
202
|
+
export async function collectMcpPages(listPage, options = {}) {
|
|
203
|
+
const maxPages = mcpPositiveInteger(options.maxPages, 100);
|
|
204
|
+
const maxItems = mcpPositiveInteger(options.maxItems, 10_000);
|
|
205
|
+
return withMcpAbort(async (signal) => {
|
|
206
|
+
const items = [];
|
|
207
|
+
const seen = new Set();
|
|
208
|
+
let cursor;
|
|
209
|
+
for (let page = 0; page < maxPages; page++) {
|
|
210
|
+
signal.throwIfAborted();
|
|
211
|
+
const result = await listPage(cursor, { abortSignal: signal, timeoutMs: options.timeoutMs });
|
|
212
|
+
if (items.length + result.items.length > maxItems)
|
|
213
|
+
throw new McpHttpError("LIMIT_EXCEEDED", "MCP pagination exceeded item limit.");
|
|
214
|
+
items.push(...result.items);
|
|
215
|
+
if (result.nextCursor === undefined)
|
|
216
|
+
return items;
|
|
217
|
+
if (seen.has(result.nextCursor))
|
|
218
|
+
throw new McpHttpError("PROTOCOL_ERROR", "MCP pagination repeated a cursor.");
|
|
219
|
+
cursor = result.nextCursor;
|
|
220
|
+
seen.add(cursor);
|
|
221
|
+
}
|
|
222
|
+
throw new McpHttpError("LIMIT_EXCEEDED", "MCP pagination exceeded page limit.");
|
|
223
|
+
}, [options.abortSignal], mcpPositiveInteger(options.timeoutMs, 30_000));
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=mcp-http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-http.js","sourceRoot":"","sources":["../src/mcp-http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type McpAuthorizationChallenge, type McpDestinationPolicy } from "./mcp-http-common.js";
|
|
2
|
+
import type { McpHttpAuthProvider } from "./mcp-http-common.js";
|
|
3
|
+
export interface McpOAuthTokens {
|
|
4
|
+
accessToken: string;
|
|
5
|
+
refreshToken?: string;
|
|
6
|
+
expiresAt?: number;
|
|
7
|
+
/** Exact authorization server and protected resource binding. */
|
|
8
|
+
issuer: string;
|
|
9
|
+
resource: string;
|
|
10
|
+
clientId: string;
|
|
11
|
+
}
|
|
12
|
+
export interface McpOAuthTokenStore {
|
|
13
|
+
load(): Promise<McpOAuthTokens | undefined>;
|
|
14
|
+
save(tokens: McpOAuthTokens): Promise<void>;
|
|
15
|
+
clear(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export interface McpOAuthOptions {
|
|
18
|
+
resource: string;
|
|
19
|
+
/** Host-selected trusted issuer. Discovered metadata cannot change this binding. */
|
|
20
|
+
issuer: string;
|
|
21
|
+
clientId: string;
|
|
22
|
+
redirectUri: string;
|
|
23
|
+
tokenStore: McpOAuthTokenStore;
|
|
24
|
+
/** Explicit host allowlist, required for all discovered endpoints. */
|
|
25
|
+
destinationPolicy: McpDestinationPolicy;
|
|
26
|
+
fetch?: typeof globalThis.fetch;
|
|
27
|
+
timeoutMs?: number;
|
|
28
|
+
maxResponseBytes?: number;
|
|
29
|
+
scopes?: string[];
|
|
30
|
+
}
|
|
31
|
+
export interface McpOAuthProvider extends McpHttpAuthProvider {
|
|
32
|
+
/** Returns a URL for the host to open only after its own approval flow. */
|
|
33
|
+
beginAuthorization(input?: {
|
|
34
|
+
wwwAuthenticate?: string;
|
|
35
|
+
challenge?: McpAuthorizationChallenge;
|
|
36
|
+
abortSignal?: AbortSignal;
|
|
37
|
+
}): Promise<{
|
|
38
|
+
authorizationUrl: string;
|
|
39
|
+
state: string;
|
|
40
|
+
}>;
|
|
41
|
+
completeAuthorization(callbackUrl: string, input?: {
|
|
42
|
+
abortSignal?: AbortSignal;
|
|
43
|
+
}): Promise<void>;
|
|
44
|
+
clear(): Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
/** OAuth public-client authorization code + S256 PKCE. Credential storage and browser navigation belong to the host. */
|
|
47
|
+
export declare function createMcpOAuthProvider(options: McpOAuthOptions): McpOAuthProvider;
|
|
48
|
+
//# sourceMappingURL=mcp-oauth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-oauth.d.ts","sourceRoot":"","sources":["../src/mcp-oauth.ts"],"names":[],"mappings":"AACA,OAAO,EAAoF,KAAK,yBAAyB,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACnL,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,kBAAkB;IACjC,IAAI,IAAI,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AACD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,sEAAsE;IACtE,iBAAiB,EAAE,oBAAoB,CAAC;IACxC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AACD,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D,2EAA2E;IAC3E,kBAAkB,CAAC,KAAK,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,yBAAyB,CAAC;QAAC,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,gBAAgB,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjL,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAQD,wHAAwH;AACxH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,gBAAgB,CAuHjF"}
|