@okrlinkhub/agent-factory 3.0.3 → 3.1.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/README.md +50 -0
- package/dist/client/bridge.d.ts +1 -0
- package/dist/client/bridge.d.ts.map +1 -1
- package/dist/client/bridge.js.map +1 -1
- package/dist/client/index.d.ts +26 -5
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +43 -3
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/component.d.ts +80 -2
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/identity.d.ts +60 -2
- package/dist/component/identity.d.ts.map +1 -1
- package/dist/component/identity.js +378 -32
- package/dist/component/identity.js.map +1 -1
- package/dist/component/lib.d.ts +1 -1
- package/dist/component/lib.d.ts.map +1 -1
- package/dist/component/lib.js +1 -1
- package/dist/component/lib.js.map +1 -1
- package/dist/component/queue.d.ts +11 -9
- package/dist/component/queue.d.ts.map +1 -1
- package/dist/component/queue.js +3 -0
- package/dist/component/queue.js.map +1 -1
- package/dist/component/schema.d.ts +38 -28
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +15 -0
- package/dist/component/schema.js.map +1 -1
- package/package.json +5 -1
- package/src/client/bridge.ts +1 -0
- package/src/client/index.ts +52 -3
- package/src/component/_generated/component.ts +116 -8
- package/src/component/identity.ts +431 -31
- package/src/component/lib.test.ts +8 -0
- package/src/component/lib.ts +2 -0
- package/src/component/queue.ts +5 -0
- package/src/component/schema.ts +15 -0
package/README.md
CHANGED
|
@@ -20,6 +20,56 @@ app.use(agentFactory);
|
|
|
20
20
|
export default app;
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
## Upgrade to 3.1.0
|
|
24
|
+
|
|
25
|
+
Version `3.1.0` introduces a **Telegram bot identity routing change**.
|
|
26
|
+
|
|
27
|
+
What changed:
|
|
28
|
+
|
|
29
|
+
- Telegram integrations now derive a stable `botIdentity` from `Telegram getMe` using the imported bot token.
|
|
30
|
+
- `agentProfiles`, `pairingCodes`, and `identityBindings` now persist `botIdentity`.
|
|
31
|
+
- Telegram webhook ingress now requires `X-Telegram-Bot-Api-Secret-Token` and resolves agents by `botIdentity + telegramUserId/chatId`.
|
|
32
|
+
- Pairing is now bot-scoped, so a bot token must be imported and verified before creating a new pairing code.
|
|
33
|
+
- Hydrated bridge runtime config now carries the resolved profile `botIdentity` alongside the effective bridge secret ref.
|
|
34
|
+
|
|
35
|
+
Why this matters:
|
|
36
|
+
|
|
37
|
+
- This release fixes cross-bot collisions where different users chatting with different bots could still be resolved through only `telegramUserId` / `telegramChatId`.
|
|
38
|
+
- The supported model is `1 user -> 1 bot`, with the receiving bot acting as the first discriminator of the whole Telegram flow.
|
|
39
|
+
|
|
40
|
+
Important compatibility notes for existing consumer apps:
|
|
41
|
+
|
|
42
|
+
- If your app already has paired Telegram agents created before `3.1.0`, treat them as legacy rows until they are reconciled or re-paired.
|
|
43
|
+
- If your app wraps `configureTelegramWebhook`, `importTelegramTokenForAgent`, or `getUserAgentOnboardingState`, update local validators/types to include `botIdentity` and `secretTokenConfigured`.
|
|
44
|
+
- If your onboarding UI previously allowed pairing before token verification, it should now require successful token import first.
|
|
45
|
+
- If you have custom Telegram ingress code outside `registerRoutes(...)`, you must validate `X-Telegram-Bot-Api-Secret-Token` and pass `botIdentity` into pairing / resolution flows.
|
|
46
|
+
|
|
47
|
+
Recommended upgrade checklist:
|
|
48
|
+
|
|
49
|
+
1. Upgrade the package to `3.1.0`.
|
|
50
|
+
2. Regenerate Convex bindings in the consumer app.
|
|
51
|
+
3. Re-import or reconcile Telegram bot tokens so each `agentProfile` stores the correct `botIdentity`.
|
|
52
|
+
4. Reconfigure Telegram webhooks so the component can set the new `secret_token`.
|
|
53
|
+
5. Run the soft-reset migration for legacy Telegram bindings without `botIdentity`.
|
|
54
|
+
6. Create a fresh pairing for existing bots unless you have a verified reconciliation path in place.
|
|
55
|
+
7. Smoke-test two different bots end-to-end and confirm each webhook resolves and bridges through the correct `agentKey`.
|
|
56
|
+
|
|
57
|
+
Recommended rollout for apps that already have this component installed:
|
|
58
|
+
|
|
59
|
+
1. Deploy the updated consumer app code first so it understands the new return shapes and onboarding readiness rules.
|
|
60
|
+
2. Upgrade to `@okrlinkhub/agent-factory@3.1.0`.
|
|
61
|
+
3. Regenerate codegen / bindings.
|
|
62
|
+
4. For every existing bot token, run the token reconciliation or re-import flow, then call webhook configuration again.
|
|
63
|
+
5. Run `softResetTelegramBindingsMissingBotIdentity` during the rollout window so legacy bot-agnostic bindings are marked and optionally revoked in a controlled way.
|
|
64
|
+
6. Re-pair existing bots that were active before this release.
|
|
65
|
+
|
|
66
|
+
New / updated component surfaces involved in this rollout:
|
|
67
|
+
|
|
68
|
+
- `importTelegramTokenForAgent`: now derives `botIdentity` from `Telegram getMe` and persists it before continuing.
|
|
69
|
+
- `configureTelegramWebhook`: now configures Telegram `secret_token` using the derived `botIdentity`.
|
|
70
|
+
- `reconcileTelegramBotIdentityForAgent`: verifies a stored token again and re-syncs `botIdentity` on the profile.
|
|
71
|
+
- `softResetTelegramBindingsMissingBotIdentity`: explicit migration helper for legacy Telegram bindings and pending pairings.
|
|
72
|
+
|
|
23
73
|
## Upgrade to 1.0.0
|
|
24
74
|
|
|
25
75
|
Version `1.0.0` introduces a **worker lifecycle breaking change**.
|
package/dist/client/bridge.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/client/bridge.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,2BAA2B,GAAG;IACxC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/client/bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/client/bridge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/client/bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -78,8 +78,8 @@ export declare function exposeApi(component: ComponentApi, options: {
|
|
|
78
78
|
sizeBytes?: number | undefined;
|
|
79
79
|
fileName?: string | undefined;
|
|
80
80
|
mimeType?: string | undefined;
|
|
81
|
-
storageId: string;
|
|
82
81
|
status: "expired" | "ready";
|
|
82
|
+
storageId: string;
|
|
83
83
|
kind: "photo" | "video" | "audio" | "voice" | "document";
|
|
84
84
|
telegramFileId: string;
|
|
85
85
|
expiresAt: number;
|
|
@@ -162,6 +162,7 @@ export declare function exposeApi(component: ComponentApi, options: {
|
|
|
162
162
|
appBaseUrlMapJson: null | string;
|
|
163
163
|
appKey: null | string;
|
|
164
164
|
baseUrl: null | string;
|
|
165
|
+
botIdentity: null | string;
|
|
165
166
|
serviceId: null | string;
|
|
166
167
|
serviceKey: null | string;
|
|
167
168
|
serviceKeySecretRef: null | string;
|
|
@@ -239,8 +240,8 @@ export declare function exposeApi(component: ComponentApi, options: {
|
|
|
239
240
|
sizeBytes: number;
|
|
240
241
|
}, Promise<any>>;
|
|
241
242
|
workerFailSnapshotUpload: import("convex/server").RegisteredMutation<"public", {
|
|
242
|
-
workerId: string;
|
|
243
243
|
error: string;
|
|
244
|
+
workerId: string;
|
|
244
245
|
snapshotId: string;
|
|
245
246
|
}, Promise<any>>;
|
|
246
247
|
workerLatestSnapshotForRestore: import("convex/server").RegisteredQuery<"public", {
|
|
@@ -272,14 +273,14 @@ export declare function exposeApi(component: ComponentApi, options: {
|
|
|
272
273
|
}[];
|
|
273
274
|
}, Promise<any>>;
|
|
274
275
|
globalSkillsList: import("convex/server").RegisteredQuery<"public", {
|
|
276
|
+
status?: "active" | "disabled" | undefined;
|
|
275
277
|
limit?: number | undefined;
|
|
276
278
|
releaseChannel?: "stable" | "canary" | undefined;
|
|
277
|
-
status?: "active" | "disabled" | undefined;
|
|
278
279
|
}, Promise<any>>;
|
|
279
280
|
globalSkillsSetStatus: import("convex/server").RegisteredMutation<"public", {
|
|
280
281
|
actor?: string | undefined;
|
|
281
|
-
slug: string;
|
|
282
282
|
status: "active" | "disabled";
|
|
283
|
+
slug: string;
|
|
283
284
|
}, Promise<any>>;
|
|
284
285
|
globalSkillsDelete: import("convex/server").RegisteredMutation<"public", {
|
|
285
286
|
slug: string;
|
|
@@ -353,6 +354,7 @@ export declare function exposeApi(component: ComponentApi, options: {
|
|
|
353
354
|
};
|
|
354
355
|
}>>;
|
|
355
356
|
bindUserAgent: import("convex/server").RegisteredMutation<"public", {
|
|
357
|
+
botIdentity?: string | undefined;
|
|
356
358
|
metadata?: Record<string, string> | undefined;
|
|
357
359
|
source?: "manual" | "telegram_pairing" | "api" | undefined;
|
|
358
360
|
telegramChatId?: string | undefined;
|
|
@@ -361,6 +363,7 @@ export declare function exposeApi(component: ComponentApi, options: {
|
|
|
361
363
|
consumerUserId: string;
|
|
362
364
|
}, Promise<{
|
|
363
365
|
agentKey: string;
|
|
366
|
+
botIdentity: null | string;
|
|
364
367
|
boundAt: number;
|
|
365
368
|
consumerUserId: string;
|
|
366
369
|
conversationId: string;
|
|
@@ -386,6 +389,7 @@ export declare function exposeApi(component: ComponentApi, options: {
|
|
|
386
389
|
consumerUserId: string;
|
|
387
390
|
}, Promise<{
|
|
388
391
|
agentKey: string;
|
|
392
|
+
botIdentity: null | string;
|
|
389
393
|
boundAt: number;
|
|
390
394
|
consumerUserId: string;
|
|
391
395
|
conversationId: string;
|
|
@@ -411,6 +415,7 @@ export declare function exposeApi(component: ComponentApi, options: {
|
|
|
411
415
|
consumerUserId: string;
|
|
412
416
|
}, Promise<any>>;
|
|
413
417
|
resolveAgentForTelegram: import("convex/server").RegisteredQuery<"public", {
|
|
418
|
+
botIdentity?: string | undefined;
|
|
414
419
|
telegramChatId?: string | undefined;
|
|
415
420
|
telegramUserId?: string | undefined;
|
|
416
421
|
}, Promise<{
|
|
@@ -424,6 +429,7 @@ export declare function exposeApi(component: ComponentApi, options: {
|
|
|
424
429
|
consumerUserId: string;
|
|
425
430
|
}, Promise<{
|
|
426
431
|
agentKey: string;
|
|
432
|
+
botIdentity: null | string;
|
|
427
433
|
code: string;
|
|
428
434
|
consumerUserId: string;
|
|
429
435
|
createdAt: number;
|
|
@@ -439,11 +445,13 @@ export declare function exposeApi(component: ComponentApi, options: {
|
|
|
439
445
|
consumerUserId: string;
|
|
440
446
|
}, Promise<any>>;
|
|
441
447
|
consumePairingCode: import("convex/server").RegisteredMutation<"public", {
|
|
448
|
+
botIdentity?: string | undefined;
|
|
442
449
|
telegramChatId: string;
|
|
443
450
|
telegramUserId: string;
|
|
444
451
|
code: string;
|
|
445
452
|
}, Promise<{
|
|
446
453
|
agentKey: string;
|
|
454
|
+
botIdentity: null | string;
|
|
447
455
|
code: string;
|
|
448
456
|
consumerUserId: string;
|
|
449
457
|
createdAt: number;
|
|
@@ -457,6 +465,7 @@ export declare function exposeApi(component: ComponentApi, options: {
|
|
|
457
465
|
code: string;
|
|
458
466
|
}, Promise<{
|
|
459
467
|
agentKey: string;
|
|
468
|
+
botIdentity: null | string;
|
|
460
469
|
code: string;
|
|
461
470
|
consumerUserId: string;
|
|
462
471
|
createdAt: number;
|
|
@@ -470,12 +479,16 @@ export declare function exposeApi(component: ComponentApi, options: {
|
|
|
470
479
|
agentKey: string;
|
|
471
480
|
consumerUserId: string;
|
|
472
481
|
}, Promise<any>>;
|
|
473
|
-
importTelegramTokenForAgent: import("convex/server").
|
|
482
|
+
importTelegramTokenForAgent: import("convex/server").RegisteredAction<"public", {
|
|
474
483
|
metadata?: Record<string, string> | undefined;
|
|
475
484
|
agentKey: string;
|
|
476
485
|
consumerUserId: string;
|
|
477
486
|
plaintextValue: string;
|
|
478
487
|
}, Promise<any>>;
|
|
488
|
+
reconcileTelegramBotIdentityForAgent: import("convex/server").RegisteredAction<"public", {
|
|
489
|
+
secretRef?: string | undefined;
|
|
490
|
+
agentKey: string;
|
|
491
|
+
}, Promise<any>>;
|
|
479
492
|
getUserAgentOnboardingState: import("convex/server").RegisteredQuery<"public", {
|
|
480
493
|
agentKey: string;
|
|
481
494
|
consumerUserId: string;
|
|
@@ -493,9 +506,11 @@ export declare function exposeApi(component: ComponentApi, options: {
|
|
|
493
506
|
consumerUserId: string;
|
|
494
507
|
}, Promise<any>>;
|
|
495
508
|
configureTelegramWebhook: import("convex/server").RegisteredAction<"public", {
|
|
509
|
+
agentKey?: string | undefined;
|
|
496
510
|
secretRef?: string | undefined;
|
|
497
511
|
convexSiteUrl: string;
|
|
498
512
|
}, Promise<{
|
|
513
|
+
botIdentity: null | string;
|
|
499
514
|
currentUrl: null | string;
|
|
500
515
|
description: string;
|
|
501
516
|
isReady: boolean;
|
|
@@ -503,8 +518,14 @@ export declare function exposeApi(component: ComponentApi, options: {
|
|
|
503
518
|
lastErrorMessage: null | string;
|
|
504
519
|
ok: boolean;
|
|
505
520
|
pendingUpdateCount: number;
|
|
521
|
+
secretTokenConfigured: boolean;
|
|
506
522
|
webhookUrl: string;
|
|
507
523
|
}>>;
|
|
524
|
+
softResetTelegramBindingsMissingBotIdentity: import("convex/server").RegisteredMutation<"public", {
|
|
525
|
+
nowMs?: number | undefined;
|
|
526
|
+
expirePendingPairings?: boolean | undefined;
|
|
527
|
+
revokeActiveBindings?: boolean | undefined;
|
|
528
|
+
}, Promise<any>>;
|
|
508
529
|
getWebhookReadiness: import("convex/server").RegisteredAction<"public", {
|
|
509
530
|
agentKey: string;
|
|
510
531
|
}, Promise<any>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEzE,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAmFhC,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,gBAAgB,EAChB,0BAA0B,EAC1B,0BAA0B,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,GACjC,MAAM,aAAa,CAAC;AAErB,wBAAgB,SAAS,CACvB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE;IACP,IAAI,EAAE,CACJ,GAAG,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,EACnB,SAAS,EACL;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAChB;QACE,IAAI,EAAE,OAAO,CAAC;QACd,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,KACF,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAo7CywvB,CAAC;2BAAmC,CAAC;;wBAAiE,CAAC;;wBAAwG,CAAC;yBAAiC,CAAC;;;;;6BAAyK,CAAC;;oBAA+D,CAAC;;;yBAAqH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAAm/N,CAAC;2BAAmC,CAAC;;wBAAiE,CAAC;;wBAAwG,CAAC;yBAAiC,CAAC;;;;;6BAAyK,CAAC;;oBAA+D,CAAC;;;yBAAqH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAhVl6/B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,YAAY,EACvB,EACE,UAA6B,EAC7B,eAAe,EACf,0BAAiC,EACjC,gBAA4B,EAC5B,yBAAiC,EACjC,cAAc,GACf,GAAE;IACD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC;IAC9C,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,cAAc,CAAC,EAAE,cAAc,CAAC;CAC5B,QAkMP"}
|
package/dist/client/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { actionGeneric, httpActionGeneric, mutationGeneric, queryGeneric, } from "convex/server";
|
|
2
2
|
import { v } from "convex/values";
|
|
3
|
+
import { parseTelegramWebhookSecretToken } from "../component/identity.js";
|
|
3
4
|
import { providerConfigValidator, scalingPolicyValidator, } from "../component/config.js";
|
|
4
5
|
const telegramAttachmentKindValidator = v.union(v.literal("photo"), v.literal("video"), v.literal("audio"), v.literal("voice"), v.literal("document"));
|
|
5
6
|
const telegramAttachmentValidator = v.object({
|
|
@@ -417,6 +418,7 @@ export function exposeApi(component, options) {
|
|
|
417
418
|
agentKey: "default",
|
|
418
419
|
version: "1.0.0",
|
|
419
420
|
secretsRef: ["telegram.botToken"],
|
|
421
|
+
botIdentity: "telegram-bot-default",
|
|
420
422
|
enabled: true,
|
|
421
423
|
});
|
|
422
424
|
},
|
|
@@ -528,6 +530,7 @@ export function exposeApi(component, options) {
|
|
|
528
530
|
args: {
|
|
529
531
|
consumerUserId: v.string(),
|
|
530
532
|
agentKey: v.string(),
|
|
533
|
+
botIdentity: v.optional(v.string()),
|
|
531
534
|
source: v.optional(v.union(v.literal("manual"), v.literal("telegram_pairing"), v.literal("api"))),
|
|
532
535
|
telegramUserId: v.optional(v.string()),
|
|
533
536
|
telegramChatId: v.optional(v.string()),
|
|
@@ -608,6 +611,7 @@ export function exposeApi(component, options) {
|
|
|
608
611
|
}),
|
|
609
612
|
resolveAgentForTelegram: queryGeneric({
|
|
610
613
|
args: {
|
|
614
|
+
botIdentity: v.optional(v.string()),
|
|
611
615
|
telegramUserId: v.optional(v.string()),
|
|
612
616
|
telegramChatId: v.optional(v.string()),
|
|
613
617
|
},
|
|
@@ -641,6 +645,7 @@ export function exposeApi(component, options) {
|
|
|
641
645
|
consumePairingCode: mutationGeneric({
|
|
642
646
|
args: {
|
|
643
647
|
code: v.string(),
|
|
648
|
+
botIdentity: v.optional(v.string()),
|
|
644
649
|
telegramUserId: v.string(),
|
|
645
650
|
telegramChatId: v.string(),
|
|
646
651
|
},
|
|
@@ -668,7 +673,7 @@ export function exposeApi(component, options) {
|
|
|
668
673
|
return await ctx.runQuery(component.lib.getUserAgentPairingStatus, args);
|
|
669
674
|
},
|
|
670
675
|
}),
|
|
671
|
-
importTelegramTokenForAgent:
|
|
676
|
+
importTelegramTokenForAgent: actionGeneric({
|
|
672
677
|
args: {
|
|
673
678
|
consumerUserId: v.string(),
|
|
674
679
|
agentKey: v.string(),
|
|
@@ -677,7 +682,17 @@ export function exposeApi(component, options) {
|
|
|
677
682
|
},
|
|
678
683
|
handler: async (ctx, args) => {
|
|
679
684
|
await options.auth(ctx, { type: "write", agentKey: args.agentKey });
|
|
680
|
-
return await ctx.
|
|
685
|
+
return await ctx.runAction(component.lib.importTelegramTokenForAgent, args);
|
|
686
|
+
},
|
|
687
|
+
}),
|
|
688
|
+
reconcileTelegramBotIdentityForAgent: actionGeneric({
|
|
689
|
+
args: {
|
|
690
|
+
agentKey: v.string(),
|
|
691
|
+
secretRef: v.optional(v.string()),
|
|
692
|
+
},
|
|
693
|
+
handler: async (ctx, args) => {
|
|
694
|
+
await options.auth(ctx, { type: "write", agentKey: args.agentKey });
|
|
695
|
+
return await ctx.runAction(component.lib.reconcileTelegramBotIdentityForAgent, args);
|
|
681
696
|
},
|
|
682
697
|
}),
|
|
683
698
|
getUserAgentOnboardingState: queryGeneric({
|
|
@@ -730,12 +745,24 @@ export function exposeApi(component, options) {
|
|
|
730
745
|
args: {
|
|
731
746
|
convexSiteUrl: v.string(),
|
|
732
747
|
secretRef: v.optional(v.string()),
|
|
748
|
+
agentKey: v.optional(v.string()),
|
|
733
749
|
},
|
|
734
750
|
handler: async (ctx, args) => {
|
|
735
751
|
await options.auth(ctx, { type: "read" });
|
|
736
752
|
return await ctx.runAction(component.lib.configureTelegramWebhook, args);
|
|
737
753
|
},
|
|
738
754
|
}),
|
|
755
|
+
softResetTelegramBindingsMissingBotIdentity: mutationGeneric({
|
|
756
|
+
args: {
|
|
757
|
+
nowMs: v.optional(v.number()),
|
|
758
|
+
revokeActiveBindings: v.optional(v.boolean()),
|
|
759
|
+
expirePendingPairings: v.optional(v.boolean()),
|
|
760
|
+
},
|
|
761
|
+
handler: async (ctx, args) => {
|
|
762
|
+
await options.auth(ctx, { type: "write" });
|
|
763
|
+
return await ctx.runMutation(component.lib.softResetTelegramBindingsMissingBotIdentity, args);
|
|
764
|
+
},
|
|
765
|
+
}),
|
|
739
766
|
getWebhookReadiness: actionGeneric({
|
|
740
767
|
args: {
|
|
741
768
|
agentKey: v.string(),
|
|
@@ -1145,6 +1172,13 @@ export function registerRoutes(http, component, { pathPrefix = "/agent-factory",
|
|
|
1145
1172
|
path: `${pathPrefix}/telegram/webhook`,
|
|
1146
1173
|
method: "POST",
|
|
1147
1174
|
handler: httpActionGeneric(async (ctx, request) => {
|
|
1175
|
+
const botIdentity = parseTelegramWebhookSecretToken(request.headers.get("X-Telegram-Bot-Api-Secret-Token"));
|
|
1176
|
+
if (!botIdentity) {
|
|
1177
|
+
return new Response(JSON.stringify({ ok: false, error: "missing or invalid telegram webhook secret token" }), {
|
|
1178
|
+
status: 403,
|
|
1179
|
+
headers: { "Content-Type": "application/json" },
|
|
1180
|
+
});
|
|
1181
|
+
}
|
|
1148
1182
|
const update = (await request.json());
|
|
1149
1183
|
const message = update.message;
|
|
1150
1184
|
if (!message?.chat?.id || !message?.from?.id) {
|
|
@@ -1164,6 +1198,7 @@ export function registerRoutes(http, component, { pathPrefix = "/agent-factory",
|
|
|
1164
1198
|
try {
|
|
1165
1199
|
const pairing = await ctx.runMutation(component.lib.consumePairingCode, {
|
|
1166
1200
|
code: startCommandCode,
|
|
1201
|
+
botIdentity,
|
|
1167
1202
|
telegramUserId,
|
|
1168
1203
|
telegramChatId,
|
|
1169
1204
|
});
|
|
@@ -1206,6 +1241,7 @@ export function registerRoutes(http, component, { pathPrefix = "/agent-factory",
|
|
|
1206
1241
|
}
|
|
1207
1242
|
const mappedRaw = resolveAgentKeyFromBinding
|
|
1208
1243
|
? await ctx.runQuery(component.lib.resolveAgentForTelegram, {
|
|
1244
|
+
botIdentity,
|
|
1209
1245
|
telegramUserId,
|
|
1210
1246
|
telegramChatId,
|
|
1211
1247
|
})
|
|
@@ -1231,6 +1267,7 @@ export function registerRoutes(http, component, { pathPrefix = "/agent-factory",
|
|
|
1231
1267
|
});
|
|
1232
1268
|
}
|
|
1233
1269
|
const metadata = {
|
|
1270
|
+
telegramBotIdentity: botIdentity,
|
|
1234
1271
|
telegramChatId,
|
|
1235
1272
|
telegramUserId,
|
|
1236
1273
|
};
|
|
@@ -1249,7 +1286,7 @@ export function registerRoutes(http, component, { pathPrefix = "/agent-factory",
|
|
|
1249
1286
|
})
|
|
1250
1287
|
: undefined;
|
|
1251
1288
|
await ctx.runMutation(component.lib.enqueue, {
|
|
1252
|
-
conversationId: mapped.conversationId ??
|
|
1289
|
+
conversationId: mapped.conversationId ?? buildTelegramIngressConversationId(botIdentity, telegramChatId),
|
|
1253
1290
|
agentKey,
|
|
1254
1291
|
payload: {
|
|
1255
1292
|
provider: "telegram",
|
|
@@ -1273,6 +1310,9 @@ function parseStartCommandCode(messageText) {
|
|
|
1273
1310
|
const match = messageText.match(/^\/start(?:@\w+)?\s+([A-Za-z0-9_-]{4,128})\s*$/);
|
|
1274
1311
|
return match?.[1] ?? null;
|
|
1275
1312
|
}
|
|
1313
|
+
function buildTelegramIngressConversationId(botIdentity, telegramChatId) {
|
|
1314
|
+
return `telegram:${botIdentity}:${telegramChatId}`;
|
|
1315
|
+
}
|
|
1276
1316
|
function collectTelegramAttachmentCandidates(message) {
|
|
1277
1317
|
const attachments = [];
|
|
1278
1318
|
const largestPhoto = Array.isArray(message.photo) ? message.photo[message.photo.length - 1] : null;
|