@zhin.js/agent 0.1.0 → 0.1.3

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 (114) hide show
  1. package/lib/cron-engine.d.ts +20 -2
  2. package/lib/cron-engine.d.ts.map +1 -1
  3. package/lib/cron-engine.js +59 -18
  4. package/lib/cron-engine.js.map +1 -1
  5. package/lib/discover-skills.d.ts +3 -1
  6. package/lib/discover-skills.d.ts.map +1 -1
  7. package/lib/discover-skills.js +7 -9
  8. package/lib/discover-skills.js.map +1 -1
  9. package/lib/discover-tools.d.ts +1 -6
  10. package/lib/discover-tools.d.ts.map +1 -1
  11. package/lib/discover-tools.js +2 -6
  12. package/lib/discover-tools.js.map +1 -1
  13. package/lib/index.d.ts +2 -4
  14. package/lib/index.d.ts.map +1 -1
  15. package/lib/index.js +1 -2
  16. package/lib/index.js.map +1 -1
  17. package/lib/init/create-zhin-agent.d.ts.map +1 -1
  18. package/lib/init/create-zhin-agent.js +42 -20
  19. package/lib/init/create-zhin-agent.js.map +1 -1
  20. package/lib/init/register-ai-trigger.d.ts.map +1 -1
  21. package/lib/init/register-ai-trigger.js +10 -3
  22. package/lib/init/register-ai-trigger.js.map +1 -1
  23. package/lib/init/register-builtin-tools.d.ts.map +1 -1
  24. package/lib/init/register-builtin-tools.js +85 -15
  25. package/lib/init/register-builtin-tools.js.map +1 -1
  26. package/lib/init/register-db-models.d.ts.map +1 -1
  27. package/lib/init/register-db-models.js +1 -3
  28. package/lib/init/register-db-models.js.map +1 -1
  29. package/lib/init/register-db-upgrade.d.ts.map +1 -1
  30. package/lib/init/register-db-upgrade.js +1 -8
  31. package/lib/init/register-db-upgrade.js.map +1 -1
  32. package/lib/init/register-management-tools.d.ts.map +1 -1
  33. package/lib/init/register-management-tools.js +33 -20
  34. package/lib/init/register-management-tools.js.map +1 -1
  35. package/lib/service.d.ts.map +1 -1
  36. package/lib/service.js +0 -8
  37. package/lib/service.js.map +1 -1
  38. package/lib/zhin-agent/builtin-tools.d.ts +0 -2
  39. package/lib/zhin-agent/builtin-tools.d.ts.map +1 -1
  40. package/lib/zhin-agent/builtin-tools.js +0 -55
  41. package/lib/zhin-agent/builtin-tools.js.map +1 -1
  42. package/lib/zhin-agent/config.d.ts +2 -1
  43. package/lib/zhin-agent/config.d.ts.map +1 -1
  44. package/lib/zhin-agent/config.js +1 -1
  45. package/lib/zhin-agent/config.js.map +1 -1
  46. package/lib/zhin-agent/index.d.ts +1 -6
  47. package/lib/zhin-agent/index.d.ts.map +1 -1
  48. package/lib/zhin-agent/index.js +26 -34
  49. package/lib/zhin-agent/index.js.map +1 -1
  50. package/lib/zhin-agent/prompt.d.ts.map +1 -1
  51. package/lib/zhin-agent/prompt.js +31 -76
  52. package/lib/zhin-agent/prompt.js.map +1 -1
  53. package/lib/zhin-agent/tool-collector.d.ts.map +1 -1
  54. package/lib/zhin-agent/tool-collector.js +7 -7
  55. package/lib/zhin-agent/tool-collector.js.map +1 -1
  56. package/package.json +7 -4
  57. package/CHANGELOG.md +0 -190
  58. package/lib/follow-up.d.ts +0 -131
  59. package/lib/follow-up.d.ts.map +0 -1
  60. package/lib/follow-up.js +0 -265
  61. package/lib/follow-up.js.map +0 -1
  62. package/src/agent.ts +0 -6
  63. package/src/bootstrap.ts +0 -309
  64. package/src/builtin-tools.ts +0 -958
  65. package/src/compaction.ts +0 -28
  66. package/src/context-manager.ts +0 -15
  67. package/src/conversation-memory.ts +0 -5
  68. package/src/cron-engine.ts +0 -338
  69. package/src/discover-agents.ts +0 -138
  70. package/src/discover-skills.ts +0 -325
  71. package/src/discover-tools.ts +0 -302
  72. package/src/discovery-utils.ts +0 -96
  73. package/src/file-policy.ts +0 -333
  74. package/src/follow-up.ts +0 -357
  75. package/src/hooks.ts +0 -223
  76. package/src/index.ts +0 -183
  77. package/src/init/create-zhin-agent.ts +0 -161
  78. package/src/init/register-ai-service.ts +0 -53
  79. package/src/init/register-ai-trigger.ts +0 -253
  80. package/src/init/register-builtin-tools.ts +0 -308
  81. package/src/init/register-db-models.ts +0 -31
  82. package/src/init/register-db-upgrade.ts +0 -77
  83. package/src/init/register-management-tools.ts +0 -71
  84. package/src/init/register-message-recorder.ts +0 -31
  85. package/src/init/register-tool-service.ts +0 -9
  86. package/src/init/shared-refs.ts +0 -20
  87. package/src/init/types.ts +0 -18
  88. package/src/init.ts +0 -50
  89. package/src/output.ts +0 -15
  90. package/src/rate-limiter.ts +0 -5
  91. package/src/service.ts +0 -228
  92. package/src/session.ts +0 -13
  93. package/src/storage.ts +0 -9
  94. package/src/subagent.ts +0 -209
  95. package/src/tone-detector.ts +0 -5
  96. package/src/tools.ts +0 -214
  97. package/src/user-profile.ts +0 -182
  98. package/src/zhin-agent/builtin-tools.ts +0 -247
  99. package/src/zhin-agent/config.ts +0 -124
  100. package/src/zhin-agent/exec-policy.ts +0 -285
  101. package/src/zhin-agent/index.ts +0 -633
  102. package/src/zhin-agent/prompt.ts +0 -305
  103. package/src/zhin-agent/tool-collector.ts +0 -249
  104. package/tests/ai/follow-up.test.ts +0 -175
  105. package/tests/ai/integration.test.ts +0 -582
  106. package/tests/ai/multimodal.test.ts +0 -106
  107. package/tests/ai/setup.ts +0 -186
  108. package/tests/ai/subagent.test.ts +0 -270
  109. package/tests/ai/tools-builtin.test.ts +0 -310
  110. package/tests/ai/user-profile.test.ts +0 -73
  111. package/tests/ai/zhin-agent.test.ts +0 -306
  112. package/tests/exec-policy.test.ts +0 -355
  113. package/tests/file-policy.test.ts +0 -405
  114. package/tsconfig.json +0 -22
@@ -1,175 +0,0 @@
1
- /**
2
- * FollowUpManager 测试
3
- */
4
- import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
5
- import { FollowUpManager } from '@zhin.js/agent';
6
-
7
- describe('FollowUpManager', () => {
8
- let manager: FollowUpManager;
9
-
10
- beforeEach(() => {
11
- vi.useFakeTimers();
12
- manager = new FollowUpManager();
13
- });
14
-
15
- afterEach(() => {
16
- manager.dispose();
17
- vi.useRealTimers();
18
- });
19
-
20
- const baseParams = {
21
- sessionId: 'session1',
22
- platform: 'qq',
23
- botId: 'bot1',
24
- senderId: 'user1',
25
- sceneId: 'group1',
26
- sceneType: 'group',
27
- };
28
-
29
- describe('schedule', () => {
30
- it('应创建跟进任务并返回确认文本', async () => {
31
- const result = await manager.schedule({
32
- ...baseParams,
33
- message: '提醒你吃饭',
34
- delayMinutes: 5,
35
- });
36
-
37
- expect(result).toContain('已安排提醒');
38
- expect(result).toContain('提醒你吃饭');
39
- });
40
-
41
- it('应限制最小延迟为 1 分钟', async () => {
42
- const result = await manager.schedule({
43
- ...baseParams,
44
- message: '立即提醒',
45
- delayMinutes: 0,
46
- });
47
- expect(result).toContain('已安排提醒');
48
- });
49
-
50
- it('应限制最大延迟为 7 天', async () => {
51
- const result = await manager.schedule({
52
- ...baseParams,
53
- message: '长期提醒',
54
- delayMinutes: 99999,
55
- });
56
- expect(result).toContain('天后');
57
- });
58
-
59
- it('同一会话新任务应自动取消旧任务', async () => {
60
- const sender = vi.fn();
61
- manager.setSender(sender);
62
-
63
- await manager.schedule({
64
- ...baseParams,
65
- message: '第一个提醒',
66
- delayMinutes: 10,
67
- });
68
-
69
- await manager.schedule({
70
- ...baseParams,
71
- message: '第二个提醒',
72
- delayMinutes: 5,
73
- });
74
-
75
- // 推进 11 分钟
76
- await vi.advanceTimersByTimeAsync(11 * 60 * 1000);
77
-
78
- // 只有第二个应触发
79
- expect(sender).toHaveBeenCalledTimes(1);
80
- expect(sender.mock.calls[0][0].message).toBe('第二个提醒');
81
- });
82
- });
83
-
84
- describe('到期触发', () => {
85
- it('到期应调用 sender', async () => {
86
- const sender = vi.fn();
87
- manager.setSender(sender);
88
-
89
- await manager.schedule({
90
- ...baseParams,
91
- message: '时间到了',
92
- delayMinutes: 1,
93
- });
94
-
95
- // 推进 1 分钟
96
- await vi.advanceTimersByTimeAsync(60 * 1000);
97
-
98
- expect(sender).toHaveBeenCalledTimes(1);
99
- expect(sender.mock.calls[0][0].message).toBe('时间到了');
100
- });
101
-
102
- it('无 sender 时不应崩溃', async () => {
103
- await manager.schedule({
104
- ...baseParams,
105
- message: '测试',
106
- delayMinutes: 1,
107
- });
108
-
109
- // 推进 1 分钟 - 不应抛错
110
- await vi.advanceTimersByTimeAsync(60 * 1000);
111
- });
112
- });
113
-
114
- describe('cancelBySession', () => {
115
- it('应取消指定会话的所有 pending 任务', async () => {
116
- const sender = vi.fn();
117
- manager.setSender(sender);
118
-
119
- await manager.schedule({
120
- ...baseParams,
121
- message: '会被取消',
122
- delayMinutes: 5,
123
- });
124
-
125
- const count = await manager.cancelBySession('session1');
126
- expect(count).toBe(1);
127
-
128
- // 推进时间,sender 不应被调用
129
- await vi.advanceTimersByTimeAsync(10 * 60 * 1000);
130
- expect(sender).not.toHaveBeenCalled();
131
- });
132
-
133
- it('无 pending 时应返回 0', async () => {
134
- const count = await manager.cancelBySession('nonexistent');
135
- expect(count).toBe(0);
136
- });
137
- });
138
-
139
- describe('restore', () => {
140
- it('应恢复未完成的任务', async () => {
141
- const sender = vi.fn();
142
- manager.setSender(sender);
143
-
144
- // 创建一个 5 分钟后的任务
145
- await manager.schedule({
146
- ...baseParams,
147
- message: '恢复测试',
148
- delayMinutes: 5,
149
- });
150
-
151
- // 恢复
152
- const count = await manager.restore();
153
- expect(count).toBeGreaterThanOrEqual(0);
154
- });
155
- });
156
-
157
- describe('dispose', () => {
158
- it('应清理所有定时器和存储', async () => {
159
- const sender = vi.fn();
160
- manager.setSender(sender);
161
-
162
- await manager.schedule({
163
- ...baseParams,
164
- message: '测试',
165
- delayMinutes: 5,
166
- });
167
-
168
- manager.dispose();
169
-
170
- // 推进时间,sender 不应被调用
171
- await vi.advanceTimersByTimeAsync(10 * 60 * 1000);
172
- expect(sender).not.toHaveBeenCalled();
173
- });
174
- });
175
- });