@m1kad0/hannah-proto 4.2.0 → 4.3.0

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.
@@ -0,0 +1,102 @@
1
+ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
2
+ export declare const protobufPackage = "hannah";
3
+ export declare enum RedeemResult {
4
+ REDEEM_RESULT_UNSPECIFIED = 0,
5
+ REDEEM_OK = 1,
6
+ REDEEM_UNKNOWN_TOKEN = 2,
7
+ REDEEM_EXPIRED = 3,
8
+ /** REDEEM_ACCOUNT_LINKED_ELSEWHERE - account_id already linked to another user */
9
+ REDEEM_ACCOUNT_LINKED_ELSEWHERE = 4,
10
+ /** REDEEM_ALREADY_LINKED - user already has an account linked for this service */
11
+ REDEEM_ALREADY_LINKED = 5,
12
+ UNRECOGNIZED = -1
13
+ }
14
+ /** Sent by a channel adapter (e.g. the Telegram service) over the ChannelConnect stream. */
15
+ export interface ChannelMessage {
16
+ /** sent once, right after connecting */
17
+ register?: ChannelRegister | undefined;
18
+ /** a user presented a link token to the adapter */
19
+ redeem?: RedeemLinkToken | undefined;
20
+ }
21
+ /**
22
+ * Identifies which service this adapter represents. A second adapter registering
23
+ * for the same service replaces the first one.
24
+ */
25
+ export interface ChannelRegister {
26
+ /** e.g. "telegram" — same key as LinkAccountRequest.service */
27
+ service: string;
28
+ /** e.g. "Telegram" */
29
+ displayName: string;
30
+ /** e.g. "https://t.me/HannahBot?start={token}". Empty = service cannot link accounts. */
31
+ linkUrlTemplate: string;
32
+ /** adapter version, informational */
33
+ version: string;
34
+ }
35
+ /**
36
+ * Redeem a link token issued by CreateLinkToken. The service is implied by the
37
+ * registration of the stream it arrives on.
38
+ */
39
+ export interface RedeemLinkToken {
40
+ /** chosen by the adapter, echoed in RedeemLinkTokenResult */
41
+ requestId: string;
42
+ token: string;
43
+ /** e.g. Telegram user ID */
44
+ accountId: string;
45
+ /** optional JSON, same semantics as LinkAccountRequest.provider_payload */
46
+ providerPayload: string;
47
+ }
48
+ /** Sent by Hannah Core over the ChannelConnect stream. */
49
+ export interface ChannelCommand {
50
+ /** sent once, right after register */
51
+ registered?: ChannelRegistered | undefined;
52
+ /** answer to RedeemLinkToken */
53
+ redeemResult?: RedeemLinkTokenResult | undefined;
54
+ }
55
+ export interface ChannelRegistered {
56
+ }
57
+ export interface RedeemLinkTokenResult {
58
+ /** from RedeemLinkToken */
59
+ requestId: string;
60
+ result: RedeemResult;
61
+ /** set on REDEEM_OK */
62
+ userId: number;
63
+ /** set on REDEEM_OK */
64
+ displayName: string;
65
+ }
66
+ /** A currently connected channel adapter. */
67
+ export interface ChannelInfo {
68
+ service: string;
69
+ displayName: string;
70
+ /** adapter sent a link_url_template */
71
+ supportsLink: boolean;
72
+ /** Unix timestamp (seconds) */
73
+ connectedSince: bigint;
74
+ }
75
+ export interface GetChannelsResponse {
76
+ channels: ChannelInfo[];
77
+ }
78
+ export declare const ChannelMessage: MessageFns<ChannelMessage>;
79
+ export declare const ChannelRegister: MessageFns<ChannelRegister>;
80
+ export declare const RedeemLinkToken: MessageFns<RedeemLinkToken>;
81
+ export declare const ChannelCommand: MessageFns<ChannelCommand>;
82
+ export declare const ChannelRegistered: MessageFns<ChannelRegistered>;
83
+ export declare const RedeemLinkTokenResult: MessageFns<RedeemLinkTokenResult>;
84
+ export declare const ChannelInfo: MessageFns<ChannelInfo>;
85
+ export declare const GetChannelsResponse: MessageFns<GetChannelsResponse>;
86
+ type Builtin = Date | Function | Uint8Array | string | number | boolean | bigint | undefined;
87
+ export type DeepPartial<T> = T extends bigint ? string | number | bigint : T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
88
+ [K in keyof T]?: DeepPartial<T[K]>;
89
+ } : Partial<T>;
90
+ type KeysOfUnion<T> = T extends T ? keyof T : never;
91
+ export type Exact<P, I extends P> = P extends Builtin ? P : P & {
92
+ [K in keyof P]: Exact<P[K], I[K]>;
93
+ } & {
94
+ [K in Exclude<keyof I, KeysOfUnion<P>>]: never;
95
+ };
96
+ export interface MessageFns<T> {
97
+ encode(message: T, writer?: BinaryWriter): BinaryWriter;
98
+ decode(input: BinaryReader | Uint8Array, length?: number): T;
99
+ create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
100
+ fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
101
+ }
102
+ export {};
@@ -0,0 +1,587 @@
1
+ "use strict";
2
+ // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
3
+ // versions:
4
+ // protoc-gen-ts_proto v2.12.1
5
+ // protoc unknown
6
+ // source: hannah/channel.proto
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.GetChannelsResponse = exports.ChannelInfo = exports.RedeemLinkTokenResult = exports.ChannelRegistered = exports.ChannelCommand = exports.RedeemLinkToken = exports.ChannelRegister = exports.ChannelMessage = exports.RedeemResult = exports.protobufPackage = void 0;
9
+ /* eslint-disable */
10
+ const wire_1 = require("@bufbuild/protobuf/wire");
11
+ exports.protobufPackage = "hannah";
12
+ var RedeemResult;
13
+ (function (RedeemResult) {
14
+ RedeemResult[RedeemResult["REDEEM_RESULT_UNSPECIFIED"] = 0] = "REDEEM_RESULT_UNSPECIFIED";
15
+ RedeemResult[RedeemResult["REDEEM_OK"] = 1] = "REDEEM_OK";
16
+ RedeemResult[RedeemResult["REDEEM_UNKNOWN_TOKEN"] = 2] = "REDEEM_UNKNOWN_TOKEN";
17
+ RedeemResult[RedeemResult["REDEEM_EXPIRED"] = 3] = "REDEEM_EXPIRED";
18
+ /** REDEEM_ACCOUNT_LINKED_ELSEWHERE - account_id already linked to another user */
19
+ RedeemResult[RedeemResult["REDEEM_ACCOUNT_LINKED_ELSEWHERE"] = 4] = "REDEEM_ACCOUNT_LINKED_ELSEWHERE";
20
+ /** REDEEM_ALREADY_LINKED - user already has an account linked for this service */
21
+ RedeemResult[RedeemResult["REDEEM_ALREADY_LINKED"] = 5] = "REDEEM_ALREADY_LINKED";
22
+ RedeemResult[RedeemResult["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
23
+ })(RedeemResult || (exports.RedeemResult = RedeemResult = {}));
24
+ function createBaseChannelMessage() {
25
+ return { register: undefined, redeem: undefined };
26
+ }
27
+ exports.ChannelMessage = {
28
+ encode(message, writer = new wire_1.BinaryWriter()) {
29
+ if (message.register !== undefined) {
30
+ exports.ChannelRegister.encode(message.register, writer.uint32(10).fork()).join();
31
+ }
32
+ if (message.redeem !== undefined) {
33
+ exports.RedeemLinkToken.encode(message.redeem, writer.uint32(18).fork()).join();
34
+ }
35
+ return writer;
36
+ },
37
+ decode(input, length) {
38
+ const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
39
+ const previousRecursionDepth = reader.__tsProtoDecodeDepth ?? 0;
40
+ if (previousRecursionDepth >= 100) {
41
+ throw new globalThis.Error("protobuf decode recursion limit exceeded");
42
+ }
43
+ reader.__tsProtoDecodeDepth = previousRecursionDepth + 1;
44
+ try {
45
+ const end = length === undefined ? reader.len : reader.pos + length;
46
+ const message = createBaseChannelMessage();
47
+ while (reader.pos < end) {
48
+ const tag = reader.uint32();
49
+ switch (tag >>> 3) {
50
+ case 1: {
51
+ if (tag !== 10) {
52
+ break;
53
+ }
54
+ message.register = exports.ChannelRegister.decode(reader, reader.uint32());
55
+ continue;
56
+ }
57
+ case 2: {
58
+ if (tag !== 18) {
59
+ break;
60
+ }
61
+ message.redeem = exports.RedeemLinkToken.decode(reader, reader.uint32());
62
+ continue;
63
+ }
64
+ }
65
+ if ((tag & 7) === 4 || tag === 0) {
66
+ break;
67
+ }
68
+ reader.skip(tag & 7);
69
+ }
70
+ return message;
71
+ }
72
+ finally {
73
+ reader.__tsProtoDecodeDepth = previousRecursionDepth;
74
+ }
75
+ },
76
+ create(base) {
77
+ return exports.ChannelMessage.fromPartial(base ?? {});
78
+ },
79
+ fromPartial(object) {
80
+ const message = createBaseChannelMessage();
81
+ message.register = (object.register !== undefined && object.register !== null)
82
+ ? exports.ChannelRegister.fromPartial(object.register)
83
+ : undefined;
84
+ message.redeem = (object.redeem !== undefined && object.redeem !== null)
85
+ ? exports.RedeemLinkToken.fromPartial(object.redeem)
86
+ : undefined;
87
+ return message;
88
+ },
89
+ };
90
+ function createBaseChannelRegister() {
91
+ return { service: "", displayName: "", linkUrlTemplate: "", version: "" };
92
+ }
93
+ exports.ChannelRegister = {
94
+ encode(message, writer = new wire_1.BinaryWriter()) {
95
+ if (message.service !== "") {
96
+ writer.uint32(10).string(message.service);
97
+ }
98
+ if (message.displayName !== "") {
99
+ writer.uint32(18).string(message.displayName);
100
+ }
101
+ if (message.linkUrlTemplate !== "") {
102
+ writer.uint32(26).string(message.linkUrlTemplate);
103
+ }
104
+ if (message.version !== "") {
105
+ writer.uint32(34).string(message.version);
106
+ }
107
+ return writer;
108
+ },
109
+ decode(input, length) {
110
+ const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
111
+ const previousRecursionDepth = reader.__tsProtoDecodeDepth ?? 0;
112
+ if (previousRecursionDepth >= 100) {
113
+ throw new globalThis.Error("protobuf decode recursion limit exceeded");
114
+ }
115
+ reader.__tsProtoDecodeDepth = previousRecursionDepth + 1;
116
+ try {
117
+ const end = length === undefined ? reader.len : reader.pos + length;
118
+ const message = createBaseChannelRegister();
119
+ while (reader.pos < end) {
120
+ const tag = reader.uint32();
121
+ switch (tag >>> 3) {
122
+ case 1: {
123
+ if (tag !== 10) {
124
+ break;
125
+ }
126
+ message.service = reader.string();
127
+ continue;
128
+ }
129
+ case 2: {
130
+ if (tag !== 18) {
131
+ break;
132
+ }
133
+ message.displayName = reader.string();
134
+ continue;
135
+ }
136
+ case 3: {
137
+ if (tag !== 26) {
138
+ break;
139
+ }
140
+ message.linkUrlTemplate = reader.string();
141
+ continue;
142
+ }
143
+ case 4: {
144
+ if (tag !== 34) {
145
+ break;
146
+ }
147
+ message.version = reader.string();
148
+ continue;
149
+ }
150
+ }
151
+ if ((tag & 7) === 4 || tag === 0) {
152
+ break;
153
+ }
154
+ reader.skip(tag & 7);
155
+ }
156
+ return message;
157
+ }
158
+ finally {
159
+ reader.__tsProtoDecodeDepth = previousRecursionDepth;
160
+ }
161
+ },
162
+ create(base) {
163
+ return exports.ChannelRegister.fromPartial(base ?? {});
164
+ },
165
+ fromPartial(object) {
166
+ const message = createBaseChannelRegister();
167
+ message.service = object.service ?? "";
168
+ message.displayName = object.displayName ?? "";
169
+ message.linkUrlTemplate = object.linkUrlTemplate ?? "";
170
+ message.version = object.version ?? "";
171
+ return message;
172
+ },
173
+ };
174
+ function createBaseRedeemLinkToken() {
175
+ return { requestId: "", token: "", accountId: "", providerPayload: "" };
176
+ }
177
+ exports.RedeemLinkToken = {
178
+ encode(message, writer = new wire_1.BinaryWriter()) {
179
+ if (message.requestId !== "") {
180
+ writer.uint32(10).string(message.requestId);
181
+ }
182
+ if (message.token !== "") {
183
+ writer.uint32(18).string(message.token);
184
+ }
185
+ if (message.accountId !== "") {
186
+ writer.uint32(26).string(message.accountId);
187
+ }
188
+ if (message.providerPayload !== "") {
189
+ writer.uint32(34).string(message.providerPayload);
190
+ }
191
+ return writer;
192
+ },
193
+ decode(input, length) {
194
+ const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
195
+ const previousRecursionDepth = reader.__tsProtoDecodeDepth ?? 0;
196
+ if (previousRecursionDepth >= 100) {
197
+ throw new globalThis.Error("protobuf decode recursion limit exceeded");
198
+ }
199
+ reader.__tsProtoDecodeDepth = previousRecursionDepth + 1;
200
+ try {
201
+ const end = length === undefined ? reader.len : reader.pos + length;
202
+ const message = createBaseRedeemLinkToken();
203
+ while (reader.pos < end) {
204
+ const tag = reader.uint32();
205
+ switch (tag >>> 3) {
206
+ case 1: {
207
+ if (tag !== 10) {
208
+ break;
209
+ }
210
+ message.requestId = reader.string();
211
+ continue;
212
+ }
213
+ case 2: {
214
+ if (tag !== 18) {
215
+ break;
216
+ }
217
+ message.token = reader.string();
218
+ continue;
219
+ }
220
+ case 3: {
221
+ if (tag !== 26) {
222
+ break;
223
+ }
224
+ message.accountId = reader.string();
225
+ continue;
226
+ }
227
+ case 4: {
228
+ if (tag !== 34) {
229
+ break;
230
+ }
231
+ message.providerPayload = reader.string();
232
+ continue;
233
+ }
234
+ }
235
+ if ((tag & 7) === 4 || tag === 0) {
236
+ break;
237
+ }
238
+ reader.skip(tag & 7);
239
+ }
240
+ return message;
241
+ }
242
+ finally {
243
+ reader.__tsProtoDecodeDepth = previousRecursionDepth;
244
+ }
245
+ },
246
+ create(base) {
247
+ return exports.RedeemLinkToken.fromPartial(base ?? {});
248
+ },
249
+ fromPartial(object) {
250
+ const message = createBaseRedeemLinkToken();
251
+ message.requestId = object.requestId ?? "";
252
+ message.token = object.token ?? "";
253
+ message.accountId = object.accountId ?? "";
254
+ message.providerPayload = object.providerPayload ?? "";
255
+ return message;
256
+ },
257
+ };
258
+ function createBaseChannelCommand() {
259
+ return { registered: undefined, redeemResult: undefined };
260
+ }
261
+ exports.ChannelCommand = {
262
+ encode(message, writer = new wire_1.BinaryWriter()) {
263
+ if (message.registered !== undefined) {
264
+ exports.ChannelRegistered.encode(message.registered, writer.uint32(10).fork()).join();
265
+ }
266
+ if (message.redeemResult !== undefined) {
267
+ exports.RedeemLinkTokenResult.encode(message.redeemResult, writer.uint32(18).fork()).join();
268
+ }
269
+ return writer;
270
+ },
271
+ decode(input, length) {
272
+ const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
273
+ const previousRecursionDepth = reader.__tsProtoDecodeDepth ?? 0;
274
+ if (previousRecursionDepth >= 100) {
275
+ throw new globalThis.Error("protobuf decode recursion limit exceeded");
276
+ }
277
+ reader.__tsProtoDecodeDepth = previousRecursionDepth + 1;
278
+ try {
279
+ const end = length === undefined ? reader.len : reader.pos + length;
280
+ const message = createBaseChannelCommand();
281
+ while (reader.pos < end) {
282
+ const tag = reader.uint32();
283
+ switch (tag >>> 3) {
284
+ case 1: {
285
+ if (tag !== 10) {
286
+ break;
287
+ }
288
+ message.registered = exports.ChannelRegistered.decode(reader, reader.uint32());
289
+ continue;
290
+ }
291
+ case 2: {
292
+ if (tag !== 18) {
293
+ break;
294
+ }
295
+ message.redeemResult = exports.RedeemLinkTokenResult.decode(reader, reader.uint32());
296
+ continue;
297
+ }
298
+ }
299
+ if ((tag & 7) === 4 || tag === 0) {
300
+ break;
301
+ }
302
+ reader.skip(tag & 7);
303
+ }
304
+ return message;
305
+ }
306
+ finally {
307
+ reader.__tsProtoDecodeDepth = previousRecursionDepth;
308
+ }
309
+ },
310
+ create(base) {
311
+ return exports.ChannelCommand.fromPartial(base ?? {});
312
+ },
313
+ fromPartial(object) {
314
+ const message = createBaseChannelCommand();
315
+ message.registered = (object.registered !== undefined && object.registered !== null)
316
+ ? exports.ChannelRegistered.fromPartial(object.registered)
317
+ : undefined;
318
+ message.redeemResult = (object.redeemResult !== undefined && object.redeemResult !== null)
319
+ ? exports.RedeemLinkTokenResult.fromPartial(object.redeemResult)
320
+ : undefined;
321
+ return message;
322
+ },
323
+ };
324
+ function createBaseChannelRegistered() {
325
+ return {};
326
+ }
327
+ exports.ChannelRegistered = {
328
+ encode(_, writer = new wire_1.BinaryWriter()) {
329
+ return writer;
330
+ },
331
+ decode(input, length) {
332
+ const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
333
+ const previousRecursionDepth = reader.__tsProtoDecodeDepth ?? 0;
334
+ if (previousRecursionDepth >= 100) {
335
+ throw new globalThis.Error("protobuf decode recursion limit exceeded");
336
+ }
337
+ reader.__tsProtoDecodeDepth = previousRecursionDepth + 1;
338
+ try {
339
+ const end = length === undefined ? reader.len : reader.pos + length;
340
+ const message = createBaseChannelRegistered();
341
+ while (reader.pos < end) {
342
+ const tag = reader.uint32();
343
+ switch (tag >>> 3) {
344
+ }
345
+ if ((tag & 7) === 4 || tag === 0) {
346
+ break;
347
+ }
348
+ reader.skip(tag & 7);
349
+ }
350
+ return message;
351
+ }
352
+ finally {
353
+ reader.__tsProtoDecodeDepth = previousRecursionDepth;
354
+ }
355
+ },
356
+ create(base) {
357
+ return exports.ChannelRegistered.fromPartial(base ?? {});
358
+ },
359
+ fromPartial(_) {
360
+ const message = createBaseChannelRegistered();
361
+ return message;
362
+ },
363
+ };
364
+ function createBaseRedeemLinkTokenResult() {
365
+ return { requestId: "", result: 0, userId: 0, displayName: "" };
366
+ }
367
+ exports.RedeemLinkTokenResult = {
368
+ encode(message, writer = new wire_1.BinaryWriter()) {
369
+ if (message.requestId !== "") {
370
+ writer.uint32(10).string(message.requestId);
371
+ }
372
+ if (message.result !== 0) {
373
+ writer.uint32(16).int32(message.result);
374
+ }
375
+ if (message.userId !== 0) {
376
+ writer.uint32(24).int32(message.userId);
377
+ }
378
+ if (message.displayName !== "") {
379
+ writer.uint32(34).string(message.displayName);
380
+ }
381
+ return writer;
382
+ },
383
+ decode(input, length) {
384
+ const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
385
+ const previousRecursionDepth = reader.__tsProtoDecodeDepth ?? 0;
386
+ if (previousRecursionDepth >= 100) {
387
+ throw new globalThis.Error("protobuf decode recursion limit exceeded");
388
+ }
389
+ reader.__tsProtoDecodeDepth = previousRecursionDepth + 1;
390
+ try {
391
+ const end = length === undefined ? reader.len : reader.pos + length;
392
+ const message = createBaseRedeemLinkTokenResult();
393
+ while (reader.pos < end) {
394
+ const tag = reader.uint32();
395
+ switch (tag >>> 3) {
396
+ case 1: {
397
+ if (tag !== 10) {
398
+ break;
399
+ }
400
+ message.requestId = reader.string();
401
+ continue;
402
+ }
403
+ case 2: {
404
+ if (tag !== 16) {
405
+ break;
406
+ }
407
+ message.result = reader.int32();
408
+ continue;
409
+ }
410
+ case 3: {
411
+ if (tag !== 24) {
412
+ break;
413
+ }
414
+ message.userId = reader.int32();
415
+ continue;
416
+ }
417
+ case 4: {
418
+ if (tag !== 34) {
419
+ break;
420
+ }
421
+ message.displayName = reader.string();
422
+ continue;
423
+ }
424
+ }
425
+ if ((tag & 7) === 4 || tag === 0) {
426
+ break;
427
+ }
428
+ reader.skip(tag & 7);
429
+ }
430
+ return message;
431
+ }
432
+ finally {
433
+ reader.__tsProtoDecodeDepth = previousRecursionDepth;
434
+ }
435
+ },
436
+ create(base) {
437
+ return exports.RedeemLinkTokenResult.fromPartial(base ?? {});
438
+ },
439
+ fromPartial(object) {
440
+ const message = createBaseRedeemLinkTokenResult();
441
+ message.requestId = object.requestId ?? "";
442
+ message.result = object.result ?? 0;
443
+ message.userId = object.userId ?? 0;
444
+ message.displayName = object.displayName ?? "";
445
+ return message;
446
+ },
447
+ };
448
+ function createBaseChannelInfo() {
449
+ return { service: "", displayName: "", supportsLink: false, connectedSince: 0n };
450
+ }
451
+ exports.ChannelInfo = {
452
+ encode(message, writer = new wire_1.BinaryWriter()) {
453
+ if (message.service !== "") {
454
+ writer.uint32(10).string(message.service);
455
+ }
456
+ if (message.displayName !== "") {
457
+ writer.uint32(18).string(message.displayName);
458
+ }
459
+ if (message.supportsLink !== false) {
460
+ writer.uint32(24).bool(message.supportsLink);
461
+ }
462
+ if (message.connectedSince !== 0n) {
463
+ if (BigInt.asIntN(64, message.connectedSince) !== message.connectedSince) {
464
+ throw new globalThis.Error("value provided for field message.connectedSince of type int64 too large");
465
+ }
466
+ writer.uint32(32).int64(message.connectedSince);
467
+ }
468
+ return writer;
469
+ },
470
+ decode(input, length) {
471
+ const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
472
+ const previousRecursionDepth = reader.__tsProtoDecodeDepth ?? 0;
473
+ if (previousRecursionDepth >= 100) {
474
+ throw new globalThis.Error("protobuf decode recursion limit exceeded");
475
+ }
476
+ reader.__tsProtoDecodeDepth = previousRecursionDepth + 1;
477
+ try {
478
+ const end = length === undefined ? reader.len : reader.pos + length;
479
+ const message = createBaseChannelInfo();
480
+ while (reader.pos < end) {
481
+ const tag = reader.uint32();
482
+ switch (tag >>> 3) {
483
+ case 1: {
484
+ if (tag !== 10) {
485
+ break;
486
+ }
487
+ message.service = reader.string();
488
+ continue;
489
+ }
490
+ case 2: {
491
+ if (tag !== 18) {
492
+ break;
493
+ }
494
+ message.displayName = reader.string();
495
+ continue;
496
+ }
497
+ case 3: {
498
+ if (tag !== 24) {
499
+ break;
500
+ }
501
+ message.supportsLink = reader.bool();
502
+ continue;
503
+ }
504
+ case 4: {
505
+ if (tag !== 32) {
506
+ break;
507
+ }
508
+ message.connectedSince = reader.int64();
509
+ continue;
510
+ }
511
+ }
512
+ if ((tag & 7) === 4 || tag === 0) {
513
+ break;
514
+ }
515
+ reader.skip(tag & 7);
516
+ }
517
+ return message;
518
+ }
519
+ finally {
520
+ reader.__tsProtoDecodeDepth = previousRecursionDepth;
521
+ }
522
+ },
523
+ create(base) {
524
+ return exports.ChannelInfo.fromPartial(base ?? {});
525
+ },
526
+ fromPartial(object) {
527
+ const message = createBaseChannelInfo();
528
+ message.service = object.service ?? "";
529
+ message.displayName = object.displayName ?? "";
530
+ message.supportsLink = object.supportsLink ?? false;
531
+ message.connectedSince = (object.connectedSince !== undefined && object.connectedSince !== null)
532
+ ? BigInt(object.connectedSince)
533
+ : 0n;
534
+ return message;
535
+ },
536
+ };
537
+ function createBaseGetChannelsResponse() {
538
+ return { channels: [] };
539
+ }
540
+ exports.GetChannelsResponse = {
541
+ encode(message, writer = new wire_1.BinaryWriter()) {
542
+ for (const v of message.channels) {
543
+ exports.ChannelInfo.encode(v, writer.uint32(10).fork()).join();
544
+ }
545
+ return writer;
546
+ },
547
+ decode(input, length) {
548
+ const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
549
+ const previousRecursionDepth = reader.__tsProtoDecodeDepth ?? 0;
550
+ if (previousRecursionDepth >= 100) {
551
+ throw new globalThis.Error("protobuf decode recursion limit exceeded");
552
+ }
553
+ reader.__tsProtoDecodeDepth = previousRecursionDepth + 1;
554
+ try {
555
+ const end = length === undefined ? reader.len : reader.pos + length;
556
+ const message = createBaseGetChannelsResponse();
557
+ while (reader.pos < end) {
558
+ const tag = reader.uint32();
559
+ switch (tag >>> 3) {
560
+ case 1: {
561
+ if (tag !== 10) {
562
+ break;
563
+ }
564
+ message.channels.push(exports.ChannelInfo.decode(reader, reader.uint32()));
565
+ continue;
566
+ }
567
+ }
568
+ if ((tag & 7) === 4 || tag === 0) {
569
+ break;
570
+ }
571
+ reader.skip(tag & 7);
572
+ }
573
+ return message;
574
+ }
575
+ finally {
576
+ reader.__tsProtoDecodeDepth = previousRecursionDepth;
577
+ }
578
+ },
579
+ create(base) {
580
+ return exports.GetChannelsResponse.fromPartial(base ?? {});
581
+ },
582
+ fromPartial(object) {
583
+ const message = createBaseGetChannelsResponse();
584
+ message.channels = object.channels?.map((e) => exports.ChannelInfo.fromPartial(e)) || [];
585
+ return message;
586
+ },
587
+ };
@@ -8,6 +8,7 @@ exports.REQUIRED_COMPAT_VERSIONS = {
8
8
  "GetUser": 1,
9
9
  "LinkAccount": 1,
10
10
  "UnlinkAccount": 1,
11
+ "CreateLinkToken": 1,
11
12
  "SetTrustLevel": 1,
12
13
  "SetSystemMessages": 1,
13
14
  "SetAutomation": 1,
@@ -79,6 +80,8 @@ exports.REQUIRED_COMPAT_VERSIONS = {
79
80
  "DeleteTimer": 1,
80
81
  "AgentConnect": 1,
81
82
  "AutomationConnect": 1,
83
+ "ChannelConnect": 1,
84
+ "GetChannels": 1,
82
85
  "ListActivityLog": 1,
83
86
  "StreamActivityAudio": 1,
84
87
  "CreateMessage": 1,
Binary file
package/dist/hannah.d.ts CHANGED
@@ -3,6 +3,7 @@ import { ActivityAudioChunk, ListActivityLogRequest, ListActivityLogResponse, St
3
3
  import { AgentCommand, AgentMessage, AgentNotification } from "./agent";
4
4
  import { AutomationCommand, AutomationMessage } from "./automation";
5
5
  import { CarStateResponse, GetAllCarStatesResponse } from "./car_state";
6
+ import { ChannelCommand, ChannelMessage, GetChannelsResponse } from "./channel";
6
7
  import { AnnounceRequest, CreateAlarmRequest, CreateAlarmResponse, CreateBleTagRequest, CreateBleTagResponse, CreateCarRequest, CreateCarResponse, CreateGroupRequest, CreatePresenceSourceRequest, CreatePresenceSourceResponse, CreateTriggerRequest, DeleteAlarmRequest, DeleteBleTagRequest, DeleteCarRequest, DeleteGroupRequest, DeletePresenceSourceRequest, DeleteTriggerRequest, GetAlarmsResponse, GetBleTagsResponse, GetCarsResponse, GetGroupsResponse, GetPresenceSourcesResponse, GetRoomsResponse, GetSettingsResponse, GetTriggersResponse, SetGroupSatellitesRequest, SubmitTextRequest, SubmitTextResponse, SubmitVoiceRequest, SubmitVoiceResponse, UpdateAlarmRequest, UpdateBleTagRequest, UpdateCarRequest, UpdateConfigRequest, UpdateGroupRequest, UpdatePresenceSourceRequest, UpdateTriggerRequest } from "./control";
7
8
  import { ControlDeviceRequest, GetDevicesResponse } from "./device_control_menu";
8
9
  import { EventFilter, HannahEvent, TriggerFirmwareUpdateRequest, TriggerSatelliteRestartRequest } from "./event_stream";
@@ -14,7 +15,7 @@ import { Empty, StatusResponse } from "./shared";
14
15
  import { EnrollVoiceprintRequest, StartVoiceEnrollmentRequest } from "./speaker_enrollment";
15
16
  import { DeleteTimerRequest, GetTimersRequest, GetTimersResponse } from "./timer_admin";
16
17
  import { TimerCommand, TimerMessage } from "./timer_service";
17
- import { CreateUserRequest, CreateUserResponse, DeleteUserRequest, GetResidentsResponse, GetUserRequest, GetUsersRequest, GetUsersResponse, LinkAccountRequest, LoginRequest, SetAutomationRequest, SetSystemMessagesRequest, SetTrustLevelRequest, UnlinkAccountRequest, UpdateUserRequest, UserResponse } from "./user_registry";
18
+ import { CreateLinkTokenRequest, CreateLinkTokenResponse, CreateUserRequest, CreateUserResponse, DeleteUserRequest, GetResidentsResponse, GetUserRequest, GetUsersRequest, GetUsersResponse, LinkAccountRequest, LoginRequest, SetAutomationRequest, SetSystemMessagesRequest, SetTrustLevelRequest, UnlinkAccountRequest, UpdateUserRequest, UserResponse } from "./user_registry";
18
19
  import { CaptureCommand, CollectorMessage, SatelliteAudioChunk, SatelliteCaptureRequest, SatelliteCaptureResponse, TriggerPlinkRequest } from "./wakeword_capture";
19
20
  export declare const protobufPackage = "hannah";
20
21
  export type HannahServiceService = typeof HannahServiceService;
@@ -56,6 +57,19 @@ export declare const HannahServiceService: {
56
57
  readonly responseSerialize: (value: StatusResponse) => Buffer;
57
58
  readonly responseDeserialize: (value: Buffer) => StatusResponse;
58
59
  };
60
+ /**
61
+ * One-time token for linking an account via the service's adapter (e.g. Telegram deep link).
62
+ * Redeemed by the adapter over ChannelConnect.
63
+ */
64
+ readonly createLinkToken: {
65
+ readonly path: "/hannah.HannahService/CreateLinkToken";
66
+ readonly requestStream: false;
67
+ readonly responseStream: false;
68
+ readonly requestSerialize: (value: CreateLinkTokenRequest) => Buffer;
69
+ readonly requestDeserialize: (value: Buffer) => CreateLinkTokenRequest;
70
+ readonly responseSerialize: (value: CreateLinkTokenResponse) => Buffer;
71
+ readonly responseDeserialize: (value: Buffer) => CreateLinkTokenResponse;
72
+ };
59
73
  readonly setTrustLevel: {
60
74
  readonly path: "/hannah.HannahService/SetTrustLevel";
61
75
  readonly requestStream: false;
@@ -832,6 +846,32 @@ export declare const HannahServiceService: {
832
846
  readonly responseSerialize: (value: AutomationCommand) => Buffer;
833
847
  readonly responseDeserialize: (value: Buffer) => AutomationCommand;
834
848
  };
849
+ /**
850
+ * --- Channels ---
851
+ * Bidirectional stream for channel adapters (e.g. the Telegram service). The adapter
852
+ * sends a ChannelRegister and keeps the stream open; it counts as available exactly as
853
+ * long as the stream is open. A second registration for the same service replaces the
854
+ * first. Link tokens (CreateLinkToken) are redeemed over this stream.
855
+ */
856
+ readonly channelConnect: {
857
+ readonly path: "/hannah.HannahService/ChannelConnect";
858
+ readonly requestStream: true;
859
+ readonly responseStream: true;
860
+ readonly requestSerialize: (value: ChannelMessage) => Buffer;
861
+ readonly requestDeserialize: (value: Buffer) => ChannelMessage;
862
+ readonly responseSerialize: (value: ChannelCommand) => Buffer;
863
+ readonly responseDeserialize: (value: Buffer) => ChannelCommand;
864
+ };
865
+ /** Currently connected channel adapters and whether they support account linking. */
866
+ readonly getChannels: {
867
+ readonly path: "/hannah.HannahService/GetChannels";
868
+ readonly requestStream: false;
869
+ readonly responseStream: false;
870
+ readonly requestSerialize: (value: Empty) => Buffer;
871
+ readonly requestDeserialize: (value: Buffer) => Empty;
872
+ readonly responseSerialize: (value: GetChannelsResponse) => Buffer;
873
+ readonly responseDeserialize: (value: Buffer) => GetChannelsResponse;
874
+ };
835
875
  /**
836
876
  * --- Activity Log ---
837
877
  * Read access to the Activity Log (#220) for external consumers (WebUI). List returns
@@ -892,6 +932,11 @@ export interface HannahServiceServer extends UntypedServiceImplementation {
892
932
  getUser: handleUnaryCall<GetUserRequest, UserResponse>;
893
933
  linkAccount: handleUnaryCall<LinkAccountRequest, StatusResponse>;
894
934
  unlinkAccount: handleUnaryCall<UnlinkAccountRequest, StatusResponse>;
935
+ /**
936
+ * One-time token for linking an account via the service's adapter (e.g. Telegram deep link).
937
+ * Redeemed by the adapter over ChannelConnect.
938
+ */
939
+ createLinkToken: handleUnaryCall<CreateLinkTokenRequest, CreateLinkTokenResponse>;
895
940
  setTrustLevel: handleUnaryCall<SetTrustLevelRequest, StatusResponse>;
896
941
  setSystemMessages: handleUnaryCall<SetSystemMessagesRequest, StatusResponse>;
897
942
  /**
@@ -1100,6 +1145,16 @@ export interface HannahServiceServer extends UntypedServiceImplementation {
1100
1145
  * instead of missing state changes that happened while it was offline.
1101
1146
  */
1102
1147
  automationConnect: handleBidiStreamingCall<AutomationMessage, AutomationCommand>;
1148
+ /**
1149
+ * --- Channels ---
1150
+ * Bidirectional stream for channel adapters (e.g. the Telegram service). The adapter
1151
+ * sends a ChannelRegister and keeps the stream open; it counts as available exactly as
1152
+ * long as the stream is open. A second registration for the same service replaces the
1153
+ * first. Link tokens (CreateLinkToken) are redeemed over this stream.
1154
+ */
1155
+ channelConnect: handleBidiStreamingCall<ChannelMessage, ChannelCommand>;
1156
+ /** Currently connected channel adapters and whether they support account linking. */
1157
+ getChannels: handleUnaryCall<Empty, GetChannelsResponse>;
1103
1158
  /**
1104
1159
  * --- Activity Log ---
1105
1160
  * Read access to the Activity Log (#220) for external consumers (WebUI). List returns
@@ -1128,6 +1183,13 @@ export interface HannahServiceClient extends Client {
1128
1183
  unlinkAccount(request: UnlinkAccountRequest, callback: (error: ServiceError | null, response: StatusResponse) => void): ClientUnaryCall;
1129
1184
  unlinkAccount(request: UnlinkAccountRequest, metadata: Metadata, callback: (error: ServiceError | null, response: StatusResponse) => void): ClientUnaryCall;
1130
1185
  unlinkAccount(request: UnlinkAccountRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: StatusResponse) => void): ClientUnaryCall;
1186
+ /**
1187
+ * One-time token for linking an account via the service's adapter (e.g. Telegram deep link).
1188
+ * Redeemed by the adapter over ChannelConnect.
1189
+ */
1190
+ createLinkToken(request: CreateLinkTokenRequest, callback: (error: ServiceError | null, response: CreateLinkTokenResponse) => void): ClientUnaryCall;
1191
+ createLinkToken(request: CreateLinkTokenRequest, metadata: Metadata, callback: (error: ServiceError | null, response: CreateLinkTokenResponse) => void): ClientUnaryCall;
1192
+ createLinkToken(request: CreateLinkTokenRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: CreateLinkTokenResponse) => void): ClientUnaryCall;
1131
1193
  setTrustLevel(request: SetTrustLevelRequest, callback: (error: ServiceError | null, response: StatusResponse) => void): ClientUnaryCall;
1132
1194
  setTrustLevel(request: SetTrustLevelRequest, metadata: Metadata, callback: (error: ServiceError | null, response: StatusResponse) => void): ClientUnaryCall;
1133
1195
  setTrustLevel(request: SetTrustLevelRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: StatusResponse) => void): ClientUnaryCall;
@@ -1476,6 +1538,20 @@ export interface HannahServiceClient extends Client {
1476
1538
  automationConnect(): ClientDuplexStream<AutomationMessage, AutomationCommand>;
1477
1539
  automationConnect(options: Partial<CallOptions>): ClientDuplexStream<AutomationMessage, AutomationCommand>;
1478
1540
  automationConnect(metadata: Metadata, options?: Partial<CallOptions>): ClientDuplexStream<AutomationMessage, AutomationCommand>;
1541
+ /**
1542
+ * --- Channels ---
1543
+ * Bidirectional stream for channel adapters (e.g. the Telegram service). The adapter
1544
+ * sends a ChannelRegister and keeps the stream open; it counts as available exactly as
1545
+ * long as the stream is open. A second registration for the same service replaces the
1546
+ * first. Link tokens (CreateLinkToken) are redeemed over this stream.
1547
+ */
1548
+ channelConnect(): ClientDuplexStream<ChannelMessage, ChannelCommand>;
1549
+ channelConnect(options: Partial<CallOptions>): ClientDuplexStream<ChannelMessage, ChannelCommand>;
1550
+ channelConnect(metadata: Metadata, options?: Partial<CallOptions>): ClientDuplexStream<ChannelMessage, ChannelCommand>;
1551
+ /** Currently connected channel adapters and whether they support account linking. */
1552
+ getChannels(request: Empty, callback: (error: ServiceError | null, response: GetChannelsResponse) => void): ClientUnaryCall;
1553
+ getChannels(request: Empty, metadata: Metadata, callback: (error: ServiceError | null, response: GetChannelsResponse) => void): ClientUnaryCall;
1554
+ getChannels(request: Empty, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: GetChannelsResponse) => void): ClientUnaryCall;
1479
1555
  /**
1480
1556
  * --- Activity Log ---
1481
1557
  * Read access to the Activity Log (#220) for external consumers (WebUI). List returns
package/dist/hannah.js CHANGED
@@ -12,6 +12,7 @@ const activity_log_1 = require("./activity_log");
12
12
  const agent_1 = require("./agent");
13
13
  const automation_1 = require("./automation");
14
14
  const car_state_1 = require("./car_state");
15
+ const channel_1 = require("./channel");
15
16
  const control_1 = require("./control");
16
17
  const device_control_menu_1 = require("./device_control_menu");
17
18
  const event_stream_1 = require("./event_stream");
@@ -64,6 +65,19 @@ exports.HannahServiceService = {
64
65
  responseSerialize: (value) => Buffer.from(shared_1.StatusResponse.encode(value).finish()),
65
66
  responseDeserialize: (value) => shared_1.StatusResponse.decode(value),
66
67
  },
68
+ /**
69
+ * One-time token for linking an account via the service's adapter (e.g. Telegram deep link).
70
+ * Redeemed by the adapter over ChannelConnect.
71
+ */
72
+ createLinkToken: {
73
+ path: "/hannah.HannahService/CreateLinkToken",
74
+ requestStream: false,
75
+ responseStream: false,
76
+ requestSerialize: (value) => Buffer.from(user_registry_1.CreateLinkTokenRequest.encode(value).finish()),
77
+ requestDeserialize: (value) => user_registry_1.CreateLinkTokenRequest.decode(value),
78
+ responseSerialize: (value) => Buffer.from(user_registry_1.CreateLinkTokenResponse.encode(value).finish()),
79
+ responseDeserialize: (value) => user_registry_1.CreateLinkTokenResponse.decode(value),
80
+ },
67
81
  setTrustLevel: {
68
82
  path: "/hannah.HannahService/SetTrustLevel",
69
83
  requestStream: false,
@@ -840,6 +854,32 @@ exports.HannahServiceService = {
840
854
  responseSerialize: (value) => Buffer.from(automation_1.AutomationCommand.encode(value).finish()),
841
855
  responseDeserialize: (value) => automation_1.AutomationCommand.decode(value),
842
856
  },
857
+ /**
858
+ * --- Channels ---
859
+ * Bidirectional stream for channel adapters (e.g. the Telegram service). The adapter
860
+ * sends a ChannelRegister and keeps the stream open; it counts as available exactly as
861
+ * long as the stream is open. A second registration for the same service replaces the
862
+ * first. Link tokens (CreateLinkToken) are redeemed over this stream.
863
+ */
864
+ channelConnect: {
865
+ path: "/hannah.HannahService/ChannelConnect",
866
+ requestStream: true,
867
+ responseStream: true,
868
+ requestSerialize: (value) => Buffer.from(channel_1.ChannelMessage.encode(value).finish()),
869
+ requestDeserialize: (value) => channel_1.ChannelMessage.decode(value),
870
+ responseSerialize: (value) => Buffer.from(channel_1.ChannelCommand.encode(value).finish()),
871
+ responseDeserialize: (value) => channel_1.ChannelCommand.decode(value),
872
+ },
873
+ /** Currently connected channel adapters and whether they support account linking. */
874
+ getChannels: {
875
+ path: "/hannah.HannahService/GetChannels",
876
+ requestStream: false,
877
+ responseStream: false,
878
+ requestSerialize: (value) => Buffer.from(shared_1.Empty.encode(value).finish()),
879
+ requestDeserialize: (value) => shared_1.Empty.decode(value),
880
+ responseSerialize: (value) => Buffer.from(channel_1.GetChannelsResponse.encode(value).finish()),
881
+ responseDeserialize: (value) => channel_1.GetChannelsResponse.decode(value),
882
+ },
843
883
  /**
844
884
  * --- Activity Log ---
845
885
  * Read access to the Activity Log (#220) for external consumers (WebUI). List returns
package/dist/index.d.ts CHANGED
@@ -3,6 +3,7 @@ export * as activity_log from './activity_log';
3
3
  export * as agent from './agent';
4
4
  export * as automation from './automation';
5
5
  export * as car_state from './car_state';
6
+ export * as channel from './channel';
6
7
  export * as compat_interceptor from './compat_interceptor';
7
8
  export * as compat_versions from './compat_versions';
8
9
  export * as control from './control';
package/dist/index.js CHANGED
@@ -36,12 +36,13 @@ var __importStar = (this && this.__importStar) || (function () {
36
36
  };
37
37
  })();
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.weather = exports.wakeword_capture = exports.user_registry = exports.timer_service = exports.timer_admin = exports.speaker_enrollment = exports.shared = exports.satellite_proxy = exports.satellite_provisioning = exports.satellite = exports.options = exports.messages = exports.hannah = exports.event_stream = exports.device_control_menu = exports.control = exports.compat_versions = exports.compat_interceptor = exports.car_state = exports.automation = exports.agent = exports.activity_log = void 0;
39
+ exports.weather = exports.wakeword_capture = exports.user_registry = exports.timer_service = exports.timer_admin = exports.speaker_enrollment = exports.shared = exports.satellite_proxy = exports.satellite_provisioning = exports.satellite = exports.options = exports.messages = exports.hannah = exports.event_stream = exports.device_control_menu = exports.control = exports.compat_versions = exports.compat_interceptor = exports.channel = exports.car_state = exports.automation = exports.agent = exports.activity_log = void 0;
40
40
  __exportStar(require("./version"), exports);
41
41
  exports.activity_log = __importStar(require("./activity_log"));
42
42
  exports.agent = __importStar(require("./agent"));
43
43
  exports.automation = __importStar(require("./automation"));
44
44
  exports.car_state = __importStar(require("./car_state"));
45
+ exports.channel = __importStar(require("./channel"));
45
46
  exports.compat_interceptor = __importStar(require("./compat_interceptor"));
46
47
  exports.compat_versions = __importStar(require("./compat_versions"));
47
48
  exports.control = __importStar(require("./control"));
@@ -71,6 +71,23 @@ export interface UnlinkAccountRequest {
71
71
  accountId: string;
72
72
  requestorId: number;
73
73
  }
74
+ /**
75
+ * Issue a one-time link token for a user and service (e.g. Telegram deep link).
76
+ * Rejected if no adapter that supports linking is connected for the service.
77
+ */
78
+ export interface CreateLinkTokenRequest {
79
+ userId: number;
80
+ service: string;
81
+ }
82
+ export interface CreateLinkTokenResponse {
83
+ ok: boolean;
84
+ message: string;
85
+ token: string;
86
+ /** adapter's link_url_template with {token} filled in */
87
+ linkUrl: string;
88
+ /** Unix timestamp (seconds) */
89
+ expiresAt: bigint;
90
+ }
74
91
  export interface SetTrustLevelRequest {
75
92
  userId: number;
76
93
  /** clamped to [0, 10] */
@@ -140,6 +157,8 @@ export declare const UserResponse: MessageFns<UserResponse>;
140
157
  export declare const LoginRequest: MessageFns<LoginRequest>;
141
158
  export declare const LinkAccountRequest: MessageFns<LinkAccountRequest>;
142
159
  export declare const UnlinkAccountRequest: MessageFns<UnlinkAccountRequest>;
160
+ export declare const CreateLinkTokenRequest: MessageFns<CreateLinkTokenRequest>;
161
+ export declare const CreateLinkTokenResponse: MessageFns<CreateLinkTokenResponse>;
143
162
  export declare const SetTrustLevelRequest: MessageFns<SetTrustLevelRequest>;
144
163
  export declare const SetSystemMessagesRequest: MessageFns<SetSystemMessagesRequest>;
145
164
  export declare const SetAutomationRequest: MessageFns<SetAutomationRequest>;
@@ -5,7 +5,7 @@
5
5
  // protoc unknown
6
6
  // source: hannah/user_registry.proto
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.GetResidentsResponse = exports.Resident = exports.DeleteUserRequest = exports.UpdateUserRequest = exports.CreateUserResponse = exports.CreateUserRequest = exports.SetAutomationRequest = exports.SetSystemMessagesRequest = exports.SetTrustLevelRequest = exports.UnlinkAccountRequest = exports.LinkAccountRequest = exports.LoginRequest = exports.UserResponse = exports.LinkedAccountLookup = exports.GetUserRequest = exports.GetUsersResponse = exports.GetUsersRequest = exports.User_LinkedAccountsEntry = exports.User = exports.protobufPackage = void 0;
8
+ exports.GetResidentsResponse = exports.Resident = exports.DeleteUserRequest = exports.UpdateUserRequest = exports.CreateUserResponse = exports.CreateUserRequest = exports.SetAutomationRequest = exports.SetSystemMessagesRequest = exports.SetTrustLevelRequest = exports.CreateLinkTokenResponse = exports.CreateLinkTokenRequest = exports.UnlinkAccountRequest = exports.LinkAccountRequest = exports.LoginRequest = exports.UserResponse = exports.LinkedAccountLookup = exports.GetUserRequest = exports.GetUsersResponse = exports.GetUsersRequest = exports.User_LinkedAccountsEntry = exports.User = exports.protobufPackage = void 0;
9
9
  /* eslint-disable */
10
10
  const wire_1 = require("@bufbuild/protobuf/wire");
11
11
  exports.protobufPackage = "hannah";
@@ -782,6 +782,166 @@ exports.UnlinkAccountRequest = {
782
782
  return message;
783
783
  },
784
784
  };
785
+ function createBaseCreateLinkTokenRequest() {
786
+ return { userId: 0, service: "" };
787
+ }
788
+ exports.CreateLinkTokenRequest = {
789
+ encode(message, writer = new wire_1.BinaryWriter()) {
790
+ if (message.userId !== 0) {
791
+ writer.uint32(8).int32(message.userId);
792
+ }
793
+ if (message.service !== "") {
794
+ writer.uint32(18).string(message.service);
795
+ }
796
+ return writer;
797
+ },
798
+ decode(input, length) {
799
+ const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
800
+ const previousRecursionDepth = reader.__tsProtoDecodeDepth ?? 0;
801
+ if (previousRecursionDepth >= 100) {
802
+ throw new globalThis.Error("protobuf decode recursion limit exceeded");
803
+ }
804
+ reader.__tsProtoDecodeDepth = previousRecursionDepth + 1;
805
+ try {
806
+ const end = length === undefined ? reader.len : reader.pos + length;
807
+ const message = createBaseCreateLinkTokenRequest();
808
+ while (reader.pos < end) {
809
+ const tag = reader.uint32();
810
+ switch (tag >>> 3) {
811
+ case 1: {
812
+ if (tag !== 8) {
813
+ break;
814
+ }
815
+ message.userId = reader.int32();
816
+ continue;
817
+ }
818
+ case 2: {
819
+ if (tag !== 18) {
820
+ break;
821
+ }
822
+ message.service = reader.string();
823
+ continue;
824
+ }
825
+ }
826
+ if ((tag & 7) === 4 || tag === 0) {
827
+ break;
828
+ }
829
+ reader.skip(tag & 7);
830
+ }
831
+ return message;
832
+ }
833
+ finally {
834
+ reader.__tsProtoDecodeDepth = previousRecursionDepth;
835
+ }
836
+ },
837
+ create(base) {
838
+ return exports.CreateLinkTokenRequest.fromPartial(base ?? {});
839
+ },
840
+ fromPartial(object) {
841
+ const message = createBaseCreateLinkTokenRequest();
842
+ message.userId = object.userId ?? 0;
843
+ message.service = object.service ?? "";
844
+ return message;
845
+ },
846
+ };
847
+ function createBaseCreateLinkTokenResponse() {
848
+ return { ok: false, message: "", token: "", linkUrl: "", expiresAt: 0n };
849
+ }
850
+ exports.CreateLinkTokenResponse = {
851
+ encode(message, writer = new wire_1.BinaryWriter()) {
852
+ if (message.ok !== false) {
853
+ writer.uint32(8).bool(message.ok);
854
+ }
855
+ if (message.message !== "") {
856
+ writer.uint32(18).string(message.message);
857
+ }
858
+ if (message.token !== "") {
859
+ writer.uint32(26).string(message.token);
860
+ }
861
+ if (message.linkUrl !== "") {
862
+ writer.uint32(34).string(message.linkUrl);
863
+ }
864
+ if (message.expiresAt !== 0n) {
865
+ if (BigInt.asIntN(64, message.expiresAt) !== message.expiresAt) {
866
+ throw new globalThis.Error("value provided for field message.expiresAt of type int64 too large");
867
+ }
868
+ writer.uint32(40).int64(message.expiresAt);
869
+ }
870
+ return writer;
871
+ },
872
+ decode(input, length) {
873
+ const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
874
+ const previousRecursionDepth = reader.__tsProtoDecodeDepth ?? 0;
875
+ if (previousRecursionDepth >= 100) {
876
+ throw new globalThis.Error("protobuf decode recursion limit exceeded");
877
+ }
878
+ reader.__tsProtoDecodeDepth = previousRecursionDepth + 1;
879
+ try {
880
+ const end = length === undefined ? reader.len : reader.pos + length;
881
+ const message = createBaseCreateLinkTokenResponse();
882
+ while (reader.pos < end) {
883
+ const tag = reader.uint32();
884
+ switch (tag >>> 3) {
885
+ case 1: {
886
+ if (tag !== 8) {
887
+ break;
888
+ }
889
+ message.ok = reader.bool();
890
+ continue;
891
+ }
892
+ case 2: {
893
+ if (tag !== 18) {
894
+ break;
895
+ }
896
+ message.message = reader.string();
897
+ continue;
898
+ }
899
+ case 3: {
900
+ if (tag !== 26) {
901
+ break;
902
+ }
903
+ message.token = reader.string();
904
+ continue;
905
+ }
906
+ case 4: {
907
+ if (tag !== 34) {
908
+ break;
909
+ }
910
+ message.linkUrl = reader.string();
911
+ continue;
912
+ }
913
+ case 5: {
914
+ if (tag !== 40) {
915
+ break;
916
+ }
917
+ message.expiresAt = reader.int64();
918
+ continue;
919
+ }
920
+ }
921
+ if ((tag & 7) === 4 || tag === 0) {
922
+ break;
923
+ }
924
+ reader.skip(tag & 7);
925
+ }
926
+ return message;
927
+ }
928
+ finally {
929
+ reader.__tsProtoDecodeDepth = previousRecursionDepth;
930
+ }
931
+ },
932
+ create(base) {
933
+ return exports.CreateLinkTokenResponse.fromPartial(base ?? {});
934
+ },
935
+ fromPartial(object) {
936
+ const message = createBaseCreateLinkTokenResponse();
937
+ message.ok = object.ok ?? false;
938
+ message.message = object.message ?? "";
939
+ message.token = object.token ?? "";
940
+ message.linkUrl = object.linkUrl ?? "";
941
+ message.expiresAt = (object.expiresAt !== undefined && object.expiresAt !== null) ? BigInt(object.expiresAt) : 0n;
942
+ return message;
943
+ },
944
+ };
785
945
  function createBaseSetTrustLevelRequest() {
786
946
  return { userId: 0, level: 0 };
787
947
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m1kad0/hannah-proto",
3
- "version": "4.2.0",
3
+ "version": "4.3.0",
4
4
  "description": "Generated TypeScript gRPC-js client stubs for the Hannah voice assistant proto schema",
5
5
  "license": "UNLICENSED",
6
6
  "main": "dist/index.js",
@@ -19,7 +19,7 @@
19
19
  "@bufbuild/protobuf": "^2.12.1"
20
20
  },
21
21
  "peerDependencies": {
22
- "@grpc/grpc-js": "^1.10.0"
22
+ "@grpc/grpc-js": "^1.14.4"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@grpc/grpc-js": "1.14.4",