execbro 1.10.17 → 1.10.19

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 (43) hide show
  1. package/README.md +14 -3
  2. package/build/__tests__/unit/licenseGrace.test.d.ts +2 -0
  3. package/build/__tests__/unit/licenseGrace.test.d.ts.map +1 -0
  4. package/build/__tests__/unit/licenseGrace.test.js +62 -0
  5. package/build/__tests__/unit/licenseGrace.test.js.map +1 -0
  6. package/build/__tests__/unit/telemetryModes.test.d.ts +2 -0
  7. package/build/__tests__/unit/telemetryModes.test.d.ts.map +1 -0
  8. package/build/__tests__/unit/telemetryModes.test.js +29 -0
  9. package/build/__tests__/unit/telemetryModes.test.js.map +1 -0
  10. package/build/__tests__/unit/usageGate.test.d.ts +2 -0
  11. package/build/__tests__/unit/usageGate.test.d.ts.map +1 -0
  12. package/build/__tests__/unit/usageGate.test.js +78 -0
  13. package/build/__tests__/unit/usageGate.test.js.map +1 -0
  14. package/build/__tests__/unit/usageNotifications.test.d.ts +2 -0
  15. package/build/__tests__/unit/usageNotifications.test.d.ts.map +1 -0
  16. package/build/__tests__/unit/usageNotifications.test.js +27 -0
  17. package/build/__tests__/unit/usageNotifications.test.js.map +1 -0
  18. package/build/core/license.d.ts +9 -0
  19. package/build/core/license.d.ts.map +1 -1
  20. package/build/core/license.js +68 -4
  21. package/build/core/license.js.map +1 -1
  22. package/build/core/register.d.ts.map +1 -1
  23. package/build/core/register.js +19 -3
  24. package/build/core/register.js.map +1 -1
  25. package/build/core/telemetry.d.ts +22 -0
  26. package/build/core/telemetry.d.ts.map +1 -1
  27. package/build/core/telemetry.js +122 -73
  28. package/build/core/telemetry.js.map +1 -1
  29. package/build/pro/usageGate.d.ts +10 -0
  30. package/build/pro/usageGate.d.ts.map +1 -0
  31. package/build/pro/usageGate.js +75 -0
  32. package/build/pro/usageGate.js.map +1 -0
  33. package/build/pro/usageNotifications.d.ts +5 -0
  34. package/build/pro/usageNotifications.d.ts.map +1 -0
  35. package/build/pro/usageNotifications.js +88 -0
  36. package/build/pro/usageNotifications.js.map +1 -0
  37. package/build/tools/accountTools.d.ts.map +1 -1
  38. package/build/tools/accountTools.js +12 -1
  39. package/build/tools/accountTools.js.map +1 -1
  40. package/build/tools/metaTools.d.ts.map +1 -1
  41. package/build/tools/metaTools.js +28 -7
  42. package/build/tools/metaTools.js.map +1 -1
  43. package/package.json +1 -1
@@ -5,7 +5,29 @@ export declare function getServerVersion(): string;
5
5
  export declare function getPackageName(): string;
6
6
  type ErrorCategory = 'network' | 'timeout' | 'validation' | 'execution' | 'connection' | 'driver_missing' | 'unknown';
7
7
  export declare function categorizeError(errorMessage: string, errorContext?: string): ErrorCategory;
8
+ export declare function isMeteringEnabled(): boolean;
8
9
  export declare function getInstallationId(): string;
10
+ /**
11
+ * Pure decision function for the analytics/metering split. Kept side-effect
12
+ * free so it can be unit-tested without touching env vars, disk config, or
13
+ * the network.
14
+ *
15
+ * Rules:
16
+ * - Unconfigured endpoint or dev mode: both off (no telemetry of any kind
17
+ * should leave a dev/unconfigured install).
18
+ * - Env opt-out (EXECBRO_TELEMETRY=false|0|off): analytics off, but metering
19
+ * stays on — the free-tier cap requires the counted signal regardless of
20
+ * the user's analytics preference.
21
+ * - Otherwise: both on.
22
+ */
23
+ export declare function resolveTelemetryModes(opts: {
24
+ envOptOut: boolean;
25
+ devMode: boolean;
26
+ endpointConfigured: boolean;
27
+ }): {
28
+ telemetryEnabled: boolean;
29
+ meteringEnabled: boolean;
30
+ };
9
31
  export declare function initTelemetry(): void;
10
32
  export declare function isTelemetryEnabled(): boolean;
11
33
  /** Check if the MCP server is running in dev mode (config-based). */
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/core/telemetry.ts"],"names":[],"mappings":"AAsBA,wBAAgB,oBAAoB,IAAI,MAAM,CAA+B;AAC7E,wBAAgB,kBAAkB,IAAI,MAAM,CAA8B;AAI1E,eAAO,MAAM,oBAAoB,qCAAqC,CAAC;AAGvE,wBAAgB,gBAAgB,IAAI,MAAM,CASzC;AAGD,wBAAgB,cAAc,IAAI,MAAM,CASvC;AAMD,KAAK,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAiCtH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,aAAa,CAgD1F;AA0FD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAWD,wBAAgB,aAAa,IAAI,IAAI,CA8CpC;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,qEAAqE;AACrE,wBAAgB,SAAS,IAAI,OAAO,CAOnC;AAiBD,wBAAgB,mBAAmB,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,EACrB,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,OAAO,EACrB,UAAU,CAAC,EAAE,OAAO,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,MAAM,EACxB,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,EACxB,mBAAmB,CAAC,EAAE,MAAM,EAC5B,uBAAuB,CAAC,EAAE,MAAM,EAChC,QAAQ,CAAC,EAAE,MAAM,GAClB,IAAI,CAyJN;AAkED,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,SAAS,GAAG,aAAa,GAAG,cAAc,CAAC;AAE7F;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAC9B,OAAO,EAAE,oBAAoB,EAC7B,mBAAmB,EAAE,MAAM,EAC3B,gBAAgB,CAAC,EAAE,MAAM,GAC1B,IAAI,CA0CN;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE;IACzC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,IAAI,CAsDP;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE;IAC/C,GAAG,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,CAAC;IACjD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAcP"}
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/core/telemetry.ts"],"names":[],"mappings":"AAsBA,wBAAgB,oBAAoB,IAAI,MAAM,CAA+B;AAC7E,wBAAgB,kBAAkB,IAAI,MAAM,CAA8B;AAI1E,eAAO,MAAM,oBAAoB,qCAAqC,CAAC;AAGvE,wBAAgB,gBAAgB,IAAI,MAAM,CASzC;AAGD,wBAAgB,cAAc,IAAI,MAAM,CASvC;AAMD,KAAK,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAiCtH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,aAAa,CAgD1F;AA6BD,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAiED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAWD;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;CAC/B,GAAG;IAAE,gBAAgB,EAAE,OAAO,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,CAQ1D;AAED,wBAAgB,aAAa,IAAI,IAAI,CAqDpC;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,qEAAqE;AACrE,wBAAgB,SAAS,IAAI,OAAO,CAOnC;AAiBD,wBAAgB,mBAAmB,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,EACrB,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,OAAO,EACrB,UAAU,CAAC,EAAE,OAAO,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,MAAM,EACxB,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,EACxB,mBAAmB,CAAC,EAAE,MAAM,EAC5B,uBAAuB,CAAC,EAAE,MAAM,EAChC,QAAQ,CAAC,EAAE,MAAM,GAClB,IAAI,CA6KN;AAkED,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,SAAS,GAAG,aAAa,GAAG,cAAc,CAAC;AAE7F;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAC9B,OAAO,EAAE,oBAAoB,EAC7B,mBAAmB,EAAE,MAAM,EAC3B,gBAAgB,CAAC,EAAE,MAAM,GAC1B,IAAI,CA0CN;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE;IACzC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,IAAI,CAsDP;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE;IAC/C,GAAG,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,CAAC;IACjD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAcP"}
@@ -101,6 +101,12 @@ export function categorizeError(errorMessage, errorContext) {
101
101
  // State
102
102
  // ============================================================================
103
103
  let telemetryEnabled = true;
104
+ // Metering heartbeat: the counted tool_invocation signal required to run the
105
+ // free tier. Stays on under the analytics opt-out; only disabled in dev/unconfigured.
106
+ let meteringEnabled = true;
107
+ export function isMeteringEnabled() {
108
+ return meteringEnabled;
109
+ }
104
110
  let config = null;
105
111
  let sessionStartTime = null;
106
112
  let sessionId = null;
@@ -172,38 +178,61 @@ function isFirstRun() {
172
178
  // ============================================================================
173
179
  // Telemetry Control
174
180
  // ============================================================================
181
+ /**
182
+ * Pure decision function for the analytics/metering split. Kept side-effect
183
+ * free so it can be unit-tested without touching env vars, disk config, or
184
+ * the network.
185
+ *
186
+ * Rules:
187
+ * - Unconfigured endpoint or dev mode: both off (no telemetry of any kind
188
+ * should leave a dev/unconfigured install).
189
+ * - Env opt-out (EXECBRO_TELEMETRY=false|0|off): analytics off, but metering
190
+ * stays on — the free-tier cap requires the counted signal regardless of
191
+ * the user's analytics preference.
192
+ * - Otherwise: both on.
193
+ */
194
+ export function resolveTelemetryModes(opts) {
195
+ if (!opts.endpointConfigured || opts.devMode) {
196
+ return { telemetryEnabled: false, meteringEnabled: false };
197
+ }
198
+ if (opts.envOptOut) {
199
+ return { telemetryEnabled: false, meteringEnabled: true };
200
+ }
201
+ return { telemetryEnabled: true, meteringEnabled: true };
202
+ }
175
203
  export function initTelemetry() {
176
204
  // Check environment variable for opt-out
177
205
  const envValue = process.env.EXECBRO_TELEMETRY ?? process.env.RN_DEBUGGER_TELEMETRY;
178
- if (envValue === "false" || envValue === "0" || envValue === "off") {
179
- telemetryEnabled = false;
180
- console.error("[execbro] Telemetry disabled via EXECBRO_TELEMETRY");
181
- return;
182
- }
206
+ const envOptOut = envValue === "false" || envValue === "0" || envValue === "off";
183
207
  // Check if dev mode is enabled in config (for local development)
184
208
  const cfg = loadOrCreateConfig();
185
- if (cfg.devMode) {
186
- telemetryEnabled = false;
187
- return;
188
- }
189
209
  // Check if endpoint is configured (placeholder detection)
190
- if (TELEMETRY_ENDPOINT.includes("YOUR_SUBDOMAIN") || TELEMETRY_API_KEY.includes("YOUR_API_KEY")) {
191
- telemetryEnabled = false;
192
- // Silently disable - endpoint not configured yet
210
+ const endpointConfigured = !TELEMETRY_ENDPOINT.includes("YOUR_SUBDOMAIN") && !TELEMETRY_API_KEY.includes("YOUR_API_KEY");
211
+ const modes = resolveTelemetryModes({ envOptOut, devMode: !!cfg.devMode, endpointConfigured });
212
+ telemetryEnabled = modes.telemetryEnabled;
213
+ meteringEnabled = modes.meteringEnabled;
214
+ if (!meteringEnabled) {
215
+ // Dev mode or unconfigured endpoint — no telemetry of any kind.
193
216
  return;
194
217
  }
195
- // Load/create config (generates installation ID)
218
+ if (envOptOut) {
219
+ console.error("[execbro] Product analytics disabled via EXECBRO_TELEMETRY. Usage metering (required for the free tier) remains active.");
220
+ }
221
+ // Load/create config (generates installation ID) — needed for metering
222
+ // dispatch even when analytics is opted out.
196
223
  loadOrCreateConfig();
197
224
  sessionId = randomUUID();
198
- // Track that an AI agent session loaded our MCP server (regardless of tool usage)
199
- trackEvent("session_start", {
200
- isFirstRun: isFirstRun()
201
- });
225
+ if (telemetryEnabled) {
226
+ // Track that an AI agent session loaded our MCP server (regardless of tool usage)
227
+ trackEvent("session_start", {
228
+ isFirstRun: isFirstRun()
229
+ });
230
+ }
202
231
  // Track session end on SIGINT/SIGTERM. Each event is dispatched immediately
203
232
  // with keepalive, so no flush is needed — the OS completes the request even
204
233
  // if the process exits right after.
205
234
  const handleExit = () => {
206
- if (sessionStarted && sessionStartTime) {
235
+ if (telemetryEnabled && sessionStarted && sessionStartTime) {
207
236
  trackEvent("session_end", {
208
237
  duration: Date.now() - sessionStartTime
209
238
  });
@@ -290,10 +319,17 @@ export function trackToolInvocation(toolName, success, durationMs, errorMessage,
290
319
  catch {
291
320
  // Non-critical — local file sink failure should never affect tool execution
292
321
  }
293
- if (!telemetryEnabled)
322
+ // Metering (the counted dispatch below) fires whenever meteringEnabled is
323
+ // true, even if the user opted out of analytics via EXECBRO_TELEMETRY.
324
+ // Only bail out entirely when both are off (dev mode / unconfigured
325
+ // endpoint) — nothing downstream has anything to do in that case.
326
+ if (!meteringEnabled && !telemetryEnabled)
294
327
  return;
295
328
  const now = Date.now();
296
- // Start a new session on first tool use or after inactivity gap
329
+ // Start a new session on first tool use or after inactivity gap. This is
330
+ // analytics bookkeeping only — trackEvent/trackAppDetection/trackLicenseCheck
331
+ // each internally no-op when telemetryEnabled is false, so this block has
332
+ // no effect on opted-out users beyond harmless local state updates.
297
333
  if (!sessionStarted || (lastToolTimestamp && (now - lastToolTimestamp) > SESSION_INACTIVITY_MS)) {
298
334
  if (sessionStarted) {
299
335
  // End previous session before starting a new one
@@ -368,62 +404,75 @@ export function trackToolInvocation(toolName, success, durationMs, errorMessage,
368
404
  event.accessibilityMatchCount = accessibilityMatchCount;
369
405
  if (appRoute)
370
406
  event.appRoute = appRoute;
371
- dispatch(event);
372
- // Mirror tool_invocation to PostHog so insights/cohort filters can count
373
- // per-tool usage natively. Cloudflare remains the source of truth; PostHog
374
- // gets a parallel stream keyed on the same installation id.
375
- try {
376
- const client = getPostHogClient();
377
- if (client) {
378
- const phProps = {
379
- tool_name: toolName,
380
- success,
381
- duration_ms: durationMs,
382
- is_first_run: isFirstRun(),
383
- server_version: getServerVersion(),
384
- package_name: getPackageName(),
385
- session_id: sessionId?.substring(0, 12) ?? "",
386
- };
387
- if (event.errorCategory)
388
- phProps.error_category = event.errorCategory;
389
- if (event.errorMessage)
390
- phProps.error_message = event.errorMessage;
391
- if (event.errorContext)
392
- phProps.error_context = event.errorContext;
393
- if (targetPlatform)
394
- phProps.target_platform = targetPlatform;
395
- if (emptyResult !== undefined)
396
- phProps.empty_result = emptyResult;
397
- if (meaningful !== undefined)
398
- phProps.meaningful = meaningful;
399
- if (changeRate !== undefined)
400
- phProps.change_rate = changeRate;
401
- if (tapStrategy)
402
- phProps.tap_strategy = tapStrategy;
403
- if (iosDriver)
404
- phProps.ios_driver = iosDriver;
405
- if (emptyReason)
406
- phProps.empty_reason = emptyReason;
407
- if (inputTokens !== undefined && inputTokens > 0)
408
- phProps.input_tokens = inputTokens;
409
- if (outputTokens !== undefined && outputTokens > 0)
410
- phProps.output_tokens = outputTokens;
411
- client.capture({
412
- distinctId: getInstallationId(),
413
- event: "tool_invocation",
414
- properties: phProps,
415
- });
407
+ // Counted signal: this is the metering heartbeat the free-tier cap relies
408
+ // on. Fires whenever meteringEnabled — including when the user opted out
409
+ // of analytics — so opting out of PostHog/analytics can never freeze
410
+ // (bypass) the usage count.
411
+ if (meteringEnabled) {
412
+ dispatch(event);
413
+ }
414
+ if (telemetryEnabled) {
415
+ // Mirror tool_invocation to PostHog so insights/cohort filters can count
416
+ // per-tool usage natively. Cloudflare remains the source of truth; PostHog
417
+ // gets a parallel stream keyed on the same installation id.
418
+ try {
419
+ const client = getPostHogClient();
420
+ if (client) {
421
+ const phProps = {
422
+ tool_name: toolName,
423
+ success,
424
+ duration_ms: durationMs,
425
+ is_first_run: isFirstRun(),
426
+ server_version: getServerVersion(),
427
+ package_name: getPackageName(),
428
+ session_id: sessionId?.substring(0, 12) ?? "",
429
+ };
430
+ if (event.errorCategory)
431
+ phProps.error_category = event.errorCategory;
432
+ if (event.errorMessage)
433
+ phProps.error_message = event.errorMessage;
434
+ if (event.errorContext)
435
+ phProps.error_context = event.errorContext;
436
+ if (targetPlatform)
437
+ phProps.target_platform = targetPlatform;
438
+ if (emptyResult !== undefined)
439
+ phProps.empty_result = emptyResult;
440
+ if (meaningful !== undefined)
441
+ phProps.meaningful = meaningful;
442
+ if (changeRate !== undefined)
443
+ phProps.change_rate = changeRate;
444
+ if (tapStrategy)
445
+ phProps.tap_strategy = tapStrategy;
446
+ if (iosDriver)
447
+ phProps.ios_driver = iosDriver;
448
+ if (emptyReason)
449
+ phProps.empty_reason = emptyReason;
450
+ if (inputTokens !== undefined && inputTokens > 0)
451
+ phProps.input_tokens = inputTokens;
452
+ if (outputTokens !== undefined && outputTokens > 0)
453
+ phProps.output_tokens = outputTokens;
454
+ client.capture({
455
+ distinctId: getInstallationId(),
456
+ event: "tool_invocation",
457
+ properties: phProps,
458
+ });
459
+ }
460
+ }
461
+ catch {
462
+ // PostHog errors must never affect tool flow.
416
463
  }
417
464
  }
418
- catch {
419
- // PostHog errors must never affect tool flow.
465
+ // Increment local usage counter — powers the live 80% warning, so it must
466
+ // run whenever the counted dispatch runs, regardless of analytics opt-out.
467
+ if (meteringEnabled) {
468
+ incrementLocalUsage();
469
+ }
470
+ if (telemetryEnabled) {
471
+ // Mirror platform-cohort signal to PostHog for native users.
472
+ // Mirrors the infra's native-user inference (backend/worker.ts:deriveNativePlatform)
473
+ // so PostHog cohort filters match the Cloudflare dashboard.
474
+ mirrorNativeCohortToPostHog(toolName);
420
475
  }
421
- // Increment local usage counter
422
- incrementLocalUsage();
423
- // Mirror platform-cohort signal to PostHog for native users.
424
- // Mirrors the infra's native-user inference (backend/worker.ts:deriveNativePlatform)
425
- // so PostHog cohort filters match the Cloudflare dashboard.
426
- mirrorNativeCohortToPostHog(toolName);
427
476
  }
428
477
  // Track what we've already sent to PostHog so we don't re-identify on every tool call.
429
478
  let _nativeKindSet = false;
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/core/telemetry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/core/telemetry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type UsageInfo } from "../core/license.js";
2
+ export declare function freezeSessionVerdict(usage: UsageInfo | null): void;
3
+ export declare function refreezeSessionVerdict(usage: UsageInfo | null): void;
4
+ export declare function isToolBlocked(toolName: string): {
5
+ blocked: boolean;
6
+ message?: string;
7
+ };
8
+ export declare function usageWarningLine(usage: UsageInfo | null): string | null;
9
+ export declare function resetGateForTests(): void;
10
+ //# sourceMappingURL=usageGate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usageGate.d.ts","sourceRoot":"","sources":["../../src/pro/usageGate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAwCrF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,CAQlE;AAKD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,CAIpE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAItF;AAGD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAMvE;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC"}
@@ -0,0 +1,75 @@
1
+ import { getPricingInfo, formatPlanPrice } from "../core/license.js";
2
+ import { API_BASE_URL } from "../core/config.js";
3
+ const UPGRADE_URL = `${API_BASE_URL}/upgrade`;
4
+ // Tools that must never be gated so the stop can always explain itself, and
5
+ // account/feedback tools the user needs even while capped.
6
+ const EXEMPT = new Set([
7
+ "get_license_status",
8
+ "activate_license",
9
+ "send_feedback",
10
+ "get_usage_guide",
11
+ "dev",
12
+ "reset_telemetry",
13
+ "delete_account",
14
+ ]);
15
+ let frozen = false;
16
+ let blockMessage = null;
17
+ function formatReset(usage) {
18
+ if (!usage.resetsAt)
19
+ return "next month";
20
+ const d = new Date(usage.resetsAt);
21
+ if (Number.isNaN(d.getTime()))
22
+ return "next month";
23
+ return d.toLocaleDateString("en-GB", { day: "2-digit", month: "short" });
24
+ }
25
+ function buildBlockMessage(usage) {
26
+ const pricing = getPricingInfo();
27
+ const price = pricing?.pro ? formatPlanPrice(pricing.pro) : "$8.99/mo";
28
+ return (`Action not performed — ExecBro free monthly limit reached ` +
29
+ `(${usage.used}/${usage.limit}, resets ${formatReset(usage)}). ` +
30
+ `Please tell the user: unlimited usage is available for ${price} at ${UPGRADE_URL}.`);
31
+ }
32
+ // Freeze the block verdict once per process (session-start semantics). Called
33
+ // after ensureLicense() first resolves. Subsequent calls are no-ops so a user
34
+ // who crosses the cap mid-session is never interrupted.
35
+ export function freezeSessionVerdict(usage) {
36
+ if (frozen)
37
+ return;
38
+ frozen = true;
39
+ if (usage && usage.capActive !== false && !usage.canUse) {
40
+ blockMessage = buildBlockMessage(usage);
41
+ }
42
+ else {
43
+ blockMessage = null;
44
+ }
45
+ }
46
+ // Clear the frozen session verdict and re-evaluate from fresh usage. Used after
47
+ // a successful activate_license so a mid-session upgrade lifts a stale block
48
+ // instead of leaving the process blocked until restart.
49
+ export function refreezeSessionVerdict(usage) {
50
+ frozen = false;
51
+ blockMessage = null;
52
+ freezeSessionVerdict(usage);
53
+ }
54
+ export function isToolBlocked(toolName) {
55
+ if (!frozen || !blockMessage)
56
+ return { blocked: false };
57
+ if (EXEMPT.has(toolName))
58
+ return { blocked: false };
59
+ return { blocked: true, message: blockMessage };
60
+ }
61
+ // Live per-call warning (uses the locally-incremented usage.used) once ≥80%.
62
+ export function usageWarningLine(usage) {
63
+ if (!usage || usage.capActive === false || usage.limit == null)
64
+ return null;
65
+ const threshold = (usage.warnThreshold ?? 0.8) * usage.limit;
66
+ if (usage.used < threshold)
67
+ return null;
68
+ const remaining = Math.max(0, usage.limit - usage.used);
69
+ return `ExecBro: ~${remaining} free calls left this month (resets ${formatReset(usage)}). Unlimited: ${UPGRADE_URL}`;
70
+ }
71
+ export function resetGateForTests() {
72
+ frozen = false;
73
+ blockMessage = null;
74
+ }
75
+ //# sourceMappingURL=usageGate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usageGate.js","sourceRoot":"","sources":["../../src/pro/usageGate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { UsageInfo } from "../core/license.js";
2
+ export declare function nextThreshold(usage: UsageInfo | null): 80 | 100 | null;
3
+ export declare function maybeNotifyUsage(usage: UsageInfo | null, device?: string): Promise<void>;
4
+ export declare function maybeNotifyDeferral(usage: UsageInfo | null, device?: string): Promise<void>;
5
+ //# sourceMappingURL=usageNotifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usageNotifications.d.ts","sourceRoot":"","sources":["../../src/pro/usageNotifications.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AA6BpD,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAMtE;AAGD,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB9F;AAGD,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBjG"}
@@ -0,0 +1,88 @@
1
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
2
+ import { join, dirname } from "path";
3
+ import { pushLogBox } from "../core/logbox.js";
4
+ import { CONFIG_DIR } from "../core/paths.js";
5
+ import { API_BASE_URL } from "../core/config.js";
6
+ const NOTIFY_FILE = join(CONFIG_DIR, "usage-notify.json");
7
+ const UPGRADE_URL = `${API_BASE_URL}/upgrade`;
8
+ function read() {
9
+ try {
10
+ return existsSync(NOTIFY_FILE) ? JSON.parse(readFileSync(NOTIFY_FILE, "utf-8")) : {};
11
+ }
12
+ catch {
13
+ return {};
14
+ }
15
+ }
16
+ function write(s) {
17
+ try {
18
+ if (!existsSync(dirname(NOTIFY_FILE)))
19
+ mkdirSync(dirname(NOTIFY_FILE), { recursive: true });
20
+ writeFileSync(NOTIFY_FILE, JSON.stringify(s, null, 2));
21
+ }
22
+ catch {
23
+ /* best-effort */
24
+ }
25
+ }
26
+ export function nextThreshold(usage) {
27
+ if (!usage || usage.capActive === false || usage.limit == null)
28
+ return null;
29
+ const pct = usage.used / usage.limit;
30
+ if (pct >= 1)
31
+ return 100;
32
+ if (pct >= (usage.warnThreshold ?? 0.8))
33
+ return 80;
34
+ return null;
35
+ }
36
+ // Fire the LogBox banner at most once per threshold per month.
37
+ export async function maybeNotifyUsage(usage, device) {
38
+ try {
39
+ const threshold = nextThreshold(usage);
40
+ if (!usage || threshold == null)
41
+ return;
42
+ const state = read();
43
+ if (state.monthKey !== usage.monthKey) {
44
+ state.monthKey = usage.monthKey;
45
+ state.lastThreshold = undefined;
46
+ }
47
+ if (state.lastThreshold === threshold || (state.lastThreshold === 100 && threshold === 80))
48
+ return;
49
+ const msg = threshold === 100
50
+ ? `ExecBro: free monthly limit reached (${usage.used}/${usage.limit}). Unlimited at ${UPGRADE_URL}`
51
+ : `ExecBro: ${usage.used}/${usage.limit} free calls used this month. Unlimited at ${UPGRADE_URL}`;
52
+ // Persist the dedup state BEFORE awaiting the push so the check-and-set window is
53
+ // synchronous. This closes a TOCTOU race where two concurrent tool calls both read
54
+ // stale state and both fire. Trade-off: if pushLogBox later fails, we do not retry
55
+ // this threshold this month — "at most once" wins over "guaranteed delivery".
56
+ state.lastThreshold = threshold;
57
+ write(state);
58
+ await pushLogBox(msg, "warning", false, "logbox", "ExecBro", device);
59
+ }
60
+ catch {
61
+ /* best-effort — never throw into the caller */
62
+ }
63
+ }
64
+ // Existing-user deferral: grey full-screen dismissible warning, once per window.
65
+ export async function maybeNotifyDeferral(usage, device) {
66
+ try {
67
+ if (!usage || usage.capActive !== false || !usage.enforcementStartsAt)
68
+ return;
69
+ const state = read();
70
+ if (state.deferralNotifiedFor === usage.enforcementStartsAt)
71
+ return;
72
+ const enforcementDate = new Date(usage.enforcementStartsAt);
73
+ if (Number.isNaN(enforcementDate.getTime()))
74
+ return; // malformed date — skip, don't mark notified
75
+ const date = enforcementDate.toLocaleDateString("en-GB", { day: "2-digit", month: "long" });
76
+ const msg = `ExecBro becomes metered on ${date}: 600 free tool calls per month, ` +
77
+ `unlimited with Pro ($9/mo) at ${UPGRADE_URL}. Nothing changes until then.`;
78
+ // Persist BEFORE awaiting the push (see maybeNotifyUsage) to close the same TOCTOU race.
79
+ state.deferralNotifiedFor = usage.enforcementStartsAt;
80
+ write(state);
81
+ // warning level (grey) + expanded=true → dismissible full-screen LogBox view.
82
+ await pushLogBox(msg, "warning", true, "logbox", "ExecBro", device);
83
+ }
84
+ catch {
85
+ /* best-effort — never throw into the caller */
86
+ }
87
+ }
88
+ //# sourceMappingURL=usageNotifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usageNotifications.js","sourceRoot":"","sources":["../../src/pro/usageNotifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,GAAG,YAAY,UAAU,CAAC;AAQ9C,SAAS,IAAI;IACT,IAAI,CAAC;QACD,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzF,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAED,SAAS,KAAK,CAAC,CAAc;IACzB,IAAI,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAAE,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5F,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACL,iBAAiB;IACrB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAuB;IACjD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5E,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;IACrC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IACzB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAuB,EAAE,MAAe;IAC3E,IAAI,CAAC;QACD,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,IAAI,SAAS,IAAI,IAAI;YAAE,OAAO;QACxC,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;QACrB,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAChC,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;QACpC,CAAC;QACD,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,GAAG,IAAI,SAAS,KAAK,EAAE,CAAC;YAAE,OAAO;QAEnG,MAAM,GAAG,GACL,SAAS,KAAK,GAAG;YACb,CAAC,CAAC,wCAAwC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,mBAAmB,WAAW,EAAE;YACnG,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,6CAA6C,WAAW,EAAE,CAAC;QAC1G,kFAAkF;QAClF,mFAAmF;QACnF,mFAAmF;QACnF,8EAA8E;QAC9E,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;QAChC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,MAAM,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACL,+CAA+C;IACnD,CAAC;AACL,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAuB,EAAE,MAAe;IAC9E,IAAI,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,mBAAmB;YAAE,OAAO;QAC9E,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;QACrB,IAAI,KAAK,CAAC,mBAAmB,KAAK,KAAK,CAAC,mBAAmB;YAAE,OAAO;QACpE,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;YAAE,OAAO,CAAC,6CAA6C;QAClG,MAAM,IAAI,GAAG,eAAe,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5F,MAAM,GAAG,GACL,8BAA8B,IAAI,mCAAmC;YACrE,iCAAiC,WAAW,+BAA+B,CAAC;QAChF,yFAAyF;QACzF,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;QACtD,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,8EAA8E;QAC9E,MAAM,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACL,+CAA+C;IACnD,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"accountTools.d.ts","sourceRoot":"","sources":["../../src/tools/accountTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkBxB,wBAAgB,wBAAwB;;;;;EASvC;AAED,wBAAsB,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;GA8FvE;AAED,wBAAgB,sBAAsB;;;;;EAarC;AAED,wBAAsB,mBAAmB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;GAuF1E;AAWD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAa5D"}
1
+ {"version":3,"file":"accountTools.d.ts","sourceRoot":"","sources":["../../src/tools/accountTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB,wBAAgB,wBAAwB;;;;;EASvC;AAED,wBAAsB,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;GAyGvE;AAED,wBAAgB,sBAAsB;;;;;EAarC;AAED,wBAAsB,mBAAmB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;GAuF1E;AAWD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAa5D"}
@@ -1,7 +1,8 @@
1
1
  import { z } from "zod";
2
2
  import { getInstallationId, getServerVersion, getPackageName } from "../core/telemetry.js";
3
3
  import { getDeviceFingerprint } from "../core/fingerprint.js";
4
- import { resetLicense, getDashboardUrl, ensureLicense } from "../core/license.js";
4
+ import { resetLicense, getDashboardUrl, ensureLicense, getUsageInfo } from "../core/license.js";
5
+ import { refreezeSessionVerdict } from "../pro/usageGate.js";
5
6
  import { existsSync, unlinkSync } from "fs";
6
7
  import { join } from "path";
7
8
  import { getPostHogClient } from "../core/posthog.js";
@@ -49,6 +50,7 @@ export async function handleActivateLicense({ token }) {
49
50
  if (response.ok) {
50
51
  resetLicense();
51
52
  await ensureLicense();
53
+ refreezeSessionVerdict(getUsageInfo());
52
54
  const distinctId = getInstallationId();
53
55
  const posthog = getPostHogClient();
54
56
  if (posthog) {
@@ -91,6 +93,15 @@ export async function handleActivateLicense({ token }) {
91
93
  isError: true,
92
94
  };
93
95
  }
96
+ if (data.error === "already_linked_elsewhere") {
97
+ return {
98
+ content: [{
99
+ type: "text",
100
+ text: "This installation is already linked to a different account. Unlink it from that account's dashboard first, or run delete_account here to reset this installation and get a fresh one.",
101
+ }],
102
+ isError: true,
103
+ };
104
+ }
94
105
  if (data.error === "installation_not_found") {
95
106
  return {
96
107
  content: [{ type: "text", text: "Installation not found. Please restart your MCP server and try again." }],