@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.
Files changed (162) hide show
  1. package/bin/roll.js +2 -0
  2. package/dist/cli/commands/agent-add.d.ts +9 -0
  3. package/dist/cli/commands/agent-add.d.ts.map +1 -0
  4. package/dist/cli/commands/agent-add.js +123 -0
  5. package/dist/cli/commands/agent-add.js.map +1 -0
  6. package/dist/cli/commands/agent-health.d.ts +14 -0
  7. package/dist/cli/commands/agent-health.d.ts.map +1 -0
  8. package/dist/cli/commands/agent-health.js +85 -0
  9. package/dist/cli/commands/agent-health.js.map +1 -0
  10. package/dist/cli/commands/agent-info.d.ts +9 -0
  11. package/dist/cli/commands/agent-info.d.ts.map +1 -0
  12. package/dist/cli/commands/agent-info.js +32 -0
  13. package/dist/cli/commands/agent-info.js.map +1 -0
  14. package/dist/cli/commands/agent-list.d.ts +9 -0
  15. package/dist/cli/commands/agent-list.d.ts.map +1 -0
  16. package/dist/cli/commands/agent-list.js +37 -0
  17. package/dist/cli/commands/agent-list.js.map +1 -0
  18. package/dist/cli/commands/agent-remove.d.ts +9 -0
  19. package/dist/cli/commands/agent-remove.d.ts.map +1 -0
  20. package/dist/cli/commands/agent-remove.js +22 -0
  21. package/dist/cli/commands/agent-remove.js.map +1 -0
  22. package/dist/cli/commands/agent-start.d.ts +9 -0
  23. package/dist/cli/commands/agent-start.d.ts.map +1 -0
  24. package/dist/cli/commands/agent-start.js +44 -0
  25. package/dist/cli/commands/agent-start.js.map +1 -0
  26. package/dist/cli/commands/agent-stop.d.ts +9 -0
  27. package/dist/cli/commands/agent-stop.d.ts.map +1 -0
  28. package/dist/cli/commands/agent-stop.js +29 -0
  29. package/dist/cli/commands/agent-stop.js.map +1 -0
  30. package/dist/cli/commands/agent.d.ts +3 -0
  31. package/dist/cli/commands/agent.d.ts.map +1 -0
  32. package/dist/cli/commands/agent.js +14 -0
  33. package/dist/cli/commands/agent.js.map +1 -0
  34. package/dist/cli/commands/ask.d.ts +14 -0
  35. package/dist/cli/commands/ask.d.ts.map +1 -0
  36. package/dist/cli/commands/ask.js +103 -0
  37. package/dist/cli/commands/ask.js.map +1 -0
  38. package/dist/cli/commands/config.d.ts +19 -0
  39. package/dist/cli/commands/config.d.ts.map +1 -0
  40. package/dist/cli/commands/config.js +142 -0
  41. package/dist/cli/commands/config.js.map +1 -0
  42. package/dist/cli/commands/doctor.d.ts +10 -0
  43. package/dist/cli/commands/doctor.d.ts.map +1 -0
  44. package/dist/cli/commands/doctor.js +123 -0
  45. package/dist/cli/commands/doctor.js.map +1 -0
  46. package/dist/cli/commands/run.d.ts +24 -0
  47. package/dist/cli/commands/run.d.ts.map +1 -0
  48. package/dist/cli/commands/run.js +124 -0
  49. package/dist/cli/commands/run.js.map +1 -0
  50. package/dist/cli/commands/update.d.ts +12 -0
  51. package/dist/cli/commands/update.d.ts.map +1 -0
  52. package/dist/cli/commands/update.js +237 -0
  53. package/dist/cli/commands/update.js.map +1 -0
  54. package/dist/cli/index.d.ts +2 -0
  55. package/dist/cli/index.d.ts.map +1 -0
  56. package/dist/cli/index.js +31 -0
  57. package/dist/cli/index.js.map +1 -0
  58. package/dist/cli/smoke.e2e.d.ts +2 -0
  59. package/dist/cli/smoke.e2e.d.ts.map +1 -0
  60. package/dist/cli/smoke.e2e.js +57 -0
  61. package/dist/cli/smoke.e2e.js.map +1 -0
  62. package/dist/cli/utils/output.d.ts +24 -0
  63. package/dist/cli/utils/output.d.ts.map +1 -0
  64. package/dist/cli/utils/output.js +52 -0
  65. package/dist/cli/utils/output.js.map +1 -0
  66. package/dist/cli/utils/prompt.d.ts +2 -0
  67. package/dist/cli/utils/prompt.d.ts.map +1 -0
  68. package/dist/cli/utils/prompt.js +4 -0
  69. package/dist/cli/utils/prompt.js.map +1 -0
  70. package/dist/cli/utils/update-checker.d.ts +24 -0
  71. package/dist/cli/utils/update-checker.d.ts.map +1 -0
  72. package/dist/cli/utils/update-checker.js +146 -0
  73. package/dist/cli/utils/update-checker.js.map +1 -0
  74. package/dist/config/defaults.d.ts +6 -0
  75. package/dist/config/defaults.d.ts.map +1 -0
  76. package/dist/config/defaults.js +20 -0
  77. package/dist/config/defaults.js.map +1 -0
  78. package/dist/config/index.d.ts +6 -0
  79. package/dist/config/index.d.ts.map +1 -0
  80. package/dist/config/index.js +4 -0
  81. package/dist/config/index.js.map +1 -0
  82. package/dist/config/loader.d.ts +24 -0
  83. package/dist/config/loader.d.ts.map +1 -0
  84. package/dist/config/loader.js +142 -0
  85. package/dist/config/loader.js.map +1 -0
  86. package/dist/config/schema.d.ts +145 -0
  87. package/dist/config/schema.d.ts.map +1 -0
  88. package/dist/config/schema.js +24 -0
  89. package/dist/config/schema.js.map +1 -0
  90. package/dist/llm/engine.d.ts +22 -0
  91. package/dist/llm/engine.d.ts.map +1 -0
  92. package/dist/llm/engine.js +31 -0
  93. package/dist/llm/engine.js.map +1 -0
  94. package/dist/llm/index.d.ts +4 -0
  95. package/dist/llm/index.d.ts.map +1 -0
  96. package/dist/llm/index.js +3 -0
  97. package/dist/llm/index.js.map +1 -0
  98. package/dist/llm/providers.d.ts +8 -0
  99. package/dist/llm/providers.d.ts.map +1 -0
  100. package/dist/llm/providers.js +38 -0
  101. package/dist/llm/providers.js.map +1 -0
  102. package/dist/mcp/client-manager.d.ts +34 -0
  103. package/dist/mcp/client-manager.d.ts.map +1 -0
  104. package/dist/mcp/client-manager.js +79 -0
  105. package/dist/mcp/client-manager.js.map +1 -0
  106. package/dist/mcp/index.d.ts +2 -0
  107. package/dist/mcp/index.d.ts.map +1 -0
  108. package/dist/mcp/index.js +2 -0
  109. package/dist/mcp/index.js.map +1 -0
  110. package/dist/mcp/sampling-handler.d.ts +12 -0
  111. package/dist/mcp/sampling-handler.d.ts.map +1 -0
  112. package/dist/mcp/sampling-handler.js +56 -0
  113. package/dist/mcp/sampling-handler.js.map +1 -0
  114. package/dist/registry/discovery.d.ts +16 -0
  115. package/dist/registry/discovery.d.ts.map +1 -0
  116. package/dist/registry/discovery.js +72 -0
  117. package/dist/registry/discovery.js.map +1 -0
  118. package/dist/registry/health-check.d.ts +18 -0
  119. package/dist/registry/health-check.d.ts.map +1 -0
  120. package/dist/registry/health-check.js +65 -0
  121. package/dist/registry/health-check.js.map +1 -0
  122. package/dist/registry/index.d.ts +5 -0
  123. package/dist/registry/index.d.ts.map +1 -0
  124. package/dist/registry/index.js +4 -0
  125. package/dist/registry/index.js.map +1 -0
  126. package/dist/registry/process-manager.d.ts +13 -0
  127. package/dist/registry/process-manager.d.ts.map +1 -0
  128. package/dist/registry/process-manager.js +82 -0
  129. package/dist/registry/process-manager.js.map +1 -0
  130. package/dist/registry/store.d.ts +21 -0
  131. package/dist/registry/store.d.ts.map +1 -0
  132. package/dist/registry/store.js +81 -0
  133. package/dist/registry/store.js.map +1 -0
  134. package/dist/router/declarative.d.ts +8 -0
  135. package/dist/router/declarative.d.ts.map +1 -0
  136. package/dist/router/declarative.js +9 -0
  137. package/dist/router/declarative.js.map +1 -0
  138. package/dist/router/index.d.ts +3 -0
  139. package/dist/router/index.d.ts.map +1 -0
  140. package/dist/router/index.js +3 -0
  141. package/dist/router/index.js.map +1 -0
  142. package/dist/router/llm-router.d.ts +12 -0
  143. package/dist/router/llm-router.d.ts.map +1 -0
  144. package/dist/router/llm-router.js +60 -0
  145. package/dist/router/llm-router.js.map +1 -0
  146. package/dist/types/agent.d.ts +57 -0
  147. package/dist/types/agent.d.ts.map +1 -0
  148. package/dist/types/agent.js +3 -0
  149. package/dist/types/agent.js.map +1 -0
  150. package/dist/types/config.d.ts +2 -0
  151. package/dist/types/config.d.ts.map +1 -0
  152. package/dist/types/config.js +2 -0
  153. package/dist/types/config.js.map +1 -0
  154. package/dist/types/mcp.d.ts +7 -0
  155. package/dist/types/mcp.d.ts.map +1 -0
  156. package/dist/types/mcp.js +2 -0
  157. package/dist/types/mcp.js.map +1 -0
  158. package/dist/types/router.d.ts +21 -0
  159. package/dist/types/router.d.ts.map +1 -0
  160. package/dist/types/router.js +8 -0
  161. package/dist/types/router.js.map +1 -0
  162. package/package.json +47 -0
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 声明式路由:按名称直接查找 Agent。
3
+ *
4
+ * 用于 `roll run <agent> <tool>` 场景,不涉及 LLM。
5
+ */
6
+ export function resolveAgent(agentName, agents) {
7
+ return agents.find((a) => a.skill.name === agentName);
8
+ }
9
+ //# sourceMappingURL=declarative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declarative.js","sourceRoot":"","sources":["../../src/router/declarative.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,SAAiB,EACjB,MAAsC;IAEtC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { routeWithLLM } from "./llm-router.ts";
2
+ export { resolveAgent } from "./declarative.ts";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { routeWithLLM } from "./llm-router.js";
2
+ export { resolveAgent } from "./declarative.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { LanguageModelV3 } from "@ai-sdk/provider";
2
+ import type { RegisteredAgent } from "../types/agent.ts";
3
+ import type { RouteDecision } from "../types/router.ts";
4
+ /**
5
+ * 使用 LLM 从用户自然语言意图中选择最合适的 Agent + Tool。
6
+ *
7
+ * 两步走:
8
+ * 1. 构建包含所有 Agent 描述的 system prompt
9
+ * 2. 用 generateObject 让 LLM 返回结构化的路由决策
10
+ */
11
+ export declare function routeWithLLM(message: string, agents: ReadonlyArray<RegisteredAgent>, model: LanguageModelV3): Promise<RouteDecision>;
12
+ //# sourceMappingURL=llm-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-router.d.ts","sourceRoot":"","sources":["../../src/router/llm-router.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA2BxD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,EACtC,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,aAAa,CAAC,CA+BxB"}
@@ -0,0 +1,60 @@
1
+ import { generateText, Output } from "ai";
2
+ import { z } from "zod";
3
+ import { asConfidence } from "../types/router.js";
4
+ /** LLM 路由决策的 Zod schema */
5
+ const routeDecisionSchema = z.object({
6
+ agentName: z.string().describe("选择的 Agent 名称"),
7
+ toolName: z.string().describe("选择的 Tool 名称"),
8
+ input: z.record(z.string(), z.unknown()).describe("传递给 Tool 的参数"),
9
+ confidence: z.number().min(0).max(1).describe("决策置信度 0-1"),
10
+ });
11
+ /** 构建 Agent 能力描述,供 LLM 理解 */
12
+ function buildAgentCatalog(agents) {
13
+ if (agents.length === 0) {
14
+ return "当前没有已注册的 Agent。";
15
+ }
16
+ return agents
17
+ .map((agent) => {
18
+ const name = agent.skill.name;
19
+ const desc = agent.skill.description;
20
+ const toolsSection = agent.skillBody ? `\n 能力详情:\n${agent.skillBody}` : "";
21
+ return `Agent: ${name}\n 描述: ${desc}\n 状态: ${agent.status}${toolsSection}`;
22
+ })
23
+ .join("\n\n");
24
+ }
25
+ /**
26
+ * 使用 LLM 从用户自然语言意图中选择最合适的 Agent + Tool。
27
+ *
28
+ * 两步走:
29
+ * 1. 构建包含所有 Agent 描述的 system prompt
30
+ * 2. 用 generateObject 让 LLM 返回结构化的路由决策
31
+ */
32
+ export async function routeWithLLM(message, agents, model) {
33
+ const catalog = buildAgentCatalog(agents);
34
+ const systemPrompt = `你是 Roll Agent 的智能路由器。根据用户的自然语言请求,从已注册的 Agent 中选择最合适的 Agent 和 Tool。
35
+
36
+ 已注册的 Agent 列表:
37
+ ${catalog}
38
+
39
+ 规则:
40
+ - 选择与用户意图最匹配的 Agent 和 Tool
41
+ - 如果用户指定了参数(如数量限制),提取到 input 对象中
42
+ - confidence 字段表示你对这个匹配的把握程度(0-1)
43
+ - 如果没有合适的 Agent 匹配,confidence 应该很低(< 0.3)`;
44
+ const { output } = await generateText({
45
+ model,
46
+ output: Output.object({ schema: routeDecisionSchema }),
47
+ system: systemPrompt,
48
+ prompt: message,
49
+ });
50
+ if (!output) {
51
+ throw new Error("LLM router: failed to produce structured output");
52
+ }
53
+ return {
54
+ agentName: output.agentName,
55
+ toolName: output.toolName,
56
+ input: output.input,
57
+ confidence: asConfidence(Math.min(1, Math.max(0, output.confidence))),
58
+ };
59
+ }
60
+ //# sourceMappingURL=llm-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-router.js","sourceRoot":"","sources":["../../src/router/llm-router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,2BAA2B;AAC3B,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IAC9C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;IACjE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;CAC3D,CAAC,CAAC;AAEH,6BAA6B;AAC7B,SAAS,iBAAiB,CAAC,MAAsC;IAC/D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;QACrC,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,OAAO,UAAU,IAAI,WAAW,IAAI,WAAW,KAAK,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;IAC/E,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAe,EACf,MAAsC,EACtC,KAAsB;IAEtB,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1C,MAAM,YAAY,GAAG;;;EAGrB,OAAO;;;;;;0CAMiC,CAAC;IAEzC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC;QACpC,KAAK;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;QACtD,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,OAAO;KAChB,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;KACtE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,57 @@
1
+ /** Agent 传输模式 */
2
+ export type AgentTransport = {
3
+ readonly type: "stdio";
4
+ readonly command: string;
5
+ readonly args?: readonly string[];
6
+ } | {
7
+ readonly type: "streamable-http";
8
+ readonly endpoint: string;
9
+ };
10
+ /** SKILL.md frontmatter 解析结果 */
11
+ export interface AgentSkill {
12
+ readonly name: string;
13
+ readonly description: string;
14
+ readonly license?: string;
15
+ readonly compatibility?: string;
16
+ readonly metadata: Readonly<Record<string, string>>;
17
+ }
18
+ /** Agent 运行状态 */
19
+ export declare const AGENT_STATUSES: readonly ["idle", "starting", "online", "error", "stopped"];
20
+ export type AgentStatus = (typeof AGENT_STATUSES)[number];
21
+ /** Agent 来源(用于 update 策略判断) */
22
+ export type AgentSource = {
23
+ readonly type: "git";
24
+ readonly url: string;
25
+ } | {
26
+ readonly type: "local";
27
+ readonly path: string;
28
+ } | {
29
+ readonly type: "remote";
30
+ };
31
+ /** 已注册的 Agent 完整信息 */
32
+ export interface RegisteredAgent {
33
+ readonly skill: AgentSkill;
34
+ readonly transport: AgentTransport;
35
+ readonly installPath: string;
36
+ readonly registeredAt: string;
37
+ readonly status: AgentStatus;
38
+ /** SKILL.md body 内容(含 tool 描述等),用于 LLM 路由 */
39
+ readonly skillBody?: string;
40
+ /** Agent 来源,用于 roll update 判断更新策略。旧数据可能缺失此字段 */
41
+ readonly source?: AgentSource;
42
+ }
43
+ /** JSON Schema 子集,对应 MCP tool 的 inputSchema */
44
+ export interface JsonSchemaObject {
45
+ readonly type: "object";
46
+ readonly properties?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;
47
+ readonly required?: readonly string[];
48
+ readonly additionalProperties?: boolean;
49
+ readonly [key: string]: unknown;
50
+ }
51
+ /** MCP Tool Schema */
52
+ export interface AgentTool {
53
+ readonly name: string;
54
+ readonly description: string;
55
+ readonly inputSchema: JsonSchemaObject;
56
+ }
57
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACvF;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,gCAAgC;AAChC,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD;AAED,iBAAiB;AACjB,eAAO,MAAM,cAAc,6DAA8D,CAAC;AAC1F,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,+BAA+B;AAC/B,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEhC,sBAAsB;AACtB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,6CAA6C;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,gDAAgD;IAChD,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,sBAAsB;AACtB,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;CACxC"}
@@ -0,0 +1,3 @@
1
+ /** Agent 运行状态 */
2
+ export const AGENT_STATUSES = ["idle", "starting", "online", "error", "stopped"];
3
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"AAcA,iBAAiB;AACjB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export type { RollConfig } from "../config/schema.ts";
2
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ /** MCP 连接信息 */
2
+ export interface McpConnection {
3
+ readonly agentName: string;
4
+ readonly transport: "stdio" | "streamable-http";
5
+ readonly connected: boolean;
6
+ }
7
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/types/mcp.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,iBAAiB,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/types/mcp.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import type { RollConfig } from "../config/schema.ts";
2
+ /** 路由模式 — 从 Zod schema 派生,保持单一数据源 */
3
+ export type RouterMode = RollConfig["router"]["mode"];
4
+ /** LLM 路由决策结果 */
5
+ export interface RouteDecision {
6
+ readonly agentName: string;
7
+ readonly toolName: string;
8
+ readonly input: Readonly<Record<string, unknown>>;
9
+ /** 置信度,取值范围 0–1,低于 confirmThreshold 时请求用户确认 */
10
+ readonly confidence: Confidence;
11
+ }
12
+ /**
13
+ * 0–1 范围的置信度品牌类型。
14
+ * 使用 `asConfidence()` 构造以确保运行时校验。
15
+ */
16
+ export type Confidence = number & {
17
+ readonly __brand: "Confidence";
18
+ };
19
+ /** 将 number 安全转换为 Confidence(运行时校验 0–1 范围) */
20
+ export declare function asConfidence(value: number): Confidence;
21
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/types/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qCAAqC;AACrC,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,iBAAiB;AACjB,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAClD,+CAA+C;IAC/C,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC;AAErE,8CAA8C;AAC9C,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAKtD"}
@@ -0,0 +1,8 @@
1
+ /** 将 number 安全转换为 Confidence(运行时校验 0–1 范围) */
2
+ export function asConfidence(value) {
3
+ if (value < 0 || value > 1) {
4
+ throw new RangeError(`Confidence must be between 0 and 1, got ${String(value)}`);
5
+ }
6
+ return value;
7
+ }
8
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/types/router.ts"],"names":[],"mappings":"AAoBA,8CAA8C;AAC9C,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,UAAU,CAAC,2CAA2C,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,KAAmB,CAAC;AAC7B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@roll-agent/core",
3
+ "version": "0.1.1",
4
+ "type": "module",
5
+ "exports": {
6
+ ".": {
7
+ "types": "./dist/cli/index.d.ts",
8
+ "default": "./dist/cli/index.js"
9
+ }
10
+ },
11
+ "bin": {
12
+ "roll": "./bin/roll.js"
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "bin"
17
+ ],
18
+ "engines": {
19
+ "node": ">=22.6.0"
20
+ },
21
+ "scripts": {
22
+ "dev": "node --experimental-strip-types src/cli/index.ts",
23
+ "build": "tsc -p tsconfig.build.json",
24
+ "typecheck": "tsc --noEmit",
25
+ "test": "node --experimental-strip-types --test \"src/**/*.test.ts\"",
26
+ "test:e2e": "node --experimental-strip-types --test \"src/**/*.e2e.ts\"",
27
+ "clean": "rm -rf dist"
28
+ },
29
+ "dependencies": {
30
+ "@ai-sdk/anthropic": "^3.0.58",
31
+ "@ai-sdk/deepseek": "^2.0.24",
32
+ "@ai-sdk/openai": "^3.0.41",
33
+ "@ai-sdk/provider": "^3.0.8",
34
+ "@modelcontextprotocol/sdk": "^1.12.0",
35
+ "ai": "^6.0.116",
36
+ "chalk": "^5.4.0",
37
+ "citty": "^0.1.6",
38
+ "cli-table3": "^0.6.5",
39
+ "gray-matter": "^4.0.3",
40
+ "ora": "^8.1.0",
41
+ "yaml": "^2.7.0",
42
+ "zod": "^3.25.0"
43
+ },
44
+ "devDependencies": {
45
+ "@types/node": "^22.0.0"
46
+ }
47
+ }