execbro 1.10.16 → 1.10.18
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 +60 -360
- package/build/__tests__/unit/flowpoints.test.d.ts +2 -0
- package/build/__tests__/unit/flowpoints.test.d.ts.map +1 -0
- package/build/__tests__/unit/flowpoints.test.js +126 -0
- package/build/__tests__/unit/flowpoints.test.js.map +1 -0
- package/build/__tests__/unit/flowpointsQuery.test.d.ts +2 -0
- package/build/__tests__/unit/flowpointsQuery.test.d.ts.map +1 -0
- package/build/__tests__/unit/flowpointsQuery.test.js +91 -0
- package/build/__tests__/unit/flowpointsQuery.test.js.map +1 -0
- 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/__tests__/unit/verifyFlow.test.d.ts +2 -0
- package/build/__tests__/unit/verifyFlow.test.d.ts.map +1 -0
- package/build/__tests__/unit/verifyFlow.test.js +45 -0
- package/build/__tests__/unit/verifyFlow.test.js.map +1 -0
- package/build/core/guides.d.ts.map +1 -1
- package/build/core/guides.js +54 -10
- package/build/core/guides.js.map +1 -1
- package/build/core/license.d.ts +8 -0
- package/build/core/license.d.ts.map +1 -1
- package/build/core/license.js +60 -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/index.d.ts.map +1 -1
- package/build/index.js +2 -0
- package/build/index.js.map +1 -1
- package/build/pro/flowpointTools.d.ts +4 -0
- package/build/pro/flowpointTools.d.ts.map +1 -0
- package/build/pro/flowpointTools.js +266 -0
- package/build/pro/flowpointTools.js.map +1 -0
- package/build/pro/flowpoints.d.ts +86 -0
- package/build/pro/flowpoints.d.ts.map +1 -0
- package/build/pro/flowpoints.js +283 -0
- package/build/pro/flowpoints.js.map +1 -0
- package/build/pro/usageGate.d.ts +10 -0
- package/build/pro/usageGate.d.ts.map +1 -0
- package/build/pro/usageGate.js +72 -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 +23 -8
- package/build/tools/metaTools.js.map +1 -1
- package/package.json +1 -1
package/build/core/guides.js
CHANGED
|
@@ -202,7 +202,8 @@ tap(text=...) skips fiber for non-ASCII (Hermes limitation) and uses accessibili
|
|
|
202
202
|
## Tips
|
|
203
203
|
- Always start with summary=true to avoid token overload
|
|
204
204
|
- Use verbose=true with low maxLogs for full error details
|
|
205
|
-
- Use startFromText to begin reading from a specific point
|
|
205
|
+
- Use startFromText to begin reading from a specific point
|
|
206
|
+
- Instrumenting a flow to verify behavior? Prefer flowpoint() over console.log — see get_usage_guide(topic="flowpoints")`
|
|
206
207
|
},
|
|
207
208
|
{
|
|
208
209
|
id: "network",
|
|
@@ -350,6 +351,48 @@ Suggested prompt the user can paste to trigger this:
|
|
|
350
351
|
- Include workflow_context when possible — name the ExecBro tools/steps in play so the team can reproduce the tooling issue
|
|
351
352
|
- The user can review and edit the issue body before submitting
|
|
352
353
|
- No GitHub account setup or CLI tools needed — just a browser`
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
id: "flowpoints",
|
|
357
|
+
title: "Flowpoints — Flow Tracing & Verification",
|
|
358
|
+
summary: "Instrument app flows with flowpoint() breadcrumbs, then query, wait on, and assert them",
|
|
359
|
+
content: `# Flowpoints — Flow Tracing & Verification
|
|
360
|
+
|
|
361
|
+
Flowpoints are structured, timestamped breadcrumbs emitted by flowpoint() calls in app
|
|
362
|
+
code (execbro-sdk). They replace console.log spraying when you need to VERIFY what a
|
|
363
|
+
flow actually did — steps, order, timing, failures — with factual assertions.
|
|
364
|
+
|
|
365
|
+
## Workflow (verify a flow)
|
|
366
|
+
1. Instrument the flow (edit app code; execbro-sdk must be installed and init()-ed):
|
|
367
|
+
import { flowpoint } from 'execbro-sdk'
|
|
368
|
+
flowpoint({ name: 'add-to-cart', step: 'start', begin: true }) // flow entry
|
|
369
|
+
flowpoint({ name: 'add-to-cart', step: 'cleared', meta: { removed: 3 } })
|
|
370
|
+
flowpoint({ name: 'add-to-cart', step: 'done' })
|
|
371
|
+
flowpoint({ name: 'add-to-cart', step: 'failed', level: 'error' }) // error paths
|
|
372
|
+
2. Reload the app so the instrumented code is live.
|
|
373
|
+
3. Drive the flow (tap, swipe, input).
|
|
374
|
+
4. wait_for_flowpoint({ name: 'add-to-cart', step: 'done' }) — blocks until the flow
|
|
375
|
+
finishes instead of sleeping and re-polling.
|
|
376
|
+
5. verify_flow({ name: 'add-to-cart', expect: ['start', 'cleared', 'done'] }) —
|
|
377
|
+
factual PASS/FAIL diff against the expected sequence.
|
|
378
|
+
6. get_flowpoints({ name: 'add-to-cart', run: 'last' }) — full trail with timing
|
|
379
|
+
deltas when diagnosing a failure.
|
|
380
|
+
|
|
381
|
+
## Key Tools
|
|
382
|
+
- get_flowpoints: query the trail (filters: name, step, run, level, metaIncludes, since)
|
|
383
|
+
- wait_for_flowpoint: block until a matching point arrives (or timeout with partial trail)
|
|
384
|
+
- verify_flow: assert an expected step sequence against one run (any unexpected error-level point fails it unless allowErrors: true)
|
|
385
|
+
- clear_flowpoints: reset stored points (name-scoped clears touch only the server store; rarely needed — prefer run filters)
|
|
386
|
+
|
|
387
|
+
## Tips
|
|
388
|
+
- Prefer flowpoint() over console.log when instrumenting a flow to verify behavior.
|
|
389
|
+
- Keep name and step low-cardinality and stable; dynamic payload goes in meta.
|
|
390
|
+
- begin: true on the flow's entry point separates retries into runs; run: 'last'
|
|
391
|
+
queries only the newest attempt.
|
|
392
|
+
- get_flowpoints({ level: 'error' }) answers "did anything fail?" across every flow.
|
|
393
|
+
- flowpoint() is a production no-op — instrumentation can stay in the code.
|
|
394
|
+
- Runtime TDD: write the verify_flow expectation FIRST, then implement until it passes.
|
|
395
|
+
- verify_flow FAILS on any unexpected error-level point in the run — pass allowErrors: true to tolerate them, or include the error step in expect.`
|
|
353
396
|
}
|
|
354
397
|
];
|
|
355
398
|
/**
|
|
@@ -363,15 +406,16 @@ export const DECISION_TREE = [
|
|
|
363
406
|
"Platform-specific ios_* / android_* tools (ios_button, android_input_text, android_key_event, android_long_press, ios_open_url, etc.) are FALLBACKS for non-React or native-only flows — prefer the cross-platform primary tools above whenever possible.",
|
|
364
407
|
"",
|
|
365
408
|
"Call get_usage_guide(topic=...) for end-to-end workflows. Available topics:",
|
|
366
|
-
" setup
|
|
367
|
-
" logs
|
|
368
|
-
" interact
|
|
369
|
-
" layout
|
|
370
|
-
" inspect
|
|
371
|
-
" network
|
|
372
|
-
"
|
|
373
|
-
"
|
|
374
|
-
"
|
|
409
|
+
" setup — session setup (scan_metro, connect_metro, ensure_connection)",
|
|
410
|
+
" logs — console debugging (get_logs, search_logs)",
|
|
411
|
+
" interact — device interaction (tap, swipe, screenshots, android_input_text, clear_focused_input, dismiss_keyboard)",
|
|
412
|
+
" layout — on-screen layout check (get_screen_layout, get_pressable_elements)",
|
|
413
|
+
" inspect — component inspection (find_components, inspect_component, get_inspector_selection)",
|
|
414
|
+
" network — network request inspection (get_network_requests, search_network)",
|
|
415
|
+
" flowpoints — verify a flow's behavior (flowpoint() breadcrumbs, wait_for_flowpoint, verify_flow)",
|
|
416
|
+
" state — app state & JS execution (execute_in_app, list_debug_globals)",
|
|
417
|
+
" bundle — bundle / Metro error checks (get_bundle_status, get_bundle_errors)",
|
|
418
|
+
" feedback — share feedback, feature requests, or bug reports (send_feedback)"
|
|
375
419
|
].join("\n");
|
|
376
420
|
export function getGuideOverview() {
|
|
377
421
|
const guideList = guides.map((g) => ` ${g.id} — ${g.summary}`).join("\n");
|
package/build/core/guides.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guides.js","sourceRoot":"","sources":["../../src/core/guides.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,MAAM,GAAY;IACpB;QACI,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,eAAe;QACtB,OAAO,EAAE,yDAAyD;QAClE,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CA8B8B;KAC1C;IACD;QACI,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,sBAAsB;QAC7B,OAAO,EAAE,mFAAmF;QAC5F,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iIAsCgH;KAC5H;IACD;QACI,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,kBAAkB;QACzB,OAAO,EAAE,0EAA0E;QACnF,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;0FA4ByE;KACrF;IACD;QACI,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,oBAAoB;QAC3B,OAAO,EAAE,wDAAwD;QACjE,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yCAyDwB;KACpC;IACD;QACI,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,8DAA8D;QACvE,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"guides.js","sourceRoot":"","sources":["../../src/core/guides.ts"],"names":[],"mappings":"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"}
|
package/build/core/license.d.ts
CHANGED
|
@@ -18,6 +18,11 @@ export interface UsageInfo {
|
|
|
18
18
|
canUse: boolean;
|
|
19
19
|
promotionalPeriod?: boolean;
|
|
20
20
|
promotionalPeriodEndsAt?: string | null;
|
|
21
|
+
resetsAt?: string;
|
|
22
|
+
warnThreshold?: number;
|
|
23
|
+
capActive?: boolean;
|
|
24
|
+
enforcementStartsAt?: string | null;
|
|
25
|
+
verdictFreshUntil?: string;
|
|
21
26
|
}
|
|
22
27
|
export interface PlanPricing {
|
|
23
28
|
amount: number;
|
|
@@ -30,6 +35,8 @@ export interface PricingInfo {
|
|
|
30
35
|
export declare function getUsageInfo(): UsageInfo | null;
|
|
31
36
|
export declare function getPricingInfo(): PricingInfo | null;
|
|
32
37
|
export declare function formatPlanPrice(p: PlanPricing): string;
|
|
38
|
+
export declare const GRACE_WINDOW_MS: number;
|
|
39
|
+
export declare function computeOfflineUsage(cached: UsageInfo | null, now: number): UsageInfo | null;
|
|
33
40
|
interface LicenseResult {
|
|
34
41
|
status: LicenseStatus;
|
|
35
42
|
source: "cache" | "api" | "default";
|
|
@@ -43,6 +50,7 @@ export declare function ensureLicense(): Promise<LicenseResult>;
|
|
|
43
50
|
export declare function getLicenseStatus(): LicenseStatus;
|
|
44
51
|
export declare function incrementLocalUsage(): void;
|
|
45
52
|
export declare function getDashboardUrl(): string;
|
|
53
|
+
export declare function requestLinkToken(): Promise<string | null>;
|
|
46
54
|
export declare function resetLicense(): void;
|
|
47
55
|
export {};
|
|
48
56
|
//# sourceMappingURL=license.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/core/license.ts"],"names":[],"mappings":"AA2BA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,aAAa;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,EAAE,WAAW,GAAG,QAAQ,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACrB,CAAC;CACL;AAED,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/core/license.ts"],"names":[],"mappings":"AA2BA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,aAAa;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,EAAE,WAAW,GAAG,QAAQ,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACrB,CAAC;CACL;AAED,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAExC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IACxB,GAAG,CAAC,EAAE,WAAW,CAAC;CACrB;AAwBD,wBAAgB,YAAY,IAAI,SAAS,GAAG,IAAI,CAE/C;AAED,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CAEnD;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAItD;AAED,eAAO,MAAM,eAAe,QAAsB,CAAC;AAMnD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAgB3F;AAyID,UAAU,aAAa;IACnB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,CAKtD;AAyED,wBAAgB,gBAAgB,IAAI,aAAa,CAOhD;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAO1C;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAKD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4B/D;AAED,wBAAgB,YAAY,IAAI,IAAI,CAUnC"}
|
package/build/core/license.js
CHANGED
|
@@ -35,6 +35,30 @@ export function formatPlanPrice(p) {
|
|
|
35
35
|
const period = p.interval === "month" ? "mo" : "yr";
|
|
36
36
|
return `${symbol}${p.amount}/${period}`;
|
|
37
37
|
}
|
|
38
|
+
export const GRACE_WINDOW_MS = 72 * 60 * 60 * 1000; // 72h fail-closed grace
|
|
39
|
+
// Offline verdict resolution. Within the grace window we trust the last server
|
|
40
|
+
// verdict verbatim (including canUse:false — this is the anti-bypass reversal of
|
|
41
|
+
// the old "never load stale usage" behavior). Past the window we block only if the
|
|
42
|
+
// last-known state was over cap; deferred (capActive:false) users are never blocked.
|
|
43
|
+
export function computeOfflineUsage(cached, now) {
|
|
44
|
+
if (!cached)
|
|
45
|
+
return null;
|
|
46
|
+
const fresh = cached.verdictFreshUntil ? new Date(cached.verdictFreshUntil).getTime() : 0;
|
|
47
|
+
if (now < fresh)
|
|
48
|
+
return cached;
|
|
49
|
+
// The cap is monthly — if we've rolled into a new calendar month (UTC) since
|
|
50
|
+
// the cached verdict, the counter has reset server-side even though we can't
|
|
51
|
+
// reach the API to confirm it, so don't keep blocking on last month's usage.
|
|
52
|
+
if (cached.monthKey) {
|
|
53
|
+
const d = new Date(now);
|
|
54
|
+
const currentMonthKey = `${d.getUTCFullYear()}-${String(d.getUTCMonth() + 1).padStart(2, "0")}`;
|
|
55
|
+
if (cached.monthKey !== currentMonthKey) {
|
|
56
|
+
return { ...cached, canUse: true };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const overCap = cached.capActive !== false && cached.limit != null && cached.used >= cached.limit;
|
|
60
|
+
return { ...cached, canUse: !overCap };
|
|
61
|
+
}
|
|
38
62
|
function readUsageCache() {
|
|
39
63
|
try {
|
|
40
64
|
if (!existsSync(USAGE_FILE))
|
|
@@ -209,6 +233,7 @@ async function resolveLicense() {
|
|
|
209
233
|
// Parse usage info from API response
|
|
210
234
|
if (apiResponse.usage) {
|
|
211
235
|
const usageData = apiResponse.usage;
|
|
236
|
+
usageData.verdictFreshUntil = new Date(Date.now() + GRACE_WINDOW_MS).toISOString();
|
|
212
237
|
currentUsage = usageData;
|
|
213
238
|
writeUsageCache(usageData);
|
|
214
239
|
}
|
|
@@ -218,13 +243,13 @@ async function resolveLicense() {
|
|
|
218
243
|
return { status: currentStatus, source, durationMs: Date.now() - startTime };
|
|
219
244
|
}
|
|
220
245
|
// API failed — fall back to stale license cache (fail open on tier).
|
|
221
|
-
// Intentionally do NOT load stale usage.json: a stale `canUse: false` would
|
|
222
|
-
// block tools during a transient backend outage even when the user should
|
|
223
|
-
// be allowed (e.g. new month rolled over, or promo period is active).
|
|
224
|
-
// Leaving currentUsage as null makes the per-tool block in index.ts a no-op.
|
|
225
246
|
if (cache && cache.installationId === installationId) {
|
|
226
247
|
currentStatus = cache;
|
|
227
248
|
source = "cache";
|
|
249
|
+
// Fail-closed-after-grace: reuse the last usage verdict within the grace
|
|
250
|
+
// window; past it, block only if last-known over cap. (Replaces the old
|
|
251
|
+
// fail-open no-op which let anyone bypass the cap by blocking the endpoint.)
|
|
252
|
+
currentUsage = computeOfflineUsage(readUsageCache(), Date.now());
|
|
228
253
|
return { status: currentStatus, source, durationMs: Date.now() - startTime };
|
|
229
254
|
}
|
|
230
255
|
// No cache, no API — default to free
|
|
@@ -252,6 +277,37 @@ export function incrementLocalUsage() {
|
|
|
252
277
|
export function getDashboardUrl() {
|
|
253
278
|
return DASHBOARD_URL;
|
|
254
279
|
}
|
|
280
|
+
// Mints a short-lived, single-use link token bound to this installation's
|
|
281
|
+
// fingerprint, so the printed /link URL can't be redeemed by anyone who just
|
|
282
|
+
// sees it — only someone who can also prove they hold this machine's fingerprint.
|
|
283
|
+
export async function requestLinkToken() {
|
|
284
|
+
if (!VALIDATION_ENDPOINT)
|
|
285
|
+
return null;
|
|
286
|
+
try {
|
|
287
|
+
const controller = new AbortController();
|
|
288
|
+
const timeout = setTimeout(() => controller.abort(), API_TIMEOUT_MS);
|
|
289
|
+
const response = await fetch(`${VALIDATION_ENDPOINT}/api/accounts/link-token`, {
|
|
290
|
+
method: "POST",
|
|
291
|
+
headers: {
|
|
292
|
+
"Content-Type": "application/json",
|
|
293
|
+
"X-API-Key": ACCOUNTS_API_KEY,
|
|
294
|
+
},
|
|
295
|
+
body: JSON.stringify({
|
|
296
|
+
installationId: getInstallationId(),
|
|
297
|
+
fingerprint: getDeviceFingerprint(),
|
|
298
|
+
}),
|
|
299
|
+
signal: controller.signal,
|
|
300
|
+
});
|
|
301
|
+
clearTimeout(timeout);
|
|
302
|
+
if (!response.ok)
|
|
303
|
+
return null;
|
|
304
|
+
const data = (await response.json());
|
|
305
|
+
return typeof data.token === "string" ? data.token : null;
|
|
306
|
+
}
|
|
307
|
+
catch {
|
|
308
|
+
return null;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
255
311
|
export function resetLicense() {
|
|
256
312
|
currentStatus = null;
|
|
257
313
|
licensePromise = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/core/license.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC/C,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,+BAA+B;AACtF,MAAM,mBAAmB,GAAG,YAAY,CAAC;AACzC,MAAM,gBAAgB,GAAG,kEAAkE,CAAC;AAC5F,MAAM,cAAc,GAAG,KAAK,CAAC;AAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AACtD,MAAM,aAAa,GAAG,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/core/license.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/core/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/core/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4CzE,eAAO,MAAM,YAAY;YAA6B,GAAG;aAAW,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC;EAAK,CAAC;AAKrG,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAMtE;AAED,wBAAgB,yBAAyB,CACrC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,EACpC,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,GAC/C,IAAI,CA6JN"}
|
package/build/core/register.js
CHANGED
|
@@ -4,6 +4,9 @@ import { getTargetPlatform } from "./state.js";
|
|
|
4
4
|
import { UserInputError } from "./errors.js";
|
|
5
5
|
import { estimateImageTokens } from "./toolHelpers.js";
|
|
6
6
|
import { connectedApps, shouldShowFeedbackHint, markFeedbackHintShown, pushLogBox } from "./index.js";
|
|
7
|
+
import { ensureLicense, getUsageInfo } from "./license.js";
|
|
8
|
+
import { freezeSessionVerdict, isToolBlocked, usageWarningLine } from "../pro/usageGate.js";
|
|
9
|
+
import { maybeNotifyUsage, maybeNotifyDeferral } from "../pro/usageNotifications.js";
|
|
7
10
|
// Tools that do NOT require an active Metro connection — excluded from feedback hint trigger
|
|
8
11
|
const NON_METRO_TOOLS = new Set([
|
|
9
12
|
"scan_metro",
|
|
@@ -44,9 +47,18 @@ export function installToolRegistryInterceptor(server) {
|
|
|
44
47
|
export function registerToolWithTelemetry(server, toolName, config, handler, emptyResultDetector) {
|
|
45
48
|
toolRegistry.set(toolName, { config, handler });
|
|
46
49
|
server.registerTool(toolName, config, async (args) => {
|
|
47
|
-
//
|
|
48
|
-
//
|
|
49
|
-
//
|
|
50
|
+
// Resolve + freeze the session verdict once (session-start semantics),
|
|
51
|
+
// then gate. Cap logic lives in src/pro/ (commercial); this MIT wrapper
|
|
52
|
+
// only calls into it.
|
|
53
|
+
await ensureLicense();
|
|
54
|
+
freezeSessionVerdict(getUsageInfo());
|
|
55
|
+
const usageNow = getUsageInfo();
|
|
56
|
+
void maybeNotifyDeferral(usageNow);
|
|
57
|
+
void maybeNotifyUsage(usageNow);
|
|
58
|
+
const gate = isToolBlocked(toolName);
|
|
59
|
+
if (gate.blocked) {
|
|
60
|
+
return { content: [{ type: "text", text: gate.message }] };
|
|
61
|
+
}
|
|
50
62
|
const startTime = Date.now();
|
|
51
63
|
let success = true;
|
|
52
64
|
let errorMessage;
|
|
@@ -144,6 +156,10 @@ export function registerToolWithTelemetry(server, toolName, config, handler, emp
|
|
|
144
156
|
// Non-fatal — hint delivery failure should not affect tool execution
|
|
145
157
|
});
|
|
146
158
|
}
|
|
159
|
+
const warn = usageWarningLine(getUsageInfo());
|
|
160
|
+
if (warn && Array.isArray(result?.content)) {
|
|
161
|
+
result.content.push({ type: "text", text: warn });
|
|
162
|
+
}
|
|
147
163
|
return result;
|
|
148
164
|
}
|
|
149
165
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/core/register.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACH,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,mBAAmB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/core/register.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|