visionclaw 0.1.178-beta.1 → 0.1.178-beta.2
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/dist/agent/heartbeat-manager.d.ts +4 -1
- package/dist/agent/heartbeat-manager.d.ts.map +1 -1
- package/dist/agent/heartbeat-manager.js +14 -0
- package/dist/agent/heartbeat-manager.js.map +1 -1
- package/dist/agent/subscription-gate.d.ts +1 -1
- package/dist/agent/subscription-gate.d.ts.map +1 -1
- package/dist/agent/subscription-gate.js +20 -8
- package/dist/agent/subscription-gate.js.map +1 -1
- package/dist/onboarding/onboarding-service-client.d.ts +8 -0
- package/dist/onboarding/onboarding-service-client.d.ts.map +1 -1
- package/dist/onboarding/onboarding-service-client.js.map +1 -1
- package/dist-agent/bundle.cjs +29 -7
- package/package.json +1 -1
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import type { VisionClawConfig } from "../config/types.js";
|
|
9
9
|
import type { ChannelManager } from "../channels/manager.js";
|
|
10
|
-
import { type SubscriptionStatus } from "../onboarding/onboarding-service-client.js";
|
|
10
|
+
import { type HeartbeatBillingPlan, type SubscriptionStatus } from "../onboarding/onboarding-service-client.js";
|
|
11
11
|
import { CommandDispatcher } from "./command-dispatcher.js";
|
|
12
12
|
import { type PendingUpgradeInfo } from "../config/index.js";
|
|
13
13
|
export declare class HeartbeatManager {
|
|
@@ -17,6 +17,7 @@ export declare class HeartbeatManager {
|
|
|
17
17
|
private readonly config;
|
|
18
18
|
private channelManager;
|
|
19
19
|
private _lastSubscriptionStatus;
|
|
20
|
+
private _lastBillingPlans;
|
|
20
21
|
constructor(config: VisionClawConfig);
|
|
21
22
|
/**
|
|
22
23
|
* Initialize the heartbeat client and validate the API key.
|
|
@@ -28,6 +29,8 @@ export declare class HeartbeatManager {
|
|
|
28
29
|
get enabled(): boolean;
|
|
29
30
|
/** The subscription status from the most recent heartbeat response. */
|
|
30
31
|
get lastSubscriptionStatus(): SubscriptionStatus;
|
|
32
|
+
/** Billing plans from the most recent heartbeat response (populated when expired). */
|
|
33
|
+
get lastBillingPlans(): HeartbeatBillingPlan[];
|
|
31
34
|
/**
|
|
32
35
|
* Send a heartbeat at the start of each wake cycle.
|
|
33
36
|
* Dispatches any pending commands from the server and applies shared keys.
|
|
@@ -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,
|
|
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;AAyCnF,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;gBAE3C,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;IA2EhB,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;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC1C;;;OAGG;IACG,4BAA4B,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAwBjE;;;OAGG;IACH,iBAAiB,IAAI,IAAI;IAkBzB;;;OAGG;IACH,gBAAgB,IAAI,IAAI;CAmBzB"}
|
|
@@ -42,6 +42,7 @@ export class HeartbeatManager {
|
|
|
42
42
|
config;
|
|
43
43
|
channelManager = null;
|
|
44
44
|
_lastSubscriptionStatus = "skip";
|
|
45
|
+
_lastBillingPlans = [];
|
|
45
46
|
constructor(config) {
|
|
46
47
|
this.config = config;
|
|
47
48
|
this.commandDispatcher = new CommandDispatcher();
|
|
@@ -89,6 +90,9 @@ export class HeartbeatManager {
|
|
|
89
90
|
if (startupResp?.subscriptionStatus) {
|
|
90
91
|
this._lastSubscriptionStatus = startupResp.subscriptionStatus;
|
|
91
92
|
}
|
|
93
|
+
if (startupResp?.billingPlans) {
|
|
94
|
+
this._lastBillingPlans = startupResp.billingPlans;
|
|
95
|
+
}
|
|
92
96
|
if (applySharedKeysFromHeartbeat(this.config, this.channelManager, startupResp?.sharedKeys)) {
|
|
93
97
|
logger.debug("Shared keys applied from startup heartbeat");
|
|
94
98
|
}
|
|
@@ -114,6 +118,10 @@ export class HeartbeatManager {
|
|
|
114
118
|
get lastSubscriptionStatus() {
|
|
115
119
|
return this._lastSubscriptionStatus;
|
|
116
120
|
}
|
|
121
|
+
/** Billing plans from the most recent heartbeat response (populated when expired). */
|
|
122
|
+
get lastBillingPlans() {
|
|
123
|
+
return this._lastBillingPlans;
|
|
124
|
+
}
|
|
117
125
|
/**
|
|
118
126
|
* Send a heartbeat at the start of each wake cycle.
|
|
119
127
|
* Dispatches any pending commands from the server and applies shared keys.
|
|
@@ -135,6 +143,9 @@ export class HeartbeatManager {
|
|
|
135
143
|
if (resp?.subscriptionStatus) {
|
|
136
144
|
this._lastSubscriptionStatus = resp.subscriptionStatus;
|
|
137
145
|
}
|
|
146
|
+
if (resp?.billingPlans) {
|
|
147
|
+
this._lastBillingPlans = resp.billingPlans;
|
|
148
|
+
}
|
|
138
149
|
if (resp?.pendingCommands && resp.pendingCommands.length > 0) {
|
|
139
150
|
this.commandDispatcher.dispatch(resp.pendingCommands);
|
|
140
151
|
}
|
|
@@ -167,6 +178,9 @@ export class HeartbeatManager {
|
|
|
167
178
|
if (resp?.subscriptionStatus) {
|
|
168
179
|
this._lastSubscriptionStatus = resp.subscriptionStatus;
|
|
169
180
|
}
|
|
181
|
+
if (resp?.billingPlans) {
|
|
182
|
+
this._lastBillingPlans = resp.billingPlans;
|
|
183
|
+
}
|
|
170
184
|
}
|
|
171
185
|
catch {
|
|
172
186
|
// best-effort — keep last known status
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat-manager.js","sourceRoot":"","sources":["../../src/agent/heartbeat-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EACL,uBAAuB,
|
|
1
|
+
{"version":3,"file":"heartbeat-manager.js","sourceRoot":"","sources":["../../src/agent/heartbeat-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Subscription gate — blocks the agent when the subscription has expired.
|
|
3
3
|
*
|
|
4
4
|
* Follows the same pattern as onboarding-gate.ts:
|
|
5
|
-
* 1.
|
|
5
|
+
* 1. Show the payment prompt (inline keyboard with plans) to the owner
|
|
6
6
|
* 2. Poll heartbeat every 10s (no Claude API calls)
|
|
7
7
|
* 3. Once status is "active" or "skip", return so the agent can resume
|
|
8
8
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-gate.d.ts","sourceRoot":"","sources":["../../src/agent/subscription-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAM/D;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,gBAAgB,EACzB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"subscription-gate.d.ts","sourceRoot":"","sources":["../../src/agent/subscription-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAM/D;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,gBAAgB,EACzB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA+Df"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Subscription gate — blocks the agent when the subscription has expired.
|
|
3
3
|
*
|
|
4
4
|
* Follows the same pattern as onboarding-gate.ts:
|
|
5
|
-
* 1.
|
|
5
|
+
* 1. Show the payment prompt (inline keyboard with plans) to the owner
|
|
6
6
|
* 2. Poll heartbeat every 10s (no Claude API calls)
|
|
7
7
|
* 3. Once status is "active" or "skip", return so the agent can resume
|
|
8
8
|
*
|
|
@@ -21,15 +21,27 @@ const GATE_POLL_INTERVAL_MS = 10_000;
|
|
|
21
21
|
export async function runSubscriptionGate(_config, channelManager, heartbeat) {
|
|
22
22
|
const ownerConfig = loadOwnerConfig();
|
|
23
23
|
logger.system("Subscription expired — entering subscription gate (no Claude API calls)");
|
|
24
|
-
// Notify owner
|
|
25
|
-
const
|
|
26
|
-
"The agent is paused and will resume automatically once your subscription is active.";
|
|
24
|
+
// Notify owner with payment prompt (inline keyboard) or plain text fallback
|
|
25
|
+
const plans = heartbeat.lastBillingPlans;
|
|
27
26
|
try {
|
|
28
|
-
if (ownerConfig.telegramChatId) {
|
|
29
|
-
|
|
27
|
+
if (plans.length > 0 && ownerConfig.telegramChatId) {
|
|
28
|
+
// Send the payment inline keyboard so the owner can select a plan directly
|
|
29
|
+
await channelManager.sendTelegramPaymentPrompt(ownerConfig.telegramChatId, {
|
|
30
|
+
message: "Your subscription has expired. Please select a plan to continue using the agent. " +
|
|
31
|
+
"The agent is paused and will resume automatically once your subscription is active.",
|
|
32
|
+
plans,
|
|
33
|
+
});
|
|
30
34
|
}
|
|
31
|
-
else
|
|
32
|
-
|
|
35
|
+
else {
|
|
36
|
+
// Fallback: plain text if no plans available or no Telegram
|
|
37
|
+
const expiredMsg = "Your subscription has expired. Please renew to continue using the agent. " +
|
|
38
|
+
"The agent is paused and will resume automatically once your subscription is active.";
|
|
39
|
+
if (ownerConfig.telegramChatId) {
|
|
40
|
+
await channelManager.sendMessage("telegram", String(ownerConfig.telegramChatId), expiredMsg);
|
|
41
|
+
}
|
|
42
|
+
else if (ownerConfig.ownerEmail) {
|
|
43
|
+
await channelManager.sendMessage("gmail", ownerConfig.ownerEmail, expiredMsg);
|
|
44
|
+
}
|
|
33
45
|
}
|
|
34
46
|
}
|
|
35
47
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-gate.js","sourceRoot":"","sources":["../../src/agent/subscription-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAErC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAyB,EACzB,cAA8B,EAC9B,SAA2B;IAE3B,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IAEtC,MAAM,CAAC,MAAM,CAAC,yEAAyE,CAAC,CAAC;IAEzF,
|
|
1
|
+
{"version":3,"file":"subscription-gate.js","sourceRoot":"","sources":["../../src/agent/subscription-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAErC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAyB,EACzB,cAA8B,EAC9B,SAA2B;IAE3B,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IAEtC,MAAM,CAAC,MAAM,CAAC,yEAAyE,CAAC,CAAC;IAEzF,4EAA4E;IAC5E,MAAM,KAAK,GAAG,SAAS,CAAC,gBAAgB,CAAC;IAEzC,IAAI,CAAC;QACH,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;YACnD,2EAA2E;YAC3E,MAAM,cAAc,CAAC,yBAAyB,CAAC,WAAW,CAAC,cAAc,EAAE;gBACzE,OAAO,EACL,mFAAmF;oBACnF,qFAAqF;gBACvF,KAAK;aACN,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,4DAA4D;YAC5D,MAAM,UAAU,GACd,2EAA2E;gBAC3E,qFAAqF,CAAC;YAExF,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;gBAC/B,MAAM,cAAc,CAAC,WAAW,CAC9B,UAAU,EACV,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,EAClC,UAAU,CACX,CAAC;YACJ,CAAC;iBAAM,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;gBAClC,MAAM,cAAc,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IAC1E,CAAC;IAED,yDAAyD;IACzD,IAAI,MAAM,GAAG,SAAS,CAAC,sBAAsB,CAAC;IAC9C,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAC3E,MAAM,GAAG,MAAM,SAAS,CAAC,4BAA4B,EAAE,CAAC;QACxD,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM;QAChC,MAAM,CAAC,KAAK,CAAC,sDAAsD,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC;IACtG,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,kDAAkD,CAAC,CAAC;IAElE,mCAAmC;IACnC,MAAM,UAAU,GAAG,kDAAkD,CAAC;IACtE,IAAI,CAAC;QACH,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;YAC/B,MAAM,cAAc,CAAC,WAAW,CAC9B,UAAU,EACV,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,EAClC,UAAU,CACX,CAAC;QACJ,CAAC;aAAM,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,cAAc,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC"}
|
|
@@ -4,6 +4,13 @@ export interface SharedKeys {
|
|
|
4
4
|
tosAccessKeySecret?: string;
|
|
5
5
|
}
|
|
6
6
|
export type SubscriptionStatus = "active" | "expired" | "skip";
|
|
7
|
+
export interface HeartbeatBillingPlan {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
amount: number;
|
|
11
|
+
currency: string;
|
|
12
|
+
description: string;
|
|
13
|
+
}
|
|
7
14
|
export interface HeartbeatResponse {
|
|
8
15
|
ownerEmail: string | null;
|
|
9
16
|
ownerName: string | null;
|
|
@@ -12,6 +19,7 @@ export interface HeartbeatResponse {
|
|
|
12
19
|
pendingCommands?: PendingCommand[];
|
|
13
20
|
sharedKeys?: SharedKeys;
|
|
14
21
|
subscriptionStatus?: SubscriptionStatus;
|
|
22
|
+
billingPlans?: HeartbeatBillingPlan[];
|
|
15
23
|
}
|
|
16
24
|
export interface PendingCommand {
|
|
17
25
|
id: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-service-client.d.ts","sourceRoot":"","sources":["../../src/onboarding/onboarding-service-client.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,UAAU;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"onboarding-service-client.d.ts","sourceRoot":"","sources":["../../src/onboarding/onboarding-service-client.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,UAAU;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAE/D,MAAM,WAAW,oBAAoB;IACnC,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,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,YAAY,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED;;;;GAIG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMxD,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAyB9E;;;OAGG;IACG,eAAe,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAuBpF;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAqB9B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBtC;;;OAGG;IACG,qBAAqB,CACzB,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IA4BpC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAiBtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-service-client.js","sourceRoot":"","sources":["../../src/onboarding/onboarding-service-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,0FAA0F;AAC1F,SAAS,aAAa,CAAC,GAAY;IACjC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IAChD,yFAAyF;IACzF,MAAM,KAAK,GAAI,GAAmC,CAAC,KAAK,CAAC;IACzD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,GAAG,GAAG,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC;
|
|
1
|
+
{"version":3,"file":"onboarding-service-client.js","sourceRoot":"","sources":["../../src/onboarding/onboarding-service-client.ts"],"names":[],"mappings":"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"}
|
package/dist-agent/bundle.cjs
CHANGED
|
@@ -20311,7 +20311,7 @@ var require_prompts3 = __commonJS({
|
|
|
20311
20311
|
|
|
20312
20312
|
// dist/utils/version-check.js
|
|
20313
20313
|
function isBundled() {
|
|
20314
|
-
const v10 = "0.1.178-beta.
|
|
20314
|
+
const v10 = "0.1.178-beta.2";
|
|
20315
20315
|
return typeof v10 === "string" && v10 !== "undefined";
|
|
20316
20316
|
}
|
|
20317
20317
|
function getPackageRoot() {
|
|
@@ -20328,7 +20328,7 @@ function getInstallationInfo() {
|
|
|
20328
20328
|
};
|
|
20329
20329
|
}
|
|
20330
20330
|
function getCurrentVersion() {
|
|
20331
|
-
const bundledVersion = "0.1.178-beta.
|
|
20331
|
+
const bundledVersion = "0.1.178-beta.2";
|
|
20332
20332
|
if (bundledVersion && bundledVersion !== "undefined") {
|
|
20333
20333
|
return bundledVersion;
|
|
20334
20334
|
}
|
|
@@ -980928,12 +980928,20 @@ var GATE_POLL_INTERVAL_MS = 1e4;
|
|
|
980928
980928
|
async function runSubscriptionGate(_config2, channelManager, heartbeat) {
|
|
980929
980929
|
const ownerConfig = loadOwnerConfig();
|
|
980930
980930
|
logger.system("Subscription expired \u2014 entering subscription gate (no Claude API calls)");
|
|
980931
|
-
const
|
|
980931
|
+
const plans = heartbeat.lastBillingPlans;
|
|
980932
980932
|
try {
|
|
980933
|
-
if (ownerConfig.telegramChatId) {
|
|
980934
|
-
await channelManager.
|
|
980935
|
-
|
|
980936
|
-
|
|
980933
|
+
if (plans.length > 0 && ownerConfig.telegramChatId) {
|
|
980934
|
+
await channelManager.sendTelegramPaymentPrompt(ownerConfig.telegramChatId, {
|
|
980935
|
+
message: "Your subscription has expired. Please select a plan to continue using the agent. The agent is paused and will resume automatically once your subscription is active.",
|
|
980936
|
+
plans
|
|
980937
|
+
});
|
|
980938
|
+
} else {
|
|
980939
|
+
const expiredMsg = "Your subscription has expired. Please renew to continue using the agent. The agent is paused and will resume automatically once your subscription is active.";
|
|
980940
|
+
if (ownerConfig.telegramChatId) {
|
|
980941
|
+
await channelManager.sendMessage("telegram", String(ownerConfig.telegramChatId), expiredMsg);
|
|
980942
|
+
} else if (ownerConfig.ownerEmail) {
|
|
980943
|
+
await channelManager.sendMessage("gmail", ownerConfig.ownerEmail, expiredMsg);
|
|
980944
|
+
}
|
|
980937
980945
|
}
|
|
980938
980946
|
} catch {
|
|
980939
980947
|
logger.warn("Failed to send subscription expiry notification to owner");
|
|
@@ -983034,6 +983042,7 @@ var HeartbeatManager = class {
|
|
|
983034
983042
|
config;
|
|
983035
983043
|
channelManager = null;
|
|
983036
983044
|
_lastSubscriptionStatus = "skip";
|
|
983045
|
+
_lastBillingPlans = [];
|
|
983037
983046
|
constructor(config2) {
|
|
983038
983047
|
this.config = config2;
|
|
983039
983048
|
this.commandDispatcher = new CommandDispatcher();
|
|
@@ -983079,6 +983088,9 @@ var HeartbeatManager = class {
|
|
|
983079
983088
|
if (startupResp?.subscriptionStatus) {
|
|
983080
983089
|
this._lastSubscriptionStatus = startupResp.subscriptionStatus;
|
|
983081
983090
|
}
|
|
983091
|
+
if (startupResp?.billingPlans) {
|
|
983092
|
+
this._lastBillingPlans = startupResp.billingPlans;
|
|
983093
|
+
}
|
|
983082
983094
|
if (applySharedKeysFromHeartbeat(this.config, this.channelManager, startupResp?.sharedKeys)) {
|
|
983083
983095
|
logger.debug("Shared keys applied from startup heartbeat");
|
|
983084
983096
|
}
|
|
@@ -983101,6 +983113,10 @@ var HeartbeatManager = class {
|
|
|
983101
983113
|
get lastSubscriptionStatus() {
|
|
983102
983114
|
return this._lastSubscriptionStatus;
|
|
983103
983115
|
}
|
|
983116
|
+
/** Billing plans from the most recent heartbeat response (populated when expired). */
|
|
983117
|
+
get lastBillingPlans() {
|
|
983118
|
+
return this._lastBillingPlans;
|
|
983119
|
+
}
|
|
983104
983120
|
/**
|
|
983105
983121
|
* Send a heartbeat at the start of each wake cycle.
|
|
983106
983122
|
* Dispatches any pending commands from the server and applies shared keys.
|
|
@@ -983122,6 +983138,9 @@ var HeartbeatManager = class {
|
|
|
983122
983138
|
if (resp?.subscriptionStatus) {
|
|
983123
983139
|
this._lastSubscriptionStatus = resp.subscriptionStatus;
|
|
983124
983140
|
}
|
|
983141
|
+
if (resp?.billingPlans) {
|
|
983142
|
+
this._lastBillingPlans = resp.billingPlans;
|
|
983143
|
+
}
|
|
983125
983144
|
if (resp?.pendingCommands && resp.pendingCommands.length > 0) {
|
|
983126
983145
|
this.commandDispatcher.dispatch(resp.pendingCommands);
|
|
983127
983146
|
}
|
|
@@ -983152,6 +983171,9 @@ var HeartbeatManager = class {
|
|
|
983152
983171
|
if (resp?.subscriptionStatus) {
|
|
983153
983172
|
this._lastSubscriptionStatus = resp.subscriptionStatus;
|
|
983154
983173
|
}
|
|
983174
|
+
if (resp?.billingPlans) {
|
|
983175
|
+
this._lastBillingPlans = resp.billingPlans;
|
|
983176
|
+
}
|
|
983155
983177
|
} catch {
|
|
983156
983178
|
}
|
|
983157
983179
|
return this._lastSubscriptionStatus;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "visionclaw",
|
|
3
|
-
"version": "0.1.178-beta.
|
|
3
|
+
"version": "0.1.178-beta.2",
|
|
4
4
|
"description": "A personal assistant agent that runs on your desktop, receives commands from messaging channels, and executes tasks autonomously.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|