visionclaw 0.1.182-beta.5 → 0.1.182

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/CHANGELOG.md CHANGED
@@ -1,3 +1,37 @@
1
+ ## [0.1.182](https://github.com/babelcloud/visionclaw/compare/v0.1.181...v0.1.182) (2026-04-14)
2
+
3
+ ### Bug Fixes
4
+
5
+ * address PR #138 review comments ([b08a808](https://github.com/babelcloud/visionclaw/commit/b08a808331142c32796a67b5baaecdbc9e34b1a7))
6
+ * deduplicate WeChat monitor queue messages ([9c619e1](https://github.com/babelcloud/visionclaw/commit/9c619e1828f222cd0cb85cdef3f943bd76619f75))
7
+ * set meta.kind=external-wake in monitor queue messages ([383a81d](https://github.com/babelcloud/visionclaw/commit/383a81d7a1de45d46b10bb3840f60e3484cd45f7))
8
+ * detect VisionClaw PID under Electron host via pgrep fallback ([ee61090](https://github.com/babelcloud/visionclaw/commit/ee61090d028058db0e044e097b20da084310ce36))
9
+ * include wechat-monitor.mjs in package and fix restart tests ([f60a8e4](https://github.com/babelcloud/visionclaw/commit/f60a8e4cb29a285c89bdf9d8c4598118316c4800))
10
+ * add optional anthropicBaseUrl to configuration and update client initialization ([ce0d3ee](https://github.com/babelcloud/visionclaw/commit/ce0d3ee00bfd48e717669881e06f849e26970145))
11
+ * add missing getAndroidUseEnabled to integration test session contexts (#154) ([f8a0c62](https://github.com/babelcloud/visionclaw/commit/f8a0c62307dc24044abfeea254880a0e326017bf))
12
+ * command-dispatcher test not clearing completed set before re-dispatch ([f66efd0](https://github.com/babelcloud/visionclaw/commit/f66efd0fcc3190b5eaf73d7996a0f76985b05a2c))
13
+ * add --owner flag to reset tests after requiring explicit flag ([bf4bf8c](https://github.com/babelcloud/visionclaw/commit/bf4bf8c80beab6044dad7fe4749dd986a80b6f1a))
14
+ * require --owner or --machine flag for reset command ([9d3ca20](https://github.com/babelcloud/visionclaw/commit/9d3ca205c2f6710d24ab066178b230b4b86b3708))
15
+ * lint error and add responseModalities config for Lyria 3 ([20a248a](https://github.com/babelcloud/visionclaw/commit/20a248a6d8194b1fc3ca0373288a5a6782b0817f))
16
+ * add "phonecall" to reserved names in MCP manager ([adb6206](https://github.com/babelcloud/visionclaw/commit/adb62062d9fb96f2b433040a7bf436d81be2f58e))
17
+ * handle dual-session coexistence for search tool replacement ([a8bf096](https://github.com/babelcloud/visionclaw/commit/a8bf09678ff924b1954d61dd50b46221c862b169))
18
+ * disable built-in WebSearch, use SerpAPI for all providers ([e1156dd](https://github.com/babelcloud/visionclaw/commit/e1156dd02925649d581b0398acc2ef0beff9d170))
19
+ * resolve 5 unit test failures from env leakage and stale test data ([41fae13](https://github.com/babelcloud/visionclaw/commit/41fae130162ef3f5b159c11db095867a1648a61a))
20
+
21
+ ### Features
22
+
23
+ * add release preparation and finalization scripts to package.json ([d7b1a2d](https://github.com/babelcloud/visionclaw/commit/d7b1a2dfed030accd275d73fcc44889242ab376b))
24
+ * add stock data query MCP tools (akshare + yfinance) ([3caf59c](https://github.com/babelcloud/visionclaw/commit/3caf59ccdc3cd94b8f7ceb77ef8260e845cee566))
25
+ * WeChat real-time monitor with SIGUSR2 wake signal (#25) ([5730571](https://github.com/babelcloud/visionclaw/commit/573057191f84145c0ea3a4d047dc0baba40e6a69))
26
+ * **command-dispatcher:** enhance command acknowledgment handling ([170f9a7](https://github.com/babelcloud/visionclaw/commit/170f9a7aedbd5850e6f81606c6492c22d0922f53))
27
+ * **admin:** enhance notify command handling and update documentation ([27b028c](https://github.com/babelcloud/visionclaw/commit/27b028cc20f9e6c035c78a7686944a68ea60badc))
28
+ * **gemini:** add video/music generation support and update documentation ([30dc825](https://github.com/babelcloud/visionclaw/commit/30dc825bc3b57cc20e4a30df8e45862ccd9665b7))
29
+ * **gemini:** unified tool with dynamic model discovery ([0f0a791](https://github.com/babelcloud/visionclaw/commit/0f0a791a10c4f7063a94c40d02460c4f885d1592))
30
+ * **gemini:** add music generation via Lyria 3 ([335bd24](https://github.com/babelcloud/visionclaw/commit/335bd241362f3d99016ab7d6c11b09ffd8e8fedb))
31
+ * **wallpaper:** redesign wallpaper with system info, colon alignment, and stage colors ([c473d82](https://github.com/babelcloud/visionclaw/commit/c473d829e17691de38df062acf1c3bcc299c987f))
32
+ * implement compaction timeout and improve transcript trimming ([356c4d6](https://github.com/babelcloud/visionclaw/commit/356c4d65d50dacb8372e3f665d3f0bf23b6e7cb3))
33
+
34
+
1
35
  ## [0.1.181](https://github.com/babelcloud/visionclaw/compare/v0.1.180...v0.1.181) (2026-04-11)
2
36
 
3
37
  ### Features
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../../src/agent/providers/openai/tools.ts"],"names":[],"mappings":"AACA,OAAO,EAA2G,KAAK,SAAS,EAAE,KAAK,IAAI,EAAE,MAAM,gBAAgB,CAAC;AA4BpK,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAS/D,KAAK,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAiKrD,wBAAgB,4BAA4B,IAAI,IAAI,CAMnD;AAED,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GACnD,SAAS,EAAE,CA2Bb;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,cAAc,EAAE,cAAc,CAAC;CAChC,GAAG,IAAI,EAAE,CA6DT"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../../src/agent/providers/openai/tools.ts"],"names":[],"mappings":"AACA,OAAO,EAA2G,KAAK,SAAS,EAAE,KAAK,IAAI,EAAE,MAAM,gBAAgB,CAAC;AA6BpK,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAS/D,KAAK,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAiKrD,wBAAgB,4BAA4B,IAAI,IAAI,CAMnD;AAED,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GACnD,SAAS,EAAE,CA2Bb;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,cAAc,EAAE,cAAc,CAAC;CAChC,GAAG,IAAI,EAAE,CAiET"}
@@ -15,6 +15,7 @@ import { upgradeTool } from "../../../tools/upgrade.js";
15
15
  import { waitTool } from "../../../tools/wait.js";
16
16
  import { webFetchTool } from "../../../tools/web-fetch.js";
17
17
  import { androidUseTapTool, androidUseSwipeTool, androidUseDragTool, androidUseScrollTool, androidUseTypeTool, androidUseKeyTool, androidUseScreenshotTool, androidUseWakeTool, androidUseLaunchTool, } from "../../../tools/android-use.js";
18
+ import { stockDataTool } from "../../../tools/stock-data.js";
18
19
  import { captureScreen, click, doubleClick, drag, getDisplaySize, moveTo, pressKey, rightClick, scrollBy, typeText } from "../../../tools/desktop-executor.js";
19
20
  function toOpenAIParameterSchema(schema) {
20
21
  let current = schema;
@@ -181,6 +182,7 @@ export function createOpenAITools(options) {
181
182
  if (options.androidUse) {
182
183
  tools.push(adaptClaudeTool(androidUseTapTool), adaptClaudeTool(androidUseSwipeTool), adaptClaudeTool(androidUseDragTool), adaptClaudeTool(androidUseScrollTool), adaptClaudeTool(androidUseTypeTool), adaptClaudeTool(androidUseKeyTool), adaptClaudeTool(androidUseScreenshotTool), adaptClaudeTool(androidUseWakeTool), adaptClaudeTool(androidUseLaunchTool));
183
184
  }
185
+ tools.push(adaptClaudeTool(stockDataTool));
184
186
  }
185
187
  if (options.runtimeSurface.nativeTools.kind === "openai-hosted"
186
188
  && options.runtimeSurface.nativeTools.hostedTools.includes("web_search")) {
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../src/agent/providers/openai/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../src/agent/providers/openai/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Unified billing handler for both subscription (`payment_required`) and
3
+ * pay-as-you-go (`request_payment`) heartbeat commands.
4
+ *
5
+ * This is deterministic bot code — the LLM agent is never involved in
6
+ * payment flows. The handler:
7
+ *
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
13
+ */
14
+ import type { CommandHandler } from "../agent/command-dispatcher.js";
15
+ import type { ChannelManager } from "../channels/manager.js";
16
+ import type { BillingPlanSelectedEvent, BillingPaygSelectedEvent } from "../channels/interface.js";
17
+ import type { OnboardingServiceClient } from "../onboarding/onboarding-service-client.js";
18
+ /**
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.
22
+ */
23
+ export declare class BillingHandler {
24
+ private readonly channelManager;
25
+ private readonly ownerChatId;
26
+ private readonly serviceClient;
27
+ constructor(channelManager: ChannelManager, ownerChatId: number, serviceClient: OnboardingServiceClient | null);
28
+ /**
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.
41
+ */
42
+ readonly handleRequestPayment: CommandHandler;
43
+ /**
44
+ * Handle a `billing_payg_selected` event (user tapped an amount button).
45
+ * Creates a one-time Stripe Payment Link and sends the URL.
46
+ */
47
+ handlePaygSelected(event: BillingPaygSelectedEvent): Promise<void>;
48
+ /**
49
+ * Send a Telegram prompt (plan picker or amount picker) and return
50
+ * a command result.
51
+ */
52
+ private sendPrompt;
53
+ /**
54
+ * Create a Stripe checkout / payment link with retries, then send
55
+ * the resulting URL to the owner via Telegram.
56
+ */
57
+ private createAndSendLink;
58
+ }
59
+ //# sourceMappingURL=billing-handler.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Unified billing handler for both subscription (`payment_required`) and
3
+ * pay-as-you-go (`request_payment`) heartbeat commands.
4
+ *
5
+ * This is deterministic bot code — the LLM agent is never involved in
6
+ * payment flows. The handler:
7
+ *
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
13
+ */
14
+ import { logger } from "../logger.js";
15
+ const MAX_RETRIES = 2;
16
+ const RETRY_DELAY_MS = 2_000;
17
+ function sleep(ms) {
18
+ return new Promise((resolve) => setTimeout(resolve, ms));
19
+ }
20
+ /**
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.
24
+ */
25
+ export class BillingHandler {
26
+ channelManager;
27
+ ownerChatId;
28
+ serviceClient;
29
+ constructor(channelManager, ownerChatId, serviceClient) {
30
+ this.channelManager = channelManager;
31
+ this.ownerChatId = ownerChatId;
32
+ this.serviceClient = serviceClient;
33
+ }
34
+ // ── Subscription flow ──────────────────────────────────────────────
35
+ /**
36
+ * CommandHandler for the `payment_required` heartbeat command.
37
+ * Parses the payload and sends a plan selection prompt.
38
+ */
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
+ };
58
+ /**
59
+ * Handle a `billing_plan_selected` event (user tapped a plan button).
60
+ * Creates a Stripe Checkout Session and sends the link.
61
+ */
62
+ async handlePlanSelected(event) {
63
+ await this.createAndSendLink(event.chatId, "billing", event.planName, (client) => client.createCheckoutSession(event.planId, event.chatId));
64
+ }
65
+ // ── PAYG flow ──────────────────────────────────────────────────────
66
+ /**
67
+ * CommandHandler for the `request_payment` heartbeat command.
68
+ * Parses the payload and sends an amount selection prompt.
69
+ */
70
+ handleRequestPayment = async (_commandId, payload) => {
71
+ 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
+ }
80
+ const typedPayload = {
81
+ reason: typeof raw.reason === "string" ? raw.reason : undefined,
82
+ amounts,
83
+ };
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) {
100
+ try {
101
+ await send();
102
+ return {
103
+ status: "completed",
104
+ result: JSON.stringify({ message: `${tag} prompt sent to owner` }),
105
+ };
106
+ }
107
+ catch (err) {
108
+ const errMsg = err instanceof Error ? err.message : String(err);
109
+ logger.err(`[${tag}] Failed to send prompt: ${errMsg}`);
110
+ return {
111
+ status: "failed",
112
+ result: JSON.stringify({ error: errMsg }),
113
+ };
114
+ }
115
+ }
116
+ /**
117
+ * Create a Stripe checkout / payment link with retries, then send
118
+ * the resulting URL to the owner via Telegram.
119
+ */
120
+ async createAndSendLink(chatId, tag, linkLabel, createLink) {
121
+ 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.");
124
+ return;
125
+ }
126
+ const client = this.serviceClient;
127
+ logger.system(`[${tag}] Selection received from chat ${chatId}`);
128
+ for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
129
+ try {
130
+ const result = await createLink(client);
131
+ if (result?.checkoutUrl) {
132
+ await this.channelManager.sendTelegramCheckoutLink(chatId, linkLabel, result.checkoutUrl);
133
+ logger.system(`[${tag}] Payment link sent to chat ${chatId}`);
134
+ return;
135
+ }
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...");
139
+ await sleep(RETRY_DELAY_MS);
140
+ }
141
+ }
142
+ catch (err) {
143
+ 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) {
146
+ await sleep(RETRY_DELAY_MS);
147
+ }
148
+ }
149
+ }
150
+ logger.err(`[${tag}] All payment link attempts failed`);
151
+ await this.channelManager.sendMessage("telegram", String(chatId), "Payment setup failed. Please try again later.");
152
+ }
153
+ }
154
+ //# sourceMappingURL=billing-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing-handler.js","sourceRoot":"","sources":["../../src/billing/billing-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * PAYG (Pay as You Go) command handler for the `request_payment` heartbeat command.
3
+ *
4
+ * This is deterministic bot code u2014 the LLM agent is never involved in
5
+ * payment flows. The handler:
6
+ *
7
+ * 1. Receives `request_payment` from the backend via heartbeat (includes amounts)
8
+ * 2. Sends an amount selection prompt (inline keyboard) to the owner via Telegram
9
+ * 3. Listens for `billing_payg_selected` events from the Telegram adapter
10
+ * 4. Calls the backend to create a Stripe Payment Link (one-time)
11
+ * 5. Sends the payment URL back to the owner as a URL button
12
+ */
13
+ import type { CommandHandler } from "../agent/command-dispatcher.js";
14
+ import type { ChannelManager } from "../channels/manager.js";
15
+ import type { BillingPaygSelectedEvent } from "../channels/interface.js";
16
+ import type { OnboardingServiceClient } from "../onboarding/onboarding-service-client.js";
17
+ export interface PaygHandler extends CommandHandler {
18
+ /** Handle a billing_payg_selected event (user tapped an amount button). */
19
+ handleAmountSelected: (event: BillingPaygSelectedEvent) => Promise<void>;
20
+ }
21
+ /**
22
+ * Create a CommandHandler for the "request_payment" heartbeat command.
23
+ *
24
+ * @param channelManager - To send PAYG prompts and listen for amount selection events
25
+ * @param ownerChatId - The owner's Telegram chat ID
26
+ * @param serviceClient - Onboarding service client for creating payment links
27
+ */
28
+ export declare function createPaygHandler(channelManager: ChannelManager, ownerChatId: number, serviceClient: OnboardingServiceClient | null): PaygHandler;
29
+ //# sourceMappingURL=payg-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payg-handler.d.ts","sourceRoot":"","sources":["../../src/billing/payg-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAW1F,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,2EAA2E;IAC3E,oBAAoB,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,uBAAuB,GAAG,IAAI,GAC5C,WAAW,CAmGb"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * PAYG (Pay as You Go) command handler for the `request_payment` heartbeat command.
3
+ *
4
+ * This is deterministic bot code u2014 the LLM agent is never involved in
5
+ * payment flows. The handler:
6
+ *
7
+ * 1. Receives `request_payment` from the backend via heartbeat (includes amounts)
8
+ * 2. Sends an amount selection prompt (inline keyboard) to the owner via Telegram
9
+ * 3. Listens for `billing_payg_selected` events from the Telegram adapter
10
+ * 4. Calls the backend to create a Stripe Payment Link (one-time)
11
+ * 5. Sends the payment URL back to the owner as a URL button
12
+ */
13
+ import { logger } from "../logger.js";
14
+ const MAX_RETRIES = 2;
15
+ const RETRY_DELAY_MS = 2_000;
16
+ function sleep(ms) {
17
+ return new Promise((resolve) => setTimeout(resolve, ms));
18
+ }
19
+ /**
20
+ * Create a CommandHandler for the "request_payment" heartbeat command.
21
+ *
22
+ * @param channelManager - To send PAYG prompts and listen for amount selection events
23
+ * @param ownerChatId - The owner's Telegram chat ID
24
+ * @param serviceClient - Onboarding service client for creating payment links
25
+ */
26
+ export function createPaygHandler(channelManager, ownerChatId, serviceClient) {
27
+ async function handleAmountSelected(event) {
28
+ if (!serviceClient) {
29
+ logger.warn("[payg] No service client u2014 cannot create payment link");
30
+ await channelManager.sendMessage("telegram", String(event.chatId), "Payment is not configured. Please contact support.");
31
+ return;
32
+ }
33
+ logger.system(`[payg] Amount selected: $${event.amount} by chat ${event.chatId}`);
34
+ for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
35
+ try {
36
+ const result = await serviceClient.createPaymentLink(event.amount, event.chatId);
37
+ if (result?.checkoutUrl) {
38
+ await channelManager.sendTelegramCheckoutLink(event.chatId, `$${event.amount} Top-Up`, result.checkoutUrl);
39
+ logger.system(`[payg] Payment link sent to chat ${event.chatId} for $${event.amount}`);
40
+ return;
41
+ }
42
+ if (attempt < MAX_RETRIES) {
43
+ logger.warn(`[payg] Payment link attempt ${attempt + 1} failed, retrying...`);
44
+ await channelManager.sendMessage("telegram", String(event.chatId), "Payment setup failed, retrying...");
45
+ await sleep(RETRY_DELAY_MS);
46
+ }
47
+ }
48
+ catch (err) {
49
+ const errMsg = err instanceof Error ? err.message : String(err);
50
+ logger.err(`[payg] Payment link attempt ${attempt + 1} error: ${errMsg}`);
51
+ if (attempt < MAX_RETRIES) {
52
+ await sleep(RETRY_DELAY_MS);
53
+ }
54
+ }
55
+ }
56
+ logger.err("[payg] All payment link attempts failed");
57
+ await channelManager.sendMessage("telegram", String(event.chatId), "Payment setup failed. Please try again later.");
58
+ }
59
+ const handler = Object.assign(async (_commandId, payload) => {
60
+ const raw = (payload ?? {});
61
+ const amounts = Array.isArray(raw.amounts) ? raw.amounts : [];
62
+ if (amounts.length === 0) {
63
+ logger.warn("[payg] request_payment received with no amounts");
64
+ return {
65
+ status: "failed",
66
+ result: JSON.stringify({ error: "No amounts in payload" }),
67
+ };
68
+ }
69
+ const typedPayload = {
70
+ reason: typeof raw.reason === "string" ? raw.reason : undefined,
71
+ amounts,
72
+ };
73
+ logger.system(`[payg] Request payment received with amounts: ${typedPayload.amounts.join(", ")}`);
74
+ try {
75
+ await channelManager.sendTelegramPaygPrompt(ownerChatId, typedPayload);
76
+ return {
77
+ status: "completed",
78
+ result: JSON.stringify({ message: "PAYG prompt sent to owner" }),
79
+ };
80
+ }
81
+ catch (err) {
82
+ const errMsg = err instanceof Error ? err.message : String(err);
83
+ logger.err(`[payg] Failed to send PAYG prompt: ${errMsg}`);
84
+ return {
85
+ status: "failed",
86
+ result: JSON.stringify({ error: errMsg }),
87
+ };
88
+ }
89
+ }, { handleAmountSelected });
90
+ return handler;
91
+ }
92
+ //# sourceMappingURL=payg-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payg-handler.js","sourceRoot":"","sources":["../../src/billing/payg-handler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAqCpE;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAyCxC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAsCpE;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CA0CxC"}
@@ -16,6 +16,7 @@ import { transcriptSearchTool, transcriptDetailTool } from "./transcript-memory.
16
16
  import { transcribeAudioTool } from "./transcribe-audio.js";
17
17
  import { computerUseClickTool, computerUseMoveTool, computerUseScrollTool, computerUseDragTool, computerUseTypeTool, computerUseKeyTool, computerUseScreenshotTool, } from "./computer-use.js";
18
18
  import { androidUseTapTool, androidUseSwipeTool, androidUseDragTool, androidUseScrollTool, androidUseTypeTool, androidUseKeyTool, androidUseScreenshotTool, androidUseWakeTool, androidUseLaunchTool, } from "./android-use.js";
19
+ import { stockDataTool } from "./stock-data.js";
19
20
  /**
20
21
  * Create the in-process MCP server that provides all
21
22
  * VisionClaw system tools to the Claude Agent SDK session.
@@ -64,6 +65,7 @@ export function createToolServer(options) {
64
65
  transcriptDetailTool,
65
66
  transcribeAudioTool,
66
67
  ...(options?.dualSession !== false ? [switchSessionTool] : []),
68
+ stockDataTool,
67
69
  ],
68
70
  });
69
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAGhC;IACC,OAAO,kBAAkB,CAAC;QACxB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE;YACL,QAAQ;YACR,cAAc;YACd,UAAU;YACV,gBAAgB;YAChB,WAAW;YACX,kBAAkB;YAClB,eAAe;YACf,eAAe;YACf,UAAU;YACV,oBAAoB;YACpB,mBAAmB;YACnB,qBAAqB;YACrB,mBAAmB;YACnB,mBAAmB;YACnB,kBAAkB;YAClB,yBAAyB;YACzB,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;gBACxB,iBAAiB;gBACjB,mBAAmB;gBACnB,kBAAkB;gBAClB,oBAAoB;gBACpB,kBAAkB;gBAClB,iBAAiB;gBACjB,wBAAwB;gBACxB,kBAAkB;gBAClB,oBAAoB;aACrB,CAAC,CAAC,CAAC,EAAE,CAAC;YACP,oBAAoB;YACpB,cAAc;YACd,UAAU;YACV,oBAAoB;YACpB,oBAAoB;YACpB,mBAAmB;YACnB,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAGhC;IACC,OAAO,kBAAkB,CAAC;QACxB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE;YACL,QAAQ;YACR,cAAc;YACd,UAAU;YACV,gBAAgB;YAChB,WAAW;YACX,kBAAkB;YAClB,eAAe;YACf,eAAe;YACf,UAAU;YACV,oBAAoB;YACpB,mBAAmB;YACnB,qBAAqB;YACrB,mBAAmB;YACnB,mBAAmB;YACnB,kBAAkB;YAClB,yBAAyB;YACzB,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;gBACxB,iBAAiB;gBACjB,mBAAmB;gBACnB,kBAAkB;gBAClB,oBAAoB;gBACpB,kBAAkB;gBAClB,iBAAiB;gBACjB,wBAAwB;gBACxB,kBAAkB;gBAClB,oBAAoB;aACrB,CAAC,CAAC,CAAC,EAAE,CAAC;YACP,oBAAoB;YACpB,cAAc;YACd,UAAU;YACV,oBAAoB;YACpB,oBAAoB;YACpB,mBAAmB;YACnB,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,aAAa;SACd;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Unified stock data query MCP tool.
3
+ * Provides real-time quotes, historical data, financials, and search
4
+ * for A-shares, HK, and US stocks.
5
+ *
6
+ * Uses stock-sdk (Tencent/EastMoney data) for quotes, history, and search,
7
+ * and yahoo-finance2 for financials (fundamental data).
8
+ * No Python bridge required — pure TypeScript.
9
+ */
10
+ import { z } from "zod";
11
+ export declare const stockDataTool: import("@anthropic-ai/claude-agent-sdk").SdkMcpToolDefinition<{
12
+ action: z.ZodEnum<{
13
+ search: "search";
14
+ quote: "quote";
15
+ financials: "financials";
16
+ history: "history";
17
+ }>;
18
+ symbols: z.ZodOptional<z.ZodString>;
19
+ symbol: z.ZodOptional<z.ZodString>;
20
+ market: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
21
+ auto: "auto";
22
+ all: "all";
23
+ A: "A";
24
+ HK: "HK";
25
+ US: "US";
26
+ }>>>;
27
+ period: z.ZodOptional<z.ZodEnum<{
28
+ max: "max";
29
+ "1d": "1d";
30
+ "5d": "5d";
31
+ "1mo": "1mo";
32
+ "3mo": "3mo";
33
+ "6mo": "6mo";
34
+ "1y": "1y";
35
+ "2y": "2y";
36
+ "5y": "5y";
37
+ }>>;
38
+ interval: z.ZodOptional<z.ZodEnum<{
39
+ daily: "daily";
40
+ weekly: "weekly";
41
+ monthly: "monthly";
42
+ }>>;
43
+ start_date: z.ZodOptional<z.ZodString>;
44
+ end_date: z.ZodOptional<z.ZodString>;
45
+ report_type: z.ZodOptional<z.ZodEnum<{
46
+ summary: "summary";
47
+ income: "income";
48
+ balance: "balance";
49
+ cashflow: "cashflow";
50
+ }>>;
51
+ keyword: z.ZodOptional<z.ZodString>;
52
+ limit: z.ZodOptional<z.ZodNumber>;
53
+ }>;
54
+ //# sourceMappingURL=stock-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stock-data.d.ts","sourceRoot":"","sources":["../../src/tools/stock-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA+jBxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkIzB,CAAC"}