@agenticc/core 1.0.0

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 (196) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +370 -0
  3. package/README.zh-CN.md +372 -0
  4. package/dist/audit/index.d.ts +9 -0
  5. package/dist/audit/index.d.ts.map +1 -0
  6. package/dist/audit/index.js +9 -0
  7. package/dist/audit/index.js.map +1 -0
  8. package/dist/audit/logger.d.ts +211 -0
  9. package/dist/audit/logger.d.ts.map +1 -0
  10. package/dist/audit/logger.js +268 -0
  11. package/dist/audit/logger.js.map +1 -0
  12. package/dist/audit/query.d.ts +164 -0
  13. package/dist/audit/query.d.ts.map +1 -0
  14. package/dist/audit/query.js +250 -0
  15. package/dist/audit/query.js.map +1 -0
  16. package/dist/conversation/context-builder.d.ts +119 -0
  17. package/dist/conversation/context-builder.d.ts.map +1 -0
  18. package/dist/conversation/context-builder.js +252 -0
  19. package/dist/conversation/context-builder.js.map +1 -0
  20. package/dist/conversation/index.d.ts +10 -0
  21. package/dist/conversation/index.d.ts.map +1 -0
  22. package/dist/conversation/index.js +10 -0
  23. package/dist/conversation/index.js.map +1 -0
  24. package/dist/conversation/message-store.d.ts +231 -0
  25. package/dist/conversation/message-store.d.ts.map +1 -0
  26. package/dist/conversation/message-store.js +404 -0
  27. package/dist/conversation/message-store.js.map +1 -0
  28. package/dist/conversation/session.d.ts +201 -0
  29. package/dist/conversation/session.d.ts.map +1 -0
  30. package/dist/conversation/session.js +285 -0
  31. package/dist/conversation/session.js.map +1 -0
  32. package/dist/core/agent.d.ts +277 -0
  33. package/dist/core/agent.d.ts.map +1 -0
  34. package/dist/core/agent.js +674 -0
  35. package/dist/core/agent.js.map +1 -0
  36. package/dist/core/agentic-loop.d.ts +98 -0
  37. package/dist/core/agentic-loop.d.ts.map +1 -0
  38. package/dist/core/agentic-loop.js +496 -0
  39. package/dist/core/agentic-loop.js.map +1 -0
  40. package/dist/core/index.d.ts +14 -0
  41. package/dist/core/index.d.ts.map +1 -0
  42. package/dist/core/index.js +14 -0
  43. package/dist/core/index.js.map +1 -0
  44. package/dist/core/intent-parser.d.ts +101 -0
  45. package/dist/core/intent-parser.d.ts.map +1 -0
  46. package/dist/core/intent-parser.js +221 -0
  47. package/dist/core/intent-parser.js.map +1 -0
  48. package/dist/core/plan-generator.d.ts +133 -0
  49. package/dist/core/plan-generator.d.ts.map +1 -0
  50. package/dist/core/plan-generator.js +294 -0
  51. package/dist/core/plan-generator.js.map +1 -0
  52. package/dist/core/plugin-manager.d.ts +120 -0
  53. package/dist/core/plugin-manager.d.ts.map +1 -0
  54. package/dist/core/plugin-manager.js +369 -0
  55. package/dist/core/plugin-manager.js.map +1 -0
  56. package/dist/core/response-handler.d.ts +141 -0
  57. package/dist/core/response-handler.d.ts.map +1 -0
  58. package/dist/core/response-handler.js +384 -0
  59. package/dist/core/response-handler.js.map +1 -0
  60. package/dist/core/tool-executor.d.ts +143 -0
  61. package/dist/core/tool-executor.d.ts.map +1 -0
  62. package/dist/core/tool-executor.js +354 -0
  63. package/dist/core/tool-executor.js.map +1 -0
  64. package/dist/core/tool-registry.d.ts +133 -0
  65. package/dist/core/tool-registry.d.ts.map +1 -0
  66. package/dist/core/tool-registry.js +252 -0
  67. package/dist/core/tool-registry.js.map +1 -0
  68. package/dist/index.d.ts +44 -0
  69. package/dist/index.d.ts.map +1 -0
  70. package/dist/index.js +47 -0
  71. package/dist/index.js.map +1 -0
  72. package/dist/knowledge/chunker.d.ts +78 -0
  73. package/dist/knowledge/chunker.d.ts.map +1 -0
  74. package/dist/knowledge/chunker.js +233 -0
  75. package/dist/knowledge/chunker.js.map +1 -0
  76. package/dist/knowledge/embedder.d.ts +93 -0
  77. package/dist/knowledge/embedder.d.ts.map +1 -0
  78. package/dist/knowledge/embedder.js +205 -0
  79. package/dist/knowledge/embedder.js.map +1 -0
  80. package/dist/knowledge/index.d.ts +10 -0
  81. package/dist/knowledge/index.d.ts.map +1 -0
  82. package/dist/knowledge/index.js +11 -0
  83. package/dist/knowledge/index.js.map +1 -0
  84. package/dist/knowledge/loaders/index.d.ts +10 -0
  85. package/dist/knowledge/loaders/index.d.ts.map +1 -0
  86. package/dist/knowledge/loaders/index.js +10 -0
  87. package/dist/knowledge/loaders/index.js.map +1 -0
  88. package/dist/knowledge/loaders/markdown.d.ts +88 -0
  89. package/dist/knowledge/loaders/markdown.d.ts.map +1 -0
  90. package/dist/knowledge/loaders/markdown.js +205 -0
  91. package/dist/knowledge/loaders/markdown.js.map +1 -0
  92. package/dist/knowledge/loaders/yaml.d.ts +112 -0
  93. package/dist/knowledge/loaders/yaml.d.ts.map +1 -0
  94. package/dist/knowledge/loaders/yaml.js +368 -0
  95. package/dist/knowledge/loaders/yaml.js.map +1 -0
  96. package/dist/knowledge/retriever.d.ts +144 -0
  97. package/dist/knowledge/retriever.d.ts.map +1 -0
  98. package/dist/knowledge/retriever.js +399 -0
  99. package/dist/knowledge/retriever.js.map +1 -0
  100. package/dist/knowledge/store.d.ts +146 -0
  101. package/dist/knowledge/store.d.ts.map +1 -0
  102. package/dist/knowledge/store.js +420 -0
  103. package/dist/knowledge/store.js.map +1 -0
  104. package/dist/llm/adapter.d.ts +194 -0
  105. package/dist/llm/adapter.d.ts.map +1 -0
  106. package/dist/llm/adapter.js +42 -0
  107. package/dist/llm/adapter.js.map +1 -0
  108. package/dist/llm/adapters/anyrouter.d.ts +84 -0
  109. package/dist/llm/adapters/anyrouter.d.ts.map +1 -0
  110. package/dist/llm/adapters/anyrouter.js +372 -0
  111. package/dist/llm/adapters/anyrouter.js.map +1 -0
  112. package/dist/llm/adapters/claude.d.ts +66 -0
  113. package/dist/llm/adapters/claude.d.ts.map +1 -0
  114. package/dist/llm/adapters/claude.js +323 -0
  115. package/dist/llm/adapters/claude.js.map +1 -0
  116. package/dist/llm/adapters/index.d.ts +12 -0
  117. package/dist/llm/adapters/index.d.ts.map +1 -0
  118. package/dist/llm/adapters/index.js +12 -0
  119. package/dist/llm/adapters/index.js.map +1 -0
  120. package/dist/llm/adapters/mimo.d.ts +85 -0
  121. package/dist/llm/adapters/mimo.d.ts.map +1 -0
  122. package/dist/llm/adapters/mimo.js +316 -0
  123. package/dist/llm/adapters/mimo.js.map +1 -0
  124. package/dist/llm/adapters/openai.d.ts +53 -0
  125. package/dist/llm/adapters/openai.d.ts.map +1 -0
  126. package/dist/llm/adapters/openai.js +293 -0
  127. package/dist/llm/adapters/openai.js.map +1 -0
  128. package/dist/llm/adapters/qwen.d.ts +53 -0
  129. package/dist/llm/adapters/qwen.d.ts.map +1 -0
  130. package/dist/llm/adapters/qwen.js +299 -0
  131. package/dist/llm/adapters/qwen.js.map +1 -0
  132. package/dist/llm/adapters/siliconflow.d.ts +69 -0
  133. package/dist/llm/adapters/siliconflow.d.ts.map +1 -0
  134. package/dist/llm/adapters/siliconflow.js +331 -0
  135. package/dist/llm/adapters/siliconflow.js.map +1 -0
  136. package/dist/llm/index.d.ts +9 -0
  137. package/dist/llm/index.d.ts.map +1 -0
  138. package/dist/llm/index.js +12 -0
  139. package/dist/llm/index.js.map +1 -0
  140. package/dist/llm/manager.d.ts +97 -0
  141. package/dist/llm/manager.d.ts.map +1 -0
  142. package/dist/llm/manager.js +337 -0
  143. package/dist/llm/manager.js.map +1 -0
  144. package/dist/test-utils/arbitraries.d.ts +230 -0
  145. package/dist/test-utils/arbitraries.d.ts.map +1 -0
  146. package/dist/test-utils/arbitraries.js +280 -0
  147. package/dist/test-utils/arbitraries.js.map +1 -0
  148. package/dist/test-utils/cleanup.d.ts +184 -0
  149. package/dist/test-utils/cleanup.d.ts.map +1 -0
  150. package/dist/test-utils/cleanup.js +282 -0
  151. package/dist/test-utils/cleanup.js.map +1 -0
  152. package/dist/test-utils/config.d.ts +80 -0
  153. package/dist/test-utils/config.d.ts.map +1 -0
  154. package/dist/test-utils/config.js +94 -0
  155. package/dist/test-utils/config.js.map +1 -0
  156. package/dist/test-utils/index.d.ts +10 -0
  157. package/dist/test-utils/index.d.ts.map +1 -0
  158. package/dist/test-utils/index.js +36 -0
  159. package/dist/test-utils/index.js.map +1 -0
  160. package/dist/test-utils/mocks.d.ts +170 -0
  161. package/dist/test-utils/mocks.d.ts.map +1 -0
  162. package/dist/test-utils/mocks.js +281 -0
  163. package/dist/test-utils/mocks.js.map +1 -0
  164. package/dist/types/config.d.ts +170 -0
  165. package/dist/types/config.d.ts.map +1 -0
  166. package/dist/types/config.js +120 -0
  167. package/dist/types/config.js.map +1 -0
  168. package/dist/types/knowledge.d.ts +95 -0
  169. package/dist/types/knowledge.d.ts.map +1 -0
  170. package/dist/types/knowledge.js +7 -0
  171. package/dist/types/knowledge.js.map +1 -0
  172. package/dist/types/loop.d.ts +148 -0
  173. package/dist/types/loop.d.ts.map +1 -0
  174. package/dist/types/loop.js +16 -0
  175. package/dist/types/loop.js.map +1 -0
  176. package/dist/types/plugin.d.ts +137 -0
  177. package/dist/types/plugin.d.ts.map +1 -0
  178. package/dist/types/plugin.js +15 -0
  179. package/dist/types/plugin.js.map +1 -0
  180. package/dist/types/response.d.ts +186 -0
  181. package/dist/types/response.d.ts.map +1 -0
  182. package/dist/types/response.js +99 -0
  183. package/dist/types/response.js.map +1 -0
  184. package/dist/types/streaming.d.ts +478 -0
  185. package/dist/types/streaming.d.ts.map +1 -0
  186. package/dist/types/streaming.js +483 -0
  187. package/dist/types/streaming.js.map +1 -0
  188. package/dist/types/tool.d.ts +118 -0
  189. package/dist/types/tool.d.ts.map +1 -0
  190. package/dist/types/tool.js +42 -0
  191. package/dist/types/tool.js.map +1 -0
  192. package/dist/utils/error.d.ts +22 -0
  193. package/dist/utils/error.d.ts.map +1 -0
  194. package/dist/utils/error.js +36 -0
  195. package/dist/utils/error.js.map +1 -0
  196. package/package.json +102 -0
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Core Module
3
+ *
4
+ * Contains the core components of the Agent system including
5
+ * tool registry, tool executor, intent parser, plan generator,
6
+ * response handler, and the main Agent class.
7
+ */
8
+ export * from './tool-registry.js';
9
+ export * from './tool-executor.js';
10
+ export * from './intent-parser.js';
11
+ export * from './plan-generator.js';
12
+ export * from './response-handler.js';
13
+ export * from './agent.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Core Module
3
+ *
4
+ * Contains the core components of the Agent system including
5
+ * tool registry, tool executor, intent parser, plan generator,
6
+ * response handler, and the main Agent class.
7
+ */
8
+ export * from './tool-registry.js';
9
+ export * from './tool-executor.js';
10
+ export * from './intent-parser.js';
11
+ export * from './plan-generator.js';
12
+ export * from './response-handler.js';
13
+ export * from './agent.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Intent Parser
3
+ *
4
+ * Parses user messages to extract intent, entities, and operation type.
5
+ * Uses LLM to understand natural language and determine appropriate actions.
6
+ *
7
+ * _Requirements: 1.1_
8
+ */
9
+ import type { LLMManager } from '../llm/manager.js';
10
+ import type { ChatMessage } from '../llm/adapter.js';
11
+ /**
12
+ * Parsed intent from user message
13
+ */
14
+ export interface Intent {
15
+ /** The main action or operation type */
16
+ action: string;
17
+ /** Key entities mentioned in the message */
18
+ entities: string[];
19
+ /** Required knowledge topics to fulfill the intent */
20
+ requiredTopics?: string[];
21
+ /** Confidence level of the parsing */
22
+ confidence: number;
23
+ /** Original user message */
24
+ originalMessage: string;
25
+ /** Additional context extracted from the message */
26
+ context?: Record<string, unknown>;
27
+ }
28
+ /**
29
+ * Operation types that the agent can perform
30
+ */
31
+ export type OperationType = 'query' | 'create' | 'update' | 'delete' | 'execute' | 'configure' | 'unknown';
32
+ /**
33
+ * Detailed intent with operation classification
34
+ */
35
+ export interface DetailedIntent extends Intent {
36
+ /** Classified operation type */
37
+ operationType: OperationType;
38
+ /** Target resource or entity */
39
+ target?: string;
40
+ /** Parameters extracted from the message */
41
+ parameters?: Record<string, unknown>;
42
+ }
43
+ /**
44
+ * Intent parser configuration
45
+ */
46
+ export interface IntentParserConfig {
47
+ /** System prompt for intent parsing */
48
+ systemPrompt?: string;
49
+ /** Whether to include conversation history */
50
+ includeHistory?: boolean;
51
+ /** Maximum history messages to include */
52
+ maxHistoryMessages?: number;
53
+ }
54
+ /**
55
+ * Intent Parser
56
+ *
57
+ * Uses LLM to parse user messages and extract structured intent information.
58
+ */
59
+ export declare class IntentParser {
60
+ private llmManager;
61
+ private config;
62
+ constructor(llmManager: LLMManager, config?: IntentParserConfig);
63
+ /**
64
+ * Parse a user message to extract intent
65
+ *
66
+ * @param message - User message to parse
67
+ * @param history - Optional conversation history
68
+ * @returns Parsed intent
69
+ */
70
+ parse(message: string, _history?: ChatMessage[]): Promise<DetailedIntent>;
71
+ /**
72
+ * Build messages for LLM call
73
+ */
74
+ private buildMessages;
75
+ /**
76
+ * Parse LLM response into DetailedIntent
77
+ */
78
+ private parseResponse;
79
+ /**
80
+ * Validate and normalize operation type
81
+ */
82
+ private validateOperationType;
83
+ /**
84
+ * Create a fallback intent when parsing fails
85
+ */
86
+ private createFallbackIntent;
87
+ /**
88
+ * Extract entities from a message using simple pattern matching
89
+ * Used as a supplement to LLM parsing
90
+ */
91
+ extractEntities(message: string): string[];
92
+ /**
93
+ * Update the system prompt
94
+ */
95
+ setSystemPrompt(prompt: string): void;
96
+ /**
97
+ * Get current configuration
98
+ */
99
+ getConfig(): Required<IntentParserConfig>;
100
+ }
101
+ //# sourceMappingURL=intent-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-parser.d.ts","sourceRoot":"","sources":["../../src/core/intent-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sDAAsD;IACtD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,WAAW,GACX,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,MAAM;IAC5C,gCAAgC;IAChC,aAAa,EAAE,aAAa,CAAC;IAC7B,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAkCD;;;;GAIG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,MAAM,CAA+B;gBAEjC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,kBAAkB;IAS/D;;;;;;OAMG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAM/E;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,aAAa;IA4BrB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyE5B;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAkB1C;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,kBAAkB,CAAC;CAG1C"}
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Intent Parser
3
+ *
4
+ * Parses user messages to extract intent, entities, and operation type.
5
+ * Uses LLM to understand natural language and determine appropriate actions.
6
+ *
7
+ * _Requirements: 1.1_
8
+ */
9
+ const DEFAULT_SYSTEM_PROMPT = `你是一个游戏服务器管理系统的意图解析器。
10
+ 你的任务是分析用户消息并提取结构化信息。
11
+
12
+ 【重要】你必须且只能返回一个 JSON 对象,不要包含任何其他文字或解释。
13
+
14
+ JSON 格式如下:
15
+ {
16
+ "action": "用户想要执行的主要操作描述",
17
+ "entities": ["提到的实体名称数组,如怪物名、Boss名、玩家名等"],
18
+ "requiredTopics": ["需要的知识主题数组"],
19
+ "operationType": "query|create|update|delete|execute|configure|unknown",
20
+ "target": "目标资源(可选)",
21
+ "parameters": {},
22
+ "confidence": 0.8
23
+ }
24
+
25
+ operationType 说明:
26
+ - query: 查询信息
27
+ - create: 创建新资源
28
+ - update: 修改现有资源
29
+ - delete: 删除资源
30
+ - execute: 执行操作
31
+ - configure: 配置设置
32
+ - unknown: 无法确定(如简单问候)
33
+
34
+ 示例:
35
+ 用户: "你好"
36
+ 返回: {"action":"问候","entities":[],"requiredTopics":[],"operationType":"unknown","confidence":0.9}
37
+
38
+ 用户: "查看所有Boss"
39
+ 返回: {"action":"查询Boss列表","entities":["Boss"],"requiredTopics":["boss"],"operationType":"query","target":"boss","confidence":0.95}`;
40
+ /**
41
+ * Intent Parser
42
+ *
43
+ * Uses LLM to parse user messages and extract structured intent information.
44
+ */
45
+ export class IntentParser {
46
+ llmManager;
47
+ config;
48
+ constructor(llmManager, config) {
49
+ this.llmManager = llmManager;
50
+ this.config = {
51
+ systemPrompt: config?.systemPrompt ?? DEFAULT_SYSTEM_PROMPT,
52
+ includeHistory: config?.includeHistory ?? true,
53
+ maxHistoryMessages: config?.maxHistoryMessages ?? 5,
54
+ };
55
+ }
56
+ /**
57
+ * Parse a user message to extract intent
58
+ *
59
+ * @param message - User message to parse
60
+ * @param history - Optional conversation history
61
+ * @returns Parsed intent
62
+ */
63
+ async parse(message, _history) {
64
+ // Skip LLM call for intent parsing - use keyword-based fallback directly
65
+ // This is more reliable for Chinese language models that don't follow JSON format
66
+ return this.createFallbackIntent(message);
67
+ }
68
+ /**
69
+ * Build messages for LLM call
70
+ */
71
+ buildMessages(message, history) {
72
+ const messages = [{ role: 'system', content: this.config.systemPrompt }];
73
+ // Add conversation history if enabled
74
+ if (this.config.includeHistory && history && history.length > 0) {
75
+ const recentHistory = history.slice(-this.config.maxHistoryMessages);
76
+ messages.push(...recentHistory);
77
+ }
78
+ // Add current user message
79
+ messages.push({ role: 'user', content: message });
80
+ return messages;
81
+ }
82
+ /**
83
+ * Parse LLM response into DetailedIntent
84
+ */
85
+ parseResponse(response, originalMessage) {
86
+ try {
87
+ // Extract JSON from response (handle markdown code blocks)
88
+ const jsonMatch = response.match(/```(?:json)?\s*([\s\S]*?)```/) || response.match(/\{[\s\S]*\}/);
89
+ const jsonStr = jsonMatch ? (jsonMatch[1] || jsonMatch[0]).trim() : response.trim();
90
+ const parsed = JSON.parse(jsonStr);
91
+ return {
92
+ action: parsed.action || 'unknown',
93
+ entities: Array.isArray(parsed.entities) ? parsed.entities : [],
94
+ requiredTopics: Array.isArray(parsed.requiredTopics) ? parsed.requiredTopics : [],
95
+ confidence: typeof parsed.confidence === 'number' ? Math.max(0, Math.min(1, parsed.confidence)) : 0.5,
96
+ originalMessage,
97
+ operationType: this.validateOperationType(parsed.operationType),
98
+ target: parsed.target,
99
+ parameters: typeof parsed.parameters === 'object' ? parsed.parameters : undefined,
100
+ context: parsed.context,
101
+ };
102
+ }
103
+ catch (error) {
104
+ console.warn('Failed to parse intent response:', error);
105
+ return this.createFallbackIntent(originalMessage);
106
+ }
107
+ }
108
+ /**
109
+ * Validate and normalize operation type
110
+ */
111
+ validateOperationType(type) {
112
+ const validTypes = [
113
+ 'query',
114
+ 'create',
115
+ 'update',
116
+ 'delete',
117
+ 'execute',
118
+ 'configure',
119
+ 'unknown',
120
+ ];
121
+ if (typeof type === 'string' && validTypes.includes(type)) {
122
+ return type;
123
+ }
124
+ return 'unknown';
125
+ }
126
+ /**
127
+ * Create a fallback intent when parsing fails
128
+ */
129
+ createFallbackIntent(message) {
130
+ // Simple heuristic-based fallback
131
+ const lowerMessage = message.toLowerCase();
132
+ let operationType = 'unknown';
133
+ const entities = [];
134
+ // Detect operation type from keywords
135
+ if (lowerMessage.includes('查询') ||
136
+ lowerMessage.includes('获取') ||
137
+ lowerMessage.includes('查看') ||
138
+ lowerMessage.includes('显示') ||
139
+ lowerMessage.includes('what') ||
140
+ lowerMessage.includes('show') ||
141
+ lowerMessage.includes('get') ||
142
+ lowerMessage.includes('list')) {
143
+ operationType = 'query';
144
+ }
145
+ else if (lowerMessage.includes('创建') ||
146
+ lowerMessage.includes('新建') ||
147
+ lowerMessage.includes('添加') ||
148
+ lowerMessage.includes('create') ||
149
+ lowerMessage.includes('add') ||
150
+ lowerMessage.includes('new')) {
151
+ operationType = 'create';
152
+ }
153
+ else if (lowerMessage.includes('修改') ||
154
+ lowerMessage.includes('更新') ||
155
+ lowerMessage.includes('编辑') ||
156
+ lowerMessage.includes('update') ||
157
+ lowerMessage.includes('modify') ||
158
+ lowerMessage.includes('edit')) {
159
+ operationType = 'update';
160
+ }
161
+ else if (lowerMessage.includes('删除') ||
162
+ lowerMessage.includes('移除') ||
163
+ lowerMessage.includes('delete') ||
164
+ lowerMessage.includes('remove')) {
165
+ operationType = 'delete';
166
+ }
167
+ else if (lowerMessage.includes('执行') ||
168
+ lowerMessage.includes('运行') ||
169
+ lowerMessage.includes('execute') ||
170
+ lowerMessage.includes('run')) {
171
+ operationType = 'execute';
172
+ }
173
+ else if (lowerMessage.includes('配置') ||
174
+ lowerMessage.includes('设置') ||
175
+ lowerMessage.includes('configure') ||
176
+ lowerMessage.includes('set')) {
177
+ operationType = 'configure';
178
+ }
179
+ // Higher confidence if we detected a known operation type
180
+ const confidence = operationType !== 'unknown' ? 0.6 : 0.3;
181
+ return {
182
+ action: message.slice(0, 100), // Use first 100 chars as action
183
+ entities,
184
+ requiredTopics: [],
185
+ confidence,
186
+ originalMessage: message,
187
+ operationType,
188
+ };
189
+ }
190
+ /**
191
+ * Extract entities from a message using simple pattern matching
192
+ * Used as a supplement to LLM parsing
193
+ */
194
+ extractEntities(message) {
195
+ const entities = [];
196
+ // Extract quoted strings
197
+ const quotedMatches = message.match(/["'](.*?)["']/g);
198
+ if (quotedMatches) {
199
+ entities.push(...quotedMatches.map((m) => m.slice(1, -1)));
200
+ }
201
+ // Extract potential identifiers (CamelCase or snake_case)
202
+ const identifierMatches = message.match(/\b[A-Z][a-zA-Z0-9]*(?:_[a-zA-Z0-9]+)*\b/g);
203
+ if (identifierMatches) {
204
+ entities.push(...identifierMatches);
205
+ }
206
+ return [...new Set(entities)]; // Remove duplicates
207
+ }
208
+ /**
209
+ * Update the system prompt
210
+ */
211
+ setSystemPrompt(prompt) {
212
+ this.config.systemPrompt = prompt;
213
+ }
214
+ /**
215
+ * Get current configuration
216
+ */
217
+ getConfig() {
218
+ return { ...this.config };
219
+ }
220
+ }
221
+ //# sourceMappingURL=intent-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-parser.js","sourceRoot":"","sources":["../../src/core/intent-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Plan Generator
3
+ *
4
+ * Generates execution plans based on parsed intent and retrieved knowledge.
5
+ * Determines which tools to call and in what order.
6
+ *
7
+ * _Requirements: 1.3_
8
+ */
9
+ import type { LLMManager } from '../llm/manager.js';
10
+ import type { ChatMessage } from '../llm/adapter.js';
11
+ import type { SearchResult } from '../types/knowledge.js';
12
+ import type { DetailedIntent } from './intent-parser.js';
13
+ import type { ToolRegistry } from './tool-registry.js';
14
+ /**
15
+ * A single step in an execution plan
16
+ */
17
+ export interface PlanStep {
18
+ /** Step number (1-based) */
19
+ stepNumber: number;
20
+ /** Tool to call */
21
+ toolName: string;
22
+ /** Arguments to pass to the tool */
23
+ arguments: Record<string, unknown>;
24
+ /** Description of what this step does */
25
+ description: string;
26
+ /** Whether this step depends on previous step results */
27
+ dependsOnPrevious: boolean;
28
+ /** Condition for executing this step (optional) */
29
+ condition?: string;
30
+ }
31
+ /**
32
+ * Complete execution plan
33
+ */
34
+ export interface ExecutionPlan {
35
+ /** Unique plan ID */
36
+ id: string;
37
+ /** Steps to execute */
38
+ steps: PlanStep[];
39
+ /** Overall plan description */
40
+ description: string;
41
+ /** Estimated risk level */
42
+ riskLevel: 'low' | 'medium' | 'high';
43
+ /** Whether the plan requires user confirmation */
44
+ requiresConfirmation: boolean;
45
+ /** Confidence in the plan */
46
+ confidence: number;
47
+ /** Original intent that generated this plan */
48
+ intent: DetailedIntent;
49
+ }
50
+ /**
51
+ * Plan generation result
52
+ */
53
+ export interface PlanGenerationResult {
54
+ /** Whether plan generation was successful */
55
+ success: boolean;
56
+ /** Generated plan (if successful) */
57
+ plan?: ExecutionPlan;
58
+ /** Reason for failure (if unsuccessful) */
59
+ failureReason?: string;
60
+ /** Missing information needed to generate plan */
61
+ missingInfo?: string[];
62
+ /** Alternative suggestions */
63
+ suggestions?: string[];
64
+ }
65
+ /**
66
+ * Plan generator configuration
67
+ */
68
+ export interface PlanGeneratorConfig {
69
+ /** System prompt for plan generation */
70
+ systemPrompt?: string;
71
+ /** Maximum steps allowed in a plan */
72
+ maxSteps?: number;
73
+ /** Whether to require confirmation for high-risk operations */
74
+ requireConfirmationForHighRisk?: boolean;
75
+ }
76
+ /**
77
+ * Plan Generator
78
+ *
79
+ * Uses LLM to generate execution plans based on intent and available tools.
80
+ */
81
+ export declare class PlanGenerator {
82
+ private llmManager;
83
+ private toolRegistry;
84
+ private config;
85
+ private planCounter;
86
+ constructor(llmManager: LLMManager, toolRegistry: ToolRegistry, config?: PlanGeneratorConfig);
87
+ /**
88
+ * Generate an execution plan based on intent and knowledge
89
+ *
90
+ * @param intent - Parsed user intent
91
+ * @param knowledge - Retrieved knowledge results
92
+ * @param history - Optional conversation history
93
+ * @returns Plan generation result
94
+ */
95
+ generate(intent: DetailedIntent, knowledge: SearchResult[], history?: ChatMessage[]): Promise<PlanGenerationResult>;
96
+ /**
97
+ * Build messages for LLM call
98
+ */
99
+ private buildMessages;
100
+ /**
101
+ * Build the user message with all context
102
+ */
103
+ private buildUserMessage;
104
+ /**
105
+ * Parse LLM response into PlanGenerationResult
106
+ */
107
+ private parseResponse;
108
+ /**
109
+ * Validate and build execution plan from parsed response
110
+ */
111
+ private validateAndBuildPlan;
112
+ /**
113
+ * Validate risk level
114
+ */
115
+ private validateRiskLevel;
116
+ /**
117
+ * Generate unique plan ID
118
+ */
119
+ private generatePlanId;
120
+ /**
121
+ * Create a simple single-step plan for direct tool calls
122
+ */
123
+ createDirectPlan(toolName: string, args: Record<string, unknown>, intent: DetailedIntent): ExecutionPlan;
124
+ /**
125
+ * Estimate risk level based on operation type and tools
126
+ */
127
+ estimateRiskLevel(intent: DetailedIntent, toolNames: string[]): 'low' | 'medium' | 'high';
128
+ /**
129
+ * Get current configuration
130
+ */
131
+ getConfig(): Required<PlanGeneratorConfig>;
132
+ }
133
+ //# sourceMappingURL=plan-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-generator.d.ts","sourceRoot":"","sources":["../../src/core/plan-generator.ts"],"names":[],"mappings":"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"}