aurival 0.1.8 → 0.2.1

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/events.d.ts CHANGED
@@ -15,6 +15,15 @@ export interface Chat {
15
15
  id: string;
16
16
  type: string;
17
17
  name: string | null;
18
+ /**
19
+ * Live participants, bots included. `null` when the wire frame omits
20
+ * `member_count` — never defaulted to 0 (a real empty chat is still a
21
+ * number, `null` means "the frame didn't say"). Kept snake_case, matching
22
+ * this file's existing wire field convention (`sent_at`, `reply_to`), and
23
+ * `null` (not `undefined`) to match how every other absent field in this
24
+ * file is represented.
25
+ */
26
+ member_count: number | null;
18
27
  }
19
28
  export interface Command {
20
29
  name: string;
@@ -47,30 +56,104 @@ export declare class Event {
47
56
  */
48
57
  static fromFrame(frame: Record<string, unknown>): Event;
49
58
  }
59
+ /**
60
+ * `@` + a user's `handle`, template-literals straight into `text` via
61
+ * `toString()`. `entry` is the wire shape `send()`'s `mentions` array wants.
62
+ * Braces are notation only — `mention(user)` never emits `{handle}`.
63
+ */
64
+ export declare class Mention {
65
+ readonly token: string;
66
+ readonly entry: {
67
+ user: string;
68
+ };
69
+ constructor(user: User);
70
+ toString(): string;
71
+ }
72
+ export declare function mention(user: User): Mention;
73
+ /** What `send(..., { mentions })` accepts: a `Mention`, a full `User`, or a raw `{ user: 'usr_…' }`. */
74
+ export type MentionLike = Mention | User | {
75
+ user: string;
76
+ };
77
+ /**
78
+ * One page of `GET /v1/chats/{chat}/members` (CONTRACT-V1 §4, §5.0.1). No
79
+ * auto-loading iterator. `MemberPage` is SDK-constructed — decoded from the
80
+ * wire `list` envelope (`{object, data, has_more, next_cursor}`), never
81
+ * itself the wire shape — so it follows this file's camelCase-for-SDK-types
82
+ * convention (`chatFromWire`/`messageFromWire` output camelCase-free records
83
+ * only because their wire fields already happen to be single words or
84
+ * `sent_at`/`reply_to`-style; a type we construct ourselves, like this one,
85
+ * is not a wire passthrough and gets `hasMore`/`nextCursor`).
86
+ *
87
+ * `hasMore` is read straight off the envelope, never inferred from a short
88
+ * page or from `nextCursor` (CONTRACT-V1 §4: that inference is "the classic
89
+ * off-by-one that ships in every SDK"). `nextCursor` is `null` whenever
90
+ * `hasMore` is `false` (§2.1).
91
+ */
92
+ export interface MemberPage {
93
+ users: User[];
94
+ hasMore: boolean;
95
+ nextCursor: string | null;
96
+ }
50
97
  export interface ContextInit {
51
98
  command: string;
52
99
  arguments: string;
53
100
  chat: Chat;
54
- sender: User;
101
+ sender: User | null;
102
+ /** Populated only for `member.joined` / `member.left`. */
103
+ user: User | null;
104
+ /** Populated only for `bot.added` / `bot.removed`. */
105
+ actor: User | null;
106
+ /** Populated only for `reaction.added`. */
107
+ emoji: string | null;
55
108
  event: Event;
56
109
  message: Message | null;
57
110
  http: HttpClient;
58
111
  }
59
112
  /**
60
- * What a command handler receives. Built by `bot.ts`'s dispatch closure from one
61
- * `Event` — `Socket` never constructs one.
113
+ * What a handler receives. Built by `bot.ts`'s dispatch closure from one
114
+ * `Event` — `Socket` never constructs one. ONE class for every event type
115
+ * (R6): `chat`/`sender`/`user`/`actor`/`message`/`emoji` are each populated
116
+ * only for the event types that carry them —
117
+ *
118
+ * - `command.invoked`: `chat`, `sender`, `message`
119
+ * - `member.joined` / `member.left`: `chat`, `user`
120
+ * - `bot.added` / `bot.removed`: `chat`, `actor`
121
+ * - `reaction.added`: `chat`, `sender`, `message`, `emoji`
122
+ *
123
+ * — everything else on a given `Context` is `null`. An unhandled or future
124
+ * event type never throws building one: every field is read defensively off
125
+ * `event.data` and falls back to `null`.
62
126
  */
63
127
  export declare class Context {
64
128
  #private;
65
129
  readonly command: string;
66
130
  readonly arguments: string;
67
131
  readonly chat: Chat;
68
- readonly sender: User;
132
+ readonly sender: User | null;
133
+ readonly user: User | null;
134
+ readonly actor: User | null;
135
+ readonly emoji: string | null;
69
136
  readonly event: Event;
70
137
  readonly message: Message | null;
71
138
  constructor(init: ContextInit);
72
139
  /** Build straight from a `command.invoked` event's raw `data`. */
73
140
  static fromEvent(event: Event, http: HttpClient): Context;
141
+ /**
142
+ * Build from any non-`command.invoked` event `bot.on(type, fn)` registered
143
+ * for — `member.joined`/`member.left`, `bot.added`/`bot.removed`,
144
+ * `reaction.added`, or a type this SDK does not yet know the shape of.
145
+ *
146
+ * For a KNOWN type, the field set is pinned by CONTRACT-V1 §3.1: only the
147
+ * fields that type actually carries are read off `data`, and every other
148
+ * field is forced `null` even if the payload happens to carry a stray one
149
+ * (a `member.joined` frame with a stray `sender` must not populate
150
+ * `ctx.sender` — matches python). For a type this SDK does not recognize,
151
+ * every field is read defensively and opportunistically — there is no
152
+ * contract to pin it to, so whatever the frame happens to carry is
153
+ * surfaced rather than discarded. `chat` itself falls back to an empty one
154
+ * rather than throwing, for both cases.
155
+ */
156
+ static fromGenericEvent(event: Event, http: HttpClient): Context;
74
157
  /**
75
158
  * `POST /v1/messages`, quoting the message that invoked the command
76
159
  * (BA-R27, reversing SDK-30). One method, no flag. When the event carried no
@@ -80,5 +163,19 @@ export declare class Context {
80
163
  * `HttpClient.request` itself.
81
164
  */
82
165
  reply(text: string): Promise<Record<string, unknown>>;
166
+ /** `POST /v1/chats/{chat}/typing` — `is_typing` only, no `state` spelling. */
167
+ typing(isTyping: boolean): Promise<void>;
168
+ /** Sends `true` on entry, `false` on exit — ALWAYS, including on throw. */
169
+ withTyping<T>(fn: () => Promise<T>): Promise<T>;
170
+ edit(message: Message | string, text: string): Promise<Record<string, unknown>>;
171
+ delete(message: Message | string): Promise<void>;
172
+ react(message: Message | string, emoji: string): Promise<void>;
173
+ unreact(message: Message | string, emoji: string): Promise<void>;
174
+ send(chat: Chat | string, text: string, options?: {
175
+ mentions?: MentionLike[];
176
+ }): Promise<Record<string, unknown>>;
177
+ members(chat?: Chat | string, options?: {
178
+ cursor?: string;
179
+ }): Promise<MemberPage>;
83
180
  }
84
181
  //# sourceMappingURL=events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAYD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,qBAAa,KAAK;IAChB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEvC,YAAY,IAAI,EAAE,SAAS,EAM1B;IAED;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAStD;CACF;AA2BD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,OAAO;;IAClB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAGjC,YAAY,IAAI,EAAE,WAAW,EAQ5B;IAED,kEAAkE;IAClE,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CA2BxD;IAED;;;;;;;OAOG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAE1D;CACF"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
package/dist/events.js CHANGED
@@ -6,6 +6,7 @@
6
6
  * network-shaped — never the seed, a token, or the `Auth` object (SDK-33).
7
7
  */
8
8
  import { randomUUID } from 'node:crypto';
9
+ import { AurivalError } from './errors.js';
9
10
  function asRecord(value) {
10
11
  return typeof value === 'object' && value !== null && !Array.isArray(value)
11
12
  ? value
@@ -47,10 +48,12 @@ function userFromWire(d) {
47
48
  }
48
49
  function chatFromWire(d) {
49
50
  const name = d['name'];
51
+ const memberCount = d['member_count'];
50
52
  return {
51
53
  id: asString(d['id']),
52
54
  type: asString(d['type']),
53
55
  name: typeof name === 'string' ? name : null,
56
+ member_count: typeof memberCount === 'number' && Number.isFinite(memberCount) ? memberCount : null,
54
57
  };
55
58
  }
56
59
  function messageFromWire(d) {
@@ -65,14 +68,96 @@ function messageFromWire(d) {
65
68
  };
66
69
  }
67
70
  /**
68
- * What a command handler receives. Built by `bot.ts`'s dispatch closure from one
69
- * `Event` — `Socket` never constructs one.
71
+ * `@` + a user's `handle`, template-literals straight into `text` via
72
+ * `toString()`. `entry` is the wire shape `send()`'s `mentions` array wants.
73
+ * Braces are notation only — `mention(user)` never emits `{handle}`.
74
+ */
75
+ export class Mention {
76
+ token;
77
+ entry;
78
+ constructor(user) {
79
+ this.token = '@' + user.handle;
80
+ this.entry = { user: user.id };
81
+ }
82
+ toString() {
83
+ return this.token;
84
+ }
85
+ }
86
+ export function mention(user) {
87
+ return new Mention(user);
88
+ }
89
+ function mentionEntry(m) {
90
+ if (m instanceof Mention)
91
+ return m.entry;
92
+ if (typeof m.id === 'string')
93
+ return { user: m.id };
94
+ return { user: m.user };
95
+ }
96
+ /** Accepts either a `Chat` or a raw chat id string — Context actions take both. */
97
+ function chatId(c) {
98
+ return typeof c === 'string' ? c : c.id;
99
+ }
100
+ /** Accepts either a `Message` or a raw message id string — Context actions take both. */
101
+ function messageId(m) {
102
+ return typeof m === 'string' ? m : m.id;
103
+ }
104
+ function memberPageFromEnvelope(envelope) {
105
+ const rows = envelope['data'];
106
+ const users = [];
107
+ if (Array.isArray(rows)) {
108
+ for (const row of rows) {
109
+ const record = asRecord(row);
110
+ if (record)
111
+ users.push(userFromWire(record));
112
+ }
113
+ }
114
+ const hasMore = envelope['has_more'] === true;
115
+ const cursor = envelope['next_cursor'];
116
+ return {
117
+ users,
118
+ hasMore,
119
+ nextCursor: hasMore && typeof cursor === 'string' ? cursor : null,
120
+ };
121
+ }
122
+ /**
123
+ * Which `Context` fields a KNOWN generic event type actually carries
124
+ * (CONTRACT-V1 §3.1). Any field not in a type's set is forced `null` when
125
+ * building that type's `Context`, even if the wire payload happens to carry
126
+ * a stray one — the payload shape for a known type is pinned by contract, so
127
+ * JS must not surface what python's identical build does not (senior review,
128
+ * merge gate). A type not in this map is unknown to this SDK and gets
129
+ * opportunistic, unpinned population instead — see `fromGenericEvent`.
130
+ */
131
+ const KNOWN_GENERIC_EVENT_FIELDS = {
132
+ 'member.joined': new Set(['user']),
133
+ 'member.left': new Set(['user']),
134
+ 'bot.added': new Set(['actor']),
135
+ 'bot.removed': new Set(['actor']),
136
+ 'reaction.added': new Set(['sender', 'message', 'emoji']),
137
+ };
138
+ /**
139
+ * What a handler receives. Built by `bot.ts`'s dispatch closure from one
140
+ * `Event` — `Socket` never constructs one. ONE class for every event type
141
+ * (R6): `chat`/`sender`/`user`/`actor`/`message`/`emoji` are each populated
142
+ * only for the event types that carry them —
143
+ *
144
+ * - `command.invoked`: `chat`, `sender`, `message`
145
+ * - `member.joined` / `member.left`: `chat`, `user`
146
+ * - `bot.added` / `bot.removed`: `chat`, `actor`
147
+ * - `reaction.added`: `chat`, `sender`, `message`, `emoji`
148
+ *
149
+ * — everything else on a given `Context` is `null`. An unhandled or future
150
+ * event type never throws building one: every field is read defensively off
151
+ * `event.data` and falls back to `null`.
70
152
  */
71
153
  export class Context {
72
154
  command;
73
155
  arguments;
74
156
  chat;
75
157
  sender;
158
+ user;
159
+ actor;
160
+ emoji;
76
161
  event;
77
162
  message;
78
163
  #http;
@@ -81,6 +166,9 @@ export class Context {
81
166
  this.arguments = init.arguments;
82
167
  this.chat = init.chat;
83
168
  this.sender = init.sender;
169
+ this.user = init.user;
170
+ this.actor = init.actor;
171
+ this.emoji = init.emoji;
84
172
  this.event = init.event;
85
173
  this.message = init.message;
86
174
  this.#http = init.http;
@@ -111,11 +199,75 @@ export class Context {
111
199
  arguments: asString(data['arguments']),
112
200
  chat: chatFromWire(asRecord(data['chat']) ?? {}),
113
201
  sender: userFromWire(asRecord(data['sender']) ?? {}),
202
+ user: null,
203
+ actor: null,
204
+ emoji: null,
114
205
  event,
115
206
  message: resolvedMessage,
116
207
  http,
117
208
  });
118
209
  }
210
+ /**
211
+ * Build from any non-`command.invoked` event `bot.on(type, fn)` registered
212
+ * for — `member.joined`/`member.left`, `bot.added`/`bot.removed`,
213
+ * `reaction.added`, or a type this SDK does not yet know the shape of.
214
+ *
215
+ * For a KNOWN type, the field set is pinned by CONTRACT-V1 §3.1: only the
216
+ * fields that type actually carries are read off `data`, and every other
217
+ * field is forced `null` even if the payload happens to carry a stray one
218
+ * (a `member.joined` frame with a stray `sender` must not populate
219
+ * `ctx.sender` — matches python). For a type this SDK does not recognize,
220
+ * every field is read defensively and opportunistically — there is no
221
+ * contract to pin it to, so whatever the frame happens to carry is
222
+ * surfaced rather than discarded. `chat` itself falls back to an empty one
223
+ * rather than throwing, for both cases.
224
+ */
225
+ static fromGenericEvent(event, http) {
226
+ const data = event.data;
227
+ const chat = chatFromWire(asRecord(data['chat']) ?? {});
228
+ const known = KNOWN_GENERIC_EVENT_FIELDS[event.type];
229
+ if (known !== undefined) {
230
+ const sender = known.has('sender') ? asRecord(data['sender']) : null;
231
+ const user = known.has('user') ? asRecord(data['user']) : null;
232
+ const actor = known.has('actor') ? asRecord(data['actor']) : null;
233
+ const messageId = known.has('message') ? data['message'] : undefined;
234
+ const emoji = known.has('emoji') ? data['emoji'] : undefined;
235
+ return new Context({
236
+ command: '',
237
+ arguments: '',
238
+ chat,
239
+ sender: sender ? userFromWire(sender) : null,
240
+ user: user ? userFromWire(user) : null,
241
+ actor: actor ? userFromWire(actor) : null,
242
+ emoji: typeof emoji === 'string' ? emoji : null,
243
+ event,
244
+ message: typeof messageId === 'string'
245
+ ? { id: messageId, text: '', sent_at: '', sender: null, reply_to: null }
246
+ : null,
247
+ http,
248
+ });
249
+ }
250
+ // Unknown type: opportunistic population, nothing pinned.
251
+ const sender = asRecord(data['sender']);
252
+ const user = asRecord(data['user']);
253
+ const actor = asRecord(data['actor']);
254
+ const messageId = data['message'];
255
+ const emoji = data['emoji'];
256
+ return new Context({
257
+ command: '',
258
+ arguments: '',
259
+ chat,
260
+ sender: sender ? userFromWire(sender) : null,
261
+ user: user ? userFromWire(user) : null,
262
+ actor: actor ? userFromWire(actor) : null,
263
+ emoji: typeof emoji === 'string' ? emoji : null,
264
+ event,
265
+ message: typeof messageId === 'string'
266
+ ? { id: messageId, text: '', sent_at: '', sender: null, reply_to: null }
267
+ : null,
268
+ http,
269
+ });
270
+ }
119
271
  /**
120
272
  * `POST /v1/messages`, quoting the message that invoked the command
121
273
  * (BA-R27, reversing SDK-30). One method, no flag. When the event carried no
@@ -127,5 +279,47 @@ export class Context {
127
279
  async reply(text) {
128
280
  return this.#http.sendMessage(this.chat.id, text, randomUUID(), this.message?.id ?? null);
129
281
  }
282
+ /** `POST /v1/chats/{chat}/typing` — `is_typing` only, no `state` spelling. */
283
+ async typing(isTyping) {
284
+ const id = this.chat.id;
285
+ if (id === '') {
286
+ throw new AurivalError('ctx.typing() needs a chat, and this event has none');
287
+ }
288
+ await this.#http.setTyping(id, isTyping);
289
+ }
290
+ /** Sends `true` on entry, `false` on exit — ALWAYS, including on throw. */
291
+ async withTyping(fn) {
292
+ await this.typing(true);
293
+ try {
294
+ return await fn();
295
+ }
296
+ finally {
297
+ await this.typing(false);
298
+ }
299
+ }
300
+ async edit(message, text) {
301
+ return this.#http.editMessage(messageId(message), text);
302
+ }
303
+ async delete(message) {
304
+ await this.#http.deleteMessage(messageId(message));
305
+ }
306
+ async react(message, emoji) {
307
+ await this.#http.setReaction(messageId(message), emoji);
308
+ }
309
+ async unreact(message, emoji) {
310
+ await this.#http.unsetReaction(messageId(message), emoji);
311
+ }
312
+ async send(chat, text, options = {}) {
313
+ const mentions = options.mentions?.map(mentionEntry);
314
+ return this.#http.sendMessage(chatId(chat), text, randomUUID(), null, mentions);
315
+ }
316
+ async members(chat, options = {}) {
317
+ const resolved = chat !== undefined ? chatId(chat) : this.chat.id;
318
+ if (resolved === '') {
319
+ throw new AurivalError('ctx.members() needs a chat: pass one, or call it where ctx.chat is already set');
320
+ }
321
+ const envelope = await this.#http.listMembers(resolved, options.cursor);
322
+ return memberPageFromEnvelope(envelope);
323
+ }
130
324
  }
131
325
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
package/dist/http.d.ts CHANGED
@@ -37,7 +37,18 @@ export declare class HttpClient {
37
37
  * optional on the wire (CONTRACT-V1 §5.0) and a `null` there is a
38
38
  * `parameter_invalid` waiting to happen.
39
39
  */
40
- sendMessage(chat: string, text: string, idempotencyKey: string, replyTo?: string | null): Promise<Record<string, unknown>>;
40
+ sendMessage(chat: string, text: string, idempotencyKey: string, replyTo?: string | null, mentions?: Array<{
41
+ user: string;
42
+ }>): Promise<Record<string, unknown>>;
43
+ /** `POST .../typing` body is `{"is_typing": true|false}` — never `state`. */
44
+ setTyping(chat: string, isTyping: boolean): Promise<void>;
45
+ editMessage(message: string, text: string): Promise<Record<string, unknown>>;
46
+ deleteMessage(message: string): Promise<void>;
47
+ /** The emoji is percent-encoded — it travels in the path, not the body. */
48
+ setReaction(message: string, emoji: string): Promise<void>;
49
+ unsetReaction(message: string, emoji: string): Promise<void>;
50
+ /** GET, so no idempotency key — reads are never retried-as-a-write. */
51
+ listMembers(chat: string, cursor?: string): Promise<Record<string, unknown>>;
41
52
  syncCommands(bot: string, commands: Array<{
42
53
  name: string;
43
54
  description: string;
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,eAAO,MAAM,YAAY,6BAA6B,CAAC;AAQvD;;;;;GAKG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAClD;AAMD,wBAAgB,aAAa,IAAI,MAAM,CAYtC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7C,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC;AAwCD,qBAAa,UAAU;;IAIrB,+DAA+D;IAC/D,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAG/B;IAEL,YAAY,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,IAAI,GAAG,IAAW,EAAE,MAAM,CAAC,EAAE,MAAM,EAIlE;IAED,6DAA6D;IACvD,OAAO,CACX,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA8FlC;IAED;;;;OAIG;IACG,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAIlC;IAEK,YAAY,CAChB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,GACrD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAKlC;IAEK,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAEhE;IAED,UAAU,IAAI,MAAM,CAMnB;CACF"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
package/dist/http.js CHANGED
@@ -9,6 +9,14 @@ export const DEFAULT_HOST = 'https://bots.aurival.com';
9
9
  // Both the rate-limit lane and the api_error/transport lane are bounded here
10
10
  // (SDK-26): this many tries total, first attempt included.
11
11
  const MAX_ATTEMPTS = 5;
12
+ // A `retry_after` longer than this is not a transient the request should wait
13
+ // out (SDK-40). The generic rate limit is retried INSIDE whatever awaited the
14
+ // request, which for a reply is the command handler, and the handler holds the
15
+ // event's ack open for as long as it runs. A server once answered 600 s; the
16
+ // bot then slept ten minutes per command, every unacked event was redelivered
17
+ // every 30 s behind it, and the whole chat looked dead. Past this bound the
18
+ // error is thrown at once and the handler decides.
19
+ const MAX_RETRY_AFTER_MS = 15_000;
12
20
  const DEFAULT_RETRY_AFTER_MS = 1000;
13
21
  const REQUEST_TIMEOUT_MS = 60_000;
14
22
  function emit(level, message, args) {
@@ -130,6 +138,23 @@ export class HttpClient {
130
138
  }
131
139
  throw new errors.TransportError(detail);
132
140
  }
141
+ // 204 + an empty body decodes to `{}` — several new mutating routes
142
+ // (typing, reactions, delete) answer this way. A 204 that (against
143
+ // spec) carries a JSON body decodes it rather than silently dropping
144
+ // it, gating on the body being empty rather than on status alone —
145
+ // mirrors http.py's identical rule (merge-gate senior review). In
146
+ // practice `raw` is ALWAYS '' here: the WHATWG fetch spec forces a
147
+ // null body for every 204/205/304 response, so `resp.text()` above
148
+ // already discarded whatever bytes the server actually sent before
149
+ // this line runs (verified against Node's own `fetch`). This branch
150
+ // stays correct for whatever `raw` it is given regardless — python's
151
+ // http.py reads raw socket bytes and is not subject to this
152
+ // fetch-specific stripping, so the decode path is live there. An empty
153
+ // 200 (or any other non-204 success) is still a ProtocolError: every
154
+ // other status decodes unconditionally, so an empty body only becomes
155
+ // {} through the 204 branch, exactly as before this change.
156
+ if (status === 204)
157
+ return raw === '' ? {} : decodeObject(raw);
133
158
  if (status < 400)
134
159
  return decodeObject(raw);
135
160
  const envelope = decodeObject(raw);
@@ -150,6 +175,10 @@ export class HttpClient {
150
175
  // background sync per SDK-35) — retrying them here would make
151
176
  // syncCommands swallow SyncRateLimited, which it must not.
152
177
  if (exc.constructor === errors.RateLimited && attempt < MAX_ATTEMPTS) {
178
+ if (retryAfter > MAX_RETRY_AFTER_MS) {
179
+ this.#logger.warn(`rate limited for ${(retryAfter / 1000).toFixed(0)}s, longer than the ${(MAX_RETRY_AFTER_MS / 1000).toFixed(0)}s this client will wait; throwing`);
180
+ throw exc;
181
+ }
153
182
  this.#logger.warn(`rate limited, retrying after ${(retryAfter / 1000).toFixed(1)}s`);
154
183
  await this.sleep(retryAfter);
155
184
  continue;
@@ -172,12 +201,46 @@ export class HttpClient {
172
201
  * optional on the wire (CONTRACT-V1 §5.0) and a `null` there is a
173
202
  * `parameter_invalid` waiting to happen.
174
203
  */
175
- async sendMessage(chat, text, idempotencyKey, replyTo) {
204
+ async sendMessage(chat, text, idempotencyKey, replyTo, mentions) {
176
205
  const body = { chat, text };
177
206
  if (replyTo != null && replyTo !== '')
178
207
  body['reply_to'] = replyTo;
208
+ if (mentions !== undefined && mentions.length > 0)
209
+ body['mentions'] = mentions;
179
210
  return this.request('POST', '/v1/messages', { body, idempotencyKey });
180
211
  }
212
+ /** `POST .../typing` body is `{"is_typing": true|false}` — never `state`. */
213
+ async setTyping(chat, isTyping) {
214
+ await this.request('POST', `/v1/chats/${chat}/typing`, {
215
+ body: { is_typing: isTyping },
216
+ idempotencyKey: randomUUID(),
217
+ });
218
+ }
219
+ async editMessage(message, text) {
220
+ return this.request('PATCH', `/v1/messages/${message}`, {
221
+ body: { text },
222
+ idempotencyKey: randomUUID(),
223
+ });
224
+ }
225
+ async deleteMessage(message) {
226
+ await this.request('DELETE', `/v1/messages/${message}`, { idempotencyKey: randomUUID() });
227
+ }
228
+ /** The emoji is percent-encoded — it travels in the path, not the body. */
229
+ async setReaction(message, emoji) {
230
+ await this.request('PUT', `/v1/messages/${message}/reactions/${encodeURIComponent(emoji)}`, {
231
+ idempotencyKey: randomUUID(),
232
+ });
233
+ }
234
+ async unsetReaction(message, emoji) {
235
+ await this.request('DELETE', `/v1/messages/${message}/reactions/${encodeURIComponent(emoji)}`, {
236
+ idempotencyKey: randomUUID(),
237
+ });
238
+ }
239
+ /** GET, so no idempotency key — reads are never retried-as-a-write. */
240
+ async listMembers(chat, cursor) {
241
+ const query = cursor !== undefined && cursor !== '' ? `?cursor=${encodeURIComponent(cursor)}` : '';
242
+ return this.request('GET', `/v1/chats/${chat}/members${query}`);
243
+ }
181
244
  async syncCommands(bot, commands) {
182
245
  return this.request('PUT', `/v1/bots/${bot}/commands`, {
183
246
  body: { commands },
package/dist/http.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -20,9 +20,9 @@
20
20
  * asymmetry: adding an export later is free, removing one is a break.
21
21
  */
22
22
  export { Bot } from './bot.js';
23
- export { APIError, AccessTokenExpired, AccessTokenInvalid, AckUnknownEvent, AssertionExpired, AssertionReplay, AurivalAPIError, AurivalError, AuthenticationError, BadAssertion, BadProof, BadPublicKey, BotLinkNotAllowed, BotPlaygroundOnly, BotSuspended, CODE_CLASSES, DOC_URL_PREFIX, EmptyText, FrameInvalid, FrameTooLarge, IdempotencyKeyInvalid, IdempotencyKeyReused, IdleTimeout, InternalError, InvalidCommandName, InvalidJSON, InvalidRequestError, KeyAlreadyPaired, KeyRevoked, NotFound, PairRateLimited, ParameterInvalid, ParameterMissing, PermissionDeniedError, ProtocolError, RateLimitError, RateLimited, ServerRestarting, SessionSuperseded, SyncRateLimited, TYPE_CLASSES, TextTooLong, TooManyProblems, TransportError, UnknownOperation, UnknownParameter, fromEnvelope, } from './errors.js';
24
- export { Context, Event } from './events.js';
25
- export type { Chat, Command, Message, User } from './events.js';
23
+ export { APIError, AccessTokenExpired, AccessTokenInvalid, AckUnknownEvent, AssertionExpired, AssertionReplay, AurivalAPIError, AurivalError, AuthenticationError, BadAssertion, BadProof, BadPublicKey, BotLinkNotAllowed, BotPlaygroundOnly, BotSuspended, CODE_CLASSES, DOC_URL_PREFIX, EmptyText, FrameInvalid, FrameTooLarge, IdempotencyKeyInvalid, IdempotencyKeyReused, IdleTimeout, InternalError, InvalidCommandName, InvalidJSON, InvalidRequestError, KeyAlreadyPaired, KeyRevoked, MentionNotMember, MentionTokenMissing, MessageNotYours, NotFound, PairRateLimited, ParameterInvalid, ParameterMissing, PermissionDeniedError, ProtocolError, RateLimitError, RateLimited, ReactionEmojiTooLong, ServerRestarting, SessionSuperseded, SyncRateLimited, TYPE_CLASSES, TextTooLong, TooManyProblems, TransportError, UnknownOperation, UnknownParameter, fromEnvelope, } from './errors.js';
24
+ export { Context, Event, Mention, mention } from './events.js';
25
+ export type { Chat, Command, MemberPage, Message, MentionLike, User } from './events.js';
26
26
  export { BYE_ACTIONS, ByeAction, actionForBye } from './socket.js';
27
- export declare const version = "0.1.8";
27
+ export declare const version = "0.2.0";
28
28
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,SAAS,EACT,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEnE,eAAO,MAAM,OAAO,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,SAAS,EACT,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC/D,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEnE,eAAO,MAAM,OAAO,UAAU,CAAC"}