@mapier/imsg-sdk 0.1.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/LICENSE +21 -0
- package/README.md +68 -0
- package/dist/gateway/external-ids.d.ts +3 -0
- package/dist/gateway/external-ids.js +37 -0
- package/dist/gateway/external-ids.js.map +1 -0
- package/dist/gateway/fake.d.ts +161 -0
- package/dist/gateway/fake.js +870 -0
- package/dist/gateway/fake.js.map +1 -0
- package/dist/gateway/imsg.d.ts +77 -0
- package/dist/gateway/imsg.js +676 -0
- package/dist/gateway/imsg.js.map +1 -0
- package/dist/gateway/portable-chat.d.ts +65 -0
- package/dist/gateway/portable-chat.js +118 -0
- package/dist/gateway/portable-chat.js.map +1 -0
- package/dist/gateway/types.d.ts +169 -0
- package/dist/gateway/types.js +16 -0
- package/dist/gateway/types.js.map +1 -0
- package/dist/imsg/binary.d.ts +1 -0
- package/dist/imsg/binary.js +4 -0
- package/dist/imsg/binary.js.map +1 -0
- package/dist/imsg/react.d.ts +2 -0
- package/dist/imsg/react.js +24 -0
- package/dist/imsg/react.js.map +1 -0
- package/dist/imsg/rpc.d.ts +145 -0
- package/dist/imsg/rpc.js +227 -0
- package/dist/imsg/rpc.js.map +1 -0
- package/dist/imsg/status.d.ts +9 -0
- package/dist/imsg/status.js +37 -0
- package/dist/imsg/status.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/interactions/catalog.d.ts +2 -0
- package/dist/interactions/catalog.js +98 -0
- package/dist/interactions/catalog.js.map +1 -0
- package/dist/interactions/harness.d.ts +25 -0
- package/dist/interactions/harness.js +69 -0
- package/dist/interactions/harness.js.map +1 -0
- package/dist/interactions/index.d.ts +5 -0
- package/dist/interactions/index.js +5 -0
- package/dist/interactions/index.js.map +1 -0
- package/dist/interactions/registry.d.ts +9 -0
- package/dist/interactions/registry.js +33 -0
- package/dist/interactions/registry.js.map +1 -0
- package/dist/interactions/types.d.ts +28 -0
- package/dist/interactions/types.js +5 -0
- package/dist/interactions/types.js.map +1 -0
- package/dist/polls.d.ts +12 -0
- package/dist/polls.js +102 -0
- package/dist/polls.js.map +1 -0
- package/dist/runtime-report.d.ts +3 -0
- package/dist/runtime-report.js +10 -0
- package/dist/runtime-report.js.map +1 -0
- package/dist/types.d.ts +73 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imsg.js","sourceRoot":"","sources":["../../src/gateway/imsg.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { GroupChatResolution, GroupChatResolutionRequest } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The participant a DM GUID names.
|
|
4
|
+
*
|
|
5
|
+
* A DM GUID carries its peer structurally, so a caller never has to hand a raw
|
|
6
|
+
* handle to anything: the portable identifier IS the handle, already validated.
|
|
7
|
+
* Returns null when the value is not a canonical DM GUID.
|
|
8
|
+
*/
|
|
9
|
+
export declare function dmParticipantFromConversationExternalId(conversationExternalId: string): string | null;
|
|
10
|
+
export type DmChatResolution = {
|
|
11
|
+
status: 'resolved';
|
|
12
|
+
chatId: number;
|
|
13
|
+
conversationExternalId: string;
|
|
14
|
+
} | {
|
|
15
|
+
status: 'invalid_request';
|
|
16
|
+
} | {
|
|
17
|
+
status: 'participant_mismatch';
|
|
18
|
+
} | {
|
|
19
|
+
status: 'not_found';
|
|
20
|
+
} | {
|
|
21
|
+
status: 'identity_mismatch';
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Approve a DM only when two independently declared identities agree about it.
|
|
25
|
+
*
|
|
26
|
+
* The load-bearing check is `declaredParticipantExternalIds`, and it is easy to
|
|
27
|
+
* mistake for a redundant one: a DM GUID structurally encodes its peer, so the
|
|
28
|
+
* declared peer looks like a value already known. It is required precisely
|
|
29
|
+
* because the GUID encodes it. `resolveDmChat(peer)` returns the chat OF THAT
|
|
30
|
+
* PEER, whose `chat_guid` is `any;-;<peer>` by construction — so the round-trip
|
|
31
|
+
* below holds for EVERY canonical DM GUID, including a mistyped one that names a
|
|
32
|
+
* stranger just as validly. The round-trip is a consistency check on the Mac; it
|
|
33
|
+
* cannot be a check on the operator, because the peer it verifies is derived
|
|
34
|
+
* from the very GUID being verified.
|
|
35
|
+
*
|
|
36
|
+
* The second identity is what breaks that circle. It reaches this function from
|
|
37
|
+
* a different operator-supplied value, so a single mistyped digit in either one
|
|
38
|
+
* makes them disagree and the DM is refused. This mirrors the group arm, where
|
|
39
|
+
* the opaque 32-hex GUID carries no membership and the declared set is the
|
|
40
|
+
* independent channel.
|
|
41
|
+
*/
|
|
42
|
+
export declare function classifyDmChatResolution(input: {
|
|
43
|
+
conversationExternalId: string;
|
|
44
|
+
declaredParticipantExternalIds: readonly string[];
|
|
45
|
+
resolvedChatId: number | null;
|
|
46
|
+
resolvedConversationExternalId: string | null;
|
|
47
|
+
}): DmChatResolution;
|
|
48
|
+
export interface LocalGroupChatDescriptor {
|
|
49
|
+
chatId: number;
|
|
50
|
+
conversationExternalId: string;
|
|
51
|
+
participantExternalIds: readonly string[] | null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The comparison form for a participant identity.
|
|
55
|
+
*
|
|
56
|
+
* Exported so that every caller comparing two operator-supplied handles agrees
|
|
57
|
+
* on what "the same person" means: a raw `===` would read `Foo@Bar.com` and
|
|
58
|
+
* `foo@bar.com` as two different peers.
|
|
59
|
+
*/
|
|
60
|
+
export declare function normalizeParticipant(value: string): string;
|
|
61
|
+
export declare function classifyGroupChatResolution(input: {
|
|
62
|
+
request: GroupChatResolutionRequest;
|
|
63
|
+
directoryComplete: boolean;
|
|
64
|
+
groups: readonly LocalGroupChatDescriptor[];
|
|
65
|
+
}): GroupChatResolution;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { isImessageDmConversationExternalId, isImessageGroupConversationExternalId, isImessageParticipantExternalId, } from './external-ids.js';
|
|
2
|
+
const DM_GUID_PREFIX = 'any;-;';
|
|
3
|
+
/**
|
|
4
|
+
* The participant a DM GUID names.
|
|
5
|
+
*
|
|
6
|
+
* A DM GUID carries its peer structurally, so a caller never has to hand a raw
|
|
7
|
+
* handle to anything: the portable identifier IS the handle, already validated.
|
|
8
|
+
* Returns null when the value is not a canonical DM GUID.
|
|
9
|
+
*/
|
|
10
|
+
export function dmParticipantFromConversationExternalId(conversationExternalId) {
|
|
11
|
+
if (!isImessageDmConversationExternalId(conversationExternalId))
|
|
12
|
+
return null;
|
|
13
|
+
return conversationExternalId.slice(DM_GUID_PREFIX.length);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Approve a DM only when two independently declared identities agree about it.
|
|
17
|
+
*
|
|
18
|
+
* The load-bearing check is `declaredParticipantExternalIds`, and it is easy to
|
|
19
|
+
* mistake for a redundant one: a DM GUID structurally encodes its peer, so the
|
|
20
|
+
* declared peer looks like a value already known. It is required precisely
|
|
21
|
+
* because the GUID encodes it. `resolveDmChat(peer)` returns the chat OF THAT
|
|
22
|
+
* PEER, whose `chat_guid` is `any;-;<peer>` by construction — so the round-trip
|
|
23
|
+
* below holds for EVERY canonical DM GUID, including a mistyped one that names a
|
|
24
|
+
* stranger just as validly. The round-trip is a consistency check on the Mac; it
|
|
25
|
+
* cannot be a check on the operator, because the peer it verifies is derived
|
|
26
|
+
* from the very GUID being verified.
|
|
27
|
+
*
|
|
28
|
+
* The second identity is what breaks that circle. It reaches this function from
|
|
29
|
+
* a different operator-supplied value, so a single mistyped digit in either one
|
|
30
|
+
* makes them disagree and the DM is refused. This mirrors the group arm, where
|
|
31
|
+
* the opaque 32-hex GUID carries no membership and the declared set is the
|
|
32
|
+
* independent channel.
|
|
33
|
+
*/
|
|
34
|
+
export function classifyDmChatResolution(input) {
|
|
35
|
+
const participant = dmParticipantFromConversationExternalId(input.conversationExternalId);
|
|
36
|
+
if (participant === null)
|
|
37
|
+
return { status: 'invalid_request' };
|
|
38
|
+
const declared = normalizedSet(input.declaredParticipantExternalIds);
|
|
39
|
+
if (declared.length !== 1 || declared[0] !== normalizeParticipant(participant)) {
|
|
40
|
+
return { status: 'participant_mismatch' };
|
|
41
|
+
}
|
|
42
|
+
if (input.resolvedChatId === null)
|
|
43
|
+
return { status: 'not_found' };
|
|
44
|
+
// A Mac that answers `resolveDmChat(peer)` with a chat reporting some other
|
|
45
|
+
// peer's GUID is lying, and an unreadable identity is a mismatch rather than a
|
|
46
|
+
// pass: a DM whose GUID could not be read has not been proven to be the
|
|
47
|
+
// requested one. This catches the binary, never the operator.
|
|
48
|
+
if (input.resolvedConversationExternalId !== input.conversationExternalId)
|
|
49
|
+
return { status: 'identity_mismatch' };
|
|
50
|
+
return { status: 'resolved', chatId: input.resolvedChatId, conversationExternalId: input.conversationExternalId };
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The comparison form for a participant identity.
|
|
54
|
+
*
|
|
55
|
+
* Exported so that every caller comparing two operator-supplied handles agrees
|
|
56
|
+
* on what "the same person" means: a raw `===` would read `Foo@Bar.com` and
|
|
57
|
+
* `foo@bar.com` as two different peers.
|
|
58
|
+
*/
|
|
59
|
+
export function normalizeParticipant(value) {
|
|
60
|
+
return value.trim().toLowerCase().normalize('NFC');
|
|
61
|
+
}
|
|
62
|
+
function normalizedSet(values) {
|
|
63
|
+
return values.map(normalizeParticipant).sort();
|
|
64
|
+
}
|
|
65
|
+
function hasDuplicates(values) {
|
|
66
|
+
return new Set(values).size !== values.length;
|
|
67
|
+
}
|
|
68
|
+
function sameValues(left, right) {
|
|
69
|
+
return left.length === right.length && left.every((value, index) => value === right[index]);
|
|
70
|
+
}
|
|
71
|
+
function requestIsValid(request) {
|
|
72
|
+
if (!isImessageGroupConversationExternalId(request.conversationExternalId))
|
|
73
|
+
return false;
|
|
74
|
+
if (request.expectedParticipantExternalIds.length === 0)
|
|
75
|
+
return false;
|
|
76
|
+
const expected = normalizedSet(request.expectedParticipantExternalIds);
|
|
77
|
+
const excluded = normalizedSet(request.excludedParticipantExternalIds ?? []);
|
|
78
|
+
if (hasDuplicates(expected) || hasDuplicates(excluded))
|
|
79
|
+
return false;
|
|
80
|
+
if (![...expected, ...excluded].every((value) => isImessageParticipantExternalId(value))) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
const excludedSet = new Set(excluded);
|
|
84
|
+
return expected.every((value) => !excludedSet.has(value));
|
|
85
|
+
}
|
|
86
|
+
// The directory must be complete before any match is accepted: finding one
|
|
87
|
+
// row in a partial scan does not prove uniqueness. Participant equality is
|
|
88
|
+
// evaluated only after pod/self identities have been removed.
|
|
89
|
+
export function classifyGroupChatResolution(input) {
|
|
90
|
+
if (!requestIsValid(input.request))
|
|
91
|
+
return { status: 'invalid_request' };
|
|
92
|
+
if (!input.directoryComplete)
|
|
93
|
+
return { status: 'directory_incomplete' };
|
|
94
|
+
const matches = input.groups.filter((group) => group.conversationExternalId === input.request.conversationExternalId);
|
|
95
|
+
if (matches.length === 0)
|
|
96
|
+
return { status: 'not_found' };
|
|
97
|
+
if (matches.length !== 1)
|
|
98
|
+
return { status: 'ambiguous', matchCount: matches.length };
|
|
99
|
+
const reported = matches[0].participantExternalIds;
|
|
100
|
+
// Unknown membership is its own outcome. Folding it into participant_mismatch
|
|
101
|
+
// would turn "the adapter could not see the members" into "these are the wrong
|
|
102
|
+
// members", which is exactly how ops-chat resolution would fail closed for a
|
|
103
|
+
// correct chat and take matching down without saying why.
|
|
104
|
+
if (reported === null)
|
|
105
|
+
return { status: 'participant_directory_unavailable' };
|
|
106
|
+
const excluded = new Set(normalizedSet(input.request.excludedParticipantExternalIds ?? []));
|
|
107
|
+
const actual = normalizedSet(reported).filter((value) => !excluded.has(value));
|
|
108
|
+
const expected = normalizedSet(input.request.expectedParticipantExternalIds);
|
|
109
|
+
if (hasDuplicates(actual) || !sameValues(actual, expected)) {
|
|
110
|
+
return { status: 'participant_mismatch', actualParticipantCount: actual.length };
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
status: 'resolved',
|
|
114
|
+
chatId: matches[0].chatId,
|
|
115
|
+
conversationExternalId: input.request.conversationExternalId,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=portable-chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portable-chat.js","sourceRoot":"","sources":["../../src/gateway/portable-chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import type { ImsgMessage, SendResult } from '../types.js';
|
|
2
|
+
export type { ImsgMessage, SendResult };
|
|
3
|
+
export declare const REACTIONS: readonly ["love", "like", "dislike", "laugh", "emphasis", "question"];
|
|
4
|
+
export type Reaction = (typeof REACTIONS)[number];
|
|
5
|
+
export declare function toReactionNoteType(type: string): Reaction | 'custom';
|
|
6
|
+
export type GatewayEvent = ImsgMessage;
|
|
7
|
+
export type SendTarget = {
|
|
8
|
+
chatId: number;
|
|
9
|
+
} | {
|
|
10
|
+
to: string;
|
|
11
|
+
};
|
|
12
|
+
export interface ReactResult {
|
|
13
|
+
ok: boolean;
|
|
14
|
+
skipped?: 'already-reacted' | 'stale-target' | 'not-reacted';
|
|
15
|
+
}
|
|
16
|
+
export interface ReactionNote {
|
|
17
|
+
id: number;
|
|
18
|
+
reaction: Reaction | 'custom';
|
|
19
|
+
emoji?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface GroupChatResolutionRequest {
|
|
22
|
+
conversationExternalId: string;
|
|
23
|
+
expectedParticipantExternalIds: readonly string[];
|
|
24
|
+
excludedParticipantExternalIds?: readonly string[];
|
|
25
|
+
}
|
|
26
|
+
export interface GatewayChat {
|
|
27
|
+
chatId: number;
|
|
28
|
+
conversationExternalId: string;
|
|
29
|
+
isGroup: boolean;
|
|
30
|
+
participantExternalIds: readonly string[];
|
|
31
|
+
lastMessageAt: string | null;
|
|
32
|
+
}
|
|
33
|
+
export interface GatewayHistoryRange {
|
|
34
|
+
startAt?: string;
|
|
35
|
+
endBefore?: string;
|
|
36
|
+
limit?: number;
|
|
37
|
+
includeAttachments?: boolean;
|
|
38
|
+
}
|
|
39
|
+
export type GroupChatResolution = {
|
|
40
|
+
status: 'resolved';
|
|
41
|
+
chatId: number;
|
|
42
|
+
conversationExternalId: string;
|
|
43
|
+
} | {
|
|
44
|
+
status: 'invalid_request';
|
|
45
|
+
} | {
|
|
46
|
+
status: 'directory_incomplete';
|
|
47
|
+
} | {
|
|
48
|
+
status: 'not_found';
|
|
49
|
+
} | {
|
|
50
|
+
status: 'ambiguous';
|
|
51
|
+
matchCount: number;
|
|
52
|
+
} | {
|
|
53
|
+
status: 'participant_directory_unavailable';
|
|
54
|
+
} | {
|
|
55
|
+
status: 'participant_mismatch';
|
|
56
|
+
actualParticipantCount: number;
|
|
57
|
+
};
|
|
58
|
+
export interface GatewayCapabilities {
|
|
59
|
+
emojiTapback: boolean;
|
|
60
|
+
stickerSend: boolean;
|
|
61
|
+
groupPhoto: boolean;
|
|
62
|
+
groupParticipants: boolean;
|
|
63
|
+
namePhotoSharing: boolean;
|
|
64
|
+
}
|
|
65
|
+
export declare const PATCHED_GATEWAY_CAPABILITIES: GatewayCapabilities;
|
|
66
|
+
export interface NamePhotoShareResult {
|
|
67
|
+
ok: boolean;
|
|
68
|
+
skipped?: 'not-offered';
|
|
69
|
+
effectStarted?: boolean;
|
|
70
|
+
}
|
|
71
|
+
export type SendState = 'pending' | 'sent' | 'delivered' | 'failed';
|
|
72
|
+
export interface SendStatusFields {
|
|
73
|
+
is_sent: boolean;
|
|
74
|
+
is_delivered: boolean;
|
|
75
|
+
is_finished: boolean;
|
|
76
|
+
error: number;
|
|
77
|
+
date_delivered: string | null;
|
|
78
|
+
date_read: string | null;
|
|
79
|
+
is_delayed: boolean;
|
|
80
|
+
is_prepared: boolean;
|
|
81
|
+
is_pending_satellite_send: boolean;
|
|
82
|
+
was_downgraded: boolean;
|
|
83
|
+
}
|
|
84
|
+
export interface SendStatus {
|
|
85
|
+
ok: boolean;
|
|
86
|
+
guid: string;
|
|
87
|
+
send_state: SendState;
|
|
88
|
+
service: string | null;
|
|
89
|
+
delivered_at: string | null;
|
|
90
|
+
date_read: string | null;
|
|
91
|
+
is_read: boolean;
|
|
92
|
+
status_fields: SendStatusFields | null;
|
|
93
|
+
}
|
|
94
|
+
export interface HandleCheck {
|
|
95
|
+
ok: boolean;
|
|
96
|
+
available: boolean;
|
|
97
|
+
idStatus: number;
|
|
98
|
+
destination: string;
|
|
99
|
+
service: 'iMessage';
|
|
100
|
+
aliasType: 'phone' | 'email' | null;
|
|
101
|
+
address: string;
|
|
102
|
+
}
|
|
103
|
+
export interface Gateway {
|
|
104
|
+
readonly capabilities: GatewayCapabilities;
|
|
105
|
+
subscribe(sinceId?: number): AsyncIterable<GatewayEvent>;
|
|
106
|
+
history(chatId: number, limit?: number): Promise<ImsgMessage[]>;
|
|
107
|
+
listChats(limit?: number): Promise<GatewayChat[]>;
|
|
108
|
+
historyRange(chatId: number, range: GatewayHistoryRange): Promise<ImsgMessage[]>;
|
|
109
|
+
send(target: SendTarget, text: string): Promise<SendResult>;
|
|
110
|
+
react(chatId: number, reaction: Reaction, expectedGuid?: string): Promise<ReactResult>;
|
|
111
|
+
createGroup(handles: string[], firstMessage: string): Promise<{
|
|
112
|
+
chatId: number;
|
|
113
|
+
}>;
|
|
114
|
+
recentReactions(chatId: number, limit?: number): Promise<ReactionNote[]>;
|
|
115
|
+
resolveDmChat(handle: string): Promise<number | null>;
|
|
116
|
+
resolveGroupChat(request: GroupChatResolutionRequest): Promise<GroupChatResolution>;
|
|
117
|
+
sendStatus(guid: string): Promise<SendStatus>;
|
|
118
|
+
checkHandle(address: string, opts?: {
|
|
119
|
+
aliasType?: 'phone' | 'email';
|
|
120
|
+
}): Promise<HandleCheck>;
|
|
121
|
+
tapback(chatId: number, targetGuid: string, reaction: Reaction, remove?: boolean): Promise<ReactResult>;
|
|
122
|
+
emojiTapback(chatId: number, targetGuid: string, emoji: string, remove?: boolean): Promise<ReactResult>;
|
|
123
|
+
sendRich(chatId: number, text: string, opts?: {
|
|
124
|
+
effect?: string;
|
|
125
|
+
replyToGuid?: string;
|
|
126
|
+
subject?: string;
|
|
127
|
+
}): Promise<SendResult>;
|
|
128
|
+
sendAttachment(chatId: number, filePath: string, opts?: {
|
|
129
|
+
audio?: boolean;
|
|
130
|
+
replyToGuid?: string;
|
|
131
|
+
}): Promise<SendResult>;
|
|
132
|
+
sendSticker(chatId: number, filePath: string, opts?: {
|
|
133
|
+
attachToGuid?: string;
|
|
134
|
+
partIndex?: number;
|
|
135
|
+
}): Promise<SendResult>;
|
|
136
|
+
sendPoll(chatId: number, question: string, options: string[]): Promise<SendResult>;
|
|
137
|
+
sendRichLink(chatId: number, url: string): Promise<SendResult>;
|
|
138
|
+
editMessage(chatId: number, targetGuid: string, text: string): Promise<{
|
|
139
|
+
ok: boolean;
|
|
140
|
+
}>;
|
|
141
|
+
unsendMessage(chatId: number, targetGuid: string): Promise<{
|
|
142
|
+
ok: boolean;
|
|
143
|
+
}>;
|
|
144
|
+
deleteMessage(chatId: number, targetGuid: string): Promise<{
|
|
145
|
+
ok: boolean;
|
|
146
|
+
}>;
|
|
147
|
+
setTyping(chatId: number, on: boolean): Promise<{
|
|
148
|
+
ok: boolean;
|
|
149
|
+
}>;
|
|
150
|
+
markRead(chatId: number): Promise<{
|
|
151
|
+
ok: boolean;
|
|
152
|
+
}>;
|
|
153
|
+
renameGroup(chatId: number, name: string): Promise<{
|
|
154
|
+
ok: boolean;
|
|
155
|
+
}>;
|
|
156
|
+
setGroupPhoto(chatId: number, filePath?: string): Promise<{
|
|
157
|
+
ok: boolean;
|
|
158
|
+
}>;
|
|
159
|
+
addParticipant(chatId: number, handle: string): Promise<{
|
|
160
|
+
ok: boolean;
|
|
161
|
+
}>;
|
|
162
|
+
removeParticipant(chatId: number, handle: string): Promise<{
|
|
163
|
+
ok: boolean;
|
|
164
|
+
}>;
|
|
165
|
+
leaveGroup(chatId: number): Promise<{
|
|
166
|
+
ok: boolean;
|
|
167
|
+
}>;
|
|
168
|
+
shareNamePhoto(chatId: number): Promise<NamePhotoShareResult>;
|
|
169
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// The tapback vocabulary belongs to the contract, not to any one
|
|
2
|
+
// implementation: react() below is typed on it, and FakeGateway has to honor
|
|
3
|
+
// the same six with no AppleScript in sight.
|
|
4
|
+
export const REACTIONS = ['love', 'like', 'dislike', 'laugh', 'emphasis', 'question'];
|
|
5
|
+
const KNOWN_REACTIONS = new Set(REACTIONS);
|
|
6
|
+
export function toReactionNoteType(type) {
|
|
7
|
+
return (KNOWN_REACTIONS.has(type) ? type : 'custom');
|
|
8
|
+
}
|
|
9
|
+
export const PATCHED_GATEWAY_CAPABILITIES = {
|
|
10
|
+
emojiTapback: true,
|
|
11
|
+
stickerSend: true,
|
|
12
|
+
groupPhoto: true,
|
|
13
|
+
groupParticipants: true,
|
|
14
|
+
namePhotoSharing: true,
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/gateway/types.ts"],"names":[],"mappings":"AAOA,iEAAiE;AACjE,6EAA6E;AAC7E,6CAA6C;AAC7C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAU,CAAC;AAG/F,MAAM,eAAe,GAAG,IAAI,GAAG,CAAS,SAAS,CAAC,CAAC;AAEnD,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAwB,CAAC;AAC9E,CAAC;AAwFD,MAAM,CAAC,MAAM,4BAA4B,GAAwB;IAC/D,YAAY,EAAE,IAAI;IAClB,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,IAAI;IAChB,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;CACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function imsgBinary(): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary.js","sourceRoot":"","sources":["../../src/imsg/binary.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU;IACxB,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
const REACT_SCRIPT = fileURLToPath(new URL('../../scripts/react.applescript', import.meta.url));
|
|
4
|
+
const TAPBACK_KEY = {
|
|
5
|
+
love: '1',
|
|
6
|
+
like: '2',
|
|
7
|
+
dislike: '3',
|
|
8
|
+
laugh: '4',
|
|
9
|
+
emphasis: '5',
|
|
10
|
+
question: '6',
|
|
11
|
+
};
|
|
12
|
+
// Our own Messages.app automation (scripts/react.applescript), NOT
|
|
13
|
+
// `imsg react`: that CLI fires Cmd+T into whatever chat is focused when its
|
|
14
|
+
// 0.25s search-select race loses — observed live 2026-07-02 tapbacking an
|
|
15
|
+
// unrelated thread. Ours verifies the focused window title against the
|
|
16
|
+
// handle and aborts (rejects here) instead of misfiring. DM-only; targets
|
|
17
|
+
// the most recent incoming message; needs an unlocked GUI session plus
|
|
18
|
+
// Accessibility + Automation permissions.
|
|
19
|
+
export function sendReaction(handle, reaction) {
|
|
20
|
+
return new Promise((resolve, reject) => {
|
|
21
|
+
execFile('osascript', [REACT_SCRIPT, handle, TAPBACK_KEY[reaction]], { timeout: 30_000 }, (err) => err ? reject(err) : resolve());
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=react.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../src/imsg/react.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,iCAAiC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEhG,MAAM,WAAW,GAA6B;IAC5C,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;IACV,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;CACd,CAAC;AAEF,mEAAmE;AACnE,4EAA4E;AAC5E,0EAA0E;AAC1E,uEAAuE;AACvE,0EAA0E;AAC1E,uEAAuE;AACvE,0CAA0C;AAC1C,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,QAAkB;IAC7D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,QAAQ,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAChG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import type { Reaction } from '../gateway/types.js';
|
|
2
|
+
import type { ImsgMessage, MessagePoll, SendResult } from '../types.js';
|
|
3
|
+
export interface Chat {
|
|
4
|
+
id: number;
|
|
5
|
+
guid?: string;
|
|
6
|
+
is_group: boolean;
|
|
7
|
+
participants?: string[];
|
|
8
|
+
last_message_at?: string;
|
|
9
|
+
display_name?: string;
|
|
10
|
+
}
|
|
11
|
+
interface NamePhotoStatus {
|
|
12
|
+
ok: boolean;
|
|
13
|
+
available: boolean;
|
|
14
|
+
should_offer?: boolean | null;
|
|
15
|
+
}
|
|
16
|
+
interface NamePhotoShare {
|
|
17
|
+
ok: boolean;
|
|
18
|
+
requested: boolean;
|
|
19
|
+
}
|
|
20
|
+
interface PollSendResponse {
|
|
21
|
+
guid: string;
|
|
22
|
+
message_id?: string;
|
|
23
|
+
poll?: MessagePoll;
|
|
24
|
+
}
|
|
25
|
+
export type SendState = 'pending' | 'sent' | 'delivered' | 'failed';
|
|
26
|
+
export interface SendStatusFields {
|
|
27
|
+
is_sent: boolean;
|
|
28
|
+
is_delivered: boolean;
|
|
29
|
+
is_finished: boolean;
|
|
30
|
+
error: number;
|
|
31
|
+
date_delivered: string | null;
|
|
32
|
+
date_read: string | null;
|
|
33
|
+
is_delayed: boolean;
|
|
34
|
+
is_prepared: boolean;
|
|
35
|
+
is_pending_satellite_send: boolean;
|
|
36
|
+
was_downgraded: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface SendStatusResponse {
|
|
39
|
+
ok: boolean;
|
|
40
|
+
guid: string;
|
|
41
|
+
send_state: SendState;
|
|
42
|
+
service: string;
|
|
43
|
+
checked_at: string;
|
|
44
|
+
delivered_at: string | null;
|
|
45
|
+
status_fields: SendStatusFields | null;
|
|
46
|
+
}
|
|
47
|
+
export interface HandleCheckResponse {
|
|
48
|
+
ok: boolean;
|
|
49
|
+
address: string;
|
|
50
|
+
alias_type: 'phone' | 'email';
|
|
51
|
+
destination: string;
|
|
52
|
+
id_status: number;
|
|
53
|
+
available: boolean;
|
|
54
|
+
service: 'iMessage';
|
|
55
|
+
}
|
|
56
|
+
export interface StickerSendResponse {
|
|
57
|
+
ok: boolean;
|
|
58
|
+
transfer_guid: string;
|
|
59
|
+
guid?: string;
|
|
60
|
+
message_id?: number;
|
|
61
|
+
}
|
|
62
|
+
export interface HistoryRangeOptions {
|
|
63
|
+
startAt?: string;
|
|
64
|
+
endBefore?: string;
|
|
65
|
+
limit?: number;
|
|
66
|
+
includeAttachments?: boolean;
|
|
67
|
+
}
|
|
68
|
+
export declare class ImsgRpc {
|
|
69
|
+
private onMessage;
|
|
70
|
+
private child;
|
|
71
|
+
private nextId;
|
|
72
|
+
private pending;
|
|
73
|
+
private stopping;
|
|
74
|
+
constructor(onMessage: (msg: ImsgMessage) => void, onExit: (code: number | null) => void);
|
|
75
|
+
private handleLine;
|
|
76
|
+
request<T>(method: string, params?: object): Promise<T>;
|
|
77
|
+
subscribe(sinceRowid?: number): Promise<number>;
|
|
78
|
+
send(target: {
|
|
79
|
+
chatId: number;
|
|
80
|
+
} | {
|
|
81
|
+
to: string;
|
|
82
|
+
}, text: string): Promise<SendResult>;
|
|
83
|
+
history(chatId: number, limit?: number): Promise<ImsgMessage[]>;
|
|
84
|
+
historyRange(chatId: number, options: HistoryRangeOptions): Promise<ImsgMessage[]>;
|
|
85
|
+
chats(limit?: number): Promise<Chat[]>;
|
|
86
|
+
tapback(chatId: number, targetGuid: string, reaction: Reaction, remove?: boolean): Promise<{
|
|
87
|
+
ok: boolean;
|
|
88
|
+
}>;
|
|
89
|
+
emojiTapback(chatId: number, targetGuid: string, emoji: string, remove?: boolean): Promise<{
|
|
90
|
+
ok: boolean;
|
|
91
|
+
}>;
|
|
92
|
+
sendRich(chatId: number, text: string, opts?: {
|
|
93
|
+
effect?: string;
|
|
94
|
+
replyToGuid?: string;
|
|
95
|
+
subject?: string;
|
|
96
|
+
}): Promise<SendResult>;
|
|
97
|
+
sendAttachment(chatId: number, filePath: string, opts?: {
|
|
98
|
+
audio?: boolean;
|
|
99
|
+
replyToGuid?: string;
|
|
100
|
+
}): Promise<SendResult>;
|
|
101
|
+
messageSendStatus(guid: string): Promise<SendStatusResponse>;
|
|
102
|
+
checkHandle(address: string, opts?: {
|
|
103
|
+
aliasType?: 'phone' | 'email';
|
|
104
|
+
}): Promise<HandleCheckResponse>;
|
|
105
|
+
sendSticker(chatId: number, filePath: string, opts?: {
|
|
106
|
+
attachToGuid?: string;
|
|
107
|
+
partIndex?: number;
|
|
108
|
+
}): Promise<StickerSendResponse>;
|
|
109
|
+
sendPoll(chatId: number, question: string, options: string[]): Promise<PollSendResponse>;
|
|
110
|
+
sendRichLink(chatId: number, url: string): Promise<SendResult>;
|
|
111
|
+
editMessage(chatId: number, targetGuid: string, text: string): Promise<{
|
|
112
|
+
ok: boolean;
|
|
113
|
+
}>;
|
|
114
|
+
unsendMessage(chatId: number, targetGuid: string): Promise<{
|
|
115
|
+
ok: boolean;
|
|
116
|
+
}>;
|
|
117
|
+
deleteMessage(chatId: number, targetGuid: string): Promise<{
|
|
118
|
+
ok: boolean;
|
|
119
|
+
}>;
|
|
120
|
+
setTyping(chatId: number, on: boolean): Promise<{
|
|
121
|
+
ok: boolean;
|
|
122
|
+
}>;
|
|
123
|
+
markRead(chatId: number): Promise<{
|
|
124
|
+
ok: boolean;
|
|
125
|
+
}>;
|
|
126
|
+
renameGroup(chatId: number, name: string): Promise<{
|
|
127
|
+
ok: boolean;
|
|
128
|
+
}>;
|
|
129
|
+
setGroupPhoto(chatId: number, filePath?: string): Promise<{
|
|
130
|
+
ok: boolean;
|
|
131
|
+
}>;
|
|
132
|
+
addParticipant(chatId: number, handle: string): Promise<{
|
|
133
|
+
ok: boolean;
|
|
134
|
+
}>;
|
|
135
|
+
removeParticipant(chatId: number, handle: string): Promise<{
|
|
136
|
+
ok: boolean;
|
|
137
|
+
}>;
|
|
138
|
+
leaveGroup(chatId: number): Promise<{
|
|
139
|
+
ok: boolean;
|
|
140
|
+
}>;
|
|
141
|
+
namePhotoStatus(chatId: number): Promise<NamePhotoStatus>;
|
|
142
|
+
shareNamePhoto(chatId: number): Promise<NamePhotoShare>;
|
|
143
|
+
stop(): void;
|
|
144
|
+
}
|
|
145
|
+
export {};
|