@elizaos/plugin-line 2.0.0-alpha.3 → 2.0.0-alpha.5

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 (61) hide show
  1. package/dist/accounts.d.ts +152 -0
  2. package/dist/accounts.d.ts.map +1 -0
  3. package/dist/accounts.js +260 -0
  4. package/dist/accounts.js.map +1 -0
  5. package/dist/actions/index.d.ts +7 -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/sendFlexMessage.d.ts +6 -0
  10. package/dist/actions/sendFlexMessage.d.ts.map +1 -0
  11. package/dist/actions/sendFlexMessage.js +178 -0
  12. package/dist/actions/sendFlexMessage.js.map +1 -0
  13. package/dist/actions/sendLocation.d.ts +6 -0
  14. package/dist/actions/sendLocation.d.ts.map +1 -0
  15. package/dist/actions/sendLocation.js +160 -0
  16. package/dist/actions/sendLocation.js.map +1 -0
  17. package/dist/actions/sendMessage.d.ts +6 -0
  18. package/dist/actions/sendMessage.d.ts.map +1 -0
  19. package/dist/actions/sendMessage.js +146 -0
  20. package/dist/actions/sendMessage.js.map +1 -0
  21. package/dist/index.d.ts +22 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/messaging.d.ts +142 -0
  25. package/dist/messaging.d.ts.map +1 -0
  26. package/dist/messaging.js +351 -0
  27. package/dist/messaging.js.map +1 -0
  28. package/dist/providers/chatContext.d.ts +6 -0
  29. package/dist/providers/chatContext.d.ts.map +1 -0
  30. package/dist/providers/chatContext.js +85 -0
  31. package/dist/providers/chatContext.js.map +1 -0
  32. package/dist/providers/index.d.ts +6 -0
  33. package/dist/providers/index.d.ts.map +1 -0
  34. package/{src/providers/index.ts → dist/providers/index.js} +1 -1
  35. package/dist/providers/index.js.map +1 -0
  36. package/dist/providers/userContext.d.ts +6 -0
  37. package/dist/providers/userContext.d.ts.map +1 -0
  38. package/dist/providers/userContext.js +72 -0
  39. package/dist/providers/userContext.js.map +1 -0
  40. package/dist/service.d.ts +102 -0
  41. package/dist/service.d.ts.map +1 -0
  42. package/dist/service.js +443 -0
  43. package/dist/service.js.map +1 -0
  44. package/dist/types.d.ts +279 -0
  45. package/dist/types.d.ts.map +1 -0
  46. package/dist/types.js +106 -0
  47. package/dist/types.js.map +1 -0
  48. package/package.json +66 -5
  49. package/__tests__/integration.test.ts +0 -782
  50. package/build.ts +0 -16
  51. package/src/accounts.ts +0 -462
  52. package/src/actions/sendFlexMessage.ts +0 -243
  53. package/src/actions/sendLocation.ts +0 -223
  54. package/src/actions/sendMessage.ts +0 -202
  55. package/src/index.ts +0 -123
  56. package/src/messaging.ts +0 -507
  57. package/src/providers/chatContext.ts +0 -110
  58. package/src/providers/userContext.ts +0 -99
  59. package/src/service.ts +0 -578
  60. package/src/types.ts +0 -417
  61. package/tsconfig.json +0 -22
@@ -0,0 +1,279 @@
1
+ /**
2
+ * LINE Channel Types
3
+ *
4
+ * Type definitions for LINE messaging channel data structures.
5
+ *
6
+ * @module line/types
7
+ */
8
+ export declare const LINE_SERVICE_NAME: "line";
9
+ export declare const MAX_LINE_BATCH_SIZE = 5;
10
+ export declare const LineEventTypes: {
11
+ readonly CONNECTION_READY: "line:connection_ready";
12
+ readonly MESSAGE_RECEIVED: "line:message_received";
13
+ readonly MESSAGE_SENT: "line:message_sent";
14
+ readonly FOLLOW: "line:follow";
15
+ readonly UNFOLLOW: "line:unfollow";
16
+ readonly JOIN_GROUP: "line:join_group";
17
+ readonly LEAVE_GROUP: "line:leave_group";
18
+ readonly POSTBACK: "line:postback";
19
+ };
20
+ export declare class LineConfigurationError extends Error {
21
+ field?: string | undefined;
22
+ constructor(message: string, field?: string | undefined);
23
+ }
24
+ export declare class LineApiError extends Error {
25
+ statusCode?: number | undefined;
26
+ constructor(message: string, statusCode?: number | undefined);
27
+ }
28
+ export interface LineSettings {
29
+ channelAccessToken: string;
30
+ channelSecret: string;
31
+ webhookPath: string;
32
+ dmPolicy: "open" | "pairing" | "allowlist" | "disabled";
33
+ groupPolicy: "open" | "allowlist" | "disabled";
34
+ allowFrom: string[];
35
+ enabled: boolean;
36
+ }
37
+ export interface LineUser {
38
+ userId: string;
39
+ displayName: string;
40
+ pictureUrl?: string;
41
+ statusMessage?: string;
42
+ language?: string;
43
+ }
44
+ export interface LineGroup {
45
+ groupId: string;
46
+ groupName?: string;
47
+ pictureUrl?: string;
48
+ memberCount?: number;
49
+ type: "group" | "room";
50
+ }
51
+ export interface LineSendResult {
52
+ success: boolean;
53
+ messageId?: string;
54
+ chatId?: string;
55
+ error?: string;
56
+ }
57
+ export interface LineMessageSendOptions {
58
+ quickReplyItems?: LineQuickReplyItem[];
59
+ notificationDisabled?: boolean;
60
+ }
61
+ export interface ILineService {
62
+ isConnected(): boolean;
63
+ sendMessage(to: string, text: string, options?: LineMessageSendOptions): Promise<LineSendResult>;
64
+ sendFlexMessage(to: string, flex: LineFlexMessage): Promise<LineSendResult>;
65
+ sendTemplateMessage(to: string, template: LineTemplateMessage): Promise<LineSendResult>;
66
+ sendLocationMessage(to: string, location: LineLocationMessage): Promise<LineSendResult>;
67
+ replyMessage(replyToken: string, messages: Array<{
68
+ type: string;
69
+ [key: string]: unknown;
70
+ }>): Promise<LineSendResult>;
71
+ getUserProfile(userId: string): Promise<LineUser | null>;
72
+ getGroupInfo(groupId: string): Promise<LineGroup | null>;
73
+ getBotInfo(): Promise<LineUser | null>;
74
+ }
75
+ export declare function isValidLineId(id: string): boolean;
76
+ export declare function normalizeLineTarget(target: string): string | null;
77
+ /**
78
+ * LINE location message data.
79
+ */
80
+ export interface LineLocationData {
81
+ title: string;
82
+ address: string;
83
+ latitude: number;
84
+ longitude: number;
85
+ }
86
+ /**
87
+ * LINE template action types.
88
+ */
89
+ export type LineActionType = "message" | "postback" | "uri";
90
+ /**
91
+ * LINE template action.
92
+ */
93
+ export interface LineTemplateAction {
94
+ type: LineActionType;
95
+ label: string;
96
+ data?: string;
97
+ uri?: string;
98
+ }
99
+ /**
100
+ * LINE template message base.
101
+ */
102
+ export interface LineTemplateMessageBase {
103
+ altText: string;
104
+ }
105
+ /**
106
+ * LINE confirm template content.
107
+ */
108
+ export interface LineConfirmTemplateContent {
109
+ type: "confirm";
110
+ text: string;
111
+ actions: LineTemplateAction[];
112
+ }
113
+ /**
114
+ * LINE buttons template content.
115
+ */
116
+ export interface LineButtonsTemplateContent {
117
+ type: "buttons";
118
+ title?: string;
119
+ text: string;
120
+ thumbnailImageUrl?: string;
121
+ actions: LineTemplateAction[];
122
+ }
123
+ /**
124
+ * LINE template content union type.
125
+ */
126
+ export type LineTemplateContent = LineConfirmTemplateContent | LineButtonsTemplateContent;
127
+ /**
128
+ * LINE template message (wrapper for sending).
129
+ */
130
+ export interface LineTemplateMessage extends LineTemplateMessageBase {
131
+ /** The template content */
132
+ template: LineTemplateContent;
133
+ }
134
+ /**
135
+ * LINE Flex Message content (simplified).
136
+ */
137
+ export interface LineFlexContents {
138
+ type: string;
139
+ [key: string]: unknown;
140
+ }
141
+ /**
142
+ * LINE Flex Message data.
143
+ */
144
+ export interface LineFlexMessage {
145
+ altText: string;
146
+ contents: LineFlexContents;
147
+ }
148
+ /**
149
+ * LINE quick reply item.
150
+ */
151
+ export interface LineQuickReplyItem {
152
+ type: "action";
153
+ action: {
154
+ type: "message" | "postback";
155
+ label: string;
156
+ text?: string;
157
+ data?: string;
158
+ };
159
+ }
160
+ /**
161
+ * LINE channel-specific data embedded in reply payloads.
162
+ */
163
+ export interface LineChannelData {
164
+ /** Quick reply options (text strings converted to quick reply items) */
165
+ quickReplies?: string[];
166
+ /** Location message */
167
+ location?: LineLocationData;
168
+ /** Template message (confirm, buttons, etc.) */
169
+ templateMessage?: LineTemplateMessage;
170
+ /** Flex message for rich content */
171
+ flexMessage?: LineFlexMessage;
172
+ /** Raw sticker data */
173
+ sticker?: {
174
+ packageId: string;
175
+ stickerId: string;
176
+ };
177
+ /** Image map message */
178
+ imagemap?: unknown;
179
+ }
180
+ /**
181
+ * LINE message common properties.
182
+ */
183
+ export interface LineMessageBase {
184
+ /** Message type */
185
+ type: string;
186
+ /** Quick reply */
187
+ quickReply?: {
188
+ items: LineQuickReplyItem[];
189
+ };
190
+ }
191
+ /**
192
+ * LINE text message.
193
+ */
194
+ export interface LineTextMessage extends LineMessageBase {
195
+ type: "text";
196
+ text: string;
197
+ }
198
+ /**
199
+ * LINE image message.
200
+ */
201
+ export interface LineImageMessage extends LineMessageBase {
202
+ type: "image";
203
+ originalContentUrl: string;
204
+ previewImageUrl: string;
205
+ }
206
+ /**
207
+ * LINE sticker message.
208
+ */
209
+ export interface LineStickerMessage extends LineMessageBase {
210
+ type: "sticker";
211
+ packageId: string;
212
+ stickerId: string;
213
+ }
214
+ /**
215
+ * LINE location message.
216
+ */
217
+ export interface LineLocationMessage extends LineMessageBase {
218
+ type: "location";
219
+ title: string;
220
+ address: string;
221
+ latitude: number;
222
+ longitude: number;
223
+ }
224
+ /**
225
+ * LINE Flex message for sending.
226
+ */
227
+ export interface LineFlexMessageSend extends LineMessageBase {
228
+ type: "flex";
229
+ altText: string;
230
+ contents: LineFlexContents;
231
+ }
232
+ /**
233
+ * LINE template message for sending.
234
+ */
235
+ export interface LineTemplateMessageSend extends LineMessageBase {
236
+ type: "template";
237
+ altText: string;
238
+ template: unknown;
239
+ }
240
+ /**
241
+ * Union type of all LINE message types for sending.
242
+ */
243
+ export type LineSendMessage = LineTextMessage | LineImageMessage | LineStickerMessage | LineLocationMessage | LineFlexMessageSend | LineTemplateMessageSend;
244
+ /**
245
+ * LINE received message type (from webhook events).
246
+ */
247
+ export interface LineMessage {
248
+ /** Unique message ID */
249
+ id: string;
250
+ /** Message type */
251
+ type: "text" | "image" | "sticker" | "location" | "flex" | "template" | "video" | "audio" | "file";
252
+ /** User ID of the sender */
253
+ userId: string;
254
+ /** Message timestamp */
255
+ timestamp: number;
256
+ /** Reply token for responding to this message */
257
+ replyToken?: string;
258
+ /** Text content (for text messages) */
259
+ text?: string;
260
+ /** Mention data (for text messages) */
261
+ mention?: unknown;
262
+ /** Group ID (if message is from a group) */
263
+ groupId?: string;
264
+ /** Room ID (if message is from a room) */
265
+ roomId?: string;
266
+ }
267
+ /**
268
+ * LINE chat type: user, group, or room.
269
+ */
270
+ export type LineChatType = "user" | "group" | "room";
271
+ /**
272
+ * Determines the chat type from a LINE ID.
273
+ */
274
+ export declare function getChatTypeFromId(id: string): LineChatType;
275
+ /**
276
+ * Splits text into chunks that fit within LINE's message limit.
277
+ */
278
+ export declare function splitMessageForLine(text: string): string[];
279
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,106 @@
1
+ /**
2
+ * LINE Channel Types
3
+ *
4
+ * Type definitions for LINE messaging channel data structures.
5
+ *
6
+ * @module line/types
7
+ */
8
+ // Constants
9
+ export const LINE_SERVICE_NAME = "line";
10
+ export const MAX_LINE_BATCH_SIZE = 5;
11
+ // Event types
12
+ export const LineEventTypes = {
13
+ CONNECTION_READY: "line:connection_ready",
14
+ MESSAGE_RECEIVED: "line:message_received",
15
+ MESSAGE_SENT: "line:message_sent",
16
+ FOLLOW: "line:follow",
17
+ UNFOLLOW: "line:unfollow",
18
+ JOIN_GROUP: "line:join_group",
19
+ LEAVE_GROUP: "line:leave_group",
20
+ POSTBACK: "line:postback",
21
+ };
22
+ // Error classes
23
+ export class LineConfigurationError extends Error {
24
+ field;
25
+ constructor(message, field) {
26
+ super(message);
27
+ this.field = field;
28
+ this.name = "LineConfigurationError";
29
+ }
30
+ }
31
+ export class LineApiError extends Error {
32
+ statusCode;
33
+ constructor(message, statusCode) {
34
+ super(message);
35
+ this.statusCode = statusCode;
36
+ this.name = "LineApiError";
37
+ }
38
+ }
39
+ // Validation helpers
40
+ export function isValidLineId(id) {
41
+ if (!id || typeof id !== "string") {
42
+ return false;
43
+ }
44
+ // LINE user IDs start with U, group IDs with C, room IDs with R
45
+ const prefixes = ["U", "u", "C", "c", "R", "r"];
46
+ return prefixes.some((p) => id.startsWith(p)) && id.length >= 30;
47
+ }
48
+ export function normalizeLineTarget(target) {
49
+ if (!target || typeof target !== "string") {
50
+ return null;
51
+ }
52
+ const trimmed = target.trim();
53
+ if (isValidLineId(trimmed)) {
54
+ return trimmed;
55
+ }
56
+ return null;
57
+ }
58
+ /**
59
+ * Determines the chat type from a LINE ID.
60
+ */
61
+ export function getChatTypeFromId(id) {
62
+ if (id.startsWith("C") || id.startsWith("c")) {
63
+ return "group";
64
+ }
65
+ else if (id.startsWith("R") || id.startsWith("r")) {
66
+ return "room";
67
+ }
68
+ return "user";
69
+ }
70
+ /**
71
+ * LINE message character limit (5000 characters per message).
72
+ */
73
+ const LINE_MAX_MESSAGE_LENGTH = 5000;
74
+ /**
75
+ * Splits text into chunks that fit within LINE's message limit.
76
+ */
77
+ export function splitMessageForLine(text) {
78
+ if (!text || text.length === 0) {
79
+ return [];
80
+ }
81
+ if (text.length <= LINE_MAX_MESSAGE_LENGTH) {
82
+ return [text];
83
+ }
84
+ const chunks = [];
85
+ let remaining = text;
86
+ while (remaining.length > 0) {
87
+ if (remaining.length <= LINE_MAX_MESSAGE_LENGTH) {
88
+ chunks.push(remaining);
89
+ break;
90
+ }
91
+ // Try to split at the last newline or space before the limit
92
+ let splitIndex = LINE_MAX_MESSAGE_LENGTH;
93
+ const lastNewline = remaining.lastIndexOf("\n", LINE_MAX_MESSAGE_LENGTH);
94
+ const lastSpace = remaining.lastIndexOf(" ", LINE_MAX_MESSAGE_LENGTH);
95
+ if (lastNewline > LINE_MAX_MESSAGE_LENGTH / 2) {
96
+ splitIndex = lastNewline + 1;
97
+ }
98
+ else if (lastSpace > LINE_MAX_MESSAGE_LENGTH / 2) {
99
+ splitIndex = lastSpace + 1;
100
+ }
101
+ chunks.push(remaining.substring(0, splitIndex).trim());
102
+ remaining = remaining.substring(splitIndex);
103
+ }
104
+ return chunks.filter(Boolean);
105
+ }
106
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,13 +1,27 @@
1
1
  {
2
2
  "name": "@elizaos/plugin-line",
3
- "version": "2.0.0-alpha.3",
3
+ "version": "2.0.0-alpha.5",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js",
11
+ "default": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
7
17
  "scripts": {
8
18
  "build": "bun run build.ts",
9
19
  "test": "vitest run",
10
- "lint": "biome check --write --unsafe src"
20
+ "lint": "bunx @biomejs/biome check --write --unsafe .",
21
+ "lint:check": "bunx @biomejs/biome check .",
22
+ "format": "bunx @biomejs/biome format --write .",
23
+ "format:check": "bunx @biomejs/biome format .",
24
+ "typecheck": "tsc --noEmit"
11
25
  },
12
26
  "dependencies": {
13
27
  "@elizaos/core": "2.0.0-alpha.3",
@@ -17,7 +31,11 @@
17
31
  "devDependencies": {
18
32
  "@types/node": "^20.0.0",
19
33
  "typescript": "^5.6.0",
20
- "vitest": "^2.0.0"
34
+ "vitest": "^2.0.0",
35
+ "@biomejs/biome": "^2.3.11"
36
+ },
37
+ "publishConfig": {
38
+ "access": "public"
21
39
  },
22
40
  "milaidy": {
23
41
  "platforms": [
@@ -28,7 +46,50 @@
28
46
  "node": "Node.js via main entry point"
29
47
  }
30
48
  },
31
- "publishConfig": {
32
- "access": "public"
49
+ "agentConfig": {
50
+ "pluginParameters": {
51
+ "LINE_CHANNEL_ACCESS_TOKEN": {
52
+ "type": "string",
53
+ "description": "Access token for Line Channel",
54
+ "required": true,
55
+ "sensitive": true
56
+ },
57
+ "LINE_CHANNEL_SECRET": {
58
+ "type": "string",
59
+ "description": "Secret for Line Channel",
60
+ "required": false,
61
+ "sensitive": true
62
+ },
63
+ "LINE_WEBHOOK_PATH": {
64
+ "type": "string",
65
+ "description": "Webhook path",
66
+ "required": false,
67
+ "sensitive": false
68
+ },
69
+ "LINE_DM_POLICY": {
70
+ "type": "string",
71
+ "description": "DM policy (e.g. allow, deny, allowlist)",
72
+ "required": false,
73
+ "sensitive": false
74
+ },
75
+ "LINE_GROUP_POLICY": {
76
+ "type": "string",
77
+ "description": "Group message policy (e.g. allow, deny)",
78
+ "required": false,
79
+ "sensitive": false
80
+ },
81
+ "LINE_ALLOW_FROM": {
82
+ "type": "string",
83
+ "description": "Comma-separated allowed user list",
84
+ "required": false,
85
+ "sensitive": false
86
+ },
87
+ "LINE_ENABLED": {
88
+ "type": "boolean",
89
+ "description": "Enable or disable this feature",
90
+ "required": false,
91
+ "sensitive": false
92
+ }
93
+ }
33
94
  }
34
95
  }