@xmtp/agent-sdk 1.2.4 → 1.2.5-rc1
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 +176 -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/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,QAAQ,EACR,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,GACd,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACvD,YAAY;AACZ,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/core/filter.ts","../src/debug/log.ts","../src/user/User.ts","../src/core/AgentError.ts","../src/core/ClientContext.ts","../src/util/AttachmentUtil.ts","../src/core/ConversationContext.ts","../src/core/MessageContext.ts","../src/core/Agent.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["xmtpEncryptAttachment"],"mappings":"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"}
|
package/dist/middleware.d.ts
CHANGED
|
@@ -1 +1,81 @@
|
|
|
1
|
-
|
|
1
|
+
import { Client, EncryptedAttachment as EncryptedAttachment$1, Conversation, Dm, Group, DecodedMessage, Reply, Reaction, ReadReceipt, RemoteAttachment, TransactionReference, WalletSendCalls } from '@xmtp/node-sdk';
|
|
2
|
+
import { ContentCodec } from '@xmtp/content-type-primitives';
|
|
3
|
+
|
|
4
|
+
declare class ClientContext<ContentTypes = unknown> {
|
|
5
|
+
#private;
|
|
6
|
+
constructor({ client }: {
|
|
7
|
+
client: Client<ContentTypes>;
|
|
8
|
+
});
|
|
9
|
+
getClientAddress(): string | undefined;
|
|
10
|
+
get client(): Client<ContentTypes>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
type EncryptedAttachment = {
|
|
14
|
+
content: EncryptedAttachment$1;
|
|
15
|
+
mimeType: string;
|
|
16
|
+
};
|
|
17
|
+
type AttachmentUploadCallback = (attachment: EncryptedAttachment) => Promise<string>;
|
|
18
|
+
|
|
19
|
+
declare class ConversationContext<ContentTypes = unknown, ConversationType extends Conversation = Conversation> extends ClientContext<ContentTypes> {
|
|
20
|
+
#private;
|
|
21
|
+
constructor({ conversation, client, }: {
|
|
22
|
+
conversation: ConversationType;
|
|
23
|
+
client: Client<ContentTypes>;
|
|
24
|
+
});
|
|
25
|
+
isDm(): this is ConversationContext<ContentTypes, Dm<ContentTypes>>;
|
|
26
|
+
isGroup(): this is ConversationContext<ContentTypes, Group<ContentTypes>>;
|
|
27
|
+
sendMarkdown(markdown: string): Promise<void>;
|
|
28
|
+
sendText(text: string): Promise<void>;
|
|
29
|
+
sendRemoteAttachment(unencryptedFile: File, uploadCallback: AttachmentUploadCallback): Promise<void>;
|
|
30
|
+
get conversation(): ConversationType;
|
|
31
|
+
get isAllowed(): boolean;
|
|
32
|
+
get isDenied(): boolean;
|
|
33
|
+
get isUnknown(): boolean;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
type DecodedMessageWithContent<ContentTypes = unknown> = DecodedMessage<ContentTypes> & {
|
|
37
|
+
content: ContentTypes;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
type MessageContextParams<MessageContentType = unknown, ContentTypes = unknown> = Omit<AgentBaseContext<ContentTypes>, "message"> & {
|
|
41
|
+
message: DecodedMessageWithContent<MessageContentType>;
|
|
42
|
+
};
|
|
43
|
+
declare class MessageContext<MessageContentType = unknown, ContentTypes = unknown> extends ConversationContext<ContentTypes> {
|
|
44
|
+
#private;
|
|
45
|
+
constructor({ message, conversation, client, }: MessageContextParams<MessageContentType, ContentTypes>);
|
|
46
|
+
usesCodec<T extends ContentCodec>(codecClass: new () => T): this is MessageContext<ReturnType<T["decode"]>>;
|
|
47
|
+
isMarkdown(): this is MessageContext<string>;
|
|
48
|
+
isText(): this is MessageContext<string>;
|
|
49
|
+
isReply(): this is MessageContext<Reply>;
|
|
50
|
+
isReaction(): this is MessageContext<Reaction>;
|
|
51
|
+
isReadReceipt(): this is MessageContext<ReadReceipt>;
|
|
52
|
+
isRemoteAttachment(): this is MessageContext<RemoteAttachment>;
|
|
53
|
+
isTransactionReference(): this is MessageContext<TransactionReference>;
|
|
54
|
+
isWalletSendCalls(): this is MessageContext<WalletSendCalls>;
|
|
55
|
+
sendReaction(content: string, schema?: Reaction["schema"]): Promise<void>;
|
|
56
|
+
sendMarkdownReply(markdown: string): Promise<void>;
|
|
57
|
+
sendTextReply(text: string): Promise<void>;
|
|
58
|
+
getSenderAddress(): Promise<string | undefined>;
|
|
59
|
+
get message(): DecodedMessageWithContent<MessageContentType>;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
type AgentBaseContext<ContentTypes = unknown> = {
|
|
63
|
+
client: Client<ContentTypes>;
|
|
64
|
+
conversation: Conversation;
|
|
65
|
+
message: DecodedMessage;
|
|
66
|
+
};
|
|
67
|
+
type AgentMessageHandler<ContentTypes = unknown> = (ctx: MessageContext<ContentTypes>) => Promise<void> | void;
|
|
68
|
+
type AgentMiddleware<ContentTypes = unknown> = (ctx: MessageContext<unknown, ContentTypes>, next: () => Promise<void> | void) => Promise<void>;
|
|
69
|
+
|
|
70
|
+
/** Content type supported by the "CommandRouter" */
|
|
71
|
+
type SupportedType = string;
|
|
72
|
+
declare class CommandRouter {
|
|
73
|
+
#private;
|
|
74
|
+
get commandList(): string[];
|
|
75
|
+
command(command: string, handler: AgentMessageHandler<SupportedType>): this;
|
|
76
|
+
default(handler: AgentMessageHandler<SupportedType>): this;
|
|
77
|
+
handle(ctx: MessageContext<SupportedType>): Promise<boolean>;
|
|
78
|
+
middleware(): AgentMiddleware;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export { CommandRouter };
|
package/dist/middleware.js
CHANGED
|
@@ -1,2 +1,59 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
class CommandRouter {
|
|
2
|
+
#commandMap = new Map();
|
|
3
|
+
#defaultHandler = null;
|
|
4
|
+
get commandList() {
|
|
5
|
+
return Array.from(this.#commandMap.keys());
|
|
6
|
+
}
|
|
7
|
+
command(command, handler) {
|
|
8
|
+
if (!command.startsWith("/")) {
|
|
9
|
+
throw new Error('Command must start with "/"');
|
|
10
|
+
}
|
|
11
|
+
this.#commandMap.set(command.toLowerCase(), handler);
|
|
12
|
+
return this;
|
|
13
|
+
}
|
|
14
|
+
default(handler) {
|
|
15
|
+
this.#defaultHandler = handler;
|
|
16
|
+
return this;
|
|
17
|
+
}
|
|
18
|
+
async handle(ctx) {
|
|
19
|
+
const messageText = ctx.message.content;
|
|
20
|
+
const parts = messageText.split(" ");
|
|
21
|
+
const command = parts[0]?.toLowerCase();
|
|
22
|
+
if (!command) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
// Check if this is a command message
|
|
26
|
+
if (command.startsWith("/")) {
|
|
27
|
+
const handler = this.#commandMap.get(command);
|
|
28
|
+
if (handler) {
|
|
29
|
+
// Create a new context with modified content (everything after the command)
|
|
30
|
+
const argsText = parts.slice(1).join(" ");
|
|
31
|
+
ctx.message.content = argsText;
|
|
32
|
+
await handler(ctx);
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// If no command matched and there's a default handler, use it
|
|
37
|
+
if (this.#defaultHandler) {
|
|
38
|
+
await this.#defaultHandler(ctx);
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
middleware() {
|
|
44
|
+
return async (ctx, next) => {
|
|
45
|
+
if (ctx.isText()) {
|
|
46
|
+
const handled = await this.handle(ctx);
|
|
47
|
+
if (!handled) {
|
|
48
|
+
await next();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
await next();
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export { CommandRouter };
|
|
59
|
+
//# sourceMappingURL=middleware.js.map
|
package/dist/middleware.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","
|
|
1
|
+
{"version":3,"file":"middleware.js","sources":["../src/middleware/CommandRouter.ts"],"sourcesContent":[null],"names":[],"mappings":"MAMa,aAAa,CAAA;AACxB,IAAA,WAAW,GAAG,IAAI,GAAG,EAA8C;IACnE,eAAe,GAA8C,IAAI;AAEjE,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC5C;IAEA,OAAO,CAAC,OAAe,EAAE,OAA2C,EAAA;QAClE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC5B,YAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;QAChD;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC;AACpD,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,CAAC,OAA2C,EAAA;AACjD,QAAA,IAAI,CAAC,eAAe,GAAG,OAAO;AAC9B,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,MAAM,CAAC,GAAkC,EAAA;AAC7C,QAAA,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO;QACvC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;QACpC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE;QAEvC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,KAAK;QACd;;AAGA,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;YAC7C,IAAI,OAAO,EAAE;;AAEX,gBAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACzC,gBAAA,GAAG,CAAC,OAAO,CAAC,OAAO,GAAG,QAAQ;AAC9B,gBAAA,MAAM,OAAO,CAAC,GAAG,CAAC;AAClB,gBAAA,OAAO,IAAI;YACb;QACF;;AAGA,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;AAC/B,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,KAAK;IACd;IAEA,UAAU,GAAA;AACR,QAAA,OAAO,OAAO,GAAG,EAAE,IAAI,KAAI;AACzB,YAAA,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE;gBAChB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;gBACtC,IAAI,CAAC,OAAO,EAAE;oBACZ,MAAM,IAAI,EAAE;gBACd;YACF;iBAAO;gBACL,MAAM,IAAI,EAAE;YACd;AACF,QAAA,CAAC;IACH;AACD;;;;"}
|
package/dist/user.d.ts
CHANGED
|
@@ -1 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
import { HexString, Identifier, Signer } from '@xmtp/node-sdk';
|
|
2
|
+
import { Hex, PrivateKeyAccount, WalletClient, Chain } from 'viem';
|
|
3
|
+
|
|
4
|
+
type User = {
|
|
5
|
+
key: Hex;
|
|
6
|
+
account: PrivateKeyAccount;
|
|
7
|
+
wallet: WalletClient;
|
|
8
|
+
};
|
|
9
|
+
declare const createUser: (key?: HexString, chain?: Chain) => User;
|
|
10
|
+
declare const createIdentifier: (user: User) => Identifier;
|
|
11
|
+
declare const createSigner: (user: User) => Signer;
|
|
12
|
+
|
|
13
|
+
declare const createNameResolver: (apiKey?: string) => (name: string) => Promise<string | null>;
|
|
14
|
+
|
|
15
|
+
export { createIdentifier, createNameResolver, createSigner, createUser };
|
|
16
|
+
export type { User };
|
package/dist/user.js
CHANGED
|
@@ -1,2 +1,111 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { createWalletClient, http, toBytes, isAddress } from 'viem';
|
|
2
|
+
import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
|
|
3
|
+
import { sepolia } from 'viem/chains';
|
|
4
|
+
import { escape } from 'node:querystring';
|
|
5
|
+
|
|
6
|
+
const createUser = (key, chain = sepolia) => {
|
|
7
|
+
const accountKey = key ?? generatePrivateKey();
|
|
8
|
+
const account = privateKeyToAccount(accountKey);
|
|
9
|
+
return {
|
|
10
|
+
key: accountKey,
|
|
11
|
+
account,
|
|
12
|
+
wallet: createWalletClient({
|
|
13
|
+
account,
|
|
14
|
+
chain,
|
|
15
|
+
transport: http(),
|
|
16
|
+
}),
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
const createIdentifier = (user) => ({
|
|
20
|
+
identifier: user.account.address.toLowerCase(),
|
|
21
|
+
identifierKind: 0 /* IdentifierKind.Ethereum */,
|
|
22
|
+
});
|
|
23
|
+
const createSigner = (user) => {
|
|
24
|
+
const identifier = createIdentifier(user);
|
|
25
|
+
return {
|
|
26
|
+
type: "EOA",
|
|
27
|
+
getIdentifier: () => identifier,
|
|
28
|
+
signMessage: async (message) => {
|
|
29
|
+
const signature = await user.wallet.signMessage({
|
|
30
|
+
account: user.account,
|
|
31
|
+
message,
|
|
32
|
+
});
|
|
33
|
+
return toBytes(signature);
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
class AgentError extends Error {
|
|
39
|
+
#code;
|
|
40
|
+
constructor(code, message, cause) {
|
|
41
|
+
super(message, { cause });
|
|
42
|
+
this.#code = code;
|
|
43
|
+
}
|
|
44
|
+
get code() {
|
|
45
|
+
return this.#code;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
class LimitedMap {
|
|
50
|
+
#map = new Map();
|
|
51
|
+
#limit;
|
|
52
|
+
constructor(limit) {
|
|
53
|
+
this.#limit = limit;
|
|
54
|
+
}
|
|
55
|
+
set(key, value) {
|
|
56
|
+
if (this.#map.size >= this.#limit) {
|
|
57
|
+
const it = this.#map.keys().next();
|
|
58
|
+
if (!it.done) {
|
|
59
|
+
this.#map.delete(it.value);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
this.#map.set(key, value);
|
|
63
|
+
}
|
|
64
|
+
get(key) {
|
|
65
|
+
return this.#map.get(key);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const cache = new LimitedMap(1000);
|
|
70
|
+
const fetchFromWeb3Bio = async (name, apiKey) => {
|
|
71
|
+
const endpoint = `https://api.web3.bio/ns/${escape(name)}`;
|
|
72
|
+
const headers = {
|
|
73
|
+
"Content-Type": "application/json",
|
|
74
|
+
};
|
|
75
|
+
if (apiKey) {
|
|
76
|
+
headers["X-API-KEY"] = `Bearer ${apiKey}`;
|
|
77
|
+
}
|
|
78
|
+
const response = await fetch(endpoint, {
|
|
79
|
+
method: "GET",
|
|
80
|
+
headers,
|
|
81
|
+
});
|
|
82
|
+
if (!response.ok) {
|
|
83
|
+
throw new AgentError(2000, `Could not resolve address for name "${name}": ${response.statusText} (${response.status})`);
|
|
84
|
+
}
|
|
85
|
+
return response.json();
|
|
86
|
+
};
|
|
87
|
+
const resolveName = async (name, apiKey) => {
|
|
88
|
+
if (isAddress(name)) {
|
|
89
|
+
return name;
|
|
90
|
+
}
|
|
91
|
+
const cachedAddress = cache.get(name);
|
|
92
|
+
if (cachedAddress !== undefined) {
|
|
93
|
+
return cachedAddress;
|
|
94
|
+
}
|
|
95
|
+
const response = await fetchFromWeb3Bio(name, apiKey);
|
|
96
|
+
if (response.length === 0) {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
const address = response[0]?.address;
|
|
100
|
+
if (!address) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
cache.set(name, address);
|
|
104
|
+
return address;
|
|
105
|
+
};
|
|
106
|
+
const createNameResolver = (apiKey) => {
|
|
107
|
+
return (name) => resolveName(name, apiKey);
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
export { createIdentifier, createNameResolver, createSigner, createUser };
|
|
111
|
+
//# sourceMappingURL=user.js.map
|
package/dist/user.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.js","
|
|
1
|
+
{"version":3,"file":"user.js","sources":["../src/user/User.ts","../src/core/AgentError.ts","../src/util/LimitedMap.ts","../src/user/NameResolver.ts"],"sourcesContent":[null,null,null,null],"names":[],"mappings":"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"}
|
package/dist/util.d.ts
CHANGED
|
@@ -1 +1,46 @@
|
|
|
1
|
-
|
|
1
|
+
import { EncryptedAttachment as EncryptedAttachment$1, RemoteAttachment, Attachment } from '@xmtp/node-sdk';
|
|
2
|
+
|
|
3
|
+
type EncryptedAttachment = {
|
|
4
|
+
content: EncryptedAttachment$1;
|
|
5
|
+
mimeType: string;
|
|
6
|
+
};
|
|
7
|
+
type AttachmentUploadCallback = (attachment: EncryptedAttachment) => Promise<string>;
|
|
8
|
+
/**
|
|
9
|
+
* Downloads and decrypts a remote attachment.
|
|
10
|
+
*
|
|
11
|
+
* @param remoteAttachment - The remote attachment metadata containing the downloadd URL and encryption keys
|
|
12
|
+
* @param agent - The agent instance used to lookup the necessary decoding codec
|
|
13
|
+
* @returns A promise that resolves with the decrypted attachment
|
|
14
|
+
*/
|
|
15
|
+
declare function downloadRemoteAttachment(remoteAttachment: RemoteAttachment): Promise<Attachment>;
|
|
16
|
+
/**
|
|
17
|
+
* Encrypts an attachment for secure remote storage.
|
|
18
|
+
*
|
|
19
|
+
* @param attachmentData - The attachment to encrypt, including its data, filename, and MIME type
|
|
20
|
+
* @returns A promise that resolves with the encrypted attachment containing the encrypted content and metadata
|
|
21
|
+
*/
|
|
22
|
+
declare function encryptAttachment(attachmentData: Attachment): {
|
|
23
|
+
content: EncryptedAttachment$1;
|
|
24
|
+
mimeType: string;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Creates a remote attachment object from an encrypted attachment and file URL.
|
|
28
|
+
*
|
|
29
|
+
* @param encryptedAttachment - The encrypted attachment containing encryption keys and metadata
|
|
30
|
+
* @param fileUrl - The URL where the encrypted attachment can be downloaded
|
|
31
|
+
* @returns A remote attachment object with all necessary metadata for retrieval and decryption
|
|
32
|
+
*/
|
|
33
|
+
declare function createRemoteAttachment(encryptedAttachment: EncryptedAttachment, fileUrl: string): RemoteAttachment;
|
|
34
|
+
/**
|
|
35
|
+
* Creates a remote attachment from a file by encrypting it and uploading it to a remote storage.
|
|
36
|
+
* This is a convenience function that combines file processing, encryption, uploading, and
|
|
37
|
+
* remote attachment creation into a single operation.
|
|
38
|
+
*
|
|
39
|
+
* @param unencryptedFile - The unencrypted file to process and upload
|
|
40
|
+
* @param uploadCallback - A callback function that receives the encrypted attachment and returns the URL where it was uploaded
|
|
41
|
+
* @returns A promise that resolves with a remote attachment containing all necessary metadata for retrieval and decryption
|
|
42
|
+
*/
|
|
43
|
+
declare function createRemoteAttachmentFromFile(unencryptedFile: File, uploadCallback: AttachmentUploadCallback): Promise<RemoteAttachment>;
|
|
44
|
+
|
|
45
|
+
export { createRemoteAttachment, createRemoteAttachmentFromFile, downloadRemoteAttachment, encryptAttachment };
|
|
46
|
+
export type { AttachmentUploadCallback, EncryptedAttachment };
|
package/dist/util.js
CHANGED
|
@@ -1,2 +1,74 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { decryptAttachment, encryptAttachment as encryptAttachment$1 } from '@xmtp/node-sdk';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Downloads and decrypts a remote attachment.
|
|
5
|
+
*
|
|
6
|
+
* @param remoteAttachment - The remote attachment metadata containing the downloadd URL and encryption keys
|
|
7
|
+
* @param agent - The agent instance used to lookup the necessary decoding codec
|
|
8
|
+
* @returns A promise that resolves with the decrypted attachment
|
|
9
|
+
*/
|
|
10
|
+
async function downloadRemoteAttachment(remoteAttachment) {
|
|
11
|
+
const response = await fetch(remoteAttachment.url);
|
|
12
|
+
if (!response.ok) {
|
|
13
|
+
throw new Error(`unable to fetch remote attachment at "${remoteAttachment.url}": [${response.status}] ${response.statusText}`);
|
|
14
|
+
}
|
|
15
|
+
const payload = new Uint8Array(await response.arrayBuffer());
|
|
16
|
+
return decryptAttachment(payload, remoteAttachment);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Encrypts an attachment for secure remote storage.
|
|
20
|
+
*
|
|
21
|
+
* @param attachmentData - The attachment to encrypt, including its data, filename, and MIME type
|
|
22
|
+
* @returns A promise that resolves with the encrypted attachment containing the encrypted content and metadata
|
|
23
|
+
*/
|
|
24
|
+
function encryptAttachment(attachmentData) {
|
|
25
|
+
const encryptedAttachment = encryptAttachment$1(attachmentData);
|
|
26
|
+
return {
|
|
27
|
+
content: encryptedAttachment,
|
|
28
|
+
mimeType: attachmentData.mimeType,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Creates a remote attachment object from an encrypted attachment and file URL.
|
|
33
|
+
*
|
|
34
|
+
* @param encryptedAttachment - The encrypted attachment containing encryption keys and metadata
|
|
35
|
+
* @param fileUrl - The URL where the encrypted attachment can be downloaded
|
|
36
|
+
* @returns A remote attachment object with all necessary metadata for retrieval and decryption
|
|
37
|
+
*/
|
|
38
|
+
function createRemoteAttachment(encryptedAttachment, fileUrl) {
|
|
39
|
+
const url = new URL(fileUrl);
|
|
40
|
+
return {
|
|
41
|
+
url: url.toString(),
|
|
42
|
+
contentDigest: encryptedAttachment.content.contentDigest,
|
|
43
|
+
salt: encryptedAttachment.content.salt,
|
|
44
|
+
nonce: encryptedAttachment.content.nonce,
|
|
45
|
+
secret: encryptedAttachment.content.secret,
|
|
46
|
+
scheme: url.protocol,
|
|
47
|
+
contentLength: encryptedAttachment.content.payload.length,
|
|
48
|
+
filename: encryptedAttachment.content.filename,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Creates a remote attachment from a file by encrypting it and uploading it to a remote storage.
|
|
53
|
+
* This is a convenience function that combines file processing, encryption, uploading, and
|
|
54
|
+
* remote attachment creation into a single operation.
|
|
55
|
+
*
|
|
56
|
+
* @param unencryptedFile - The unencrypted file to process and upload
|
|
57
|
+
* @param uploadCallback - A callback function that receives the encrypted attachment and returns the URL where it was uploaded
|
|
58
|
+
* @returns A promise that resolves with a remote attachment containing all necessary metadata for retrieval and decryption
|
|
59
|
+
*/
|
|
60
|
+
async function createRemoteAttachmentFromFile(unencryptedFile, uploadCallback) {
|
|
61
|
+
const arrayBuffer = await unencryptedFile.arrayBuffer();
|
|
62
|
+
const attachment = new Uint8Array(arrayBuffer);
|
|
63
|
+
const attachmentData = {
|
|
64
|
+
content: attachment,
|
|
65
|
+
filename: unencryptedFile.name,
|
|
66
|
+
mimeType: unencryptedFile.type,
|
|
67
|
+
};
|
|
68
|
+
const encryptedAttachment = encryptAttachment(attachmentData);
|
|
69
|
+
const fileUrl = await uploadCallback(encryptedAttachment);
|
|
70
|
+
return createRemoteAttachment(encryptedAttachment, fileUrl);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export { createRemoteAttachment, createRemoteAttachmentFromFile, downloadRemoteAttachment, encryptAttachment };
|
|
74
|
+
//# sourceMappingURL=util.js.map
|
package/dist/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","
|
|
1
|
+
{"version":3,"file":"util.js","sources":["../src/util/AttachmentUtil.ts"],"sourcesContent":[null],"names":["xmtpEncryptAttachment"],"mappings":";;AAiBA;;;;;;AAMG;AACI,eAAe,wBAAwB,CAC5C,gBAAkC,EAAA;IAElC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC;AAClD,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAChB,QAAA,MAAM,IAAI,KAAK,CACb,CAAA,sCAAA,EAAyC,gBAAgB,CAAC,GAAG,CAAA,IAAA,EAAO,QAAQ,CAAC,MAAM,CAAA,EAAA,EAAK,QAAQ,CAAC,UAAU,CAAA,CAAE,CAC9G;IACH;IACA,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;AAC5D,IAAA,OAAO,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC;AACrD;AAEA;;;;;AAKG;AACG,SAAU,iBAAiB,CAAC,cAA0B,EAAA;AAC1D,IAAA,MAAM,mBAAmB,GAAGA,mBAAqB,CAAC,cAAc,CAAC;IACjE,OAAO;AACL,QAAA,OAAO,EAAE,mBAAmB;QAC5B,QAAQ,EAAE,cAAc,CAAC,QAAQ;KAClC;AACH;AAEA;;;;;;AAMG;AACG,SAAU,sBAAsB,CACpC,mBAAwC,EACxC,OAAe,EAAA;AAEf,IAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;IAE5B,OAAO;AACL,QAAA,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;AACnB,QAAA,aAAa,EAAE,mBAAmB,CAAC,OAAO,CAAC,aAAa;AACxD,QAAA,IAAI,EAAE,mBAAmB,CAAC,OAAO,CAAC,IAAI;AACtC,QAAA,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,KAAK;AACxC,QAAA,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC,MAAM;QAC1C,MAAM,EAAE,GAAG,CAAC,QAAQ;AACpB,QAAA,aAAa,EAAE,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;AACzD,QAAA,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,QAAQ;KAC/C;AACH;AAEA;;;;;;;;AAQG;AACI,eAAe,8BAA8B,CAClD,eAAqB,EACrB,cAAwC,EAAA;AAExC,IAAA,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE;AACvD,IAAA,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC;AAE9C,IAAA,MAAM,cAAc,GAAe;AACjC,QAAA,OAAO,EAAE,UAAU;QACnB,QAAQ,EAAE,eAAe,CAAC,IAAI;QAC9B,QAAQ,EAAE,eAAe,CAAC,IAAI;KAC/B;AAED,IAAA,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,cAAc,CAAC;AAE7D,IAAA,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,mBAAmB,CAAC;AAEzD,IAAA,OAAO,sBAAsB,CAAC,mBAAmB,EAAE,OAAO,CAAC;AAC7D;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xmtp/agent-sdk",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.5-rc1",
|
|
4
4
|
"description": "XMTP Agent SDK for interacting with XMTP networks",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agents",
|
|
@@ -49,12 +49,10 @@
|
|
|
49
49
|
},
|
|
50
50
|
"main": "dist/index.js",
|
|
51
51
|
"files": [
|
|
52
|
-
"dist"
|
|
53
|
-
"!dist/**/*.test.*",
|
|
54
|
-
"!dist/demo.*"
|
|
52
|
+
"dist"
|
|
55
53
|
],
|
|
56
54
|
"scripts": {
|
|
57
|
-
"build": "yarn clean:dist &&
|
|
55
|
+
"build": "yarn clean:dist && rollup -c",
|
|
58
56
|
"clean": "rm -rf .turbo && rm -rf node_modules && yarn clean:dist",
|
|
59
57
|
"clean:dist": "rm -rf dist",
|
|
60
58
|
"dev": "tsx watch src/demo.ts",
|
|
@@ -66,27 +64,22 @@
|
|
|
66
64
|
"typecheck": "tsc --noEmit"
|
|
67
65
|
},
|
|
68
66
|
"dependencies": {
|
|
69
|
-
"@xmtp/content-type-
|
|
70
|
-
"@xmtp/
|
|
71
|
-
"@xmtp/content-type-read-receipt": "^2.0.2",
|
|
72
|
-
"@xmtp/content-type-remote-attachment": "^2.0.4",
|
|
73
|
-
"@xmtp/content-type-reply": "^2.0.2",
|
|
74
|
-
"@xmtp/content-type-text": "^2.0.2",
|
|
75
|
-
"@xmtp/content-type-transaction-reference": "^2.0.2",
|
|
76
|
-
"@xmtp/content-type-wallet-send-calls": "^2.0.0",
|
|
77
|
-
"@xmtp/node-sdk": "4.6.0",
|
|
67
|
+
"@xmtp/content-type-primitives": "^3.0.0",
|
|
68
|
+
"@xmtp/node-sdk": "5.1.1",
|
|
78
69
|
"viem": "^2.37.6"
|
|
79
70
|
},
|
|
80
71
|
"devDependencies": {
|
|
81
|
-
"@
|
|
72
|
+
"@rollup/plugin-typescript": "^12.3.0",
|
|
82
73
|
"@types/node": "^24.9.1",
|
|
83
|
-
"@vitest/coverage-v8": "^4.0.
|
|
84
|
-
"
|
|
85
|
-
"
|
|
74
|
+
"@vitest/coverage-v8": "^4.0.16",
|
|
75
|
+
"rollup": "^4.55.1",
|
|
76
|
+
"rollup-plugin-dts": "^6.3.0",
|
|
77
|
+
"rollup-plugin-tsconfig-paths": "^1.5.2",
|
|
78
|
+
"tsx": "^4.21.0",
|
|
86
79
|
"typescript": "^5.9.3",
|
|
87
|
-
"vite": "^7.
|
|
88
|
-
"vite-tsconfig-paths": "^
|
|
89
|
-
"vitest": "^4.0.
|
|
80
|
+
"vite": "^7.3.0",
|
|
81
|
+
"vite-tsconfig-paths": "^6.0.3",
|
|
82
|
+
"vitest": "^4.0.16"
|
|
90
83
|
},
|
|
91
84
|
"engines": {
|
|
92
85
|
"node": ">=22"
|
package/dist/bin/generateKeys.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { getRandomValues } from "node:crypto";
|
|
3
|
-
import { writeFileSync } from "node:fs";
|
|
4
|
-
import { join } from "node:path";
|
|
5
|
-
import { generatePrivateKey } from "viem/accounts";
|
|
6
|
-
const generateClientKeys = () => {
|
|
7
|
-
const randomValues = getRandomValues(new Uint8Array(32));
|
|
8
|
-
const dbEncryptionKey = Buffer.from(randomValues).toString("hex");
|
|
9
|
-
return {
|
|
10
|
-
XMTP_DB_ENCRYPTION_KEY: dbEncryptionKey,
|
|
11
|
-
XMTP_WALLET_KEY: generatePrivateKey(),
|
|
12
|
-
};
|
|
13
|
-
};
|
|
14
|
-
/**
|
|
15
|
-
* Generates client keys and saves them to a .env file in the project root.
|
|
16
|
-
* This script creates the necessary environment variables for XMTP agent initialization.
|
|
17
|
-
*/
|
|
18
|
-
function main() {
|
|
19
|
-
try {
|
|
20
|
-
// Generate the client keys
|
|
21
|
-
const keys = generateClientKeys();
|
|
22
|
-
// Create the .env file content
|
|
23
|
-
const envContent = Object.entries(keys)
|
|
24
|
-
.map(([key, value]) => `${key}=${value}`)
|
|
25
|
-
.join("\n") + "\n";
|
|
26
|
-
if (!process.env.INIT_CWD) {
|
|
27
|
-
throw new Error(`Cannot invoke script because "process.env.INIT_CWD" wasn't found.`);
|
|
28
|
-
}
|
|
29
|
-
const envFilePath = join(process.env.INIT_CWD, ".env");
|
|
30
|
-
writeFileSync(envFilePath, envContent, "utf8");
|
|
31
|
-
console.log("✅ Successfully generated client keys and saved to .env file");
|
|
32
|
-
console.log(`📁 File location: ${envFilePath}`);
|
|
33
|
-
console.log("🔑 Generated keys:");
|
|
34
|
-
Object.keys(keys).forEach((key) => {
|
|
35
|
-
console.log(` - ${key}`);
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
catch (error) {
|
|
39
|
-
console.error("❌ Error generating client keys:", error);
|
|
40
|
-
process.exit(1);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
main();
|
|
44
|
-
//# sourceMappingURL=generateKeys.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,kBAAkB,GAAG,GAAG,EAAE;IAC9B,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClE,OAAO;QACL,sBAAsB,EAAE,eAAe;QACvC,eAAe,EAAE,kBAAkB,EAAE;KACtC,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"}
|