@zhin.js/adapter-icqq 1.1.14 → 1.1.16

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 (79) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/PERMITS.md +14 -18
  3. package/README.md +12 -0
  4. package/adapters/icqq/index.js +15 -0
  5. package/adapters/icqq/index.ts +15 -0
  6. package/agents/icqq/conversation.js +72 -0
  7. package/agents/icqq/conversation.ts +67 -0
  8. package/agents/icqq/messages.js +144 -0
  9. package/agents/icqq/messages.ts +144 -0
  10. package/agents/icqq/skills/icqq-conversation/SKILL.md +24 -0
  11. package/agents/icqq/skills/icqq-conversation/tools/conversation_info/index.js +61 -0
  12. package/agents/icqq/skills/icqq-conversation/tools/conversation_info/index.ts +61 -0
  13. package/agents/icqq/skills/icqq-directory/SKILL.md +9 -11
  14. package/agents/icqq/skills/icqq-directory/tools/user_info/index.js +2 -1
  15. package/agents/icqq/skills/icqq-directory/tools/user_info/index.ts +2 -1
  16. package/agents/icqq/skills/icqq-group-admin/SKILL.md +32 -15
  17. package/agents/icqq/skills/icqq-group-admin/tools/announce/index.js +2 -1
  18. package/agents/icqq/skills/icqq-group-admin/tools/announce/index.ts +2 -1
  19. package/agents/icqq/skills/icqq-group-admin/tools/essence/index.js +2 -1
  20. package/agents/icqq/skills/icqq-group-admin/tools/essence/index.ts +2 -1
  21. package/agents/icqq/skills/icqq-group-admin/tools/group_invite/index.js +5 -3
  22. package/agents/icqq/skills/icqq-group-admin/tools/group_invite/index.ts +5 -3
  23. package/agents/icqq/skills/icqq-group-admin/tools/group_kick/index.js +14 -11
  24. package/agents/icqq/skills/icqq-group-admin/tools/group_kick/index.ts +13 -9
  25. package/agents/icqq/skills/icqq-group-admin/tools/group_leave/index.js +33 -0
  26. package/agents/icqq/skills/icqq-group-admin/tools/group_leave/index.ts +32 -0
  27. package/agents/icqq/skills/icqq-group-admin/tools/recall_member_message/index.js +33 -0
  28. package/agents/icqq/skills/icqq-group-admin/tools/recall_member_message/index.ts +32 -0
  29. package/agents/icqq/skills/icqq-group-admin/tools/set_anonymous/index.js +3 -2
  30. package/agents/icqq/skills/icqq-group-admin/tools/set_anonymous/index.ts +3 -2
  31. package/agents/icqq/skills/icqq-group-admin/tools/set_mute/index.js +4 -3
  32. package/agents/icqq/skills/icqq-group-admin/tools/set_mute/index.ts +4 -3
  33. package/agents/icqq/skills/icqq-group-admin/tools/set_title/index.js +4 -3
  34. package/agents/icqq/skills/icqq-group-admin/tools/set_title/index.ts +4 -3
  35. package/agents/icqq/skills/icqq-group-directory/SKILL.md +16 -0
  36. package/agents/icqq/skills/{icqq-directory → icqq-group-directory}/tools/group_member_info/index.js +3 -2
  37. package/agents/icqq/skills/{icqq-directory → icqq-group-directory}/tools/group_member_info/index.ts +3 -2
  38. package/agents/icqq/skills/icqq-group-interaction/SKILL.md +18 -0
  39. package/agents/icqq/skills/{icqq-interaction → icqq-group-interaction}/tools/group_sign/index.js +3 -2
  40. package/agents/icqq/skills/{icqq-interaction → icqq-group-interaction}/tools/group_sign/index.ts +3 -2
  41. package/agents/icqq/skills/{icqq-interaction → icqq-group-interaction}/tools/poke/index.js +2 -1
  42. package/agents/icqq/skills/{icqq-interaction → icqq-group-interaction}/tools/poke/index.ts +2 -1
  43. package/agents/icqq/skills/icqq-group-state/SKILL.md +7 -6
  44. package/agents/icqq/skills/icqq-group-state/tools/group_files/index.js +2 -1
  45. package/agents/icqq/skills/icqq-group-state/tools/group_files/index.ts +2 -1
  46. package/agents/icqq/skills/icqq-interaction/SKILL.md +5 -10
  47. package/agents/icqq/skills/icqq-interaction/tools/send_user_like/index.js +3 -2
  48. package/agents/icqq/skills/icqq-interaction/tools/send_user_like/index.ts +3 -2
  49. package/agents/icqq/skills/icqq-messages/SKILL.md +28 -0
  50. package/agents/icqq/skills/icqq-messages/tools/forward_messages/index.js +42 -0
  51. package/agents/icqq/skills/icqq-messages/tools/forward_messages/index.ts +40 -0
  52. package/agents/icqq/skills/icqq-messages/tools/quote_reply/index.js +24 -0
  53. package/agents/icqq/skills/icqq-messages/tools/quote_reply/index.ts +24 -0
  54. package/agents/icqq/skills/icqq-messages/tools/recall_own_message/index.js +18 -0
  55. package/agents/icqq/skills/icqq-messages/tools/recall_own_message/index.ts +17 -0
  56. package/agents/icqq/system.md +4 -0
  57. package/commands/icqq/endpoint/definition.js +9 -7
  58. package/commands/icqq/endpoint/definition.ts +9 -9
  59. package/lib/endpoint.d.ts +1 -0
  60. package/lib/endpoint.js +12 -1
  61. package/lib/group-moderation.d.ts +5 -0
  62. package/lib/group-moderation.js +46 -0
  63. package/lib/i18n.d.ts +1 -0
  64. package/lib/i18n.js +47 -0
  65. package/lib/icqq-inbound.js +15 -0
  66. package/lib/icqq-login-assist.d.ts +2 -0
  67. package/lib/icqq-login-assist.js +8 -7
  68. package/lib/protocol.d.ts +1 -0
  69. package/lib/protocol.js +14 -1
  70. package/package.json +16 -16
  71. package/prompt-sections/platform/index.js +1 -2
  72. package/prompt-sections/platform/index.ts +1 -2
  73. package/schema.json +250 -42
  74. package/src/endpoint.ts +14 -1
  75. package/src/group-moderation.ts +52 -0
  76. package/src/i18n.ts +48 -0
  77. package/src/icqq-inbound.ts +14 -0
  78. package/src/icqq-login-assist.ts +10 -7
  79. package/src/protocol.ts +13 -1
package/src/protocol.ts CHANGED
@@ -269,6 +269,7 @@ export interface ResolvedIcqqConfig {
269
269
  export interface IcqqWireSegment {
270
270
  readonly type: string;
271
271
  readonly data?: Record<string, unknown>;
272
+ readonly platform?: Readonly<Record<string, unknown>>;
272
273
  }
273
274
 
274
275
  export interface IcqqInboundMessage {
@@ -394,6 +395,7 @@ const ICQQ_STANDALONE_ELEMENTS = new Set([
394
395
  'json',
395
396
  'share',
396
397
  'long_msg',
398
+ 'multimsg',
397
399
  ] as const);
398
400
 
399
401
  /** Normalize inline image bytes before either temporary-file or native-base64 delivery. */
@@ -461,7 +463,7 @@ export function formatOutboundMessages(payload: unknown): Sendable[] {
461
463
  }
462
464
  const messages = groups.filter(group => group.some(element => typeof element === 'string'
463
465
  ? element.trim() !== ''
464
- : element.type !== 'reply'));
466
+ : element.type !== 'reply' && element.type !== 'quote'));
465
467
  if (messages.length === 0) return ['\u200b'];
466
468
  return messages.map(group => group.length === 1 ? group[0]! : group);
467
469
  }
@@ -502,6 +504,13 @@ function formatOutboundElements(payload: readonly unknown[]): (string | MessageE
502
504
  case 'reply': {
503
505
  const id = String(item.data?.message_id ?? item.data?.id ?? '').trim();
504
506
  if (!id) throw new TypeError('ICQQ reply segment requires message_id');
507
+ const quote = item.platform?.icqqQuote as Record<string, unknown> | undefined;
508
+ if (quote) {
509
+ const { user_id, seq, rand, time, message } = quote;
510
+ if (typeof user_id !== 'number' || typeof seq !== 'number' || typeof rand !== 'number'
511
+ || typeof time !== 'number' || typeof message !== 'string') throw new TypeError('Invalid ICQQ quote source');
512
+ return { type: 'quote', user_id, seq, rand, time, message };
513
+ }
505
514
  return { type: 'reply', id };
506
515
  }
507
516
  case 'record':
@@ -528,6 +537,9 @@ function formatOutboundElements(payload: readonly unknown[]): (string | MessageE
528
537
  case 'forward': {
529
538
  const resid = String(item.data?.forward_id ?? item.data?.resid ?? item.data?.id ?? '').trim();
530
539
  if (!resid) throw new TypeError('ICQQ forward segment requires forward_id');
540
+ // Prepared merged forwards need their filename; a long_msg would expand inline.
541
+ const filename = item.platform?.icqqForwardFilename;
542
+ if (typeof filename === 'string' && filename) return { type: 'multimsg', resid, filename };
531
543
  return { type: 'long_msg', resid };
532
544
  }
533
545
  case 'share':