@elizaos/plugin-imessage 2.0.0-beta.1 → 2.0.3-beta.2

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 (56) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +13 -18
  3. package/auto-enable.ts +1 -1
  4. package/package.json +21 -4
  5. package/dist/accounts.d.ts +0 -135
  6. package/dist/accounts.d.ts.map +0 -1
  7. package/dist/accounts.js +0 -209
  8. package/dist/accounts.js.map +0 -1
  9. package/dist/api/bluebubbles-routes.d.ts +0 -10
  10. package/dist/api/bluebubbles-routes.d.ts.map +0 -1
  11. package/dist/api/bluebubbles-routes.js +0 -132
  12. package/dist/api/bluebubbles-routes.js.map +0 -1
  13. package/dist/api/imessage-routes.d.ts +0 -80
  14. package/dist/api/imessage-routes.d.ts.map +0 -1
  15. package/dist/api/imessage-routes.js +0 -230
  16. package/dist/api/imessage-routes.js.map +0 -1
  17. package/dist/chatdb-reader.d.ts +0 -240
  18. package/dist/chatdb-reader.d.ts.map +0 -1
  19. package/dist/chatdb-reader.js +0 -647
  20. package/dist/chatdb-reader.js.map +0 -1
  21. package/dist/config.d.ts +0 -60
  22. package/dist/config.d.ts.map +0 -1
  23. package/dist/config.js +0 -8
  24. package/dist/config.js.map +0 -1
  25. package/dist/connector-account-provider.d.ts +0 -18
  26. package/dist/connector-account-provider.d.ts.map +0 -1
  27. package/dist/connector-account-provider.js +0 -83
  28. package/dist/connector-account-provider.js.map +0 -1
  29. package/dist/contacts-reader.d.ts +0 -147
  30. package/dist/contacts-reader.d.ts.map +0 -1
  31. package/dist/contacts-reader.js +0 -481
  32. package/dist/contacts-reader.js.map +0 -1
  33. package/dist/index.d.ts +0 -23
  34. package/dist/index.d.ts.map +0 -1
  35. package/dist/index.js +0 -78
  36. package/dist/index.js.map +0 -1
  37. package/dist/providers/index.d.ts +0 -4
  38. package/dist/providers/index.d.ts.map +0 -1
  39. package/dist/providers/index.js +0 -5
  40. package/dist/providers/index.js.map +0 -1
  41. package/dist/rpc.d.ts +0 -206
  42. package/dist/rpc.d.ts.map +0 -1
  43. package/dist/rpc.js +0 -393
  44. package/dist/rpc.js.map +0 -1
  45. package/dist/service.d.ts +0 -266
  46. package/dist/service.d.ts.map +0 -1
  47. package/dist/service.js +0 -1694
  48. package/dist/service.js.map +0 -1
  49. package/dist/setup-routes.d.ts +0 -38
  50. package/dist/setup-routes.d.ts.map +0 -1
  51. package/dist/setup-routes.js +0 -322
  52. package/dist/setup-routes.js.map +0 -1
  53. package/dist/types.d.ts +0 -192
  54. package/dist/types.d.ts.map +0 -1
  55. package/dist/types.js +0 -138
  56. package/dist/types.js.map +0 -1
package/dist/types.d.ts DELETED
@@ -1,192 +0,0 @@
1
- /**
2
- * Type definitions for the iMessage plugin.
3
- */
4
- import type { Service } from "@elizaos/core";
5
- /** Maximum message length for iMessage */
6
- export declare const MAX_IMESSAGE_MESSAGE_LENGTH = 4000;
7
- /** Default poll interval in ms */
8
- export declare const DEFAULT_POLL_INTERVAL_MS = 5000;
9
- /** iMessage service name constant */
10
- export declare const IMESSAGE_SERVICE_NAME = "imessage";
11
- /**
12
- * Event types emitted by the iMessage plugin
13
- */
14
- export declare const IMessageEventTypes: {
15
- readonly MESSAGE_RECEIVED: "IMESSAGE_MESSAGE_RECEIVED";
16
- readonly MESSAGE_SENT: "IMESSAGE_MESSAGE_SENT";
17
- readonly REACTION_RECEIVED: "IMESSAGE_REACTION_RECEIVED";
18
- readonly SYSTEM_EVENT: "IMESSAGE_SYSTEM_EVENT";
19
- readonly CONNECTION_READY: "IMESSAGE_CONNECTION_READY";
20
- readonly ERROR: "IMESSAGE_ERROR";
21
- };
22
- export type IMessageEventType = (typeof IMessageEventTypes)[keyof typeof IMessageEventTypes];
23
- /**
24
- * iMessage chat types
25
- */
26
- export type IMessageChatType = "direct" | "group";
27
- /**
28
- * Configuration settings for the iMessage plugin
29
- */
30
- export interface IMessageSettings {
31
- /** Path to iMessage CLI tool */
32
- cliPath: string;
33
- /** Path to iMessage database */
34
- dbPath?: string;
35
- /** Polling interval in ms */
36
- pollIntervalMs: number;
37
- /** DM policy */
38
- dmPolicy: "open" | "pairing" | "allowlist" | "disabled";
39
- /** Group policy */
40
- groupPolicy: "open" | "allowlist" | "disabled";
41
- /** Handles/phone numbers for allowlist */
42
- allowFrom: string[];
43
- /** Enable/disable the plugin */
44
- enabled: boolean;
45
- }
46
- /**
47
- * iMessage contact
48
- */
49
- export interface IMessageContact {
50
- /** Handle (phone number or email) */
51
- handle: string;
52
- /** Display name */
53
- displayName?: string;
54
- /** Is this a phone number? */
55
- isPhoneNumber: boolean;
56
- }
57
- /**
58
- * iMessage chat
59
- */
60
- export interface IMessageChat {
61
- /** Chat ID */
62
- chatId: string;
63
- /** Chat type */
64
- chatType: IMessageChatType;
65
- /** Display name */
66
- displayName?: string;
67
- /** Participants */
68
- participants: IMessageContact[];
69
- }
70
- /**
71
- * iMessage message
72
- */
73
- export interface IMessageMessage {
74
- /** Message ID (ROWID) */
75
- id: string;
76
- /** Message text */
77
- text: string;
78
- /** Sender handle */
79
- handle: string;
80
- /** Chat ID */
81
- chatId: string;
82
- /** Timestamp */
83
- timestamp: number;
84
- /** Is from me */
85
- isFromMe: boolean;
86
- /** Has attachments */
87
- hasAttachments: boolean;
88
- /** Attachment paths */
89
- attachmentPaths?: string[];
90
- }
91
- export interface IMessageListMessagesOptions {
92
- /** Return only messages from this chat identifier. */
93
- chatId?: string;
94
- /** Maximum number of rows to return. */
95
- limit?: number;
96
- }
97
- /**
98
- * Options for sending a message
99
- */
100
- export interface IMessageSendOptions {
101
- /** Connector account ID. iMessage currently supports only the local default account. */
102
- accountId?: string;
103
- /** Media URL or path to attach */
104
- mediaUrl?: string;
105
- /** Max bytes for media */
106
- maxBytes?: number;
107
- }
108
- /**
109
- * Result from sending a message
110
- */
111
- export interface IMessageSendResult {
112
- success: boolean;
113
- messageId?: string;
114
- chatId?: string;
115
- error?: string;
116
- }
117
- export interface IMessagePermissionAction {
118
- type: "full_disk_access";
119
- label: string;
120
- url: string;
121
- instructions: string[];
122
- }
123
- export interface IMessageServiceStatus {
124
- available: boolean;
125
- connected: boolean;
126
- chatDbAvailable: boolean;
127
- sendOnly: boolean;
128
- chatDbPath: string;
129
- reason: string | null;
130
- permissionAction: IMessagePermissionAction | null;
131
- }
132
- /**
133
- * Service interface for iMessage
134
- */
135
- export interface IIMessageService extends Service {
136
- /** Check if the service is connected */
137
- isConnected(): boolean;
138
- /** Get structured readiness for UI/API callers */
139
- getStatus(): IMessageServiceStatus;
140
- /** Check if running on macOS */
141
- isMacOS(): boolean;
142
- /** Send a message */
143
- sendMessage(to: string, text: string, options?: IMessageSendOptions): Promise<IMessageSendResult>;
144
- /** Get recent messages */
145
- getRecentMessages(limit?: number): Promise<IMessageMessage[]>;
146
- /** List newest messages, optionally filtered to one chat. */
147
- getMessages(options?: IMessageListMessagesOptions): Promise<IMessageMessage[]>;
148
- /** Get chats */
149
- getChats(): Promise<IMessageChat[]>;
150
- }
151
- /**
152
- * iMessage plugin errors
153
- */
154
- export declare class IMessagePluginError extends Error {
155
- readonly code: string;
156
- readonly details?: Record<string, unknown> | undefined;
157
- constructor(message: string, code: string, details?: Record<string, unknown> | undefined);
158
- }
159
- export declare class IMessageConfigurationError extends IMessagePluginError {
160
- constructor(message: string, setting?: string);
161
- }
162
- export declare class IMessageNotSupportedError extends IMessagePluginError {
163
- constructor(message?: string);
164
- }
165
- export declare class IMessageCliError extends IMessagePluginError {
166
- constructor(message: string, exitCode?: number);
167
- }
168
- /**
169
- * Check if a string looks like a phone number
170
- */
171
- export declare function isPhoneNumber(input: string): boolean;
172
- /**
173
- * Check if a string looks like an email
174
- */
175
- export declare function isEmail(input: string): boolean;
176
- /**
177
- * Check if a string is a valid iMessage target (phone or email)
178
- */
179
- export declare function isValidIMessageTarget(target: string): boolean;
180
- /**
181
- * Normalize an iMessage target
182
- */
183
- export declare function normalizeIMessageTarget(target: string): string | null;
184
- /**
185
- * Format a phone number for iMessage
186
- */
187
- export declare function formatPhoneNumber(phone: string): string;
188
- /**
189
- * Split text for iMessage
190
- */
191
- export declare function splitMessageForIMessage(text: string, maxLength?: number): string[];
192
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js DELETED
@@ -1,138 +0,0 @@
1
- /**
2
- * Type definitions for the iMessage plugin.
3
- */
4
- /** Maximum message length for iMessage */
5
- export const MAX_IMESSAGE_MESSAGE_LENGTH = 4000;
6
- /** Default poll interval in ms */
7
- export const DEFAULT_POLL_INTERVAL_MS = 5000;
8
- /** iMessage service name constant */
9
- export const IMESSAGE_SERVICE_NAME = "imessage";
10
- /**
11
- * Event types emitted by the iMessage plugin
12
- */
13
- export const IMessageEventTypes = {
14
- MESSAGE_RECEIVED: "IMESSAGE_MESSAGE_RECEIVED",
15
- MESSAGE_SENT: "IMESSAGE_MESSAGE_SENT",
16
- REACTION_RECEIVED: "IMESSAGE_REACTION_RECEIVED",
17
- SYSTEM_EVENT: "IMESSAGE_SYSTEM_EVENT",
18
- CONNECTION_READY: "IMESSAGE_CONNECTION_READY",
19
- ERROR: "IMESSAGE_ERROR",
20
- };
21
- /**
22
- * iMessage plugin errors
23
- */
24
- export class IMessagePluginError extends Error {
25
- code;
26
- details;
27
- constructor(message, code, details) {
28
- super(message);
29
- this.code = code;
30
- this.details = details;
31
- this.name = "IMessagePluginError";
32
- }
33
- }
34
- export class IMessageConfigurationError extends IMessagePluginError {
35
- constructor(message, setting) {
36
- super(message, "CONFIGURATION_ERROR", setting ? { setting } : undefined);
37
- this.name = "IMessageConfigurationError";
38
- }
39
- }
40
- export class IMessageNotSupportedError extends IMessagePluginError {
41
- constructor(message = "iMessage is only supported on macOS") {
42
- super(message, "NOT_SUPPORTED");
43
- this.name = "IMessageNotSupportedError";
44
- }
45
- }
46
- export class IMessageCliError extends IMessagePluginError {
47
- constructor(message, exitCode) {
48
- super(message, "CLI_ERROR", exitCode !== undefined ? { exitCode } : undefined);
49
- this.name = "IMessageCliError";
50
- }
51
- }
52
- // Utility functions
53
- /**
54
- * Check if a string looks like a phone number
55
- */
56
- export function isPhoneNumber(input) {
57
- // Remove common formatting
58
- const cleaned = input.replace(/[\s\-().]/g, "");
59
- // Check if it's a phone number pattern
60
- return /^\+?\d{10,15}$/.test(cleaned);
61
- }
62
- /**
63
- * Check if a string looks like an email
64
- */
65
- export function isEmail(input) {
66
- return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(input);
67
- }
68
- /**
69
- * Check if a string is a valid iMessage target (phone or email)
70
- */
71
- export function isValidIMessageTarget(target) {
72
- const trimmed = target.trim();
73
- return isPhoneNumber(trimmed) || isEmail(trimmed) || trimmed.startsWith("chat_id:");
74
- }
75
- /**
76
- * Normalize an iMessage target
77
- */
78
- export function normalizeIMessageTarget(target) {
79
- const trimmed = target.trim();
80
- if (!trimmed) {
81
- return null;
82
- }
83
- // Handle chat_id: prefix
84
- if (trimmed.startsWith("chat_id:")) {
85
- return trimmed;
86
- }
87
- // Handle imessage: prefix
88
- if (trimmed.toLowerCase().startsWith("imessage:")) {
89
- return trimmed.slice(9).trim();
90
- }
91
- // Return as-is for phone numbers and emails
92
- return trimmed;
93
- }
94
- /**
95
- * Format a phone number for iMessage
96
- */
97
- export function formatPhoneNumber(phone) {
98
- // Remove formatting
99
- let cleaned = phone.replace(/[\s\-().]/g, "");
100
- // Add + prefix if missing for international
101
- if (cleaned.length > 10 && !cleaned.startsWith("+")) {
102
- cleaned = `+${cleaned}`;
103
- }
104
- return cleaned;
105
- }
106
- /**
107
- * Split text for iMessage
108
- */
109
- export function splitMessageForIMessage(text, maxLength = MAX_IMESSAGE_MESSAGE_LENGTH) {
110
- if (text.length <= maxLength) {
111
- return [text];
112
- }
113
- const chunks = [];
114
- let remaining = text;
115
- while (remaining.length > 0) {
116
- if (remaining.length <= maxLength) {
117
- chunks.push(remaining);
118
- break;
119
- }
120
- let breakPoint = maxLength;
121
- // Try newline first
122
- const newlineIdx = remaining.lastIndexOf("\n", maxLength);
123
- if (newlineIdx > maxLength / 2) {
124
- breakPoint = newlineIdx + 1;
125
- }
126
- else {
127
- // Try space
128
- const spaceIdx = remaining.lastIndexOf(" ", maxLength);
129
- if (spaceIdx > maxLength / 2) {
130
- breakPoint = spaceIdx + 1;
131
- }
132
- }
133
- chunks.push(remaining.slice(0, breakPoint).trimEnd());
134
- remaining = remaining.slice(breakPoint).trimStart();
135
- }
136
- return chunks;
137
- }
138
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}