@roll-agent/core 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/bin/roll.js +2 -0
- package/dist/cli/commands/agent-add.d.ts +9 -0
- package/dist/cli/commands/agent-add.d.ts.map +1 -0
- package/dist/cli/commands/agent-add.js +123 -0
- package/dist/cli/commands/agent-add.js.map +1 -0
- package/dist/cli/commands/agent-health.d.ts +14 -0
- package/dist/cli/commands/agent-health.d.ts.map +1 -0
- package/dist/cli/commands/agent-health.js +85 -0
- package/dist/cli/commands/agent-health.js.map +1 -0
- package/dist/cli/commands/agent-info.d.ts +9 -0
- package/dist/cli/commands/agent-info.d.ts.map +1 -0
- package/dist/cli/commands/agent-info.js +32 -0
- package/dist/cli/commands/agent-info.js.map +1 -0
- package/dist/cli/commands/agent-list.d.ts +9 -0
- package/dist/cli/commands/agent-list.d.ts.map +1 -0
- package/dist/cli/commands/agent-list.js +37 -0
- package/dist/cli/commands/agent-list.js.map +1 -0
- package/dist/cli/commands/agent-remove.d.ts +9 -0
- package/dist/cli/commands/agent-remove.d.ts.map +1 -0
- package/dist/cli/commands/agent-remove.js +22 -0
- package/dist/cli/commands/agent-remove.js.map +1 -0
- package/dist/cli/commands/agent-start.d.ts +9 -0
- package/dist/cli/commands/agent-start.d.ts.map +1 -0
- package/dist/cli/commands/agent-start.js +44 -0
- package/dist/cli/commands/agent-start.js.map +1 -0
- package/dist/cli/commands/agent-stop.d.ts +9 -0
- package/dist/cli/commands/agent-stop.d.ts.map +1 -0
- package/dist/cli/commands/agent-stop.js +29 -0
- package/dist/cli/commands/agent-stop.js.map +1 -0
- package/dist/cli/commands/agent.d.ts +3 -0
- package/dist/cli/commands/agent.d.ts.map +1 -0
- package/dist/cli/commands/agent.js +14 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/ask.d.ts +14 -0
- package/dist/cli/commands/ask.d.ts.map +1 -0
- package/dist/cli/commands/ask.js +103 -0
- package/dist/cli/commands/ask.js.map +1 -0
- package/dist/cli/commands/config.d.ts +19 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +142 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +10 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +123 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/run.d.ts +24 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +124 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/update.d.ts +12 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +237 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +31 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/smoke.e2e.d.ts +2 -0
- package/dist/cli/smoke.e2e.d.ts.map +1 -0
- package/dist/cli/smoke.e2e.js +57 -0
- package/dist/cli/smoke.e2e.js.map +1 -0
- package/dist/cli/utils/output.d.ts +24 -0
- package/dist/cli/utils/output.d.ts.map +1 -0
- package/dist/cli/utils/output.js +52 -0
- package/dist/cli/utils/output.js.map +1 -0
- package/dist/cli/utils/prompt.d.ts +2 -0
- package/dist/cli/utils/prompt.d.ts.map +1 -0
- package/dist/cli/utils/prompt.js +4 -0
- package/dist/cli/utils/prompt.js.map +1 -0
- package/dist/cli/utils/update-checker.d.ts +24 -0
- package/dist/cli/utils/update-checker.d.ts.map +1 -0
- package/dist/cli/utils/update-checker.js +146 -0
- package/dist/cli/utils/update-checker.js.map +1 -0
- package/dist/config/defaults.d.ts +6 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +20 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +4 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +24 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +142 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +145 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +24 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/llm/engine.d.ts +22 -0
- package/dist/llm/engine.d.ts.map +1 -0
- package/dist/llm/engine.js +31 -0
- package/dist/llm/engine.js.map +1 -0
- package/dist/llm/index.d.ts +4 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +3 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/providers.d.ts +8 -0
- package/dist/llm/providers.d.ts.map +1 -0
- package/dist/llm/providers.js +38 -0
- package/dist/llm/providers.js.map +1 -0
- package/dist/mcp/client-manager.d.ts +34 -0
- package/dist/mcp/client-manager.d.ts.map +1 -0
- package/dist/mcp/client-manager.js +79 -0
- package/dist/mcp/client-manager.js.map +1 -0
- package/dist/mcp/index.d.ts +2 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +2 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/sampling-handler.d.ts +12 -0
- package/dist/mcp/sampling-handler.d.ts.map +1 -0
- package/dist/mcp/sampling-handler.js +56 -0
- package/dist/mcp/sampling-handler.js.map +1 -0
- package/dist/registry/discovery.d.ts +16 -0
- package/dist/registry/discovery.d.ts.map +1 -0
- package/dist/registry/discovery.js +72 -0
- package/dist/registry/discovery.js.map +1 -0
- package/dist/registry/health-check.d.ts +18 -0
- package/dist/registry/health-check.d.ts.map +1 -0
- package/dist/registry/health-check.js +65 -0
- package/dist/registry/health-check.js.map +1 -0
- package/dist/registry/index.d.ts +5 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +4 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/process-manager.d.ts +13 -0
- package/dist/registry/process-manager.d.ts.map +1 -0
- package/dist/registry/process-manager.js +82 -0
- package/dist/registry/process-manager.js.map +1 -0
- package/dist/registry/store.d.ts +21 -0
- package/dist/registry/store.d.ts.map +1 -0
- package/dist/registry/store.js +81 -0
- package/dist/registry/store.js.map +1 -0
- package/dist/router/declarative.d.ts +8 -0
- package/dist/router/declarative.d.ts.map +1 -0
- package/dist/router/declarative.js +9 -0
- package/dist/router/declarative.js.map +1 -0
- package/dist/router/index.d.ts +3 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +3 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/llm-router.d.ts +12 -0
- package/dist/router/llm-router.d.ts.map +1 -0
- package/dist/router/llm-router.js +60 -0
- package/dist/router/llm-router.js.map +1 -0
- package/dist/types/agent.d.ts +57 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +3 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/config.d.ts +2 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/mcp.d.ts +7 -0
- package/dist/types/mcp.d.ts.map +1 -0
- package/dist/types/mcp.js +2 -0
- package/dist/types/mcp.js.map +1 -0
- package/dist/types/router.d.ts +21 -0
- package/dist/types/router.d.ts.map +1 -0
- package/dist/types/router.js +8 -0
- package/dist/types/router.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../../src/cli/utils/update-checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,YAAY;AACZ,eAAO,MAAM,cAAc,EAAE,UAY5B,CAAC;AAEF,eAAe;AACf,eAAO,MAAM,iBAAiB,kDAGpB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** 默认配置值 */
|
|
2
|
+
export const DEFAULT_CONFIG = {
|
|
3
|
+
llm: {
|
|
4
|
+
defaultProvider: "anthropic",
|
|
5
|
+
defaultModel: "claude-sonnet-4-20250514",
|
|
6
|
+
providers: {},
|
|
7
|
+
},
|
|
8
|
+
router: {
|
|
9
|
+
mode: "declarative",
|
|
10
|
+
},
|
|
11
|
+
agents: {
|
|
12
|
+
dataDir: "~/.roll-agent/agents",
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
/** 配置文件查找顺序 */
|
|
16
|
+
export const CONFIG_FILE_NAMES = [
|
|
17
|
+
"roll.config.yaml",
|
|
18
|
+
"roll.config.yml",
|
|
19
|
+
];
|
|
20
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAEA,YAAY;AACZ,MAAM,CAAC,MAAM,cAAc,GAAe;IACxC,GAAG,EAAE;QACH,eAAe,EAAE,WAAW;QAC5B,YAAY,EAAE,0BAA0B;QACxC,SAAS,EAAE,EAAE;KACd;IACD,MAAM,EAAE;QACN,IAAI,EAAE,aAAa;KACpB;IACD,MAAM,EAAE;QACN,OAAO,EAAE,sBAAsB;KAChC;CACF,CAAC;AAEF,eAAe;AACf,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,kBAAkB;IAClB,iBAAiB;CACT,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { rollConfigSchema } from "./schema.ts";
|
|
2
|
+
export type { RollConfig } from "./schema.ts";
|
|
3
|
+
export { loadConfig } from "./loader.ts";
|
|
4
|
+
export type { LoadConfigOptions, LoadConfigResult } from "./loader.ts";
|
|
5
|
+
export { DEFAULT_CONFIG, CONFIG_FILE_NAMES } from "./defaults.ts";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { RollConfig } from "./schema.ts";
|
|
2
|
+
export interface LoadConfigOptions {
|
|
3
|
+
/** 指定配置文件路径(跳过自动查找) */
|
|
4
|
+
readonly configPath?: string;
|
|
5
|
+
/** 起始查找目录,默认 process.cwd() */
|
|
6
|
+
readonly cwd?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface LoadConfigResult {
|
|
9
|
+
readonly config: RollConfig;
|
|
10
|
+
/** 实际加载的配置文件路径,undefined 表示使用默认配置 */
|
|
11
|
+
readonly configPath: string | undefined;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 加载并校验 Roll 配置。
|
|
15
|
+
*
|
|
16
|
+
* 1. 查找配置文件(指定路径 > 向上查找 > 默认配置)
|
|
17
|
+
* 2. 解析 YAML
|
|
18
|
+
* 3. kebab-case → camelCase 键转换
|
|
19
|
+
* 4. ${ENV_VAR} 环境变量替换
|
|
20
|
+
* 5. Zod schema 校验
|
|
21
|
+
* 6. 路径展开(~/)
|
|
22
|
+
*/
|
|
23
|
+
export declare function loadConfig(options?: LoadConfigOptions): LoadConfigResult;
|
|
24
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAqF9C,MAAM,WAAW,iBAAiB;IAChC,uBAAuB;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,8BAA8B;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,qCAAqC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,gBAAgB,CAsC5E"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { readFileSync, existsSync } from "node:fs";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { parse as parseYaml } from "yaml";
|
|
4
|
+
import { rollConfigSchema } from "./schema.js";
|
|
5
|
+
import { DEFAULT_CONFIG, CONFIG_FILE_NAMES } from "./defaults.js";
|
|
6
|
+
/**
|
|
7
|
+
* 将 YAML 中 kebab-case 键递归转换为 camelCase。
|
|
8
|
+
* 例如 `default-provider` → `defaultProvider`
|
|
9
|
+
*/
|
|
10
|
+
function kebabToCamelDeep(obj) {
|
|
11
|
+
if (Array.isArray(obj)) {
|
|
12
|
+
return obj.map(kebabToCamelDeep);
|
|
13
|
+
}
|
|
14
|
+
if (typeof obj === "object" && obj !== null) {
|
|
15
|
+
const result = {};
|
|
16
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
17
|
+
const camelKey = key.replace(/-([a-z])/g, (_, ch) => ch.toUpperCase());
|
|
18
|
+
result[camelKey] = kebabToCamelDeep(value);
|
|
19
|
+
}
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
return obj;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 替换字符串中的 `${ENV_VAR}` 为对应环境变量值。
|
|
26
|
+
* 未设置的环境变量保留原始占位符。
|
|
27
|
+
*/
|
|
28
|
+
function resolveEnvVars(obj) {
|
|
29
|
+
if (typeof obj === "string") {
|
|
30
|
+
return obj.replace(/\$\{([^}]+)\}/g, (original, varName) => {
|
|
31
|
+
const value = process.env[varName];
|
|
32
|
+
return value ?? original;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
if (Array.isArray(obj)) {
|
|
36
|
+
return obj.map(resolveEnvVars);
|
|
37
|
+
}
|
|
38
|
+
if (typeof obj === "object" && obj !== null) {
|
|
39
|
+
const result = {};
|
|
40
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
41
|
+
result[key] = resolveEnvVars(value);
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
return obj;
|
|
46
|
+
}
|
|
47
|
+
/** 在指定目录及其父目录中查找配置文件 */
|
|
48
|
+
function findConfigFile(startDir) {
|
|
49
|
+
let dir = resolve(startDir);
|
|
50
|
+
const root = resolve("/");
|
|
51
|
+
while (dir !== root) {
|
|
52
|
+
for (const name of CONFIG_FILE_NAMES) {
|
|
53
|
+
const candidate = resolve(dir, name);
|
|
54
|
+
if (existsSync(candidate)) {
|
|
55
|
+
return candidate;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const parent = resolve(dir, "..");
|
|
59
|
+
if (parent === dir)
|
|
60
|
+
break;
|
|
61
|
+
dir = parent;
|
|
62
|
+
}
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
/** 展开 `~` 为用户 home 目录 */
|
|
66
|
+
function expandTilde(filePath) {
|
|
67
|
+
if (filePath.startsWith("~/")) {
|
|
68
|
+
const home = process.env["HOME"] ?? process.env["USERPROFILE"] ?? "";
|
|
69
|
+
return resolve(home, filePath.slice(2));
|
|
70
|
+
}
|
|
71
|
+
return filePath;
|
|
72
|
+
}
|
|
73
|
+
/** 对配置中的路径字段做 tilde 展开 */
|
|
74
|
+
function expandPaths(config) {
|
|
75
|
+
return {
|
|
76
|
+
...config,
|
|
77
|
+
agents: {
|
|
78
|
+
...config.agents,
|
|
79
|
+
dataDir: expandTilde(config.agents.dataDir),
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* 加载并校验 Roll 配置。
|
|
85
|
+
*
|
|
86
|
+
* 1. 查找配置文件(指定路径 > 向上查找 > 默认配置)
|
|
87
|
+
* 2. 解析 YAML
|
|
88
|
+
* 3. kebab-case → camelCase 键转换
|
|
89
|
+
* 4. ${ENV_VAR} 环境变量替换
|
|
90
|
+
* 5. Zod schema 校验
|
|
91
|
+
* 6. 路径展开(~/)
|
|
92
|
+
*/
|
|
93
|
+
export function loadConfig(options = {}) {
|
|
94
|
+
const { configPath: explicitPath, cwd = process.cwd() } = options;
|
|
95
|
+
// 1. 查找配置文件
|
|
96
|
+
const configPath = explicitPath ?? findConfigFile(cwd);
|
|
97
|
+
if (!configPath) {
|
|
98
|
+
return { config: expandPaths(DEFAULT_CONFIG), configPath: undefined };
|
|
99
|
+
}
|
|
100
|
+
if (!existsSync(configPath)) {
|
|
101
|
+
throw new Error(`Config file not found: ${configPath}`);
|
|
102
|
+
}
|
|
103
|
+
// 2. 解析 YAML
|
|
104
|
+
const raw = readFileSync(configPath, "utf-8");
|
|
105
|
+
const parsed = parseYaml(raw);
|
|
106
|
+
if (typeof parsed !== "object" || parsed === null) {
|
|
107
|
+
throw new Error(`Invalid config file: ${configPath} (expected YAML object)`);
|
|
108
|
+
}
|
|
109
|
+
// 3-4. 键转换 + 环境变量替换
|
|
110
|
+
const transformed = resolveEnvVars(kebabToCamelDeep(parsed));
|
|
111
|
+
// 5. Zod 校验(与默认值深度合并)
|
|
112
|
+
const merged = deepMerge(DEFAULT_CONFIG, transformed);
|
|
113
|
+
const result = rollConfigSchema.safeParse(merged);
|
|
114
|
+
if (!result.success) {
|
|
115
|
+
const issues = result.error.issues
|
|
116
|
+
.map((i) => ` - ${i.path.join(".")}: ${i.message}`)
|
|
117
|
+
.join("\n");
|
|
118
|
+
throw new Error(`Config validation failed (${configPath}):\n${issues}`);
|
|
119
|
+
}
|
|
120
|
+
// 6. 路径展开
|
|
121
|
+
return { config: expandPaths(result.data), configPath };
|
|
122
|
+
}
|
|
123
|
+
/** 简单的深度合并:target 中的值覆盖 defaults */
|
|
124
|
+
function deepMerge(defaults, target) {
|
|
125
|
+
const result = { ...defaults };
|
|
126
|
+
for (const [key, value] of Object.entries(target)) {
|
|
127
|
+
const defaultValue = defaults[key];
|
|
128
|
+
if (typeof value === "object" &&
|
|
129
|
+
value !== null &&
|
|
130
|
+
!Array.isArray(value) &&
|
|
131
|
+
typeof defaultValue === "object" &&
|
|
132
|
+
defaultValue !== null &&
|
|
133
|
+
!Array.isArray(defaultValue)) {
|
|
134
|
+
result[key] = deepMerge(defaultValue, value);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
result[key] = value;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return result;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const providerConfigSchema: z.ZodObject<{
|
|
3
|
+
apiKey: z.ZodString;
|
|
4
|
+
baseUrl: z.ZodOptional<z.ZodString>;
|
|
5
|
+
}, "strip", z.ZodTypeAny, {
|
|
6
|
+
apiKey: string;
|
|
7
|
+
baseUrl?: string | undefined;
|
|
8
|
+
}, {
|
|
9
|
+
apiKey: string;
|
|
10
|
+
baseUrl?: string | undefined;
|
|
11
|
+
}>;
|
|
12
|
+
export declare const llmConfigSchema: z.ZodObject<{
|
|
13
|
+
defaultProvider: z.ZodString;
|
|
14
|
+
defaultModel: z.ZodString;
|
|
15
|
+
providers: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
16
|
+
apiKey: z.ZodString;
|
|
17
|
+
baseUrl: z.ZodOptional<z.ZodString>;
|
|
18
|
+
}, "strip", z.ZodTypeAny, {
|
|
19
|
+
apiKey: string;
|
|
20
|
+
baseUrl?: string | undefined;
|
|
21
|
+
}, {
|
|
22
|
+
apiKey: string;
|
|
23
|
+
baseUrl?: string | undefined;
|
|
24
|
+
}>>;
|
|
25
|
+
}, "strip", z.ZodTypeAny, {
|
|
26
|
+
defaultProvider: string;
|
|
27
|
+
defaultModel: string;
|
|
28
|
+
providers: Record<string, {
|
|
29
|
+
apiKey: string;
|
|
30
|
+
baseUrl?: string | undefined;
|
|
31
|
+
}>;
|
|
32
|
+
}, {
|
|
33
|
+
defaultProvider: string;
|
|
34
|
+
defaultModel: string;
|
|
35
|
+
providers: Record<string, {
|
|
36
|
+
apiKey: string;
|
|
37
|
+
baseUrl?: string | undefined;
|
|
38
|
+
}>;
|
|
39
|
+
}>;
|
|
40
|
+
export declare const routerConfigSchema: z.ZodObject<{
|
|
41
|
+
mode: z.ZodEnum<["declarative", "llm", "auto"]>;
|
|
42
|
+
llmModel: z.ZodOptional<z.ZodString>;
|
|
43
|
+
confirmThreshold: z.ZodOptional<z.ZodNumber>;
|
|
44
|
+
}, "strip", z.ZodTypeAny, {
|
|
45
|
+
mode: "declarative" | "llm" | "auto";
|
|
46
|
+
llmModel?: string | undefined;
|
|
47
|
+
confirmThreshold?: number | undefined;
|
|
48
|
+
}, {
|
|
49
|
+
mode: "declarative" | "llm" | "auto";
|
|
50
|
+
llmModel?: string | undefined;
|
|
51
|
+
confirmThreshold?: number | undefined;
|
|
52
|
+
}>;
|
|
53
|
+
export declare const agentsConfigSchema: z.ZodObject<{
|
|
54
|
+
dataDir: z.ZodString;
|
|
55
|
+
}, "strip", z.ZodTypeAny, {
|
|
56
|
+
dataDir: string;
|
|
57
|
+
}, {
|
|
58
|
+
dataDir: string;
|
|
59
|
+
}>;
|
|
60
|
+
export declare const rollConfigSchema: z.ZodObject<{
|
|
61
|
+
llm: z.ZodObject<{
|
|
62
|
+
defaultProvider: z.ZodString;
|
|
63
|
+
defaultModel: z.ZodString;
|
|
64
|
+
providers: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
65
|
+
apiKey: z.ZodString;
|
|
66
|
+
baseUrl: z.ZodOptional<z.ZodString>;
|
|
67
|
+
}, "strip", z.ZodTypeAny, {
|
|
68
|
+
apiKey: string;
|
|
69
|
+
baseUrl?: string | undefined;
|
|
70
|
+
}, {
|
|
71
|
+
apiKey: string;
|
|
72
|
+
baseUrl?: string | undefined;
|
|
73
|
+
}>>;
|
|
74
|
+
}, "strip", z.ZodTypeAny, {
|
|
75
|
+
defaultProvider: string;
|
|
76
|
+
defaultModel: string;
|
|
77
|
+
providers: Record<string, {
|
|
78
|
+
apiKey: string;
|
|
79
|
+
baseUrl?: string | undefined;
|
|
80
|
+
}>;
|
|
81
|
+
}, {
|
|
82
|
+
defaultProvider: string;
|
|
83
|
+
defaultModel: string;
|
|
84
|
+
providers: Record<string, {
|
|
85
|
+
apiKey: string;
|
|
86
|
+
baseUrl?: string | undefined;
|
|
87
|
+
}>;
|
|
88
|
+
}>;
|
|
89
|
+
router: z.ZodObject<{
|
|
90
|
+
mode: z.ZodEnum<["declarative", "llm", "auto"]>;
|
|
91
|
+
llmModel: z.ZodOptional<z.ZodString>;
|
|
92
|
+
confirmThreshold: z.ZodOptional<z.ZodNumber>;
|
|
93
|
+
}, "strip", z.ZodTypeAny, {
|
|
94
|
+
mode: "declarative" | "llm" | "auto";
|
|
95
|
+
llmModel?: string | undefined;
|
|
96
|
+
confirmThreshold?: number | undefined;
|
|
97
|
+
}, {
|
|
98
|
+
mode: "declarative" | "llm" | "auto";
|
|
99
|
+
llmModel?: string | undefined;
|
|
100
|
+
confirmThreshold?: number | undefined;
|
|
101
|
+
}>;
|
|
102
|
+
agents: z.ZodObject<{
|
|
103
|
+
dataDir: z.ZodString;
|
|
104
|
+
}, "strip", z.ZodTypeAny, {
|
|
105
|
+
dataDir: string;
|
|
106
|
+
}, {
|
|
107
|
+
dataDir: string;
|
|
108
|
+
}>;
|
|
109
|
+
}, "strip", z.ZodTypeAny, {
|
|
110
|
+
llm: {
|
|
111
|
+
defaultProvider: string;
|
|
112
|
+
defaultModel: string;
|
|
113
|
+
providers: Record<string, {
|
|
114
|
+
apiKey: string;
|
|
115
|
+
baseUrl?: string | undefined;
|
|
116
|
+
}>;
|
|
117
|
+
};
|
|
118
|
+
router: {
|
|
119
|
+
mode: "declarative" | "llm" | "auto";
|
|
120
|
+
llmModel?: string | undefined;
|
|
121
|
+
confirmThreshold?: number | undefined;
|
|
122
|
+
};
|
|
123
|
+
agents: {
|
|
124
|
+
dataDir: string;
|
|
125
|
+
};
|
|
126
|
+
}, {
|
|
127
|
+
llm: {
|
|
128
|
+
defaultProvider: string;
|
|
129
|
+
defaultModel: string;
|
|
130
|
+
providers: Record<string, {
|
|
131
|
+
apiKey: string;
|
|
132
|
+
baseUrl?: string | undefined;
|
|
133
|
+
}>;
|
|
134
|
+
};
|
|
135
|
+
router: {
|
|
136
|
+
mode: "declarative" | "llm" | "auto";
|
|
137
|
+
llmModel?: string | undefined;
|
|
138
|
+
confirmThreshold?: number | undefined;
|
|
139
|
+
};
|
|
140
|
+
agents: {
|
|
141
|
+
dataDir: string;
|
|
142
|
+
};
|
|
143
|
+
}>;
|
|
144
|
+
export type RollConfig = z.infer<typeof rollConfigSchema>;
|
|
145
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB;;;;;;;;;EAG/B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI1B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI7B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;EAE7B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const providerConfigSchema = z.object({
|
|
3
|
+
apiKey: z.string(),
|
|
4
|
+
baseUrl: z.string().optional(),
|
|
5
|
+
});
|
|
6
|
+
export const llmConfigSchema = z.object({
|
|
7
|
+
defaultProvider: z.string(),
|
|
8
|
+
defaultModel: z.string(),
|
|
9
|
+
providers: z.record(z.string(), providerConfigSchema),
|
|
10
|
+
});
|
|
11
|
+
export const routerConfigSchema = z.object({
|
|
12
|
+
mode: z.enum(["declarative", "llm", "auto"]),
|
|
13
|
+
llmModel: z.string().optional(),
|
|
14
|
+
confirmThreshold: z.number().optional(),
|
|
15
|
+
});
|
|
16
|
+
export const agentsConfigSchema = z.object({
|
|
17
|
+
dataDir: z.string(),
|
|
18
|
+
});
|
|
19
|
+
export const rollConfigSchema = z.object({
|
|
20
|
+
llm: llmConfigSchema,
|
|
21
|
+
router: routerConfigSchema,
|
|
22
|
+
agents: agentsConfigSchema,
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC;CACtD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,GAAG,EAAE,eAAe;IACpB,MAAM,EAAE,kBAAkB;IAC1B,MAAM,EAAE,kBAAkB;CAC3B,CAAC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { RollConfig } from "../config/schema.ts";
|
|
2
|
+
/** LLM Engine 选项 */
|
|
3
|
+
export interface LLMEngineOptions {
|
|
4
|
+
/** 覆盖默认 provider */
|
|
5
|
+
readonly provider?: string;
|
|
6
|
+
/** 覆盖默认 model */
|
|
7
|
+
readonly model?: string;
|
|
8
|
+
}
|
|
9
|
+
/** LLM Engine — 统一多 Provider 的文本生成接口 */
|
|
10
|
+
export declare class LLMEngine {
|
|
11
|
+
private readonly config;
|
|
12
|
+
constructor(config: RollConfig);
|
|
13
|
+
/**
|
|
14
|
+
* 生成文本(非流式)。
|
|
15
|
+
*
|
|
16
|
+
* 使用 AI SDK v6 的 generateText,支持 Anthropic provider。
|
|
17
|
+
*/
|
|
18
|
+
generateText(prompt: string, options?: LLMEngineOptions): Promise<string>;
|
|
19
|
+
/** 解析 provider + model,创建 AI SDK LanguageModel 实例 */
|
|
20
|
+
private resolveModel;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/llm/engine.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,oBAAoB;AACpB,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB;IACpB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB;IACjB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wCAAwC;AACxC,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;gBAExB,MAAM,EAAE,UAAU;IAI9B;;;;OAIG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IAMnF,qDAAqD;IACrD,OAAO,CAAC,YAAY;CAcrB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { generateText } from "ai";
|
|
2
|
+
import { createProviderModel } from "./providers.js";
|
|
3
|
+
/** LLM Engine — 统一多 Provider 的文本生成接口 */
|
|
4
|
+
export class LLMEngine {
|
|
5
|
+
config;
|
|
6
|
+
constructor(config) {
|
|
7
|
+
this.config = config;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 生成文本(非流式)。
|
|
11
|
+
*
|
|
12
|
+
* 使用 AI SDK v6 的 generateText,支持 Anthropic provider。
|
|
13
|
+
*/
|
|
14
|
+
async generateText(prompt, options = {}) {
|
|
15
|
+
const model = this.resolveModel(options);
|
|
16
|
+
const result = await generateText({ model, prompt });
|
|
17
|
+
return result.text;
|
|
18
|
+
}
|
|
19
|
+
/** 解析 provider + model,创建 AI SDK LanguageModel 实例 */
|
|
20
|
+
resolveModel(options) {
|
|
21
|
+
const providerName = options.provider ?? this.config.llm.defaultProvider;
|
|
22
|
+
const modelName = options.model ?? this.config.llm.defaultModel;
|
|
23
|
+
const providerConfig = this.config.llm.providers[providerName];
|
|
24
|
+
if (!providerConfig) {
|
|
25
|
+
throw new Error(`LLM provider "${providerName}" not configured. ` +
|
|
26
|
+
`Available: ${Object.keys(this.config.llm.providers).join(", ") || "(none)"}`);
|
|
27
|
+
}
|
|
28
|
+
return createProviderModel(providerName, modelName, providerConfig.apiKey, providerConfig.baseUrl);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/llm/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAWrD,wCAAwC;AACxC,MAAM,OAAO,SAAS;IACH,MAAM,CAAa;IAEpC,YAAY,MAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,UAA4B,EAAE;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,qDAAqD;IAC7C,YAAY,CAAC,OAAyB;QAC5C,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;QACzE,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;QAChE,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAE/D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,iBAAiB,YAAY,oBAAoB;gBAC/C,cAAc,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAChF,CAAC;QACJ,CAAC;QAED,OAAO,mBAAmB,CAAC,YAAY,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACrG,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { LanguageModelV3 } from "@ai-sdk/provider";
|
|
2
|
+
/**
|
|
3
|
+
* 根据 provider 名称创建 AI SDK LanguageModel 实例。
|
|
4
|
+
*
|
|
5
|
+
* 支持: anthropic, openai, deepseek, qwen
|
|
6
|
+
*/
|
|
7
|
+
export declare function createProviderModel(providerName: string, modelName: string, apiKey: string, baseURL?: string): LanguageModelV3;
|
|
8
|
+
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/llm/providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAyCxD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GACf,eAAe,CASjB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { createAnthropic } from "@ai-sdk/anthropic";
|
|
2
|
+
import { createOpenAI } from "@ai-sdk/openai";
|
|
3
|
+
import { createDeepSeek } from "@ai-sdk/deepseek";
|
|
4
|
+
/** Qwen(通义千问)DashScope OpenAI 兼容 API 地址 */
|
|
5
|
+
const QWEN_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1";
|
|
6
|
+
/** 已注册的 Provider 工厂 */
|
|
7
|
+
const PROVIDER_FACTORIES = {
|
|
8
|
+
anthropic: (modelName, { apiKey, baseURL }) => {
|
|
9
|
+
const provider = createAnthropic({ apiKey, ...(baseURL ? { baseURL } : {}) });
|
|
10
|
+
return provider(modelName);
|
|
11
|
+
},
|
|
12
|
+
openai: (modelName, { apiKey, baseURL }) => {
|
|
13
|
+
const provider = createOpenAI({ apiKey, ...(baseURL ? { baseURL } : {}) });
|
|
14
|
+
return provider(modelName);
|
|
15
|
+
},
|
|
16
|
+
deepseek: (modelName, { apiKey, baseURL }) => {
|
|
17
|
+
const provider = createDeepSeek({ apiKey, ...(baseURL ? { baseURL } : {}) });
|
|
18
|
+
return provider(modelName);
|
|
19
|
+
},
|
|
20
|
+
qwen: (modelName, { apiKey, baseURL }) => {
|
|
21
|
+
const provider = createOpenAI({ apiKey, baseURL: baseURL ?? QWEN_BASE_URL });
|
|
22
|
+
return provider(modelName);
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* 根据 provider 名称创建 AI SDK LanguageModel 实例。
|
|
27
|
+
*
|
|
28
|
+
* 支持: anthropic, openai, deepseek, qwen
|
|
29
|
+
*/
|
|
30
|
+
export function createProviderModel(providerName, modelName, apiKey, baseURL) {
|
|
31
|
+
const factory = PROVIDER_FACTORIES[providerName];
|
|
32
|
+
if (!factory) {
|
|
33
|
+
const available = Object.keys(PROVIDER_FACTORIES).join(", ");
|
|
34
|
+
throw new Error(`Unknown LLM provider "${providerName}". Supported: ${available}`);
|
|
35
|
+
}
|
|
36
|
+
return factory(modelName, { apiKey, baseURL });
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/llm/providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAelD,2CAA2C;AAC3C,MAAM,aAAa,GAAG,mDAAmD,CAAC;AAE1E,uBAAuB;AACvB,MAAM,kBAAkB,GAAoC;IAC1D,SAAS,EAAE,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QAC5C,MAAM,QAAQ,GAAG,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9E,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QACzC,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3E,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,QAAQ,EAAE,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7E,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QACvC,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,CAAC,CAAC;QAC7E,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,YAAoB,EACpB,SAAiB,EACjB,MAAc,EACd,OAAgB;IAEhB,MAAM,OAAO,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAEjD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,iBAAiB,SAAS,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,OAAO,OAAO,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
2
|
+
import type { LanguageModelV3 } from "@ai-sdk/provider";
|
|
3
|
+
import type { AgentTransport } from "../types/agent.ts";
|
|
4
|
+
export interface ConnectOptions {
|
|
5
|
+
/** 连接超时(毫秒),默认 30s */
|
|
6
|
+
readonly timeoutMs?: number;
|
|
7
|
+
/** 为子 Agent 提供的 LLM model(启用 Sampling 支持) */
|
|
8
|
+
readonly samplingModel?: LanguageModelV3;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* MCP Client Manager — 管理到子 Agent MCP Server 的连接。
|
|
12
|
+
*
|
|
13
|
+
* 支持两种传输模式:
|
|
14
|
+
* - stdio:spawn 子进程,通过 stdin/stdout 通信
|
|
15
|
+
* - streamable-http:连接到远程 HTTP MCP Server
|
|
16
|
+
*
|
|
17
|
+
* 连接按 agent name 缓存复用,disconnect 时清理。
|
|
18
|
+
*/
|
|
19
|
+
export declare class McpClientManager {
|
|
20
|
+
private readonly connections;
|
|
21
|
+
/**
|
|
22
|
+
* 获取或创建到指定 Agent 的 MCP 连接。
|
|
23
|
+
*
|
|
24
|
+
* @param cwd 仅 stdio 模式使用,作为子进程工作目录
|
|
25
|
+
*/
|
|
26
|
+
connect(agentName: string, transport: AgentTransport, cwd: string, options?: ConnectOptions): Promise<Client>;
|
|
27
|
+
/** 断开指定 Agent 的连接 */
|
|
28
|
+
disconnect(agentName: string): Promise<void>;
|
|
29
|
+
/** 断开所有连接 */
|
|
30
|
+
disconnectAll(): Promise<void>;
|
|
31
|
+
/** 检查是否已连接 */
|
|
32
|
+
isConnected(agentName: string): boolean;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=client-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-manager.d.ts","sourceRoot":"","sources":["../../src/mcp/client-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAInE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAYxD,MAAM,WAAW,cAAc;IAC7B,sBAAsB;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC;CAC1C;AAED;;;;;;;;GAQG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwC;IAEpE;;;;OAIG;IACG,OAAO,CACX,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,cAAc,EACzB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC;IAkDlB,qBAAqB;IACf,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,aAAa;IACP,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAKpC,cAAc;IACd,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAGxC"}
|