agent-messenger 2.15.1 → 2.17.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.
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +1 -1
- package/dist/package.json +1 -1
- package/dist/src/platforms/kakaotalk/attachment-router.d.ts +25 -0
- package/dist/src/platforms/kakaotalk/attachment-router.d.ts.map +1 -0
- package/dist/src/platforms/kakaotalk/attachment-router.js +29 -0
- package/dist/src/platforms/kakaotalk/attachment-router.js.map +1 -0
- package/dist/src/platforms/kakaotalk/client.d.ts +14 -1
- package/dist/src/platforms/kakaotalk/client.d.ts.map +1 -1
- package/dist/src/platforms/kakaotalk/client.js +216 -0
- package/dist/src/platforms/kakaotalk/client.js.map +1 -1
- package/dist/src/platforms/kakaotalk/commands/message.d.ts.map +1 -1
- package/dist/src/platforms/kakaotalk/commands/message.js +49 -0
- package/dist/src/platforms/kakaotalk/commands/message.js.map +1 -1
- package/dist/src/platforms/kakaotalk/image-meta.d.ts +7 -0
- package/dist/src/platforms/kakaotalk/image-meta.d.ts.map +1 -0
- package/dist/src/platforms/kakaotalk/image-meta.js +153 -0
- package/dist/src/platforms/kakaotalk/image-meta.js.map +1 -0
- package/dist/src/platforms/kakaotalk/index.d.ts +8 -2
- package/dist/src/platforms/kakaotalk/index.d.ts.map +1 -1
- package/dist/src/platforms/kakaotalk/index.js +5 -1
- package/dist/src/platforms/kakaotalk/index.js.map +1 -1
- package/dist/src/platforms/kakaotalk/media-upload.d.ts +3 -0
- package/dist/src/platforms/kakaotalk/media-upload.d.ts.map +1 -0
- package/dist/src/platforms/kakaotalk/media-upload.js +44 -0
- package/dist/src/platforms/kakaotalk/media-upload.js.map +1 -0
- package/dist/src/platforms/kakaotalk/protocol/connection.d.ts +1 -0
- package/dist/src/platforms/kakaotalk/protocol/connection.d.ts.map +1 -1
- package/dist/src/platforms/kakaotalk/protocol/connection.js +11 -0
- package/dist/src/platforms/kakaotalk/protocol/connection.js.map +1 -1
- package/dist/src/platforms/kakaotalk/protocol/media-uploader.d.ts +25 -0
- package/dist/src/platforms/kakaotalk/protocol/media-uploader.d.ts.map +1 -0
- package/dist/src/platforms/kakaotalk/protocol/media-uploader.js +99 -0
- package/dist/src/platforms/kakaotalk/protocol/media-uploader.js.map +1 -0
- package/dist/src/platforms/kakaotalk/protocol/session.d.ts +6 -0
- package/dist/src/platforms/kakaotalk/protocol/session.d.ts.map +1 -1
- package/dist/src/platforms/kakaotalk/protocol/session.js +61 -0
- package/dist/src/platforms/kakaotalk/protocol/session.js.map +1 -1
- package/dist/src/platforms/kakaotalk/types.d.ts +44 -0
- package/dist/src/platforms/kakaotalk/types.d.ts.map +1 -1
- package/dist/src/platforms/kakaotalk/types.js +9 -0
- package/dist/src/platforms/kakaotalk/types.js.map +1 -1
- package/dist/src/platforms/slackbot/types.d.ts +4 -0
- package/dist/src/platforms/slackbot/types.d.ts.map +1 -1
- package/docs/content/docs/cli/kakaotalk.mdx +47 -2
- package/docs/content/docs/sdk/kakaotalk.mdx +32 -0
- package/package.json +1 -1
- package/skills/agent-channeltalk/SKILL.md +1 -1
- package/skills/agent-channeltalkbot/SKILL.md +1 -1
- package/skills/agent-discord/SKILL.md +1 -1
- package/skills/agent-discordbot/SKILL.md +1 -1
- package/skills/agent-instagram/SKILL.md +1 -1
- package/skills/agent-kakaotalk/SKILL.md +62 -4
- package/skills/agent-kakaotalk/references/common-patterns.md +50 -11
- package/skills/agent-line/SKILL.md +1 -1
- package/skills/agent-slack/SKILL.md +1 -1
- package/skills/agent-slackbot/SKILL.md +1 -1
- package/skills/agent-teams/SKILL.md +1 -1
- package/skills/agent-telegram/SKILL.md +1 -1
- package/skills/agent-telegrambot/SKILL.md +1 -1
- package/skills/agent-webex/SKILL.md +1 -1
- package/skills/agent-wechatbot/SKILL.md +1 -1
- package/skills/agent-whatsapp/SKILL.md +1 -1
- package/skills/agent-whatsappbot/SKILL.md +1 -1
- package/src/platforms/kakaotalk/attachment-router.test.ts +102 -0
- package/src/platforms/kakaotalk/attachment-router.ts +50 -0
- package/src/platforms/kakaotalk/client.ts +315 -8
- package/src/platforms/kakaotalk/commands/message.ts +66 -0
- package/src/platforms/kakaotalk/image-meta.test.ts +90 -0
- package/src/platforms/kakaotalk/image-meta.ts +176 -0
- package/src/platforms/kakaotalk/index.ts +13 -0
- package/src/platforms/kakaotalk/media-upload.ts +44 -0
- package/src/platforms/kakaotalk/protocol/connection.ts +11 -0
- package/src/platforms/kakaotalk/protocol/media-uploader.ts +129 -0
- package/src/platforms/kakaotalk/protocol/session.ts +67 -0
- package/src/platforms/kakaotalk/types.ts +57 -0
- package/src/platforms/slackbot/types.ts +16 -0
- package/src/platforms/telegrambot/cli.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../../../src/platforms/kakaotalk/commands/message.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../../../src/platforms/kakaotalk/commands/message.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-meta.d.ts","sourceRoot":"","sources":["../../../../src/platforms/kakaotalk/image-meta.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AASD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,eAAe,CAsCzE"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
// Extracts width/height/mime by reading the file's magic bytes and headers
|
|
2
|
+
// directly. Avoids pulling in `image-size` or `sharp` so the SDK stays
|
|
3
|
+
// dependency-light. Supports JPEG, PNG, GIF, WebP — the formats KakaoTalk
|
|
4
|
+
// actually renders inline. Throws for anything else (including truncated
|
|
5
|
+
// headers whose magic matches but whose length is short of the dimension
|
|
6
|
+
// fields, to avoid an unhandled DataView RangeError); the caller should fall
|
|
7
|
+
// back to `sendFile` (type=18) for unknown types.
|
|
8
|
+
export function detectImageDimensions(buffer) {
|
|
9
|
+
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
10
|
+
if (isPng(buffer)) {
|
|
11
|
+
if (buffer.length < 24) {
|
|
12
|
+
throw new Error('Truncated PNG: header is shorter than 24 bytes');
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
width: view.getUint32(16, false),
|
|
16
|
+
height: view.getUint32(20, false),
|
|
17
|
+
mimeType: 'image/png',
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
if (isJpeg(buffer)) {
|
|
21
|
+
const dim = readJpegDimensions(buffer);
|
|
22
|
+
return { ...dim, mimeType: 'image/jpeg' };
|
|
23
|
+
}
|
|
24
|
+
if (isGif(buffer)) {
|
|
25
|
+
if (buffer.length < 10) {
|
|
26
|
+
throw new Error('Truncated GIF: header is shorter than 10 bytes');
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
width: view.getUint16(6, true),
|
|
30
|
+
height: view.getUint16(8, true),
|
|
31
|
+
mimeType: 'image/gif',
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
if (isWebp(buffer)) {
|
|
35
|
+
if (buffer.length < 16) {
|
|
36
|
+
throw new Error('Truncated WebP: header is shorter than 16 bytes');
|
|
37
|
+
}
|
|
38
|
+
return { ...readWebpDimensions(buffer), mimeType: 'image/webp' };
|
|
39
|
+
}
|
|
40
|
+
throw new Error('Unsupported image format (expected JPEG, PNG, GIF, or WebP)');
|
|
41
|
+
}
|
|
42
|
+
// Full PNG signature: 89 50 4E 47 0D 0A 1A 0A — checking only the first 4 bytes
|
|
43
|
+
// would let a file that happens to start with "\x89PNG" but isn't really a PNG
|
|
44
|
+
// reach the dimension reader and either crash or return garbage. The trailing
|
|
45
|
+
// CRLF/EOF/LF bytes pin it to a real PNG header.
|
|
46
|
+
function isPng(b) {
|
|
47
|
+
return (b[0] === 0x89 &&
|
|
48
|
+
b[1] === 0x50 &&
|
|
49
|
+
b[2] === 0x4e &&
|
|
50
|
+
b[3] === 0x47 &&
|
|
51
|
+
b[4] === 0x0d &&
|
|
52
|
+
b[5] === 0x0a &&
|
|
53
|
+
b[6] === 0x1a &&
|
|
54
|
+
b[7] === 0x0a);
|
|
55
|
+
}
|
|
56
|
+
function isJpeg(b) {
|
|
57
|
+
return b[0] === 0xff && b[1] === 0xd8;
|
|
58
|
+
}
|
|
59
|
+
// GIF signature is "GIF87a" or "GIF89a". Checking only "GIF" would match any
|
|
60
|
+
// payload that starts with those three bytes (other Compuserve formats, etc.).
|
|
61
|
+
function isGif(b) {
|
|
62
|
+
return (b[0] === 0x47 &&
|
|
63
|
+
b[1] === 0x49 &&
|
|
64
|
+
b[2] === 0x46 &&
|
|
65
|
+
b[3] === 0x38 &&
|
|
66
|
+
(b[4] === 0x37 || b[4] === 0x39) &&
|
|
67
|
+
b[5] === 0x61);
|
|
68
|
+
}
|
|
69
|
+
function isWebp(b) {
|
|
70
|
+
return (b[0] === 0x52 &&
|
|
71
|
+
b[1] === 0x49 &&
|
|
72
|
+
b[2] === 0x46 &&
|
|
73
|
+
b[3] === 0x46 &&
|
|
74
|
+
b[8] === 0x57 &&
|
|
75
|
+
b[9] === 0x45 &&
|
|
76
|
+
b[10] === 0x42 &&
|
|
77
|
+
b[11] === 0x50);
|
|
78
|
+
}
|
|
79
|
+
// JPEG dimensions live in an SOF (Start Of Frame) marker (0xFFC0..0xFFCF except
|
|
80
|
+
// 0xFFC4, 0xFFC8, 0xFFCC which are not SOF). We scan markers until we hit one.
|
|
81
|
+
//
|
|
82
|
+
// The scan has to handle two JPEG quirks (ITU-T T.81 §B.1):
|
|
83
|
+
// 1. Fill bytes — any number of 0xFF bytes may precede a marker, so on a
|
|
84
|
+
// 0xFF byte we look at the next byte for the actual marker code and skip
|
|
85
|
+
// forward by 1 if it's another 0xFF (without trying to read a length).
|
|
86
|
+
// 2. Standalone markers — SOI/EOI/RST0-7/TEM (0xFFD0..0xFFD9, 0xFF01) have
|
|
87
|
+
// no length field, so we step past them with a fixed +2 instead of
|
|
88
|
+
// reading garbage as a segment length.
|
|
89
|
+
// Treating either case as a length-prefixed segment desynchronizes the scan
|
|
90
|
+
// and either skips past the SOF or runs off the end of the buffer.
|
|
91
|
+
function readJpegDimensions(buffer) {
|
|
92
|
+
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
93
|
+
let i = 2;
|
|
94
|
+
while (i < buffer.length - 9) {
|
|
95
|
+
if (buffer[i] !== 0xff) {
|
|
96
|
+
i++;
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
const marker = buffer[i + 1] ?? 0;
|
|
100
|
+
if (marker === 0xff) {
|
|
101
|
+
i++;
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (marker >= 0xc0 && marker <= 0xcf && marker !== 0xc4 && marker !== 0xc8 && marker !== 0xcc) {
|
|
105
|
+
const height = view.getUint16(i + 5, false);
|
|
106
|
+
const width = view.getUint16(i + 7, false);
|
|
107
|
+
return { width, height };
|
|
108
|
+
}
|
|
109
|
+
if (marker === 0x01 || (marker >= 0xd0 && marker <= 0xd9)) {
|
|
110
|
+
i += 2;
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
const segmentLength = view.getUint16(i + 2, false);
|
|
114
|
+
i += 2 + segmentLength;
|
|
115
|
+
}
|
|
116
|
+
throw new Error('JPEG SOF marker not found');
|
|
117
|
+
}
|
|
118
|
+
// WebP supports several variants: VP8 (lossy), VP8L (lossless), VP8X (extended).
|
|
119
|
+
// Dimensions live at different offsets per variant; we cover all three.
|
|
120
|
+
function readWebpDimensions(buffer) {
|
|
121
|
+
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
122
|
+
const fourCC = String.fromCharCode(buffer[12], buffer[13], buffer[14], buffer[15]);
|
|
123
|
+
if (fourCC === 'VP8 ') {
|
|
124
|
+
if (buffer.length < 30) {
|
|
125
|
+
throw new Error('Truncated WebP VP8: header is shorter than 30 bytes');
|
|
126
|
+
}
|
|
127
|
+
const width = view.getUint16(26, true) & 0x3fff;
|
|
128
|
+
const height = view.getUint16(28, true) & 0x3fff;
|
|
129
|
+
return { width, height };
|
|
130
|
+
}
|
|
131
|
+
if (fourCC === 'VP8L') {
|
|
132
|
+
if (buffer.length < 25) {
|
|
133
|
+
throw new Error('Truncated WebP VP8L: header is shorter than 25 bytes');
|
|
134
|
+
}
|
|
135
|
+
const b0 = buffer[21];
|
|
136
|
+
const b1 = buffer[22];
|
|
137
|
+
const b2 = buffer[23];
|
|
138
|
+
const b3 = buffer[24];
|
|
139
|
+
const width = 1 + (((b1 & 0x3f) << 8) | b0);
|
|
140
|
+
const height = 1 + (((b3 & 0x0f) << 10) | (b2 << 2) | ((b1 & 0xc0) >> 6));
|
|
141
|
+
return { width, height };
|
|
142
|
+
}
|
|
143
|
+
if (fourCC === 'VP8X') {
|
|
144
|
+
if (buffer.length < 31) {
|
|
145
|
+
throw new Error('Truncated WebP VP8X: header is shorter than 31 bytes');
|
|
146
|
+
}
|
|
147
|
+
const width = 1 + (view.getUint32(24, true) & 0xffffff);
|
|
148
|
+
const height = 1 + (view.getUint32(27, true) & 0xffffff);
|
|
149
|
+
return { width, height };
|
|
150
|
+
}
|
|
151
|
+
throw new Error(`Unsupported WebP variant: ${fourCC}`);
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=image-meta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-meta.js","sourceRoot":"","sources":["../../../../src/platforms/kakaotalk/image-meta.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,12 @@ export type { KakaoChatKind } from './chat-classifier.js';
|
|
|
4
4
|
export { KakaoCredentialManager, CredentialManager } from './credential-manager.js';
|
|
5
5
|
export { KakaoTalkListener } from './listener.js';
|
|
6
6
|
export type { PendingLoginState } from './credential-manager.js';
|
|
7
|
-
export type { KakaoAccountCredentials, KakaoAuthMethod, KakaoChat, KakaoConfig, KakaoDeviceType, KakaoEmoticonKind, KakaoEmoticonMessageType, KakaoMember, KakaoMessage, KakaoProfile, KakaoSendResult, KakaoTalkListenerEventMap, KakaoTalkPushEmoticonEvent, KakaoTalkPushEvent, KakaoTalkPushGenericEvent, KakaoTalkPushMemberEvent, KakaoTalkPushMessageEvent, KakaoTalkPushReadEvent, } from './types.js';
|
|
8
|
-
export { KAKAO_EMOTICON_KIND_BY_TYPE, KAKAO_EMOTICON_MESSAGE_TYPES, KakaoAccountCredentialsSchema, KakaoChatSchema, KakaoConfigSchema, KakaoMemberSchema, KakaoMessageSchema, KakaoProfileSchema, KakaoSendResultSchema, KakaoTalkPushEmoticonEventSchema, KakaoTalkPushMemberEventSchema, KakaoTalkPushMessageEventSchema, KakaoTalkPushReadEventSchema, } from './types.js';
|
|
7
|
+
export type { KakaoAccountCredentials, KakaoAuthMethod, KakaoChat, KakaoConfig, KakaoDeviceType, KakaoEmoticonKind, KakaoEmoticonMessageType, KakaoFileExtra, KakaoLoginResult, KakaoMarkReadResult, KakaoMember, KakaoMessage, KakaoMultiPhotoExtra, KakaoPhotoExtra, KakaoProfile, KakaoSendResult, KakaoTalkListenerEventMap, KakaoTalkPushEmoticonEvent, KakaoTalkPushEvent, KakaoTalkPushGenericEvent, KakaoTalkPushMemberEvent, KakaoTalkPushMessageEvent, KakaoTalkPushReadEvent, } from './types.js';
|
|
8
|
+
export { KAKAO_EMOTICON_KIND_BY_TYPE, KAKAO_EMOTICON_MESSAGE_TYPES, KAKAO_MESSAGE_TYPE, KakaoAccountCredentialsSchema, KakaoChatSchema, KakaoConfigSchema, KakaoMarkReadResultSchema, KakaoMemberSchema, KakaoMessageSchema, KakaoProfileSchema, KakaoSendResultSchema, KakaoTalkPushEmoticonEventSchema, KakaoTalkPushMemberEventSchema, KakaoTalkPushMessageEventSchema, KakaoTalkPushReadEventSchema, } from './types.js';
|
|
9
|
+
export { attemptLogin, generateDeviceUuid, loginFlow, registerDevice, requestPasscode } from './auth/kakao-login.js';
|
|
10
|
+
export type { LoginCredentials } from './auth/kakao-login.js';
|
|
11
|
+
export { sha1Hex } from './media-upload.js';
|
|
12
|
+
export { detectImageDimensions } from './image-meta.js';
|
|
13
|
+
export type { AttachmentInput, AttachmentPlan, ResolvedAttachment, SingleAttachmentKind } from './attachment-router.js';
|
|
14
|
+
export { planAttachments, resolveAttachment } from './attachment-router.js';
|
|
9
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/platforms/kakaotalk/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,YAAY,EACV,uBAAuB,EACvB,eAAe,EACf,SAAS,EACT,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,6BAA6B,EAC7B,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/platforms/kakaotalk/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,YAAY,EACV,uBAAuB,EACvB,eAAe,EACf,SAAS,EACT,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,6BAA6B,EAC7B,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACjH,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACpD,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AACpH,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -2,5 +2,9 @@ export { KakaoTalkClient, KakaoTalkError } from './client.js';
|
|
|
2
2
|
export { classifyKakaoChat } from './chat-classifier.js';
|
|
3
3
|
export { KakaoCredentialManager, CredentialManager } from './credential-manager.js';
|
|
4
4
|
export { KakaoTalkListener } from './listener.js';
|
|
5
|
-
export { KAKAO_EMOTICON_KIND_BY_TYPE, KAKAO_EMOTICON_MESSAGE_TYPES, KakaoAccountCredentialsSchema, KakaoChatSchema, KakaoConfigSchema, KakaoMemberSchema, KakaoMessageSchema, KakaoProfileSchema, KakaoSendResultSchema, KakaoTalkPushEmoticonEventSchema, KakaoTalkPushMemberEventSchema, KakaoTalkPushMessageEventSchema, KakaoTalkPushReadEventSchema, } from './types.js';
|
|
5
|
+
export { KAKAO_EMOTICON_KIND_BY_TYPE, KAKAO_EMOTICON_MESSAGE_TYPES, KAKAO_MESSAGE_TYPE, KakaoAccountCredentialsSchema, KakaoChatSchema, KakaoConfigSchema, KakaoMarkReadResultSchema, KakaoMemberSchema, KakaoMessageSchema, KakaoProfileSchema, KakaoSendResultSchema, KakaoTalkPushEmoticonEventSchema, KakaoTalkPushMemberEventSchema, KakaoTalkPushMessageEventSchema, KakaoTalkPushReadEventSchema, } from './types.js';
|
|
6
|
+
export { attemptLogin, generateDeviceUuid, loginFlow, registerDevice, requestPasscode } from './auth/kakao-login.js';
|
|
7
|
+
export { sha1Hex } from './media-upload.js';
|
|
8
|
+
export { detectImageDimensions } from './image-meta.js';
|
|
9
|
+
export { planAttachments, resolveAttachment } from './attachment-router.js';
|
|
6
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platforms/kakaotalk/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platforms/kakaotalk/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AA2B9C,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,6BAA6B,EAC7B,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEjH,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEpD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-upload.d.ts","sourceRoot":"","sources":["../../../../src/platforms/kakaotalk/media-upload.ts"],"names":[],"mappings":"AAGA,wBAAsB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAK/D;AA8BD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK9D"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// SHA-1 hex (uppercase, 40 chars) — required as the `cs` (checksum) field
|
|
2
|
+
// on SHIP requests and on the inbound photo `extra` JSON. Verified by inbound
|
|
3
|
+
// capture of a real KakaoTalk client photo (2026-05).
|
|
4
|
+
export async function sha1Hex(data) {
|
|
5
|
+
const hashBuf = await crypto.subtle.digest('SHA-1', data);
|
|
6
|
+
return Array.from(new Uint8Array(hashBuf))
|
|
7
|
+
.map((b) => b.toString(16).padStart(2, '0').toUpperCase())
|
|
8
|
+
.join('');
|
|
9
|
+
}
|
|
10
|
+
const MIME_BY_EXT = {
|
|
11
|
+
jpg: 'image/jpeg',
|
|
12
|
+
jpeg: 'image/jpeg',
|
|
13
|
+
png: 'image/png',
|
|
14
|
+
gif: 'image/gif',
|
|
15
|
+
webp: 'image/webp',
|
|
16
|
+
mp4: 'video/mp4',
|
|
17
|
+
mov: 'video/quicktime',
|
|
18
|
+
webm: 'video/webm',
|
|
19
|
+
mkv: 'video/x-matroska',
|
|
20
|
+
m4v: 'video/x-m4v',
|
|
21
|
+
m4a: 'audio/m4a',
|
|
22
|
+
mp3: 'audio/mpeg',
|
|
23
|
+
wav: 'audio/wav',
|
|
24
|
+
ogg: 'audio/ogg',
|
|
25
|
+
pdf: 'application/pdf',
|
|
26
|
+
csv: 'text/csv',
|
|
27
|
+
txt: 'text/plain',
|
|
28
|
+
json: 'application/json',
|
|
29
|
+
zip: 'application/zip',
|
|
30
|
+
doc: 'application/msword',
|
|
31
|
+
docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
32
|
+
xls: 'application/vnd.ms-excel',
|
|
33
|
+
xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
34
|
+
ppt: 'application/vnd.ms-powerpoint',
|
|
35
|
+
pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
|
|
36
|
+
};
|
|
37
|
+
export function guessMimeFromFilename(filename) {
|
|
38
|
+
const dot = filename.lastIndexOf('.');
|
|
39
|
+
if (dot < 0 || dot === filename.length - 1)
|
|
40
|
+
return 'application/octet-stream';
|
|
41
|
+
const ext = filename.slice(dot + 1).toLowerCase();
|
|
42
|
+
return MIME_BY_EXT[ext] ?? 'application/octet-stream';
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=media-upload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-upload.js","sourceRoot":"","sources":["../../../../src/platforms/kakaotalk/media-upload.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,8EAA8E;AAC9E,sDAAsD;AACtD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAgB;IAC5C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IACzD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;SACvC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;SACzD,IAAI,CAAC,EAAE,CAAC,CAAA;AACb,CAAC;AAED,MAAM,WAAW,GAA2B;IAC1C,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,iBAAiB;IACtB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,kBAAkB;IACxB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,oBAAoB;IACzB,IAAI,EAAE,yEAAyE;IAC/E,GAAG,EAAE,0BAA0B;IAC/B,IAAI,EAAE,mEAAmE;IACzE,GAAG,EAAE,+BAA+B;IACpC,IAAI,EAAE,2EAA2E;CAClF,CAAA;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACrC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,0BAA0B,CAAA;IAC7E,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IACjD,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,0BAA0B,CAAA;AACvD,CAAC"}
|
|
@@ -12,6 +12,7 @@ export declare class LocoConnection {
|
|
|
12
12
|
connectTls(host: string, port: number): Promise<void>;
|
|
13
13
|
connectSecure(host: string, port: number): Promise<void>;
|
|
14
14
|
private performHandshake;
|
|
15
|
+
writeRaw(data: Buffer): Promise<void>;
|
|
15
16
|
sendPacket(method: string, body?: Record<string, unknown>): Promise<LocoPacket>;
|
|
16
17
|
onPush(handler: (packet: LocoPacket) => void): void;
|
|
17
18
|
onClose(handler: () => void): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/kakaotalk/protocol/connection.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIzC,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,eAAe,CAAI;IAC3B,OAAO,CAAC,gBAAgB,CAGrB;IACH,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,YAAY,CAA4B;IAE1C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAWhD,gBAAgB;
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/kakaotalk/protocol/connection.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIzC,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,eAAe,CAAI;IAC3B,OAAO,CAAC,gBAAgB,CAGrB;IACH,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,YAAY,CAA4B;IAE1C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAWhD,gBAAgB;IAWxB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAwBzF,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAInD,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAIlC,KAAK,IAAI,IAAI;IAMb,OAAO,CAAC,KAAK;IAUb,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,aAAa;IAqCrB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,WAAW;CAQpB"}
|
|
@@ -38,6 +38,17 @@ export class LocoConnection {
|
|
|
38
38
|
const handshakePacket = this.crypto.buildHandshakePacket();
|
|
39
39
|
await this.write(handshakePacket);
|
|
40
40
|
}
|
|
41
|
+
// Writes raw bytes onto the LOCO stream after applying the same AES-128-GCM
|
|
42
|
+
// framing as encrypted packets — used by the media-upload POST step where
|
|
43
|
+
// the protocol expects the file payload to follow the POST request inside
|
|
44
|
+
// the same encrypted channel (chunked into N frames automatically by the
|
|
45
|
+
// crypto layer's 4-byte-size + nonce + ciphertext + tag wrapping).
|
|
46
|
+
async writeRaw(data) {
|
|
47
|
+
if (!this.crypto)
|
|
48
|
+
throw new Error('crypto not initialised');
|
|
49
|
+
const encrypted = this.crypto.encrypt(data);
|
|
50
|
+
await this.write(encrypted);
|
|
51
|
+
}
|
|
41
52
|
async sendPacket(method, body = {}) {
|
|
42
53
|
const packetId = ++this.packetIdCounter;
|
|
43
54
|
const packet = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../../src/platforms/kakaotalk/protocol/connection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../../src/platforms/kakaotalk/protocol/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,OAAO,IAAI,UAAU,EAAE,MAAM,UAAU,CAAA;AAC7D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,UAAU,CAAA;AAEhD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAGrD,MAAM,uBAAuB,GAAG,MAAM,CAAA;AAEtC,MAAM,OAAO,cAAc;IACjB,MAAM,GAAkB,IAAI,CAAA;IAC5B,MAAM,GAAsB,IAAI,CAAA;IAChC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACxB,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACjC,eAAe,GAAG,CAAC,CAAA;IACnB,gBAAgB,GAAG,IAAI,GAAG,EAG/B,CAAA;IACK,WAAW,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/B,WAAW,GAA0C,IAAI,CAAA;IACzD,YAAY,GAAwB,IAAI,CAAA;IAEhD,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,IAAY;QACzC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;YACpF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;YACpB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YAC1B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;YACtD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,IAAY;QAC5C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;YAC1D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;YACpB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YAC1B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;YACtD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;QACF,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;IAC/B,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,EAAE,CAAA;QAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAA;QAC1D,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;IACnC,CAAC;IAED,4EAA4E;IAC5E,0EAA0E;IAC1E,0EAA0E;IAC1E,yEAAyE;IACzE,mEAAmE;IACnE,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC3C,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,OAAgC,EAAE;QACjE,MAAM,QAAQ,GAAG,EAAE,IAAI,CAAC,eAAe,CAAA;QACvC,MAAM,MAAM,GAAe;YACzB,QAAQ;YACR,UAAU,EAAE,CAAC;YACb,MAAM;YACN,QAAQ,EAAE,CAAC;YACX,IAAI;SACL,CAAA;QAED,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACzD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAEtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBACtC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;gBAC9B,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,MAAM,KAAK,uBAAuB,KAAK,CAAC,CAAC,CAAA;YACpF,CAAC,EAAE,uBAAuB,CAAC,CAAA;YAC3B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;QACzD,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,OAAqC;QAC1C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAA;IAC5B,CAAC;IAED,OAAO,CAAC,OAAmB;QACzB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAA;IAC7B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;IAEO,KAAK,CAAC,IAAY;QACxB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAA;gBACzC,OAAM;YACR,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QACnE,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,MAAM,CAAC,KAAa;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;QACjD,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC;IAEO,aAAa;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,0DAA0D;gBAC1D,2DAA2D;gBAC3D,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAM;gBAClC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;gBAC7C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS;oBAAE,OAAM;gBAE9C,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAA;gBAC5D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;gBAEjD,IAAI,SAAiB,CAAA;gBACrB,IAAI,CAAC;oBACH,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;gBAChD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,KAAK,CAAC,0BAA2B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;oBACzD,SAAQ;gBACV,CAAC;gBAED,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,CAAA;gBAEvE,IAAI,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;gBAC/C,OAAO,MAAM,EAAE,CAAC;oBACd,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;oBAC1E,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;oBAClC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;gBAC7C,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBACxC,IAAI,CAAC,MAAM;oBAAE,OAAM;gBACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;gBACxD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,MAAkB;QACvC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;YAAE,OAAM;QAEpD,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACxD,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACzB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC7C,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACvB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;YACnD,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACzB,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAA;QAC/G,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAA;QAC7B,IAAI,CAAC,YAAY,EAAE,EAAE,CAAA;IACvB,CAAC;CACF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Long } from 'bson';
|
|
2
|
+
import type { KakaoDeviceType } from '../types.js';
|
|
3
|
+
import type { LocoPacket } from './types.js';
|
|
4
|
+
export interface UploadToLocoOptions {
|
|
5
|
+
shipToken: string;
|
|
6
|
+
shipHost: string;
|
|
7
|
+
shipPort: number;
|
|
8
|
+
chatId: Long;
|
|
9
|
+
msgType: number;
|
|
10
|
+
userId: string;
|
|
11
|
+
filename: string;
|
|
12
|
+
data: Uint8Array;
|
|
13
|
+
width?: number;
|
|
14
|
+
height?: number;
|
|
15
|
+
deviceType: KakaoDeviceType;
|
|
16
|
+
onProgress?: (sent: number, total: number) => void;
|
|
17
|
+
}
|
|
18
|
+
export interface UploadToLocoResult {
|
|
19
|
+
completePacket: LocoPacket | null;
|
|
20
|
+
postStatusCode: number;
|
|
21
|
+
postOffset: number;
|
|
22
|
+
}
|
|
23
|
+
export declare function uploadMediaToLoco(opts: UploadToLocoOptions): Promise<UploadToLocoResult>;
|
|
24
|
+
export declare function uploadMultiMediaEntry(opts: UploadToLocoOptions): Promise<UploadToLocoResult>;
|
|
25
|
+
//# sourceMappingURL=media-uploader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-uploader.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/kakaotalk/protocol/media-uploader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAG/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,IAAI,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,UAAU,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,eAAe,CAAA;IAC3B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACnD;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,UAAU,GAAG,IAAI,CAAA;IACjC,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;CACnB;AAeD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAE9F;AAMD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAElG"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { Long } from 'bson';
|
|
2
|
+
import { MCCMNC, getLocoDeviceConfig } from './config.js';
|
|
3
|
+
import { LocoConnection } from './connection.js';
|
|
4
|
+
const DEFAULT_NETWORK_TYPE = 0;
|
|
5
|
+
const DEFAULT_COMPLETE_TIMEOUT_MS = 60_000;
|
|
6
|
+
// Drives the SHIP → connect → POST → stream → COMPLETE pipeline that KakaoTalk
|
|
7
|
+
// uses for chat-media uploads. The caller has already done SHIP on the main
|
|
8
|
+
// session and received {k, vh, p}; this opens a dedicated TCP+LOCO connection
|
|
9
|
+
// to (vh, p), sends POST with the ticket + chat metadata, streams the raw file
|
|
10
|
+
// bytes, and waits for the server's COMPLETE push that triggers the actual
|
|
11
|
+
// chat-message registration.
|
|
12
|
+
//
|
|
13
|
+
// Field names (u/k/t/s/c/mid/w/h/mm/nt/os/av/f/ns) match the APK's
|
|
14
|
+
// `SR/g0.java` (PostJob) verbatim. The COMPLETE handshake is a server-pushed
|
|
15
|
+
// packet whose body contains the resulting chatLog struct.
|
|
16
|
+
export async function uploadMediaToLoco(opts) {
|
|
17
|
+
return runPostStreamComplete(opts, 'POST');
|
|
18
|
+
}
|
|
19
|
+
// Single-entry MPOST upload — runs the same connect → POST → stream → COMPLETE
|
|
20
|
+
// pipeline as uploadMediaToLoco but with MPOST as the opcode (used after MSHIP
|
|
21
|
+
// for each entry in a multi-photo batch). Callers fan-out across all entries
|
|
22
|
+
// in parallel and then issue one FORWARD to register the gallery message.
|
|
23
|
+
export async function uploadMultiMediaEntry(opts) {
|
|
24
|
+
return runPostStreamComplete(opts, 'MPOST');
|
|
25
|
+
}
|
|
26
|
+
async function runPostStreamComplete(opts, opcode) {
|
|
27
|
+
const device = getLocoDeviceConfig(opts.deviceType);
|
|
28
|
+
const conn = new LocoConnection();
|
|
29
|
+
await conn.connectSecure(opts.shipHost, opts.shipPort);
|
|
30
|
+
const totalSize = opts.data.byteLength;
|
|
31
|
+
let completeResolve = null;
|
|
32
|
+
let completeTimeout = null;
|
|
33
|
+
const completePromise = new Promise((resolve) => {
|
|
34
|
+
completeResolve = resolve;
|
|
35
|
+
completeTimeout = setTimeout(() => {
|
|
36
|
+
completeTimeout = null;
|
|
37
|
+
resolve(null);
|
|
38
|
+
}, DEFAULT_COMPLETE_TIMEOUT_MS);
|
|
39
|
+
});
|
|
40
|
+
conn.onPush((push) => {
|
|
41
|
+
if (push.method === 'COMPLETE' && completeResolve) {
|
|
42
|
+
if (completeTimeout) {
|
|
43
|
+
clearTimeout(completeTimeout);
|
|
44
|
+
completeTimeout = null;
|
|
45
|
+
}
|
|
46
|
+
completeResolve(push);
|
|
47
|
+
completeResolve = null;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
try {
|
|
51
|
+
const postBody = {
|
|
52
|
+
k: opts.shipToken,
|
|
53
|
+
s: totalSize,
|
|
54
|
+
t: opts.msgType,
|
|
55
|
+
u: Long.fromString(opts.userId),
|
|
56
|
+
os: device.os,
|
|
57
|
+
av: device.appVersion,
|
|
58
|
+
nt: DEFAULT_NETWORK_TYPE,
|
|
59
|
+
mm: MCCMNC,
|
|
60
|
+
};
|
|
61
|
+
if (opcode === 'POST') {
|
|
62
|
+
postBody.f = opts.filename;
|
|
63
|
+
postBody.c = opts.chatId;
|
|
64
|
+
postBody.mid = Long.ONE;
|
|
65
|
+
postBody.ns = true;
|
|
66
|
+
if (typeof opts.width === 'number')
|
|
67
|
+
postBody.w = opts.width;
|
|
68
|
+
if (typeof opts.height === 'number')
|
|
69
|
+
postBody.h = opts.height;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
postBody.dt = 0;
|
|
73
|
+
postBody.scp = 0;
|
|
74
|
+
}
|
|
75
|
+
const postResp = await conn.sendPacket(opcode, postBody);
|
|
76
|
+
const postOffsetRaw = postResp.body.o;
|
|
77
|
+
const postOffset = typeof postOffsetRaw === 'number' ? postOffsetRaw : 0;
|
|
78
|
+
const bytesToSend = opts.data.subarray(postOffset);
|
|
79
|
+
if (bytesToSend.length > 0) {
|
|
80
|
+
await conn.writeRaw(Buffer.from(bytesToSend));
|
|
81
|
+
opts.onProgress?.(totalSize, totalSize);
|
|
82
|
+
}
|
|
83
|
+
const completePacket = await completePromise;
|
|
84
|
+
const postStatusCode = postResp.statusCode;
|
|
85
|
+
return {
|
|
86
|
+
completePacket,
|
|
87
|
+
postStatusCode,
|
|
88
|
+
postOffset,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
if (completeTimeout) {
|
|
93
|
+
clearTimeout(completeTimeout);
|
|
94
|
+
completeTimeout = null;
|
|
95
|
+
}
|
|
96
|
+
conn.close();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=media-uploader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-uploader.js","sourceRoot":"","sources":["../../../../../src/platforms/kakaotalk/protocol/media-uploader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Long } from 'bson';
|
|
2
2
|
import type { KakaoDeviceType } from '../types.js';
|
|
3
|
+
import { LocoConnection } from './connection.js';
|
|
3
4
|
import type { LoginListResponse, LocoPacket, SyncState } from './types.js';
|
|
4
5
|
export declare class LocoSession {
|
|
5
6
|
private connection;
|
|
@@ -10,6 +11,11 @@ export declare class LocoSession {
|
|
|
10
11
|
login(oauthToken: string, userId: string, deviceUuid: string, syncState?: SyncState, deviceType?: KakaoDeviceType): Promise<LoginListResponse>;
|
|
11
12
|
private bookAndCheckin;
|
|
12
13
|
sendMessage(chatId: Long, text: string): Promise<LocoPacket>;
|
|
14
|
+
sendAttachment(chatId: Long, type: number, extra: Record<string, unknown>, caption?: string): Promise<LocoPacket>;
|
|
15
|
+
shipMedia(chatId: Long, type: number, size: number, checksum: string, extension: string): Promise<LocoPacket>;
|
|
16
|
+
shipMultiMedia(chatId: Long, type: number, sizes: number[], checksums: string[], extensions: string[]): Promise<LocoPacket>;
|
|
17
|
+
forwardChat(chatId: Long, type: number, extra: Record<string, unknown>, caption?: string): Promise<LocoPacket>;
|
|
18
|
+
getConnection(): LocoConnection | null;
|
|
13
19
|
syncMessages(chatId: Long, count?: number, cursor?: Long, maxLogId?: Long): Promise<LocoPacket>;
|
|
14
20
|
getChatLogs(chatIds: Long[], sinces: Long[]): Promise<LocoPacket>;
|
|
15
21
|
getChatInfo(chatId: Long): Promise<LocoPacket>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/kakaotalk/protocol/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,IAAI,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/kakaotalk/protocol/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -86,6 +86,67 @@ export class LocoSession {
|
|
|
86
86
|
noSeen: false,
|
|
87
87
|
});
|
|
88
88
|
}
|
|
89
|
+
// Sends a WRITE with non-text message_type plus the JSON-stringified `extra`
|
|
90
|
+
// payload that KakaoTalk clients render as the attachment (photo, file, etc).
|
|
91
|
+
// See types.ts → KakaoPhotoExtra / KakaoFileExtra for the per-type shape.
|
|
92
|
+
async sendAttachment(chatId, type, extra, caption = '') {
|
|
93
|
+
if (!this.connection)
|
|
94
|
+
throw new Error('Not connected');
|
|
95
|
+
return this.connection.sendPacket('WRITE', {
|
|
96
|
+
chatId,
|
|
97
|
+
msg: caption,
|
|
98
|
+
type,
|
|
99
|
+
noSeen: false,
|
|
100
|
+
extra: JSON.stringify(extra),
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
// SHIP — request a media-upload ticket. Reserves a slot on a media LOCO
|
|
104
|
+
// server and returns the token (k), host (vh), and port (p) the client must
|
|
105
|
+
// connect to next. Sent on the main session.
|
|
106
|
+
async shipMedia(chatId, type, size, checksum, extension) {
|
|
107
|
+
if (!this.connection)
|
|
108
|
+
throw new Error('Not connected');
|
|
109
|
+
const body = {
|
|
110
|
+
c: chatId,
|
|
111
|
+
t: type,
|
|
112
|
+
s: Long.fromNumber(size),
|
|
113
|
+
cs: checksum,
|
|
114
|
+
};
|
|
115
|
+
if (extension.length > 0)
|
|
116
|
+
body.e = extension;
|
|
117
|
+
return this.connection.sendPacket('SHIP', body);
|
|
118
|
+
}
|
|
119
|
+
// MSHIP — multi-file equivalent of SHIP. Per-file fields become parallel
|
|
120
|
+
// arrays (sl/csl/el) and the response carries kl/vhl/pl arrays the caller
|
|
121
|
+
// must fan out across — one MPOST connection per entry.
|
|
122
|
+
async shipMultiMedia(chatId, type, sizes, checksums, extensions) {
|
|
123
|
+
if (!this.connection)
|
|
124
|
+
throw new Error('Not connected');
|
|
125
|
+
return this.connection.sendPacket('MSHIP', {
|
|
126
|
+
c: chatId,
|
|
127
|
+
t: type,
|
|
128
|
+
sl: sizes.map((s) => Long.fromNumber(s)),
|
|
129
|
+
csl: checksums,
|
|
130
|
+
el: extensions,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
// FORWARD — used after MPOST: registers a multi-attachment chatlog as one
|
|
134
|
+
// message. Same shape as WRITE but the server routes the attachment to
|
|
135
|
+
// multi-media rendering (galleries, multi-photo posts).
|
|
136
|
+
async forwardChat(chatId, type, extra, caption = '') {
|
|
137
|
+
if (!this.connection)
|
|
138
|
+
throw new Error('Not connected');
|
|
139
|
+
return this.connection.sendPacket('FORWARD', {
|
|
140
|
+
chatId,
|
|
141
|
+
msg: caption,
|
|
142
|
+
type,
|
|
143
|
+
noSeen: false,
|
|
144
|
+
extra: JSON.stringify(extra),
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
getConnection() {
|
|
148
|
+
return this.connection;
|
|
149
|
+
}
|
|
89
150
|
async syncMessages(chatId, count = 20, cursor, maxLogId) {
|
|
90
151
|
if (!this.connection)
|
|
91
152
|
throw new Error('Not connected');
|