acp-ts 1.1.8 → 1.1.9
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.
- package/dist/agentcp.d.ts +7 -10
- package/dist/agentcp.js +19 -30
- package/dist/group/index.d.ts +1 -1
- package/dist/group/operations.d.ts +6 -6
- package/dist/group/operations.js +8 -12
- package/dist/group/types.d.ts +0 -3
- package/package.json +1 -1
package/dist/agentcp.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IAgentCP, IAgentIdentity } from "./interfaces";
|
|
2
2
|
import { MessageStore } from "./messagestore";
|
|
3
3
|
import { AgentMdOptions } from "./agentmd";
|
|
4
|
-
import { ACPGroupClient, GroupOperations, ACPGroupEventHandler, CursorStore, GroupMessageStore, GroupMessage
|
|
4
|
+
import { ACPGroupClient, GroupOperations, ACPGroupEventHandler, CursorStore, GroupMessageStore, GroupMessage } from "./group";
|
|
5
5
|
declare class AgentCP implements IAgentCP {
|
|
6
6
|
private seedPassword;
|
|
7
7
|
private apUrl;
|
|
@@ -178,18 +178,15 @@ declare class AgentCP implements IAgentCP {
|
|
|
178
178
|
pullAndStoreGroupMessages(groupId: string, afterMsgId?: number, limit?: number): Promise<GroupMessage[]>;
|
|
179
179
|
/**
|
|
180
180
|
* 加入群组会话(完整生命周期):
|
|
181
|
-
* 1. register_online →
|
|
182
|
-
* 2.
|
|
181
|
+
* 1. register_online → 告知 group.ap 在线
|
|
182
|
+
* 2. 将群组加入在线列表
|
|
183
183
|
* 3. 启动心跳定时器(首次时启动)
|
|
184
|
-
*
|
|
185
|
-
* @returns msg_cursor 游标状态
|
|
186
184
|
*/
|
|
187
|
-
joinGroupSession(groupId: string): Promise<
|
|
185
|
+
joinGroupSession(groupId: string): Promise<void>;
|
|
188
186
|
/**
|
|
189
187
|
* 离开群组会话(优雅退出):
|
|
190
|
-
* 1.
|
|
191
|
-
* 2.
|
|
192
|
-
* 3. 如果没有在线群组了,停止心跳定时器
|
|
188
|
+
* 1. 从在线群组列表移除
|
|
189
|
+
* 2. 如果没有在线群组了,unregister_online + 停止心跳定时器
|
|
193
190
|
*/
|
|
194
191
|
leaveGroupSession(groupId: string): Promise<void>;
|
|
195
192
|
/**
|
|
@@ -213,7 +210,7 @@ declare class AgentCP implements IAgentCP {
|
|
|
213
210
|
*/
|
|
214
211
|
private _stopHeartbeat;
|
|
215
212
|
/**
|
|
216
|
-
*
|
|
213
|
+
* 发送心跳保活
|
|
217
214
|
*/
|
|
218
215
|
private _sendHeartbeats;
|
|
219
216
|
/**
|
package/dist/agentcp.js
CHANGED
|
@@ -685,47 +685,38 @@ class AgentCP {
|
|
|
685
685
|
// ============================================================
|
|
686
686
|
/**
|
|
687
687
|
* 加入群组会话(完整生命周期):
|
|
688
|
-
* 1. register_online →
|
|
689
|
-
* 2.
|
|
688
|
+
* 1. register_online → 告知 group.ap 在线
|
|
689
|
+
* 2. 将群组加入在线列表
|
|
690
690
|
* 3. 启动心跳定时器(首次时启动)
|
|
691
|
-
*
|
|
692
|
-
* @returns msg_cursor 游标状态
|
|
693
691
|
*/
|
|
694
692
|
async joinGroupSession(groupId) {
|
|
695
693
|
if (!this.groupOps || !this._groupTargetAid) {
|
|
696
694
|
throw new Error('群组客户端未初始化,请先调用 initGroupClient');
|
|
697
695
|
}
|
|
698
|
-
// Step 1: register_online
|
|
699
|
-
|
|
700
|
-
const cursor = result.msg_cursor;
|
|
696
|
+
// Step 1: register_online(仅通知 group.ap 在线,不再返回游标)
|
|
697
|
+
await this.groupOps.registerOnline(this._groupTargetAid);
|
|
701
698
|
this._onlineGroups.add(groupId);
|
|
702
|
-
console.log(`[Group] joinGroupSession: group=${groupId}
|
|
703
|
-
// Step 2:
|
|
704
|
-
if (cursor.unread_count > 0) {
|
|
705
|
-
await this.pullAndStoreGroupMessages(groupId, 0, 0);
|
|
706
|
-
}
|
|
707
|
-
// Step 3: 启动心跳定时器(首次加入群组时启动)
|
|
699
|
+
console.log(`[Group] joinGroupSession: group=${groupId}`);
|
|
700
|
+
// Step 2: 启动心跳定时器(首次加入群组时启动)
|
|
708
701
|
this._ensureHeartbeat();
|
|
709
|
-
return cursor;
|
|
710
702
|
}
|
|
711
703
|
/**
|
|
712
704
|
* 离开群组会话(优雅退出):
|
|
713
|
-
* 1.
|
|
714
|
-
* 2.
|
|
715
|
-
* 3. 如果没有在线群组了,停止心跳定时器
|
|
705
|
+
* 1. 从在线群组列表移除
|
|
706
|
+
* 2. 如果没有在线群组了,unregister_online + 停止心跳定时器
|
|
716
707
|
*/
|
|
717
708
|
async leaveGroupSession(groupId) {
|
|
718
709
|
if (!this.groupOps || !this._groupTargetAid)
|
|
719
710
|
return;
|
|
720
|
-
try {
|
|
721
|
-
await this.groupOps.unregisterOnline(this._groupTargetAid, groupId);
|
|
722
|
-
}
|
|
723
|
-
catch (e) {
|
|
724
|
-
console.warn(`[Group] unregisterOnline failed: group=${groupId}`, e.message || e);
|
|
725
|
-
}
|
|
726
711
|
this._onlineGroups.delete(groupId);
|
|
727
|
-
//
|
|
712
|
+
// 如果没有在线群组了,通知 group.ap 下线并停止心跳
|
|
728
713
|
if (this._onlineGroups.size === 0) {
|
|
714
|
+
try {
|
|
715
|
+
await this.groupOps.unregisterOnline(this._groupTargetAid);
|
|
716
|
+
}
|
|
717
|
+
catch (e) {
|
|
718
|
+
console.warn(`[Group] unregisterOnline failed`, e.message || e);
|
|
719
|
+
}
|
|
729
720
|
this._stopHeartbeat();
|
|
730
721
|
}
|
|
731
722
|
}
|
|
@@ -779,16 +770,14 @@ class AgentCP {
|
|
|
779
770
|
}
|
|
780
771
|
}
|
|
781
772
|
/**
|
|
782
|
-
*
|
|
773
|
+
* 发送心跳保活
|
|
783
774
|
*/
|
|
784
775
|
_sendHeartbeats() {
|
|
785
776
|
if (!this.groupOps || !this._groupTargetAid)
|
|
786
777
|
return;
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
});
|
|
791
|
-
}
|
|
778
|
+
this.groupOps.heartbeat(this._groupTargetAid).catch(e => {
|
|
779
|
+
console.warn(`[Group] heartbeat failed`, e.message || e);
|
|
780
|
+
});
|
|
792
781
|
}
|
|
793
782
|
/**
|
|
794
783
|
* 关闭群消息存储,刷新所有未写入的数据
|
package/dist/group/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* ACP Group Operations package.
|
|
3
3
|
* Mirrors Python SDK: agentcp/group/__init__.py
|
|
4
4
|
*/
|
|
5
|
-
export { GroupErrorCode, GroupError, GroupRequest, GroupResponse, GroupNotify, buildGroupRequest, groupRequestToJson, parseGroupResponse, parseGroupNotify, GroupMessage, GroupEvent, MsgCursor, EventCursor, CursorState, createMsgCursor, createEventCursor,
|
|
5
|
+
export { GroupErrorCode, GroupError, GroupRequest, GroupResponse, GroupNotify, buildGroupRequest, groupRequestToJson, parseGroupResponse, parseGroupNotify, GroupMessage, GroupEvent, MsgCursor, EventCursor, CursorState, createMsgCursor, createEventCursor, CreateGroupResp, SendMessageResp, PullMessagesResp, PullEventsResp, GroupInfoResp, BanlistResp, BatchReviewResp, PendingRequestsResp, MembersResp, AdminsResp, RulesResp, AnnouncementResp, JoinRequirementsResp, MasterResp, InviteCodeResp, InviteCodeListResp, BroadcastLockResp, BroadcastPermissionResp, SyncStatusResp, SyncLogResp, ChecksumResp, PublicGroupInfoResp, SearchGroupsResp, DigestResp, MembershipInfo, ListMyGroupsResp, GetFileResp, GetSummaryResp, GetMetricsResp, NOTIFY_NEW_MESSAGE, NOTIFY_NEW_EVENT, NOTIFY_GROUP_INVITE, NOTIFY_JOIN_APPROVED, NOTIFY_JOIN_REJECTED, NOTIFY_JOIN_REQUEST_RECEIVED, NOTIFY_GROUP_MESSAGE, NOTIFY_GROUP_EVENT, EVENT_MEMBER_JOINED, EVENT_MEMBER_REMOVED, EVENT_MEMBER_LEFT, EVENT_MEMBER_BANNED, EVENT_META_UPDATED, EVENT_RULES_UPDATED, EVENT_ANNOUNCEMENT_UPDATED, EVENT_GROUP_DISSOLVED, EVENT_MASTER_TRANSFERRED, EVENT_GROUP_SUSPENDED, EVENT_GROUP_RESUMED, EVENT_MEMBER_UNBANNED, EVENT_JOIN_REQUIREMENTS_UPDATED, EVENT_INVITE_CODE_CREATED, EVENT_INVITE_CODE_REVOKED, } from './types';
|
|
6
6
|
export { ACPGroupClient, SendFunc } from './client';
|
|
7
7
|
export { GroupOperations, SyncHandler } from './operations';
|
|
8
8
|
export { ACPGroupEventHandler, EventProcessor, dispatchAcpNotify, dispatchEvent, } from './events';
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Mirrors Python SDK: agentcp/group/operations.py
|
|
4
4
|
*/
|
|
5
5
|
import { ACPGroupClient } from './client';
|
|
6
|
-
import {
|
|
6
|
+
import { CreateGroupResp, SendMessageResp, PullMessagesResp, PullEventsResp, CursorState, GroupInfoResp, BanlistResp, BatchReviewResp, PendingRequestsResp, MembersResp, AdminsResp, RulesResp, AnnouncementResp, JoinRequirementsResp, MasterResp, InviteCodeResp, InviteCodeListResp, BroadcastLockResp, BroadcastPermissionResp, SyncStatusResp, SyncLogResp, ChecksumResp, PublicGroupInfoResp, SearchGroupsResp, DigestResp, ListMyGroupsResp, GetFileResp, GetSummaryResp, GetMetricsResp } from './types';
|
|
7
7
|
/**
|
|
8
8
|
* Callback interface for syncGroup.
|
|
9
9
|
*/
|
|
@@ -43,20 +43,20 @@ export declare class GroupOperations {
|
|
|
43
43
|
message?: string;
|
|
44
44
|
}): Promise<string>;
|
|
45
45
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
46
|
+
* 注册上线,告知 group.ap 当前客户端在线,可以接收消息推送。
|
|
47
|
+
* 客户端每次启动或重新连接时调用一次即可。
|
|
48
48
|
*/
|
|
49
|
-
registerOnline(targetAid: string
|
|
49
|
+
registerOnline(targetAid: string): Promise<void>;
|
|
50
50
|
/**
|
|
51
51
|
* 主动下线(优雅退出)。
|
|
52
52
|
* 客户端退出时调用,立即从在线列表移除。
|
|
53
53
|
*/
|
|
54
|
-
unregisterOnline(targetAid: string
|
|
54
|
+
unregisterOnline(targetAid: string): Promise<void>;
|
|
55
55
|
/**
|
|
56
56
|
* 心跳保活。
|
|
57
57
|
* 在线注册有 5 分钟超时,SDK 需定时发送(建议 2~4 分钟)。
|
|
58
58
|
*/
|
|
59
|
-
heartbeat(targetAid: string
|
|
59
|
+
heartbeat(targetAid: string): Promise<void>;
|
|
60
60
|
createGroup(targetAid: string, name: string, options?: {
|
|
61
61
|
alias?: string;
|
|
62
62
|
subject?: string;
|
package/dist/group/operations.js
CHANGED
|
@@ -62,31 +62,27 @@ class GroupOperations {
|
|
|
62
62
|
// Phase 0: Lifecycle (register / heartbeat / unregister)
|
|
63
63
|
// ============================================================
|
|
64
64
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
65
|
+
* 注册上线,告知 group.ap 当前客户端在线,可以接收消息推送。
|
|
66
|
+
* 客户端每次启动或重新连接时调用一次即可。
|
|
67
67
|
*/
|
|
68
|
-
async registerOnline(targetAid
|
|
69
|
-
const resp = await this._client.sendRequest(targetAid,
|
|
68
|
+
async registerOnline(targetAid) {
|
|
69
|
+
const resp = await this._client.sendRequest(targetAid, "", "register_online", null);
|
|
70
70
|
this._check(resp, "register_online");
|
|
71
|
-
const d = resp.data || {};
|
|
72
|
-
return {
|
|
73
|
-
msg_cursor: (0, types_1.createMsgCursor)(d.msg_cursor),
|
|
74
|
-
};
|
|
75
71
|
}
|
|
76
72
|
/**
|
|
77
73
|
* 主动下线(优雅退出)。
|
|
78
74
|
* 客户端退出时调用,立即从在线列表移除。
|
|
79
75
|
*/
|
|
80
|
-
async unregisterOnline(targetAid
|
|
81
|
-
const resp = await this._client.sendRequest(targetAid,
|
|
76
|
+
async unregisterOnline(targetAid) {
|
|
77
|
+
const resp = await this._client.sendRequest(targetAid, "", "unregister_online", null);
|
|
82
78
|
this._check(resp, "unregister_online");
|
|
83
79
|
}
|
|
84
80
|
/**
|
|
85
81
|
* 心跳保活。
|
|
86
82
|
* 在线注册有 5 分钟超时,SDK 需定时发送(建议 2~4 分钟)。
|
|
87
83
|
*/
|
|
88
|
-
async heartbeat(targetAid
|
|
89
|
-
const resp = await this._client.sendRequest(targetAid,
|
|
84
|
+
async heartbeat(targetAid) {
|
|
85
|
+
const resp = await this._client.sendRequest(targetAid, "", "heartbeat", null);
|
|
90
86
|
this._check(resp, "heartbeat");
|
|
91
87
|
}
|
|
92
88
|
// ============================================================
|
package/dist/group/types.d.ts
CHANGED