holon-sh 0.0.1-dev.15 → 0.0.1-dev.17
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 +32 -0
- package/dist/context.d.ts +7 -7
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +11 -5
- package/dist/context.js.map +1 -1
- package/dist/ext/events.client.d.ts +4 -0
- package/dist/ext/events.client.d.ts.map +1 -0
- package/dist/ext/events.client.js +180 -0
- package/dist/ext/events.client.js.map +1 -0
- package/dist/ext/events.d.ts +6 -12
- package/dist/ext/events.d.ts.map +1 -1
- package/dist/ext/events.js +30 -51
- package/dist/ext/events.js.map +1 -1
- package/dist/ext/files.client.d.ts +2 -3
- package/dist/ext/files.client.d.ts.map +1 -1
- package/dist/ext/files.client.js +20 -22
- package/dist/ext/files.client.js.map +1 -1
- package/dist/ext/files.d.ts +1 -1
- package/dist/ext/files.d.ts.map +1 -1
- package/dist/link.d.ts +35 -0
- package/dist/link.d.ts.map +1 -0
- package/dist/link.js +118 -0
- package/dist/link.js.map +1 -0
- package/dist/page.d.ts +24 -0
- package/dist/page.d.ts.map +1 -0
- package/dist/page.js +25 -0
- package/dist/page.js.map +1 -0
- package/dist/protocol.d.ts +6 -7
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +0 -1
- package/dist/protocol.js.map +1 -1
- package/dist/runtime.d.ts +0 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +129 -409
- package/dist/runtime.js.map +1 -1
- package/dist/serve.js +0 -5
- package/dist/serve.js.map +1 -1
- package/package.json +8 -1
- package/src/context.ts +17 -7
- package/src/ext/events.client.ts +157 -0
- package/src/ext/events.ts +41 -83
- package/src/ext/files.client.ts +21 -20
- package/src/ext/files.ts +1 -1
- package/src/link.ts +136 -0
- package/src/page.ts +36 -0
- package/src/protocol.ts +6 -9
- package/src/runtime.ts +120 -379
- package/src/serve.ts +0 -3
package/dist/ext/files.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Identifier of the MCP files extension (draft), the key under which a client and a server declare it in their capabilities. */
|
|
2
2
|
export declare const EXTENSION = "io.modelcontextprotocol/files";
|
|
3
|
-
/** A file a tool returned for the caller to fetch. Its fields come from the server
|
|
3
|
+
/** A file a tool returned for the caller to fetch. Its fields come from the server: they have the types below, but their values are untrusted. */
|
|
4
4
|
export interface Download {
|
|
5
5
|
readonly name?: string;
|
|
6
6
|
readonly mimeType: string;
|
package/dist/ext/files.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/ext/files.ts"],"names":[],"mappings":"AAAA,iIAAiI;AACjI,eAAO,MAAM,SAAS,kCAAkC,CAAC;AAEzD,
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/ext/files.ts"],"names":[],"mappings":"AAAA,iIAAiI;AACjI,eAAO,MAAM,SAAS,kCAAkC,CAAC;AAEzD,kJAAkJ;AAClJ,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qBAAqB;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,SAAS,EAAE,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,mEAAmE;IACnE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,yJAAyJ;IACzJ,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD"}
|
package/dist/link.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Client } from "@modelcontextprotocol/client";
|
|
2
|
+
import type { CacheableRequestOptions, StandardSchemaV1 } from "@modelcontextprotocol/client";
|
|
3
|
+
import type { CallOptions } from "./protocol.js";
|
|
4
|
+
import type { Binding, Identity, ToolSession } from "./runtime.js";
|
|
5
|
+
interface Connection {
|
|
6
|
+
client: Client;
|
|
7
|
+
resolved: Binding;
|
|
8
|
+
authorization?: string;
|
|
9
|
+
ready: Promise<void>;
|
|
10
|
+
answered: boolean;
|
|
11
|
+
close(): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export interface Link {
|
|
14
|
+
readonly name: string;
|
|
15
|
+
session<T>(options: CallOptions | undefined, run: (client: ToolSession, connection?: Connection) => Promise<T>): Promise<T>;
|
|
16
|
+
endpoint(what: string): Binding;
|
|
17
|
+
connect(binding: Binding): Connection;
|
|
18
|
+
close(): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
declare const DISCOVERY: unique symbol;
|
|
21
|
+
type Endpoint = Binding & {
|
|
22
|
+
[DISCOVERY]?: string;
|
|
23
|
+
};
|
|
24
|
+
export declare function environment(name: string): Endpoint;
|
|
25
|
+
export declare function createLink(identity: Identity, name: string, { binding, resolve, host }: {
|
|
26
|
+
binding: unknown;
|
|
27
|
+
resolve?: (app: string) => Binding | undefined;
|
|
28
|
+
host?: ToolSession | undefined;
|
|
29
|
+
}): Link;
|
|
30
|
+
export declare function sleep(milliseconds: number, signal?: AbortSignal): Promise<void>;
|
|
31
|
+
export declare function untilAborted<T>(promise: Promise<T>, signal?: AbortSignal): Promise<T>;
|
|
32
|
+
export declare function patient(options?: CacheableRequestOptions): CacheableRequestOptions;
|
|
33
|
+
export declare const unchecked: <T>() => StandardSchemaV1<unknown, T>;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../src/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA+C,MAAM,8BAA8B,CAAC;AACnG,OAAO,KAAK,EAAE,uBAAuB,EAAkB,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAG9G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEnE,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5H,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAAC;IACtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAID,QAAA,MAAM,SAAS,EAAE,OAAO,MAA4B,CAAC;AAIrD,KAAK,QAAQ,GAAG,OAAO,GAAG;IAAE,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAInD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAMlD;AA0BD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CAAE,GAAG,IAAI,CAsCnM;AAED,wBAAgB,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAU/E;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAOrF;AAID,wBAAgB,OAAO,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,uBAAuB,CAIlF;AAED,eAAO,MAAM,SAAS,GAAI,CAAC,OAAK,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAA8G,CAAC"}
|
package/dist/link.js
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Client, SdkHttpError, StreamableHTTPClientTransport } from "@modelcontextprotocol/client";
|
|
2
|
+
import { EXTENSION } from "./ext/files.js";
|
|
3
|
+
import { acceptUploadRequests } from "./ext/files.client.js";
|
|
4
|
+
// Environment-bound calls reuse the last server/discover result for the same endpoint and token instead of discovering
|
|
5
|
+
// the server on every call. A dependency keeps only its latest result, so a changed endpoint or token replaces it.
|
|
6
|
+
const DISCOVERY = Symbol("discovery");
|
|
7
|
+
const discovered = new Map();
|
|
8
|
+
const LEGACY_VERDICT_MS = 10 * 60 * 1000;
|
|
9
|
+
export function environment(name) {
|
|
10
|
+
const prefix = `${name.toUpperCase().replaceAll("-", "_")}_MCP_`;
|
|
11
|
+
const endpoint = process.env[`${prefix}URL`];
|
|
12
|
+
const token = process.env[`${prefix}TOKEN`];
|
|
13
|
+
if (endpoint)
|
|
14
|
+
return { endpoint, scoped: true, [DISCOVERY]: `${endpoint} ${token ?? ""}`, ...(token && { authProvider: { token: async () => token } }) };
|
|
15
|
+
throw new Error(`Dependency ${name} is unavailable (${prefix}URL). Provide a binding or set the environment variable.`);
|
|
16
|
+
}
|
|
17
|
+
function connect(identity, resolved, prior, onclose) {
|
|
18
|
+
// Every client can be asked: a call answers with elicit, or the question reaches its caller. Servers must not assume a client answers: https://modelcontextprotocol.io/specification/2026-07-28/basic/patterns/mrtr#server-requirements-basic-workflow
|
|
19
|
+
// On 2026-07-28 the client sends these capabilities in every request's _meta: https://github.com/modelcontextprotocol/typescript-sdk/blob/fcef852f6cdafea07f36cf6fae69b37c8adf85be/packages/client/src/client/client.ts#L700-L711
|
|
20
|
+
const client = new Client({ name: identity.name, version: identity.version }, { capabilities: { elicitation: { form: {}, url: {} }, extensions: { [EXTENSION]: { upload: {}, download: {} } } }, versionNegotiation: { mode: "auto" } });
|
|
21
|
+
const endpoint = new URL(resolved.endpoint);
|
|
22
|
+
const transport = acceptUploadRequests(new StreamableHTTPClientTransport(endpoint, { authProvider: resolved.authProvider, fetch: async (input, init) => {
|
|
23
|
+
if (String(input) === endpoint.href)
|
|
24
|
+
connection.authorization = new Headers(init?.headers).get("authorization") ?? undefined;
|
|
25
|
+
const response = await (resolved.fetch ?? fetch)(input, init);
|
|
26
|
+
connection.answered ||= response.ok;
|
|
27
|
+
return response;
|
|
28
|
+
}, requestInit: { credentials: "include", redirect: "error", headers: resolved.installationUID ? { "X-Holon-Installation-UID": resolved.installationUID } : {} } }));
|
|
29
|
+
transport.onclose = () => onclose?.(connection);
|
|
30
|
+
const ready = client.connect(transport, { prior }).catch(async (error) => {
|
|
31
|
+
await transport.close();
|
|
32
|
+
throw error;
|
|
33
|
+
});
|
|
34
|
+
const connection = { client, resolved, ready, answered: false, close: async () => {
|
|
35
|
+
await transport.terminateSession().catch(() => { });
|
|
36
|
+
await transport.close();
|
|
37
|
+
await ready.catch(() => { });
|
|
38
|
+
} };
|
|
39
|
+
return connection;
|
|
40
|
+
}
|
|
41
|
+
export function createLink(identity, name, { binding, resolve, host }) {
|
|
42
|
+
const current = () => binding ?? resolve?.(name);
|
|
43
|
+
let kept;
|
|
44
|
+
const session = async (options, run) => {
|
|
45
|
+
options?.signal?.throwIfAborted();
|
|
46
|
+
if (host)
|
|
47
|
+
return run(host);
|
|
48
|
+
const resolved = current();
|
|
49
|
+
if (!resolved?.endpoint)
|
|
50
|
+
throw new Error(`Dependency ${name} is unavailable. Provide a binding.`);
|
|
51
|
+
const scoped = resolved.scoped === true;
|
|
52
|
+
const key = resolved[DISCOVERY];
|
|
53
|
+
const cached = discovered.get(name);
|
|
54
|
+
const prior = key !== undefined && cached?.key === key && Date.now() < cached.expires ? cached.prior : undefined;
|
|
55
|
+
const active = scoped ? connect(identity, resolved, prior) : (kept ??= connect(identity, resolved, undefined, closed => { if (kept === closed)
|
|
56
|
+
kept = undefined; }));
|
|
57
|
+
try {
|
|
58
|
+
await untilAborted(active.ready, options?.signal);
|
|
59
|
+
if (key !== undefined && !prior) {
|
|
60
|
+
const discover = active.client.getDiscoverResult();
|
|
61
|
+
discovered.set(name, { key, prior: discover ? { kind: "modern", discover } : { kind: "legacy" }, expires: discover ? Infinity : Date.now() + LEGACY_VERDICT_MS });
|
|
62
|
+
}
|
|
63
|
+
return await run(active.client, active);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
// A server that no longer speaks the discovered protocol rejects the first request without running it.
|
|
67
|
+
if (!prior || active.answered || !(SdkHttpError.isInstance(error) && error.status === 400))
|
|
68
|
+
throw error;
|
|
69
|
+
discovered.delete(name);
|
|
70
|
+
return session(options, run);
|
|
71
|
+
}
|
|
72
|
+
finally {
|
|
73
|
+
if (scoped)
|
|
74
|
+
await active.close();
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
return {
|
|
78
|
+
name,
|
|
79
|
+
session,
|
|
80
|
+
endpoint(what) {
|
|
81
|
+
const resolved = current();
|
|
82
|
+
if (!resolved?.endpoint)
|
|
83
|
+
throw new Error(`${what} requires an endpoint binding.`);
|
|
84
|
+
return resolved;
|
|
85
|
+
},
|
|
86
|
+
connect: resolved => connect(identity, resolved),
|
|
87
|
+
close: async () => { await kept?.close(); },
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
export function sleep(milliseconds, signal) {
|
|
91
|
+
return new Promise(resolve => {
|
|
92
|
+
const done = () => {
|
|
93
|
+
clearTimeout(timer);
|
|
94
|
+
signal?.removeEventListener("abort", done);
|
|
95
|
+
resolve();
|
|
96
|
+
};
|
|
97
|
+
const timer = setTimeout(done, milliseconds);
|
|
98
|
+
signal?.addEventListener("abort", done, { once: true });
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
export function untilAborted(promise, signal) {
|
|
102
|
+
if (!signal)
|
|
103
|
+
return promise;
|
|
104
|
+
return new Promise((resolve, reject) => {
|
|
105
|
+
const aborted = () => reject(signal.reason);
|
|
106
|
+
signal.addEventListener("abort", aborted, { once: true });
|
|
107
|
+
promise.then(resolve, reject).finally(() => signal.removeEventListener("abort", aborted));
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
// The MCP client ends a request after 60 s unless given a timeout. A request without one waits as long as a timer can
|
|
111
|
+
// (2^31 - 1 ms, about 24.8 days). A request with one asks for progress, and progress restarts its timeout.
|
|
112
|
+
export function patient(options) {
|
|
113
|
+
return options?.timeout === undefined
|
|
114
|
+
? { ...options, timeout: 2 ** 31 - 1 }
|
|
115
|
+
: { onprogress: () => { }, resetTimeoutOnProgress: true, ...options };
|
|
116
|
+
}
|
|
117
|
+
export const unchecked = () => ({ "~standard": { version: 1, vendor: "holon-sh", validate: value => ({ value: (value ?? {}) }) } });
|
|
118
|
+
//# sourceMappingURL=link.js.map
|
package/dist/link.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../src/link.ts"],"names":[],"mappings":"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"}
|
package/dist/page.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/server";
|
|
2
|
+
/** An app's page, as the view an MCP Apps host shows with a tool's result. */
|
|
3
|
+
export interface Page {
|
|
4
|
+
/** A tool's `_meta`, so that hosts show the page with what the tool returns. */
|
|
5
|
+
meta: {
|
|
6
|
+
ui: {
|
|
7
|
+
resourceUri: string;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
/** Offers the page to a server's clients as its view. */
|
|
11
|
+
serve(server: Pick<McpServer, "registerResource">): void;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Makes an app's page a view: `file` is the page built as one HTML file, and `ui` the view's `_meta.ui`, such as its
|
|
15
|
+
* `csp`.
|
|
16
|
+
*
|
|
17
|
+
* ```ts
|
|
18
|
+
* const page = createPage(new URL("../dist/mcp/index.html", import.meta.url));
|
|
19
|
+
* server.registerTool("open", { description: "Opens it", _meta: page.meta }, open);
|
|
20
|
+
* page.serve(server);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare function createPage(file: URL, ui?: Record<string, unknown>): Page;
|
|
24
|
+
//# sourceMappingURL=page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAQ9D,8EAA8E;AAC9E,MAAM,WAAW,IAAI;IACnB,gFAAgF;IAChF,IAAI,EAAE;QAAE,EAAE,EAAE;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IACtC,yDAAyD;IACzD,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,GAAG,IAAI,CAAC;CAC1D;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,IAAI,CAQ5E"}
|
package/dist/page.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
// MCP Apps names a view with a ui:// URI and serves it as this type. An app has one page, so the URI names no app and
|
|
3
|
+
// survives renaming one.
|
|
4
|
+
// https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx
|
|
5
|
+
const uri = "ui://page";
|
|
6
|
+
const mimeType = "text/html;profile=mcp-app";
|
|
7
|
+
/**
|
|
8
|
+
* Makes an app's page a view: `file` is the page built as one HTML file, and `ui` the view's `_meta.ui`, such as its
|
|
9
|
+
* `csp`.
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* const page = createPage(new URL("../dist/mcp/index.html", import.meta.url));
|
|
13
|
+
* server.registerTool("open", { description: "Opens it", _meta: page.meta }, open);
|
|
14
|
+
* page.serve(server);
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export function createPage(file, ui = {}) {
|
|
18
|
+
return {
|
|
19
|
+
meta: { ui: { resourceUri: uri } },
|
|
20
|
+
serve: server => void server.registerResource("Page", uri, { mimeType }, async () => ({
|
|
21
|
+
contents: [{ uri, mimeType, text: await readFile(file, "utf8"), _meta: { ui } }],
|
|
22
|
+
})),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=page.js.map
|
package/dist/page.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,sHAAsH;AACtH,yBAAyB;AACzB,+FAA+F;AAC/F,MAAM,GAAG,GAAG,WAAW,CAAC;AACxB,MAAM,QAAQ,GAAG,2BAA2B,CAAC;AAU7C;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CAAC,IAAS,EAAE,EAAE,GAA4B,EAAE;IACpE,OAAO;QACL,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE;QAClC,KAAK,EAAE,MAAM,CAAC,EAAE,CACd,KAAK,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACnE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACjF,CAAC,CAAC;KACN,CAAC;AACJ,CAAC"}
|
package/dist/protocol.d.ts
CHANGED
|
@@ -18,19 +18,18 @@ export type CallMetadata = Omit<CallToolRequest["params"], "name" | "arguments">
|
|
|
18
18
|
type Fields<T> = {
|
|
19
19
|
[K in keyof T as string extends K ? never : number extends K ? never : K]: T[K];
|
|
20
20
|
};
|
|
21
|
-
type
|
|
22
|
-
|
|
21
|
+
type Completed = Omit<Fields<CallToolResult>, "structuredContent" | "isError"> & {
|
|
22
|
+
resultType: "complete";
|
|
23
|
+
/** Files the tool returned, from a server with the files extension. Their targets are removed from _meta, and a file whose fields do not have their types is left out. */
|
|
23
24
|
downloads?: Download[];
|
|
24
25
|
};
|
|
25
26
|
/** Successful tool result with contract-typed structured content. */
|
|
26
|
-
export type CompleteResult<Output> =
|
|
27
|
-
resultType: "complete";
|
|
27
|
+
export type CompleteResult<Output> = Completed & {
|
|
28
28
|
isError?: false;
|
|
29
29
|
structuredContent: Output;
|
|
30
30
|
};
|
|
31
31
|
/** Full tool result: successful typed output, an application error, or an input-required continuation. */
|
|
32
|
-
export type ToolResult<Output> = CompleteResult<Output> | (
|
|
33
|
-
resultType: "complete";
|
|
32
|
+
export type ToolResult<Output> = CompleteResult<Output> | (Completed & {
|
|
34
33
|
isError: true;
|
|
35
34
|
structuredContent?: unknown;
|
|
36
35
|
}) | InputRequiredResult;
|
|
@@ -62,7 +61,7 @@ export interface EventType {
|
|
|
62
61
|
/** One occurrence of an event. `eventId` is stable, so an occurrence delivered twice is yielded once. */
|
|
63
62
|
export interface EventOccurrence<Data = unknown> {
|
|
64
63
|
eventId: string;
|
|
65
|
-
name: string;
|
|
64
|
+
name: string; /** When it happened, in ISO 8601. */
|
|
66
65
|
timestamp: string;
|
|
67
66
|
data: Data;
|
|
68
67
|
}
|
package/dist/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,IAAI,kBAAkB,EAAE,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACtP,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,oEAAoE;AACpE,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;AACpE,sHAAsH;AACtH,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,mBAAmB,KAAK,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAElG,kOAAkO;AAClO,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;AACrE,kHAAkH;AAClH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,aAAa,CAAA;CAAE,CAAC;AACvE,yIAAyI;AACzI,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG;IAAE,cAAc,CAAC,EAAE,cAAc,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAC9I,KAAK,MAAM,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,SAAS,CAAC,GAAG,KAAK,GAAG,MAAM,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AACrG,KAAK,
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
|
package/dist/protocol.js
CHANGED
|
@@ -16,7 +16,6 @@ export class ToolCallError extends Error {
|
|
|
16
16
|
constructor(app, tool, result) {
|
|
17
17
|
const asking = result.resultType === "input_required";
|
|
18
18
|
const text = (asking ? undefined : result.content.filter(part => part.type === "text").map(part => part.text).join("\n")) || undefined;
|
|
19
|
-
// A question says what it asks, and a URL question where to answer it.
|
|
20
19
|
const detail = asking
|
|
21
20
|
? Object.values(result.inputRequests ?? {}).flatMap(question => question.method === "elicitation/create"
|
|
22
21
|
? [question.params.message, question.params.mode === "url" ? question.params.url : undefined]
|
package/dist/protocol.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAyBA,SAAS,IAAI,CAAC,IAAwB;IACpC,IAAI,CAAC;QAAC,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,SAAS,CAAC;IAAC,CAAC;AAC/F,CAAC;AAED,oQAAoQ;AACpQ,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,MAAM,CAAqF;IACpG,+GAA+G;IACtG,IAAI,CAAU;IACvB,+HAA+H;IACtH,IAAI,CAAW;IACxB,YAAY,GAAW,EAAE,IAAY,EAAE,MAA+B;QACpE,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,KAAK,gBAAgB,CAAC;QACtD,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,SAAS,CAAC;QACvI,MAAM,MAAM,GAAG,MAAM;YACnB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,oBAAoB;gBACtG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC7F,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACjC,CAAC,CAAC,IAAI,CAAC;QACT,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/G,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;CACF"}
|
package/dist/runtime.d.ts
CHANGED
|
@@ -17,7 +17,6 @@ export interface Binding {
|
|
|
17
17
|
/** Origins the server may name as file upload or download targets, e.g. "https://storage.example.com". Unset, any https origin on a globally reachable address is allowed; set, only these, which may also be http on loopback or have a non-global address. */
|
|
18
18
|
fileOrigins?: string[];
|
|
19
19
|
}
|
|
20
|
-
/** Alias for an endpoint binding. */
|
|
21
20
|
export type EndpointBinding = Binding;
|
|
22
21
|
/** Calling application identity and its declared dependencies. */
|
|
23
22
|
export interface Identity {
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,eAAe,EAAE,sBAAsB,EAAE,cAAc,EAAE,mBAAmB,EAAkB,gBAAgB,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|