@xmtp/agent-sdk 0.0.10 → 0.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +1 -1
  2. package/dist/bin/generateKeys.js +11 -1
  3. package/dist/bin/generateKeys.js.map +1 -1
  4. package/dist/core/Agent.d.ts +18 -11
  5. package/dist/core/Agent.js +26 -19
  6. package/dist/core/Agent.js.map +1 -1
  7. package/dist/core/ClientContext.d.ts +9 -0
  8. package/dist/core/ClientContext.js +13 -0
  9. package/dist/core/ClientContext.js.map +1 -0
  10. package/dist/core/ConversationContext.d.ts +2 -3
  11. package/dist/core/ConversationContext.js +3 -9
  12. package/dist/core/ConversationContext.js.map +1 -1
  13. package/dist/core/MessageContext.d.ts +5 -4
  14. package/dist/core/MessageContext.js +1 -1
  15. package/dist/core/MessageContext.js.map +1 -1
  16. package/dist/core/index.d.ts +1 -0
  17. package/dist/core/index.js +1 -0
  18. package/dist/core/index.js.map +1 -1
  19. package/dist/demo.js +8 -2
  20. package/dist/demo.js.map +1 -1
  21. package/dist/middleware/CommandRouter.d.ts +2 -2
  22. package/dist/middleware/CommandRouter.js +2 -2
  23. package/dist/middleware/CommandRouter.js.map +1 -1
  24. package/dist/utils/error.d.ts +5 -0
  25. package/dist/utils/error.js +11 -0
  26. package/dist/utils/error.js.map +1 -0
  27. package/dist/utils/filter.d.ts +55 -15
  28. package/dist/utils/filter.js +63 -21
  29. package/dist/utils/filter.js.map +1 -1
  30. package/dist/utils/index.d.ts +1 -2
  31. package/dist/utils/index.js +1 -2
  32. package/dist/utils/index.js.map +1 -1
  33. package/package.json +2 -2
  34. package/dist/utils/crypto.d.ts +0 -19
  35. package/dist/utils/crypto.js +0 -43
  36. package/dist/utils/crypto.js.map +0 -1
  37. package/dist/utils/message.d.ts +0 -38
  38. package/dist/utils/message.js +0 -31
  39. package/dist/utils/message.js.map +0 -1
package/README.md CHANGED
@@ -108,7 +108,7 @@ Subscribe only to what you need using Node’s `EventEmitter` interface. Events
108
108
  ```ts
109
109
  // Handle different message types
110
110
  agent.on("text", async (ctx) => {
111
- console.log(`Text message: ${ctx.text}`);
111
+ console.log(`Text message: ${ctx.message.content}`);
112
112
  });
113
113
 
114
114
  agent.on("reaction", async (ctx) => {
@@ -1,7 +1,17 @@
1
1
  #!/usr/bin/env node
2
+ import { getRandomValues } from "node:crypto";
2
3
  import { writeFileSync } from "node:fs";
3
4
  import { join } from "node:path";
4
- import { generateClientKeys } from "../utils/crypto.js";
5
+ import { toString } from "uint8arrays";
6
+ import { generatePrivateKey } from "viem/accounts";
7
+ const generateClientKeys = () => {
8
+ const walletKey = generatePrivateKey();
9
+ const dbEncryptionKey = toString(getRandomValues(new Uint8Array(32)), "hex");
10
+ return {
11
+ XMTP_DB_ENCRYPTION_KEY: dbEncryptionKey,
12
+ XMTP_WALLET_KEY: walletKey,
13
+ };
14
+ };
5
15
  /**
6
16
  * Generates client keys and saves them to a .env file in the project root.
7
17
  * This script creates the necessary environment variables for XMTP agent initialization.
@@ -1 +1 @@
1
- {"version":3,"file":"generateKeys.js","sourceRoot":"","sources":["../../src/bin/generateKeys.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;GAGG;AACH,SAAS,IAAI;IACX,IAAI,CAAC;QACH,2BAA2B;QAC3B,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAC;QAElC,+BAA+B;QAC/B,MAAM,UAAU,GACd,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;aACjB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;aACxC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;QACJ,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEvD,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAE/C,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,qBAAqB,WAAW,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"generateKeys.js","sourceRoot":"","sources":["../../src/bin/generateKeys.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,kBAAkB,GAAG,GAAG,EAAE;IAC9B,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,MAAM,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7E,OAAO;QACL,sBAAsB,EAAE,eAAe;QACvC,eAAe,EAAE,SAAS;KAC3B,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,SAAS,IAAI;IACX,IAAI,CAAC;QACH,2BAA2B;QAC3B,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAC;QAElC,+BAA+B;QAC/B,MAAM,UAAU,GACd,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;aACjB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;aACxC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;QACJ,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEvD,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAE/C,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,qBAAqB,WAAW,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
@@ -4,32 +4,39 @@ import { ReactionCodec } from "@xmtp/content-type-reaction";
4
4
  import { RemoteAttachmentCodec } from "@xmtp/content-type-remote-attachment";
5
5
  import { ReplyCodec } from "@xmtp/content-type-reply";
6
6
  import type { TextCodec } from "@xmtp/content-type-text";
7
- import { Client, Dm, Group, type ClientOptions } from "@xmtp/node-sdk";
7
+ import { Client, Dm, Group, type ClientOptions, type Conversation, type DecodedMessage } from "@xmtp/node-sdk";
8
8
  import { ConversationContext } from "./ConversationContext.js";
9
- import { AgentContext } from "./MessageContext.js";
9
+ import { MessageContext } from "./MessageContext.js";
10
10
  interface EventHandlerMap<ContentTypes> {
11
- attachment: [ctx: AgentContext<ReturnType<RemoteAttachmentCodec["decode"]>>];
11
+ attachment: [
12
+ ctx: MessageContext<ReturnType<RemoteAttachmentCodec["decode"]>>
13
+ ];
12
14
  dm: [ctx: ConversationContext<ContentTypes, Dm<ContentTypes>>];
13
15
  group: [ctx: ConversationContext<ContentTypes, Group<ContentTypes>>];
14
- reaction: [ctx: AgentContext<ReturnType<ReactionCodec["decode"]>>];
15
- reply: [ctx: AgentContext<ReturnType<ReplyCodec["decode"]>>];
16
+ reaction: [ctx: MessageContext<ReturnType<ReactionCodec["decode"]>>];
17
+ reply: [ctx: MessageContext<ReturnType<ReplyCodec["decode"]>>];
16
18
  start: [];
17
19
  stop: [];
18
- text: [ctx: AgentContext<ReturnType<TextCodec["decode"]>>];
20
+ text: [ctx: MessageContext<ReturnType<TextCodec["decode"]>>];
19
21
  unhandledError: [error: Error];
20
- unhandledMessage: [ctx: AgentContext<ContentTypes>];
22
+ unhandledMessage: [ctx: MessageContext<ContentTypes>];
21
23
  }
24
+ export type AgentErrorContext<ContentTypes = unknown> = {
25
+ message?: DecodedMessage<ContentTypes>;
26
+ client: Client<ContentTypes>;
27
+ conversation?: Conversation;
28
+ };
22
29
  export interface AgentOptions<ContentTypes> {
23
30
  client: Client<ContentTypes>;
24
31
  }
25
- export type AgentMessageHandler<ContentTypes = unknown> = (ctx: AgentContext<ContentTypes>) => Promise<void> | void;
26
- export type AgentMiddleware<ContentTypes = unknown> = (ctx: AgentContext<ContentTypes>, next: () => Promise<void> | void) => Promise<void>;
27
- export type AgentErrorMiddleware<ContentTypes = unknown> = (error: unknown, ctx: AgentContext<ContentTypes> | null, next: (err?: unknown) => Promise<void> | void) => Promise<void> | void;
32
+ export type AgentMessageHandler<ContentTypes = unknown> = (ctx: MessageContext<ContentTypes>) => Promise<void> | void;
33
+ export type AgentMiddleware<ContentTypes = unknown> = (ctx: MessageContext<ContentTypes>, next: () => Promise<void> | void) => Promise<void>;
34
+ export type AgentErrorMiddleware<ContentTypes = unknown> = (error: unknown, ctx: AgentErrorContext<ContentTypes>, next: (err?: unknown) => Promise<void> | void) => Promise<void> | void;
28
35
  export type StreamAllMessagesOptions<ContentTypes> = Parameters<Client<ContentTypes>["conversations"]["streamAllMessages"]>[0];
29
36
  export interface AgentErrorRegistrar<ContentTypes> {
30
37
  use(...errorMiddleware: Array<AgentErrorMiddleware<ContentTypes> | AgentErrorMiddleware<ContentTypes>[]>): AgentErrorRegistrar<ContentTypes>;
31
38
  }
32
- export declare class Agent<ContentTypes> extends EventEmitter<EventHandlerMap<ContentTypes>> {
39
+ export declare class Agent<ContentTypes = unknown> extends EventEmitter<EventHandlerMap<ContentTypes>> {
33
40
  #private;
34
41
  constructor({ client }: AgentOptions<ContentTypes>);
35
42
  static create<ContentCodecs extends ContentCodec[] = []>(signer: Parameters<typeof Client.create>[0], options?: Omit<ClientOptions, "codecs"> & {
@@ -3,13 +3,14 @@ import { ReactionCodec } from "@xmtp/content-type-reaction";
3
3
  import { RemoteAttachmentCodec } from "@xmtp/content-type-remote-attachment";
4
4
  import { ReplyCodec } from "@xmtp/content-type-reply";
5
5
  import { ApiUrls, Client, Dm, Group, } from "@xmtp/node-sdk";
6
+ import { fromString } from "uint8arrays/from-string";
6
7
  import { isHex } from "viem/utils";
7
- import { getEncryptionKeyFromHex } from "../utils/crypto.js";
8
+ import { AgentError } from "../utils/error.js";
8
9
  import { filter } from "../utils/filter.js";
9
- import { hasDefinedContent, isReaction, isRemoteAttachment, isReply, isText, } from "../utils/message.js";
10
10
  import { createSigner, createUser } from "../utils/user.js";
11
+ import { ClientContext } from "./ClientContext.js";
11
12
  import { ConversationContext } from "./ConversationContext.js";
12
- import { AgentContext } from "./MessageContext.js";
13
+ import { MessageContext } from "./MessageContext.js";
13
14
  export class Agent extends EventEmitter {
14
15
  #client;
15
16
  #conversationsStream;
@@ -32,9 +33,7 @@ export class Agent extends EventEmitter {
32
33
  #defaultErrorHandler = (currentError) => {
33
34
  const emittedError = currentError instanceof Error
34
35
  ? currentError
35
- : new Error(`Unhandled error caught by default error middleware.`, {
36
- cause: currentError,
37
- });
36
+ : new AgentError(9999, `Unhandled error caught by default error middleware.`, currentError);
38
37
  this.emit("unhandledError", emittedError);
39
38
  };
40
39
  constructor({ client }) {
@@ -67,12 +66,12 @@ export class Agent extends EventEmitter {
67
66
  // Note: we need to omit this so that "Client.create" can correctly infer the codecs.
68
67
  options) {
69
68
  if (!isHex(process.env.XMTP_WALLET_KEY)) {
70
- throw new Error(`XMTP_WALLET_KEY env is not in hex (0x) format.`);
69
+ throw new AgentError(1000, `XMTP_WALLET_KEY env is not in hex (0x) format.`);
71
70
  }
72
71
  const signer = createSigner(createUser(process.env.XMTP_WALLET_KEY));
73
72
  const initializedOptions = { ...(options ?? {}) };
74
73
  if (process.env.XMTP_DB_ENCRYPTION_KEY) {
75
- initializedOptions.dbEncryptionKey = getEncryptionKeyFromHex(process.env.XMTP_DB_ENCRYPTION_KEY);
74
+ initializedOptions.dbEncryptionKey = fromString(process.env.XMTP_DB_ENCRYPTION_KEY, "hex");
76
75
  }
77
76
  if (process.env.XMTP_ENV &&
78
77
  Object.keys(ApiUrls).includes(process.env.XMTP_ENV)) {
@@ -115,13 +114,13 @@ export class Agent extends EventEmitter {
115
114
  }
116
115
  }
117
116
  catch (error) {
118
- const recovered = await this.#runErrorChain(error, null);
117
+ const recovered = await this.#runErrorChain(new AgentError(1001, "Emitted value from conversation stream caused an error.", error), new ClientContext({ client: this.#client }));
119
118
  if (!recovered)
120
119
  await this.stop();
121
120
  }
122
121
  },
123
122
  onError: async (error) => {
124
- const recovered = await this.#runErrorChain(error, null);
123
+ const recovered = await this.#runErrorChain(new AgentError(1002, "Error occured during conversation streaming.", error), new ClientContext({ client: this.#client }));
125
124
  if (!recovered)
126
125
  await this.stop();
127
126
  },
@@ -134,16 +133,16 @@ export class Agent extends EventEmitter {
134
133
  break;
135
134
  try {
136
135
  switch (true) {
137
- case isRemoteAttachment(message):
136
+ case filter.isRemoteAttachment(message):
138
137
  await this.#processMessage(message, "attachment");
139
138
  break;
140
- case isReaction(message):
139
+ case filter.isReaction(message):
141
140
  await this.#processMessage(message, "reaction");
142
141
  break;
143
- case isReply(message):
142
+ case filter.isReply(message):
144
143
  await this.#processMessage(message, "reply");
145
144
  break;
146
- case isText(message):
145
+ case filter.isText(message):
147
146
  await this.#processMessage(message, "text");
148
147
  break;
149
148
  default:
@@ -152,7 +151,9 @@ export class Agent extends EventEmitter {
152
151
  }
153
152
  }
154
153
  catch (error) {
155
- const recovered = await this.#runErrorChain(error, null);
154
+ const recovered = await this.#runErrorChain(error, {
155
+ client: this.#client,
156
+ });
156
157
  if (!recovered) {
157
158
  await this.stop();
158
159
  break;
@@ -162,7 +163,9 @@ export class Agent extends EventEmitter {
162
163
  }
163
164
  catch (error) {
164
165
  this.#isListening = false;
165
- const recovered = await this.#runErrorChain(error, null);
166
+ const recovered = await this.#runErrorChain(error, {
167
+ client: this.#client,
168
+ });
166
169
  if (recovered) {
167
170
  await this.stop();
168
171
  queueMicrotask(() => this.start(options));
@@ -171,7 +174,7 @@ export class Agent extends EventEmitter {
171
174
  }
172
175
  async #processMessage(message, topic = "unhandledMessage") {
173
176
  // Skip messages with undefined content (failed to decode)
174
- if (!hasDefinedContent(message)) {
177
+ if (!filter.hasDefinedContent(message)) {
175
178
  return;
176
179
  }
177
180
  // Skip messages from agent itself
@@ -181,9 +184,13 @@ export class Agent extends EventEmitter {
181
184
  let context = null;
182
185
  const conversation = await this.#client.conversations.getConversationById(message.conversationId);
183
186
  if (!conversation) {
184
- throw new Error(`Failed to process message ID "${message.id}" for conversation ID "${message.conversationId}" because the conversation could not be found.`);
187
+ throw new AgentError(1003, `Failed to process message ID "${message.id}" for conversation ID "${message.conversationId}" because the conversation could not be found.`);
185
188
  }
186
- context = new AgentContext({ message, conversation, client: this.#client });
189
+ context = new MessageContext({
190
+ message,
191
+ conversation,
192
+ client: this.#client,
193
+ });
187
194
  await this.#runMiddlewareChain(context, topic);
188
195
  }
189
196
  async #runMiddlewareChain(context, topic = "unhandledMessage") {
@@ -1 +1 @@
1
- {"version":3,"file":"Agent.js","sourceRoot":"","sources":["../../src/core/Agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Agent.js","sourceRoot":"","sources":["../../src/core/Agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Client } from "@xmtp/node-sdk";
2
+ export declare class ClientContext<ContentTypes = unknown> {
3
+ #private;
4
+ constructor({ client }: {
5
+ client: Client<ContentTypes>;
6
+ });
7
+ getClientAddress(): string | undefined;
8
+ get client(): Client<ContentTypes>;
9
+ }
@@ -0,0 +1,13 @@
1
+ export class ClientContext {
2
+ #client;
3
+ constructor({ client }) {
4
+ this.#client = client;
5
+ }
6
+ getClientAddress() {
7
+ return this.#client.accountIdentifier?.identifier;
8
+ }
9
+ get client() {
10
+ return this.#client;
11
+ }
12
+ }
13
+ //# sourceMappingURL=ClientContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientContext.js","sourceRoot":"","sources":["../../src/core/ClientContext.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IACxB,OAAO,CAAuB;IAE9B,YAAY,EAAE,MAAM,EAAoC;QACtD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,UAAU,CAAC;IACpD,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF"}
@@ -1,12 +1,11 @@
1
1
  import type { Client, Conversation } from "@xmtp/node-sdk";
2
- export declare class ConversationContext<ContentTypes = unknown, ConversationType extends Conversation = Conversation> {
2
+ import { ClientContext } from "./ClientContext.js";
3
+ export declare class ConversationContext<ContentTypes = unknown, ConversationType extends Conversation = Conversation> extends ClientContext<ContentTypes> {
3
4
  #private;
4
5
  constructor({ conversation, client, }: {
5
6
  conversation: ConversationType;
6
7
  client: Client<ContentTypes>;
7
8
  });
8
9
  sendText(text: string): Promise<void>;
9
- getOwnAddress(): string | undefined;
10
10
  get conversation(): ConversationType;
11
- get client(): Client<ContentTypes>;
12
11
  }
@@ -1,22 +1,16 @@
1
1
  import { ContentTypeText } from "@xmtp/content-type-text";
2
- export class ConversationContext {
3
- #client;
2
+ import { ClientContext } from "./ClientContext.js";
3
+ export class ConversationContext extends ClientContext {
4
4
  #conversation;
5
5
  constructor({ conversation, client, }) {
6
+ super({ client });
6
7
  this.#conversation = conversation;
7
- this.#client = client;
8
8
  }
9
9
  async sendText(text) {
10
10
  await this.#conversation.send(text, ContentTypeText);
11
11
  }
12
- getOwnAddress() {
13
- return this.#client.accountIdentifier?.identifier;
14
- }
15
12
  get conversation() {
16
13
  return this.#conversation;
17
14
  }
18
- get client() {
19
- return this.#client;
20
- }
21
15
  }
22
16
  //# sourceMappingURL=ConversationContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConversationContext.js","sourceRoot":"","sources":["../../src/core/ConversationContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,MAAM,OAAO,mBAAmB;IAI9B,OAAO,CAAuB;IAC9B,aAAa,CAAmB;IAEhC,YAAY,EACV,YAAY,EACZ,MAAM,GAIP;QACC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACvD,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,UAAU,CAAC;IACpD,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF"}
1
+ {"version":3,"file":"ConversationContext.js","sourceRoot":"","sources":["../../src/core/ConversationContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,OAAO,mBAGX,SAAQ,aAA2B;IACnC,aAAa,CAAmB;IAEhC,YAAY,EACV,YAAY,EACZ,MAAM,GAIP;QACC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAClB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;CACF"}
@@ -1,18 +1,19 @@
1
1
  import { type Reaction } from "@xmtp/content-type-reaction";
2
2
  import type { Client, Conversation, DecodedMessage } from "@xmtp/node-sdk";
3
3
  import { ConversationContext } from "./ConversationContext.js";
4
- export type MessageContext<ContentTypes = unknown> = DecodedMessage<ContentTypes> & {
4
+ type DecodedMessageWithContent<ContentTypes = unknown> = DecodedMessage<ContentTypes> & {
5
5
  content: ContentTypes;
6
6
  };
7
- export declare class AgentContext<ContentTypes = unknown> extends ConversationContext<ContentTypes> {
7
+ export declare class MessageContext<ContentTypes = unknown> extends ConversationContext<ContentTypes> {
8
8
  #private;
9
9
  constructor({ message, conversation, client, }: {
10
- message: MessageContext<ContentTypes>;
10
+ message: DecodedMessageWithContent<ContentTypes>;
11
11
  conversation: Conversation;
12
12
  client: Client<ContentTypes>;
13
13
  });
14
14
  sendReaction(content: string, schema?: Reaction["schema"]): Promise<void>;
15
15
  sendTextReply(text: string): Promise<void>;
16
16
  getSenderAddress(): Promise<string>;
17
- get message(): MessageContext<ContentTypes>;
17
+ get message(): DecodedMessageWithContent<ContentTypes>;
18
18
  }
19
+ export {};
@@ -2,7 +2,7 @@ import { ContentTypeReaction, } from "@xmtp/content-type-reaction";
2
2
  import { ContentTypeReply } from "@xmtp/content-type-reply";
3
3
  import { ContentTypeText } from "@xmtp/content-type-text";
4
4
  import { ConversationContext } from "./ConversationContext.js";
5
- export class AgentContext extends ConversationContext {
5
+ export class MessageContext extends ConversationContext {
6
6
  #message;
7
7
  constructor({ message, conversation, client, }) {
8
8
  super({ conversation, client });
@@ -1 +1 @@
1
- {"version":3,"file":"MessageContext.js","sourceRoot":"","sources":["../../src/core/MessageContext.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,GAEpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAc,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAQ/D,MAAM,OAAO,YAEX,SAAQ,mBAAiC;IACzC,QAAQ,CAA+B;IAEvC,YAAY,EACV,OAAO,EACP,YAAY,EACZ,MAAM,GAKP;QACC,KAAK,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,SAA6B,SAAS;QACxE,MAAM,QAAQ,GAAa;YACzB,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC3B,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa;YAC7C,MAAM;YACN,OAAO;SACR,CAAC;QACF,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,MAAM,KAAK,GAAU;YACnB,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC3B,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa;YAC7C,WAAW,EAAE,eAAe;YAC5B,OAAO,EAAE,IAAI;SACd,CAAC;QACF,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,sBAAsB,CAAC;YACtE,IAAI,CAAC,QAAQ,CAAC,aAAa;SAC5B,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IACjD,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"MessageContext.js","sourceRoot":"","sources":["../../src/core/MessageContext.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,GAEpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAc,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAO/D,MAAM,OAAO,cAEX,SAAQ,mBAAiC;IACzC,QAAQ,CAA0C;IAElD,YAAY,EACV,OAAO,EACP,YAAY,EACZ,MAAM,GAKP;QACC,KAAK,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,SAA6B,SAAS;QACxE,MAAM,QAAQ,GAAa;YACzB,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC3B,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa;YAC7C,MAAM;YACN,OAAO;SACR,CAAC;QACF,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,MAAM,KAAK,GAAU;YACnB,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC3B,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa;YAC7C,WAAW,EAAE,eAAe;YAC5B,OAAO,EAAE,IAAI;SACd,CAAC;QACF,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,sBAAsB,CAAC;YACtE,IAAI,CAAC,QAAQ,CAAC,aAAa;SAC5B,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IACjD,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF"}
@@ -1,3 +1,4 @@
1
1
  export * from "./Agent.js";
2
+ export * from "./ClientContext.js";
2
3
  export * from "./ConversationContext.js";
3
4
  export * from "./MessageContext.js";
@@ -1,4 +1,5 @@
1
1
  export * from "./Agent.js";
2
+ export * from "./ClientContext.js";
2
3
  export * from "./ConversationContext.js";
3
4
  export * from "./MessageContext.js";
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
package/dist/demo.js CHANGED
@@ -2,7 +2,7 @@ import { loadEnvFile } from "node:process";
2
2
  import { Agent } from "./core/index.js";
3
3
  import { CommandRouter } from "./middleware/CommandRouter.js";
4
4
  import { getTestUrl } from "./utils/debug.js";
5
- import { createSigner, createUser, f, withFilter } from "./utils/index.js";
5
+ import { AgentError, createSigner, createUser, f, withFilter, } from "./utils/index.js";
6
6
  try {
7
7
  loadEnvFile(".env");
8
8
  console.info(`Loaded keys from ".env" file.`);
@@ -40,7 +40,13 @@ agent.on("text", withFilter(f.startsWith("@agent"), async (ctx) => {
40
40
  await ctx.conversation.send("How can I help you?");
41
41
  }));
42
42
  const errorHandler = (error) => {
43
- console.log("Caught error", error);
43
+ if (error instanceof AgentError) {
44
+ console.log(`Caught error ID "${error.code}"`, error);
45
+ console.log("Original error", error.cause);
46
+ }
47
+ else {
48
+ console.log(`Caught error`, error);
49
+ }
44
50
  };
45
51
  agent.on("unhandledError", errorHandler);
46
52
  agent.on("start", () => {
package/dist/demo.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,UAAU,EACV,YAAY,EACZ,UAAU,EACV,CAAC,EACD,UAAU,GACX,MAAM,kBAAkB,CAAC;AAE1B,IAAI,CAAC;IACH,WAAW,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;AAChD,CAAC;AAAC,MAAM,CAAC,CAAA,CAAC;AAEV,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe;IACvC,CAAC,CAAC,MAAM,KAAK,CAAC,aAAa,EAAE;IAC7B,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,EAAE;QAC7C,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;AAEP,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;AAEnC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IACvC,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AAEH,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AAE/B,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;IACrB,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC;AAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC;AAEH,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE;IAC7B,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;IACvB,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;IAC3B,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEH,KAAK,CAAC,EAAE,CACN,MAAM,EACN,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IAC/C,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACrD,CAAC,CAAC,CACH,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,KAAc,EAAE,EAAE;IACtC,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;AACH,CAAC,CAAC;AAEF,KAAK,CAAC,EAAE,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;AAEzC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,OAAO,CAAC,GAAG,CAAC,kBAAkB,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import { type AgentMessageHandler, type AgentMiddleware } from "../core/Agent.js";
2
- import type { AgentContext } from "../core/MessageContext.js";
2
+ import type { MessageContext } from "../core/MessageContext.js";
3
3
  export declare class CommandRouter<ContentTypes> {
4
4
  private commandMap;
5
5
  private defaultHandler;
6
6
  command(command: string, handler: AgentMessageHandler): this;
7
7
  default(handler: AgentMessageHandler): this;
8
- handle(ctx: AgentContext): Promise<boolean>;
8
+ handle(ctx: MessageContext): Promise<boolean>;
9
9
  middleware: () => AgentMiddleware<ContentTypes>;
10
10
  }
@@ -1,4 +1,4 @@
1
- import { isText } from "../utils/message.js";
1
+ import { filter } from "../utils/filter.js";
2
2
  export class CommandRouter {
3
3
  commandMap = new Map();
4
4
  defaultHandler = null;
@@ -14,7 +14,7 @@ export class CommandRouter {
14
14
  return this;
15
15
  }
16
16
  async handle(ctx) {
17
- if (!isText(ctx.message)) {
17
+ if (!filter.isText(ctx.message)) {
18
18
  return false;
19
19
  }
20
20
  const messageText = ctx.message.content;
@@ -1 +1 @@
1
- {"version":3,"file":"CommandRouter.js","sourceRoot":"","sources":["../../src/middleware/CommandRouter.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,OAAO,aAAa;IAChB,UAAU,GAAG,IAAI,GAAG,EAA+B,CAAC;IACpD,cAAc,GAA+B,IAAI,CAAC;IAE1D,OAAO,CAAC,OAAe,EAAE,OAA4B;QACnD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAA4B;QAClC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAiB;QAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;QACxC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAEvC,qCAAqC;QACrC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;gBACnB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,8DAA8D;QAC9D,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,UAAU,GAAwC,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC1E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;IACH,CAAC,CAAC;CACH"}
1
+ {"version":3,"file":"CommandRouter.js","sourceRoot":"","sources":["../../src/middleware/CommandRouter.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,OAAO,aAAa;IAChB,UAAU,GAAG,IAAI,GAAG,EAA+B,CAAC;IACpD,cAAc,GAA+B,IAAI,CAAC;IAE1D,OAAO,CAAC,OAAe,EAAE,OAA4B;QACnD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAA4B;QAClC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAmB;QAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;QACxC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAEvC,qCAAqC;QACrC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;gBACnB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,8DAA8D;QAC9D,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,UAAU,GAAwC,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC1E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;IACH,CAAC,CAAC;CACH"}
@@ -0,0 +1,5 @@
1
+ export declare class AgentError extends Error {
2
+ #private;
3
+ constructor(code: number, message: string, cause?: unknown);
4
+ get code(): number;
5
+ }
@@ -0,0 +1,11 @@
1
+ export class AgentError extends Error {
2
+ #code;
3
+ constructor(code, message, cause) {
4
+ super(message, { cause });
5
+ this.#code = code;
6
+ }
7
+ get code() {
8
+ return this.#code;
9
+ }
10
+ }
11
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/utils/error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC,KAAK,CAAS;IAEd,YAAY,IAAY,EAAE,OAAe,EAAE,KAAe;QACxD,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
@@ -1,23 +1,23 @@
1
- import type { Client, DecodedMessage } from "@xmtp/node-sdk";
2
- import type { AgentContext } from "../core/MessageContext.js";
3
- /**
4
- * Function type for filtering messages based on content and client state.
5
- */
6
- export type MessageFilter<ContentTypes> = (message: DecodedMessage, client: Client<ContentTypes>) => boolean;
1
+ import { type Reaction } from "@xmtp/content-type-reaction";
2
+ import { type RemoteAttachment } from "@xmtp/content-type-remote-attachment";
3
+ import { type Reply } from "@xmtp/content-type-reply";
4
+ import type { Client, Conversation, DecodedMessage } from "@xmtp/node-sdk";
5
+ import type { MessageContext } from "../core/MessageContext.js";
6
+ export type MessageFilter<ContentTypes> = (message: DecodedMessage, client: Client<ContentTypes>, conversation: Conversation) => boolean | Promise<boolean>;
7
7
  /**
8
8
  * Creates a filter for messages from specific senders
9
9
  *
10
10
  * @param senderInboxId - Single sender ID or array of sender IDs to match
11
11
  * @returns Filter function
12
12
  */
13
- declare function fromSender<ContentTypes>(senderInboxId: string | string[]): MessageFilter<ContentTypes>;
13
+ declare function fromSender(senderInboxId: string | string[]): (message: DecodedMessage) => boolean;
14
14
  /**
15
15
  * Creates a filter that matches text messages starting with a specific string.
16
16
  *
17
17
  * @param prefix - The string prefix to match against
18
18
  * @returns Filter function
19
19
  */
20
- declare function startsWith<ContentTypes>(prefix: string): MessageFilter<ContentTypes>;
20
+ declare function startsWith(prefix: string): (message: DecodedMessage) => boolean;
21
21
  /**
22
22
  * Creates a filter that requires all provided filters to pass
23
23
  *
@@ -43,9 +43,29 @@ declare function not<ContentTypes>(filter: MessageFilter<ContentTypes>): Message
43
43
  * Pre-configured filter instances and factory functions for common filtering scenarios
44
44
  */
45
45
  export declare const filter: {
46
- notFromSelf: MessageFilter<unknown>;
47
- fromSelf: MessageFilter<unknown>;
48
- isText: MessageFilter<unknown>;
46
+ fromSelf: (message: DecodedMessage, client: Client<unknown>) => boolean;
47
+ hasDefinedContent: (message: DecodedMessage) => message is DecodedMessage<unknown> & {
48
+ content: {};
49
+ };
50
+ isDM: MessageFilter<unknown>;
51
+ isGroup: MessageFilter<unknown>;
52
+ isReaction: (message: DecodedMessage) => message is DecodedMessage & {
53
+ content: Reaction;
54
+ };
55
+ isRemoteAttachment: (message: DecodedMessage) => message is DecodedMessage & {
56
+ content: RemoteAttachment;
57
+ };
58
+ isReply: (message: DecodedMessage) => message is DecodedMessage & {
59
+ content: Reply;
60
+ };
61
+ isText: (message: DecodedMessage) => message is DecodedMessage & {
62
+ content: string;
63
+ };
64
+ isTextReply: (message: DecodedMessage) => message is DecodedMessage & {
65
+ content: Reply & {
66
+ content: string;
67
+ };
68
+ };
49
69
  fromSender: typeof fromSender;
50
70
  startsWith: typeof startsWith;
51
71
  and: typeof and;
@@ -53,14 +73,34 @@ export declare const filter: {
53
73
  not: typeof not;
54
74
  };
55
75
  export declare const f: {
56
- notFromSelf: MessageFilter<unknown>;
57
- fromSelf: MessageFilter<unknown>;
58
- isText: MessageFilter<unknown>;
76
+ fromSelf: (message: DecodedMessage, client: Client<unknown>) => boolean;
77
+ hasDefinedContent: (message: DecodedMessage) => message is DecodedMessage<unknown> & {
78
+ content: {};
79
+ };
80
+ isDM: MessageFilter<unknown>;
81
+ isGroup: MessageFilter<unknown>;
82
+ isReaction: (message: DecodedMessage) => message is DecodedMessage & {
83
+ content: Reaction;
84
+ };
85
+ isRemoteAttachment: (message: DecodedMessage) => message is DecodedMessage & {
86
+ content: RemoteAttachment;
87
+ };
88
+ isReply: (message: DecodedMessage) => message is DecodedMessage & {
89
+ content: Reply;
90
+ };
91
+ isText: (message: DecodedMessage) => message is DecodedMessage & {
92
+ content: string;
93
+ };
94
+ isTextReply: (message: DecodedMessage) => message is DecodedMessage & {
95
+ content: Reply & {
96
+ content: string;
97
+ };
98
+ };
59
99
  fromSender: typeof fromSender;
60
100
  startsWith: typeof startsWith;
61
101
  and: typeof and;
62
102
  or: typeof or;
63
103
  not: typeof not;
64
104
  };
65
- export declare const withFilter: <ContentTypes>(filter: MessageFilter<ContentTypes>, listener: (ctx: AgentContext<ContentTypes>) => void) => (ctx: AgentContext<ContentTypes>) => void;
105
+ export declare const withFilter: <ContentTypes>(filterFn: MessageFilter<ContentTypes>, listener: (ctx: MessageContext<ContentTypes>) => void | Promise<void>) => (ctx: MessageContext<ContentTypes>) => Promise<void>;
66
106
  export {};
@@ -1,15 +1,7 @@
1
+ import { ContentTypeReaction, } from "@xmtp/content-type-reaction";
2
+ import { ContentTypeRemoteAttachment, } from "@xmtp/content-type-remote-attachment";
3
+ import { ContentTypeReply } from "@xmtp/content-type-reply";
1
4
  import { ContentTypeText } from "@xmtp/content-type-text";
2
- import { getTextContent } from "./message.js";
3
- /**
4
- * Creates a filter that excludes messages from the agent itself.
5
- *
6
- * @returns Filter function
7
- */
8
- function notFromSelf() {
9
- return (message, client) => {
10
- return message.senderInboxId !== client.inboxId;
11
- };
12
- }
13
5
  /**
14
6
  * Creates a filter that includes only messages from the agent itself.
15
7
  *
@@ -20,6 +12,36 @@ function fromSelf() {
20
12
  return message.senderInboxId === client.inboxId;
21
13
  };
22
14
  }
15
+ function hasDefinedContent() {
16
+ return (message) => {
17
+ return !!message.content;
18
+ };
19
+ }
20
+ function isDM() {
21
+ return async (_message, _client, conversation) => {
22
+ return (await conversation.metadata()).conversationType === "dm";
23
+ };
24
+ }
25
+ function isGroup() {
26
+ return async (_message, _client, conversation) => {
27
+ return (await conversation.metadata()).conversationType === "group";
28
+ };
29
+ }
30
+ function isReaction() {
31
+ return (message) => {
32
+ return !!message.contentType?.sameAs(ContentTypeReaction);
33
+ };
34
+ }
35
+ function isReply() {
36
+ return (message) => {
37
+ return !!message.contentType?.sameAs(ContentTypeReply);
38
+ };
39
+ }
40
+ function isRemoteAttachment() {
41
+ return (message) => {
42
+ return !!message.contentType?.sameAs(ContentTypeRemoteAttachment);
43
+ };
44
+ }
23
45
  /**
24
46
  * Creates a filter that includes only text messages.
25
47
  *
@@ -30,6 +52,11 @@ function isText() {
30
52
  return !!message.contentType?.sameAs(ContentTypeText);
31
53
  };
32
54
  }
55
+ function isTextReply() {
56
+ return (message) => {
57
+ return isReply()(message) && typeof message.content.content === "string";
58
+ };
59
+ }
33
60
  /**
34
61
  * Creates a filter for messages from specific senders
35
62
  *
@@ -52,6 +79,15 @@ function fromSender(senderInboxId) {
52
79
  */
53
80
  function startsWith(prefix) {
54
81
  return (message) => {
82
+ const getTextContent = (message) => {
83
+ switch (true) {
84
+ case filter.isReaction(message):
85
+ case filter.isTextReply(message):
86
+ return message.content.content;
87
+ case filter.isText(message):
88
+ return message.content;
89
+ }
90
+ };
55
91
  const text = getTextContent(message);
56
92
  return !!(text && text.startsWith(prefix));
57
93
  };
@@ -63,9 +99,9 @@ function startsWith(prefix) {
63
99
  * @returns Filter function
64
100
  */
65
101
  function and(...filters) {
66
- return (message, client) => {
102
+ return async (message, client, conversation) => {
67
103
  for (const filter of filters) {
68
- const result = filter(message, client);
104
+ const result = await filter(message, client, conversation);
69
105
  if (!result)
70
106
  return false;
71
107
  }
@@ -79,9 +115,9 @@ function and(...filters) {
79
115
  * @returns Filter function
80
116
  */
81
117
  function or(...filters) {
82
- return (message, client) => {
118
+ return async (message, client, conversation) => {
83
119
  for (const filter of filters) {
84
- const result = filter(message, client);
120
+ const result = await filter(message, client, conversation);
85
121
  if (result)
86
122
  return true;
87
123
  }
@@ -95,8 +131,8 @@ function or(...filters) {
95
131
  * @returns Filter function
96
132
  */
97
133
  function not(filter) {
98
- return (message, client) => {
99
- return !filter(message, client);
134
+ return async (message, client, conversation) => {
135
+ return !(await filter(message, client, conversation));
100
136
  };
101
137
  }
102
138
  /**
@@ -104,9 +140,15 @@ function not(filter) {
104
140
  */
105
141
  export const filter = {
106
142
  // basic filters
107
- notFromSelf: notFromSelf(),
108
143
  fromSelf: fromSelf(),
144
+ hasDefinedContent: hasDefinedContent(),
145
+ isDM: isDM(),
146
+ isGroup: isGroup(),
147
+ isReaction: isReaction(),
148
+ isRemoteAttachment: isRemoteAttachment(),
149
+ isReply: isReply(),
109
150
  isText: isText(),
151
+ isTextReply: isTextReply(),
110
152
  // factory functions
111
153
  fromSender,
112
154
  startsWith,
@@ -116,9 +158,9 @@ export const filter = {
116
158
  not,
117
159
  };
118
160
  export const f = filter;
119
- export const withFilter = (filter, listener) => (ctx) => {
120
- if (filter(ctx.message, ctx.client)) {
121
- listener(ctx);
161
+ export const withFilter = (filterFn, listener) => async (ctx) => {
162
+ if (await filterFn(ctx.message, ctx.client, ctx.conversation)) {
163
+ await listener(ctx);
122
164
  }
123
165
  };
124
166
  //# sourceMappingURL=filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/utils/filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/utils/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,GAEpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,2BAA2B,GAE5B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAc,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAU1D;;;;GAIG;AACH,SAAS,QAAQ;IACf,OAAO,CAAC,OAAuB,EAAE,MAA4B,EAAE,EAAE;QAC/D,OAAO,OAAO,CAAC,aAAa,KAAK,MAAM,CAAC,OAAO,CAAC;IAClD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,CACL,OAAuB,EAGvB,EAAE;QACF,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAC3B,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,IAAI;IACX,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE;QAC/C,OAAO,CAAC,MAAM,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,gBAAgB,KAAK,IAAI,CAAC;IACnE,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,OAAO;IACd,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE;QAC/C,OAAO,CAAC,MAAM,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,gBAAgB,KAAK,OAAO,CAAC;IACtE,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,CACL,OAAuB,EAC4B,EAAE;QACrD,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC5D,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,OAAO;IACd,OAAO,CACL,OAAuB,EACyB,EAAE;QAClD,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACzD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB;IACzB,OAAO,CACL,OAAuB,EACoC,EAAE;QAC7D,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACpE,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,MAAM;IACb,OAAO,CACL,OAAuB,EAC0B,EAAE;QACnD,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IACxD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,CACL,OAAuB,EAC+C,EAAE;QACxE,OAAO,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,aAAgC;IAClD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;QAC5C,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IAEpB,OAAO,CAAC,OAAuB,EAAE,EAAE;QACjC,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,MAAc;IAChC,OAAO,CAAC,OAAuB,EAAE,EAAE;QACjC,MAAM,cAAc,GAAG,CAAC,OAAuB,EAAE,EAAE;YACjD,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAChC,KAAK,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;oBAC9B,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;gBACjC,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;oBACzB,OAAO,OAAO,CAAC,OAAO,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,GAAG,CACV,GAAG,OAAsC;IAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE;QAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;YAC3D,IAAI,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,EAAE,CACT,GAAG,OAAsC;IAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE;QAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;YAC3D,IAAI,MAAM;gBAAE,OAAO,IAAI,CAAC;QAC1B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,GAAG,CACV,MAAmC;IAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE;QAC7C,OAAO,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,gBAAgB;IAChB,QAAQ,EAAE,QAAQ,EAAE;IACpB,iBAAiB,EAAE,iBAAiB,EAAE;IACtC,IAAI,EAAE,IAAI,EAAE;IACZ,OAAO,EAAE,OAAO,EAAE;IAClB,UAAU,EAAE,UAAU,EAAE;IACxB,kBAAkB,EAAE,kBAAkB,EAAE;IACxC,OAAO,EAAE,OAAO,EAAE;IAClB,MAAM,EAAE,MAAM,EAAE;IAChB,WAAW,EAAE,WAAW,EAAE;IAC1B,oBAAoB;IACpB,UAAU;IACV,UAAU;IACV,cAAc;IACd,GAAG;IACH,EAAE;IACF,GAAG;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GACrB,CACE,QAAqC,EACrC,QAAqE,EACrE,EAAE,CACJ,KAAK,EAAE,GAAiC,EAAE,EAAE;IAC1C,IAAI,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9D,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;AACH,CAAC,CAAC"}
@@ -1,5 +1,4 @@
1
- export * from "./crypto.js";
2
1
  export * from "./debug.js";
2
+ export * from "./error.js";
3
3
  export * from "./filter.js";
4
- export * from "./message.js";
5
4
  export * from "./user.js";
@@ -1,6 +1,5 @@
1
- export * from "./crypto.js";
2
1
  export * from "./debug.js";
2
+ export * from "./error.js";
3
3
  export * from "./filter.js";
4
- export * from "./message.js";
5
4
  export * from "./user.js";
6
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
package/package.json CHANGED
@@ -65,10 +65,10 @@
65
65
  "dev": "tsx --watch src/main.ts",
66
66
  "gen:keys": "tsx src/bin/generateKeys.ts",
67
67
  "start": "yarn demo",
68
- "test": "yarn typecheck && vitest --typecheck",
68
+ "test": "yarn typecheck && vitest run --typecheck",
69
69
  "test:cov": "vitest run --coverage",
70
70
  "typecheck": "tsc --noEmit"
71
71
  },
72
72
  "type": "module",
73
- "version": "0.0.10"
73
+ "version": "0.0.12"
74
74
  }
@@ -1,19 +0,0 @@
1
- /**
2
- * Convert a hex string to a Uint8Array encryption key.
3
- * @param hex - The hex string
4
- * @returns The encryption key
5
- */
6
- export declare const getEncryptionKeyFromHex: (hex: string) => Uint8Array;
7
- /**
8
- * Generates a complete set of client keys required for XMTP agent initialization.
9
- *
10
- * Creates both a wallet private key for client authentication and a database
11
- * encryption key for secure local storage. The returned keys can be used
12
- * directly as environment variables.
13
- *
14
- * @returns An object containing the keys
15
- */
16
- export declare const generateClientKeys: () => {
17
- XMTP_DB_ENCRYPTION_KEY: string;
18
- XMTP_WALLET_KEY: `0x${string}`;
19
- };
@@ -1,43 +0,0 @@
1
- import { getRandomValues } from "node:crypto";
2
- import { fromString, toString } from "uint8arrays";
3
- import { generatePrivateKey } from "viem/accounts";
4
- /**
5
- * Convert a hex string to a Uint8Array encryption key.
6
- * @param hex - The hex string
7
- * @returns The encryption key
8
- */
9
- export const getEncryptionKeyFromHex = (hex) => {
10
- return fromString(hex, "hex");
11
- };
12
- /**
13
- * Generates a cryptographically secure random encryption key for database encryption.
14
- *
15
- * Creates a 256-bit (32-byte) encryption key using the Node.js crypto module's
16
- * secure random number generator.
17
- *
18
- * @returns A hex-encoded encryption key string (64 characters)
19
- */
20
- const generateEncryptionKeyHex = () => {
21
- /* Generate a random encryption key */
22
- const uint8Array = getRandomValues(new Uint8Array(32));
23
- /* Convert the encryption key to a hex string */
24
- return toString(uint8Array, "hex");
25
- };
26
- /**
27
- * Generates a complete set of client keys required for XMTP agent initialization.
28
- *
29
- * Creates both a wallet private key for client authentication and a database
30
- * encryption key for secure local storage. The returned keys can be used
31
- * directly as environment variables.
32
- *
33
- * @returns An object containing the keys
34
- */
35
- export const generateClientKeys = () => {
36
- const walletKey = generatePrivateKey();
37
- const dbEncryptionKey = generateEncryptionKeyHex();
38
- return {
39
- XMTP_DB_ENCRYPTION_KEY: dbEncryptionKey,
40
- XMTP_WALLET_KEY: walletKey,
41
- };
42
- };
43
- //# sourceMappingURL=crypto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/utils/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAc,EAAE;IACjE,OAAO,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,wBAAwB,GAAG,GAAG,EAAE;IACpC,sCAAsC;IACtC,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD,gDAAgD;IAChD,OAAO,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,MAAM,eAAe,GAAG,wBAAwB,EAAE,CAAC;IACnD,OAAO;QACL,sBAAsB,EAAE,eAAe;QACvC,eAAe,EAAE,SAAS;KAC3B,CAAC;AACJ,CAAC,CAAC"}
@@ -1,38 +0,0 @@
1
- import { type Reaction } from "@xmtp/content-type-reaction";
2
- import { type RemoteAttachment } from "@xmtp/content-type-remote-attachment";
3
- import { type Reply } from "@xmtp/content-type-reply";
4
- import type { DecodedMessage } from "@xmtp/node-sdk";
5
- type ContentMessage = Pick<DecodedMessage, "content" | "contentType" | "fallback">;
6
- export declare const hasDefinedContent: <ContentTypes = unknown>(message: DecodedMessage<ContentTypes>) => message is DecodedMessage<ContentTypes> & {
7
- content: ContentTypes;
8
- };
9
- export declare const isReaction: <M extends ContentMessage>(m: M) => m is M & {
10
- content: Reaction;
11
- };
12
- export declare const isReply: <M extends ContentMessage>(m: M) => m is M & {
13
- content: Reply;
14
- };
15
- export declare const isTextReply: <M extends ContentMessage>(m: M) => m is M & {
16
- content: Reply & {
17
- content: string;
18
- };
19
- };
20
- export declare const isText: <M extends ContentMessage>(m: M) => m is M & {
21
- content: string;
22
- };
23
- export declare const isRemoteAttachment: <M extends ContentMessage>(m: M) => m is M & {
24
- content: RemoteAttachment;
25
- };
26
- /**
27
- * Extracts the text content from various XMTP message types.
28
- *
29
- * Supports extracting text from:
30
- * - Text messages: Returns the direct string content
31
- * - Text replies: Returns the reply content text
32
- * - Reactions: Returns the reaction content (emoji/text)
33
- *
34
- * @param message - The decoded message to extract text from
35
- * @returns The text content as a string, or `undefined` for message types that don't contain extractable text content
36
- */
37
- export declare const getTextContent: (message: ContentMessage) => string | undefined;
38
- export {};
@@ -1,31 +0,0 @@
1
- import { ContentTypeReaction, } from "@xmtp/content-type-reaction";
2
- import { ContentTypeRemoteAttachment, } from "@xmtp/content-type-remote-attachment";
3
- import { ContentTypeReply } from "@xmtp/content-type-reply";
4
- import { ContentTypeText } from "@xmtp/content-type-text";
5
- export const hasDefinedContent = (message) => message.content !== undefined;
6
- export const isReaction = (m) => !!m.contentType?.sameAs(ContentTypeReaction);
7
- export const isReply = (m) => !!m.contentType?.sameAs(ContentTypeReply);
8
- export const isTextReply = (m) => isReply(m) && typeof m.content.content === "string";
9
- export const isText = (m) => !!m.contentType?.sameAs(ContentTypeText);
10
- export const isRemoteAttachment = (m) => !!m.contentType?.sameAs(ContentTypeRemoteAttachment);
11
- /**
12
- * Extracts the text content from various XMTP message types.
13
- *
14
- * Supports extracting text from:
15
- * - Text messages: Returns the direct string content
16
- * - Text replies: Returns the reply content text
17
- * - Reactions: Returns the reaction content (emoji/text)
18
- *
19
- * @param message - The decoded message to extract text from
20
- * @returns The text content as a string, or `undefined` for message types that don't contain extractable text content
21
- */
22
- export const getTextContent = (message) => {
23
- switch (true) {
24
- case isReaction(message):
25
- case isTextReply(message):
26
- return message.content.content;
27
- case isText(message):
28
- return message.content;
29
- }
30
- };
31
- //# sourceMappingURL=message.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/utils/message.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,GAEpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,2BAA2B,GAE5B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAc,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAQ1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,OAAqC,EAGrC,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC;AAEnC,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,CAAI,EAC4B,EAAE,CAClC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAE/C,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,CAAI,EACyB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE5E,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,CAAI,EAC+C,EAAE,CACrD,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC;AAEtD,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,CAAI,EAC0B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;AAE5E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,CAAI,EACoC,EAAE,CAC1C,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAuB,EAAE,EAAE;IACxD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC;QACzB,KAAK,WAAW,CAAC,OAAO,CAAC;YACvB,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QACjC,KAAK,MAAM,CAAC,OAAO,CAAC;YAClB,OAAO,OAAO,CAAC,OAAO,CAAC;IAC3B,CAAC;AACH,CAAC,CAAC"}