@roll-agent/sdk 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/context.d.ts +25 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +29 -0
- package/dist/context.js.map +1 -0
- package/dist/define-agent.d.ts +15 -0
- package/dist/define-agent.d.ts.map +1 -0
- package/dist/define-agent.js +107 -0
- package/dist/define-agent.js.map +1 -0
- package/dist/define-tool.d.ts +3 -0
- package/dist/define-tool.d.ts.map +1 -0
- package/dist/define-tool.js +4 -0
- package/dist/define-tool.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +26 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +38 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** Agent 日志级别 */
|
|
2
|
+
export type LogLevel = "debug" | "info" | "warn" | "error";
|
|
3
|
+
/** Agent 上下文中的日志接口 */
|
|
4
|
+
export interface AgentLogger {
|
|
5
|
+
readonly debug: (message: string) => void;
|
|
6
|
+
readonly info: (message: string) => void;
|
|
7
|
+
readonly warn: (message: string) => void;
|
|
8
|
+
readonly error: (message: string) => void;
|
|
9
|
+
}
|
|
10
|
+
/** Agent 上下文中的 LLM 接口(通过 MCP Sampling 访问指挥官 LLM) */
|
|
11
|
+
export interface AgentLLM {
|
|
12
|
+
readonly generateText: (prompt: string) => Promise<string>;
|
|
13
|
+
}
|
|
14
|
+
/** Agent 运行时上下文 */
|
|
15
|
+
export interface AgentContext {
|
|
16
|
+
readonly llm: AgentLLM;
|
|
17
|
+
readonly logger: AgentLogger;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 创建一个基于 stderr 的 Agent Logger。
|
|
21
|
+
*
|
|
22
|
+
* MCP Server 通过 stdio 通信,因此日志必须输出到 stderr 以避免干扰协议。
|
|
23
|
+
*/
|
|
24
|
+
export declare function createAgentLogger(agentName: string, minLevel?: LogLevel): AgentLogger;
|
|
25
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,sBAAsB;AACtB,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED,oDAAoD;AACpD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5D;AAED,mBAAmB;AACnB,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAUD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAiB,GAAG,WAAW,CAgB7F"}
|
package/dist/context.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** 日志级别优先级 */
|
|
2
|
+
const LOG_LEVEL_PRIORITY = {
|
|
3
|
+
debug: 0,
|
|
4
|
+
info: 1,
|
|
5
|
+
warn: 2,
|
|
6
|
+
error: 3,
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* 创建一个基于 stderr 的 Agent Logger。
|
|
10
|
+
*
|
|
11
|
+
* MCP Server 通过 stdio 通信,因此日志必须输出到 stderr 以避免干扰协议。
|
|
12
|
+
*/
|
|
13
|
+
export function createAgentLogger(agentName, minLevel = "info") {
|
|
14
|
+
const minPriority = LOG_LEVEL_PRIORITY[minLevel];
|
|
15
|
+
const write = (level, message) => {
|
|
16
|
+
if (LOG_LEVEL_PRIORITY[level] < minPriority)
|
|
17
|
+
return;
|
|
18
|
+
const timestamp = new Date().toISOString();
|
|
19
|
+
const tag = level.toUpperCase().padEnd(5);
|
|
20
|
+
console.error(`${timestamp} [${tag}] [${agentName}] ${message}`);
|
|
21
|
+
};
|
|
22
|
+
return {
|
|
23
|
+
debug: (message) => write("debug", message),
|
|
24
|
+
info: (message) => write("info", message),
|
|
25
|
+
warn: (message) => write("warn", message),
|
|
26
|
+
error: (message) => write("error", message),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAsBA,cAAc;AACd,MAAM,kBAAkB,GAAuC;IAC7D,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB,EAAE,WAAqB,MAAM;IAC9E,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAEjD,MAAM,KAAK,GAAG,CAAC,KAAe,EAAE,OAAe,EAAQ,EAAE;QACvD,IAAI,kBAAkB,CAAC,KAAK,CAAC,GAAG,WAAW;YAAE,OAAO;QACpD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,KAAK,GAAG,MAAM,SAAS,KAAK,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;QAC3C,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC;QACzC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC;QACzC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;KAC5C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { AgentDefinition, RunnableAgent } from "./types/index.ts";
|
|
2
|
+
import type { LogLevel } from "./context.ts";
|
|
3
|
+
/** defineAgent 额外选项 */
|
|
4
|
+
export interface DefineAgentOptions {
|
|
5
|
+
/** 最低日志级别,默认 "info" */
|
|
6
|
+
readonly logLevel?: LogLevel;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* 定义一个 Agent 并返回可运行实例。
|
|
10
|
+
*
|
|
11
|
+
* `listen()` 会启动一个 MCP Server (stdio 模式),
|
|
12
|
+
* 将所有 tool 注册为 MCP tool,通过 stdin/stdout 通信。
|
|
13
|
+
*/
|
|
14
|
+
export declare function defineAgent(definition: AgentDefinition, options?: DefineAgentOptions): RunnableAgent;
|
|
15
|
+
//# sourceMappingURL=define-agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-agent.d.ts","sourceRoot":"","sources":["../src/define-agent.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAqB,MAAM,kBAAkB,CAAC;AAE1F,OAAO,KAAK,EAAgB,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE3D,uBAAuB;AACvB,MAAM,WAAW,kBAAkB;IACjC,uBAAuB;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CAC9B;AA+DD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,GAAE,kBAAuB,GAAG,aAAa,CA+BxG"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { createAgentLogger } from "./context.js";
|
|
5
|
+
/**
|
|
6
|
+
* 创建 AgentContext。
|
|
7
|
+
*
|
|
8
|
+
* - logger: 使用结构化日志,输出到 stderr(避免干扰 stdio 协议)
|
|
9
|
+
* - llm: 通过 MCP Sampling 请求指挥官 LLM(server.createMessage)
|
|
10
|
+
*/
|
|
11
|
+
function createContext(agentName, logLevel, server) {
|
|
12
|
+
return {
|
|
13
|
+
llm: {
|
|
14
|
+
generateText: async (prompt) => {
|
|
15
|
+
try {
|
|
16
|
+
const response = await server.server.createMessage({
|
|
17
|
+
messages: [
|
|
18
|
+
{
|
|
19
|
+
role: "user",
|
|
20
|
+
content: {
|
|
21
|
+
type: "text",
|
|
22
|
+
text: prompt,
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
maxTokens: 1024,
|
|
27
|
+
});
|
|
28
|
+
const text = extractSamplingText(response.content);
|
|
29
|
+
if (text === undefined) {
|
|
30
|
+
throw new Error("Sampling response did not include text content");
|
|
31
|
+
}
|
|
32
|
+
return text;
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
throw new Error("LLM sampling unavailable. Ensure roll-core client enables sampling capability.", { cause: error });
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
logger: createAgentLogger(agentName, logLevel),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function extractSamplingText(content) {
|
|
43
|
+
if (typeof content === "object" && content !== null) {
|
|
44
|
+
if ("type" in content && content.type === "text" && "text" in content) {
|
|
45
|
+
const text = content.text;
|
|
46
|
+
return typeof text === "string" ? text : undefined;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (Array.isArray(content)) {
|
|
50
|
+
for (const item of content) {
|
|
51
|
+
const text = extractSamplingText(item);
|
|
52
|
+
if (text !== undefined) {
|
|
53
|
+
return text;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* 定义一个 Agent 并返回可运行实例。
|
|
61
|
+
*
|
|
62
|
+
* `listen()` 会启动一个 MCP Server (stdio 模式),
|
|
63
|
+
* 将所有 tool 注册为 MCP tool,通过 stdin/stdout 通信。
|
|
64
|
+
*/
|
|
65
|
+
export function defineAgent(definition, options = {}) {
|
|
66
|
+
return {
|
|
67
|
+
...definition,
|
|
68
|
+
listen: async () => {
|
|
69
|
+
const server = new McpServer({
|
|
70
|
+
name: definition.name,
|
|
71
|
+
version: "0.0.1",
|
|
72
|
+
});
|
|
73
|
+
const ctx = createContext(definition.name, options.logLevel ?? "info", server);
|
|
74
|
+
// 注册所有 tool 到 MCP Server
|
|
75
|
+
for (const tool of definition.tools) {
|
|
76
|
+
registerTool(server, tool, ctx);
|
|
77
|
+
}
|
|
78
|
+
// 启动 stdio 传输
|
|
79
|
+
const transport = new StdioServerTransport();
|
|
80
|
+
await server.connect(transport);
|
|
81
|
+
ctx.logger.info("MCP Server running on stdio");
|
|
82
|
+
// Graceful shutdown:收到 SIGTERM/SIGINT 时清理 MCP Server
|
|
83
|
+
const shutdown = async (signal) => {
|
|
84
|
+
ctx.logger.info(`${signal} received, shutting down...`);
|
|
85
|
+
await server.close();
|
|
86
|
+
process.exit(0);
|
|
87
|
+
};
|
|
88
|
+
process.on("SIGTERM", () => { shutdown("SIGTERM").catch(() => process.exit(1)); });
|
|
89
|
+
process.on("SIGINT", () => { shutdown("SIGINT").catch(() => process.exit(1)); });
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/** 将单个 tool 注册到 MCP Server */
|
|
94
|
+
function registerTool(server, tool, ctx) {
|
|
95
|
+
// MCP SDK 的 registerTool 要求 ZodObject,但 AnyToolDefinition.input 是更宽泛的 ZodType(类型擦除代价)
|
|
96
|
+
// AnyToolDefinition.execute 签名为 (never, ctx) 以阻止直接调用,注册时需转型为可调用签名
|
|
97
|
+
server.registerTool(tool.name, {
|
|
98
|
+
description: tool.description,
|
|
99
|
+
inputSchema: tool.input,
|
|
100
|
+
}, async (params) => {
|
|
101
|
+
const result = await tool.execute(params, ctx);
|
|
102
|
+
return {
|
|
103
|
+
content: [{ type: "text", text: JSON.stringify(result) }],
|
|
104
|
+
};
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=define-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-agent.js","sourceRoot":"","sources":["../src/define-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-tool.d.ts","sourceRoot":"","sources":["../src/define-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,EACxC,UAAU,EAAE,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,GAC1C,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAEjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-tool.js","sourceRoot":"","sources":["../src/define-tool.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,UAAU,CACxB,UAA2C;IAE3C,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { defineAgent } from "./define-agent.ts";
|
|
2
|
+
export type { DefineAgentOptions } from "./define-agent.ts";
|
|
3
|
+
export { defineTool } from "./define-tool.ts";
|
|
4
|
+
export { createAgentLogger } from "./context.ts";
|
|
5
|
+
export type { AgentContext, AgentLogger, AgentLLM, LogLevel } from "./context.ts";
|
|
6
|
+
export type { AnyToolDefinition, ToolDefinition, AgentDefinition, RunnableAgent, } from "./types/index.ts";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAClF,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,aAAa,GACd,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { z } from "zod";
|
|
2
|
+
import type { AgentContext } from "../context.ts";
|
|
3
|
+
/** 类型擦除的 Tool 基础接口,用于异构集合 */
|
|
4
|
+
export interface AnyToolDefinition {
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly description: string;
|
|
7
|
+
readonly input: z.ZodType;
|
|
8
|
+
readonly output: z.ZodType;
|
|
9
|
+
readonly execute: (input: never, ctx: AgentContext) => Promise<unknown>;
|
|
10
|
+
}
|
|
11
|
+
/** 类型安全的 Tool 定义 */
|
|
12
|
+
export interface ToolDefinition<TInput = unknown, TOutput = unknown> extends AnyToolDefinition {
|
|
13
|
+
readonly input: z.ZodType<TInput>;
|
|
14
|
+
readonly output: z.ZodType<TOutput>;
|
|
15
|
+
readonly execute: (input: TInput, ctx: AgentContext) => Promise<TOutput>;
|
|
16
|
+
}
|
|
17
|
+
export interface AgentDefinition {
|
|
18
|
+
readonly name: string;
|
|
19
|
+
readonly tools: ReadonlyArray<AnyToolDefinition>;
|
|
20
|
+
}
|
|
21
|
+
/** defineAgent() 返回的可运行 Agent */
|
|
22
|
+
export interface RunnableAgent extends AgentDefinition {
|
|
23
|
+
/** 启动 MCP Server (stdio 模式),阻塞直到连接关闭 */
|
|
24
|
+
readonly listen: () => Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,6BAA6B;AAC7B,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACzE;AAED,oBAAoB;AACpB,MAAM,WAAW,cAAc,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,CAAE,SAAQ,iBAAiB;IAC5F,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;CAClD;AAED,iCAAiC;AACjC,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,wCAAwC;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@roll-agent/sdk",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": {
|
|
7
|
+
"types": "./src/index.ts",
|
|
8
|
+
"default": "./src/index.ts"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"publishConfig": {
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"default": "./dist/index.js"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist"
|
|
21
|
+
],
|
|
22
|
+
"engines": {
|
|
23
|
+
"node": ">=22.6.0"
|
|
24
|
+
},
|
|
25
|
+
"scripts": {
|
|
26
|
+
"build": "tsc -p tsconfig.build.json",
|
|
27
|
+
"typecheck": "tsc --noEmit",
|
|
28
|
+
"test": "node --experimental-strip-types --test \"src/**/*.test.ts\"",
|
|
29
|
+
"clean": "rm -rf dist"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
33
|
+
"zod": "^3.25.0"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@types/node": "^22.0.0"
|
|
37
|
+
}
|
|
38
|
+
}
|