@xmtp/agent-sdk 1.2.4 → 1.2.5-rc2
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.
- package/dist/debug.d.ts +141 -1
- package/dist/debug.js +85 -2
- package/dist/debug.js.map +1 -1
- package/dist/index.d.ts +175 -4
- package/dist/index.js +703 -5
- package/dist/index.js.map +1 -1
- package/dist/middleware.d.ts +81 -1
- package/dist/middleware.js +59 -2
- package/dist/middleware.js.map +1 -1
- package/dist/user.d.ts +16 -1
- package/dist/user.js +111 -2
- package/dist/user.js.map +1 -1
- package/dist/util.d.ts +46 -1
- package/dist/util.js +74 -2
- package/dist/util.js.map +1 -1
- package/package.json +14 -21
- package/dist/bin/generateKeys.d.ts +0 -2
- package/dist/bin/generateKeys.js +0 -44
- package/dist/bin/generateKeys.js.map +0 -1
- package/dist/core/Agent.d.ts +0 -84
- package/dist/core/Agent.js +0 -394
- package/dist/core/Agent.js.map +0 -1
- package/dist/core/AgentError.d.ts +0 -7
- package/dist/core/AgentError.js +0 -13
- package/dist/core/AgentError.js.map +0 -1
- package/dist/core/ClientContext.d.ts +0 -9
- package/dist/core/ClientContext.js +0 -13
- package/dist/core/ClientContext.js.map +0 -1
- package/dist/core/ConversationContext.d.ts +0 -19
- package/dist/core/ConversationContext.js +0 -43
- package/dist/core/ConversationContext.js.map +0 -1
- package/dist/core/MessageContext.d.ts +0 -33
- package/dist/core/MessageContext.js +0 -75
- package/dist/core/MessageContext.js.map +0 -1
- package/dist/core/filter.d.ts +0 -84
- package/dist/core/filter.js +0 -88
- package/dist/core/filter.js.map +0 -1
- package/dist/core/index.d.ts +0 -6
- package/dist/core/index.js +0 -7
- package/dist/core/index.js.map +0 -1
- package/dist/debug/index.d.ts +0 -1
- package/dist/debug/index.js +0 -2
- package/dist/debug/index.js.map +0 -1
- package/dist/debug/log.d.ts +0 -18
- package/dist/debug/log.js +0 -80
- package/dist/debug/log.js.map +0 -1
- package/dist/middleware/CommandRouter.d.ts +0 -14
- package/dist/middleware/CommandRouter.js +0 -57
- package/dist/middleware/CommandRouter.js.map +0 -1
- package/dist/middleware/index.d.ts +0 -1
- package/dist/middleware/index.js +0 -2
- package/dist/middleware/index.js.map +0 -1
- package/dist/user/NameResolver.d.ts +0 -1
- package/dist/user/NameResolver.js +0 -45
- package/dist/user/NameResolver.js.map +0 -1
- package/dist/user/User.d.ts +0 -10
- package/dist/user/User.js +0 -35
- package/dist/user/User.js.map +0 -1
- package/dist/user/index.d.ts +0 -2
- package/dist/user/index.js +0 -3
- package/dist/user/index.js.map +0 -1
- package/dist/util/AttachmentUtil.d.ts +0 -41
- package/dist/util/AttachmentUtil.js +0 -67
- package/dist/util/AttachmentUtil.js.map +0 -1
- package/dist/util/LimitedMap.d.ts +0 -6
- package/dist/util/LimitedMap.js +0 -20
- package/dist/util/LimitedMap.js.map +0 -1
- package/dist/util/TestUtil.d.ts +0 -35
- package/dist/util/TestUtil.js +0 -83
- package/dist/util/TestUtil.js.map +0 -1
- package/dist/util/index.d.ts +0 -1
- package/dist/util/index.js +0 -2
- package/dist/util/index.js.map +0 -1
package/dist/debug.d.ts
CHANGED
|
@@ -1 +1,141 @@
|
|
|
1
|
-
|
|
1
|
+
import * as _xmtp_node_sdk from '@xmtp/node-sdk';
|
|
2
|
+
import { Client, EncryptedAttachment as EncryptedAttachment$1, Conversation, Dm, Group, DecodedMessage, Reply, Reaction, ReadReceipt, RemoteAttachment, TransactionReference, WalletSendCalls, GroupUpdated, ClientOptions, StreamOptions, HexString, CreateDmOptions, CreateGroupOptions } from '@xmtp/node-sdk';
|
|
3
|
+
import EventEmitter from 'node:events';
|
|
4
|
+
import { ContentCodec } from '@xmtp/content-type-primitives';
|
|
5
|
+
|
|
6
|
+
declare class ClientContext<ContentTypes = unknown> {
|
|
7
|
+
#private;
|
|
8
|
+
constructor({ client }: {
|
|
9
|
+
client: Client<ContentTypes>;
|
|
10
|
+
});
|
|
11
|
+
getClientAddress(): string | undefined;
|
|
12
|
+
get client(): Client<ContentTypes>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
type EncryptedAttachment = {
|
|
16
|
+
content: EncryptedAttachment$1;
|
|
17
|
+
mimeType: string;
|
|
18
|
+
};
|
|
19
|
+
type AttachmentUploadCallback = (attachment: EncryptedAttachment) => Promise<string>;
|
|
20
|
+
|
|
21
|
+
declare class ConversationContext<ContentTypes = unknown, ConversationType extends Conversation = Conversation> extends ClientContext<ContentTypes> {
|
|
22
|
+
#private;
|
|
23
|
+
constructor({ conversation, client, }: {
|
|
24
|
+
conversation: ConversationType;
|
|
25
|
+
client: Client<ContentTypes>;
|
|
26
|
+
});
|
|
27
|
+
isDm(): this is ConversationContext<ContentTypes, Dm<ContentTypes>>;
|
|
28
|
+
isGroup(): this is ConversationContext<ContentTypes, Group<ContentTypes>>;
|
|
29
|
+
sendMarkdown(markdown: string): Promise<void>;
|
|
30
|
+
sendText(text: string): Promise<void>;
|
|
31
|
+
sendRemoteAttachment(unencryptedFile: File, uploadCallback: AttachmentUploadCallback): Promise<void>;
|
|
32
|
+
get conversation(): ConversationType;
|
|
33
|
+
get isAllowed(): boolean;
|
|
34
|
+
get isDenied(): boolean;
|
|
35
|
+
get isUnknown(): boolean;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
type DecodedMessageWithContent<ContentTypes = unknown> = DecodedMessage<ContentTypes> & {
|
|
39
|
+
content: ContentTypes;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
type MessageContextParams<MessageContentType = unknown, ContentTypes = unknown> = Omit<AgentBaseContext<ContentTypes>, "message"> & {
|
|
43
|
+
message: DecodedMessageWithContent<MessageContentType>;
|
|
44
|
+
};
|
|
45
|
+
declare class MessageContext<MessageContentType = unknown, ContentTypes = unknown> extends ConversationContext<ContentTypes> {
|
|
46
|
+
#private;
|
|
47
|
+
constructor({ message, conversation, client, }: MessageContextParams<MessageContentType, ContentTypes>);
|
|
48
|
+
usesCodec<T extends ContentCodec>(codecClass: new () => T): this is MessageContext<ReturnType<T["decode"]>>;
|
|
49
|
+
isMarkdown(): this is MessageContext<string>;
|
|
50
|
+
isText(): this is MessageContext<string>;
|
|
51
|
+
isReply(): this is MessageContext<Reply>;
|
|
52
|
+
isReaction(): this is MessageContext<Reaction>;
|
|
53
|
+
isReadReceipt(): this is MessageContext<ReadReceipt>;
|
|
54
|
+
isRemoteAttachment(): this is MessageContext<RemoteAttachment>;
|
|
55
|
+
isTransactionReference(): this is MessageContext<TransactionReference>;
|
|
56
|
+
isWalletSendCalls(): this is MessageContext<WalletSendCalls>;
|
|
57
|
+
sendReaction(content: string, schema?: Reaction["schema"]): Promise<void>;
|
|
58
|
+
sendMarkdownReply(markdown: string): Promise<void>;
|
|
59
|
+
sendTextReply(text: string): Promise<void>;
|
|
60
|
+
getSenderAddress(): Promise<string | undefined>;
|
|
61
|
+
get message(): DecodedMessageWithContent<MessageContentType>;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
type EventHandlerMap<ContentTypes> = {
|
|
65
|
+
attachment: [ctx: MessageContext<RemoteAttachment, ContentTypes>];
|
|
66
|
+
conversation: [ctx: ConversationContext<ContentTypes>];
|
|
67
|
+
"group-update": [ctx: MessageContext<GroupUpdated, ContentTypes>];
|
|
68
|
+
dm: [ctx: ConversationContext<ContentTypes, Dm<ContentTypes>>];
|
|
69
|
+
group: [ctx: ConversationContext<ContentTypes, Group<ContentTypes>>];
|
|
70
|
+
markdown: [ctx: MessageContext<string, ContentTypes>];
|
|
71
|
+
message: [ctx: MessageContext<unknown, ContentTypes>];
|
|
72
|
+
reaction: [ctx: MessageContext<Reaction, ContentTypes>];
|
|
73
|
+
"read-receipt": [ctx: MessageContext<ReadReceipt, ContentTypes>];
|
|
74
|
+
reply: [ctx: MessageContext<Reply, ContentTypes>];
|
|
75
|
+
start: [ctx: ClientContext<ContentTypes>];
|
|
76
|
+
stop: [ctx: ClientContext<ContentTypes>];
|
|
77
|
+
text: [ctx: MessageContext<string, ContentTypes>];
|
|
78
|
+
"transaction-reference": [
|
|
79
|
+
ctx: MessageContext<TransactionReference, ContentTypes>
|
|
80
|
+
];
|
|
81
|
+
unhandledError: [error: Error];
|
|
82
|
+
unknownMessage: [ctx: MessageContext<unknown, ContentTypes>];
|
|
83
|
+
"wallet-send-calls": [ctx: MessageContext<WalletSendCalls, ContentTypes>];
|
|
84
|
+
};
|
|
85
|
+
type EthAddress = HexString;
|
|
86
|
+
type AgentBaseContext<ContentTypes = unknown> = {
|
|
87
|
+
client: Client<ContentTypes>;
|
|
88
|
+
conversation: Conversation;
|
|
89
|
+
message: DecodedMessage;
|
|
90
|
+
};
|
|
91
|
+
type AgentErrorContext<ContentTypes = unknown> = Partial<AgentBaseContext<ContentTypes>> & {
|
|
92
|
+
client: Client<ContentTypes>;
|
|
93
|
+
};
|
|
94
|
+
type AgentOptions<ContentTypes> = {
|
|
95
|
+
client: Client<ContentTypes>;
|
|
96
|
+
};
|
|
97
|
+
type AgentMiddleware<ContentTypes = unknown> = (ctx: MessageContext<unknown, ContentTypes>, next: () => Promise<void> | void) => Promise<void>;
|
|
98
|
+
type AgentErrorMiddleware<ContentTypes = unknown> = (error: unknown, ctx: AgentErrorContext<ContentTypes>, next: (err?: unknown) => Promise<void> | void) => Promise<void> | void;
|
|
99
|
+
type AgentStreamingOptions = Omit<StreamOptions, "onValue" | "onError">;
|
|
100
|
+
type AgentErrorRegistrar<ContentTypes> = {
|
|
101
|
+
use(...errorMiddleware: Array<AgentErrorMiddleware<ContentTypes> | AgentErrorMiddleware<ContentTypes>[]>): AgentErrorRegistrar<ContentTypes>;
|
|
102
|
+
};
|
|
103
|
+
declare class Agent<ContentTypes = unknown> extends EventEmitter<EventHandlerMap<ContentTypes>> {
|
|
104
|
+
#private;
|
|
105
|
+
constructor({ client }: AgentOptions<ContentTypes>);
|
|
106
|
+
static create<ContentCodecs extends ContentCodec[] = []>(signer: Parameters<typeof Client.create>[0], options?: Omit<ClientOptions, "codecs"> & {
|
|
107
|
+
codecs?: ContentCodecs;
|
|
108
|
+
}): Promise<Agent<_xmtp_node_sdk.ExtractCodecContentTypes<ContentCodecs>>>;
|
|
109
|
+
static createFromEnv<ContentCodecs extends ContentCodec[] = []>(options?: Omit<ClientOptions, "codecs"> & {
|
|
110
|
+
codecs?: ContentCodecs;
|
|
111
|
+
}): Promise<Agent<_xmtp_node_sdk.ExtractCodecContentTypes<ContentCodecs>>>;
|
|
112
|
+
get libxmtpVersion(): string | undefined;
|
|
113
|
+
use(...middleware: Array<AgentMiddleware<ContentTypes> | AgentMiddleware<ContentTypes>[]>): this;
|
|
114
|
+
start(options?: AgentStreamingOptions): Promise<void>;
|
|
115
|
+
get client(): Client<ContentTypes>;
|
|
116
|
+
get errors(): AgentErrorRegistrar<ContentTypes>;
|
|
117
|
+
stop(): Promise<void>;
|
|
118
|
+
createDmWithAddress(address: EthAddress, options?: CreateDmOptions): Promise<Dm<ContentTypes>>;
|
|
119
|
+
createGroupWithAddresses(addresses: EthAddress[], options?: CreateGroupOptions): Promise<Group<ContentTypes>>;
|
|
120
|
+
addMembersWithAddresses<ContentTypes>(group: Group<ContentTypes>, addresses: EthAddress[]): Promise<void>;
|
|
121
|
+
getConversationContext(conversationId: string): Promise<ConversationContext<ContentTypes, Dm<ContentTypes> | Group<ContentTypes>> | undefined>;
|
|
122
|
+
get address(): string | undefined;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
declare const logDetails: <ContentTypes>(agent: Agent<ContentTypes>) => Promise<void>;
|
|
126
|
+
/**
|
|
127
|
+
* Returns a URL to test your agent on https://xmtp.chat/ (for development purposes only).
|
|
128
|
+
*
|
|
129
|
+
* @param client - Your XMTP client
|
|
130
|
+
* @returns The URL to test your agent with
|
|
131
|
+
*/
|
|
132
|
+
declare const getTestUrl: <ContentTypes>(client: Client<ContentTypes>) => string;
|
|
133
|
+
type InstallationInfo = {
|
|
134
|
+
totalInstallations: number;
|
|
135
|
+
installationId: string;
|
|
136
|
+
mostRecentInstallationId: null | string;
|
|
137
|
+
isMostRecent: boolean;
|
|
138
|
+
};
|
|
139
|
+
declare const getInstallationInfo: <ContentTypes>(client: Client<ContentTypes>) => Promise<InstallationInfo>;
|
|
140
|
+
|
|
141
|
+
export { getInstallationInfo, getTestUrl, logDetails };
|
package/dist/debug.js
CHANGED
|
@@ -1,2 +1,85 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Client } from '@xmtp/node-sdk';
|
|
2
|
+
|
|
3
|
+
const logDetails = async (agent) => {
|
|
4
|
+
const xmtp = `\x1b[38;2;252;76;52m
|
|
5
|
+
██╗ ██╗███╗ ███╗████████╗██████╗
|
|
6
|
+
╚██╗██╔╝████╗ ████║╚══██╔══╝██╔══██╗
|
|
7
|
+
╚███╔╝ ██╔████╔██║ ██║ ██████╔╝
|
|
8
|
+
██╔██╗ ██║╚██╔╝██║ ██║ ██╔═══╝
|
|
9
|
+
██╔╝ ██╗██║ ╚═╝ ██║ ██║ ██║
|
|
10
|
+
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝
|
|
11
|
+
\x1b[0m`;
|
|
12
|
+
const client = agent.client;
|
|
13
|
+
const clientsByAddress = client.accountIdentifier?.identifier;
|
|
14
|
+
const inboxId = client.inboxId;
|
|
15
|
+
const installationId = client.installationId;
|
|
16
|
+
const env = client.options?.env ?? "dev";
|
|
17
|
+
const urls = [`http://xmtp.chat/${env}/dm/${clientsByAddress}`];
|
|
18
|
+
const conversations = await client.conversations.list();
|
|
19
|
+
const inboxState = await client.preferences.inboxState();
|
|
20
|
+
const keyPackageStatuses = await client.fetchKeyPackageStatuses([
|
|
21
|
+
installationId,
|
|
22
|
+
]);
|
|
23
|
+
let createdDate = new Date();
|
|
24
|
+
let expiryDate = new Date();
|
|
25
|
+
// Extract key package status for the specific installation
|
|
26
|
+
const keyPackageStatus = keyPackageStatuses[installationId] ?? {};
|
|
27
|
+
if (keyPackageStatus.lifetime) {
|
|
28
|
+
createdDate = new Date(Number(keyPackageStatus.lifetime.notBefore) * 1000);
|
|
29
|
+
expiryDate = new Date(Number(keyPackageStatus.lifetime.notAfter) * 1000);
|
|
30
|
+
}
|
|
31
|
+
console.log(`
|
|
32
|
+
${xmtp}
|
|
33
|
+
|
|
34
|
+
✓ XMTP Client:
|
|
35
|
+
• InboxId: ${inboxId}
|
|
36
|
+
• LibXMTP Version: ${agent.libxmtpVersion}
|
|
37
|
+
• Address: ${clientsByAddress}
|
|
38
|
+
• Conversations: ${conversations.length}
|
|
39
|
+
• Installations: ${inboxState.installations.length}
|
|
40
|
+
• InstallationId: ${installationId}
|
|
41
|
+
• Key Package created: ${createdDate.toLocaleString()}
|
|
42
|
+
• Key Package valid until: ${expiryDate.toLocaleString()}
|
|
43
|
+
• Networks: ${env}
|
|
44
|
+
${urls.map((url) => `• URL: ${url}`).join("\n")}`);
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Returns a URL to test your agent on https://xmtp.chat/ (for development purposes only).
|
|
48
|
+
*
|
|
49
|
+
* @param client - Your XMTP client
|
|
50
|
+
* @returns The URL to test your agent with
|
|
51
|
+
*/
|
|
52
|
+
const getTestUrl = (client) => {
|
|
53
|
+
const address = client.accountIdentifier?.identifier;
|
|
54
|
+
const env = client.options?.env ?? "dev";
|
|
55
|
+
return `http://xmtp.chat/${env}/dm/${address}`;
|
|
56
|
+
};
|
|
57
|
+
const getInstallationInfo = async (client) => {
|
|
58
|
+
const myInboxId = client.inboxId;
|
|
59
|
+
const myInstallationId = client.installationId;
|
|
60
|
+
const inboxStates = await Client.fetchInboxStates([myInboxId], client.options?.env);
|
|
61
|
+
const installations = inboxStates.find((state) => state.inboxId === myInboxId)?.installations ||
|
|
62
|
+
[];
|
|
63
|
+
const sortedInstallations = [...installations].sort((a, b) => {
|
|
64
|
+
const aTime = a.clientTimestampNs ?? 0n;
|
|
65
|
+
const bTime = b.clientTimestampNs ?? 0n;
|
|
66
|
+
return bTime > aTime ? 1 : bTime < aTime ? -1 : 0;
|
|
67
|
+
});
|
|
68
|
+
const mostRecentInstallation = sortedInstallations[0];
|
|
69
|
+
const myInstallationIdHex = Buffer.from(client.installationIdBytes).toString("hex");
|
|
70
|
+
const info = {
|
|
71
|
+
totalInstallations: installations.length,
|
|
72
|
+
installationId: myInstallationId,
|
|
73
|
+
mostRecentInstallationId: null,
|
|
74
|
+
isMostRecent: false,
|
|
75
|
+
};
|
|
76
|
+
if (mostRecentInstallation) {
|
|
77
|
+
const mostRecentIdHex = Buffer.from(mostRecentInstallation.bytes).toString("hex");
|
|
78
|
+
info.mostRecentInstallationId = mostRecentIdHex;
|
|
79
|
+
info.isMostRecent = myInstallationIdHex === mostRecentIdHex;
|
|
80
|
+
}
|
|
81
|
+
return info;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export { getInstallationInfo, getTestUrl, logDetails };
|
|
85
|
+
//# sourceMappingURL=debug.js.map
|
package/dist/debug.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.js","
|
|
1
|
+
{"version":3,"file":"debug.js","sources":["../src/debug/log.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,175 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
|
|
1
|
+
import * as _xmtp_node_sdk from '@xmtp/node-sdk';
|
|
2
|
+
import { Client, EncryptedAttachment as EncryptedAttachment$1, Conversation, Dm, Group, DecodedMessage, GroupUpdated, Reaction, ReadReceipt, RemoteAttachment, Reply, TransactionReference, WalletSendCalls, StreamOptions, ClientOptions, HexString, CreateDmOptions, CreateGroupOptions } from '@xmtp/node-sdk';
|
|
3
|
+
export * from '@xmtp/node-sdk';
|
|
4
|
+
import EventEmitter from 'node:events';
|
|
5
|
+
import { ContentCodec } from '@xmtp/content-type-primitives';
|
|
6
|
+
|
|
7
|
+
declare class ClientContext<ContentTypes = unknown> {
|
|
8
|
+
#private;
|
|
9
|
+
constructor({ client }: {
|
|
10
|
+
client: Client<ContentTypes>;
|
|
11
|
+
});
|
|
12
|
+
getClientAddress(): string | undefined;
|
|
13
|
+
get client(): Client<ContentTypes>;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
type EncryptedAttachment = {
|
|
17
|
+
content: EncryptedAttachment$1;
|
|
18
|
+
mimeType: string;
|
|
19
|
+
};
|
|
20
|
+
type AttachmentUploadCallback = (attachment: EncryptedAttachment) => Promise<string>;
|
|
21
|
+
|
|
22
|
+
declare class ConversationContext<ContentTypes = unknown, ConversationType extends Conversation = Conversation> extends ClientContext<ContentTypes> {
|
|
23
|
+
#private;
|
|
24
|
+
constructor({ conversation, client, }: {
|
|
25
|
+
conversation: ConversationType;
|
|
26
|
+
client: Client<ContentTypes>;
|
|
27
|
+
});
|
|
28
|
+
isDm(): this is ConversationContext<ContentTypes, Dm<ContentTypes>>;
|
|
29
|
+
isGroup(): this is ConversationContext<ContentTypes, Group<ContentTypes>>;
|
|
30
|
+
sendMarkdown(markdown: string): Promise<void>;
|
|
31
|
+
sendText(text: string): Promise<void>;
|
|
32
|
+
sendRemoteAttachment(unencryptedFile: File, uploadCallback: AttachmentUploadCallback): Promise<void>;
|
|
33
|
+
get conversation(): ConversationType;
|
|
34
|
+
get isAllowed(): boolean;
|
|
35
|
+
get isDenied(): boolean;
|
|
36
|
+
get isUnknown(): boolean;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
type DecodedMessageWithContent<ContentTypes = unknown> = DecodedMessage<ContentTypes> & {
|
|
40
|
+
content: ContentTypes;
|
|
41
|
+
};
|
|
42
|
+
declare const filter: {
|
|
43
|
+
fromSelf: <ContentTypes>(message: DecodedMessage<ContentTypes>, client: Client<ContentTypes>) => boolean;
|
|
44
|
+
hasContent: <ContentTypes>(message: DecodedMessage<ContentTypes>) => message is DecodedMessageWithContent<ContentTypes>;
|
|
45
|
+
isDM: (conversation: Conversation) => conversation is Dm;
|
|
46
|
+
isGroup: (conversation: Conversation) => conversation is Group;
|
|
47
|
+
isGroupAdmin: (conversation: Conversation, message: DecodedMessage) => boolean;
|
|
48
|
+
isGroupSuperAdmin: (conversation: Conversation, message: DecodedMessage) => boolean;
|
|
49
|
+
isGroupUpdate: (message: DecodedMessage) => message is DecodedMessageWithContent<GroupUpdated>;
|
|
50
|
+
isMarkdown: (message: DecodedMessage) => message is DecodedMessageWithContent<string>;
|
|
51
|
+
isReaction: (message: DecodedMessage) => message is DecodedMessageWithContent<Reaction>;
|
|
52
|
+
isReadReceipt: (message: DecodedMessage) => message is DecodedMessageWithContent<ReadReceipt>;
|
|
53
|
+
isRemoteAttachment: (message: DecodedMessage) => message is DecodedMessageWithContent<RemoteAttachment>;
|
|
54
|
+
isReply: (message: DecodedMessage) => message is DecodedMessageWithContent<Reply>;
|
|
55
|
+
isText: (message: DecodedMessage) => message is DecodedMessageWithContent<string>;
|
|
56
|
+
isTextReply: (message: DecodedMessage) => boolean;
|
|
57
|
+
isTransactionReference: (message: DecodedMessage) => message is DecodedMessageWithContent<TransactionReference>;
|
|
58
|
+
isWalletSendCalls: (message: DecodedMessage) => message is DecodedMessageWithContent<WalletSendCalls>;
|
|
59
|
+
usesCodec: <T extends ContentCodec>(message: DecodedMessage, codecClass: new () => T) => message is DecodedMessageWithContent<T>;
|
|
60
|
+
};
|
|
61
|
+
declare const f: {
|
|
62
|
+
fromSelf: <ContentTypes>(message: DecodedMessage<ContentTypes>, client: Client<ContentTypes>) => boolean;
|
|
63
|
+
hasContent: <ContentTypes>(message: DecodedMessage<ContentTypes>) => message is DecodedMessageWithContent<ContentTypes>;
|
|
64
|
+
isDM: (conversation: Conversation) => conversation is Dm;
|
|
65
|
+
isGroup: (conversation: Conversation) => conversation is Group;
|
|
66
|
+
isGroupAdmin: (conversation: Conversation, message: DecodedMessage) => boolean;
|
|
67
|
+
isGroupSuperAdmin: (conversation: Conversation, message: DecodedMessage) => boolean;
|
|
68
|
+
isGroupUpdate: (message: DecodedMessage) => message is DecodedMessageWithContent<GroupUpdated>;
|
|
69
|
+
isMarkdown: (message: DecodedMessage) => message is DecodedMessageWithContent<string>;
|
|
70
|
+
isReaction: (message: DecodedMessage) => message is DecodedMessageWithContent<Reaction>;
|
|
71
|
+
isReadReceipt: (message: DecodedMessage) => message is DecodedMessageWithContent<ReadReceipt>;
|
|
72
|
+
isRemoteAttachment: (message: DecodedMessage) => message is DecodedMessageWithContent<RemoteAttachment>;
|
|
73
|
+
isReply: (message: DecodedMessage) => message is DecodedMessageWithContent<Reply>;
|
|
74
|
+
isText: (message: DecodedMessage) => message is DecodedMessageWithContent<string>;
|
|
75
|
+
isTextReply: (message: DecodedMessage) => boolean;
|
|
76
|
+
isTransactionReference: (message: DecodedMessage) => message is DecodedMessageWithContent<TransactionReference>;
|
|
77
|
+
isWalletSendCalls: (message: DecodedMessage) => message is DecodedMessageWithContent<WalletSendCalls>;
|
|
78
|
+
usesCodec: <T extends ContentCodec>(message: DecodedMessage, codecClass: new () => T) => message is DecodedMessageWithContent<T>;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
type MessageContextParams<MessageContentType = unknown, ContentTypes = unknown> = Omit<AgentBaseContext<ContentTypes>, "message"> & {
|
|
82
|
+
message: DecodedMessageWithContent<MessageContentType>;
|
|
83
|
+
};
|
|
84
|
+
declare class MessageContext<MessageContentType = unknown, ContentTypes = unknown> extends ConversationContext<ContentTypes> {
|
|
85
|
+
#private;
|
|
86
|
+
constructor({ message, conversation, client, }: MessageContextParams<MessageContentType, ContentTypes>);
|
|
87
|
+
usesCodec<T extends ContentCodec>(codecClass: new () => T): this is MessageContext<ReturnType<T["decode"]>>;
|
|
88
|
+
isMarkdown(): this is MessageContext<string>;
|
|
89
|
+
isText(): this is MessageContext<string>;
|
|
90
|
+
isReply(): this is MessageContext<Reply>;
|
|
91
|
+
isReaction(): this is MessageContext<Reaction>;
|
|
92
|
+
isReadReceipt(): this is MessageContext<ReadReceipt>;
|
|
93
|
+
isRemoteAttachment(): this is MessageContext<RemoteAttachment>;
|
|
94
|
+
isTransactionReference(): this is MessageContext<TransactionReference>;
|
|
95
|
+
isWalletSendCalls(): this is MessageContext<WalletSendCalls>;
|
|
96
|
+
sendReaction(content: string, schema?: Reaction["schema"]): Promise<void>;
|
|
97
|
+
sendMarkdownReply(markdown: string): Promise<void>;
|
|
98
|
+
sendTextReply(text: string): Promise<void>;
|
|
99
|
+
getSenderAddress(): Promise<string | undefined>;
|
|
100
|
+
get message(): DecodedMessageWithContent<MessageContentType>;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
type EventHandlerMap<ContentTypes> = {
|
|
104
|
+
attachment: [ctx: MessageContext<RemoteAttachment, ContentTypes>];
|
|
105
|
+
conversation: [ctx: ConversationContext<ContentTypes>];
|
|
106
|
+
"group-update": [ctx: MessageContext<GroupUpdated, ContentTypes>];
|
|
107
|
+
dm: [ctx: ConversationContext<ContentTypes, Dm<ContentTypes>>];
|
|
108
|
+
group: [ctx: ConversationContext<ContentTypes, Group<ContentTypes>>];
|
|
109
|
+
markdown: [ctx: MessageContext<string, ContentTypes>];
|
|
110
|
+
message: [ctx: MessageContext<unknown, ContentTypes>];
|
|
111
|
+
reaction: [ctx: MessageContext<Reaction, ContentTypes>];
|
|
112
|
+
"read-receipt": [ctx: MessageContext<ReadReceipt, ContentTypes>];
|
|
113
|
+
reply: [ctx: MessageContext<Reply, ContentTypes>];
|
|
114
|
+
start: [ctx: ClientContext<ContentTypes>];
|
|
115
|
+
stop: [ctx: ClientContext<ContentTypes>];
|
|
116
|
+
text: [ctx: MessageContext<string, ContentTypes>];
|
|
117
|
+
"transaction-reference": [
|
|
118
|
+
ctx: MessageContext<TransactionReference, ContentTypes>
|
|
119
|
+
];
|
|
120
|
+
unhandledError: [error: Error];
|
|
121
|
+
unknownMessage: [ctx: MessageContext<unknown, ContentTypes>];
|
|
122
|
+
"wallet-send-calls": [ctx: MessageContext<WalletSendCalls, ContentTypes>];
|
|
123
|
+
};
|
|
124
|
+
type EthAddress = HexString;
|
|
125
|
+
type AgentBaseContext<ContentTypes = unknown> = {
|
|
126
|
+
client: Client<ContentTypes>;
|
|
127
|
+
conversation: Conversation;
|
|
128
|
+
message: DecodedMessage;
|
|
129
|
+
};
|
|
130
|
+
type AgentErrorContext<ContentTypes = unknown> = Partial<AgentBaseContext<ContentTypes>> & {
|
|
131
|
+
client: Client<ContentTypes>;
|
|
132
|
+
};
|
|
133
|
+
type AgentOptions<ContentTypes> = {
|
|
134
|
+
client: Client<ContentTypes>;
|
|
135
|
+
};
|
|
136
|
+
type AgentMessageHandler<ContentTypes = unknown> = (ctx: MessageContext<ContentTypes>) => Promise<void> | void;
|
|
137
|
+
type AgentMiddleware<ContentTypes = unknown> = (ctx: MessageContext<unknown, ContentTypes>, next: () => Promise<void> | void) => Promise<void>;
|
|
138
|
+
type AgentErrorMiddleware<ContentTypes = unknown> = (error: unknown, ctx: AgentErrorContext<ContentTypes>, next: (err?: unknown) => Promise<void> | void) => Promise<void> | void;
|
|
139
|
+
type AgentStreamingOptions = Omit<StreamOptions, "onValue" | "onError">;
|
|
140
|
+
type StreamAllMessagesOptions<ContentTypes> = Parameters<Client<ContentTypes>["conversations"]["streamAllMessages"]>[0];
|
|
141
|
+
type AgentErrorRegistrar<ContentTypes> = {
|
|
142
|
+
use(...errorMiddleware: Array<AgentErrorMiddleware<ContentTypes> | AgentErrorMiddleware<ContentTypes>[]>): AgentErrorRegistrar<ContentTypes>;
|
|
143
|
+
};
|
|
144
|
+
declare class Agent<ContentTypes = unknown> extends EventEmitter<EventHandlerMap<ContentTypes>> {
|
|
145
|
+
#private;
|
|
146
|
+
constructor({ client }: AgentOptions<ContentTypes>);
|
|
147
|
+
static create<ContentCodecs extends ContentCodec[] = []>(signer: Parameters<typeof Client.create>[0], options?: Omit<ClientOptions, "codecs"> & {
|
|
148
|
+
codecs?: ContentCodecs;
|
|
149
|
+
}): Promise<Agent<_xmtp_node_sdk.ExtractCodecContentTypes<ContentCodecs>>>;
|
|
150
|
+
static createFromEnv<ContentCodecs extends ContentCodec[] = []>(options?: Omit<ClientOptions, "codecs"> & {
|
|
151
|
+
codecs?: ContentCodecs;
|
|
152
|
+
}): Promise<Agent<_xmtp_node_sdk.ExtractCodecContentTypes<ContentCodecs>>>;
|
|
153
|
+
get libxmtpVersion(): string | undefined;
|
|
154
|
+
use(...middleware: Array<AgentMiddleware<ContentTypes> | AgentMiddleware<ContentTypes>[]>): this;
|
|
155
|
+
start(options?: AgentStreamingOptions): Promise<void>;
|
|
156
|
+
get client(): Client<ContentTypes>;
|
|
157
|
+
get errors(): AgentErrorRegistrar<ContentTypes>;
|
|
158
|
+
stop(): Promise<void>;
|
|
159
|
+
createDmWithAddress(address: EthAddress, options?: CreateDmOptions): Promise<Dm<ContentTypes>>;
|
|
160
|
+
createGroupWithAddresses(addresses: EthAddress[], options?: CreateGroupOptions): Promise<Group<ContentTypes>>;
|
|
161
|
+
addMembersWithAddresses<ContentTypes>(group: Group<ContentTypes>, addresses: EthAddress[]): Promise<void>;
|
|
162
|
+
getConversationContext(conversationId: string): Promise<ConversationContext<ContentTypes, Dm<ContentTypes> | Group<ContentTypes>> | undefined>;
|
|
163
|
+
get address(): string | undefined;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
declare class AgentError extends Error {
|
|
167
|
+
#private;
|
|
168
|
+
constructor(code: number, message: string, cause?: unknown);
|
|
169
|
+
get code(): number;
|
|
170
|
+
}
|
|
171
|
+
declare class AgentStreamingError extends AgentError {
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
export { Agent, AgentError, AgentStreamingError, ClientContext, ConversationContext, MessageContext, f, filter };
|
|
175
|
+
export type { AgentBaseContext, AgentErrorContext, AgentErrorMiddleware, AgentErrorRegistrar, AgentMessageHandler, AgentMiddleware, AgentOptions, AgentStreamingOptions, DecodedMessageWithContent, MessageContextParams, StreamAllMessagesOptions };
|