visionclaw 0.1.177 → 0.1.178-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.
Files changed (47) hide show
  1. package/README.md +0 -77
  2. package/dist/agent/heartbeat-manager.d.ts +10 -0
  3. package/dist/agent/heartbeat-manager.d.ts.map +1 -1
  4. package/dist/agent/heartbeat-manager.js +46 -3
  5. package/dist/agent/heartbeat-manager.js.map +1 -1
  6. package/dist/agent/loop.d.ts.map +1 -1
  7. package/dist/agent/loop.js +6 -0
  8. package/dist/agent/loop.js.map +1 -1
  9. package/dist/agent/subscription-gate.d.ts +22 -0
  10. package/dist/agent/subscription-gate.d.ts.map +1 -0
  11. package/dist/agent/subscription-gate.js +62 -0
  12. package/dist/agent/subscription-gate.js.map +1 -0
  13. package/dist/billing/payment-handler.d.ts +24 -0
  14. package/dist/billing/payment-handler.d.ts.map +1 -0
  15. package/dist/billing/payment-handler.js +106 -0
  16. package/dist/billing/payment-handler.js.map +1 -0
  17. package/dist/billing/types.d.ts +33 -0
  18. package/dist/billing/types.d.ts.map +1 -0
  19. package/dist/billing/types.js +12 -0
  20. package/dist/billing/types.js.map +1 -0
  21. package/dist/channels/interface.d.ts +10 -0
  22. package/dist/channels/interface.d.ts.map +1 -1
  23. package/dist/channels/manager.d.ts +10 -0
  24. package/dist/channels/manager.d.ts.map +1 -1
  25. package/dist/channels/manager.js +24 -0
  26. package/dist/channels/manager.js.map +1 -1
  27. package/dist/channels/telegram.d.ts +20 -0
  28. package/dist/channels/telegram.d.ts.map +1 -1
  29. package/dist/channels/telegram.js +112 -1
  30. package/dist/channels/telegram.js.map +1 -1
  31. package/dist/config/index.d.ts.map +1 -1
  32. package/dist/config/index.js +0 -4
  33. package/dist/config/index.js.map +1 -1
  34. package/dist/config/types.d.ts.map +1 -1
  35. package/dist/config/types.js +2 -2
  36. package/dist/config/types.js.map +1 -1
  37. package/dist/onboarding/index.js +1 -1
  38. package/dist/onboarding/index.js.map +1 -1
  39. package/dist/onboarding/onboarding-service-client.d.ts +9 -0
  40. package/dist/onboarding/onboarding-service-client.d.ts.map +1 -1
  41. package/dist/onboarding/onboarding-service-client.js +29 -0
  42. package/dist/onboarding/onboarding-service-client.js.map +1 -1
  43. package/dist/onboarding/setup-steps.js +1 -1
  44. package/dist/onboarding/setup-steps.js.map +1 -1
  45. package/dist-agent/bundle.cjs +373 -61
  46. package/package.json +2 -4
  47. package/scripts/setup-openclaw-shim.mjs +16 -4
package/README.md CHANGED
@@ -34,7 +34,6 @@ src/
34
34
  skills/ # Skill installation logic
35
35
  config/ # Configuration management
36
36
  obs/ # Runtime observability HTTP server
37
- gui/ # Electron desktop GUI
38
37
  ```
39
38
 
40
39
  ## Prerequisites
@@ -79,25 +78,6 @@ export TOS_ENDPOINT="tos-cn-beijing.volces.com" # optional
79
78
  npx tsx scripts/upload-to-tos.ts --file ./local.bin --key uploads/local.bin
80
79
  ```
81
80
 
82
- ### Upload GUI release artifacts to TOS
83
-
84
- Use the GUI uploader to publish install artifacts as public URLs under a versioned prefix:
85
-
86
- ```bash
87
- export TOS_ACCESS_KEY_ID="..."
88
- export TOS_ACCESS_KEY_SECRET="..."
89
- export TOS_REGION="cn-beijing"
90
- export TOS_BUCKET="your-bucket"
91
- export TOS_ENDPOINT="tos-cn-beijing.volces.com"
92
-
93
- # Default file: gui/dist/VisionClaw-<gui-version>-arm64.dmg
94
- # Default key: gui/releases/v<gui-version>/<filename>
95
- pnpm upload:gui:dmg
96
-
97
- # Override file/key if needed
98
- pnpm upload:gui:dmg -- --file gui/dist/VisionClaw-0.1.0-arm64.dmg --key gui/releases/v0.1.0/VisionClaw-0.1.0-arm64.dmg
99
- ```
100
-
101
81
  The first run triggers an interactive onboarding wizard that will:
102
82
  1. Ask for your Anthropic API key
103
83
  2. Ask for a dedicated Gmail address for the agent
@@ -129,63 +109,6 @@ This is controlled via **advanced config** (not asked during onboarding):
129
109
  }
130
110
  ```
131
111
 
132
- ## GUI (Work in Progress)
133
-
134
- > **Note**: The Electron GUI is under development and not yet functional. Use the CLI for now.
135
-
136
- ```bash
137
- cd gui
138
- pnpm install
139
- pnpm start
140
- ```
141
-
142
- ## GUI Release SOP
143
-
144
- GUI shell releases are intentionally decoupled from the CLI npm release flow.
145
-
146
- - Version source of truth: `gui/package.json`
147
- - Release tag format: `gui-vX.Y.Z`
148
- - Contract: tag version must equal `gui/package.json` version (validated in CI)
149
- - Distribution channels: GitHub Releases (primary updater feed) + TOS public mirror
150
-
151
- ### Standard release flow
152
-
153
- 1. Bump GUI version in `gui/package.json`.
154
- 2. Commit and push to `main`.
155
- 3. Create and push tag:
156
- - `git tag gui-vX.Y.Z`
157
- - `git push origin gui-vX.Y.Z`
158
- 4. GitHub Actions workflow `.github/workflows/release-gui.yml` builds and publishes:
159
- - macOS artifacts (`.dmg`, `-mac.zip`, `latest-mac.yml`)
160
- - Windows artifacts (`.exe`, `-win.zip`, `latest.yml`)
161
- - GitHub Release assets
162
- - TOS mirrored public URLs
163
-
164
- ### Required release secrets
165
-
166
- - `TOS_ACCESS_KEY_ID`
167
- - `TOS_ACCESS_KEY_SECRET`
168
- - `TOS_REGION`
169
- - `TOS_BUCKET`
170
- - `TOS_ENDPOINT`
171
- - `APPLE_ID`
172
- - `APPLE_APP_SPECIFIC_PASSWORD`
173
- - `APPLE_TEAM_ID`
174
-
175
- ### macOS signing runner (Scheme A)
176
-
177
- `Release GUI` uses a self-hosted macOS runner for the `build-macos` job, so your local Apple signing certificate can stay in your own keychain.
178
-
179
- - Required runner labels: `self-hosted`, `macOS`, `ARM64`
180
- - Required local identity: `Developer ID Application` certificate in runner keychain
181
- - The workflow fails fast if signing identity or Apple notarization credentials are missing
182
-
183
- ### Rollback / hotfix guidance
184
-
185
- - Do not overwrite existing release assets in-place.
186
- - Cut a new hotfix tag (for example `gui-vX.Y.(Z+1)`) and let CI publish a new release.
187
- - Clients on auto-update pick up the next valid release metadata.
188
-
189
112
  ## Channels
190
113
 
191
114
  | Channel | Requirements | Status |
@@ -7,6 +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
11
  import { CommandDispatcher } from "./command-dispatcher.js";
11
12
  import { type PendingUpgradeInfo } from "../config/index.js";
12
13
  export declare class HeartbeatManager {
@@ -14,6 +15,8 @@ export declare class HeartbeatManager {
14
15
  readonly commandDispatcher: CommandDispatcher;
15
16
  private busyInterval;
16
17
  private readonly config;
18
+ private channelManager;
19
+ private _lastSubscriptionStatus;
17
20
  constructor(config: VisionClawConfig);
18
21
  /**
19
22
  * Initialize the heartbeat client and validate the API key.
@@ -23,11 +26,18 @@ export declare class HeartbeatManager {
23
26
  init(channelManager: ChannelManager, telegramChatId: number | undefined, justUpgraded: PendingUpgradeInfo | null): Promise<void>;
24
27
  /** Whether a heartbeat client is active. */
25
28
  get enabled(): boolean;
29
+ /** The subscription status from the most recent heartbeat response. */
30
+ get lastSubscriptionStatus(): SubscriptionStatus;
26
31
  /**
27
32
  * Send a heartbeat at the start of each wake cycle.
28
33
  * Dispatches any pending commands from the server and applies shared keys.
29
34
  */
30
35
  onWake(busy: boolean): Promise<void>;
36
+ /**
37
+ * Send a single heartbeat and return the subscription status from the response.
38
+ * Used by the subscription gate for fast-polling (10s interval).
39
+ */
40
+ sendHeartbeatForSubscription(): Promise<SubscriptionStatus>;
31
41
  /**
32
42
  * Start a periodic heartbeat while the agent is busy processing a cycle.
33
43
  * Keeps the dashboard up-to-date with the agent's current status.
@@ -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;AAK7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAuCnF,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;gBAE9B,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;IA2DhB,4CAA4C;IAC5C,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B1C;;;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,EAGL,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;gBAEjD,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;IAwEhB,4CAA4C;IAC5C,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,uEAAuE;IACvE,IAAI,sBAAsB,IAAI,kBAAkB,CAE/C;IAED;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B1C;;;OAGG;IACG,4BAA4B,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAqBjE;;;OAGG;IACH,iBAAiB,IAAI,IAAI;IAkBzB;;;OAGG;IACH,gBAAgB,IAAI,IAAI;CAmBzB"}
@@ -12,12 +12,13 @@ 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
16
  import { setSharedGeminiApiKey } from "../gemini-credentials.js";
16
17
  import { setSharedTosCredentials } from "../tos-credentials.js";
17
18
  import { resetArchiveConfigCache } from "./image-archive.js";
18
19
  import { logger } from "../logger.js";
19
20
  const BUSY_HEARTBEAT_INTERVAL_MS = 30_000;
20
- function applySharedKeysFromHeartbeat(config, sharedKeys) {
21
+ function applySharedKeysFromHeartbeat(config, _channelManager, sharedKeys) {
21
22
  if (!sharedKeys)
22
23
  return false;
23
24
  let updated = false;
@@ -39,6 +40,8 @@ export class HeartbeatManager {
39
40
  commandDispatcher;
40
41
  busyInterval = null;
41
42
  config;
43
+ channelManager = null;
44
+ _lastSubscriptionStatus = "skip";
42
45
  constructor(config) {
43
46
  this.config = config;
44
47
  this.commandDispatcher = new CommandDispatcher();
@@ -52,6 +55,7 @@ export class HeartbeatManager {
52
55
  * are silently disabled.
53
56
  */
54
57
  async init(channelManager, telegramChatId, justUpgraded) {
58
+ this.channelManager = channelManager;
55
59
  // Queue synthetic ack for a just-completed upgrade
56
60
  if (justUpgraded?.commandId !== undefined) {
57
61
  this.commandDispatcher.queueAck({
@@ -75,10 +79,17 @@ export class HeartbeatManager {
75
79
  busy: false,
76
80
  onboardingComplete: isOnboardingComplete(),
77
81
  };
82
+ // Register payment handler now that we have channelManager and service client
83
+ if (telegramChatId) {
84
+ this.commandDispatcher.registerHandler("payment_required", createPaymentHandler(channelManager, telegramChatId, this.client));
85
+ }
78
86
  try {
79
87
  const startupResp = await this.client.heartbeatStrict(startupPayload);
80
88
  logger.system("Runtime heartbeat: initial key validation succeeded");
81
- if (applySharedKeysFromHeartbeat(this.config, startupResp?.sharedKeys)) {
89
+ if (startupResp?.subscriptionStatus) {
90
+ this._lastSubscriptionStatus = startupResp.subscriptionStatus;
91
+ }
92
+ if (applySharedKeysFromHeartbeat(this.config, this.channelManager, startupResp?.sharedKeys)) {
82
93
  logger.debug("Shared keys applied from startup heartbeat");
83
94
  }
84
95
  }
@@ -99,6 +110,10 @@ export class HeartbeatManager {
99
110
  get enabled() {
100
111
  return this.client !== null;
101
112
  }
113
+ /** The subscription status from the most recent heartbeat response. */
114
+ get lastSubscriptionStatus() {
115
+ return this._lastSubscriptionStatus;
116
+ }
102
117
  /**
103
118
  * Send a heartbeat at the start of each wake cycle.
104
119
  * Dispatches any pending commands from the server and applies shared keys.
@@ -117,10 +132,13 @@ export class HeartbeatManager {
117
132
  onboardingComplete: isOnboardingComplete(),
118
133
  ...(acks.length > 0 ? { commandAcks: acks } : {}),
119
134
  });
135
+ if (resp?.subscriptionStatus) {
136
+ this._lastSubscriptionStatus = resp.subscriptionStatus;
137
+ }
120
138
  if (resp?.pendingCommands && resp.pendingCommands.length > 0) {
121
139
  this.commandDispatcher.dispatch(resp.pendingCommands);
122
140
  }
123
- if (applySharedKeysFromHeartbeat(this.config, resp?.sharedKeys)) {
141
+ if (applySharedKeysFromHeartbeat(this.config, this.channelManager, resp?.sharedKeys)) {
124
142
  logger.debug("Shared keys updated from heartbeat");
125
143
  }
126
144
  }
@@ -130,6 +148,31 @@ export class HeartbeatManager {
130
148
  this.commandDispatcher.requeueAcks(acks);
131
149
  }
132
150
  }
151
+ /**
152
+ * Send a single heartbeat and return the subscription status from the response.
153
+ * Used by the subscription gate for fast-polling (10s interval).
154
+ */
155
+ async sendHeartbeatForSubscription() {
156
+ if (!this.client)
157
+ return this._lastSubscriptionStatus;
158
+ try {
159
+ const resp = await this.client.heartbeat({
160
+ version: getCurrentVersion(),
161
+ model: this.config.model,
162
+ provider: this.config.provider,
163
+ uptime: Math.round(process.uptime()),
164
+ busy: false,
165
+ onboardingComplete: isOnboardingComplete(),
166
+ });
167
+ if (resp?.subscriptionStatus) {
168
+ this._lastSubscriptionStatus = resp.subscriptionStatus;
169
+ }
170
+ }
171
+ catch {
172
+ // best-effort — keep last known status
173
+ }
174
+ return this._lastSubscriptionStatus;
175
+ }
133
176
  /**
134
177
  * Start a periodic heartbeat while the agent is busy processing a cycle.
135
178
  * Keeps the dashboard up-to-date with the agent's current status.
@@ -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 +1 @@
1
- {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAapD,OAAO,EAAE,KAAK,UAAU,EAA4C,MAAM,YAAY,CAAC;AAevF,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE;IACR,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,UAAU,CAAC;QAAC,cAAc,EAAE,cAAc,CAAC;QAAC,YAAY,EAAE,YAAY,CAAC;QAAC,WAAW,EAAE,WAAW,CAAA;KAAE,KAAK,IAAI,CAAC;CAC5I,GACA,OAAO,CAAC,IAAI,CAAC,CAoVf"}
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAapD,OAAO,EAAE,KAAK,UAAU,EAA4C,MAAM,YAAY,CAAC;AAgBvF,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE;IACR,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,UAAU,CAAC;QAAC,cAAc,EAAE,cAAc,CAAC;QAAC,YAAY,EAAE,YAAY,CAAC;QAAC,WAAW,EAAE,WAAW,CAAA;KAAE,KAAK,IAAI,CAAC;CAC5I,GACA,OAAO,CAAC,IAAI,CAAC,CA2Vf"}
@@ -26,6 +26,7 @@ import { maybeStartApiProxy } from "./providers/client-factory.js";
26
26
  import { cleanupOldTranscripts } from "./session-trimmer.js";
27
27
  import { initAgentState, registerShutdownCallback } from "./state.js";
28
28
  import { runOnboardingGate } from "./onboarding-gate.js";
29
+ import { runSubscriptionGate } from "./subscription-gate.js";
29
30
  import { InterruptHandler } from "./interrupt-handler.js";
30
31
  import { gatherWakeContext } from "./gather-context.js";
31
32
  import { ScreenshotInjector } from "./screenshot-injector.js";
@@ -233,6 +234,11 @@ export async function startAgentLoop(config, options) {
233
234
  activityTracker.clear();
234
235
  cleanOldScreenshots().catch(() => { });
235
236
  await heartbeat.onWake(agentState.busy);
237
+ // --- Subscription gate ---
238
+ if (heartbeat.lastSubscriptionStatus === "expired") {
239
+ await runSubscriptionGate(config, channelManager, heartbeat);
240
+ // Gate returned — subscription is now active/skip, continue normally
241
+ }
236
242
  heartbeat.startBusyInterval();
237
243
  // --- Drain messages ---
238
244
  const hasMessages = !messageQueue.isEmpty();
@@ -1 +1 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Subscription gate — blocks the agent when the subscription has expired.
3
+ *
4
+ * Follows the same pattern as onboarding-gate.ts:
5
+ * 1. Notify owner that subscription has expired
6
+ * 2. Poll heartbeat every 10s (no Claude API calls)
7
+ * 3. Once status is "active" or "skip", return so the agent can resume
8
+ *
9
+ * The agent never checks Stripe directly — it trusts the backend's
10
+ * `subscriptionStatus` field in the heartbeat response.
11
+ */
12
+ import type { VisionClawConfig } from "../config/types.js";
13
+ import type { ChannelManager } from "../channels/manager.js";
14
+ import type { HeartbeatManager } from "./heartbeat-manager.js";
15
+ /**
16
+ * Run the subscription gate. Blocks until the subscription is renewed
17
+ * (status returns to "active" or "skip").
18
+ *
19
+ * Called from the main loop when `heartbeat.lastSubscriptionStatus === "expired"`.
20
+ */
21
+ export declare function runSubscriptionGate(_config: VisionClawConfig, channelManager: ChannelManager, heartbeat: HeartbeatManager): Promise<void>;
22
+ //# sourceMappingURL=subscription-gate.d.ts.map
@@ -0,0 +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,CAkDf"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Subscription gate — blocks the agent when the subscription has expired.
3
+ *
4
+ * Follows the same pattern as onboarding-gate.ts:
5
+ * 1. Notify owner that subscription has expired
6
+ * 2. Poll heartbeat every 10s (no Claude API calls)
7
+ * 3. Once status is "active" or "skip", return so the agent can resume
8
+ *
9
+ * The agent never checks Stripe directly — it trusts the backend's
10
+ * `subscriptionStatus` field in the heartbeat response.
11
+ */
12
+ import { loadOwnerConfig } from "../config/index.js";
13
+ import { logger } from "../logger.js";
14
+ const GATE_POLL_INTERVAL_MS = 10_000;
15
+ /**
16
+ * Run the subscription gate. Blocks until the subscription is renewed
17
+ * (status returns to "active" or "skip").
18
+ *
19
+ * Called from the main loop when `heartbeat.lastSubscriptionStatus === "expired"`.
20
+ */
21
+ export async function runSubscriptionGate(_config, channelManager, heartbeat) {
22
+ const ownerConfig = loadOwnerConfig();
23
+ logger.system("Subscription expired — entering subscription gate (no Claude API calls)");
24
+ // Notify owner
25
+ const expiredMsg = "Your subscription has expired. Please renew to continue using the agent. " +
26
+ "The agent is paused and will resume automatically once your subscription is active.";
27
+ try {
28
+ if (ownerConfig.telegramChatId) {
29
+ await channelManager.sendMessage("telegram", String(ownerConfig.telegramChatId), expiredMsg);
30
+ }
31
+ else if (ownerConfig.ownerEmail) {
32
+ await channelManager.sendMessage("gmail", ownerConfig.ownerEmail, expiredMsg);
33
+ }
34
+ }
35
+ catch {
36
+ logger.warn("Failed to send subscription expiry notification to owner");
37
+ }
38
+ // Poll heartbeat every 10s until subscription is renewed
39
+ let status = heartbeat.lastSubscriptionStatus;
40
+ while (status === "expired") {
41
+ await new Promise((resolve) => setTimeout(resolve, GATE_POLL_INTERVAL_MS));
42
+ status = await heartbeat.sendHeartbeatForSubscription();
43
+ if (status !== "expired")
44
+ break;
45
+ logger.debug(`Subscription gate: still expired, polling again in ${GATE_POLL_INTERVAL_MS / 1000}s`);
46
+ }
47
+ logger.system("Subscription renewed — exiting subscription gate");
48
+ // Notify owner that we're resuming
49
+ const renewedMsg = "Subscription renewed! Resuming normal operation.";
50
+ try {
51
+ if (ownerConfig.telegramChatId) {
52
+ await channelManager.sendMessage("telegram", String(ownerConfig.telegramChatId), renewedMsg);
53
+ }
54
+ else if (ownerConfig.ownerEmail) {
55
+ await channelManager.sendMessage("gmail", ownerConfig.ownerEmail, renewedMsg);
56
+ }
57
+ }
58
+ catch {
59
+ logger.warn("Failed to send subscription renewal notification to owner");
60
+ }
61
+ }
62
+ //# sourceMappingURL=subscription-gate.js.map
@@ -0,0 +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,eAAe;IACf,MAAM,UAAU,GACd,2EAA2E;QAC3E,qFAAqF,CAAC;IAExF,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,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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Payment command handler for the `payment_required` 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 `payment_required` from the backend via heartbeat (includes plans)
8
+ * 2. Sends a plan selection prompt (inline keyboard) to the owner via Telegram
9
+ * 3. Listens for `billing_plan_selected` events from the Telegram adapter
10
+ * 4. Calls the backend to create a Stripe Checkout Session
11
+ * 5. Sends the checkout 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 { OnboardingServiceClient } from "../onboarding/onboarding-service-client.js";
16
+ /**
17
+ * Create a CommandHandler for the "payment_required" heartbeat command.
18
+ *
19
+ * @param channelManager - To send payment prompts and listen for billing events
20
+ * @param ownerChatId - The owner's Telegram chat ID
21
+ * @param serviceClient - Optional onboarding service client for creating checkout sessions
22
+ */
23
+ export declare function createPaymentHandler(channelManager: ChannelManager, ownerChatId: number, serviceClient: OnboardingServiceClient | null): CommandHandler;
24
+ //# sourceMappingURL=payment-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-handler.d.ts","sourceRoot":"","sources":["../../src/billing/payment-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;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;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,uBAAuB,GAAG,IAAI,GAC5C,cAAc,CAiHhB"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Payment command handler for the `payment_required` 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 `payment_required` from the backend via heartbeat (includes plans)
8
+ * 2. Sends a plan selection prompt (inline keyboard) to the owner via Telegram
9
+ * 3. Listens for `billing_plan_selected` events from the Telegram adapter
10
+ * 4. Calls the backend to create a Stripe Checkout Session
11
+ * 5. Sends the checkout URL back to the owner as a URL button
12
+ */
13
+ import { logger } from "../logger.js";
14
+ const MAX_CHECKOUT_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 "payment_required" heartbeat command.
21
+ *
22
+ * @param channelManager - To send payment prompts and listen for billing events
23
+ * @param ownerChatId - The owner's Telegram chat ID
24
+ * @param serviceClient - Optional onboarding service client for creating checkout sessions
25
+ */
26
+ export function createPaymentHandler(channelManager, ownerChatId, serviceClient) {
27
+ // Wire up plan selection listener (once)
28
+ let listenerAttached = false;
29
+ function ensurePlanSelectedListener() {
30
+ if (listenerAttached)
31
+ return;
32
+ listenerAttached = true;
33
+ channelManager.on("billing_plan_selected", (event) => {
34
+ void handlePlanSelected(event);
35
+ });
36
+ }
37
+ async function handlePlanSelected(event) {
38
+ if (!serviceClient) {
39
+ logger.warn("[billing] No service client u2014 cannot create checkout session");
40
+ await channelManager.sendMessage("telegram", String(event.chatId), "Payment is not configured. Please contact support.");
41
+ return;
42
+ }
43
+ logger.system(`[billing] Plan selected: ${event.planId} by chat ${event.chatId}`);
44
+ // Retry loop for creating checkout session
45
+ for (let attempt = 0; attempt <= MAX_CHECKOUT_RETRIES; attempt++) {
46
+ try {
47
+ const result = await serviceClient.createCheckoutSession(event.planId, event.chatId);
48
+ if (result?.checkoutUrl) {
49
+ await channelManager.sendTelegramCheckoutLink(event.chatId, event.planName, result.checkoutUrl);
50
+ logger.system(`[billing] Checkout URL sent to chat ${event.chatId} for plan ${event.planId}`);
51
+ return;
52
+ }
53
+ // null result u2014 backend call failed
54
+ if (attempt < MAX_CHECKOUT_RETRIES) {
55
+ logger.warn(`[billing] Checkout session attempt ${attempt + 1} failed, retrying...`);
56
+ await channelManager.sendMessage("telegram", String(event.chatId), "Payment setup failed, retrying...");
57
+ await sleep(RETRY_DELAY_MS);
58
+ }
59
+ }
60
+ catch (err) {
61
+ const errMsg = err instanceof Error ? err.message : String(err);
62
+ logger.err(`[billing] Checkout session attempt ${attempt + 1} error: ${errMsg}`);
63
+ if (attempt < MAX_CHECKOUT_RETRIES) {
64
+ await sleep(RETRY_DELAY_MS);
65
+ }
66
+ }
67
+ }
68
+ // All retries exhausted
69
+ logger.err("[billing] All checkout session attempts failed");
70
+ await channelManager.sendMessage("telegram", String(event.chatId), "Payment setup failed. Please try again later.");
71
+ }
72
+ return async (_commandId, payload) => {
73
+ ensurePlanSelectedListener();
74
+ // Backend just signals "payment needed" with plans
75
+ const raw = (payload ?? {});
76
+ const plans = Array.isArray(raw.plans) ? raw.plans : [];
77
+ if (plans.length === 0) {
78
+ logger.warn("[billing] payment_required received with no plans");
79
+ return {
80
+ status: "failed",
81
+ result: JSON.stringify({ error: "No plans in payload" }),
82
+ };
83
+ }
84
+ const typedPayload = {
85
+ message: typeof raw.message === "string" ? raw.message : undefined,
86
+ plans,
87
+ };
88
+ logger.system(`[billing] Payment required received with ${typedPayload.plans.length} plan(s)`);
89
+ try {
90
+ await channelManager.sendTelegramPaymentPrompt(ownerChatId, typedPayload);
91
+ return {
92
+ status: "completed",
93
+ result: JSON.stringify({ message: "Payment prompt sent to owner" }),
94
+ };
95
+ }
96
+ catch (err) {
97
+ const errMsg = err instanceof Error ? err.message : String(err);
98
+ logger.err(`[billing] Failed to send payment prompt: ${errMsg}`);
99
+ return {
100
+ status: "failed",
101
+ result: JSON.stringify({ error: errMsg }),
102
+ };
103
+ }
104
+ };
105
+ }
106
+ //# sourceMappingURL=payment-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-handler.js","sourceRoot":"","sources":["../../src/billing/payment-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Types for the billing / payment system.
3
+ *
4
+ * Stripe Checkout Sessions for recurring subscriptions.
5
+ * Plans are served from the backend via the payment_required heartbeat command.
6
+ */
7
+ /**
8
+ * A plan delivered by the backend in the payment_required payload.
9
+ */
10
+ export interface BillingPlan {
11
+ id: string;
12
+ name: string;
13
+ amount: number;
14
+ currency: string;
15
+ description: string;
16
+ }
17
+ /**
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.
21
+ */
22
+ export interface PaymentRequiredPayload {
23
+ /** Optional message from backend to display to the user */
24
+ message?: string;
25
+ /** Available subscription plans (populated by the backend) */
26
+ plans: BillingPlan[];
27
+ }
28
+ /**
29
+ * Callback data prefixes used in Telegram inline keyboard buttons.
30
+ */
31
+ export declare const BILLING_CALLBACK_PREFIX = "billing:";
32
+ export declare const BILLING_PLAN_CALLBACK_PREFIX = "billing:plan:";
33
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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"}