@towns-protocol/bot 0.0.406 → 0.0.408
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/README.md +82 -0
- package/dist/bot.d.ts +58 -4
- package/dist/bot.d.ts.map +1 -1
- package/dist/bot.js +131 -14
- package/dist/bot.js.map +1 -1
- package/dist/bot.test.js +50 -29
- package/dist/bot.test.js.map +1 -1
- package/dist/identity-types.d.ts +43 -0
- package/dist/identity-types.d.ts.map +1 -0
- package/dist/identity-types.js +2 -0
- package/dist/identity-types.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -59,6 +59,88 @@ app.post("/webhook", jwtMiddleware, handler);
|
|
|
59
59
|
export default app;
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
+
## Identity Metadata (ERC-8004)
|
|
63
|
+
|
|
64
|
+
Bots can optionally define ERC-8004 compliant identity metadata for agent discovery and trust.
|
|
65
|
+
|
|
66
|
+
### Minimal Example
|
|
67
|
+
|
|
68
|
+
Create `identity.ts`:
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
import type { BotIdentityConfig } from "@towns-protocol/bot";
|
|
72
|
+
|
|
73
|
+
const identity = {
|
|
74
|
+
name: "My Bot",
|
|
75
|
+
description: "A helpful bot for Towns",
|
|
76
|
+
image: "https://example.com/bot-logo.png",
|
|
77
|
+
domain: "mybot.example.com",
|
|
78
|
+
} as const satisfies BotIdentityConfig;
|
|
79
|
+
|
|
80
|
+
export default identity;
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Use in bot setup:
|
|
84
|
+
|
|
85
|
+
```ts
|
|
86
|
+
import identity from "./identity";
|
|
87
|
+
|
|
88
|
+
const bot = await makeTownsBot(
|
|
89
|
+
process.env.APP_PRIVATE_DATA!,
|
|
90
|
+
process.env.JWT_SECRET!,
|
|
91
|
+
{
|
|
92
|
+
commands,
|
|
93
|
+
identity,
|
|
94
|
+
},
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
// Get metadata for hosting at /.well-known/agent-metadata.json
|
|
98
|
+
const metadata = bot.getIdentityMetadata();
|
|
99
|
+
app.get("/.well-known/agent-metadata.json", metadata);
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Advanced Example
|
|
103
|
+
|
|
104
|
+
For full ERC-8004 compliance with endpoints and trust models:
|
|
105
|
+
|
|
106
|
+
```ts
|
|
107
|
+
import type { BotIdentityConfig } from "@towns-protocol/bot";
|
|
108
|
+
|
|
109
|
+
const identity = {
|
|
110
|
+
name: "Advanced Bot",
|
|
111
|
+
description: "AI-powered agent with multi-protocol support",
|
|
112
|
+
image: "https://example.com/bot-logo.png",
|
|
113
|
+
motto: "Building the future of agent economies",
|
|
114
|
+
domain: "bot.example.com",
|
|
115
|
+
|
|
116
|
+
endpoints: [
|
|
117
|
+
{
|
|
118
|
+
name: "A2A",
|
|
119
|
+
endpoint: "https://bot.example.com/.well-known/agent-card.json",
|
|
120
|
+
version: "0.3.0",
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: "MCP",
|
|
124
|
+
endpoint: "https://mcp.bot.example.com/",
|
|
125
|
+
version: "2025-06-18",
|
|
126
|
+
},
|
|
127
|
+
],
|
|
128
|
+
|
|
129
|
+
registrations: [],
|
|
130
|
+
|
|
131
|
+
supportedTrust: ["reputation", "crypto-economic"],
|
|
132
|
+
|
|
133
|
+
attributes: [
|
|
134
|
+
{ trait_type: "Category", value: "Gateway" },
|
|
135
|
+
{ trait_type: "Model", value: "GPT-4" },
|
|
136
|
+
],
|
|
137
|
+
} as const satisfies BotIdentityConfig;
|
|
138
|
+
|
|
139
|
+
export default identity;
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
The bot automatically adds `agentWallet` endpoint using the bot's app address and `A2A` endpoint if domain is configured.
|
|
143
|
+
|
|
62
144
|
## Debug Logging
|
|
63
145
|
|
|
64
146
|
Bot framework uses `debug` package for logging.
|
package/dist/bot.d.ts
CHANGED
|
@@ -2,9 +2,10 @@ import { SpaceDapp, Permission, type SendTipMemberParams } from '@towns-protocol
|
|
|
2
2
|
import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
3
3
|
import { type ClientV2, type ParsedEvent, type CreateTownsClientParams } from '@towns-protocol/sdk';
|
|
4
4
|
import { type Context, type Env } from 'hono';
|
|
5
|
-
import { type ChannelMessage_Post_Mention, ChannelMessage, type PlainMessage, Tags, type SlashCommand, type BlockchainTransaction,
|
|
5
|
+
import { type ChannelMessage_Post_Mention, ChannelMessage, type PlainMessage, Tags, type SlashCommand, type BlockchainTransaction, InteractionRequestPayload, InteractionResponsePayload, StreamEvent } from '@towns-protocol/proto';
|
|
6
6
|
import { type Chain, type Transport, type Address, type Account, type WalletClient, type TransactionReceipt } from 'viem';
|
|
7
7
|
import type { BlankEnv } from 'hono/types';
|
|
8
|
+
import type { BotIdentityConfig, BotIdentityMetadata } from './identity-types';
|
|
8
9
|
type BotActions = ReturnType<typeof buildBotActions>;
|
|
9
10
|
export type BotHandler = ReturnType<typeof buildBotActions>;
|
|
10
11
|
export type InferInput<Schema extends StandardSchemaV1> = NonNullable<Schema['~standard']['types']>['input'];
|
|
@@ -174,7 +175,8 @@ export declare class Bot<Commands extends PlainMessage<SlashCommand>[] = [], Hon
|
|
|
174
175
|
private readonly slashCommandHandlers;
|
|
175
176
|
private readonly gmTypedHandlers;
|
|
176
177
|
private readonly commands;
|
|
177
|
-
|
|
178
|
+
private readonly identityConfig?;
|
|
179
|
+
constructor(clientV2: ClientV2<BotActions>, viem: WalletClient<Transport, Chain, Account>, jwtSecretBase64: string, appAddress: Address, commands?: Commands, identityConfig?: BotIdentityConfig);
|
|
178
180
|
start(): {
|
|
179
181
|
jwtMiddleware: import("hono").MiddlewareHandler<HonoEnv, string, {}>;
|
|
180
182
|
handler: (c: Context<HonoEnv>) => Promise<Response & import("hono").TypedResponse<unknown, 200, "body">>;
|
|
@@ -197,6 +199,7 @@ export declare class Bot<Commands extends PlainMessage<SlashCommand>[] = [], Hon
|
|
|
197
199
|
sendMessage(streamId: string, message: string, opts?: PostMessageOpts): Promise<{
|
|
198
200
|
eventId: string;
|
|
199
201
|
prevMiniblockHash: Uint8Array;
|
|
202
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
200
203
|
}>;
|
|
201
204
|
/**
|
|
202
205
|
* Send a reaction to a stream
|
|
@@ -207,6 +210,7 @@ export declare class Bot<Commands extends PlainMessage<SlashCommand>[] = [], Hon
|
|
|
207
210
|
sendReaction(streamId: string, refEventId: string, reaction: string): Promise<{
|
|
208
211
|
eventId: string;
|
|
209
212
|
prevMiniblockHash: Uint8Array;
|
|
213
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
210
214
|
}>;
|
|
211
215
|
/**
|
|
212
216
|
* Remove an specific event from a stream
|
|
@@ -216,6 +220,7 @@ export declare class Bot<Commands extends PlainMessage<SlashCommand>[] = [], Hon
|
|
|
216
220
|
removeEvent(streamId: string, refEventId: string): Promise<{
|
|
217
221
|
eventId: string;
|
|
218
222
|
prevMiniblockHash: Uint8Array;
|
|
223
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
219
224
|
}>;
|
|
220
225
|
/**
|
|
221
226
|
* Remove an specific event from a stream as an admin. This is only available if you have Permission.Redact
|
|
@@ -225,6 +230,7 @@ export declare class Bot<Commands extends PlainMessage<SlashCommand>[] = [], Hon
|
|
|
225
230
|
adminRemoveEvent(streamId: string, refEventId: string): Promise<{
|
|
226
231
|
eventId: string;
|
|
227
232
|
prevMiniblockHash: Uint8Array;
|
|
233
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
228
234
|
}>;
|
|
229
235
|
/**
|
|
230
236
|
* Edit an specific message from a stream
|
|
@@ -235,6 +241,7 @@ export declare class Bot<Commands extends PlainMessage<SlashCommand>[] = [], Hon
|
|
|
235
241
|
editMessage(streamId: string, messageId: string, message: string, opts?: PostMessageOpts): Promise<{
|
|
236
242
|
eventId: string;
|
|
237
243
|
prevMiniblockHash: Uint8Array;
|
|
244
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
238
245
|
}>;
|
|
239
246
|
/**
|
|
240
247
|
* Send a GM (generic message) to a stream with schema validation
|
|
@@ -246,6 +253,7 @@ export declare class Bot<Commands extends PlainMessage<SlashCommand>[] = [], Hon
|
|
|
246
253
|
sendGM<Schema extends StandardSchemaV1>(streamId: string, typeUrl: string, schema: Schema, data: InferInput<Schema>, opts?: MessageOpts): Promise<{
|
|
247
254
|
eventId: string;
|
|
248
255
|
prevMiniblockHash: Uint8Array;
|
|
256
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
249
257
|
}>;
|
|
250
258
|
/**
|
|
251
259
|
* Send a raw GM (generic message) to a stream without schema validation
|
|
@@ -257,6 +265,7 @@ export declare class Bot<Commands extends PlainMessage<SlashCommand>[] = [], Hon
|
|
|
257
265
|
sendRawGM(streamId: string, typeUrl: string, message: Uint8Array, opts?: MessageOpts): Promise<{
|
|
258
266
|
eventId: string;
|
|
259
267
|
prevMiniblockHash: Uint8Array;
|
|
268
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
260
269
|
}>;
|
|
261
270
|
/**
|
|
262
271
|
* Send an interaction request to a stream
|
|
@@ -265,9 +274,10 @@ export declare class Bot<Commands extends PlainMessage<SlashCommand>[] = [], Hon
|
|
|
265
274
|
* @param opts - The options for the interaction request
|
|
266
275
|
* @returns The eventId of the interaction request
|
|
267
276
|
*/
|
|
268
|
-
sendInteractionRequest(streamId: string, content: PlainMessage<
|
|
277
|
+
sendInteractionRequest(streamId: string, content: PlainMessage<InteractionRequestPayload['content']>, recipient?: Uint8Array, opts?: MessageOpts): Promise<{
|
|
269
278
|
eventId: string;
|
|
270
279
|
prevMiniblockHash: Uint8Array;
|
|
280
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
271
281
|
}>;
|
|
272
282
|
hasAdminPermission(userId: string, spaceId: string): Promise<boolean>;
|
|
273
283
|
checkPermission(streamId: string, userId: string, permission: Permission): Promise<boolean>;
|
|
@@ -301,6 +311,16 @@ export declare class Bot<Commands extends PlainMessage<SlashCommand>[] = [], Hon
|
|
|
301
311
|
txHash: string;
|
|
302
312
|
eventId: string;
|
|
303
313
|
}>;
|
|
314
|
+
pinMessage(streamId: string, eventId: string, streamEvent: StreamEvent): Promise<{
|
|
315
|
+
eventId: string;
|
|
316
|
+
prevMiniblockHash: Uint8Array;
|
|
317
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
318
|
+
}>;
|
|
319
|
+
unpinMessage(streamId: string, eventId: string): Promise<{
|
|
320
|
+
eventId: string;
|
|
321
|
+
prevMiniblockHash: Uint8Array;
|
|
322
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
323
|
+
}>;
|
|
304
324
|
/**
|
|
305
325
|
* Triggered when someone sends a message.
|
|
306
326
|
* This is triggered for all messages, including direct messages and group messages.
|
|
@@ -358,27 +378,45 @@ export declare class Bot<Commands extends PlainMessage<SlashCommand>[] = [], Hon
|
|
|
358
378
|
* @returns The stream view
|
|
359
379
|
*/
|
|
360
380
|
getStreamView(streamId: string): Promise<import("@towns-protocol/sdk").StreamStateView>;
|
|
381
|
+
/**
|
|
382
|
+
* Get the ERC-8004 compliant metadata JSON
|
|
383
|
+
* This should be hosted at /.well-known/agent-metadata.json
|
|
384
|
+
* Fetches metadata from the App Registry and merges with local config
|
|
385
|
+
* @returns The ERC-8004 compliant metadata object or null
|
|
386
|
+
*/
|
|
387
|
+
getIdentityMetadata(): Promise<BotIdentityMetadata | null>;
|
|
388
|
+
/**
|
|
389
|
+
* Get the tokenURI that would be used for ERC-8004 registration
|
|
390
|
+
* Returns null if no domain is configured
|
|
391
|
+
* @returns The .well-known URL or null
|
|
392
|
+
*/
|
|
393
|
+
getTokenURI(): string | null;
|
|
361
394
|
}
|
|
362
395
|
export declare const makeTownsBot: <Commands extends PlainMessage<SlashCommand>[] = [], HonoEnv extends Env = BlankEnv>(appPrivateData: string, jwtSecretBase64: string, opts?: {
|
|
363
396
|
baseRpcUrl?: string;
|
|
364
397
|
commands?: Commands;
|
|
398
|
+
identity?: BotIdentityConfig;
|
|
365
399
|
} & Partial<Omit<CreateTownsClientParams, "env" | "encryptionDevice">>) => Promise<Bot<Commands, HonoEnv>>;
|
|
366
400
|
declare const buildBotActions: (client: ClientV2, viem: WalletClient<Transport, Chain, Account>, spaceDapp: SpaceDapp, appAddress: Address) => {
|
|
367
401
|
sendMessage: (streamId: string, message: string, opts?: PostMessageOpts, tags?: PlainMessage<Tags>) => Promise<{
|
|
368
402
|
eventId: string;
|
|
369
403
|
prevMiniblockHash: Uint8Array;
|
|
404
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
370
405
|
}>;
|
|
371
406
|
editMessage: (streamId: string, messageId: string, message: string, opts?: PostMessageOpts, tags?: PlainMessage<Tags>) => Promise<{
|
|
372
407
|
eventId: string;
|
|
373
408
|
prevMiniblockHash: Uint8Array;
|
|
409
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
374
410
|
}>;
|
|
375
411
|
sendReaction: (streamId: string, messageId: string, reaction: string, tags?: PlainMessage<Tags>) => Promise<{
|
|
376
412
|
eventId: string;
|
|
377
413
|
prevMiniblockHash: Uint8Array;
|
|
414
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
378
415
|
}>;
|
|
379
|
-
sendInteractionRequest: (streamId: string,
|
|
416
|
+
sendInteractionRequest: (streamId: string, content: PlainMessage<InteractionRequestPayload["content"]>, recipient?: Uint8Array, opts?: MessageOpts, tags?: PlainMessage<Tags>) => Promise<{
|
|
380
417
|
eventId: string;
|
|
381
418
|
prevMiniblockHash: Uint8Array;
|
|
419
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
382
420
|
}>;
|
|
383
421
|
sendGM: <Schema extends StandardSchemaV1>(streamId: string, typeUrl: string, schema: Schema, data: InferInput<Schema>, opts?: MessageOpts, tags?: PlainMessage<Tags>) => ReturnType<({ streamId, payload, tags, ephemeral, }: {
|
|
384
422
|
streamId: string;
|
|
@@ -388,26 +426,32 @@ declare const buildBotActions: (client: ClientV2, viem: WalletClient<Transport,
|
|
|
388
426
|
}) => Promise<{
|
|
389
427
|
eventId: string;
|
|
390
428
|
prevMiniblockHash: Uint8Array;
|
|
429
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
391
430
|
}>>;
|
|
392
431
|
sendRawGM: (streamId: string, typeUrl: string, message: Uint8Array, opts?: MessageOpts, tags?: PlainMessage<Tags>) => Promise<{
|
|
393
432
|
eventId: string;
|
|
394
433
|
prevMiniblockHash: Uint8Array;
|
|
434
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
395
435
|
}>;
|
|
396
436
|
removeEvent: (streamId: string, messageId: string, tags?: PlainMessage<Tags>) => Promise<{
|
|
397
437
|
eventId: string;
|
|
398
438
|
prevMiniblockHash: Uint8Array;
|
|
439
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
399
440
|
}>;
|
|
400
441
|
adminRemoveEvent: (streamId: string, messageId: string) => Promise<{
|
|
401
442
|
eventId: string;
|
|
402
443
|
prevMiniblockHash: Uint8Array;
|
|
444
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
403
445
|
}>;
|
|
404
446
|
sendKeySolicitation: (streamId: string, sessionIds: string[]) => Promise<{
|
|
405
447
|
eventId: string;
|
|
406
448
|
prevMiniblockHash: Uint8Array;
|
|
449
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
407
450
|
}>;
|
|
408
451
|
uploadDeviceKeys: () => Promise<{
|
|
409
452
|
eventId: string;
|
|
410
453
|
prevMiniblockHash: Uint8Array;
|
|
454
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
411
455
|
}>;
|
|
412
456
|
hasAdminPermission: (userId: string, spaceId: string) => Promise<boolean>;
|
|
413
457
|
checkPermission: (streamId: string, userId: string, permission: Permission) => Promise<boolean>;
|
|
@@ -417,6 +461,16 @@ declare const buildBotActions: (client: ClientV2, viem: WalletClient<Transport,
|
|
|
417
461
|
unban: (userId: string, spaceId: string) => Promise<{
|
|
418
462
|
txHash: string;
|
|
419
463
|
}>;
|
|
464
|
+
pinMessage: (streamId: string, eventId: string, streamEvent: StreamEvent) => Promise<{
|
|
465
|
+
eventId: string;
|
|
466
|
+
prevMiniblockHash: Uint8Array;
|
|
467
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
468
|
+
}>;
|
|
469
|
+
unpinMessage: (streamId: string, eventId: string) => Promise<{
|
|
470
|
+
eventId: string;
|
|
471
|
+
prevMiniblockHash: Uint8Array;
|
|
472
|
+
envelope: import("@towns-protocol/proto").Envelope;
|
|
473
|
+
}>;
|
|
420
474
|
getChannelSettings: (channelId: string) => Promise<import("@towns-protocol/sdk").ParsedChannelProperties>;
|
|
421
475
|
sendTip: (params: Omit<SendTipMemberParams, "spaceId" | "tokenId" | "currency" | "receiver"> & {
|
|
422
476
|
currency?: Address;
|
package/dist/bot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
|
package/dist/bot.js
CHANGED
|
@@ -3,12 +3,12 @@ import { utils, ethers } from 'ethers';
|
|
|
3
3
|
import { SpaceDapp, Permission, SpaceAddressFromSpaceId, TipRecipientType, ETH_ADDRESS, } from '@towns-protocol/web3';
|
|
4
4
|
import { stringify as superjsonStringify, parse as superjsonParse } from 'superjson';
|
|
5
5
|
import tippingFacetAbi from '@towns-protocol/generated/dev/abis/ITipping.abi';
|
|
6
|
-
import { getRefEventIdFromChannelMessage, isChannelStreamId, make_ChannelPayload_Message, createTownsClient, streamIdAsString, make_MemberPayload_KeySolicitation, make_UserMetadataPayload_EncryptionDevice, logNever, userIdFromAddress, makeUserMetadataStreamId, unsafe_makeTags, townsEnv, spaceIdFromChannelId, make_ChannelPayload_Redaction, parseAppPrivateData, makeEvent, make_MediaPayload_Inception, make_MediaPayload_Chunk, makeUniqueMediaStreamId, streamIdAsBytes, addressFromUserId, make_ChannelPayload_InteractionRequest, userIdToAddress, unpackEnvelope, make_UserPayload_BlockchainTransaction, makeUserStreamId, } from '@towns-protocol/sdk';
|
|
6
|
+
import { getRefEventIdFromChannelMessage, isChannelStreamId, make_ChannelPayload_Message, createTownsClient, streamIdAsString, make_MemberPayload_KeySolicitation, make_UserMetadataPayload_EncryptionDevice, logNever, userIdFromAddress, makeUserMetadataStreamId, unsafe_makeTags, townsEnv, spaceIdFromChannelId, make_ChannelPayload_Redaction, parseAppPrivateData, makeEvent, make_MediaPayload_Inception, make_MediaPayload_Chunk, makeUniqueMediaStreamId, streamIdAsBytes, addressFromUserId, make_ChannelPayload_InteractionRequest, userIdToAddress, unpackEnvelope, make_UserPayload_BlockchainTransaction, makeUserStreamId, make_MemberPayload_Pin, make_MemberPayload_Unpin, } from '@towns-protocol/sdk';
|
|
7
7
|
import { createMiddleware } from 'hono/factory';
|
|
8
8
|
import { default as jwt } from 'jsonwebtoken';
|
|
9
9
|
import { createNanoEvents } from 'nanoevents';
|
|
10
10
|
import imageSize from 'image-size';
|
|
11
|
-
import { ChannelMessageSchema, AppServiceRequestSchema, AppServiceResponseSchema, MembershipOp, MessageInteractionType, ChannelMessage_Post_Content_ImageSchema, ChannelMessage_Post_Content_Image_InfoSchema, ChunkedMediaSchema, CreationCookieSchema, BlockchainTransactionSchema, InteractionResponsePayloadSchema, ChannelMessage_Post_AttachmentSchema, } from '@towns-protocol/proto';
|
|
11
|
+
import { ChannelMessageSchema, AppServiceRequestSchema, AppServiceResponseSchema, MembershipOp, MessageInteractionType, ChannelMessage_Post_Content_ImageSchema, ChannelMessage_Post_Content_Image_InfoSchema, ChunkedMediaSchema, CreationCookieSchema, BlockchainTransactionSchema, InteractionRequestPayloadSchema, InteractionResponsePayloadSchema, ChannelMessage_Post_AttachmentSchema, } from '@towns-protocol/proto';
|
|
12
12
|
import { bin_equal, bin_fromBase64, bin_fromHexString, bin_toHexString, check, dlog, } from '@towns-protocol/utils';
|
|
13
13
|
import { encryptChunkedAESGCM } from '@towns-protocol/sdk-crypto';
|
|
14
14
|
import { http, createWalletClient, encodeAbiParameters, zeroAddress, parseEventLogs, } from 'viem';
|
|
@@ -31,7 +31,8 @@ export class Bot {
|
|
|
31
31
|
slashCommandHandlers = new Map();
|
|
32
32
|
gmTypedHandlers = new Map();
|
|
33
33
|
commands;
|
|
34
|
-
|
|
34
|
+
identityConfig;
|
|
35
|
+
constructor(clientV2, viem, jwtSecretBase64, appAddress, commands, identityConfig) {
|
|
35
36
|
this.client = clientV2;
|
|
36
37
|
this.botId = clientV2.userId;
|
|
37
38
|
this.viem = viem;
|
|
@@ -39,6 +40,7 @@ export class Bot {
|
|
|
39
40
|
this.currentMessageTags = undefined;
|
|
40
41
|
this.commands = commands;
|
|
41
42
|
this.appAddress = appAddress;
|
|
43
|
+
this.identityConfig = identityConfig;
|
|
42
44
|
}
|
|
43
45
|
start() {
|
|
44
46
|
const jwtMiddleware = createMiddleware(this.jwtMiddleware.bind(this));
|
|
@@ -599,12 +601,7 @@ export class Bot {
|
|
|
599
601
|
* @returns The eventId of the interaction request
|
|
600
602
|
*/
|
|
601
603
|
async sendInteractionRequest(streamId, content, recipient, opts) {
|
|
602
|
-
const
|
|
603
|
-
recipient,
|
|
604
|
-
content,
|
|
605
|
-
encryptionDevice: this.getUserDevice(),
|
|
606
|
-
};
|
|
607
|
-
const result = await this.client.sendInteractionRequest(streamId, request, opts, this.currentMessageTags);
|
|
604
|
+
const result = await this.client.sendInteractionRequest(streamId, content, recipient, opts, this.currentMessageTags);
|
|
608
605
|
this.currentMessageTags = undefined;
|
|
609
606
|
return result;
|
|
610
607
|
}
|
|
@@ -642,6 +639,12 @@ export class Bot {
|
|
|
642
639
|
this.currentMessageTags = undefined;
|
|
643
640
|
return result;
|
|
644
641
|
}
|
|
642
|
+
async pinMessage(streamId, eventId, streamEvent) {
|
|
643
|
+
return this.client.pinMessage(streamId, eventId, streamEvent);
|
|
644
|
+
}
|
|
645
|
+
async unpinMessage(streamId, eventId) {
|
|
646
|
+
return this.client.unpinMessage(streamId, eventId);
|
|
647
|
+
}
|
|
645
648
|
/**
|
|
646
649
|
* Triggered when someone sends a message.
|
|
647
650
|
* This is triggered for all messages, including direct messages and group messages.
|
|
@@ -724,6 +727,83 @@ export class Bot {
|
|
|
724
727
|
async getStreamView(streamId) {
|
|
725
728
|
return this.client.getStream(streamId);
|
|
726
729
|
}
|
|
730
|
+
/**
|
|
731
|
+
* Get the ERC-8004 compliant metadata JSON
|
|
732
|
+
* This should be hosted at /.well-known/agent-metadata.json
|
|
733
|
+
* Fetches metadata from the App Registry and merges with local config
|
|
734
|
+
* @returns The ERC-8004 compliant metadata object or null
|
|
735
|
+
*/
|
|
736
|
+
async getIdentityMetadata() {
|
|
737
|
+
// Fetch metadata from App Registry
|
|
738
|
+
let appMetadata;
|
|
739
|
+
try {
|
|
740
|
+
const appRegistry = await this.client.appServiceClient();
|
|
741
|
+
const response = await appRegistry.getAppMetadata({
|
|
742
|
+
appId: bin_fromHexString(this.botId),
|
|
743
|
+
});
|
|
744
|
+
appMetadata = response.metadata;
|
|
745
|
+
}
|
|
746
|
+
catch (err) {
|
|
747
|
+
// eslint-disable-next-line no-console
|
|
748
|
+
console.warn('[@towns-protocol/bot] Failed to fetch app metadata', err);
|
|
749
|
+
}
|
|
750
|
+
// If no config and no fetched metadata, return null
|
|
751
|
+
if (!this.identityConfig && !appMetadata)
|
|
752
|
+
return null;
|
|
753
|
+
const endpoints = [];
|
|
754
|
+
if (this.identityConfig?.endpoints) {
|
|
755
|
+
endpoints.push(...this.identityConfig.endpoints);
|
|
756
|
+
}
|
|
757
|
+
const hasAgentWallet = endpoints.some((e) => e.name === 'agentWallet');
|
|
758
|
+
if (!hasAgentWallet) {
|
|
759
|
+
const chainId = this.viem.chain.id;
|
|
760
|
+
endpoints.push({
|
|
761
|
+
name: 'agentWallet',
|
|
762
|
+
endpoint: `eip155:${chainId}:${this.appAddress}`,
|
|
763
|
+
});
|
|
764
|
+
}
|
|
765
|
+
const domain = this.identityConfig?.domain;
|
|
766
|
+
if (domain && !endpoints.some((e) => e.name === 'A2A')) {
|
|
767
|
+
const origin = domain.startsWith('http') ? domain : `https://${domain}`;
|
|
768
|
+
endpoints.push({
|
|
769
|
+
name: 'A2A',
|
|
770
|
+
endpoint: `${origin}/.well-known/agent-card.json`,
|
|
771
|
+
version: '0.3.0',
|
|
772
|
+
});
|
|
773
|
+
}
|
|
774
|
+
// Merge app metadata with identity config, preferring identity config
|
|
775
|
+
const name = this.identityConfig?.name || appMetadata?.displayName || 'Unknown Bot';
|
|
776
|
+
const description = this.identityConfig?.description || appMetadata?.description || '';
|
|
777
|
+
const image = this.identityConfig?.image || appMetadata?.avatarUrl || appMetadata?.imageUrl || '';
|
|
778
|
+
const motto = this.identityConfig?.motto || appMetadata?.motto;
|
|
779
|
+
return {
|
|
780
|
+
type: 'https://eips.ethereum.org/EIPS/eip-8004#registration-v1',
|
|
781
|
+
name,
|
|
782
|
+
description,
|
|
783
|
+
image,
|
|
784
|
+
endpoints,
|
|
785
|
+
registrations: this.identityConfig?.registrations || [],
|
|
786
|
+
supportedTrust: this.identityConfig?.supportedTrust,
|
|
787
|
+
motto,
|
|
788
|
+
capabilities: this.commands?.map((c) => c.name) || [],
|
|
789
|
+
version: packageJson.version,
|
|
790
|
+
framework: `javascript:${packageJson.name}:${packageJson.version}`,
|
|
791
|
+
attributes: this.identityConfig?.attributes,
|
|
792
|
+
};
|
|
793
|
+
}
|
|
794
|
+
/**
|
|
795
|
+
* Get the tokenURI that would be used for ERC-8004 registration
|
|
796
|
+
* Returns null if no domain is configured
|
|
797
|
+
* @returns The .well-known URL or null
|
|
798
|
+
*/
|
|
799
|
+
getTokenURI() {
|
|
800
|
+
if (!this.identityConfig?.domain)
|
|
801
|
+
return null;
|
|
802
|
+
const origin = this.identityConfig.domain.startsWith('http')
|
|
803
|
+
? this.identityConfig.domain
|
|
804
|
+
: `https://${this.identityConfig.domain}`;
|
|
805
|
+
return `${origin}/.well-known/agent-metadata.json`;
|
|
806
|
+
}
|
|
727
807
|
}
|
|
728
808
|
export const makeTownsBot = async (appPrivateData, jwtSecretBase64, opts = {}) => {
|
|
729
809
|
const { baseRpcUrl, ...clientOpts } = opts;
|
|
@@ -790,7 +870,7 @@ export const makeTownsBot = async (appPrivateData, jwtSecretBase64, opts = {}) =
|
|
|
790
870
|
});
|
|
791
871
|
}
|
|
792
872
|
await client.uploadDeviceKeys();
|
|
793
|
-
return new Bot(client, viem, jwtSecretBase64, appAddress, opts.commands);
|
|
873
|
+
return new Bot(client, viem, jwtSecretBase64, appAddress, opts.commands, opts.identity);
|
|
794
874
|
};
|
|
795
875
|
const buildBotActions = (client, viem, spaceDapp, appAddress) => {
|
|
796
876
|
const CHUNK_SIZE = 1200000; // 1.2MB max per chunk (including auth tag)
|
|
@@ -1223,18 +1303,53 @@ const buildBotActions = (client, viem, spaceDapp, appAddress) => {
|
|
|
1223
1303
|
const receipt = await tx.wait();
|
|
1224
1304
|
return { txHash: receipt.transactionHash };
|
|
1225
1305
|
};
|
|
1306
|
+
/**
|
|
1307
|
+
* Pin a message to a stream
|
|
1308
|
+
* @param streamId - The stream ID to pin the message to
|
|
1309
|
+
* @param eventId - The event ID of the message to pin
|
|
1310
|
+
* @param streamEvent - The stream event to pin
|
|
1311
|
+
* @returns The event ID of the pinned message
|
|
1312
|
+
*/
|
|
1313
|
+
const pinMessage = async (streamId, eventId, streamEvent) => {
|
|
1314
|
+
return client.sendEvent(streamId, make_MemberPayload_Pin(bin_fromHexString(eventId), streamEvent));
|
|
1315
|
+
};
|
|
1316
|
+
/**
|
|
1317
|
+
* Unpin a message from a stream
|
|
1318
|
+
* @param streamId - The stream ID to unpin the message from
|
|
1319
|
+
* @param eventId - The event ID of the message to unpin
|
|
1320
|
+
* @returns The event ID of the unpinned message
|
|
1321
|
+
*/
|
|
1322
|
+
const unpinMessage = async (streamId, eventId) => {
|
|
1323
|
+
return client.sendEvent(streamId, make_MemberPayload_Unpin(bin_fromHexString(eventId)));
|
|
1324
|
+
};
|
|
1226
1325
|
const getChannelSettings = async (channelId) => {
|
|
1227
1326
|
const spaceId = spaceIdFromChannelId(channelId);
|
|
1228
1327
|
const streamView = await client.getStream(spaceId);
|
|
1229
1328
|
const channel = streamView.spaceContent.spaceChannelsMetadata[channelId];
|
|
1230
1329
|
return channel;
|
|
1231
1330
|
};
|
|
1232
|
-
const sendInteractionRequest = async (streamId,
|
|
1233
|
-
|
|
1234
|
-
|
|
1331
|
+
const sendInteractionRequest = async (streamId, content, recipient, opts, tags) => {
|
|
1332
|
+
// Get encryption settings (same as sendMessageEvent)
|
|
1333
|
+
const miniblockInfo = await client.getMiniblockInfo(streamId);
|
|
1334
|
+
const encryptionAlgorithm = miniblockInfo.encryptionAlgorithm?.algorithm
|
|
1335
|
+
? miniblockInfo.encryptionAlgorithm.algorithm
|
|
1336
|
+
: client.defaultGroupEncryptionAlgorithm;
|
|
1337
|
+
await ensureOutboundSession(streamId, encryptionAlgorithm, recipient ? [userIdFromAddress(recipient)] : [], miniblockInfo);
|
|
1338
|
+
// Create payload with content and encryption device for response
|
|
1339
|
+
const payload = create(InteractionRequestPayloadSchema, {
|
|
1235
1340
|
encryptionDevice: client.crypto.getUserDevice(),
|
|
1341
|
+
content: content,
|
|
1236
1342
|
});
|
|
1237
|
-
|
|
1343
|
+
// Encrypt using group encryption (same as messages)
|
|
1344
|
+
const encryptedData = await client.crypto.encryptGroupEvent(streamId, toBinary(InteractionRequestPayloadSchema, payload), encryptionAlgorithm);
|
|
1345
|
+
// Create the request matching InteractionResponse structure
|
|
1346
|
+
const request = {
|
|
1347
|
+
recipient: recipient,
|
|
1348
|
+
encryptedData: encryptedData,
|
|
1349
|
+
};
|
|
1350
|
+
// Send as InteractionRequest
|
|
1351
|
+
const eventPayload = make_ChannelPayload_InteractionRequest(request);
|
|
1352
|
+
return client.sendEvent(streamId, eventPayload, tags, opts?.ephemeral);
|
|
1238
1353
|
};
|
|
1239
1354
|
/**
|
|
1240
1355
|
* Send a blockchain transaction to the stream
|
|
@@ -1382,6 +1497,8 @@ const buildBotActions = (client, viem, spaceDapp, appAddress) => {
|
|
|
1382
1497
|
checkPermission,
|
|
1383
1498
|
ban,
|
|
1384
1499
|
unban,
|
|
1500
|
+
pinMessage,
|
|
1501
|
+
unpinMessage,
|
|
1385
1502
|
getChannelSettings,
|
|
1386
1503
|
sendTip,
|
|
1387
1504
|
sendBlockchainTransaction,
|