@zhin.js/agent 0.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 (142) hide show
  1. package/LICENSE +21 -0
  2. package/lib/agent.d.ts +130 -0
  3. package/lib/agent.d.ts.map +1 -0
  4. package/lib/agent.js +702 -0
  5. package/lib/agent.js.map +1 -0
  6. package/lib/bootstrap.d.ts +91 -0
  7. package/lib/bootstrap.d.ts.map +1 -0
  8. package/lib/bootstrap.js +243 -0
  9. package/lib/bootstrap.js.map +1 -0
  10. package/lib/builtin-tools.d.ts +59 -0
  11. package/lib/builtin-tools.d.ts.map +1 -0
  12. package/lib/builtin-tools.js +777 -0
  13. package/lib/builtin-tools.js.map +1 -0
  14. package/lib/compaction.d.ts +132 -0
  15. package/lib/compaction.d.ts.map +1 -0
  16. package/lib/compaction.js +370 -0
  17. package/lib/compaction.js.map +1 -0
  18. package/lib/context-manager.d.ts +213 -0
  19. package/lib/context-manager.d.ts.map +1 -0
  20. package/lib/context-manager.js +313 -0
  21. package/lib/context-manager.js.map +1 -0
  22. package/lib/conversation-memory.d.ts +181 -0
  23. package/lib/conversation-memory.d.ts.map +1 -0
  24. package/lib/conversation-memory.js +581 -0
  25. package/lib/conversation-memory.js.map +1 -0
  26. package/lib/cron-engine.d.ts +91 -0
  27. package/lib/cron-engine.d.ts.map +1 -0
  28. package/lib/cron-engine.js +277 -0
  29. package/lib/cron-engine.js.map +1 -0
  30. package/lib/follow-up.d.ts +131 -0
  31. package/lib/follow-up.d.ts.map +1 -0
  32. package/lib/follow-up.js +265 -0
  33. package/lib/follow-up.js.map +1 -0
  34. package/lib/hooks.d.ts +143 -0
  35. package/lib/hooks.d.ts.map +1 -0
  36. package/lib/hooks.js +108 -0
  37. package/lib/hooks.js.map +1 -0
  38. package/lib/index.d.ts +43 -0
  39. package/lib/index.d.ts.map +1 -0
  40. package/lib/index.js +28 -0
  41. package/lib/index.js.map +1 -0
  42. package/lib/init.d.ts +30 -0
  43. package/lib/init.d.ts.map +1 -0
  44. package/lib/init.js +684 -0
  45. package/lib/init.js.map +1 -0
  46. package/lib/output.d.ts +93 -0
  47. package/lib/output.d.ts.map +1 -0
  48. package/lib/output.js +176 -0
  49. package/lib/output.js.map +1 -0
  50. package/lib/rate-limiter.d.ts +38 -0
  51. package/lib/rate-limiter.d.ts.map +1 -0
  52. package/lib/rate-limiter.js +86 -0
  53. package/lib/rate-limiter.js.map +1 -0
  54. package/lib/service.d.ts +86 -0
  55. package/lib/service.d.ts.map +1 -0
  56. package/lib/service.js +285 -0
  57. package/lib/service.js.map +1 -0
  58. package/lib/session.d.ts +186 -0
  59. package/lib/session.d.ts.map +1 -0
  60. package/lib/session.js +443 -0
  61. package/lib/session.js.map +1 -0
  62. package/lib/subagent.d.ts +50 -0
  63. package/lib/subagent.d.ts.map +1 -0
  64. package/lib/subagent.js +144 -0
  65. package/lib/subagent.js.map +1 -0
  66. package/lib/tone-detector.d.ts +19 -0
  67. package/lib/tone-detector.d.ts.map +1 -0
  68. package/lib/tone-detector.js +72 -0
  69. package/lib/tone-detector.js.map +1 -0
  70. package/lib/tools.d.ts +45 -0
  71. package/lib/tools.d.ts.map +1 -0
  72. package/lib/tools.js +206 -0
  73. package/lib/tools.js.map +1 -0
  74. package/lib/user-profile.d.ts +56 -0
  75. package/lib/user-profile.d.ts.map +1 -0
  76. package/lib/user-profile.js +130 -0
  77. package/lib/user-profile.js.map +1 -0
  78. package/lib/zhin-agent/builtin-tools.d.ts +17 -0
  79. package/lib/zhin-agent/builtin-tools.d.ts.map +1 -0
  80. package/lib/zhin-agent/builtin-tools.js +220 -0
  81. package/lib/zhin-agent/builtin-tools.js.map +1 -0
  82. package/lib/zhin-agent/config.d.ts +54 -0
  83. package/lib/zhin-agent/config.d.ts.map +1 -0
  84. package/lib/zhin-agent/config.js +76 -0
  85. package/lib/zhin-agent/config.js.map +1 -0
  86. package/lib/zhin-agent/exec-policy.d.ts +20 -0
  87. package/lib/zhin-agent/exec-policy.d.ts.map +1 -0
  88. package/lib/zhin-agent/exec-policy.js +71 -0
  89. package/lib/zhin-agent/exec-policy.js.map +1 -0
  90. package/lib/zhin-agent/index.d.ts +68 -0
  91. package/lib/zhin-agent/index.d.ts.map +1 -0
  92. package/lib/zhin-agent/index.js +404 -0
  93. package/lib/zhin-agent/index.js.map +1 -0
  94. package/lib/zhin-agent/prompt.d.ts +21 -0
  95. package/lib/zhin-agent/prompt.d.ts.map +1 -0
  96. package/lib/zhin-agent/prompt.js +111 -0
  97. package/lib/zhin-agent/prompt.js.map +1 -0
  98. package/lib/zhin-agent/tool-collector.d.ts +21 -0
  99. package/lib/zhin-agent/tool-collector.d.ts.map +1 -0
  100. package/lib/zhin-agent/tool-collector.js +218 -0
  101. package/lib/zhin-agent/tool-collector.js.map +1 -0
  102. package/package.json +37 -0
  103. package/src/agent.ts +831 -0
  104. package/src/bootstrap.ts +309 -0
  105. package/src/builtin-tools.ts +849 -0
  106. package/src/compaction.ts +529 -0
  107. package/src/context-manager.ts +440 -0
  108. package/src/conversation-memory.ts +774 -0
  109. package/src/cron-engine.ts +336 -0
  110. package/src/follow-up.ts +357 -0
  111. package/src/hooks.ts +223 -0
  112. package/src/index.ts +169 -0
  113. package/src/init.ts +750 -0
  114. package/src/output.ts +261 -0
  115. package/src/rate-limiter.ts +129 -0
  116. package/src/service.ts +329 -0
  117. package/src/session.ts +544 -0
  118. package/src/subagent.ts +209 -0
  119. package/src/tone-detector.ts +89 -0
  120. package/src/tools.ts +217 -0
  121. package/src/user-profile.ts +181 -0
  122. package/src/zhin-agent/builtin-tools.ts +247 -0
  123. package/src/zhin-agent/config.ts +113 -0
  124. package/src/zhin-agent/exec-policy.ts +78 -0
  125. package/src/zhin-agent/index.ts +505 -0
  126. package/src/zhin-agent/prompt.ts +131 -0
  127. package/src/zhin-agent/tool-collector.ts +242 -0
  128. package/tests/ai/agent.test.ts +565 -0
  129. package/tests/ai/context-manager.test.ts +413 -0
  130. package/tests/ai/conversation-memory.test.ts +128 -0
  131. package/tests/ai/follow-up.test.ts +175 -0
  132. package/tests/ai/integration.test.ts +582 -0
  133. package/tests/ai/output.test.ts +128 -0
  134. package/tests/ai/rate-limiter.test.ts +108 -0
  135. package/tests/ai/session.test.ts +334 -0
  136. package/tests/ai/setup.ts +250 -0
  137. package/tests/ai/subagent.test.ts +270 -0
  138. package/tests/ai/tone-detector.test.ts +80 -0
  139. package/tests/ai/tools-builtin.test.ts +310 -0
  140. package/tests/ai/user-profile.test.ts +73 -0
  141. package/tests/ai/zhin-agent.test.ts +177 -0
  142. package/tsconfig.json +22 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 凉菜
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/lib/agent.d.ts ADDED
@@ -0,0 +1,130 @@
1
+ /**
2
+ * @zhin.js/agent - Agent System
3
+ * AI Agent 实现,支持工具调用和多轮对话
4
+ */
5
+ import type { AIProvider, AgentConfig, AgentTool, AgentResult, ChatMessage, ToolFilterOptions, Usage } from '@zhin.js/core';
6
+ /**
7
+ * 根据工具名和参数生成简短标题(用于日志、TOOLS.md 等)
8
+ */
9
+ export declare function formatToolTitle(name: string, args?: Record<string, any>): string;
10
+ /**
11
+ * Agent 执行状态
12
+ */
13
+ export interface AgentState {
14
+ messages: ChatMessage[];
15
+ toolCalls: {
16
+ tool: string;
17
+ args: Record<string, any>;
18
+ result: any;
19
+ }[];
20
+ usage: Usage;
21
+ iterations: number;
22
+ }
23
+ /**
24
+ * Agent 事件
25
+ */
26
+ export interface AgentEvents {
27
+ 'thinking': (message: string) => void;
28
+ 'tool_call': (tool: string, args: Record<string, any>) => void;
29
+ 'tool_result': (tool: string, result: any) => void;
30
+ 'streaming': (content: string) => void;
31
+ 'complete': (result: AgentResult) => void;
32
+ 'error': (error: Error) => void;
33
+ }
34
+ /**
35
+ * AI Agent 类
36
+ * 支持工具调用、多轮对话、流式输出
37
+ */
38
+ export declare class Agent {
39
+ private provider;
40
+ private config;
41
+ private tools;
42
+ private eventHandlers;
43
+ constructor(provider: AIProvider, config: AgentConfig);
44
+ /**
45
+ * 默认系统提示词
46
+ */
47
+ private getDefaultSystemPrompt;
48
+ /**
49
+ * 注册事件处理器
50
+ */
51
+ on<K extends keyof AgentEvents>(event: K, handler: AgentEvents[K]): () => void;
52
+ /**
53
+ * 触发事件
54
+ */
55
+ private emit;
56
+ /**
57
+ * 添加工具
58
+ */
59
+ addTool(tool: AgentTool): void;
60
+ /**
61
+ * 移除工具
62
+ */
63
+ removeTool(name: string): void;
64
+ /**
65
+ * 获取工具定义(缓存在第一次调用后保持不变)
66
+ */
67
+ private getToolDefinitions;
68
+ /**
69
+ * 生成工具调用的去重 key(规范化参数以避免 "" vs "{}" 等差异)
70
+ */
71
+ private static toolCallKey;
72
+ /**
73
+ * 安全解析 JSON,失败则返回原始字符串
74
+ */
75
+ private static safeParse;
76
+ /**
77
+ * 程序化工具过滤 —— 替代 AI 意图分析的高效方案
78
+ *
79
+ * 评分规则(按权重从高到低):
80
+ * 1. keywords 精确匹配: +1.0 per hit —— 工具声明的触发关键词
81
+ * 2. tags 匹配: +0.5 per hit —— 工具分类标签
82
+ * 3. 工具名 token 匹配: +0.3 per hit —— 工具名按 `.` `_` `-` 拆词
83
+ * 4. description 关键词: +0.15 per hit —— 描述中的词/短语
84
+ *
85
+ * 权限过滤发生在评分之前,直接跳过无权使用的工具。
86
+ *
87
+ * @param message 用户消息原文
88
+ * @param tools 候选工具列表
89
+ * @param options 过滤选项
90
+ * @returns 按相关性降序排列的工具子集
91
+ */
92
+ static filterTools(message: string, tools: AgentTool[], options?: ToolFilterOptions): AgentTool[];
93
+ /**
94
+ * 执行单个工具调用(带超时保护)
95
+ */
96
+ private executeToolCall;
97
+ /**
98
+ * 并行执行多个工具调用(跳过重复的)
99
+ * @returns 新执行的工具调用结果列表;如果全部重复则返回空数组
100
+ */
101
+ private executeToolCalls;
102
+ /**
103
+ * 累加 token 用量
104
+ */
105
+ private static addUsage;
106
+ /**
107
+ * 运行 Agent
108
+ *
109
+ * @param userMessage 用户消息
110
+ * @param context 对话上下文
111
+ * @param filterOptions 工具过滤选项 —— 启用后在 AI 调用之前程序化筛选工具,省去额外的 AI 意图分析往返
112
+ */
113
+ run(userMessage: string, context?: ChatMessage[], filterOptions?: ToolFilterOptions): Promise<AgentResult>;
114
+ /**
115
+ * 流式运行 Agent
116
+ *
117
+ * @param userMessage 用户消息
118
+ * @param context 对话上下文
119
+ * @param filterOptions 工具过滤选项 —— 启用后在 AI 调用之前程序化筛选工具
120
+ */
121
+ runStream(userMessage: string, context?: ChatMessage[], filterOptions?: ToolFilterOptions): AsyncIterable<{
122
+ type: 'content' | 'tool_call' | 'tool_result' | 'done';
123
+ data: any;
124
+ }>;
125
+ }
126
+ /**
127
+ * 创建 Agent 实例
128
+ */
129
+ export declare function createAgent(provider: AIProvider, config: Omit<AgentConfig, 'provider'>): Agent;
130
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}