@elizaos/plugin-matrix 2.0.0-alpha.4 → 2.0.0-alpha.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"joinRoom.d.ts","sourceRoot":"","sources":["../../src/actions/joinRoom.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,MAAM,EAOP,MAAM,eAAe,CAAC;AA2BvB,eAAO,MAAM,QAAQ,EAAE,MA4GtB,CAAC"}
1
+ {"version":3,"file":"joinRoom.d.ts","sourceRoot":"","sources":["../../src/actions/joinRoom.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAA+E,MAAM,eAAe,CAAC;AA2BzH,eAAO,MAAM,QAAQ,EAAE,MAmHtB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"listRooms.d.ts","sourceRoot":"","sources":["../../src/actions/listRooms.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,MAAM,EAOP,MAAM,eAAe,CAAC;AAIvB,eAAO,MAAM,SAAS,EAAE,MA6EvB,CAAC"}
1
+ {"version":3,"file":"listRooms.d.ts","sourceRoot":"","sources":["../../src/actions/listRooms.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAA+E,MAAM,eAAe,CAAC;AAIzH,eAAO,MAAM,SAAS,EAAE,MAsFvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sendMessage.d.ts","sourceRoot":"","sources":["../../src/actions/sendMessage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,MAAM,EAOP,MAAM,eAAe,CAAC;AA6BvB,eAAO,MAAM,WAAW,EAAE,MAqIzB,CAAC"}
1
+ {"version":3,"file":"sendMessage.d.ts","sourceRoot":"","sources":["../../src/actions/sendMessage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAA+E,MAAM,eAAe,CAAC;AA6BzH,eAAO,MAAM,WAAW,EAAE,MA6IzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sendReaction.d.ts","sourceRoot":"","sources":["../../src/actions/sendReaction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,MAAM,EAOP,MAAM,eAAe,CAAC;AAwBvB,eAAO,MAAM,YAAY,EAAE,MA6H1B,CAAC"}
1
+ {"version":3,"file":"sendReaction.d.ts","sourceRoot":"","sources":["../../src/actions/sendReaction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAA+E,MAAM,eAAe,CAAC;AAwBzH,eAAO,MAAM,YAAY,EAAE,MAqI1B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -6,10 +6,10 @@
6
6
  import type { Plugin } from "@elizaos/core";
7
7
  export { MatrixService } from "./service.js";
8
8
  export * from "./types.js";
9
- import { joinRoom } from "./actions/joinRoom.js";
10
- import { listRooms } from "./actions/listRooms.js";
11
9
  import { sendMessage } from "./actions/sendMessage.js";
12
10
  import { sendReaction } from "./actions/sendReaction.js";
11
+ import { listRooms } from "./actions/listRooms.js";
12
+ import { joinRoom } from "./actions/joinRoom.js";
13
13
  export { sendMessage, sendReaction, listRooms, joinRoom };
14
14
  import { roomStateProvider } from "./providers/roomState.js";
15
15
  import { userContextProvider } from "./providers/userContext.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAiB,MAAM,EAAE,MAAM,eAAe,CAAC;AAI3D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAG1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAC;AAKlD;;GAEG;AACH,QAAA,MAAM,YAAY,EAAE,MA8DnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,eAAe,CAAC;AAI3D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAG1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAC;AAKlD;;GAEG;AACH,QAAA,MAAM,YAAY,EAAE,MAmEnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import { logger as logger2 } from "@elizaos/core";
3
3
 
4
4
  // src/service.ts
5
- import { logger, Service } from "@elizaos/core";
5
+ import { Service, logger } from "@elizaos/core";
6
6
  import * as sdk from "matrix-js-sdk";
7
7
 
8
8
  // src/types.ts
@@ -402,185 +402,8 @@ class MatrixService extends Service {
402
402
  await this.client.sendReadReceipt(new sdk.MatrixEvent({ event_id: eventId, room_id: roomId }));
403
403
  }
404
404
  }
405
- // src/actions/joinRoom.ts
406
- import { composePromptFromState, ModelType, parseJSONObjectFromText } from "@elizaos/core";
407
- var JOIN_ROOM_TEMPLATE = `You are helping to extract a Matrix room identifier.
408
-
409
- The user wants to join a Matrix room.
410
-
411
- Recent conversation:
412
- {{recentMessages}}
413
-
414
- Extract the room ID (!room:server) or room alias (#alias:server) to join.
415
-
416
- Respond with a JSON object like:
417
- {
418
- "room": "!room:matrix.org"
419
- }
420
-
421
- or:
422
-
423
- {
424
- "room": "#alias:matrix.org"
425
- }
426
-
427
- Only respond with the JSON object, no other text.`;
428
- var joinRoom = {
429
- name: "MATRIX_JOIN_ROOM",
430
- similes: ["JOIN_MATRIX_ROOM", "ENTER_ROOM"],
431
- description: "Join a Matrix room by ID or alias",
432
- validate: async (_runtime, message, _state) => {
433
- return message.content.source === "matrix";
434
- },
435
- handler: async (runtime, message, state, _options, callback) => {
436
- const matrixService = runtime.getService(MATRIX_SERVICE_NAME);
437
- if (!matrixService || !matrixService.isConnected()) {
438
- if (callback) {
439
- await callback({ text: "Matrix service is not available.", source: "matrix" });
440
- }
441
- return { success: false, error: "Matrix service not available" };
442
- }
443
- const composedState = state ?? {
444
- values: {},
445
- data: {},
446
- text: ""
447
- };
448
- const prompt = await composePromptFromState({
449
- template: JOIN_ROOM_TEMPLATE,
450
- state: composedState
451
- });
452
- let room = null;
453
- for (let attempt = 0;attempt < 3; attempt++) {
454
- const response = await runtime.useModel(ModelType.TEXT_SMALL, {
455
- prompt
456
- });
457
- const parsed = parseJSONObjectFromText(response);
458
- if (parsed?.room) {
459
- const roomStr = String(parsed.room).trim();
460
- if (isValidMatrixRoomId(roomStr) || isValidMatrixRoomAlias(roomStr)) {
461
- room = roomStr;
462
- break;
463
- }
464
- }
465
- }
466
- if (!room) {
467
- if (callback) {
468
- await callback({
469
- text: "I couldn't understand which room you want me to join. Please specify a room ID (!room:server) or alias (#alias:server).",
470
- source: "matrix"
471
- });
472
- }
473
- return { success: false, error: "Could not extract room identifier" };
474
- }
475
- try {
476
- const roomId = await matrixService.joinRoom(room);
477
- if (callback) {
478
- await callback({
479
- text: `Joined room ${room}.`,
480
- source: message.content.source
481
- });
482
- }
483
- return {
484
- success: true,
485
- data: {
486
- roomId,
487
- joined: room
488
- }
489
- };
490
- } catch (err) {
491
- const error = err instanceof Error ? err.message : String(err);
492
- if (callback) {
493
- await callback({
494
- text: `Failed to join room: ${error}`,
495
- source: "matrix"
496
- });
497
- }
498
- return { success: false, error };
499
- }
500
- },
501
- examples: [
502
- [
503
- {
504
- name: "{{user1}}",
505
- content: { text: "Join #general:matrix.org" }
506
- },
507
- {
508
- name: "{{agent}}",
509
- content: {
510
- text: "I'll join that room.",
511
- actions: ["MATRIX_JOIN_ROOM"]
512
- }
513
- }
514
- ]
515
- ]
516
- };
517
-
518
- // src/actions/listRooms.ts
519
- var listRooms = {
520
- name: "MATRIX_LIST_ROOMS",
521
- similes: ["LIST_MATRIX_ROOMS", "SHOW_ROOMS", "GET_ROOMS", "MY_ROOMS"],
522
- description: "List all Matrix rooms the bot has joined",
523
- validate: async (_runtime, message, _state) => {
524
- return message.content.source === "matrix";
525
- },
526
- handler: async (runtime, message, _state, _options, callback) => {
527
- const matrixService = runtime.getService(MATRIX_SERVICE_NAME);
528
- if (!matrixService || !matrixService.isConnected()) {
529
- if (callback) {
530
- await callback({ text: "Matrix service is not available.", source: "matrix" });
531
- }
532
- return { success: false, error: "Matrix service not available" };
533
- }
534
- const rooms = await matrixService.getJoinedRooms();
535
- const roomList = rooms.map((room) => {
536
- const name = room.name || room.canonicalAlias || room.roomId;
537
- const members = `${room.memberCount} members`;
538
- const encrypted = room.isEncrypted ? " (encrypted)" : "";
539
- return `- ${name} (${members})${encrypted}`;
540
- });
541
- const responseText = rooms.length > 0 ? `Joined ${rooms.length} room(s):
542
-
543
- ${roomList.join(`
544
- `)}` : "Not currently in any rooms.";
545
- if (callback) {
546
- await callback({
547
- text: responseText,
548
- source: message.content.source
549
- });
550
- }
551
- return {
552
- success: true,
553
- data: {
554
- roomCount: rooms.length,
555
- rooms: rooms.map((r) => ({
556
- roomId: r.roomId,
557
- name: r.name,
558
- alias: r.canonicalAlias,
559
- memberCount: r.memberCount,
560
- isEncrypted: r.isEncrypted
561
- }))
562
- }
563
- };
564
- },
565
- examples: [
566
- [
567
- {
568
- name: "{{user1}}",
569
- content: { text: "What rooms are you in?" }
570
- },
571
- {
572
- name: "{{agent}}",
573
- content: {
574
- text: "I'll list the rooms I've joined.",
575
- actions: ["MATRIX_LIST_ROOMS"]
576
- }
577
- }
578
- ]
579
- ]
580
- };
581
-
582
405
  // src/actions/sendMessage.ts
583
- import { composePromptFromState as composePromptFromState2, ModelType as ModelType2, parseJSONObjectFromText as parseJSONObjectFromText2 } from "@elizaos/core";
406
+ import { composePromptFromState, ModelType, parseJSONObjectFromText } from "@elizaos/core";
584
407
  var SEND_MESSAGE_TEMPLATE = `You are helping to extract send message parameters for Matrix.
585
408
 
586
409
  The user wants to send a message to a Matrix room.
@@ -601,9 +424,13 @@ Respond with a JSON object like:
601
424
  Only respond with the JSON object, no other text.`;
602
425
  var sendMessage = {
603
426
  name: "MATRIX_SEND_MESSAGE",
604
- similes: ["SEND_MATRIX_MESSAGE", "MESSAGE_MATRIX", "MATRIX_TEXT"],
427
+ similes: [
428
+ "SEND_MATRIX_MESSAGE",
429
+ "MESSAGE_MATRIX",
430
+ "MATRIX_TEXT"
431
+ ],
605
432
  description: "Send a message to a Matrix room",
606
- validate: async (_runtime, message, _state) => {
433
+ validate: async (runtime, message, _state) => {
607
434
  return message.content.source === "matrix";
608
435
  },
609
436
  handler: async (runtime, message, state, _options, callback) => {
@@ -619,16 +446,16 @@ var sendMessage = {
619
446
  data: {},
620
447
  text: ""
621
448
  };
622
- const prompt = await composePromptFromState2({
449
+ const prompt = await composePromptFromState({
623
450
  template: SEND_MESSAGE_TEMPLATE,
624
451
  state: composedState
625
452
  });
626
453
  let messageInfo = null;
627
454
  for (let attempt = 0;attempt < 3; attempt++) {
628
- const response = await runtime.useModel(ModelType2.TEXT_SMALL, {
455
+ const response = await runtime.useModel(ModelType.TEXT_SMALL, {
629
456
  prompt
630
457
  });
631
- const parsed = parseJSONObjectFromText2(response);
458
+ const parsed = parseJSONObjectFromText(response);
632
459
  if (parsed?.text) {
633
460
  messageInfo = {
634
461
  text: String(parsed.text),
@@ -709,7 +536,7 @@ var sendMessage = {
709
536
  };
710
537
 
711
538
  // src/actions/sendReaction.ts
712
- import { composePromptFromState as composePromptFromState3, ModelType as ModelType3, parseJSONObjectFromText as parseJSONObjectFromText3 } from "@elizaos/core";
539
+ import { composePromptFromState as composePromptFromState2, ModelType as ModelType2, parseJSONObjectFromText as parseJSONObjectFromText2 } from "@elizaos/core";
713
540
  var SEND_REACTION_TEMPLATE = `You are helping to extract reaction parameters for Matrix.
714
541
 
715
542
  The user wants to react to a Matrix message with an emoji.
@@ -730,9 +557,13 @@ Respond with a JSON object like:
730
557
  Only respond with the JSON object, no other text.`;
731
558
  var sendReaction = {
732
559
  name: "MATRIX_SEND_REACTION",
733
- similes: ["REACT_MATRIX", "MATRIX_REACT", "ADD_MATRIX_REACTION"],
560
+ similes: [
561
+ "REACT_MATRIX",
562
+ "MATRIX_REACT",
563
+ "ADD_MATRIX_REACTION"
564
+ ],
734
565
  description: "React to a Matrix message with an emoji",
735
- validate: async (_runtime, message, _state) => {
566
+ validate: async (runtime, message, _state) => {
736
567
  return message.content.source === "matrix";
737
568
  },
738
569
  handler: async (runtime, message, state, _options, callback) => {
@@ -748,16 +579,16 @@ var sendReaction = {
748
579
  data: {},
749
580
  text: ""
750
581
  };
751
- const prompt = await composePromptFromState3({
582
+ const prompt = await composePromptFromState2({
752
583
  template: SEND_REACTION_TEMPLATE,
753
584
  state: composedState
754
585
  });
755
586
  let reactionInfo = null;
756
587
  for (let attempt = 0;attempt < 3; attempt++) {
757
- const response = await runtime.useModel(ModelType3.TEXT_SMALL, {
588
+ const response = await runtime.useModel(ModelType2.TEXT_SMALL, {
758
589
  prompt
759
590
  });
760
- const parsed = parseJSONObjectFromText3(response);
591
+ const parsed = parseJSONObjectFromText2(response);
761
592
  if (parsed?.emoji && parsed?.eventId) {
762
593
  reactionInfo = {
763
594
  emoji: String(parsed.emoji),
@@ -828,6 +659,191 @@ var sendReaction = {
828
659
  ]
829
660
  };
830
661
 
662
+ // src/actions/listRooms.ts
663
+ var listRooms = {
664
+ name: "MATRIX_LIST_ROOMS",
665
+ similes: [
666
+ "LIST_MATRIX_ROOMS",
667
+ "SHOW_ROOMS",
668
+ "GET_ROOMS",
669
+ "MY_ROOMS"
670
+ ],
671
+ description: "List all Matrix rooms the bot has joined",
672
+ validate: async (runtime, message, _state) => {
673
+ return message.content.source === "matrix";
674
+ },
675
+ handler: async (runtime, message, _state, _options, callback) => {
676
+ const matrixService = runtime.getService(MATRIX_SERVICE_NAME);
677
+ if (!matrixService || !matrixService.isConnected()) {
678
+ if (callback) {
679
+ await callback({ text: "Matrix service is not available.", source: "matrix" });
680
+ }
681
+ return { success: false, error: "Matrix service not available" };
682
+ }
683
+ const rooms = await matrixService.getJoinedRooms();
684
+ const roomList = rooms.map((room) => {
685
+ const name = room.name || room.canonicalAlias || room.roomId;
686
+ const members = `${room.memberCount} members`;
687
+ const encrypted = room.isEncrypted ? " (encrypted)" : "";
688
+ return `- ${name} (${members})${encrypted}`;
689
+ });
690
+ const responseText = rooms.length > 0 ? `Joined ${rooms.length} room(s):
691
+
692
+ ${roomList.join(`
693
+ `)}` : "Not currently in any rooms.";
694
+ if (callback) {
695
+ await callback({
696
+ text: responseText,
697
+ source: message.content.source
698
+ });
699
+ }
700
+ return {
701
+ success: true,
702
+ data: {
703
+ roomCount: rooms.length,
704
+ rooms: rooms.map((r) => ({
705
+ roomId: r.roomId,
706
+ name: r.name,
707
+ alias: r.canonicalAlias,
708
+ memberCount: r.memberCount,
709
+ isEncrypted: r.isEncrypted
710
+ }))
711
+ }
712
+ };
713
+ },
714
+ examples: [
715
+ [
716
+ {
717
+ name: "{{user1}}",
718
+ content: { text: "What rooms are you in?" }
719
+ },
720
+ {
721
+ name: "{{agent}}",
722
+ content: {
723
+ text: "I'll list the rooms I've joined.",
724
+ actions: ["MATRIX_LIST_ROOMS"]
725
+ }
726
+ }
727
+ ]
728
+ ]
729
+ };
730
+
731
+ // src/actions/joinRoom.ts
732
+ import { composePromptFromState as composePromptFromState3, ModelType as ModelType3, parseJSONObjectFromText as parseJSONObjectFromText3 } from "@elizaos/core";
733
+ var JOIN_ROOM_TEMPLATE = `You are helping to extract a Matrix room identifier.
734
+
735
+ The user wants to join a Matrix room.
736
+
737
+ Recent conversation:
738
+ {{recentMessages}}
739
+
740
+ Extract the room ID (!room:server) or room alias (#alias:server) to join.
741
+
742
+ Respond with a JSON object like:
743
+ {
744
+ "room": "!room:matrix.org"
745
+ }
746
+
747
+ or:
748
+
749
+ {
750
+ "room": "#alias:matrix.org"
751
+ }
752
+
753
+ Only respond with the JSON object, no other text.`;
754
+ var joinRoom = {
755
+ name: "MATRIX_JOIN_ROOM",
756
+ similes: [
757
+ "JOIN_MATRIX_ROOM",
758
+ "ENTER_ROOM"
759
+ ],
760
+ description: "Join a Matrix room by ID or alias",
761
+ validate: async (runtime, message, _state) => {
762
+ return message.content.source === "matrix";
763
+ },
764
+ handler: async (runtime, message, state, _options, callback) => {
765
+ const matrixService = runtime.getService(MATRIX_SERVICE_NAME);
766
+ if (!matrixService || !matrixService.isConnected()) {
767
+ if (callback) {
768
+ await callback({ text: "Matrix service is not available.", source: "matrix" });
769
+ }
770
+ return { success: false, error: "Matrix service not available" };
771
+ }
772
+ const composedState = state ?? {
773
+ values: {},
774
+ data: {},
775
+ text: ""
776
+ };
777
+ const prompt = await composePromptFromState3({
778
+ template: JOIN_ROOM_TEMPLATE,
779
+ state: composedState
780
+ });
781
+ let room = null;
782
+ for (let attempt = 0;attempt < 3; attempt++) {
783
+ const response = await runtime.useModel(ModelType3.TEXT_SMALL, {
784
+ prompt
785
+ });
786
+ const parsed = parseJSONObjectFromText3(response);
787
+ if (parsed?.room) {
788
+ const roomStr = String(parsed.room).trim();
789
+ if (isValidMatrixRoomId(roomStr) || isValidMatrixRoomAlias(roomStr)) {
790
+ room = roomStr;
791
+ break;
792
+ }
793
+ }
794
+ }
795
+ if (!room) {
796
+ if (callback) {
797
+ await callback({
798
+ text: "I couldn't understand which room you want me to join. Please specify a room ID (!room:server) or alias (#alias:server).",
799
+ source: "matrix"
800
+ });
801
+ }
802
+ return { success: false, error: "Could not extract room identifier" };
803
+ }
804
+ try {
805
+ const roomId = await matrixService.joinRoom(room);
806
+ if (callback) {
807
+ await callback({
808
+ text: `Joined room ${room}.`,
809
+ source: message.content.source
810
+ });
811
+ }
812
+ return {
813
+ success: true,
814
+ data: {
815
+ roomId,
816
+ joined: room
817
+ }
818
+ };
819
+ } catch (err) {
820
+ const error = err instanceof Error ? err.message : String(err);
821
+ if (callback) {
822
+ await callback({
823
+ text: `Failed to join room: ${error}`,
824
+ source: "matrix"
825
+ });
826
+ }
827
+ return { success: false, error };
828
+ }
829
+ },
830
+ examples: [
831
+ [
832
+ {
833
+ name: "{{user1}}",
834
+ content: { text: "Join #general:matrix.org" }
835
+ },
836
+ {
837
+ name: "{{agent}}",
838
+ content: {
839
+ text: "I'll join that room.",
840
+ actions: ["MATRIX_JOIN_ROOM"]
841
+ }
842
+ }
843
+ ]
844
+ ]
845
+ };
846
+
831
847
  // src/providers/roomState.ts
832
848
  var roomStateProvider = {
833
849
  name: "matrixRoomState",
@@ -1026,4 +1042,4 @@ export {
1026
1042
  MATRIX_SERVICE_NAME
1027
1043
  };
1028
1044
 
1029
- //# debugId=A4D19A2C309BC12964756E2164756E21
1045
+ //# debugId=35E58066575BB30D64756E2164756E21
package/dist/index.js.map CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/index.ts", "../src/service.ts", "../src/types.ts", "../src/actions/joinRoom.ts", "../src/actions/listRooms.ts", "../src/actions/sendMessage.ts", "../src/actions/sendReaction.ts", "../src/providers/roomState.ts", "../src/providers/userContext.ts"],
3
+ "sources": ["../src/index.ts", "../src/service.ts", "../src/types.ts", "../src/actions/sendMessage.ts", "../src/actions/sendReaction.ts", "../src/actions/listRooms.ts", "../src/actions/joinRoom.ts", "../src/providers/roomState.ts", "../src/providers/userContext.ts"],
4
4
  "sourcesContent": [
5
- "/**\n * Matrix messaging integration plugin for ElizaOS.\n *\n * This plugin provides Matrix protocol integration using matrix-js-sdk.\n */\n\nimport type { IAgentRuntime, Plugin } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\n// Service\nexport { MatrixService } from \"./service.js\";\n\n// Types\nexport * from \"./types.js\";\n\nimport { joinRoom } from \"./actions/joinRoom.js\";\nimport { listRooms } from \"./actions/listRooms.js\";\n// Actions\nimport { sendMessage } from \"./actions/sendMessage.js\";\nimport { sendReaction } from \"./actions/sendReaction.js\";\n\nexport { sendMessage, sendReaction, listRooms, joinRoom };\n\n// Providers\nimport { roomStateProvider } from \"./providers/roomState.js\";\nimport { userContextProvider } from \"./providers/userContext.js\";\n\nexport { roomStateProvider, userContextProvider };\n\n// Import service for plugin\nimport { MatrixService } from \"./service.js\";\n\n/**\n * Matrix plugin definition.\n */\nconst matrixPlugin: Plugin = {\n name: \"matrix\",\n description: \"Matrix messaging integration plugin for ElizaOS with E2EE support\",\n\n services: [MatrixService],\n\n actions: [sendMessage, sendReaction, listRooms, joinRoom],\n\n providers: [roomStateProvider, userContextProvider],\n\n tests: [],\n\n init: async (_config: Record<string, string>, runtime: IAgentRuntime): Promise<void> => {\n const homeserver = runtime.getSetting(\"MATRIX_HOMESERVER\");\n const userId = runtime.getSetting(\"MATRIX_USER_ID\");\n const accessToken = runtime.getSetting(\"MATRIX_ACCESS_TOKEN\");\n\n logger.info(\"=\".repeat(60));\n logger.info(\"Matrix Plugin Configuration\");\n logger.info(\"=\".repeat(60));\n logger.info(` Homeserver: ${homeserver ? `✓ ${homeserver}` : \"✗ Missing (required)\"}`);\n logger.info(` User ID: ${userId ? `✓ ${userId}` : \"✗ Missing (required)\"}`);\n logger.info(` Access Token: ${accessToken ? \"✓ Set\" : \"✗ Missing (required)\"}`);\n logger.info(\"=\".repeat(60));\n\n // Validate required settings\n const missing: string[] = [];\n if (!homeserver) missing.push(\"MATRIX_HOMESERVER\");\n if (!userId) missing.push(\"MATRIX_USER_ID\");\n if (!accessToken) missing.push(\"MATRIX_ACCESS_TOKEN\");\n\n if (missing.length > 0) {\n logger.warn(`Matrix plugin: Missing required configuration: ${missing.join(\", \")}`);\n }\n\n // Additional optional settings\n const deviceId = runtime.getSetting(\"MATRIX_DEVICE_ID\");\n const rooms = runtime.getSetting(\"MATRIX_ROOMS\");\n const autoJoin = runtime.getSetting(\"MATRIX_AUTO_JOIN\");\n const encryption = runtime.getSetting(\"MATRIX_ENCRYPTION\");\n const requireMention = runtime.getSetting(\"MATRIX_REQUIRE_MENTION\");\n\n if (deviceId) {\n logger.info(` Device ID: ${deviceId}`);\n }\n\n if (rooms) {\n logger.info(` Auto-join Rooms: ${rooms}`);\n }\n\n if (autoJoin === \"true\") {\n logger.info(\" Auto-join Invites: ✓ Enabled\");\n }\n\n if (encryption === \"true\") {\n logger.info(\" End-to-End Encryption: ✓ Enabled\");\n }\n\n if (requireMention === \"true\") {\n logger.info(\" Require Mention: ✓ Enabled (will only respond to mentions in rooms)\");\n }\n },\n};\n\nexport default matrixPlugin;\n",
6
- "/**\n * Matrix service implementation for ElizaOS.\n *\n * This service provides Matrix messaging capabilities using matrix-js-sdk.\n */\n\nimport { type EventPayload, type IAgentRuntime, logger, Service } from \"@elizaos/core\";\nimport * as sdk from \"matrix-js-sdk\";\nimport {\n getMatrixLocalpart,\n type IMatrixService,\n isValidMatrixRoomAlias,\n MATRIX_SERVICE_NAME,\n MatrixConfigurationError,\n MatrixEventTypes,\n type MatrixMessage,\n type MatrixMessageSendOptions,\n MatrixNotConnectedError,\n type MatrixRoom,\n type MatrixSendResult,\n type MatrixSettings,\n type MatrixUserInfo,\n} from \"./types.js\";\n\n/**\n * Matrix messaging service for ElizaOS agents.\n */\nexport class MatrixService extends Service implements IMatrixService {\n static serviceType: string = MATRIX_SERVICE_NAME;\n\n capabilityDescription = \"Matrix messaging service for chat communication\";\n\n protected declare runtime: IAgentRuntime;\n private settings!: MatrixSettings;\n private client!: sdk.MatrixClient;\n private connected: boolean = false;\n private syncing: boolean = false;\n\n /**\n * Start the Matrix service.\n */\n static async start(runtime: IAgentRuntime): Promise<MatrixService> {\n const service = new MatrixService();\n await service.initialize(runtime);\n return service;\n }\n\n /**\n * Stop the Matrix service.\n */\n static async stopRuntime(runtime: IAgentRuntime): Promise<void> {\n const service = runtime.getService(MATRIX_SERVICE_NAME) as MatrixService | undefined;\n if (service) {\n await service.stop();\n }\n }\n\n /**\n * Initialize the Matrix service.\n */\n private async initialize(runtime: IAgentRuntime): Promise<void> {\n this.runtime = runtime;\n\n // Load configuration\n this.settings = this.loadSettings();\n\n // Validate configuration\n this.validateSettings();\n\n // Create Matrix client\n this.client = sdk.createClient({\n baseUrl: this.settings.homeserver,\n userId: this.settings.userId,\n accessToken: this.settings.accessToken,\n deviceId: this.settings.deviceId,\n });\n\n // Set up event handlers\n this.setupEventHandlers();\n\n // Start client\n await this.connect();\n\n logger.info(\n `Matrix service initialized for ${this.settings.userId} on ${this.settings.homeserver}`\n );\n }\n\n /**\n * Load settings from runtime.\n */\n private loadSettings(): MatrixSettings {\n // Helper to safely get string settings\n const getStringSetting = (key: string): string | undefined => {\n const value = this.runtime.getSetting(key);\n return typeof value === \"string\" ? value : undefined;\n };\n\n const homeserver = getStringSetting(\"MATRIX_HOMESERVER\");\n const userId = getStringSetting(\"MATRIX_USER_ID\");\n const accessToken = getStringSetting(\"MATRIX_ACCESS_TOKEN\");\n const deviceId = getStringSetting(\"MATRIX_DEVICE_ID\");\n const roomsStr = getStringSetting(\"MATRIX_ROOMS\");\n const autoJoinStr = getStringSetting(\"MATRIX_AUTO_JOIN\");\n const encryptionStr = getStringSetting(\"MATRIX_ENCRYPTION\");\n const requireMentionStr = getStringSetting(\"MATRIX_REQUIRE_MENTION\");\n\n const rooms = roomsStr\n ? roomsStr\n .split(\",\")\n .map((r: string) => r.trim())\n .filter(Boolean)\n : [];\n\n return {\n homeserver: homeserver || \"\",\n userId: userId || \"\",\n accessToken: accessToken || \"\",\n deviceId,\n rooms,\n autoJoin: autoJoinStr === \"true\",\n encryption: encryptionStr === \"true\",\n requireMention: requireMentionStr === \"true\",\n enabled: true,\n };\n }\n\n /**\n * Validate the settings.\n */\n private validateSettings(): void {\n if (!this.settings.homeserver) {\n throw new MatrixConfigurationError(\"MATRIX_HOMESERVER is required\", \"MATRIX_HOMESERVER\");\n }\n\n if (!this.settings.userId) {\n throw new MatrixConfigurationError(\"MATRIX_USER_ID is required\", \"MATRIX_USER_ID\");\n }\n\n if (!this.settings.accessToken) {\n throw new MatrixConfigurationError(\"MATRIX_ACCESS_TOKEN is required\", \"MATRIX_ACCESS_TOKEN\");\n }\n }\n\n /**\n * Set up event handlers for the Matrix client.\n */\n private setupEventHandlers(): void {\n // Sync events\n this.client.on(sdk.ClientEvent.Sync, (state) => {\n if (state === \"PREPARED\") {\n this.syncing = true;\n logger.info(\"Matrix sync complete\");\n this.runtime.emitEvent(MatrixEventTypes.SYNC_COMPLETE, {\n runtime: this.runtime,\n } as EventPayload);\n }\n });\n\n // Room timeline events (messages)\n this.client.on(sdk.RoomEvent.Timeline, (event, room, toStartOfTimeline) => {\n if (toStartOfTimeline) return;\n if (event.getType() !== \"m.room.message\") return;\n if (event.getSender() === this.settings.userId) return;\n\n this.handleRoomMessage(event, room);\n });\n\n // Room membership events\n this.client.on(sdk.RoomMemberEvent.Membership, (event, member) => {\n if (member.userId !== this.settings.userId) return;\n\n if (member.membership === \"invite\" && this.settings.autoJoin) {\n const roomId = event.getRoomId();\n if (roomId) {\n logger.info(`Auto-joining room ${roomId}`);\n this.client.joinRoom(roomId).catch((err) => {\n logger.error(`Failed to auto-join room: ${err.message}`);\n });\n }\n }\n });\n }\n\n /**\n * Handle an incoming room message.\n */\n private handleRoomMessage(event: sdk.MatrixEvent, room: sdk.Room | undefined): void {\n const content = event.getContent();\n const msgType = content.msgtype;\n\n // Only handle text messages for now\n if (msgType !== \"m.text\") return;\n\n const roomId = event.getRoomId();\n if (!roomId || !room) return;\n\n // Check mention requirement\n if (this.settings.requireMention) {\n const body = content.body || \"\";\n const localpart = getMatrixLocalpart(this.settings.userId);\n const mentionPattern = new RegExp(`@?${localpart}`, \"i\");\n if (!mentionPattern.test(body)) {\n return;\n }\n }\n\n const sender = event.getSender();\n const senderMember = room.getMember(sender || \"\");\n\n const senderInfo: MatrixUserInfo = {\n userId: sender || \"\",\n displayName: senderMember?.name,\n avatarUrl: senderMember?.getMxcAvatarUrl() || undefined,\n };\n\n // Check for reply/thread\n const relatesTo = content[\"m.relates_to\"];\n const isEdit = relatesTo?.rel_type === \"m.replace\";\n const threadId = relatesTo?.rel_type === \"m.thread\" ? relatesTo.event_id : undefined;\n const replyTo = relatesTo?.[\"m.in_reply_to\"]?.event_id;\n\n const message: MatrixMessage = {\n eventId: event.getId() || \"\",\n roomId,\n sender: sender || \"\",\n senderInfo,\n content: content.body || \"\",\n msgType,\n formattedBody: content.formatted_body,\n timestamp: event.getTs(),\n threadId,\n replyTo,\n isEdit,\n replacesEventId: isEdit ? relatesTo?.event_id : undefined,\n };\n\n const matrixRoom: MatrixRoom = {\n roomId,\n name: room.name,\n topic: room.currentState.getStateEvents(\"m.room.topic\", \"\")?.getContent()?.topic,\n canonicalAlias: room.getCanonicalAlias() || undefined,\n isEncrypted: room.hasEncryptionStateEvent(),\n isDirect:\n this.client.getAccountData(\"m.direct\")?.getContent()?.[sender || \"\"]?.includes(roomId) ||\n false,\n memberCount: room.getJoinedMemberCount(),\n };\n\n logger.debug(\n `Matrix message from ${senderInfo.displayName || sender} in ${room.name || roomId}: ${message.content.slice(0, 50)}...`\n );\n\n this.runtime.emitEvent(MatrixEventTypes.MESSAGE_RECEIVED, {\n message,\n room: matrixRoom,\n runtime: this.runtime,\n } as unknown as EventPayload);\n }\n\n /**\n * Connect to Matrix.\n */\n private async connect(): Promise<void> {\n await this.client.startClient({ initialSyncLimit: 10 });\n this.connected = true;\n\n // Wait for initial sync\n await new Promise<void>((resolve) => {\n const listener = (state: string) => {\n if (state === \"PREPARED\") {\n this.client.removeListener(sdk.ClientEvent.Sync, listener);\n resolve();\n }\n };\n this.client.on(sdk.ClientEvent.Sync, listener);\n });\n\n // Join configured rooms\n for (const room of this.settings.rooms) {\n try {\n await this.joinRoom(room);\n } catch (err) {\n logger.warn(`Failed to join room ${room}: ${err}`);\n }\n }\n }\n\n /**\n * Shutdown the service.\n */\n async stop(): Promise<void> {\n if (this.client) {\n this.client.stopClient();\n }\n this.connected = false;\n logger.info(\"Matrix service stopped\");\n }\n\n // ============================================================================\n // Public Interface\n // ============================================================================\n\n isConnected(): boolean {\n return this.connected && this.syncing;\n }\n\n getUserId(): string {\n return this.settings.userId;\n }\n\n getHomeserver(): string {\n return this.settings.homeserver;\n }\n\n async getJoinedRooms(): Promise<MatrixRoom[]> {\n const rooms = this.client.getRooms();\n return rooms\n .filter((room) => room.getMyMembership() === \"join\")\n .map((room) => ({\n roomId: room.roomId,\n name: room.name,\n topic: room.currentState.getStateEvents(\"m.room.topic\", \"\")?.getContent()?.topic,\n canonicalAlias: room.getCanonicalAlias() || undefined,\n isEncrypted: room.hasEncryptionStateEvent(),\n isDirect: false,\n memberCount: room.getJoinedMemberCount(),\n }));\n }\n\n async sendMessage(text: string, options?: MatrixMessageSendOptions): Promise<MatrixSendResult> {\n if (!this.isConnected()) {\n throw new MatrixNotConnectedError();\n }\n\n const roomId = options?.roomId;\n if (!roomId) {\n return { success: false, error: \"Room ID is required\" };\n }\n\n // Resolve room ID from alias if needed\n let resolvedRoomId = roomId;\n if (isValidMatrixRoomAlias(roomId)) {\n const resolved = await this.client.getRoomIdForAlias(roomId);\n resolvedRoomId = resolved.room_id;\n }\n\n // Build content\n const content: Record<string, unknown> = {\n msgtype: \"m.text\",\n body: text,\n };\n\n if (options?.formatted) {\n content.format = \"org.matrix.custom.html\";\n content.formatted_body = text;\n }\n\n // Handle reply/thread\n if (options?.threadId || options?.replyTo) {\n content[\"m.relates_to\"] = {};\n\n if (options.threadId) {\n (content[\"m.relates_to\"] as Record<string, unknown>).rel_type = \"m.thread\";\n (content[\"m.relates_to\"] as Record<string, unknown>).event_id = options.threadId;\n }\n\n if (options.replyTo) {\n (content[\"m.relates_to\"] as Record<string, unknown>)[\"m.in_reply_to\"] = {\n event_id: options.replyTo,\n };\n }\n }\n\n const response = await this.client.sendMessage(resolvedRoomId, content);\n const eventId = response.event_id;\n\n this.runtime.emitEvent(MatrixEventTypes.MESSAGE_SENT, {\n roomId: resolvedRoomId,\n eventId,\n content: text,\n runtime: this.runtime,\n } as unknown as EventPayload);\n\n return {\n success: true,\n eventId,\n roomId: resolvedRoomId,\n };\n }\n\n async sendReaction(roomId: string, eventId: string, emoji: string): Promise<MatrixSendResult> {\n if (!this.isConnected()) {\n throw new MatrixNotConnectedError();\n }\n\n const content = {\n \"m.relates_to\": {\n rel_type: \"m.annotation\",\n event_id: eventId,\n key: emoji,\n },\n };\n\n const response = await this.client.sendEvent(roomId, \"m.reaction\", content);\n\n return {\n success: true,\n eventId: response.event_id,\n roomId,\n };\n }\n\n async joinRoom(roomIdOrAlias: string): Promise<string> {\n if (!this.isConnected()) {\n throw new MatrixNotConnectedError();\n }\n\n const response = await this.client.joinRoom(roomIdOrAlias);\n const roomId = response.roomId;\n\n logger.info(`Joined room ${roomId}`);\n this.runtime.emitEvent(MatrixEventTypes.ROOM_JOINED, {\n room: { roomId },\n runtime: this.runtime,\n } as unknown as EventPayload);\n\n return roomId;\n }\n\n async leaveRoom(roomId: string): Promise<void> {\n if (!this.isConnected()) {\n throw new MatrixNotConnectedError();\n }\n\n await this.client.leave(roomId);\n logger.info(`Left room ${roomId}`);\n this.runtime.emitEvent(MatrixEventTypes.ROOM_LEFT, {\n roomId,\n runtime: this.runtime,\n } as unknown as EventPayload);\n }\n\n async sendTyping(roomId: string, typing: boolean, timeout: number = 30000): Promise<void> {\n if (!this.isConnected()) {\n return;\n }\n\n await this.client.sendTyping(roomId, typing, timeout);\n }\n\n async sendReadReceipt(roomId: string, eventId: string): Promise<void> {\n if (!this.isConnected()) {\n return;\n }\n\n await this.client.sendReadReceipt(new sdk.MatrixEvent({ event_id: eventId, room_id: roomId }));\n }\n}\n",
7
- "/**\n * Type definitions for the Matrix plugin.\n */\n\nimport type { IAgentRuntime, Service } from \"@elizaos/core\";\n\n// ============================================================================\n// Constants\n// ============================================================================\n\n/** Maximum message length for Matrix */\nexport const MAX_MATRIX_MESSAGE_LENGTH = 4000;\n\n/** Service name constant */\nexport const MATRIX_SERVICE_NAME = \"matrix\";\n\n// ============================================================================\n// Event Types\n// ============================================================================\n\n/** Event types emitted by the Matrix plugin */\nexport enum MatrixEventTypes {\n MESSAGE_RECEIVED = \"MATRIX_MESSAGE_RECEIVED\",\n MESSAGE_SENT = \"MATRIX_MESSAGE_SENT\",\n ROOM_JOINED = \"MATRIX_ROOM_JOINED\",\n ROOM_LEFT = \"MATRIX_ROOM_LEFT\",\n INVITE_RECEIVED = \"MATRIX_INVITE_RECEIVED\",\n REACTION_RECEIVED = \"MATRIX_REACTION_RECEIVED\",\n TYPING_RECEIVED = \"MATRIX_TYPING_RECEIVED\",\n SYNC_COMPLETE = \"MATRIX_SYNC_COMPLETE\",\n CONNECTION_READY = \"MATRIX_CONNECTION_READY\",\n CONNECTION_LOST = \"MATRIX_CONNECTION_LOST\",\n}\n\n// ============================================================================\n// Configuration Types\n// ============================================================================\n\n/** Configuration settings for the Matrix plugin */\nexport interface MatrixSettings {\n /** Matrix homeserver URL */\n homeserver: string;\n /** Matrix user ID (@user:homeserver) */\n userId: string;\n /** Access token for authentication */\n accessToken: string;\n /** Device ID for this session */\n deviceId?: string;\n /** Rooms to auto-join */\n rooms: string[];\n /** Whether to auto-accept invites */\n autoJoin: boolean;\n /** Enable end-to-end encryption */\n encryption: boolean;\n /** Require mention to respond in rooms */\n requireMention: boolean;\n /** Whether this configuration is enabled */\n enabled: boolean;\n}\n\n// ============================================================================\n// Message Types\n// ============================================================================\n\n/** Information about a Matrix user */\nexport interface MatrixUserInfo {\n /** Matrix user ID (@user:homeserver) */\n userId: string;\n /** Display name */\n displayName?: string;\n /** Avatar URL */\n avatarUrl?: string;\n}\n\n/** Represents a Matrix room */\nexport interface MatrixRoom {\n /** Room ID (!room:homeserver) */\n roomId: string;\n /** Room name */\n name?: string;\n /** Room topic */\n topic?: string;\n /** Room alias (#alias:homeserver) */\n canonicalAlias?: string;\n /** Whether room is encrypted */\n isEncrypted: boolean;\n /** Whether this is a direct message room */\n isDirect: boolean;\n /** Member count */\n memberCount: number;\n}\n\n/** Represents a Matrix message */\nexport interface MatrixMessage {\n /** Event ID */\n eventId: string;\n /** Room ID */\n roomId: string;\n /** Sender user ID */\n sender: string;\n /** Sender info */\n senderInfo: MatrixUserInfo;\n /** Message content */\n content: string;\n /** Message type (m.text, m.image, etc.) */\n msgType: string;\n /** Formatted body (HTML) */\n formattedBody?: string;\n /** Timestamp */\n timestamp: number;\n /** Thread root event ID */\n threadId?: string;\n /** Reply-to event ID */\n replyTo?: string;\n /** Whether this is an edit */\n isEdit: boolean;\n /** Original event ID if this is an edit */\n replacesEventId?: string;\n}\n\n/** Options for sending a message */\nexport interface MatrixMessageSendOptions {\n /** Room ID or alias to send to */\n roomId?: string;\n /** Event ID to reply to */\n replyTo?: string;\n /** Thread root event ID */\n threadId?: string;\n /** Format as HTML */\n formatted?: boolean;\n /** Media URL to attach */\n mediaUrl?: string;\n}\n\n/** Result from sending a message */\nexport interface MatrixSendResult {\n /** Whether the send succeeded */\n success: boolean;\n /** Event ID of the sent message */\n eventId?: string;\n /** Room ID */\n roomId?: string;\n /** Error message if failed */\n error?: string;\n}\n\n// ============================================================================\n// Service Interface\n// ============================================================================\n\n/** Interface for the Matrix service */\nexport interface IMatrixService extends Service {\n /** Check if the service is connected */\n isConnected(): boolean;\n\n /** Get the user ID */\n getUserId(): string;\n\n /** Get the homeserver URL */\n getHomeserver(): string;\n\n /** Get joined rooms */\n getJoinedRooms(): Promise<MatrixRoom[]>;\n\n /** Send a message */\n sendMessage(text: string, options?: MatrixMessageSendOptions): Promise<MatrixSendResult>;\n\n /** Send a reaction */\n sendReaction(roomId: string, eventId: string, emoji: string): Promise<MatrixSendResult>;\n\n /** Join a room */\n joinRoom(roomIdOrAlias: string): Promise<string>;\n\n /** Leave a room */\n leaveRoom(roomId: string): Promise<void>;\n\n /** Send typing indicator */\n sendTyping(roomId: string, typing: boolean, timeout?: number): Promise<void>;\n\n /** Send read receipt */\n sendReadReceipt(roomId: string, eventId: string): Promise<void>;\n}\n\n// ============================================================================\n// Event Payloads\n// ============================================================================\n\n/** Payload for MESSAGE_RECEIVED event */\nexport interface MatrixMessageReceivedPayload {\n message: MatrixMessage;\n room: MatrixRoom;\n runtime: IAgentRuntime;\n}\n\n/** Payload for MESSAGE_SENT event */\nexport interface MatrixMessageSentPayload {\n roomId: string;\n eventId: string;\n content: string;\n}\n\n/** Payload for ROOM_JOINED event */\nexport interface MatrixRoomJoinedPayload {\n room: MatrixRoom;\n}\n\n/** Payload for INVITE_RECEIVED event */\nexport interface MatrixInviteReceivedPayload {\n roomId: string;\n inviter: string;\n}\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\n/**\n * Check if a string is a valid Matrix user ID.\n */\nexport function isValidMatrixUserId(userId: string): boolean {\n return /^@[^:]+:.+$/.test(userId);\n}\n\n/**\n * Check if a string is a valid Matrix room ID.\n */\nexport function isValidMatrixRoomId(roomId: string): boolean {\n return /^![^:]+:.+$/.test(roomId);\n}\n\n/**\n * Check if a string is a valid Matrix room alias.\n */\nexport function isValidMatrixRoomAlias(alias: string): boolean {\n return /^#[^:]+:.+$/.test(alias);\n}\n\n/**\n * Extract the localpart from a Matrix ID.\n */\nexport function getMatrixLocalpart(matrixId: string): string {\n const match = matrixId.match(/^[@#!]([^:]+):/);\n return match ? match[1] : matrixId;\n}\n\n/**\n * Extract the server part from a Matrix ID.\n */\nexport function getMatrixServerpart(matrixId: string): string {\n const match = matrixId.match(/:(.+)$/);\n return match ? match[1] : \"\";\n}\n\n/**\n * Get the best display name for a Matrix user.\n */\nexport function getMatrixUserDisplayName(user: MatrixUserInfo): string {\n return user.displayName || getMatrixLocalpart(user.userId);\n}\n\n/**\n * Convert a media URL to an HTTP URL via homeserver.\n */\nexport function matrixMxcToHttp(mxcUrl: string, homeserver: string): string | undefined {\n if (!mxcUrl.startsWith(\"mxc://\")) {\n return undefined;\n }\n const [serverName, mediaId] = mxcUrl.slice(6).split(\"/\");\n if (!serverName || !mediaId) {\n return undefined;\n }\n const base = homeserver.replace(/\\/$/, \"\");\n return `${base}/_matrix/media/v3/download/${serverName}/${mediaId}`;\n}\n\n// ============================================================================\n// Custom Errors\n// ============================================================================\n\n/** Base error class for Matrix plugin errors */\nexport class MatrixPluginError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"MatrixPluginError\";\n }\n}\n\n/** Error when the Matrix service is not initialized */\nexport class MatrixServiceNotInitializedError extends MatrixPluginError {\n constructor(message: string = \"Matrix service is not initialized\") {\n super(message);\n this.name = \"MatrixServiceNotInitializedError\";\n }\n}\n\n/** Error when the Matrix client is not connected */\nexport class MatrixNotConnectedError extends MatrixPluginError {\n constructor(message: string = \"Matrix client is not connected\") {\n super(message);\n this.name = \"MatrixNotConnectedError\";\n }\n}\n\n/** Error when there is a configuration problem */\nexport class MatrixConfigurationError extends MatrixPluginError {\n settingName?: string;\n\n constructor(message: string, settingName?: string) {\n super(message);\n this.name = \"MatrixConfigurationError\";\n this.settingName = settingName;\n }\n}\n\n/** Error when an API call fails */\nexport class MatrixApiError extends MatrixPluginError {\n errcode?: string;\n\n constructor(message: string, errcode?: string) {\n super(message);\n this.name = \"MatrixApiError\";\n this.errcode = errcode;\n }\n}\n",
8
- "/**\n * Join room action for Matrix plugin.\n */\n\nimport type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n Memory,\n State,\n} from \"@elizaos/core\";\nimport { composePromptFromState, ModelType, parseJSONObjectFromText } from \"@elizaos/core\";\nimport type { MatrixService } from \"../service.js\";\nimport { isValidMatrixRoomAlias, isValidMatrixRoomId, MATRIX_SERVICE_NAME } from \"../types.js\";\n\nconst JOIN_ROOM_TEMPLATE = `You are helping to extract a Matrix room identifier.\n\nThe user wants to join a Matrix room.\n\nRecent conversation:\n{{recentMessages}}\n\nExtract the room ID (!room:server) or room alias (#alias:server) to join.\n\nRespond with a JSON object like:\n{\n \"room\": \"!room:matrix.org\"\n}\n\nor:\n\n{\n \"room\": \"#alias:matrix.org\"\n}\n\nOnly respond with the JSON object, no other text.`;\n\nexport const joinRoom: Action = {\n name: \"MATRIX_JOIN_ROOM\",\n similes: [\"JOIN_MATRIX_ROOM\", \"ENTER_ROOM\"],\n description: \"Join a Matrix room by ID or alias\",\n\n validate: async (_runtime: IAgentRuntime, message: Memory, _state?: State): Promise<boolean> => {\n return message.content.source === \"matrix\";\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n state?: State,\n _options?: HandlerOptions,\n callback?: HandlerCallback\n ): Promise<ActionResult | undefined> => {\n const matrixService = runtime.getService(MATRIX_SERVICE_NAME) as MatrixService | undefined;\n\n if (!matrixService || !matrixService.isConnected()) {\n if (callback) {\n await callback({ text: \"Matrix service is not available.\", source: \"matrix\" });\n }\n return { success: false, error: \"Matrix service not available\" };\n }\n\n // Compose prompt - ensure state has required properties\n const composedState: State = state ?? {\n values: {},\n data: {},\n text: \"\",\n };\n const prompt = await composePromptFromState({\n template: JOIN_ROOM_TEMPLATE,\n state: composedState,\n });\n\n // Extract room using LLM\n let room: string | null = null;\n for (let attempt = 0; attempt < 3; attempt++) {\n const response = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt,\n });\n\n const parsed = parseJSONObjectFromText(response as string);\n if (parsed?.room) {\n const roomStr = String(parsed.room).trim();\n if (isValidMatrixRoomId(roomStr) || isValidMatrixRoomAlias(roomStr)) {\n room = roomStr;\n break;\n }\n }\n }\n\n if (!room) {\n if (callback) {\n await callback({\n text: \"I couldn't understand which room you want me to join. Please specify a room ID (!room:server) or alias (#alias:server).\",\n source: \"matrix\",\n });\n }\n return { success: false, error: \"Could not extract room identifier\" };\n }\n\n // Join room\n try {\n const roomId = await matrixService.joinRoom(room);\n\n if (callback) {\n await callback({\n text: `Joined room ${room}.`,\n source: message.content.source as string,\n });\n }\n\n return {\n success: true,\n data: {\n roomId,\n joined: room,\n },\n };\n } catch (err) {\n const error = err instanceof Error ? err.message : String(err);\n if (callback) {\n await callback({\n text: `Failed to join room: ${error}`,\n source: \"matrix\",\n });\n }\n return { success: false, error };\n }\n },\n\n examples: [\n [\n {\n name: \"{{user1}}\",\n content: { text: \"Join #general:matrix.org\" },\n },\n {\n name: \"{{agent}}\",\n content: {\n text: \"I'll join that room.\",\n actions: [\"MATRIX_JOIN_ROOM\"],\n },\n },\n ],\n ],\n};\n",
9
- "/**\n * List rooms action for Matrix plugin.\n */\n\nimport type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n Memory,\n State,\n} from \"@elizaos/core\";\nimport type { MatrixService } from \"../service.js\";\nimport { MATRIX_SERVICE_NAME } from \"../types.js\";\n\nexport const listRooms: Action = {\n name: \"MATRIX_LIST_ROOMS\",\n similes: [\"LIST_MATRIX_ROOMS\", \"SHOW_ROOMS\", \"GET_ROOMS\", \"MY_ROOMS\"],\n description: \"List all Matrix rooms the bot has joined\",\n\n validate: async (_runtime: IAgentRuntime, message: Memory, _state?: State): Promise<boolean> => {\n return message.content.source === \"matrix\";\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state?: State,\n _options?: HandlerOptions,\n callback?: HandlerCallback\n ): Promise<ActionResult | undefined> => {\n const matrixService = runtime.getService(MATRIX_SERVICE_NAME) as MatrixService | undefined;\n\n if (!matrixService || !matrixService.isConnected()) {\n if (callback) {\n await callback({ text: \"Matrix service is not available.\", source: \"matrix\" });\n }\n return { success: false, error: \"Matrix service not available\" };\n }\n\n const rooms = await matrixService.getJoinedRooms();\n\n // Format room list\n const roomList = rooms.map((room) => {\n const name = room.name || room.canonicalAlias || room.roomId;\n const members = `${room.memberCount} members`;\n const encrypted = room.isEncrypted ? \" (encrypted)\" : \"\";\n return `- ${name} (${members})${encrypted}`;\n });\n\n const responseText =\n rooms.length > 0\n ? `Joined ${rooms.length} room(s):\\n\\n${roomList.join(\"\\n\")}`\n : \"Not currently in any rooms.\";\n\n if (callback) {\n await callback({\n text: responseText,\n source: message.content.source as string,\n });\n }\n\n return {\n success: true,\n data: {\n roomCount: rooms.length,\n rooms: rooms.map((r) => ({\n roomId: r.roomId,\n name: r.name,\n alias: r.canonicalAlias,\n memberCount: r.memberCount,\n isEncrypted: r.isEncrypted,\n })),\n },\n };\n },\n\n examples: [\n [\n {\n name: \"{{user1}}\",\n content: { text: \"What rooms are you in?\" },\n },\n {\n name: \"{{agent}}\",\n content: {\n text: \"I'll list the rooms I've joined.\",\n actions: [\"MATRIX_LIST_ROOMS\"],\n },\n },\n ],\n ],\n};\n",
10
- "/**\n * Send message action for Matrix plugin.\n */\n\nimport type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n Memory,\n State,\n} from \"@elizaos/core\";\nimport { composePromptFromState, ModelType, parseJSONObjectFromText } from \"@elizaos/core\";\nimport type { MatrixService } from \"../service.js\";\nimport { isValidMatrixRoomAlias, isValidMatrixRoomId, MATRIX_SERVICE_NAME } from \"../types.js\";\n\nconst SEND_MESSAGE_TEMPLATE = `You are helping to extract send message parameters for Matrix.\n\nThe user wants to send a message to a Matrix room.\n\nRecent conversation:\n{{recentMessages}}\n\nExtract the following:\n1. text: The message text to send\n2. roomId: The room ID (!room:server) or alias (#alias:server), or \"current\" for the current room\n\nRespond with a JSON object like:\n{\n \"text\": \"The message to send\",\n \"roomId\": \"current\"\n}\n\nOnly respond with the JSON object, no other text.`;\n\ninterface SendMessageParams {\n text: string;\n roomId: string;\n}\n\nexport const sendMessage: Action = {\n name: \"MATRIX_SEND_MESSAGE\",\n similes: [\"SEND_MATRIX_MESSAGE\", \"MESSAGE_MATRIX\", \"MATRIX_TEXT\"],\n description: \"Send a message to a Matrix room\",\n\n validate: async (_runtime: IAgentRuntime, message: Memory, _state?: State): Promise<boolean> => {\n return message.content.source === \"matrix\";\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n state?: State,\n _options?: HandlerOptions,\n callback?: HandlerCallback\n ): Promise<ActionResult | undefined> => {\n const matrixService = runtime.getService(MATRIX_SERVICE_NAME) as MatrixService | undefined;\n\n if (!matrixService || !matrixService.isConnected()) {\n if (callback) {\n await callback({ text: \"Matrix service is not available.\", source: \"matrix\" });\n }\n return { success: false, error: \"Matrix service not available\" };\n }\n\n // Compose prompt - ensure state has required properties\n const composedState: State = state ?? {\n values: {},\n data: {},\n text: \"\",\n };\n const prompt = await composePromptFromState({\n template: SEND_MESSAGE_TEMPLATE,\n state: composedState,\n });\n\n // Extract parameters using LLM\n let messageInfo: SendMessageParams | null = null;\n for (let attempt = 0; attempt < 3; attempt++) {\n const response = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt,\n });\n\n const parsed = parseJSONObjectFromText(response as string);\n if (parsed?.text) {\n messageInfo = {\n text: String(parsed.text),\n roomId: String(parsed.roomId || \"current\"),\n };\n break;\n }\n }\n\n if (!messageInfo || !messageInfo.text) {\n if (callback) {\n await callback({\n text: \"I couldn't understand what message you want me to send. Please try again.\",\n source: \"matrix\",\n });\n }\n return { success: false, error: \"Could not extract message parameters\" };\n }\n\n // Determine target room\n let targetRoomId: string | undefined;\n if (messageInfo.roomId && messageInfo.roomId !== \"current\") {\n if (isValidMatrixRoomId(messageInfo.roomId) || isValidMatrixRoomAlias(messageInfo.roomId)) {\n targetRoomId = messageInfo.roomId;\n }\n }\n\n // Get room from state context if available\n const roomData = state?.data?.room as Record<string, string> | undefined;\n if (!targetRoomId && roomData?.roomId) {\n targetRoomId = roomData.roomId;\n }\n\n if (!targetRoomId) {\n if (callback) {\n await callback({\n text: \"I couldn't determine which room to send to. Please specify a room.\",\n source: \"matrix\",\n });\n }\n return { success: false, error: \"Could not determine target room\" };\n }\n\n // Send message\n const result = await matrixService.sendMessage(messageInfo.text, {\n roomId: targetRoomId,\n });\n\n if (!result.success) {\n if (callback) {\n await callback({\n text: `Failed to send message: ${result.error}`,\n source: \"matrix\",\n });\n }\n return { success: false, error: result.error };\n }\n\n if (callback) {\n await callback({\n text: \"Message sent successfully.\",\n source: message.content.source as string,\n });\n }\n\n return {\n success: true,\n data: {\n roomId: result.roomId,\n eventId: result.eventId,\n },\n };\n },\n\n examples: [\n [\n {\n name: \"{{user1}}\",\n content: { text: \"Send a message saying 'Hello everyone!'\" },\n },\n {\n name: \"{{agent}}\",\n content: {\n text: \"I'll send that message to the room.\",\n actions: [\"MATRIX_SEND_MESSAGE\"],\n },\n },\n ],\n ],\n};\n",
11
- "/**\n * Send reaction action for Matrix plugin.\n */\n\nimport type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n Memory,\n State,\n} from \"@elizaos/core\";\nimport { composePromptFromState, ModelType, parseJSONObjectFromText } from \"@elizaos/core\";\nimport type { MatrixService } from \"../service.js\";\nimport { MATRIX_SERVICE_NAME } from \"../types.js\";\n\nconst SEND_REACTION_TEMPLATE = `You are helping to extract reaction parameters for Matrix.\n\nThe user wants to react to a Matrix message with an emoji.\n\nRecent conversation:\n{{recentMessages}}\n\nExtract the following:\n1. emoji: The emoji to react with (single emoji character)\n2. eventId: The event ID of the message to react to (starts with $)\n\nRespond with a JSON object like:\n{\n \"emoji\": \"👍\",\n \"eventId\": \"$event123\"\n}\n\nOnly respond with the JSON object, no other text.`;\n\nexport const sendReaction: Action = {\n name: \"MATRIX_SEND_REACTION\",\n similes: [\"REACT_MATRIX\", \"MATRIX_REACT\", \"ADD_MATRIX_REACTION\"],\n description: \"React to a Matrix message with an emoji\",\n\n validate: async (_runtime: IAgentRuntime, message: Memory, _state?: State): Promise<boolean> => {\n return message.content.source === \"matrix\";\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n state?: State,\n _options?: HandlerOptions,\n callback?: HandlerCallback\n ): Promise<ActionResult | undefined> => {\n const matrixService = runtime.getService(MATRIX_SERVICE_NAME) as MatrixService | undefined;\n\n if (!matrixService || !matrixService.isConnected()) {\n if (callback) {\n await callback({ text: \"Matrix service is not available.\", source: \"matrix\" });\n }\n return { success: false, error: \"Matrix service not available\" };\n }\n\n // Compose prompt - ensure state has required properties\n const composedState: State = state ?? {\n values: {},\n data: {},\n text: \"\",\n };\n const prompt = await composePromptFromState({\n template: SEND_REACTION_TEMPLATE,\n state: composedState,\n });\n\n // Extract parameters using LLM\n let reactionInfo: { emoji: string; eventId: string } | null = null;\n for (let attempt = 0; attempt < 3; attempt++) {\n const response = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt,\n });\n\n const parsed = parseJSONObjectFromText(response as string);\n if (parsed?.emoji && parsed?.eventId) {\n reactionInfo = {\n emoji: String(parsed.emoji),\n eventId: String(parsed.eventId),\n };\n break;\n }\n }\n\n if (!reactionInfo) {\n if (callback) {\n await callback({\n text: \"I couldn't understand the reaction request. Please specify the emoji and message.\",\n source: \"matrix\",\n });\n }\n return { success: false, error: \"Could not extract reaction parameters\" };\n }\n\n // Get room from state\n const roomData = state?.data?.room as Record<string, string> | undefined;\n const roomId = roomData?.roomId;\n if (!roomId) {\n if (callback) {\n await callback({\n text: \"I couldn't determine which room this is in.\",\n source: \"matrix\",\n });\n }\n return { success: false, error: \"Could not determine room\" };\n }\n\n // Send reaction\n const result = await matrixService.sendReaction(\n roomId,\n reactionInfo.eventId,\n reactionInfo.emoji\n );\n\n if (!result.success) {\n if (callback) {\n await callback({\n text: `Failed to add reaction: ${result.error}`,\n source: \"matrix\",\n });\n }\n return { success: false, error: result.error };\n }\n\n if (callback) {\n await callback({\n text: `Added ${reactionInfo.emoji} reaction.`,\n source: message.content.source as string,\n });\n }\n\n return {\n success: true,\n data: {\n emoji: reactionInfo.emoji,\n eventId: reactionInfo.eventId,\n roomId,\n },\n };\n },\n\n examples: [\n [\n {\n name: \"{{user1}}\",\n content: { text: \"React to the last message with a thumbs up\" },\n },\n {\n name: \"{{agent}}\",\n content: {\n text: \"I'll add a thumbs up reaction.\",\n actions: [\"MATRIX_SEND_REACTION\"],\n },\n },\n ],\n ],\n};\n",
12
- "/**\n * Room state provider for Matrix plugin.\n */\n\nimport type { IAgentRuntime, Memory, Provider, ProviderResult, State } from \"@elizaos/core\";\nimport type { MatrixService } from \"../service.js\";\nimport { getMatrixLocalpart, MATRIX_SERVICE_NAME } from \"../types.js\";\n\n/**\n * Provider that gives the agent information about the current Matrix room context.\n */\nexport const roomStateProvider: Provider = {\n name: \"matrixRoomState\",\n description: \"Provides information about the current Matrix room context\",\n\n get: async (runtime: IAgentRuntime, message: Memory, state: State): Promise<ProviderResult> => {\n // Only provide context for Matrix messages\n if (message.content.source !== \"matrix\") {\n return {\n data: {},\n values: {},\n text: \"\",\n };\n }\n\n const matrixService = runtime.getService(MATRIX_SERVICE_NAME) as MatrixService | undefined;\n\n if (!matrixService || !matrixService.isConnected()) {\n return {\n data: { connected: false },\n values: { connected: false },\n text: \"\",\n };\n }\n\n const agentName = state?.agentName || \"The agent\";\n\n // Get room from state if available\n const room = state?.data?.room as Record<string, unknown> | undefined;\n const roomId = room?.roomId as string | undefined;\n const roomName = room?.name as string | undefined;\n const isEncrypted = room?.isEncrypted as boolean | undefined;\n const isDirect = room?.isDirect as boolean | undefined;\n const memberCount = room?.memberCount as number | undefined;\n\n const userId = matrixService.getUserId();\n const displayName = getMatrixLocalpart(userId);\n\n let responseText = \"\";\n\n if (isDirect) {\n responseText = `${agentName} is in a direct message conversation on Matrix.`;\n } else {\n const roomLabel = roomName || roomId || \"a Matrix room\";\n responseText = `${agentName} is currently in Matrix room \"${roomLabel}\".`;\n\n if (memberCount) {\n responseText += ` The room has ${memberCount} members.`;\n }\n }\n\n if (isEncrypted) {\n responseText += \" This room has end-to-end encryption enabled.\";\n }\n\n responseText += `\\n\\nMatrix is a decentralized communication protocol. ${agentName} is logged in as ${userId}.`;\n\n return {\n data: {\n roomId,\n roomName,\n isEncrypted: isEncrypted || false,\n isDirect: isDirect || false,\n memberCount: memberCount || 0,\n userId,\n displayName,\n homeserver: matrixService.getHomeserver(),\n connected: true,\n },\n values: {\n roomId,\n roomName,\n isEncrypted: isEncrypted || false,\n isDirect: isDirect || false,\n memberCount: memberCount || 0,\n userId,\n },\n text: responseText,\n };\n },\n};\n",
13
- "/**\n * User context provider for Matrix plugin.\n */\n\nimport type { IAgentRuntime, Memory, Provider, ProviderResult, State } from \"@elizaos/core\";\nimport type { MatrixService } from \"../service.js\";\nimport {\n getMatrixLocalpart,\n getMatrixUserDisplayName,\n MATRIX_SERVICE_NAME,\n type MatrixUserInfo,\n} from \"../types.js\";\n\n/**\n * Provider that gives the agent information about the Matrix user context.\n */\nexport const userContextProvider: Provider = {\n name: \"matrixUserContext\",\n description: \"Provides information about the Matrix user in the current conversation\",\n\n get: async (runtime: IAgentRuntime, message: Memory, state: State): Promise<ProviderResult> => {\n // Only provide context for Matrix messages\n if (message.content.source !== \"matrix\") {\n return {\n data: {},\n values: {},\n text: \"\",\n };\n }\n\n const matrixService = runtime.getService(MATRIX_SERVICE_NAME) as MatrixService | undefined;\n\n if (!matrixService || !matrixService.isConnected()) {\n return {\n data: {},\n values: {},\n text: \"\",\n };\n }\n\n const agentName = state?.agentName || \"The agent\";\n\n // Try to get sender info from message metadata\n const metadata = message.content.metadata as Record<string, unknown> | undefined;\n const senderInfo = metadata?.senderInfo as MatrixUserInfo | undefined;\n\n if (!senderInfo) {\n return {\n data: {},\n values: {},\n text: \"\",\n };\n }\n\n const displayName = getMatrixUserDisplayName(senderInfo);\n const localpart = getMatrixLocalpart(senderInfo.userId);\n\n const responseText = `${agentName} is talking to ${displayName} (${senderInfo.userId}) on Matrix.`;\n\n return {\n data: {\n userId: senderInfo.userId,\n displayName,\n localpart,\n avatarUrl: senderInfo.avatarUrl,\n },\n values: {\n userId: senderInfo.userId,\n displayName,\n localpart,\n },\n text: responseText,\n };\n },\n};\n"
5
+ "/**\n * Matrix messaging integration plugin for ElizaOS.\n *\n * This plugin provides Matrix protocol integration using matrix-js-sdk.\n */\n\nimport type { Plugin, IAgentRuntime } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\n// Service\nexport { MatrixService } from \"./service.js\";\n\n// Types\nexport * from \"./types.js\";\n\n// Actions\nimport { sendMessage } from \"./actions/sendMessage.js\";\nimport { sendReaction } from \"./actions/sendReaction.js\";\nimport { listRooms } from \"./actions/listRooms.js\";\nimport { joinRoom } from \"./actions/joinRoom.js\";\n\nexport { sendMessage, sendReaction, listRooms, joinRoom };\n\n// Providers\nimport { roomStateProvider } from \"./providers/roomState.js\";\nimport { userContextProvider } from \"./providers/userContext.js\";\n\nexport { roomStateProvider, userContextProvider };\n\n// Import service for plugin\nimport { MatrixService } from \"./service.js\";\n\n/**\n * Matrix plugin definition.\n */\nconst matrixPlugin: Plugin = {\n name: \"matrix\",\n description: \"Matrix messaging integration plugin for ElizaOS with E2EE support\",\n\n services: [MatrixService],\n\n actions: [sendMessage, sendReaction, listRooms, joinRoom],\n\n providers: [roomStateProvider, userContextProvider],\n\n tests: [],\n\n init: async (\n _config: Record<string, string>,\n runtime: IAgentRuntime\n ): Promise<void> => {\n const homeserver = runtime.getSetting(\"MATRIX_HOMESERVER\");\n const userId = runtime.getSetting(\"MATRIX_USER_ID\");\n const accessToken = runtime.getSetting(\"MATRIX_ACCESS_TOKEN\");\n\n logger.info(\"=\".repeat(60));\n logger.info(\"Matrix Plugin Configuration\");\n logger.info(\"=\".repeat(60));\n logger.info(` Homeserver: ${homeserver ? `✓ ${homeserver}` : \"✗ Missing (required)\"}`);\n logger.info(` User ID: ${userId ? `✓ ${userId}` : \"✗ Missing (required)\"}`);\n logger.info(` Access Token: ${accessToken ? \"✓ Set\" : \"✗ Missing (required)\"}`);\n logger.info(\"=\".repeat(60));\n\n // Validate required settings\n const missing: string[] = [];\n if (!homeserver) missing.push(\"MATRIX_HOMESERVER\");\n if (!userId) missing.push(\"MATRIX_USER_ID\");\n if (!accessToken) missing.push(\"MATRIX_ACCESS_TOKEN\");\n\n if (missing.length > 0) {\n logger.warn(\n `Matrix plugin: Missing required configuration: ${missing.join(\", \")}`\n );\n }\n\n // Additional optional settings\n const deviceId = runtime.getSetting(\"MATRIX_DEVICE_ID\");\n const rooms = runtime.getSetting(\"MATRIX_ROOMS\");\n const autoJoin = runtime.getSetting(\"MATRIX_AUTO_JOIN\");\n const encryption = runtime.getSetting(\"MATRIX_ENCRYPTION\");\n const requireMention = runtime.getSetting(\"MATRIX_REQUIRE_MENTION\");\n\n if (deviceId) {\n logger.info(` Device ID: ${deviceId}`);\n }\n\n if (rooms) {\n logger.info(` Auto-join Rooms: ${rooms}`);\n }\n\n if (autoJoin === \"true\") {\n logger.info(\" Auto-join Invites: ✓ Enabled\");\n }\n\n if (encryption === \"true\") {\n logger.info(\" End-to-End Encryption: ✓ Enabled\");\n }\n\n if (requireMention === \"true\") {\n logger.info(\" Require Mention: ✓ Enabled (will only respond to mentions in rooms)\");\n }\n },\n};\n\nexport default matrixPlugin;\n",
6
+ "/**\n * Matrix service implementation for ElizaOS.\n *\n * This service provides Matrix messaging capabilities using matrix-js-sdk.\n */\n\nimport { Service, type IAgentRuntime, type EventPayload, logger } from \"@elizaos/core\";\nimport * as sdk from \"matrix-js-sdk\";\nimport {\n type IMatrixService,\n type MatrixMessage,\n type MatrixMessageSendOptions,\n type MatrixRoom,\n type MatrixSendResult,\n type MatrixSettings,\n type MatrixUserInfo,\n MatrixConfigurationError,\n MatrixEventTypes,\n MatrixNotConnectedError,\n MATRIX_SERVICE_NAME,\n getMatrixLocalpart,\n isValidMatrixRoomAlias,\n isValidMatrixRoomId,\n} from \"./types.js\";\n\n/**\n * Matrix messaging service for ElizaOS agents.\n */\nexport class MatrixService extends Service implements IMatrixService {\n static serviceType: string = MATRIX_SERVICE_NAME;\n\n capabilityDescription = \"Matrix messaging service for chat communication\";\n\n declare protected runtime: IAgentRuntime;\n private settings!: MatrixSettings;\n private client!: sdk.MatrixClient;\n private connected: boolean = false;\n private syncing: boolean = false;\n\n /**\n * Start the Matrix service.\n */\n static async start(runtime: IAgentRuntime): Promise<MatrixService> {\n const service = new MatrixService();\n await service.initialize(runtime);\n return service;\n }\n\n /**\n * Stop the Matrix service.\n */\n static override async stopRuntime(runtime: IAgentRuntime): Promise<void> {\n const service = runtime.getService(MATRIX_SERVICE_NAME) as MatrixService | undefined;\n if (service) {\n await service.stop();\n }\n }\n\n /**\n * Initialize the Matrix service.\n */\n private async initialize(runtime: IAgentRuntime): Promise<void> {\n this.runtime = runtime;\n\n // Load configuration\n this.settings = this.loadSettings();\n\n // Validate configuration\n this.validateSettings();\n\n // Create Matrix client\n this.client = sdk.createClient({\n baseUrl: this.settings.homeserver,\n userId: this.settings.userId,\n accessToken: this.settings.accessToken,\n deviceId: this.settings.deviceId,\n });\n\n // Set up event handlers\n this.setupEventHandlers();\n\n // Start client\n await this.connect();\n\n logger.info(\n `Matrix service initialized for ${this.settings.userId} on ${this.settings.homeserver}`\n );\n }\n\n /**\n * Load settings from runtime.\n */\n private loadSettings(): MatrixSettings {\n // Helper to safely get string settings\n const getStringSetting = (key: string): string | undefined => {\n const value = this.runtime.getSetting(key);\n return typeof value === \"string\" ? value : undefined;\n };\n\n const homeserver = getStringSetting(\"MATRIX_HOMESERVER\");\n const userId = getStringSetting(\"MATRIX_USER_ID\");\n const accessToken = getStringSetting(\"MATRIX_ACCESS_TOKEN\");\n const deviceId = getStringSetting(\"MATRIX_DEVICE_ID\");\n const roomsStr = getStringSetting(\"MATRIX_ROOMS\");\n const autoJoinStr = getStringSetting(\"MATRIX_AUTO_JOIN\");\n const encryptionStr = getStringSetting(\"MATRIX_ENCRYPTION\");\n const requireMentionStr = getStringSetting(\"MATRIX_REQUIRE_MENTION\");\n\n const rooms = roomsStr\n ? roomsStr.split(\",\").map((r: string) => r.trim()).filter(Boolean)\n : [];\n\n return {\n homeserver: homeserver || \"\",\n userId: userId || \"\",\n accessToken: accessToken || \"\",\n deviceId,\n rooms,\n autoJoin: autoJoinStr === \"true\",\n encryption: encryptionStr === \"true\",\n requireMention: requireMentionStr === \"true\",\n enabled: true,\n };\n }\n\n /**\n * Validate the settings.\n */\n private validateSettings(): void {\n if (!this.settings.homeserver) {\n throw new MatrixConfigurationError(\n \"MATRIX_HOMESERVER is required\",\n \"MATRIX_HOMESERVER\"\n );\n }\n\n if (!this.settings.userId) {\n throw new MatrixConfigurationError(\n \"MATRIX_USER_ID is required\",\n \"MATRIX_USER_ID\"\n );\n }\n\n if (!this.settings.accessToken) {\n throw new MatrixConfigurationError(\n \"MATRIX_ACCESS_TOKEN is required\",\n \"MATRIX_ACCESS_TOKEN\"\n );\n }\n }\n\n /**\n * Set up event handlers for the Matrix client.\n */\n private setupEventHandlers(): void {\n // Sync events\n this.client.on(sdk.ClientEvent.Sync, (state) => {\n if (state === \"PREPARED\") {\n this.syncing = true;\n logger.info(\"Matrix sync complete\");\n this.runtime.emitEvent(MatrixEventTypes.SYNC_COMPLETE, {\n runtime: this.runtime,\n } as EventPayload);\n }\n });\n\n // Room timeline events (messages)\n this.client.on(\n sdk.RoomEvent.Timeline,\n (event, room, toStartOfTimeline) => {\n if (toStartOfTimeline) return;\n if (event.getType() !== \"m.room.message\") return;\n if (event.getSender() === this.settings.userId) return;\n\n this.handleRoomMessage(event, room);\n }\n );\n\n // Room membership events\n this.client.on(sdk.RoomMemberEvent.Membership, (event, member) => {\n if (member.userId !== this.settings.userId) return;\n\n if (member.membership === \"invite\" && this.settings.autoJoin) {\n const roomId = event.getRoomId();\n if (roomId) {\n logger.info(`Auto-joining room ${roomId}`);\n this.client.joinRoom(roomId).catch((err) => {\n logger.error(`Failed to auto-join room: ${err.message}`);\n });\n }\n }\n });\n }\n\n /**\n * Handle an incoming room message.\n */\n private handleRoomMessage(\n event: sdk.MatrixEvent,\n room: sdk.Room | undefined\n ): void {\n const content = event.getContent();\n const msgType = content.msgtype;\n\n // Only handle text messages for now\n if (msgType !== \"m.text\") return;\n\n const roomId = event.getRoomId();\n if (!roomId || !room) return;\n\n // Check mention requirement\n if (this.settings.requireMention) {\n const body = content.body || \"\";\n const localpart = getMatrixLocalpart(this.settings.userId);\n const mentionPattern = new RegExp(`@?${localpart}`, \"i\");\n if (!mentionPattern.test(body)) {\n return;\n }\n }\n\n const sender = event.getSender();\n const senderMember = room.getMember(sender || \"\");\n\n const senderInfo: MatrixUserInfo = {\n userId: sender || \"\",\n displayName: senderMember?.name,\n avatarUrl: senderMember?.getMxcAvatarUrl() || undefined,\n };\n\n // Check for reply/thread\n const relatesTo = content[\"m.relates_to\"];\n const isEdit = relatesTo?.rel_type === \"m.replace\";\n const threadId = relatesTo?.rel_type === \"m.thread\" ? relatesTo.event_id : undefined;\n const replyTo = relatesTo?.[\"m.in_reply_to\"]?.event_id;\n\n const message: MatrixMessage = {\n eventId: event.getId() || \"\",\n roomId,\n sender: sender || \"\",\n senderInfo,\n content: content.body || \"\",\n msgType,\n formattedBody: content.formatted_body,\n timestamp: event.getTs(),\n threadId,\n replyTo,\n isEdit,\n replacesEventId: isEdit ? relatesTo?.event_id : undefined,\n };\n\n const matrixRoom: MatrixRoom = {\n roomId,\n name: room.name,\n topic: room.currentState.getStateEvents(\"m.room.topic\", \"\")?.getContent()?.topic,\n canonicalAlias: room.getCanonicalAlias() || undefined,\n isEncrypted: room.hasEncryptionStateEvent(),\n isDirect: this.client.getAccountData(\"m.direct\")?.getContent()?.[sender || \"\"]?.includes(roomId) || false,\n memberCount: room.getJoinedMemberCount(),\n };\n\n logger.debug(\n `Matrix message from ${senderInfo.displayName || sender} in ${room.name || roomId}: ${message.content.slice(0, 50)}...`\n );\n\n this.runtime.emitEvent(MatrixEventTypes.MESSAGE_RECEIVED, {\n message,\n room: matrixRoom,\n runtime: this.runtime,\n } as EventPayload);\n }\n\n /**\n * Connect to Matrix.\n */\n private async connect(): Promise<void> {\n await this.client.startClient({ initialSyncLimit: 10 });\n this.connected = true;\n\n // Wait for initial sync\n await new Promise<void>((resolve) => {\n const listener = (state: string) => {\n if (state === \"PREPARED\") {\n this.client.removeListener(sdk.ClientEvent.Sync, listener);\n resolve();\n }\n };\n this.client.on(sdk.ClientEvent.Sync, listener);\n });\n\n // Join configured rooms\n for (const room of this.settings.rooms) {\n try {\n await this.joinRoom(room);\n } catch (err) {\n logger.warn(`Failed to join room ${room}: ${err}`);\n }\n }\n }\n\n /**\n * Shutdown the service.\n */\n async stop(): Promise<void> {\n if (this.client) {\n this.client.stopClient();\n }\n this.connected = false;\n logger.info(\"Matrix service stopped\");\n }\n\n // ============================================================================\n // Public Interface\n // ============================================================================\n\n isConnected(): boolean {\n return this.connected && this.syncing;\n }\n\n getUserId(): string {\n return this.settings.userId;\n }\n\n getHomeserver(): string {\n return this.settings.homeserver;\n }\n\n async getJoinedRooms(): Promise<MatrixRoom[]> {\n const rooms = this.client.getRooms();\n return rooms\n .filter((room) => room.getMyMembership() === \"join\")\n .map((room) => ({\n roomId: room.roomId,\n name: room.name,\n topic: room.currentState.getStateEvents(\"m.room.topic\", \"\")?.getContent()?.topic,\n canonicalAlias: room.getCanonicalAlias() || undefined,\n isEncrypted: room.hasEncryptionStateEvent(),\n isDirect: false,\n memberCount: room.getJoinedMemberCount(),\n }));\n }\n\n async sendMessage(\n text: string,\n options?: MatrixMessageSendOptions\n ): Promise<MatrixSendResult> {\n if (!this.isConnected()) {\n throw new MatrixNotConnectedError();\n }\n\n const roomId = options?.roomId;\n if (!roomId) {\n return { success: false, error: \"Room ID is required\" };\n }\n\n // Resolve room ID from alias if needed\n let resolvedRoomId = roomId;\n if (isValidMatrixRoomAlias(roomId)) {\n const resolved = await this.client.getRoomIdForAlias(roomId);\n resolvedRoomId = resolved.room_id;\n }\n\n // Build content\n const content: Record<string, unknown> = {\n msgtype: \"m.text\",\n body: text,\n };\n\n if (options?.formatted) {\n content.format = \"org.matrix.custom.html\";\n content.formatted_body = text;\n }\n\n // Handle reply/thread\n if (options?.threadId || options?.replyTo) {\n content[\"m.relates_to\"] = {};\n\n if (options.threadId) {\n (content[\"m.relates_to\"] as Record<string, unknown>).rel_type = \"m.thread\";\n (content[\"m.relates_to\"] as Record<string, unknown>).event_id = options.threadId;\n }\n\n if (options.replyTo) {\n (content[\"m.relates_to\"] as Record<string, unknown>)[\"m.in_reply_to\"] = {\n event_id: options.replyTo,\n };\n }\n }\n\n const response = await this.client.sendMessage(resolvedRoomId, content);\n const eventId = response.event_id;\n\n this.runtime.emitEvent(MatrixEventTypes.MESSAGE_SENT, {\n roomId: resolvedRoomId,\n eventId,\n content: text,\n runtime: this.runtime,\n } as EventPayload);\n\n return {\n success: true,\n eventId,\n roomId: resolvedRoomId,\n };\n }\n\n async sendReaction(\n roomId: string,\n eventId: string,\n emoji: string\n ): Promise<MatrixSendResult> {\n if (!this.isConnected()) {\n throw new MatrixNotConnectedError();\n }\n\n const content = {\n \"m.relates_to\": {\n rel_type: \"m.annotation\",\n event_id: eventId,\n key: emoji,\n },\n };\n\n const response = await this.client.sendEvent(roomId, \"m.reaction\", content);\n\n return {\n success: true,\n eventId: response.event_id,\n roomId,\n };\n }\n\n async joinRoom(roomIdOrAlias: string): Promise<string> {\n if (!this.isConnected()) {\n throw new MatrixNotConnectedError();\n }\n\n const response = await this.client.joinRoom(roomIdOrAlias);\n const roomId = response.roomId;\n\n logger.info(`Joined room ${roomId}`);\n this.runtime.emitEvent(MatrixEventTypes.ROOM_JOINED, {\n room: { roomId },\n runtime: this.runtime,\n } as EventPayload);\n\n return roomId;\n }\n\n async leaveRoom(roomId: string): Promise<void> {\n if (!this.isConnected()) {\n throw new MatrixNotConnectedError();\n }\n\n await this.client.leave(roomId);\n logger.info(`Left room ${roomId}`);\n this.runtime.emitEvent(MatrixEventTypes.ROOM_LEFT, {\n roomId,\n runtime: this.runtime,\n } as EventPayload);\n }\n\n async sendTyping(\n roomId: string,\n typing: boolean,\n timeout: number = 30000\n ): Promise<void> {\n if (!this.isConnected()) {\n return;\n }\n\n await this.client.sendTyping(roomId, typing, timeout);\n }\n\n async sendReadReceipt(roomId: string, eventId: string): Promise<void> {\n if (!this.isConnected()) {\n return;\n }\n\n await this.client.sendReadReceipt(\n new sdk.MatrixEvent({ event_id: eventId, room_id: roomId })\n );\n }\n}\n",
7
+ "/**\n * Type definitions for the Matrix plugin.\n */\n\nimport type { Service, IAgentRuntime } from \"@elizaos/core\";\n\n// ============================================================================\n// Constants\n// ============================================================================\n\n/** Maximum message length for Matrix */\nexport const MAX_MATRIX_MESSAGE_LENGTH = 4000;\n\n/** Service name constant */\nexport const MATRIX_SERVICE_NAME = \"matrix\";\n\n// ============================================================================\n// Event Types\n// ============================================================================\n\n/** Event types emitted by the Matrix plugin */\nexport enum MatrixEventTypes {\n MESSAGE_RECEIVED = \"MATRIX_MESSAGE_RECEIVED\",\n MESSAGE_SENT = \"MATRIX_MESSAGE_SENT\",\n ROOM_JOINED = \"MATRIX_ROOM_JOINED\",\n ROOM_LEFT = \"MATRIX_ROOM_LEFT\",\n INVITE_RECEIVED = \"MATRIX_INVITE_RECEIVED\",\n REACTION_RECEIVED = \"MATRIX_REACTION_RECEIVED\",\n TYPING_RECEIVED = \"MATRIX_TYPING_RECEIVED\",\n SYNC_COMPLETE = \"MATRIX_SYNC_COMPLETE\",\n CONNECTION_READY = \"MATRIX_CONNECTION_READY\",\n CONNECTION_LOST = \"MATRIX_CONNECTION_LOST\",\n}\n\n// ============================================================================\n// Configuration Types\n// ============================================================================\n\n/** Configuration settings for the Matrix plugin */\nexport interface MatrixSettings {\n /** Matrix homeserver URL */\n homeserver: string;\n /** Matrix user ID (@user:homeserver) */\n userId: string;\n /** Access token for authentication */\n accessToken: string;\n /** Device ID for this session */\n deviceId?: string;\n /** Rooms to auto-join */\n rooms: string[];\n /** Whether to auto-accept invites */\n autoJoin: boolean;\n /** Enable end-to-end encryption */\n encryption: boolean;\n /** Require mention to respond in rooms */\n requireMention: boolean;\n /** Whether this configuration is enabled */\n enabled: boolean;\n}\n\n// ============================================================================\n// Message Types\n// ============================================================================\n\n/** Information about a Matrix user */\nexport interface MatrixUserInfo {\n /** Matrix user ID (@user:homeserver) */\n userId: string;\n /** Display name */\n displayName?: string;\n /** Avatar URL */\n avatarUrl?: string;\n}\n\n/** Represents a Matrix room */\nexport interface MatrixRoom {\n /** Room ID (!room:homeserver) */\n roomId: string;\n /** Room name */\n name?: string;\n /** Room topic */\n topic?: string;\n /** Room alias (#alias:homeserver) */\n canonicalAlias?: string;\n /** Whether room is encrypted */\n isEncrypted: boolean;\n /** Whether this is a direct message room */\n isDirect: boolean;\n /** Member count */\n memberCount: number;\n}\n\n/** Represents a Matrix message */\nexport interface MatrixMessage {\n /** Event ID */\n eventId: string;\n /** Room ID */\n roomId: string;\n /** Sender user ID */\n sender: string;\n /** Sender info */\n senderInfo: MatrixUserInfo;\n /** Message content */\n content: string;\n /** Message type (m.text, m.image, etc.) */\n msgType: string;\n /** Formatted body (HTML) */\n formattedBody?: string;\n /** Timestamp */\n timestamp: number;\n /** Thread root event ID */\n threadId?: string;\n /** Reply-to event ID */\n replyTo?: string;\n /** Whether this is an edit */\n isEdit: boolean;\n /** Original event ID if this is an edit */\n replacesEventId?: string;\n}\n\n/** Options for sending a message */\nexport interface MatrixMessageSendOptions {\n /** Room ID or alias to send to */\n roomId?: string;\n /** Event ID to reply to */\n replyTo?: string;\n /** Thread root event ID */\n threadId?: string;\n /** Format as HTML */\n formatted?: boolean;\n /** Media URL to attach */\n mediaUrl?: string;\n}\n\n/** Result from sending a message */\nexport interface MatrixSendResult {\n /** Whether the send succeeded */\n success: boolean;\n /** Event ID of the sent message */\n eventId?: string;\n /** Room ID */\n roomId?: string;\n /** Error message if failed */\n error?: string;\n}\n\n// ============================================================================\n// Service Interface\n// ============================================================================\n\n/** Interface for the Matrix service */\nexport interface IMatrixService extends Service {\n /** Check if the service is connected */\n isConnected(): boolean;\n\n /** Get the user ID */\n getUserId(): string;\n\n /** Get the homeserver URL */\n getHomeserver(): string;\n\n /** Get joined rooms */\n getJoinedRooms(): Promise<MatrixRoom[]>;\n\n /** Send a message */\n sendMessage(\n text: string,\n options?: MatrixMessageSendOptions\n ): Promise<MatrixSendResult>;\n\n /** Send a reaction */\n sendReaction(\n roomId: string,\n eventId: string,\n emoji: string\n ): Promise<MatrixSendResult>;\n\n /** Join a room */\n joinRoom(roomIdOrAlias: string): Promise<string>;\n\n /** Leave a room */\n leaveRoom(roomId: string): Promise<void>;\n\n /** Send typing indicator */\n sendTyping(roomId: string, typing: boolean, timeout?: number): Promise<void>;\n\n /** Send read receipt */\n sendReadReceipt(roomId: string, eventId: string): Promise<void>;\n}\n\n// ============================================================================\n// Event Payloads\n// ============================================================================\n\n/** Payload for MESSAGE_RECEIVED event */\nexport interface MatrixMessageReceivedPayload {\n message: MatrixMessage;\n room: MatrixRoom;\n runtime: IAgentRuntime;\n}\n\n/** Payload for MESSAGE_SENT event */\nexport interface MatrixMessageSentPayload {\n roomId: string;\n eventId: string;\n content: string;\n}\n\n/** Payload for ROOM_JOINED event */\nexport interface MatrixRoomJoinedPayload {\n room: MatrixRoom;\n}\n\n/** Payload for INVITE_RECEIVED event */\nexport interface MatrixInviteReceivedPayload {\n roomId: string;\n inviter: string;\n}\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\n/**\n * Check if a string is a valid Matrix user ID.\n */\nexport function isValidMatrixUserId(userId: string): boolean {\n return /^@[^:]+:.+$/.test(userId);\n}\n\n/**\n * Check if a string is a valid Matrix room ID.\n */\nexport function isValidMatrixRoomId(roomId: string): boolean {\n return /^![^:]+:.+$/.test(roomId);\n}\n\n/**\n * Check if a string is a valid Matrix room alias.\n */\nexport function isValidMatrixRoomAlias(alias: string): boolean {\n return /^#[^:]+:.+$/.test(alias);\n}\n\n/**\n * Extract the localpart from a Matrix ID.\n */\nexport function getMatrixLocalpart(matrixId: string): string {\n const match = matrixId.match(/^[@#!]([^:]+):/);\n return match ? match[1] : matrixId;\n}\n\n/**\n * Extract the server part from a Matrix ID.\n */\nexport function getMatrixServerpart(matrixId: string): string {\n const match = matrixId.match(/:(.+)$/);\n return match ? match[1] : \"\";\n}\n\n/**\n * Get the best display name for a Matrix user.\n */\nexport function getMatrixUserDisplayName(user: MatrixUserInfo): string {\n return user.displayName || getMatrixLocalpart(user.userId);\n}\n\n/**\n * Convert a media URL to an HTTP URL via homeserver.\n */\nexport function matrixMxcToHttp(\n mxcUrl: string,\n homeserver: string\n): string | undefined {\n if (!mxcUrl.startsWith(\"mxc://\")) {\n return undefined;\n }\n const [serverName, mediaId] = mxcUrl.slice(6).split(\"/\");\n if (!serverName || !mediaId) {\n return undefined;\n }\n const base = homeserver.replace(/\\/$/, \"\");\n return `${base}/_matrix/media/v3/download/${serverName}/${mediaId}`;\n}\n\n// ============================================================================\n// Custom Errors\n// ============================================================================\n\n/** Base error class for Matrix plugin errors */\nexport class MatrixPluginError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"MatrixPluginError\";\n }\n}\n\n/** Error when the Matrix service is not initialized */\nexport class MatrixServiceNotInitializedError extends MatrixPluginError {\n constructor(message: string = \"Matrix service is not initialized\") {\n super(message);\n this.name = \"MatrixServiceNotInitializedError\";\n }\n}\n\n/** Error when the Matrix client is not connected */\nexport class MatrixNotConnectedError extends MatrixPluginError {\n constructor(message: string = \"Matrix client is not connected\") {\n super(message);\n this.name = \"MatrixNotConnectedError\";\n }\n}\n\n/** Error when there is a configuration problem */\nexport class MatrixConfigurationError extends MatrixPluginError {\n settingName?: string;\n\n constructor(message: string, settingName?: string) {\n super(message);\n this.name = \"MatrixConfigurationError\";\n this.settingName = settingName;\n }\n}\n\n/** Error when an API call fails */\nexport class MatrixApiError extends MatrixPluginError {\n errcode?: string;\n\n constructor(message: string, errcode?: string) {\n super(message);\n this.name = \"MatrixApiError\";\n this.errcode = errcode;\n }\n}\n",
8
+ "/**\n * Send message action for Matrix plugin.\n */\n\nimport type { Action, ActionResult, HandlerCallback, HandlerOptions, IAgentRuntime, Memory, State } from \"@elizaos/core\";\nimport { composePromptFromState, ModelType, parseJSONObjectFromText } from \"@elizaos/core\";\nimport { MatrixService } from \"../service.js\";\nimport { MATRIX_SERVICE_NAME, isValidMatrixRoomId, isValidMatrixRoomAlias } from \"../types.js\";\n\nconst SEND_MESSAGE_TEMPLATE = `You are helping to extract send message parameters for Matrix.\n\nThe user wants to send a message to a Matrix room.\n\nRecent conversation:\n{{recentMessages}}\n\nExtract the following:\n1. text: The message text to send\n2. roomId: The room ID (!room:server) or alias (#alias:server), or \"current\" for the current room\n\nRespond with a JSON object like:\n{\n \"text\": \"The message to send\",\n \"roomId\": \"current\"\n}\n\nOnly respond with the JSON object, no other text.`;\n\ninterface SendMessageParams {\n text: string;\n roomId: string;\n}\n\nexport const sendMessage: Action = {\n name: \"MATRIX_SEND_MESSAGE\",\n similes: [\n \"SEND_MATRIX_MESSAGE\",\n \"MESSAGE_MATRIX\",\n \"MATRIX_TEXT\",\n ],\n description: \"Send a message to a Matrix room\",\n\n validate: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state?: State\n ): Promise<boolean> => {\n return message.content.source === \"matrix\";\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n state?: State,\n _options?: HandlerOptions,\n callback?: HandlerCallback\n ): Promise<ActionResult | undefined> => {\n const matrixService = runtime.getService(MATRIX_SERVICE_NAME) as MatrixService | undefined;\n\n if (!matrixService || !matrixService.isConnected()) {\n if (callback) {\n await callback({ text: \"Matrix service is not available.\", source: \"matrix\" });\n }\n return { success: false, error: \"Matrix service not available\" };\n }\n\n // Compose prompt - ensure state has required properties\n const composedState: State = state ?? {\n values: {},\n data: {},\n text: \"\",\n };\n const prompt = await composePromptFromState({\n template: SEND_MESSAGE_TEMPLATE,\n state: composedState,\n });\n\n // Extract parameters using LLM\n let messageInfo: SendMessageParams | null = null;\n for (let attempt = 0; attempt < 3; attempt++) {\n const response = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt,\n });\n\n const parsed = parseJSONObjectFromText(response as string);\n if (parsed?.text) {\n messageInfo = {\n text: String(parsed.text),\n roomId: String(parsed.roomId || \"current\"),\n };\n break;\n }\n }\n\n if (!messageInfo || !messageInfo.text) {\n if (callback) {\n await callback({\n text: \"I couldn't understand what message you want me to send. Please try again.\",\n source: \"matrix\",\n });\n }\n return { success: false, error: \"Could not extract message parameters\" };\n }\n\n // Determine target room\n let targetRoomId: string | undefined;\n if (messageInfo.roomId && messageInfo.roomId !== \"current\") {\n if (isValidMatrixRoomId(messageInfo.roomId) || isValidMatrixRoomAlias(messageInfo.roomId)) {\n targetRoomId = messageInfo.roomId;\n }\n }\n\n // Get room from state context if available\n const roomData = state?.data?.room as Record<string, string> | undefined;\n if (!targetRoomId && roomData?.roomId) {\n targetRoomId = roomData.roomId;\n }\n\n if (!targetRoomId) {\n if (callback) {\n await callback({\n text: \"I couldn't determine which room to send to. Please specify a room.\",\n source: \"matrix\",\n });\n }\n return { success: false, error: \"Could not determine target room\" };\n }\n\n // Send message\n const result = await matrixService.sendMessage(messageInfo.text, {\n roomId: targetRoomId,\n });\n\n if (!result.success) {\n if (callback) {\n await callback({\n text: `Failed to send message: ${result.error}`,\n source: \"matrix\",\n });\n }\n return { success: false, error: result.error };\n }\n\n if (callback) {\n await callback({\n text: \"Message sent successfully.\",\n source: message.content.source as string,\n });\n }\n\n return {\n success: true,\n data: {\n roomId: result.roomId,\n eventId: result.eventId,\n },\n };\n },\n\n examples: [\n [\n {\n name: \"{{user1}}\",\n content: { text: \"Send a message saying 'Hello everyone!'\" },\n },\n {\n name: \"{{agent}}\",\n content: {\n text: \"I'll send that message to the room.\",\n actions: [\"MATRIX_SEND_MESSAGE\"],\n },\n },\n ],\n ],\n};\n",
9
+ "/**\n * Send reaction action for Matrix plugin.\n */\n\nimport type { Action, ActionResult, HandlerCallback, HandlerOptions, IAgentRuntime, Memory, State } from \"@elizaos/core\";\nimport { composePromptFromState, ModelType, parseJSONObjectFromText } from \"@elizaos/core\";\nimport { MatrixService } from \"../service.js\";\nimport { MATRIX_SERVICE_NAME } from \"../types.js\";\n\nconst SEND_REACTION_TEMPLATE = `You are helping to extract reaction parameters for Matrix.\n\nThe user wants to react to a Matrix message with an emoji.\n\nRecent conversation:\n{{recentMessages}}\n\nExtract the following:\n1. emoji: The emoji to react with (single emoji character)\n2. eventId: The event ID of the message to react to (starts with $)\n\nRespond with a JSON object like:\n{\n \"emoji\": \"👍\",\n \"eventId\": \"$event123\"\n}\n\nOnly respond with the JSON object, no other text.`;\n\nexport const sendReaction: Action = {\n name: \"MATRIX_SEND_REACTION\",\n similes: [\n \"REACT_MATRIX\",\n \"MATRIX_REACT\",\n \"ADD_MATRIX_REACTION\",\n ],\n description: \"React to a Matrix message with an emoji\",\n\n validate: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state?: State\n ): Promise<boolean> => {\n return message.content.source === \"matrix\";\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n state?: State,\n _options?: HandlerOptions,\n callback?: HandlerCallback\n ): Promise<ActionResult | undefined> => {\n const matrixService = runtime.getService(MATRIX_SERVICE_NAME) as MatrixService | undefined;\n\n if (!matrixService || !matrixService.isConnected()) {\n if (callback) {\n await callback({ text: \"Matrix service is not available.\", source: \"matrix\" });\n }\n return { success: false, error: \"Matrix service not available\" };\n }\n\n // Compose prompt - ensure state has required properties\n const composedState: State = state ?? {\n values: {},\n data: {},\n text: \"\",\n };\n const prompt = await composePromptFromState({\n template: SEND_REACTION_TEMPLATE,\n state: composedState,\n });\n\n // Extract parameters using LLM\n let reactionInfo: { emoji: string; eventId: string } | null = null;\n for (let attempt = 0; attempt < 3; attempt++) {\n const response = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt,\n });\n\n const parsed = parseJSONObjectFromText(response as string);\n if (parsed?.emoji && parsed?.eventId) {\n reactionInfo = {\n emoji: String(parsed.emoji),\n eventId: String(parsed.eventId),\n };\n break;\n }\n }\n\n if (!reactionInfo) {\n if (callback) {\n await callback({\n text: \"I couldn't understand the reaction request. Please specify the emoji and message.\",\n source: \"matrix\",\n });\n }\n return { success: false, error: \"Could not extract reaction parameters\" };\n }\n\n // Get room from state\n const roomData = state?.data?.room as Record<string, string> | undefined;\n const roomId = roomData?.roomId;\n if (!roomId) {\n if (callback) {\n await callback({\n text: \"I couldn't determine which room this is in.\",\n source: \"matrix\",\n });\n }\n return { success: false, error: \"Could not determine room\" };\n }\n\n // Send reaction\n const result = await matrixService.sendReaction(\n roomId,\n reactionInfo.eventId,\n reactionInfo.emoji\n );\n\n if (!result.success) {\n if (callback) {\n await callback({\n text: `Failed to add reaction: ${result.error}`,\n source: \"matrix\",\n });\n }\n return { success: false, error: result.error };\n }\n\n if (callback) {\n await callback({\n text: `Added ${reactionInfo.emoji} reaction.`,\n source: message.content.source as string,\n });\n }\n\n return {\n success: true,\n data: {\n emoji: reactionInfo.emoji,\n eventId: reactionInfo.eventId,\n roomId,\n },\n };\n },\n\n examples: [\n [\n {\n name: \"{{user1}}\",\n content: { text: \"React to the last message with a thumbs up\" },\n },\n {\n name: \"{{agent}}\",\n content: {\n text: \"I'll add a thumbs up reaction.\",\n actions: [\"MATRIX_SEND_REACTION\"],\n },\n },\n ],\n ],\n};\n",
10
+ "/**\n * List rooms action for Matrix plugin.\n */\n\nimport type { Action, ActionResult, HandlerCallback, HandlerOptions, IAgentRuntime, Memory, State } from \"@elizaos/core\";\nimport { MatrixService } from \"../service.js\";\nimport { MATRIX_SERVICE_NAME } from \"../types.js\";\n\nexport const listRooms: Action = {\n name: \"MATRIX_LIST_ROOMS\",\n similes: [\n \"LIST_MATRIX_ROOMS\",\n \"SHOW_ROOMS\",\n \"GET_ROOMS\",\n \"MY_ROOMS\",\n ],\n description: \"List all Matrix rooms the bot has joined\",\n\n validate: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state?: State\n ): Promise<boolean> => {\n return message.content.source === \"matrix\";\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state?: State,\n _options?: HandlerOptions,\n callback?: HandlerCallback\n ): Promise<ActionResult | undefined> => {\n const matrixService = runtime.getService(MATRIX_SERVICE_NAME) as MatrixService | undefined;\n\n if (!matrixService || !matrixService.isConnected()) {\n if (callback) {\n await callback({ text: \"Matrix service is not available.\", source: \"matrix\" });\n }\n return { success: false, error: \"Matrix service not available\" };\n }\n\n const rooms = await matrixService.getJoinedRooms();\n\n // Format room list\n const roomList = rooms.map((room) => {\n const name = room.name || room.canonicalAlias || room.roomId;\n const members = `${room.memberCount} members`;\n const encrypted = room.isEncrypted ? \" (encrypted)\" : \"\";\n return `- ${name} (${members})${encrypted}`;\n });\n\n const responseText =\n rooms.length > 0\n ? `Joined ${rooms.length} room(s):\\n\\n${roomList.join(\"\\n\")}`\n : \"Not currently in any rooms.\";\n\n if (callback) {\n await callback({\n text: responseText,\n source: message.content.source as string,\n });\n }\n\n return {\n success: true,\n data: {\n roomCount: rooms.length,\n rooms: rooms.map((r) => ({\n roomId: r.roomId,\n name: r.name,\n alias: r.canonicalAlias,\n memberCount: r.memberCount,\n isEncrypted: r.isEncrypted,\n })),\n },\n };\n },\n\n examples: [\n [\n {\n name: \"{{user1}}\",\n content: { text: \"What rooms are you in?\" },\n },\n {\n name: \"{{agent}}\",\n content: {\n text: \"I'll list the rooms I've joined.\",\n actions: [\"MATRIX_LIST_ROOMS\"],\n },\n },\n ],\n ],\n};\n",
11
+ "/**\n * Join room action for Matrix plugin.\n */\n\nimport type { Action, ActionResult, HandlerCallback, HandlerOptions, IAgentRuntime, Memory, State } from \"@elizaos/core\";\nimport { composePromptFromState, ModelType, parseJSONObjectFromText } from \"@elizaos/core\";\nimport { MatrixService } from \"../service.js\";\nimport { MATRIX_SERVICE_NAME, isValidMatrixRoomId, isValidMatrixRoomAlias } from \"../types.js\";\n\nconst JOIN_ROOM_TEMPLATE = `You are helping to extract a Matrix room identifier.\n\nThe user wants to join a Matrix room.\n\nRecent conversation:\n{{recentMessages}}\n\nExtract the room ID (!room:server) or room alias (#alias:server) to join.\n\nRespond with a JSON object like:\n{\n \"room\": \"!room:matrix.org\"\n}\n\nor:\n\n{\n \"room\": \"#alias:matrix.org\"\n}\n\nOnly respond with the JSON object, no other text.`;\n\nexport const joinRoom: Action = {\n name: \"MATRIX_JOIN_ROOM\",\n similes: [\n \"JOIN_MATRIX_ROOM\",\n \"ENTER_ROOM\",\n ],\n description: \"Join a Matrix room by ID or alias\",\n\n validate: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state?: State\n ): Promise<boolean> => {\n return message.content.source === \"matrix\";\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n state?: State,\n _options?: HandlerOptions,\n callback?: HandlerCallback\n ): Promise<ActionResult | undefined> => {\n const matrixService = runtime.getService(MATRIX_SERVICE_NAME) as MatrixService | undefined;\n\n if (!matrixService || !matrixService.isConnected()) {\n if (callback) {\n await callback({ text: \"Matrix service is not available.\", source: \"matrix\" });\n }\n return { success: false, error: \"Matrix service not available\" };\n }\n\n // Compose prompt - ensure state has required properties\n const composedState: State = state ?? {\n values: {},\n data: {},\n text: \"\",\n };\n const prompt = await composePromptFromState({\n template: JOIN_ROOM_TEMPLATE,\n state: composedState,\n });\n\n // Extract room using LLM\n let room: string | null = null;\n for (let attempt = 0; attempt < 3; attempt++) {\n const response = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt,\n });\n\n const parsed = parseJSONObjectFromText(response as string);\n if (parsed?.room) {\n const roomStr = String(parsed.room).trim();\n if (isValidMatrixRoomId(roomStr) || isValidMatrixRoomAlias(roomStr)) {\n room = roomStr;\n break;\n }\n }\n }\n\n if (!room) {\n if (callback) {\n await callback({\n text: \"I couldn't understand which room you want me to join. Please specify a room ID (!room:server) or alias (#alias:server).\",\n source: \"matrix\",\n });\n }\n return { success: false, error: \"Could not extract room identifier\" };\n }\n\n // Join room\n try {\n const roomId = await matrixService.joinRoom(room);\n\n if (callback) {\n await callback({\n text: `Joined room ${room}.`,\n source: message.content.source as string,\n });\n }\n\n return {\n success: true,\n data: {\n roomId,\n joined: room,\n },\n };\n } catch (err) {\n const error = err instanceof Error ? err.message : String(err);\n if (callback) {\n await callback({\n text: `Failed to join room: ${error}`,\n source: \"matrix\",\n });\n }\n return { success: false, error };\n }\n },\n\n examples: [\n [\n {\n name: \"{{user1}}\",\n content: { text: \"Join #general:matrix.org\" },\n },\n {\n name: \"{{agent}}\",\n content: {\n text: \"I'll join that room.\",\n actions: [\"MATRIX_JOIN_ROOM\"],\n },\n },\n ],\n ],\n};\n",
12
+ "/**\n * Room state provider for Matrix plugin.\n */\n\nimport type { Provider, ProviderResult, IAgentRuntime, Memory, State } from \"@elizaos/core\";\nimport { MatrixService } from \"../service.js\";\nimport { MATRIX_SERVICE_NAME, getMatrixLocalpart } from \"../types.js\";\n\n/**\n * Provider that gives the agent information about the current Matrix room context.\n */\nexport const roomStateProvider: Provider = {\n name: \"matrixRoomState\",\n description: \"Provides information about the current Matrix room context\",\n\n get: async (\n runtime: IAgentRuntime,\n message: Memory,\n state: State\n ): Promise<ProviderResult> => {\n // Only provide context for Matrix messages\n if (message.content.source !== \"matrix\") {\n return {\n data: {},\n values: {},\n text: \"\",\n };\n }\n\n const matrixService = runtime.getService(MATRIX_SERVICE_NAME) as MatrixService | undefined;\n\n if (!matrixService || !matrixService.isConnected()) {\n return {\n data: { connected: false },\n values: { connected: false },\n text: \"\",\n };\n }\n\n const agentName = state?.agentName || \"The agent\";\n\n // Get room from state if available\n const room = state?.data?.room as Record<string, unknown> | undefined;\n const roomId = room?.roomId as string | undefined;\n const roomName = room?.name as string | undefined;\n const isEncrypted = room?.isEncrypted as boolean | undefined;\n const isDirect = room?.isDirect as boolean | undefined;\n const memberCount = room?.memberCount as number | undefined;\n\n const userId = matrixService.getUserId();\n const displayName = getMatrixLocalpart(userId);\n\n let responseText = \"\";\n\n if (isDirect) {\n responseText = `${agentName} is in a direct message conversation on Matrix.`;\n } else {\n const roomLabel = roomName || roomId || \"a Matrix room\";\n responseText = `${agentName} is currently in Matrix room \"${roomLabel}\".`;\n \n if (memberCount) {\n responseText += ` The room has ${memberCount} members.`;\n }\n }\n\n if (isEncrypted) {\n responseText += \" This room has end-to-end encryption enabled.\";\n }\n\n responseText += `\\n\\nMatrix is a decentralized communication protocol. ${agentName} is logged in as ${userId}.`;\n\n return {\n data: {\n roomId,\n roomName,\n isEncrypted: isEncrypted || false,\n isDirect: isDirect || false,\n memberCount: memberCount || 0,\n userId,\n displayName,\n homeserver: matrixService.getHomeserver(),\n connected: true,\n },\n values: {\n roomId,\n roomName,\n isEncrypted: isEncrypted || false,\n isDirect: isDirect || false,\n memberCount: memberCount || 0,\n userId,\n },\n text: responseText,\n };\n },\n};\n",
13
+ "/**\n * User context provider for Matrix plugin.\n */\n\nimport type { Provider, ProviderResult, IAgentRuntime, Memory, State } from \"@elizaos/core\";\nimport { MatrixService } from \"../service.js\";\nimport {\n MATRIX_SERVICE_NAME,\n getMatrixLocalpart,\n getMatrixUserDisplayName,\n type MatrixUserInfo,\n} from \"../types.js\";\n\n/**\n * Provider that gives the agent information about the Matrix user context.\n */\nexport const userContextProvider: Provider = {\n name: \"matrixUserContext\",\n description: \"Provides information about the Matrix user in the current conversation\",\n\n get: async (\n runtime: IAgentRuntime,\n message: Memory,\n state: State\n ): Promise<ProviderResult> => {\n // Only provide context for Matrix messages\n if (message.content.source !== \"matrix\") {\n return {\n data: {},\n values: {},\n text: \"\",\n };\n }\n\n const matrixService = runtime.getService(MATRIX_SERVICE_NAME) as MatrixService | undefined;\n\n if (!matrixService || !matrixService.isConnected()) {\n return {\n data: {},\n values: {},\n text: \"\",\n };\n }\n\n const agentName = state?.agentName || \"The agent\";\n\n // Try to get sender info from message metadata\n const metadata = message.content.metadata as Record<string, unknown> | undefined;\n const senderInfo = metadata?.senderInfo as MatrixUserInfo | undefined;\n\n if (!senderInfo) {\n return {\n data: {},\n values: {},\n text: \"\",\n };\n }\n\n const displayName = getMatrixUserDisplayName(senderInfo);\n const localpart = getMatrixLocalpart(senderInfo.userId);\n\n const responseText = `${agentName} is talking to ${displayName} (${senderInfo.userId}) on Matrix.`;\n\n return {\n data: {\n userId: senderInfo.userId,\n displayName,\n localpart,\n avatarUrl: senderInfo.avatarUrl,\n },\n values: {\n userId: senderInfo.userId,\n displayName,\n localpart,\n },\n text: responseText,\n };\n },\n};\n"
14
14
  ],
15
- "mappings": "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",
16
- "debugId": "A4D19A2C309BC12964756E2164756E21",
15
+ "mappings": "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",
16
+ "debugId": "35E58066575BB30D64756E2164756E21",
17
17
  "names": []
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"roomState.d.ts","sourceRoot":"","sources":["../../src/providers/roomState.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAyB,QAAQ,EAAyB,MAAM,eAAe,CAAC;AAI5F;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,QA+E/B,CAAC"}
1
+ {"version":3,"file":"roomState.d.ts","sourceRoot":"","sources":["../../src/providers/roomState.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAgD,MAAM,eAAe,CAAC;AAI5F;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAmF/B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"userContext.d.ts","sourceRoot":"","sources":["../../src/providers/userContext.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAyB,QAAQ,EAAyB,MAAM,eAAe,CAAC;AAS5F;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,QA0DjC,CAAC"}
1
+ {"version":3,"file":"userContext.d.ts","sourceRoot":"","sources":["../../src/providers/userContext.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAgD,MAAM,eAAe,CAAC;AAS5F;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,QA8DjC,CAAC"}
package/dist/service.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * This service provides Matrix messaging capabilities using matrix-js-sdk.
5
5
  */
6
- import { type IAgentRuntime, Service } from "@elizaos/core";
6
+ import { Service, type IAgentRuntime } from "@elizaos/core";
7
7
  import { type IMatrixService, type MatrixMessageSendOptions, type MatrixRoom, type MatrixSendResult } from "./types.js";
8
8
  /**
9
9
  * Matrix messaging service for ElizaOS agents.
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAqB,KAAK,aAAa,EAAU,OAAO,EAAE,MAAM,eAAe,CAAC;AAEvF,OAAO,EAEL,KAAK,cAAc,EAMnB,KAAK,wBAAwB,EAE7B,KAAK,UAAU,EACf,KAAK,gBAAgB,EAGtB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,aAAc,SAAQ,OAAQ,YAAW,cAAc;IAClE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAuB;IAEjD,qBAAqB,SAAqD;IAE1E,UAAkB,OAAO,EAAE,aAAa,CAAC;IACzC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,OAAO,CAAkB;IAEjC;;OAEG;WACU,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAMlE;;OAEG;WACU,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/D;;OAEG;YACW,UAAU;IA4BxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAoCpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqC1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyEzB;;OAEG;YACW,OAAO;IAyBrB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B,WAAW,IAAI,OAAO;IAItB,SAAS,IAAI,MAAM;IAInB,aAAa,IAAI,MAAM;IAIjB,cAAc,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAevC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA6DxF,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsBvF,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBhD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAE,MAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnF,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOtE"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAA6B,MAAM,eAAe,CAAC;AAEvF,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,wBAAwB,EAC7B,KAAK,UAAU,EACf,KAAK,gBAAgB,EAUtB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,aAAc,SAAQ,OAAQ,YAAW,cAAc;IAClE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAuB;IAEjD,qBAAqB,SAAqD;IAE1E,UAAkB,OAAO,EAAE,aAAa,CAAC;IACzC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,OAAO,CAAkB;IAEjC;;OAEG;WACU,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAMlE;;OAEG;WACmB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxE;;OAEG;YACW,UAAU;IA4BxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAiCpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuBxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwC1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA0EzB;;OAEG;YACW,OAAO;IAyBrB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B,WAAW,IAAI,OAAO;IAItB,SAAS,IAAI,MAAM;IAInB,aAAa,IAAI,MAAM;IAIjB,cAAc,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAevC,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,gBAAgB,CAAC;IA6DtB,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,CAAC;IAsBtB,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBhD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxC,UAAU,CACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,EACf,OAAO,GAAE,MAAc,GACtB,OAAO,CAAC,IAAI,CAAC;IAQV,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAStE"}
package/dist/types.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Type definitions for the Matrix plugin.
3
3
  */
4
- import type { IAgentRuntime, Service } from "@elizaos/core";
4
+ import type { Service, IAgentRuntime } from "@elizaos/core";
5
5
  /** Maximum message length for Matrix */
6
6
  export declare const MAX_MATRIX_MESSAGE_LENGTH = 4000;
7
7
  /** Service name constant */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elizaos/plugin-matrix",
3
- "version": "2.0.0-alpha.4",
3
+ "version": "2.0.0-alpha.6",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -16,7 +16,7 @@
16
16
  ],
17
17
  "scripts": {
18
18
  "build": "bun run build.ts",
19
- "test": "bun test",
19
+ "test": "vitest run",
20
20
  "lint": "bunx @biomejs/biome check --write --unsafe .",
21
21
  "lint:check": "bunx @biomejs/biome check .",
22
22
  "format": "bunx @biomejs/biome format --write .",
@@ -33,7 +33,8 @@
33
33
  "devDependencies": {
34
34
  "@types/bun": "^1.1.0",
35
35
  "typescript": "^5.3.0",
36
- "@biomejs/biome": "^2.3.11"
36
+ "@biomejs/biome": "^2.3.11",
37
+ "vitest": "^3.2.4"
37
38
  },
38
39
  "milaidy": {
39
40
  "platforms": [
@@ -46,5 +47,57 @@
46
47
  },
47
48
  "publishConfig": {
48
49
  "access": "public"
50
+ },
51
+ "agentConfig": {
52
+ "pluginParameters": {
53
+ "MATRIX_HOMESERVER": {
54
+ "type": "string",
55
+ "description": "Homeserver URL",
56
+ "required": false,
57
+ "sensitive": false
58
+ },
59
+ "MATRIX_USER_ID": {
60
+ "type": "string",
61
+ "description": "User identifier",
62
+ "required": false,
63
+ "sensitive": false
64
+ },
65
+ "MATRIX_ACCESS_TOKEN": {
66
+ "type": "string",
67
+ "description": "Access token for Matrix",
68
+ "required": true,
69
+ "sensitive": true
70
+ },
71
+ "MATRIX_DEVICE_ID": {
72
+ "type": "string",
73
+ "description": "Device identifier",
74
+ "required": false,
75
+ "sensitive": false
76
+ },
77
+ "MATRIX_ROOMS": {
78
+ "type": "string",
79
+ "description": "Comma-separated room/channel list",
80
+ "required": false,
81
+ "sensitive": false
82
+ },
83
+ "MATRIX_AUTO_JOIN": {
84
+ "type": "boolean",
85
+ "description": "Automatically join/discover channels",
86
+ "required": false,
87
+ "sensitive": false
88
+ },
89
+ "MATRIX_ENCRYPTION": {
90
+ "type": "boolean",
91
+ "description": "Enable encryption",
92
+ "required": false,
93
+ "sensitive": false
94
+ },
95
+ "MATRIX_REQUIRE_MENTION": {
96
+ "type": "boolean",
97
+ "description": "Only respond when mentioned",
98
+ "required": false,
99
+ "sensitive": false
100
+ }
101
+ }
49
102
  }
50
103
  }