@okrlinkhub/agent-factory 3.0.3 → 3.1.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.
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**.
@@ -5,6 +5,7 @@ export type HydratedBridgeRuntimeConfig = {
5
5
  appKey: string | null;
6
6
  serviceKey: string | null;
7
7
  serviceKeySecretRef: string | null;
8
+ botIdentity?: string | null;
8
9
  };
9
10
  export type ResolvedBridgeRuntimeConfig = {
10
11
  baseUrl: string;
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/client/bridge.ts"],"names":[],"mappings":"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"}
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":"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"}
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/client/bridge.ts"],"names":[],"mappings":"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"}
@@ -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").RegisteredMutation<"public", {
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;AACzE,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAo4CojtB,CAAC;2BAAmC,CAAC;;wBAAiE,CAAC;;wBAAwG,CAAC;yBAAiC,CAAC;;;;;6BAAyK,CAAC;;oBAA+D,CAAC;;;yBAAqH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAA28N,CAAC;2BAAmC,CAAC;;wBAAiE,CAAC;;wBAAwG,CAAC;yBAAiC,CAAC;;;;;6BAAyK,CAAC;;oBAA+D,CAAC;;;yBAAqH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA7Trq9B;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,QAmLP"}
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"}
@@ -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: mutationGeneric({
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.runMutation(component.lib.importTelegramTokenForAgent, args);
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 ?? `telegram:${telegramChatId}`,
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;