@kyan-du/agent-wechat-wechaty-puppet 0.13.3 → 0.14.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 (2) hide show
  1. package/dist/mod.js +99 -3
  2. package/package.json +1 -1
package/dist/mod.js CHANGED
@@ -4108,6 +4108,23 @@ var chatSchema = external_exports.object({
4108
4108
  unreadCount: external_exports.number().int().nonnegative(),
4109
4109
  isGroup: external_exports.boolean()
4110
4110
  });
4111
+ var groupMemberSchema = external_exports.object({
4112
+ memberId: external_exports.string().min(1),
4113
+ displayName: external_exports.string().min(1),
4114
+ groupAlias: external_exports.string().optional(),
4115
+ nickName: external_exports.string().optional()
4116
+ });
4117
+ var groupMembersPageSchema = external_exports.object({
4118
+ schemaVersion: external_exports.literal(1),
4119
+ items: external_exports.array(groupMemberSchema),
4120
+ nextCursor: external_exports.string().nullable().optional(),
4121
+ errorCode: external_exports.string().optional()
4122
+ });
4123
+ var listGroupMembersParamsSchema = external_exports.object({
4124
+ groupId: external_exports.string().endsWith("@chatroom"),
4125
+ limit: external_exports.number().int().positive().max(100).optional().default(50),
4126
+ cursor: external_exports.string().optional()
4127
+ });
4111
4128
  var listChatsParamsSchema = external_exports.object({
4112
4129
  limit: external_exports.number().int().positive().max(100).optional().default(50),
4113
4130
  offset: external_exports.number().int().nonnegative().optional().default(0)
@@ -4134,6 +4151,22 @@ var openChatResultSchema = external_exports.object({
4134
4151
  error: external_exports.string().optional()
4135
4152
  });
4136
4153
  var idempotencyKeySchema = external_exports.string().min(1).max(128).regex(/^[A-Za-z0-9._:-]+$/);
4154
+ var forwardedMessageNodeSchema = external_exports.lazy(() => external_exports.object({
4155
+ sender: external_exports.string().optional(),
4156
+ senderId: external_exports.string().optional(),
4157
+ timestamp: external_exports.string().optional(),
4158
+ text: external_exports.string().optional(),
4159
+ messageType: external_exports.number().int().optional(),
4160
+ media: external_exports.string().optional(),
4161
+ children: external_exports.array(forwardedMessageNodeSchema),
4162
+ truncated: external_exports.boolean()
4163
+ }));
4164
+ var forwardedMessageTreeSchema = external_exports.object({
4165
+ schemaVersion: external_exports.number().int(),
4166
+ title: external_exports.string().optional(),
4167
+ nodes: external_exports.array(forwardedMessageNodeSchema),
4168
+ truncated: external_exports.boolean()
4169
+ });
4137
4170
  var messageSchema = external_exports.object({
4138
4171
  localId: external_exports.number().int(),
4139
4172
  serverId: external_exports.number(),
@@ -4142,7 +4175,26 @@ var messageSchema = external_exports.object({
4142
4175
  senderName: external_exports.string().optional(),
4143
4176
  type: external_exports.number().int(),
4144
4177
  content: external_exports.string(),
4145
- timestamp: external_exports.string()
4178
+ timestamp: external_exports.string(),
4179
+ forwarded: forwardedMessageTreeSchema.optional()
4180
+ });
4181
+ var mediaReferenceSchema = external_exports.object({
4182
+ localId: external_exports.number().int(),
4183
+ url: external_exports.string().min(1)
4184
+ });
4185
+ var syncReadStateSchema = external_exports.object({
4186
+ unreadCount: external_exports.number().int().nonnegative(),
4187
+ observedAt: external_exports.string().min(1)
4188
+ });
4189
+ var chatSyncPageSchema = external_exports.object({
4190
+ schemaVersion: external_exports.literal(1),
4191
+ chat: chatSchema.optional(),
4192
+ items: external_exports.array(messageSchema),
4193
+ nextCursor: external_exports.string().optional().nullable(),
4194
+ syncToken: external_exports.string(),
4195
+ readState: syncReadStateSchema,
4196
+ media: external_exports.array(mediaReferenceSchema),
4197
+ errorCode: external_exports.string().optional()
4146
4198
  });
4147
4199
  var listMessagesParamsSchema = external_exports.object({
4148
4200
  chatId: external_exports.string().min(1),
@@ -4168,6 +4220,31 @@ var sendParamsSchema = external_exports.object({
4168
4220
  source: external_exports.string().min(1).max(64).regex(/^[A-Za-z0-9._:-]+$/).optional(),
4169
4221
  similarityConfirmed: external_exports.boolean().optional()
4170
4222
  });
4223
+ var deliveryStateSchema = external_exports.enum(["queued", "composing", "submitted", "observed_in_chat", "confirmed", "uncertain", "failed"]);
4224
+ var deliveryCauseSchema = external_exports.enum(["send_accepted", "target_sender_and_payload_match", "observation_confirmed", "target_mismatch", "sender_unverified", "payload_mismatch", "pre_commit_failure", "post_commit_uncertain"]);
4225
+ var deliveryTransitionSchema = external_exports.object({ from: deliveryStateSchema, to: deliveryStateSchema, at: external_exports.string().datetime(), reason: deliveryCauseSchema });
4226
+ var deliveryObservationSchema = external_exports.object({
4227
+ chatId: external_exports.string().trim().min(1).max(512),
4228
+ localId: external_exports.number().int().nonnegative().safe(),
4229
+ serverId: external_exports.number().int().nonnegative().safe(),
4230
+ timestamp: external_exports.string().datetime(),
4231
+ type: external_exports.number().int().nonnegative().safe(),
4232
+ sender: external_exports.string().trim().min(1).max(512),
4233
+ content: external_exports.string().max(1e6)
4234
+ }).strict();
4235
+ var deliveryAttemptSchema = external_exports.object({
4236
+ schemaVersion: external_exports.literal(1),
4237
+ idempotencyKey: idempotencyKeySchema.optional(),
4238
+ senderId: external_exports.string().trim().min(1).max(512),
4239
+ targetChatId: external_exports.string().trim().min(1).max(512),
4240
+ payloadDigest: external_exports.string().regex(/^[a-f0-9]{64}$/),
4241
+ state: deliveryStateSchema,
4242
+ commitAttempted: external_exports.boolean(),
4243
+ createdAt: external_exports.string().datetime(),
4244
+ updatedAt: external_exports.string().datetime(),
4245
+ observedLocalId: external_exports.number().int().nonnegative().optional(),
4246
+ transitions: external_exports.array(deliveryTransitionSchema).max(32)
4247
+ });
4171
4248
  var sendResultSchema = external_exports.object({
4172
4249
  success: external_exports.boolean(),
4173
4250
  messageId: external_exports.string().optional(),
@@ -4180,11 +4257,13 @@ var getMediaParamsSchema = external_exports.object({
4180
4257
  localId: external_exports.number().int()
4181
4258
  });
4182
4259
  var mediaResultSchema = external_exports.object({
4183
- type: external_exports.enum(["image", "emoji", "voice", "video", "unsupported"]),
4260
+ type: external_exports.enum(["image", "emoji", "file", "voice", "video", "pending", "unsupported"]),
4184
4261
  data: external_exports.string().optional(),
4185
4262
  url: external_exports.string().optional(),
4186
4263
  format: external_exports.string(),
4187
- filename: external_exports.string()
4264
+ filename: external_exports.string(),
4265
+ source: external_exports.enum(["original", "thumbnail"]).optional(),
4266
+ errorCode: external_exports.string().optional()
4188
4267
  });
4189
4268
  var agentConfigSchema = external_exports.object({
4190
4269
  maxTurns: external_exports.number().int().positive().default(30),
@@ -4309,6 +4388,12 @@ var WeChatClient = class {
4309
4388
  async openChat(chatId, clearUnreads) {
4310
4389
  return this.post(`/api/chats/${encodeURIComponent(chatId)}/open${qs({ clearUnreads })}`);
4311
4390
  }
4391
+ async listGroupMembersPage(groupId, limit, cursor) {
4392
+ const page = groupMembersPageSchema.parse(await this.get(`/api/groups/${encodeURIComponent(groupId)}/members${qs({ limit, cursor })}`));
4393
+ if (page.errorCode)
4394
+ throw new WeChatHttpError(400, "Bad Request", page.errorCode, page.errorCode);
4395
+ return { ...page, nextCursor: page.nextCursor ?? void 0 };
4396
+ }
4312
4397
  // ---- Contacts ----
4313
4398
  async listContactsPage(limit, cursor) {
4314
4399
  const page = await this.get(`/api/contacts${qs({ limit, cursor })}`);
@@ -4332,6 +4417,17 @@ var WeChatClient = class {
4332
4417
  async listMessages(chatId, limit) {
4333
4418
  return (await this.listMessagesPage(chatId, limit)).items;
4334
4419
  }
4420
+ async syncChat(chatId, options = {}) {
4421
+ const raw = await this.get(`/api/sync/${encodeURIComponent(chatId)}${qs({ limit: options.limit, cursor: options.cursor, since: options.since, from: options.from, to: options.to })}`);
4422
+ if (raw && typeof raw === "object" && typeof raw.errorCode === "string") {
4423
+ const errorCode = raw.errorCode;
4424
+ throw new WeChatHttpError(400, "Bad Request", errorCode, errorCode);
4425
+ }
4426
+ const page = chatSyncPageSchema.parse(raw);
4427
+ if (page.errorCode)
4428
+ throw new WeChatHttpError(400, "Bad Request", page.errorCode, page.errorCode);
4429
+ return { ...page, nextCursor: page.nextCursor ?? void 0 };
4430
+ }
4335
4431
  async getMedia(chatId, localId) {
4336
4432
  return this.get(`/api/messages/${encodeURIComponent(chatId)}/media/${localId}`);
4337
4433
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kyan-du/agent-wechat-wechaty-puppet",
3
- "version": "0.13.3",
3
+ "version": "0.14.0",
4
4
  "description": "Wechaty Puppet for agent-wechat — bridges Wechaty bots to WeChat via the agent-wechat REST/WebSocket server",
5
5
  "type": "module",
6
6
  "main": "./dist/mod.js",