@elizaos/plugin-imessage 2.0.0-alpha.3 → 2.0.0-alpha.4

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 (52) hide show
  1. package/dist/accounts.d.ts +135 -0
  2. package/dist/accounts.d.ts.map +1 -0
  3. package/dist/accounts.js +209 -0
  4. package/dist/accounts.js.map +1 -0
  5. package/dist/actions/index.d.ts +5 -0
  6. package/dist/actions/index.d.ts.map +1 -0
  7. package/{src/actions/index.ts → dist/actions/index.js} +1 -1
  8. package/dist/actions/index.js.map +1 -0
  9. package/dist/actions/sendMessage.d.ts +6 -0
  10. package/dist/actions/sendMessage.d.ts.map +1 -0
  11. package/dist/actions/sendMessage.js +161 -0
  12. package/dist/actions/sendMessage.js.map +1 -0
  13. package/dist/config.d.ts +60 -0
  14. package/dist/config.d.ts.map +1 -0
  15. package/dist/config.js +8 -0
  16. package/dist/config.js.map +1 -0
  17. package/dist/index.d.ts +23 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +2 -2
  20. package/dist/index.js.map +1 -0
  21. package/dist/providers/chatContext.d.ts +6 -0
  22. package/dist/providers/chatContext.d.ts.map +1 -0
  23. package/dist/providers/chatContext.js +59 -0
  24. package/dist/providers/chatContext.js.map +1 -0
  25. package/dist/providers/index.d.ts +5 -0
  26. package/dist/providers/index.d.ts.map +1 -0
  27. package/{src/providers/index.ts → dist/providers/index.js} +1 -1
  28. package/dist/providers/index.js.map +1 -0
  29. package/dist/rpc.d.ts +194 -0
  30. package/dist/rpc.d.ts.map +1 -0
  31. package/dist/rpc.js +301 -0
  32. package/dist/rpc.js.map +1 -0
  33. package/dist/service.d.ts +71 -0
  34. package/dist/service.d.ts.map +1 -0
  35. package/dist/service.js +433 -0
  36. package/dist/service.js.map +1 -0
  37. package/dist/types.d.ts +163 -0
  38. package/dist/types.d.ts.map +1 -0
  39. package/dist/types.js +136 -0
  40. package/dist/types.js.map +1 -0
  41. package/package.json +18 -3
  42. package/__tests__/integration.test.ts +0 -548
  43. package/build.ts +0 -16
  44. package/src/accounts.ts +0 -379
  45. package/src/actions/sendMessage.ts +0 -218
  46. package/src/config.ts +0 -82
  47. package/src/index.ts +0 -113
  48. package/src/providers/chatContext.ts +0 -86
  49. package/src/rpc.ts +0 -485
  50. package/src/service.ts +0 -589
  51. package/src/types.ts +0 -291
  52. package/tsconfig.json +0 -20
@@ -0,0 +1,135 @@
1
+ import type { IAgentRuntime } from "@elizaos/core";
2
+ /**
3
+ * Default account identifier used when no specific account is configured
4
+ */
5
+ export declare const DEFAULT_ACCOUNT_ID = "default";
6
+ /**
7
+ * Group-specific configuration
8
+ */
9
+ export interface IMessageGroupConfig {
10
+ /** If false, ignore messages from this group */
11
+ enabled?: boolean;
12
+ /** Allowlist for users in this group */
13
+ allowFrom?: Array<string | number>;
14
+ /** Require bot mention to respond */
15
+ requireMention?: boolean;
16
+ /** Custom system prompt for this group */
17
+ systemPrompt?: string;
18
+ /** Skills enabled for this group */
19
+ skills?: string[];
20
+ }
21
+ /**
22
+ * Configuration for a single iMessage account
23
+ */
24
+ export interface IMessageAccountConfig {
25
+ /** Optional display name for this account */
26
+ name?: string;
27
+ /** If false, do not start this iMessage account */
28
+ enabled?: boolean;
29
+ /** Path to the iMessage CLI tool */
30
+ cliPath?: string;
31
+ /** Path to the iMessage database */
32
+ dbPath?: string;
33
+ /** iMessage service type (iMessage or SMS) */
34
+ service?: "iMessage" | "SMS";
35
+ /** Phone number region code */
36
+ region?: string;
37
+ /** Allowlist for DM senders */
38
+ allowFrom?: Array<string | number>;
39
+ /** Allowlist for groups */
40
+ groupAllowFrom?: Array<string | number>;
41
+ /** DM access policy */
42
+ dmPolicy?: "open" | "allowlist" | "pairing" | "disabled";
43
+ /** Group message access policy */
44
+ groupPolicy?: "open" | "allowlist" | "disabled";
45
+ /** Whether to include attachments */
46
+ includeAttachments?: boolean;
47
+ /** Max media size in MB */
48
+ mediaMaxMb?: number;
49
+ /** Text chunk limit for messages */
50
+ textChunkLimit?: number;
51
+ /** Group-specific configurations */
52
+ groups?: Record<string, IMessageGroupConfig>;
53
+ }
54
+ /**
55
+ * Multi-account iMessage configuration structure
56
+ */
57
+ export interface IMessageMultiAccountConfig {
58
+ /** Default/base configuration applied to all accounts */
59
+ enabled?: boolean;
60
+ cliPath?: string;
61
+ dbPath?: string;
62
+ service?: "iMessage" | "SMS";
63
+ region?: string;
64
+ dmPolicy?: "open" | "allowlist" | "pairing" | "disabled";
65
+ groupPolicy?: "open" | "allowlist" | "disabled";
66
+ includeAttachments?: boolean;
67
+ mediaMaxMb?: number;
68
+ textChunkLimit?: number;
69
+ /** Per-account configuration overrides */
70
+ accounts?: Record<string, IMessageAccountConfig>;
71
+ /** Group configurations at base level */
72
+ groups?: Record<string, IMessageGroupConfig>;
73
+ }
74
+ /**
75
+ * Resolved iMessage account with all configuration merged
76
+ */
77
+ export interface ResolvedIMessageAccount {
78
+ accountId: string;
79
+ enabled: boolean;
80
+ name?: string;
81
+ cliPath: string;
82
+ dbPath?: string;
83
+ configured: boolean;
84
+ config: IMessageAccountConfig;
85
+ }
86
+ /**
87
+ * Normalizes an account ID, returning the default if not provided
88
+ */
89
+ export declare function normalizeAccountId(accountId?: string | null): string;
90
+ /**
91
+ * Gets the multi-account configuration from runtime settings
92
+ */
93
+ export declare function getMultiAccountConfig(runtime: IAgentRuntime): IMessageMultiAccountConfig;
94
+ /**
95
+ * Lists all configured account IDs
96
+ */
97
+ export declare function listIMessageAccountIds(runtime: IAgentRuntime): string[];
98
+ /**
99
+ * Resolves the default account ID to use
100
+ */
101
+ export declare function resolveDefaultIMessageAccountId(runtime: IAgentRuntime): string;
102
+ /**
103
+ * Resolves a complete iMessage account configuration
104
+ */
105
+ export declare function resolveIMessageAccount(runtime: IAgentRuntime, accountId?: string | null): ResolvedIMessageAccount;
106
+ /**
107
+ * Lists all enabled iMessage accounts
108
+ */
109
+ export declare function listEnabledIMessageAccounts(runtime: IAgentRuntime): ResolvedIMessageAccount[];
110
+ /**
111
+ * Checks if multi-account mode is enabled
112
+ */
113
+ export declare function isMultiAccountEnabled(runtime: IAgentRuntime): boolean;
114
+ /**
115
+ * Resolves group configuration for a specific group
116
+ */
117
+ export declare function resolveIMessageGroupConfig(runtime: IAgentRuntime, accountId: string, groupId: string): IMessageGroupConfig | undefined;
118
+ /**
119
+ * Checks if a user is allowed based on policy and allowlist
120
+ */
121
+ export declare function isIMessageUserAllowed(params: {
122
+ identifier: string;
123
+ accountConfig: IMessageAccountConfig;
124
+ isGroup: boolean;
125
+ groupId?: string;
126
+ groupConfig?: IMessageGroupConfig;
127
+ }): boolean;
128
+ /**
129
+ * Checks if mention is required in a group
130
+ */
131
+ export declare function isIMessageMentionRequired(params: {
132
+ accountConfig: IMessageAccountConfig;
133
+ groupConfig?: IMessageGroupConfig;
134
+ }): boolean;
135
+ //# sourceMappingURL=accounts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Default account identifier used when no specific account is configured
3
+ */
4
+ export const DEFAULT_ACCOUNT_ID = "default";
5
+ /**
6
+ * Normalizes an account ID, returning the default if not provided
7
+ */
8
+ export function normalizeAccountId(accountId) {
9
+ if (!accountId || typeof accountId !== "string") {
10
+ return DEFAULT_ACCOUNT_ID;
11
+ }
12
+ const trimmed = accountId.trim().toLowerCase();
13
+ if (!trimmed || trimmed === "default") {
14
+ return DEFAULT_ACCOUNT_ID;
15
+ }
16
+ return trimmed;
17
+ }
18
+ /**
19
+ * Gets the multi-account configuration from runtime settings
20
+ */
21
+ export function getMultiAccountConfig(runtime) {
22
+ const characterIMessage = runtime.character?.settings?.imessage;
23
+ return {
24
+ enabled: characterIMessage?.enabled,
25
+ cliPath: characterIMessage?.cliPath,
26
+ dbPath: characterIMessage?.dbPath,
27
+ service: characterIMessage?.service,
28
+ region: characterIMessage?.region,
29
+ dmPolicy: characterIMessage?.dmPolicy,
30
+ groupPolicy: characterIMessage?.groupPolicy,
31
+ includeAttachments: characterIMessage?.includeAttachments,
32
+ mediaMaxMb: characterIMessage?.mediaMaxMb,
33
+ textChunkLimit: characterIMessage?.textChunkLimit,
34
+ accounts: characterIMessage?.accounts,
35
+ groups: characterIMessage?.groups,
36
+ };
37
+ }
38
+ /**
39
+ * Lists all configured account IDs
40
+ */
41
+ export function listIMessageAccountIds(runtime) {
42
+ const config = getMultiAccountConfig(runtime);
43
+ const accounts = config.accounts;
44
+ if (!accounts || typeof accounts !== "object") {
45
+ return [DEFAULT_ACCOUNT_ID];
46
+ }
47
+ const ids = Object.keys(accounts).filter(Boolean);
48
+ if (ids.length === 0) {
49
+ return [DEFAULT_ACCOUNT_ID];
50
+ }
51
+ return ids.slice().sort((a, b) => a.localeCompare(b));
52
+ }
53
+ /**
54
+ * Resolves the default account ID to use
55
+ */
56
+ export function resolveDefaultIMessageAccountId(runtime) {
57
+ const ids = listIMessageAccountIds(runtime);
58
+ if (ids.includes(DEFAULT_ACCOUNT_ID)) {
59
+ return DEFAULT_ACCOUNT_ID;
60
+ }
61
+ return ids[0] ?? DEFAULT_ACCOUNT_ID;
62
+ }
63
+ /**
64
+ * Gets the account-specific configuration
65
+ */
66
+ function getAccountConfig(runtime, accountId) {
67
+ const config = getMultiAccountConfig(runtime);
68
+ const accounts = config.accounts;
69
+ if (!accounts || typeof accounts !== "object") {
70
+ return undefined;
71
+ }
72
+ return accounts[accountId];
73
+ }
74
+ /**
75
+ * Merges base configuration with account-specific overrides
76
+ */
77
+ function mergeIMessageAccountConfig(runtime, accountId) {
78
+ const multiConfig = getMultiAccountConfig(runtime);
79
+ const { accounts: _ignored, ...baseConfig } = multiConfig;
80
+ const accountConfig = getAccountConfig(runtime, accountId) ?? {};
81
+ // Get environment/runtime settings for the base config
82
+ const envCliPath = runtime.getSetting("IMESSAGE_CLI_PATH");
83
+ const envDbPath = runtime.getSetting("IMESSAGE_DB_PATH");
84
+ const envDmPolicy = runtime.getSetting("IMESSAGE_DM_POLICY");
85
+ const envGroupPolicy = runtime.getSetting("IMESSAGE_GROUP_POLICY");
86
+ const envConfig = {
87
+ cliPath: envCliPath || undefined,
88
+ dbPath: envDbPath || undefined,
89
+ dmPolicy: envDmPolicy,
90
+ groupPolicy: envGroupPolicy,
91
+ };
92
+ // Merge order: env defaults < base config < account config
93
+ return {
94
+ ...envConfig,
95
+ ...baseConfig,
96
+ ...accountConfig,
97
+ };
98
+ }
99
+ /**
100
+ * Resolves a complete iMessage account configuration
101
+ */
102
+ export function resolveIMessageAccount(runtime, accountId) {
103
+ const normalizedAccountId = normalizeAccountId(accountId);
104
+ const multiConfig = getMultiAccountConfig(runtime);
105
+ const baseEnabled = multiConfig.enabled !== false;
106
+ const merged = mergeIMessageAccountConfig(runtime, normalizedAccountId);
107
+ const accountEnabled = merged.enabled !== false;
108
+ const enabled = baseEnabled && accountEnabled;
109
+ const cliPath = merged.cliPath?.trim() || "imsg";
110
+ // Determine if this account is actually configured
111
+ const configured = Boolean(merged.cliPath?.trim() ||
112
+ merged.dbPath?.trim() ||
113
+ merged.service ||
114
+ merged.region?.trim() ||
115
+ (merged.allowFrom && merged.allowFrom.length > 0) ||
116
+ (merged.groupAllowFrom && merged.groupAllowFrom.length > 0) ||
117
+ merged.dmPolicy ||
118
+ merged.groupPolicy ||
119
+ typeof merged.includeAttachments === "boolean" ||
120
+ typeof merged.mediaMaxMb === "number" ||
121
+ typeof merged.textChunkLimit === "number" ||
122
+ (merged.groups && Object.keys(merged.groups).length > 0));
123
+ return {
124
+ accountId: normalizedAccountId,
125
+ enabled,
126
+ name: merged.name?.trim() || undefined,
127
+ cliPath,
128
+ dbPath: merged.dbPath?.trim() || undefined,
129
+ configured,
130
+ config: merged,
131
+ };
132
+ }
133
+ /**
134
+ * Lists all enabled iMessage accounts
135
+ */
136
+ export function listEnabledIMessageAccounts(runtime) {
137
+ return listIMessageAccountIds(runtime)
138
+ .map((accountId) => resolveIMessageAccount(runtime, accountId))
139
+ .filter((account) => account.enabled);
140
+ }
141
+ /**
142
+ * Checks if multi-account mode is enabled
143
+ */
144
+ export function isMultiAccountEnabled(runtime) {
145
+ const accounts = listEnabledIMessageAccounts(runtime);
146
+ return accounts.length > 1;
147
+ }
148
+ /**
149
+ * Resolves group configuration for a specific group
150
+ */
151
+ export function resolveIMessageGroupConfig(runtime, accountId, groupId) {
152
+ const multiConfig = getMultiAccountConfig(runtime);
153
+ const accountConfig = getAccountConfig(runtime, accountId);
154
+ // Check account-level groups first
155
+ const accountGroup = accountConfig?.groups?.[groupId];
156
+ if (accountGroup) {
157
+ return accountGroup;
158
+ }
159
+ // Fall back to base-level groups
160
+ return multiConfig.groups?.[groupId];
161
+ }
162
+ /**
163
+ * Checks if a user is allowed based on policy and allowlist
164
+ */
165
+ export function isIMessageUserAllowed(params) {
166
+ const { identifier, accountConfig, isGroup, groupConfig } = params;
167
+ if (isGroup) {
168
+ const policy = accountConfig.groupPolicy ?? "allowlist";
169
+ if (policy === "disabled") {
170
+ return false;
171
+ }
172
+ if (policy === "open") {
173
+ return true;
174
+ }
175
+ // Check group-specific allowlist first
176
+ if (groupConfig?.allowFrom?.length) {
177
+ return groupConfig.allowFrom.some((allowed) => String(allowed) === identifier);
178
+ }
179
+ // Check account-level group allowlist
180
+ if (accountConfig.groupAllowFrom?.length) {
181
+ return accountConfig.groupAllowFrom.some((allowed) => String(allowed) === identifier);
182
+ }
183
+ return policy !== "allowlist";
184
+ }
185
+ // DM handling
186
+ const policy = accountConfig.dmPolicy ?? "pairing";
187
+ if (policy === "disabled") {
188
+ return false;
189
+ }
190
+ if (policy === "open") {
191
+ return true;
192
+ }
193
+ if (policy === "pairing") {
194
+ return true;
195
+ }
196
+ // Allowlist policy
197
+ if (accountConfig.allowFrom?.length) {
198
+ return accountConfig.allowFrom.some((allowed) => String(allowed) === identifier);
199
+ }
200
+ return false;
201
+ }
202
+ /**
203
+ * Checks if mention is required in a group
204
+ */
205
+ export function isIMessageMentionRequired(params) {
206
+ const { groupConfig } = params;
207
+ return groupConfig?.requireMention ?? false;
208
+ }
209
+ //# sourceMappingURL=accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * iMessage plugin actions.
3
+ */
4
+ export { sendMessage } from "./sendMessage.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * iMessage plugin actions.
3
3
  */
4
-
5
4
  export { sendMessage } from "./sendMessage.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Send message action for the iMessage plugin.
3
+ */
4
+ import type { Action } from "@elizaos/core";
5
+ export declare const sendMessage: Action;
6
+ //# sourceMappingURL=sendMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendMessage.d.ts","sourceRoot":"","sources":["../../src/actions/sendMessage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,MAAM,EAMP,MAAM,eAAe,CAAC;AA8BvB,eAAO,MAAM,WAAW,EAAE,MAiKzB,CAAC"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Send message action for the iMessage plugin.
3
+ */
4
+ import { composePromptFromState, logger, ModelType, parseJSONObjectFromText } from "@elizaos/core";
5
+ import { IMESSAGE_SERVICE_NAME, isValidIMessageTarget, normalizeIMessageTarget } from "../types.js";
6
+ const SEND_MESSAGE_TEMPLATE = `# Task: Extract iMessage parameters
7
+
8
+ Based on the conversation, determine what message to send and to whom.
9
+
10
+ Recent conversation:
11
+ {{recentMessages}}
12
+
13
+ Extract the following:
14
+ 1. text: The message content to send
15
+ 2. to: The recipient (phone number, email, or "current" to reply)
16
+
17
+ Respond with a JSON object:
18
+ \`\`\`json
19
+ {
20
+ "text": "message to send",
21
+ "to": "phone/email or 'current'"
22
+ }
23
+ \`\`\`
24
+ `;
25
+ export const sendMessage = {
26
+ name: "IMESSAGE_SEND_MESSAGE",
27
+ similes: ["SEND_IMESSAGE", "IMESSAGE_TEXT", "TEXT_IMESSAGE", "SEND_IMSG"],
28
+ description: "Send a text message via iMessage (macOS only)",
29
+ validate: async (_runtime, message, _state) => {
30
+ return message.content.source === "imessage";
31
+ },
32
+ handler: async (runtime, message, state, _options, callback) => {
33
+ const imessageService = runtime.getService(IMESSAGE_SERVICE_NAME);
34
+ if (!imessageService || !imessageService.isConnected()) {
35
+ if (callback) {
36
+ callback({
37
+ text: "iMessage service is not available.",
38
+ source: "imessage",
39
+ });
40
+ }
41
+ return { success: false, error: "iMessage service not available" };
42
+ }
43
+ if (!imessageService.isMacOS()) {
44
+ if (callback) {
45
+ callback({
46
+ text: "iMessage is only available on macOS.",
47
+ source: "imessage",
48
+ });
49
+ }
50
+ return { success: false, error: "iMessage requires macOS" };
51
+ }
52
+ // Compose state if not provided
53
+ const currentState = state ?? (await runtime.composeState(message));
54
+ // Extract parameters using LLM
55
+ const prompt = await composePromptFromState({
56
+ template: SEND_MESSAGE_TEMPLATE,
57
+ state: currentState,
58
+ });
59
+ let msgInfo = null;
60
+ for (let attempt = 0; attempt < 3; attempt++) {
61
+ const response = await runtime.useModel(ModelType.TEXT_SMALL, {
62
+ prompt,
63
+ });
64
+ const parsed = parseJSONObjectFromText(response);
65
+ if (parsed?.text) {
66
+ msgInfo = {
67
+ text: String(parsed.text),
68
+ to: String(parsed.to || "current"),
69
+ };
70
+ break;
71
+ }
72
+ }
73
+ if (!msgInfo || !msgInfo.text) {
74
+ if (callback) {
75
+ callback({
76
+ text: "I couldn't understand what message you want me to send. Please try again.",
77
+ source: "imessage",
78
+ });
79
+ }
80
+ return { success: false, error: "Could not extract message parameters" };
81
+ }
82
+ // Determine target
83
+ let targetId;
84
+ if (msgInfo.to && msgInfo.to !== "current") {
85
+ const normalized = normalizeIMessageTarget(msgInfo.to);
86
+ if (normalized && isValidIMessageTarget(normalized)) {
87
+ targetId = normalized;
88
+ }
89
+ }
90
+ // Fall back to current chat
91
+ if (!targetId) {
92
+ const stateData = (currentState.data || {});
93
+ targetId = stateData.chatId || stateData.handle;
94
+ }
95
+ if (!targetId) {
96
+ if (callback) {
97
+ callback({
98
+ text: "I couldn't determine who to send the message to. Please specify a phone number or email.",
99
+ source: "imessage",
100
+ });
101
+ }
102
+ return { success: false, error: "Could not determine recipient" };
103
+ }
104
+ // Send message
105
+ const result = await imessageService.sendMessage(targetId, msgInfo.text);
106
+ if (!result.success) {
107
+ if (callback) {
108
+ callback({
109
+ text: `Failed to send message: ${result.error}`,
110
+ source: "imessage",
111
+ });
112
+ }
113
+ return { success: false, error: result.error };
114
+ }
115
+ logger.debug(`Sent iMessage to ${targetId}`);
116
+ if (callback) {
117
+ callback({
118
+ text: "Message sent successfully.",
119
+ source: message.content.source,
120
+ });
121
+ }
122
+ return {
123
+ success: true,
124
+ data: {
125
+ to: targetId,
126
+ messageId: result.messageId,
127
+ },
128
+ };
129
+ },
130
+ examples: [
131
+ [
132
+ {
133
+ name: "{{user1}}",
134
+ content: { text: "Send them a message saying 'Hello!'" },
135
+ },
136
+ {
137
+ name: "{{agent}}",
138
+ content: {
139
+ text: "I'll send that message via iMessage.",
140
+ actions: ["IMESSAGE_SEND_MESSAGE"],
141
+ },
142
+ },
143
+ ],
144
+ [
145
+ {
146
+ name: "{{user1}}",
147
+ content: {
148
+ text: "Text +1234567890 saying 'I'll be there in 10 minutes'",
149
+ },
150
+ },
151
+ {
152
+ name: "{{agent}}",
153
+ content: {
154
+ text: "I'll send that text.",
155
+ actions: ["IMESSAGE_SEND_MESSAGE"],
156
+ },
157
+ },
158
+ ],
159
+ ],
160
+ };
161
+ //# sourceMappingURL=sendMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendMessage.js","sourceRoot":"","sources":["../../src/actions/sendMessage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * iMessage plugin configuration types.
3
+ *
4
+ * These types define the configuration schema for the iMessage plugin.
5
+ * Shared base types are imported from @elizaos/core.
6
+ */
7
+ import type { BlockStreamingCoalesceConfig, ChannelHeartbeatVisibilityConfig, DmConfig, DmPolicy, GroupPolicy, MarkdownConfig } from "@elizaos/core";
8
+ export type IMessageReactionNotificationMode = "off" | "own" | "all" | "allowlist";
9
+ export type IMessageAccountConfig = {
10
+ /** Optional display name for this account (used in CLI/UI lists). */
11
+ name?: string;
12
+ /** Optional provider capability tags used for agent/runtime guidance. */
13
+ capabilities?: string[];
14
+ /** Markdown formatting overrides (tables). */
15
+ markdown?: MarkdownConfig;
16
+ /** Allow channel-initiated config writes (default: true). */
17
+ configWrites?: boolean;
18
+ /** If false, do not start this iMessage account. Default: true. */
19
+ enabled?: boolean;
20
+ /** Direct message access policy (default: pairing). */
21
+ dmPolicy?: DmPolicy;
22
+ /** Optional allowlist for iMessage senders (phone E.164 or iCloud email). */
23
+ allowFrom?: Array<string | number>;
24
+ /** Optional allowlist for iMessage group senders. */
25
+ groupAllowFrom?: Array<string | number>;
26
+ /**
27
+ * Controls how group messages are handled:
28
+ * - "open": groups bypass allowFrom, no extra gating
29
+ * - "disabled": block all group messages
30
+ * - "allowlist": only allow group messages from senders in groupAllowFrom/allowFrom
31
+ */
32
+ groupPolicy?: GroupPolicy;
33
+ /** Max group messages to keep as history context (0 disables). */
34
+ historyLimit?: number;
35
+ /** Max DM turns to keep as history context. */
36
+ dmHistoryLimit?: number;
37
+ /** Per-DM config overrides keyed by user ID. */
38
+ dms?: Record<string, DmConfig>;
39
+ /** Outbound text chunk size (chars). Default: 4000. */
40
+ textChunkLimit?: number;
41
+ /** Chunking mode: "length" (default) splits by size; "newline" splits on every newline. */
42
+ chunkMode?: "length" | "newline";
43
+ /** Disable block streaming for this account. */
44
+ blockStreaming?: boolean;
45
+ /** Merge streamed block replies before sending. */
46
+ blockStreamingCoalesce?: BlockStreamingCoalesceConfig;
47
+ /** Maximum media file size in MB. Default: 100. */
48
+ mediaMaxMb?: number;
49
+ /** Reaction notification mode (off|own|all|allowlist). Default: own. */
50
+ reactionNotifications?: IMessageReactionNotificationMode;
51
+ /** Allowlist for reaction notifications when mode is allowlist. */
52
+ reactionAllowlist?: Array<string | number>;
53
+ /** Heartbeat visibility settings for this channel. */
54
+ heartbeat?: ChannelHeartbeatVisibilityConfig;
55
+ };
56
+ export type IMessageConfig = {
57
+ /** Optional per-account iMessage configuration (multi-account). */
58
+ accounts?: Record<string, IMessageAccountConfig>;
59
+ } & IMessageAccountConfig;
60
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,4BAA4B,EAC5B,gCAAgC,EAChC,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,cAAc,EACf,MAAM,eAAe,CAAC;AAMvB,MAAM,MAAM,gCAAgC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,WAAW,CAAC;AAMnF,MAAM,MAAM,qBAAqB,GAAG;IAClC,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,6DAA6D;IAC7D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACnC,qDAAqD;IACrD,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACxC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/B,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2FAA2F;IAC3F,SAAS,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACjC,gDAAgD;IAChD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mDAAmD;IACnD,sBAAsB,CAAC,EAAE,4BAA4B,CAAC;IACtD,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,qBAAqB,CAAC,EAAE,gCAAgC,CAAC;IACzD,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC3C,sDAAsD;IACtD,SAAS,CAAC,EAAE,gCAAgC,CAAC;CAC9C,CAAC;AAMF,MAAM,MAAM,cAAc,GAAG;IAC3B,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CAClD,GAAG,qBAAqB,CAAC"}
package/dist/config.js ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * iMessage plugin configuration types.
3
+ *
4
+ * These types define the configuration schema for the iMessage plugin.
5
+ * Shared base types are imported from @elizaos/core.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}