@zhin.js/agent 0.0.20 → 0.1.2

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 (116) hide show
  1. package/README.md +5 -2
  2. package/lib/cron-engine.d.ts +16 -1
  3. package/lib/cron-engine.d.ts.map +1 -1
  4. package/lib/cron-engine.js +47 -13
  5. package/lib/cron-engine.js.map +1 -1
  6. package/lib/discover-skills.d.ts +3 -1
  7. package/lib/discover-skills.d.ts.map +1 -1
  8. package/lib/discover-skills.js +7 -9
  9. package/lib/discover-skills.js.map +1 -1
  10. package/lib/discover-tools.d.ts +1 -6
  11. package/lib/discover-tools.d.ts.map +1 -1
  12. package/lib/discover-tools.js +2 -6
  13. package/lib/discover-tools.js.map +1 -1
  14. package/lib/index.d.ts +2 -4
  15. package/lib/index.d.ts.map +1 -1
  16. package/lib/index.js +1 -2
  17. package/lib/index.js.map +1 -1
  18. package/lib/init/create-zhin-agent.d.ts.map +1 -1
  19. package/lib/init/create-zhin-agent.js +58 -21
  20. package/lib/init/create-zhin-agent.js.map +1 -1
  21. package/lib/init/register-ai-trigger.d.ts.map +1 -1
  22. package/lib/init/register-ai-trigger.js +10 -3
  23. package/lib/init/register-ai-trigger.js.map +1 -1
  24. package/lib/init/register-builtin-tools.d.ts.map +1 -1
  25. package/lib/init/register-builtin-tools.js +46 -14
  26. package/lib/init/register-builtin-tools.js.map +1 -1
  27. package/lib/init/register-db-models.d.ts.map +1 -1
  28. package/lib/init/register-db-models.js +1 -3
  29. package/lib/init/register-db-models.js.map +1 -1
  30. package/lib/init/register-db-upgrade.d.ts.map +1 -1
  31. package/lib/init/register-db-upgrade.js +1 -8
  32. package/lib/init/register-db-upgrade.js.map +1 -1
  33. package/lib/init/register-management-tools.d.ts.map +1 -1
  34. package/lib/init/register-management-tools.js +33 -20
  35. package/lib/init/register-management-tools.js.map +1 -1
  36. package/lib/service.d.ts +4 -0
  37. package/lib/service.d.ts.map +1 -1
  38. package/lib/service.js +3 -8
  39. package/lib/service.js.map +1 -1
  40. package/lib/zhin-agent/builtin-tools.d.ts +0 -2
  41. package/lib/zhin-agent/builtin-tools.d.ts.map +1 -1
  42. package/lib/zhin-agent/builtin-tools.js +0 -55
  43. package/lib/zhin-agent/builtin-tools.js.map +1 -1
  44. package/lib/zhin-agent/config.d.ts +4 -1
  45. package/lib/zhin-agent/config.d.ts.map +1 -1
  46. package/lib/zhin-agent/config.js +2 -1
  47. package/lib/zhin-agent/config.js.map +1 -1
  48. package/lib/zhin-agent/index.d.ts +11 -6
  49. package/lib/zhin-agent/index.d.ts.map +1 -1
  50. package/lib/zhin-agent/index.js +147 -81
  51. package/lib/zhin-agent/index.js.map +1 -1
  52. package/lib/zhin-agent/prompt.d.ts.map +1 -1
  53. package/lib/zhin-agent/prompt.js +31 -76
  54. package/lib/zhin-agent/prompt.js.map +1 -1
  55. package/lib/zhin-agent/tool-collector.d.ts.map +1 -1
  56. package/lib/zhin-agent/tool-collector.js +7 -7
  57. package/lib/zhin-agent/tool-collector.js.map +1 -1
  58. package/package.json +7 -4
  59. package/CHANGELOG.md +0 -170
  60. package/lib/follow-up.d.ts +0 -131
  61. package/lib/follow-up.d.ts.map +0 -1
  62. package/lib/follow-up.js +0 -265
  63. package/lib/follow-up.js.map +0 -1
  64. package/src/agent.ts +0 -6
  65. package/src/bootstrap.ts +0 -309
  66. package/src/builtin-tools.ts +0 -958
  67. package/src/compaction.ts +0 -28
  68. package/src/context-manager.ts +0 -15
  69. package/src/conversation-memory.ts +0 -5
  70. package/src/cron-engine.ts +0 -338
  71. package/src/discover-agents.ts +0 -138
  72. package/src/discover-skills.ts +0 -325
  73. package/src/discover-tools.ts +0 -302
  74. package/src/discovery-utils.ts +0 -96
  75. package/src/file-policy.ts +0 -333
  76. package/src/follow-up.ts +0 -357
  77. package/src/hooks.ts +0 -223
  78. package/src/index.ts +0 -183
  79. package/src/init/create-zhin-agent.ts +0 -136
  80. package/src/init/register-ai-service.ts +0 -53
  81. package/src/init/register-ai-trigger.ts +0 -253
  82. package/src/init/register-builtin-tools.ts +0 -308
  83. package/src/init/register-db-models.ts +0 -31
  84. package/src/init/register-db-upgrade.ts +0 -77
  85. package/src/init/register-management-tools.ts +0 -71
  86. package/src/init/register-message-recorder.ts +0 -31
  87. package/src/init/register-tool-service.ts +0 -9
  88. package/src/init/shared-refs.ts +0 -20
  89. package/src/init/types.ts +0 -18
  90. package/src/init.ts +0 -50
  91. package/src/output.ts +0 -15
  92. package/src/rate-limiter.ts +0 -5
  93. package/src/service.ts +0 -224
  94. package/src/session.ts +0 -13
  95. package/src/storage.ts +0 -9
  96. package/src/subagent.ts +0 -209
  97. package/src/tone-detector.ts +0 -5
  98. package/src/tools.ts +0 -214
  99. package/src/user-profile.ts +0 -182
  100. package/src/zhin-agent/builtin-tools.ts +0 -247
  101. package/src/zhin-agent/config.ts +0 -121
  102. package/src/zhin-agent/exec-policy.ts +0 -285
  103. package/src/zhin-agent/index.ts +0 -559
  104. package/src/zhin-agent/prompt.ts +0 -305
  105. package/src/zhin-agent/tool-collector.ts +0 -249
  106. package/tests/ai/follow-up.test.ts +0 -175
  107. package/tests/ai/integration.test.ts +0 -582
  108. package/tests/ai/multimodal.test.ts +0 -106
  109. package/tests/ai/setup.ts +0 -186
  110. package/tests/ai/subagent.test.ts +0 -270
  111. package/tests/ai/tools-builtin.test.ts +0 -310
  112. package/tests/ai/user-profile.test.ts +0 -73
  113. package/tests/ai/zhin-agent.test.ts +0 -306
  114. package/tests/exec-policy.test.ts +0 -355
  115. package/tests/file-policy.test.ts +0 -405
  116. 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
- });