@kyan-du/agent-wechat-wechaty-puppet 0.13.3 → 0.14.1

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 +104 -7
  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),
@@ -4257,11 +4336,12 @@ var WeChatClient = class {
4257
4336
  await throwHttpError(res);
4258
4337
  return res.json();
4259
4338
  }
4260
- async post(path, body) {
4339
+ async post(path, body, signal) {
4261
4340
  const res = await fetch(`${this.base}${path}`, {
4262
4341
  method: "POST",
4263
4342
  headers: this.headers,
4264
- body: body != null ? JSON.stringify(body) : void 0
4343
+ body: body != null ? JSON.stringify(body) : void 0,
4344
+ signal
4265
4345
  });
4266
4346
  if (!res.ok)
4267
4347
  await throwHttpError(res);
@@ -4306,8 +4386,14 @@ var WeChatClient = class {
4306
4386
  async markChatRead(chatId) {
4307
4387
  return this.post(`/api/chats/${encodeURIComponent(chatId)}/mark-read`);
4308
4388
  }
4309
- async openChat(chatId, clearUnreads) {
4310
- return this.post(`/api/chats/${encodeURIComponent(chatId)}/open${qs({ clearUnreads })}`);
4389
+ async openChat(chatId, clearUnreads, signal, executionTimeoutMs) {
4390
+ return this.post(`/api/chats/${encodeURIComponent(chatId)}/open${qs({ clearUnreads, executionTimeoutMs })}`, void 0, signal);
4391
+ }
4392
+ async listGroupMembersPage(groupId, limit, cursor) {
4393
+ const page = groupMembersPageSchema.parse(await this.get(`/api/groups/${encodeURIComponent(groupId)}/members${qs({ limit, cursor })}`));
4394
+ if (page.errorCode)
4395
+ throw new WeChatHttpError(400, "Bad Request", page.errorCode, page.errorCode);
4396
+ return { ...page, nextCursor: page.nextCursor ?? void 0 };
4311
4397
  }
4312
4398
  // ---- Contacts ----
4313
4399
  async listContactsPage(limit, cursor) {
@@ -4332,6 +4418,17 @@ var WeChatClient = class {
4332
4418
  async listMessages(chatId, limit) {
4333
4419
  return (await this.listMessagesPage(chatId, limit)).items;
4334
4420
  }
4421
+ async syncChat(chatId, options = {}) {
4422
+ 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 })}`);
4423
+ if (raw && typeof raw === "object" && typeof raw.errorCode === "string") {
4424
+ const errorCode = raw.errorCode;
4425
+ throw new WeChatHttpError(400, "Bad Request", errorCode, errorCode);
4426
+ }
4427
+ const page = chatSyncPageSchema.parse(raw);
4428
+ if (page.errorCode)
4429
+ throw new WeChatHttpError(400, "Bad Request", page.errorCode, page.errorCode);
4430
+ return { ...page, nextCursor: page.nextCursor ?? void 0 };
4431
+ }
4335
4432
  async getMedia(chatId, localId) {
4336
4433
  return this.get(`/api/messages/${encodeURIComponent(chatId)}/media/${localId}`);
4337
4434
  }
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.1",
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",