react-native-ai-debugger 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.
- package/README.md +14 -3
- package/build/__tests__/unit/licenseGrace.test.d.ts +2 -0
- package/build/__tests__/unit/licenseGrace.test.d.ts.map +1 -0
- package/build/__tests__/unit/licenseGrace.test.js +62 -0
- package/build/__tests__/unit/licenseGrace.test.js.map +1 -0
- package/build/__tests__/unit/telemetryModes.test.d.ts +2 -0
- package/build/__tests__/unit/telemetryModes.test.d.ts.map +1 -0
- package/build/__tests__/unit/telemetryModes.test.js +29 -0
- package/build/__tests__/unit/telemetryModes.test.js.map +1 -0
- package/build/__tests__/unit/usageGate.test.d.ts +2 -0
- package/build/__tests__/unit/usageGate.test.d.ts.map +1 -0
- package/build/__tests__/unit/usageGate.test.js +78 -0
- package/build/__tests__/unit/usageGate.test.js.map +1 -0
- package/build/__tests__/unit/usageNotifications.test.d.ts +2 -0
- package/build/__tests__/unit/usageNotifications.test.d.ts.map +1 -0
- package/build/__tests__/unit/usageNotifications.test.js +27 -0
- package/build/__tests__/unit/usageNotifications.test.js.map +1 -0
- package/build/core/license.d.ts +9 -0
- package/build/core/license.d.ts.map +1 -1
- package/build/core/license.js +68 -4
- package/build/core/license.js.map +1 -1
- package/build/core/register.d.ts.map +1 -1
- package/build/core/register.js +19 -3
- package/build/core/register.js.map +1 -1
- package/build/core/telemetry.d.ts +22 -0
- package/build/core/telemetry.d.ts.map +1 -1
- package/build/core/telemetry.js +122 -73
- package/build/core/telemetry.js.map +1 -1
- package/build/pro/usageGate.d.ts +10 -0
- package/build/pro/usageGate.d.ts.map +1 -0
- package/build/pro/usageGate.js +75 -0
- package/build/pro/usageGate.js.map +1 -0
- package/build/pro/usageNotifications.d.ts +5 -0
- package/build/pro/usageNotifications.d.ts.map +1 -0
- package/build/pro/usageNotifications.js +88 -0
- package/build/pro/usageNotifications.js.map +1 -0
- package/build/tools/accountTools.d.ts.map +1 -1
- package/build/tools/accountTools.js +12 -1
- package/build/tools/accountTools.js.map +1 -1
- package/build/tools/metaTools.d.ts.map +1 -1
- package/build/tools/metaTools.js +28 -7
- package/build/tools/metaTools.js.map +1 -1
- 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;
|
|
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"}
|
package/build/core/telemetry.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
191
|
-
|
|
192
|
-
|
|
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
|
-
|
|
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
|
-
|
|
199
|
-
|
|
200
|
-
|
|
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
|
-
|
|
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
|
-
|
|
372
|
-
//
|
|
373
|
-
//
|
|
374
|
-
//
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
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
|
-
|
|
419
|
-
|
|
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":"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"}
|
|
@@ -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;
|
|
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." }],
|