visionclaw 0.1.182 → 0.1.183-beta.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.
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat-manager.d.ts","sourceRoot":"","sources":["../../src/agent/heartbeat-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAEL,KAAK,oBAAoB,EAEzB,KAAK,kBAAkB,EACxB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AA+CnF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAwC;IACtD,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9C,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,uBAAuB,CAA8B;IAC7D,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,mBAAmB,CAAqB;gBAEpC,MAAM,EAAE,gBAAgB;IAQpC;;;;OAIG;IACG,IAAI,CACR,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,YAAY,EAAE,kBAAkB,GAAG,IAAI,GACtC,OAAO,CAAC,IAAI,CAAC;IA8EhB,4CAA4C;IAC5C,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,uEAAuE;IACvE,IAAI,sBAAsB,IAAI,kBAAkB,CAE/C;IAED,sFAAsF;IACtF,IAAI,gBAAgB,IAAI,oBAAoB,EAAE,CAE7C;IAED,wFAAwF;IACxF,IAAI,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAE3C;IAED;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,IAAI,CAAC;IAKT;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC1C;;;OAGG;IACG,4BAA4B,IAAI,OAAO,CAAC,kBAAkB,CAAC;IA2BjE;;;OAGG;IACH,iBAAiB,IAAI,IAAI;IAkBzB;;;OAGG;IACH,gBAAgB,IAAI,IAAI;CAmBzB"}
1
+ {"version":3,"file":"heartbeat-manager.d.ts","sourceRoot":"","sources":["../../src/agent/heartbeat-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAEL,KAAK,oBAAoB,EAEzB,KAAK,kBAAkB,EACxB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AA+CnF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAwC;IACtD,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9C,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,uBAAuB,CAA8B;IAC7D,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,mBAAmB,CAAqB;gBAEpC,MAAM,EAAE,gBAAgB;IAQpC;;;;OAIG;IACG,IAAI,CACR,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,YAAY,EAAE,kBAAkB,GAAG,IAAI,GACtC,OAAO,CAAC,IAAI,CAAC;IAiFhB,4CAA4C;IAC5C,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,uEAAuE;IACvE,IAAI,sBAAsB,IAAI,kBAAkB,CAE/C;IAED,sFAAsF;IACtF,IAAI,gBAAgB,IAAI,oBAAoB,EAAE,CAE7C;IAED,wFAAwF;IACxF,IAAI,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAE3C;IAED;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,IAAI,CAAC;IAKT;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC1C;;;OAGG;IACG,4BAA4B,IAAI,OAAO,CAAC,kBAAkB,CAAC;IA2BjE;;;OAGG;IACH,iBAAiB,IAAI,IAAI;IAkBzB;;;OAGG;IACH,gBAAgB,IAAI,IAAI;CAmBzB"}
@@ -12,7 +12,7 @@ import { isOnboardingComplete } from "../config/index.js";
12
12
  import { createCollectDataHandler } from "./data-collector.js";
13
13
  import { createUpgradeHandler } from "./upgrade-handler.js";
14
14
  import { createUsageHandler } from "./usage-handler.js";
15
- import { createPaymentHandler } from "../billing/payment-handler.js";
15
+ import { BillingHandler } from "../billing/billing-handler.js";
16
16
  import { setSharedGeminiApiKey } from "../gemini-credentials.js";
17
17
  import { setSharedPhonecallApiKey } from "../phonecall-credentials.js";
18
18
  import { setSharedTosCredentials } from "../tos-credentials.js";
@@ -85,9 +85,12 @@ export class HeartbeatManager {
85
85
  busy: false,
86
86
  onboardingComplete: isOnboardingComplete(),
87
87
  };
88
- // Register payment handler now that we have channelManager and service client
88
+ // Register billing handler for bundle purchases.
89
+ // Subscription payment is handled by the subscription gate (subscription-gate.ts),
90
+ // not via a command — the gate reads plans from the heartbeat response directly.
89
91
  if (telegramChatId) {
90
- this.commandDispatcher.registerHandler("payment_required", createPaymentHandler(channelManager, telegramChatId, this.client));
92
+ const billing = new BillingHandler(channelManager, telegramChatId, this.client);
93
+ this.commandDispatcher.registerHandler("bundle_purchase", billing.handleBundlePurchase);
91
94
  }
92
95
  try {
93
96
  const startupResp = await this.client.heartbeatStrict(startupPayload);
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat-manager.js","sourceRoot":"","sources":["../../src/agent/heartbeat-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heartbeat-manager.js","sourceRoot":"","sources":["../../src/agent/heartbeat-manager.ts"],"names":[],"mappings":"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"}
@@ -1,59 +1,50 @@
1
1
  /**
2
- * Unified billing handler for both subscription (`payment_required`) and
3
- * pay-as-you-go (`request_payment`) heartbeat commands.
2
+ * Billing handler for bundle purchases and subscription plan selection.
4
3
  *
5
4
  * This is deterministic bot code — the LLM agent is never involved in
6
- * payment flows. The handler:
5
+ * payment flows. The handler manages:
7
6
  *
8
- * 1. Receives a billing command from the backend via heartbeat
9
- * 2. Sends a selection prompt (inline keyboard) to the owner via Telegram
10
- * 3. Listens for selection events from the Telegram adapter
11
- * 4. Calls the backend to create a Stripe Checkout / Payment Link
12
- * 5. Sends the payment URL back to the owner as a URL button
7
+ * **Bundle flow** (`bundle_purchase` command):
8
+ * 1. Admin dispatches bundle_purchase via heartbeat command
9
+ * 2. Sends an amount selection prompt (inline keyboard) to the owner
10
+ * 3. Listens for `billing_bundle_selected` events from Telegram
11
+ * 4. Creates a one-time Stripe Checkout Session via the backend
12
+ * 5. Sends the checkout URL to the owner
13
+ *
14
+ * **Subscription plan selection** (triggered by subscription gate, not a command):
15
+ * The subscription gate sends the plan keyboard directly when the subscription
16
+ * expires. This handler listens for `billing_plan_selected` events and creates
17
+ * the corresponding Stripe Checkout Session.
13
18
  */
14
19
  import type { CommandHandler } from "../agent/command-dispatcher.js";
15
20
  import type { ChannelManager } from "../channels/manager.js";
16
- import type { BillingPlanSelectedEvent, BillingPaygSelectedEvent } from "../channels/interface.js";
17
21
  import type { OnboardingServiceClient } from "../onboarding/onboarding-service-client.js";
18
22
  /**
19
- * BillingHandler manages both subscription and PAYG payment flows.
20
- * Created once at startup; event listeners should be wired externally
21
- * (in HeartbeatManager) to avoid duplicate registrations.
23
+ * Billing handler for bundle purchases and subscription plan selection.
24
+ * Instantiated once at startup; event listeners are wired in the constructor.
22
25
  */
23
26
  export declare class BillingHandler {
24
27
  private readonly channelManager;
25
28
  private readonly ownerChatId;
26
- private readonly serviceClient;
29
+ private serviceClient;
27
30
  constructor(channelManager: ChannelManager, ownerChatId: number, serviceClient: OnboardingServiceClient | null);
28
31
  /**
29
- * CommandHandler for the `payment_required` heartbeat command.
30
- * Parses the payload and sends a plan selection prompt.
31
- */
32
- readonly handlePaymentRequired: CommandHandler;
33
- /**
34
- * Handle a `billing_plan_selected` event (user tapped a plan button).
35
- * Creates a Stripe Checkout Session and sends the link.
36
- */
37
- handlePlanSelected(event: BillingPlanSelectedEvent): Promise<void>;
38
- /**
39
- * CommandHandler for the `request_payment` heartbeat command.
40
- * Parses the payload and sends an amount selection prompt.
32
+ * Update the service client reference (e.g. after the client is lazily created).
41
33
  */
42
- readonly handleRequestPayment: CommandHandler;
34
+ setServiceClient(client: OnboardingServiceClient): void;
43
35
  /**
44
- * Handle a `billing_payg_selected` event (user tapped an amount button).
45
- * Creates a one-time Stripe Payment Link and sends the URL.
36
+ * Called when the owner selects a subscription plan from the inline keyboard.
37
+ * The keyboard is sent by the subscription gate (subscription-gate.ts),
38
+ * not by a command handler.
46
39
  */
47
- handlePaygSelected(event: BillingPaygSelectedEvent): Promise<void>;
40
+ private handlePlanSelected;
48
41
  /**
49
- * Send a Telegram prompt (plan picker or amount picker) and return
50
- * a command result.
42
+ * CommandHandler for `bundle_purchase`: sends amount picker to the owner.
51
43
  */
52
- private sendPrompt;
44
+ handleBundlePurchase: CommandHandler;
53
45
  /**
54
- * Create a Stripe checkout / payment link with retries, then send
55
- * the resulting URL to the owner via Telegram.
46
+ * Called when the owner selects a bundle amount from the inline keyboard.
56
47
  */
57
- private createAndSendLink;
48
+ private handleBundleSelected;
58
49
  }
59
50
  //# sourceMappingURL=billing-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"billing-handler.d.ts","sourceRoot":"","sources":["../../src/billing/billing-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACnG,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAW1F;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiC;gBAG7D,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,uBAAuB,GAAG,IAAI;IAS/C;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,EAAE,cAAc,CA8B5C;IAEF;;;OAGG;IACG,kBAAkB,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxE;;;OAGG;IACH,QAAQ,CAAC,oBAAoB,EAAE,cAAc,CA4B3C;IAEF;;;OAGG;IACG,kBAAkB,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxE;;;OAGG;YACW,UAAU;IAoBxB;;;OAGG;YACW,iBAAiB;CA0DhC"}
1
+ {"version":3,"file":"billing-handler.d.ts","sourceRoot":"","sources":["../../src/billing/billing-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAW1F;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,aAAa,CAAiC;gBAGpD,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,uBAAuB,GAAG,IAAI;IAiB/C;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI;IAMvD;;;;OAIG;YACW,kBAAkB;IA4DhC;;OAEG;IACH,oBAAoB,EAAE,cAAc,CAmClC;IAEF;;OAEG;YACW,oBAAoB;CAyDnC"}
@@ -1,26 +1,31 @@
1
1
  /**
2
- * Unified billing handler for both subscription (`payment_required`) and
3
- * pay-as-you-go (`request_payment`) heartbeat commands.
2
+ * Billing handler for bundle purchases and subscription plan selection.
4
3
  *
5
4
  * This is deterministic bot code — the LLM agent is never involved in
6
- * payment flows. The handler:
5
+ * payment flows. The handler manages:
7
6
  *
8
- * 1. Receives a billing command from the backend via heartbeat
9
- * 2. Sends a selection prompt (inline keyboard) to the owner via Telegram
10
- * 3. Listens for selection events from the Telegram adapter
11
- * 4. Calls the backend to create a Stripe Checkout / Payment Link
12
- * 5. Sends the payment URL back to the owner as a URL button
7
+ * **Bundle flow** (`bundle_purchase` command):
8
+ * 1. Admin dispatches bundle_purchase via heartbeat command
9
+ * 2. Sends an amount selection prompt (inline keyboard) to the owner
10
+ * 3. Listens for `billing_bundle_selected` events from Telegram
11
+ * 4. Creates a one-time Stripe Checkout Session via the backend
12
+ * 5. Sends the checkout URL to the owner
13
+ *
14
+ * **Subscription plan selection** (triggered by subscription gate, not a command):
15
+ * The subscription gate sends the plan keyboard directly when the subscription
16
+ * expires. This handler listens for `billing_plan_selected` events and creates
17
+ * the corresponding Stripe Checkout Session.
13
18
  */
19
+ import { BUNDLE_ALLOWED_AMOUNTS } from "./types.js";
14
20
  import { logger } from "../logger.js";
15
- const MAX_RETRIES = 2;
21
+ const MAX_CHECKOUT_RETRIES = 2;
16
22
  const RETRY_DELAY_MS = 2_000;
17
23
  function sleep(ms) {
18
24
  return new Promise((resolve) => setTimeout(resolve, ms));
19
25
  }
20
26
  /**
21
- * BillingHandler manages both subscription and PAYG payment flows.
22
- * Created once at startup; event listeners should be wired externally
23
- * (in HeartbeatManager) to avoid duplicate registrations.
27
+ * Billing handler for bundle purchases and subscription plan selection.
28
+ * Instantiated once at startup; event listeners are wired in the constructor.
24
29
  */
25
30
  export class BillingHandler {
26
31
  channelManager;
@@ -30,125 +35,124 @@ export class BillingHandler {
30
35
  this.channelManager = channelManager;
31
36
  this.ownerChatId = ownerChatId;
32
37
  this.serviceClient = serviceClient;
38
+ // Wire up event listeners once at construction time.
39
+ // billing_plan_selected: fired when the owner taps a plan in the subscription
40
+ // gate keyboard (subscription-gate.ts sends the prompt, we handle the response).
41
+ channelManager.on("billing_plan_selected", (event) => {
42
+ void this.handlePlanSelected(event);
43
+ });
44
+ channelManager.on("billing_bundle_selected", (event) => {
45
+ void this.handleBundleSelected(event);
46
+ });
33
47
  }
34
- // ── Subscription flow ──────────────────────────────────────────────
35
48
  /**
36
- * CommandHandler for the `payment_required` heartbeat command.
37
- * Parses the payload and sends a plan selection prompt.
49
+ * Update the service client reference (e.g. after the client is lazily created).
38
50
  */
39
- handlePaymentRequired = async (_commandId, payload) => {
40
- const raw = (payload ?? {});
41
- const plans = Array.isArray(raw.plans)
42
- ? raw.plans
43
- : [];
44
- if (plans.length === 0) {
45
- logger.warn("[billing] payment_required received with no plans");
46
- return {
47
- status: "failed",
48
- result: JSON.stringify({ error: "No plans in payload" }),
49
- };
50
- }
51
- const typedPayload = {
52
- message: typeof raw.message === "string" ? raw.message : undefined,
53
- plans,
54
- };
55
- logger.system(`[billing] Payment required received with ${typedPayload.plans.length} plan(s)`);
56
- return this.sendPrompt(() => this.channelManager.sendTelegramPaymentPrompt(this.ownerChatId, typedPayload), "billing");
57
- };
51
+ setServiceClient(client) {
52
+ this.serviceClient = client;
53
+ }
54
+ // ── Subscription plan selection (triggered by subscription gate) ──────
58
55
  /**
59
- * Handle a `billing_plan_selected` event (user tapped a plan button).
60
- * Creates a Stripe Checkout Session and sends the link.
56
+ * Called when the owner selects a subscription plan from the inline keyboard.
57
+ * The keyboard is sent by the subscription gate (subscription-gate.ts),
58
+ * not by a command handler.
61
59
  */
62
60
  async handlePlanSelected(event) {
63
- await this.createAndSendLink(event.chatId, "billing", event.planName, (client) => client.createCheckoutSession(event.planId, event.chatId));
61
+ if (!this.serviceClient) {
62
+ logger.warn("[billing] No service client — cannot create checkout session");
63
+ await this.channelManager.sendMessage("telegram", String(event.chatId), "Payment is not configured. Please contact support.");
64
+ return;
65
+ }
66
+ logger.system(`[billing] Plan selected: ${event.planId} by chat ${event.chatId}`);
67
+ for (let attempt = 0; attempt <= MAX_CHECKOUT_RETRIES; attempt++) {
68
+ try {
69
+ const result = await this.serviceClient.createCheckoutSession(event.planId, event.chatId);
70
+ if (result?.checkoutUrl) {
71
+ await this.channelManager.sendTelegramCheckoutLink(event.chatId, event.planName, result.checkoutUrl);
72
+ logger.system(`[billing] Checkout URL sent to chat ${event.chatId} for plan ${event.planId}`);
73
+ return;
74
+ }
75
+ if (attempt < MAX_CHECKOUT_RETRIES) {
76
+ logger.warn(`[billing] Checkout session attempt ${attempt + 1} failed, retrying...`);
77
+ await this.channelManager.sendMessage("telegram", String(event.chatId), "Payment setup failed, retrying...");
78
+ await sleep(RETRY_DELAY_MS);
79
+ }
80
+ }
81
+ catch (err) {
82
+ const errMsg = err instanceof Error ? err.message : String(err);
83
+ logger.err(`[billing] Checkout session attempt ${attempt + 1} error: ${errMsg}`);
84
+ if (attempt < MAX_CHECKOUT_RETRIES) {
85
+ await sleep(RETRY_DELAY_MS);
86
+ }
87
+ }
88
+ }
89
+ logger.err("[billing] All checkout session attempts failed");
90
+ await this.channelManager.sendMessage("telegram", String(event.chatId), "Payment setup failed. Please try again later.");
64
91
  }
65
- // ── PAYG flow ──────────────────────────────────────────────────────
92
+ // ── Bundle flow ──────────────────────────────────────────────────────
66
93
  /**
67
- * CommandHandler for the `request_payment` heartbeat command.
68
- * Parses the payload and sends an amount selection prompt.
94
+ * CommandHandler for `bundle_purchase`: sends amount picker to the owner.
69
95
  */
70
- handleRequestPayment = async (_commandId, payload) => {
96
+ handleBundlePurchase = async (_commandId, payload) => {
71
97
  const raw = (payload ?? {});
72
- const amounts = Array.isArray(raw.amounts) ? raw.amounts : [];
73
- if (amounts.length === 0) {
74
- logger.warn("[payg] request_payment received with no amounts");
75
- return {
76
- status: "failed",
77
- result: JSON.stringify({ error: "No amounts in payload" }),
78
- };
79
- }
98
+ const amounts = Array.isArray(raw.amounts)
99
+ ? raw.amounts
100
+ : [...BUNDLE_ALLOWED_AMOUNTS];
80
101
  const typedPayload = {
81
102
  reason: typeof raw.reason === "string" ? raw.reason : undefined,
82
103
  amounts,
83
104
  };
84
- logger.system(`[payg] Request payment received with amounts: ${typedPayload.amounts.join(", ")}`);
85
- return this.sendPrompt(() => this.channelManager.sendTelegramPaygPrompt(this.ownerChatId, typedPayload), "payg");
86
- };
87
- /**
88
- * Handle a `billing_payg_selected` event (user tapped an amount button).
89
- * Creates a one-time Stripe Payment Link and sends the URL.
90
- */
91
- async handlePaygSelected(event) {
92
- await this.createAndSendLink(event.chatId, "payg", `$${event.amount} Top-Up`, (client) => client.createPaymentLink(event.amount, event.chatId));
93
- }
94
- // ── Shared helpers ─────────────────────────────────────────────────
95
- /**
96
- * Send a Telegram prompt (plan picker or amount picker) and return
97
- * a command result.
98
- */
99
- async sendPrompt(send, tag) {
105
+ logger.system(`[billing] Bundle purchase command received with ${typedPayload.amounts.length} amount(s)`);
100
106
  try {
101
- await send();
107
+ await this.channelManager.sendTelegramBundlePrompt(this.ownerChatId, typedPayload);
102
108
  return {
103
109
  status: "completed",
104
- result: JSON.stringify({ message: `${tag} prompt sent to owner` }),
110
+ result: JSON.stringify({ message: "Bundle prompt sent to owner" }),
105
111
  };
106
112
  }
107
113
  catch (err) {
108
114
  const errMsg = err instanceof Error ? err.message : String(err);
109
- logger.err(`[${tag}] Failed to send prompt: ${errMsg}`);
115
+ logger.err(`[billing] Failed to send bundle prompt: ${errMsg}`);
110
116
  return {
111
117
  status: "failed",
112
118
  result: JSON.stringify({ error: errMsg }),
113
119
  };
114
120
  }
115
- }
121
+ };
116
122
  /**
117
- * Create a Stripe checkout / payment link with retries, then send
118
- * the resulting URL to the owner via Telegram.
123
+ * Called when the owner selects a bundle amount from the inline keyboard.
119
124
  */
120
- async createAndSendLink(chatId, tag, linkLabel, createLink) {
125
+ async handleBundleSelected(event) {
121
126
  if (!this.serviceClient) {
122
- logger.warn(`[${tag}] No service client — cannot create payment link`);
123
- await this.channelManager.sendMessage("telegram", String(chatId), "Payment is not configured. Please contact support.");
127
+ logger.warn("[billing] No service client — cannot create bundle purchase");
128
+ await this.channelManager.sendMessage("telegram", String(event.chatId), "Payment is not configured. Please contact support.");
124
129
  return;
125
130
  }
126
- const client = this.serviceClient;
127
- logger.system(`[${tag}] Selection received from chat ${chatId}`);
128
- for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
131
+ logger.system(`[billing] Bundle amount selected: $${event.amount} by chat ${event.chatId}`);
132
+ for (let attempt = 0; attempt <= MAX_CHECKOUT_RETRIES; attempt++) {
129
133
  try {
130
- const result = await createLink(client);
134
+ const result = await this.serviceClient.createBundlePurchase(event.amount, event.chatId);
131
135
  if (result?.checkoutUrl) {
132
- await this.channelManager.sendTelegramCheckoutLink(chatId, linkLabel, result.checkoutUrl);
133
- logger.system(`[${tag}] Payment link sent to chat ${chatId}`);
136
+ await this.channelManager.sendTelegramCheckoutLink(event.chatId, `$${event.amount} Bundle Top-Up`, result.checkoutUrl);
137
+ logger.system(`[billing] Bundle checkout URL sent to chat ${event.chatId} for $${event.amount}`);
134
138
  return;
135
139
  }
136
- if (attempt < MAX_RETRIES) {
137
- logger.warn(`[${tag}] Payment link attempt ${attempt + 1} failed, retrying...`);
138
- await this.channelManager.sendMessage("telegram", String(chatId), "Payment setup failed, retrying...");
140
+ if (attempt < MAX_CHECKOUT_RETRIES) {
141
+ logger.warn(`[billing] Bundle checkout attempt ${attempt + 1} failed, retrying...`);
142
+ await this.channelManager.sendMessage("telegram", String(event.chatId), "Bundle purchase setup failed, retrying...");
139
143
  await sleep(RETRY_DELAY_MS);
140
144
  }
141
145
  }
142
146
  catch (err) {
143
147
  const errMsg = err instanceof Error ? err.message : String(err);
144
- logger.err(`[${tag}] Payment link attempt ${attempt + 1} error: ${errMsg}`);
145
- if (attempt < MAX_RETRIES) {
148
+ logger.err(`[billing] Bundle checkout attempt ${attempt + 1} error: ${errMsg}`);
149
+ if (attempt < MAX_CHECKOUT_RETRIES) {
146
150
  await sleep(RETRY_DELAY_MS);
147
151
  }
148
152
  }
149
153
  }
150
- logger.err(`[${tag}] All payment link attempts failed`);
151
- await this.channelManager.sendMessage("telegram", String(chatId), "Payment setup failed. Please try again later.");
154
+ logger.err("[billing] All bundle checkout attempts failed");
155
+ await this.channelManager.sendMessage("telegram", String(event.chatId), "Bundle purchase setup failed. Please try again later.");
152
156
  }
153
157
  }
154
158
  //# sourceMappingURL=billing-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"billing-handler.js","sourceRoot":"","sources":["../../src/billing/billing-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"billing-handler.js","sourceRoot":"","sources":["../../src/billing/billing-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,OAAO,EAAE,sBAAsB,EAA8B,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,cAAc,GAAG,KAAK,CAAC;AAE7B,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,cAAc;IACR,cAAc,CAAiB;IAC/B,WAAW,CAAS;IAC7B,aAAa,CAAiC;IAEtD,YACE,cAA8B,EAC9B,WAAmB,EACnB,aAA6C;QAE7C,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,qDAAqD;QACrD,8EAA8E;QAC9E,iFAAiF;QACjF,cAAc,CAAC,EAAE,CAAC,uBAAuB,EAAE,CAAC,KAA+B,EAAE,EAAE;YAC7E,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,cAAc,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,KAAiC,EAAE,EAAE;YACjF,KAAK,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,MAA+B;QAC9C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;IAC9B,CAAC;IAED,yEAAyE;IAEzE;;;;OAIG;IACK,KAAK,CAAC,kBAAkB,CAAC,KAA+B;QAC9D,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YAC5E,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CACnC,UAAU,EACV,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EACpB,oDAAoD,CACrD,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,4BAA4B,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAElF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,oBAAoB,EAAE,OAAO,EAAE,EAAE,CAAC;YACjE,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAC3D,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,MAAM,CACb,CAAC;gBAEF,IAAI,MAAM,EAAE,WAAW,EAAE,CAAC;oBACxB,MAAM,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAChD,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,QAAQ,EACd,MAAM,CAAC,WAAW,CACnB,CAAC;oBACF,MAAM,CAAC,MAAM,CACX,uCAAuC,KAAK,CAAC,MAAM,aAAa,KAAK,CAAC,MAAM,EAAE,CAC/E,CAAC;oBACF,OAAO;gBACT,CAAC;gBAED,IAAI,OAAO,GAAG,oBAAoB,EAAE,CAAC;oBACnC,MAAM,CAAC,IAAI,CAAC,sCAAsC,OAAO,GAAG,CAAC,sBAAsB,CAAC,CAAC;oBACrF,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CACnC,UAAU,EACV,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EACpB,mCAAmC,CACpC,CAAC;oBACF,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,MAAM,CAAC,GAAG,CAAC,sCAAsC,OAAO,GAAG,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC;gBACjF,IAAI,OAAO,GAAG,oBAAoB,EAAE,CAAC;oBACnC,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CACnC,UAAU,EACV,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EACpB,+CAA+C,CAChD,CAAC;IACJ,CAAC;IAED,wEAAwE;IAExE;;OAEG;IACH,oBAAoB,GAAmB,KAAK,EAC1C,UAAkB,EAClB,OAAgB,EAChB,EAAE;QACF,MAAM,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;QACvD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YACxC,CAAC,CAAE,GAAG,CAAC,OAAoB;YAC3B,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC,CAAC;QAEhC,MAAM,YAAY,GAA0B;YAC1C,MAAM,EAAE,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAC/D,OAAO;SACR,CAAC;QAEF,MAAM,CAAC,MAAM,CACX,mDAAmD,YAAY,CAAC,OAAO,CAAC,MAAM,YAAY,CAC3F,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAChD,IAAI,CAAC,WAAW,EAChB,YAAY,CACb,CAAC;YACF,OAAO;gBACL,MAAM,EAAE,WAAoB;gBAC5B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChE,MAAM,CAAC,GAAG,CAAC,2CAA2C,MAAM,EAAE,CAAC,CAAC;YAChE,OAAO;gBACL,MAAM,EAAE,QAAiB;gBACzB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;aAC1C,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAAC,KAAiC;QAClE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;YAC3E,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CACnC,UAAU,EACV,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EACpB,oDAAoD,CACrD,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,sCAAsC,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAE5F,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,oBAAoB,EAAE,OAAO,EAAE,EAAE,CAAC;YACjE,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAC1D,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,MAAM,CACb,CAAC;gBAEF,IAAI,MAAM,EAAE,WAAW,EAAE,CAAC;oBACxB,MAAM,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAChD,KAAK,CAAC,MAAM,EACZ,IAAI,KAAK,CAAC,MAAM,gBAAgB,EAChC,MAAM,CAAC,WAAW,CACnB,CAAC;oBACF,MAAM,CAAC,MAAM,CACX,8CAA8C,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,MAAM,EAAE,CAClF,CAAC;oBACF,OAAO;gBACT,CAAC;gBAED,IAAI,OAAO,GAAG,oBAAoB,EAAE,CAAC;oBACnC,MAAM,CAAC,IAAI,CAAC,qCAAqC,OAAO,GAAG,CAAC,sBAAsB,CAAC,CAAC;oBACpF,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CACnC,UAAU,EACV,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EACpB,2CAA2C,CAC5C,CAAC;oBACF,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,MAAM,CAAC,GAAG,CAAC,qCAAqC,OAAO,GAAG,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC;gBAChF,IAAI,OAAO,GAAG,oBAAoB,EAAE,CAAC;oBACnC,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC5D,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CACnC,UAAU,EACV,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EACpB,uDAAuD,CACxD,CAAC;IACJ,CAAC;CACF"}
@@ -2,10 +2,11 @@
2
2
  * Types for the billing / payment system.
3
3
  *
4
4
  * Stripe Checkout Sessions for recurring subscriptions.
5
- * Plans are served from the backend via the payment_required heartbeat command.
5
+ * Plans are served from the backend via the heartbeat response and displayed
6
+ * by the subscription gate when the subscription expires.
6
7
  */
7
8
  /**
8
- * A plan delivered by the backend in the payment_required payload.
9
+ * A subscription plan served by the backend.
9
10
  */
10
11
  export interface BillingPlan {
11
12
  id: string;
@@ -15,12 +16,11 @@ export interface BillingPlan {
15
16
  description: string;
16
17
  }
17
18
  /**
18
- * Payload carried by the `payment_required` heartbeat command.
19
- * The backend determines when payment is needed and sends this,
20
- * including the available plans from the billing_plans table.
19
+ * Payload used by the subscription gate to display plan choices.
20
+ * The backend provides plan data in the heartbeat response.
21
21
  */
22
22
  export interface PaymentRequiredPayload {
23
- /** Optional message from backend to display to the user */
23
+ /** Optional message to display to the user */
24
24
  message?: string;
25
25
  /** Available subscription plans (populated by the backend) */
26
26
  plans: BillingPlan[];
@@ -30,4 +30,20 @@ export interface PaymentRequiredPayload {
30
30
  */
31
31
  export declare const BILLING_CALLBACK_PREFIX = "billing:";
32
32
  export declare const BILLING_PLAN_CALLBACK_PREFIX = "billing:plan:";
33
+ export declare const BILLING_BUNDLE_CALLBACK_PREFIX = "billing:bundle:";
34
+ /**
35
+ * Allowed dollar amounts for bundle (one-time top-up) purchases.
36
+ * Keep in sync with BUNDLE_ALLOWED_AMOUNTS in services/onboarding/src/lib/billing.ts.
37
+ */
38
+ export declare const BUNDLE_ALLOWED_AMOUNTS: readonly number[];
39
+ /**
40
+ * Payload carried by the `bundle_purchase` heartbeat command.
41
+ * The admin triggers this with a list of allowed dollar amounts.
42
+ */
43
+ export interface BundlePurchasePayload {
44
+ /** Reason the bundle was offered (e.g. "Admin offered bundle top-up") */
45
+ reason?: string;
46
+ /** Allowed dollar amounts the user can pick from */
47
+ amounts: number[];
48
+ }
33
49
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/billing/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,aAAa,CAAC;AAClD,eAAO,MAAM,4BAA4B,kBAAkB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/billing/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,aAAa,CAAC;AAClD,eAAO,MAAM,4BAA4B,kBAAkB,CAAC;AAC5D,eAAO,MAAM,8BAA8B,oBAAoB,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAAsB,CAAC;AAE3E;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB"}
@@ -2,11 +2,18 @@
2
2
  * Types for the billing / payment system.
3
3
  *
4
4
  * Stripe Checkout Sessions for recurring subscriptions.
5
- * Plans are served from the backend via the payment_required heartbeat command.
5
+ * Plans are served from the backend via the heartbeat response and displayed
6
+ * by the subscription gate when the subscription expires.
6
7
  */
7
8
  /**
8
9
  * Callback data prefixes used in Telegram inline keyboard buttons.
9
10
  */
10
11
  export const BILLING_CALLBACK_PREFIX = "billing:";
11
12
  export const BILLING_PLAN_CALLBACK_PREFIX = "billing:plan:";
13
+ export const BILLING_BUNDLE_CALLBACK_PREFIX = "billing:bundle:";
14
+ /**
15
+ * Allowed dollar amounts for bundle (one-time top-up) purchases.
16
+ * Keep in sync with BUNDLE_ALLOWED_AMOUNTS in services/onboarding/src/lib/billing.ts.
17
+ */
18
+ export const BUNDLE_ALLOWED_AMOUNTS = [10, 20, 50, 100];
12
19
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/billing/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAyBH;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC;AAClD,MAAM,CAAC,MAAM,4BAA4B,GAAG,eAAe,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/billing/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAwBH;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC;AAClD,MAAM,CAAC,MAAM,4BAA4B,GAAG,eAAe,CAAC;AAC5D,MAAM,CAAC,MAAM,8BAA8B,GAAG,iBAAiB,CAAC;AAEhE;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC"}
@@ -170,6 +170,14 @@ export interface BillingPlanSelectedEvent {
170
170
  planId: string;
171
171
  planName: string;
172
172
  }
173
+ /**
174
+ * Payload emitted when the owner selects a bundle amount via inline keyboard.
175
+ * The billing handler uses this to create a one-time Stripe Checkout Session.
176
+ */
177
+ export interface BillingBundleSelectedEvent {
178
+ chatId: number;
179
+ amount: number;
180
+ }
173
181
  /**
174
182
  * Payload emitted when the owner toggles the WeChat monitor via /wechat-monitor on|off.
175
183
  */
@@ -201,6 +209,7 @@ export interface ChannelEvents {
201
209
  android_use_request: (req: AndroidUseRequest) => void;
202
210
  wechat_monitor_request: (req: WechatMonitorRequest) => void;
203
211
  billing_plan_selected: (event: BillingPlanSelectedEvent) => void;
212
+ billing_bundle_selected: (event: BillingBundleSelectedEvent) => void;
204
213
  error: (err: Error) => void;
205
214
  }
206
215
  //# sourceMappingURL=interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/channels/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,mCAAmC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB,kCAAkC;IAClC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,qGAAqG;IACrG,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,iBAAiB,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnH,6EAA6E;IAC7E,mBAAmB,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IACvC,YAAY,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,aAAa,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,eAAe,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IAC/C,eAAe,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IAC/C,cAAc,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C,YAAY,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,cAAc,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C,cAAc,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C,mBAAmB,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACtD,oBAAoB,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACxD,aAAa,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,kBAAkB,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACrD,oBAAoB,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACxD,aAAa,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,iBAAiB,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACnD,mBAAmB,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACtD,sBAAsB,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC5D,qBAAqB,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,IAAI,CAAC;IACjE,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;CAC7B"}
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/channels/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,mCAAmC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB,kCAAkC;IAClC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,qGAAqG;IACrG,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,iBAAiB,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnH,6EAA6E;IAC7E,mBAAmB,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IACvC,YAAY,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,aAAa,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,eAAe,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IAC/C,eAAe,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IAC/C,cAAc,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C,YAAY,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,cAAc,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C,cAAc,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C,mBAAmB,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACtD,oBAAoB,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACxD,aAAa,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,kBAAkB,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACrD,oBAAoB,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACxD,aAAa,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,iBAAiB,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACnD,mBAAmB,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACtD,sBAAsB,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC5D,qBAAqB,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,IAAI,CAAC;IACjE,uBAAuB,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,IAAI,CAAC;IACrE,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;CAC7B"}
@@ -1,7 +1,7 @@
1
1
  import { EventEmitter } from "node:events";
2
2
  import type { VisionClawConfig } from "../config/types.js";
3
3
  import type { ChannelAdapter, MessageAttachment, ReplyContext } from "./interface.js";
4
- import type { PaymentRequiredPayload } from "../billing/types.js";
4
+ import type { PaymentRequiredPayload, BundlePurchasePayload } from "../billing/types.js";
5
5
  import type { MessageQueue } from "./queue.js";
6
6
  /**
7
7
  * Manages all enabled channel adapters.
@@ -47,6 +47,10 @@ export declare class ChannelManager extends EventEmitter {
47
47
  * Send a Stripe Checkout link via the Telegram adapter.
48
48
  */
49
49
  sendTelegramCheckoutLink(chatId: number, planName: string, checkoutUrl: string): Promise<void>;
50
+ /**
51
+ * Send a bundle amount selection prompt via the Telegram adapter.
52
+ */
53
+ sendTelegramBundlePrompt(chatId: number, payload: BundlePurchasePayload): Promise<void>;
50
54
  /**
51
55
  * Update the Discord adapter's allowed channel IDs.
52
56
  * Called after owner onboarding completes with IDs from owner.json.