execbro 1.10.15 → 1.10.17
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 +63 -332
- 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/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/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/tools/metaTools.js +1 -1
- package/build/tools/metaTools.js.map +1 -1
- package/build/tools/screenshotTools.d.ts.map +1 -1
- package/build/tools/screenshotTools.js +22 -6
- package/build/tools/screenshotTools.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flowpointTools.js","sourceRoot":"","sources":["../../src/pro/flowpointTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export type FlowpointLevel = "info" | "warn" | "error";
|
|
2
|
+
export interface FlowpointEntry {
|
|
3
|
+
seq: number;
|
|
4
|
+
t: number;
|
|
5
|
+
name: string;
|
|
6
|
+
step: string;
|
|
7
|
+
run: string;
|
|
8
|
+
level: FlowpointLevel;
|
|
9
|
+
meta?: unknown;
|
|
10
|
+
}
|
|
11
|
+
export interface FlowpointSnapshot {
|
|
12
|
+
contextId: string;
|
|
13
|
+
entries: FlowpointEntry[];
|
|
14
|
+
}
|
|
15
|
+
export declare const FLOWPOINT_STORE_CAP = 2000;
|
|
16
|
+
export interface FlowpointStoreState {
|
|
17
|
+
entries: FlowpointEntry[];
|
|
18
|
+
cursor: number;
|
|
19
|
+
contextId: string | null;
|
|
20
|
+
}
|
|
21
|
+
export declare function createFlowpointStore(): FlowpointStoreState;
|
|
22
|
+
/** Pure drain reducer: diff a full in-app snapshot against the store. Returns entries appended. */
|
|
23
|
+
export declare function applyDrain(store: FlowpointStoreState, snapshot: FlowpointSnapshot): number;
|
|
24
|
+
export declare function buildDrainExpression(): string;
|
|
25
|
+
export declare function buildClearExpression(): string;
|
|
26
|
+
export type FlowpointMissingReason = "uninitialized" | "outdated";
|
|
27
|
+
export declare function parseDrainResult(raw: string): FlowpointSnapshot | {
|
|
28
|
+
missing: true;
|
|
29
|
+
reason: FlowpointMissingReason;
|
|
30
|
+
} | null;
|
|
31
|
+
export interface FlowpointFilters {
|
|
32
|
+
name?: string;
|
|
33
|
+
step?: string;
|
|
34
|
+
run?: string;
|
|
35
|
+
level?: FlowpointLevel;
|
|
36
|
+
metaIncludes?: string;
|
|
37
|
+
since?: number;
|
|
38
|
+
limit?: number;
|
|
39
|
+
}
|
|
40
|
+
export declare function formatMeta(meta: unknown): string;
|
|
41
|
+
export interface PointMatch {
|
|
42
|
+
step?: string;
|
|
43
|
+
level?: FlowpointLevel;
|
|
44
|
+
metaIncludes?: string;
|
|
45
|
+
}
|
|
46
|
+
export declare function matchesPoint(entry: FlowpointEntry, match: PointMatch): boolean;
|
|
47
|
+
/** Per flow name, the run id of the chronologically last entry. Assumes entries sorted by t. */
|
|
48
|
+
export declare function resolveLastRuns(entries: FlowpointEntry[]): Map<string, string>;
|
|
49
|
+
export declare function filterFlowpoints(entries: FlowpointEntry[], filters: FlowpointFilters): FlowpointEntry[];
|
|
50
|
+
/** Compact grouped text: flow → run → points with inter-point deltas. Assumes entries sorted by t. */
|
|
51
|
+
export declare function formatFlowpoints(entries: FlowpointEntry[]): string;
|
|
52
|
+
export declare function getFlowpointStore(deviceName: string): FlowpointStoreState;
|
|
53
|
+
/** All stored entries across devices, sorted chronologically. */
|
|
54
|
+
export declare function allStoredFlowpoints(): FlowpointEntry[];
|
|
55
|
+
/**
|
|
56
|
+
* Remove entries from the server stores. Cursors/contextIds are kept so cleared
|
|
57
|
+
* entries never re-drain. When deviceName is given, only that device's store is
|
|
58
|
+
* touched; otherwise all stores are.
|
|
59
|
+
*/
|
|
60
|
+
export declare function clearFlowpointStores(name?: string, deviceName?: string): number;
|
|
61
|
+
export declare const SDK_FLOWPOINTS_MISSING: string;
|
|
62
|
+
export declare const SDK_FLOWPOINTS_OUTDATED: string;
|
|
63
|
+
export type DrainOutcome = {
|
|
64
|
+
ok: true;
|
|
65
|
+
} | {
|
|
66
|
+
ok: false;
|
|
67
|
+
error: string;
|
|
68
|
+
sdkMissing?: boolean;
|
|
69
|
+
};
|
|
70
|
+
export declare function drainFlowpoints(deviceName: string, device?: string): Promise<DrainOutcome>;
|
|
71
|
+
export type ExpectStep = string | {
|
|
72
|
+
step: string;
|
|
73
|
+
level?: FlowpointLevel;
|
|
74
|
+
metaIncludes?: string;
|
|
75
|
+
};
|
|
76
|
+
export interface VerifyOutcome {
|
|
77
|
+
pass: boolean;
|
|
78
|
+
text: string;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Subsequence assertion: expected steps must appear in order within the run; extra
|
|
82
|
+
* points in between are allowed. Unexpected error-level points fail the verification
|
|
83
|
+
* unless allowErrors is true or the error point matched an expected step.
|
|
84
|
+
*/
|
|
85
|
+
export declare function verifyFlow(name: string, runId: string, runEntries: FlowpointEntry[], expect: ExpectStep[], allowErrors: boolean): VerifyOutcome;
|
|
86
|
+
//# sourceMappingURL=flowpoints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flowpoints.d.ts","sourceRoot":"","sources":["../../src/pro/flowpoints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
import { executeInApp } from "../core/executor.js";
|
|
2
|
+
import { pushLogBox } from "../core/logbox.js";
|
|
3
|
+
export const FLOWPOINT_STORE_CAP = 2000;
|
|
4
|
+
export function createFlowpointStore() {
|
|
5
|
+
return { entries: [], cursor: 0, contextId: null };
|
|
6
|
+
}
|
|
7
|
+
/** Pure drain reducer: diff a full in-app snapshot against the store. Returns entries appended. */
|
|
8
|
+
export function applyDrain(store, snapshot) {
|
|
9
|
+
const reset = store.contextId !== snapshot.contextId;
|
|
10
|
+
const fresh = reset ? snapshot.entries : snapshot.entries.filter((e) => e.seq > store.cursor);
|
|
11
|
+
store.entries.push(...fresh);
|
|
12
|
+
if (store.entries.length > FLOWPOINT_STORE_CAP) {
|
|
13
|
+
store.entries.splice(0, store.entries.length - FLOWPOINT_STORE_CAP);
|
|
14
|
+
}
|
|
15
|
+
const maxSeq = snapshot.entries.reduce((m, e) => Math.max(m, e.seq), 0);
|
|
16
|
+
store.cursor = reset ? maxSeq : Math.max(store.cursor, maxSeq);
|
|
17
|
+
store.contextId = snapshot.contextId;
|
|
18
|
+
return fresh.length;
|
|
19
|
+
}
|
|
20
|
+
export function buildDrainExpression() {
|
|
21
|
+
return `(() => {
|
|
22
|
+
const g = globalThis.__EXECBRO__ ?? globalThis.__RN_AI_DEVTOOLS__;
|
|
23
|
+
if (!g || typeof g.getFlowpointSnapshot !== "function") {
|
|
24
|
+
const reason = g ? "outdated" : "uninitialized";
|
|
25
|
+
if (!globalThis.__EXECBRO_FLOWPOINT_WARNED__) {
|
|
26
|
+
globalThis.__EXECBRO_FLOWPOINT_WARNED__ = true;
|
|
27
|
+
console.warn(reason === "outdated"
|
|
28
|
+
? "[execbro] An AI agent tried to use flowpoints, but this app's execbro-sdk version does not support them. Upgrade it: npm install execbro-sdk@latest, then reload."
|
|
29
|
+
: "[execbro] An AI agent tried to use flowpoints, but execbro-sdk is not initialized. Install it (npm install execbro-sdk) and call init() at app start.");
|
|
30
|
+
}
|
|
31
|
+
return JSON.stringify({ __missing: true, __reason: reason });
|
|
32
|
+
}
|
|
33
|
+
const s = g.getFlowpointSnapshot();
|
|
34
|
+
const entries = s.entries.map((e) => {
|
|
35
|
+
try { JSON.stringify(e.meta); return e; }
|
|
36
|
+
catch { return Object.assign({}, e, { meta: { __error: "meta not JSON-serializable" } }); }
|
|
37
|
+
});
|
|
38
|
+
return JSON.stringify({ contextId: s.contextId, entries });
|
|
39
|
+
})()`;
|
|
40
|
+
}
|
|
41
|
+
export function buildClearExpression() {
|
|
42
|
+
return `(() => {
|
|
43
|
+
const g = globalThis.__EXECBRO__ ?? globalThis.__RN_AI_DEVTOOLS__;
|
|
44
|
+
return g && typeof g.clearFlowpoints === "function" ? String(g.clearFlowpoints()) : "0";
|
|
45
|
+
})()`;
|
|
46
|
+
}
|
|
47
|
+
export function parseDrainResult(raw) {
|
|
48
|
+
try {
|
|
49
|
+
const parsed = JSON.parse(raw);
|
|
50
|
+
if (parsed && parsed.__missing === true) {
|
|
51
|
+
return { missing: true, reason: parsed.__reason === "outdated" ? "outdated" : "uninitialized" };
|
|
52
|
+
}
|
|
53
|
+
if (parsed && typeof parsed.contextId === "string" && Array.isArray(parsed.entries)) {
|
|
54
|
+
return parsed;
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export function formatMeta(meta) {
|
|
63
|
+
if (meta === undefined)
|
|
64
|
+
return "";
|
|
65
|
+
if (typeof meta === "string")
|
|
66
|
+
return meta;
|
|
67
|
+
try {
|
|
68
|
+
return JSON.stringify(meta);
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return String(meta);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export function matchesPoint(entry, match) {
|
|
75
|
+
if (match.step !== undefined && entry.step !== match.step)
|
|
76
|
+
return false;
|
|
77
|
+
if (match.level !== undefined && entry.level !== match.level)
|
|
78
|
+
return false;
|
|
79
|
+
if (match.metaIncludes !== undefined &&
|
|
80
|
+
!formatMeta(entry.meta).toLowerCase().includes(match.metaIncludes.toLowerCase())) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
/** Per flow name, the run id of the chronologically last entry. Assumes entries sorted by t. */
|
|
86
|
+
export function resolveLastRuns(entries) {
|
|
87
|
+
const last = new Map();
|
|
88
|
+
for (const entry of entries) {
|
|
89
|
+
last.set(entry.name, entry.run);
|
|
90
|
+
}
|
|
91
|
+
return last;
|
|
92
|
+
}
|
|
93
|
+
export function filterFlowpoints(entries, filters) {
|
|
94
|
+
let result = entries;
|
|
95
|
+
if (filters.name !== undefined)
|
|
96
|
+
result = result.filter((e) => e.name === filters.name);
|
|
97
|
+
if (filters.run === "last") {
|
|
98
|
+
const lastRuns = resolveLastRuns(result);
|
|
99
|
+
result = result.filter((e) => lastRuns.get(e.name) === e.run);
|
|
100
|
+
}
|
|
101
|
+
else if (filters.run !== undefined) {
|
|
102
|
+
result = result.filter((e) => e.run === filters.run);
|
|
103
|
+
}
|
|
104
|
+
if (filters.step !== undefined)
|
|
105
|
+
result = result.filter((e) => e.step === filters.step);
|
|
106
|
+
if (filters.level !== undefined)
|
|
107
|
+
result = result.filter((e) => e.level === filters.level);
|
|
108
|
+
if (filters.metaIncludes !== undefined) {
|
|
109
|
+
const needle = filters.metaIncludes.toLowerCase();
|
|
110
|
+
result = result.filter((e) => formatMeta(e.meta).toLowerCase().includes(needle));
|
|
111
|
+
}
|
|
112
|
+
if (filters.since !== undefined)
|
|
113
|
+
result = result.filter((e) => e.t > filters.since);
|
|
114
|
+
const limit = filters.limit ?? 200;
|
|
115
|
+
if (result.length > limit)
|
|
116
|
+
result = result.slice(result.length - limit);
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
119
|
+
function formatPointLine(entry, t0, indent) {
|
|
120
|
+
const delta = `+${entry.t - t0}ms`.padEnd(9);
|
|
121
|
+
const levelPrefix = entry.level !== "info" ? `[${entry.level}] ` : "";
|
|
122
|
+
const meta = entry.meta !== undefined ? ` ${formatMeta(entry.meta)}` : "";
|
|
123
|
+
return `${indent}${delta}${levelPrefix}${entry.step}${meta}`;
|
|
124
|
+
}
|
|
125
|
+
function formatRunBlock(runId, runEntries, latest, indent) {
|
|
126
|
+
const span = runEntries[runEntries.length - 1].t - runEntries[0].t;
|
|
127
|
+
const label = latest ? ` (latest)` : "";
|
|
128
|
+
const header = `${indent}run ${runId}${label} — ${runEntries.length} points (${span}ms span):`;
|
|
129
|
+
const lines = runEntries.map((e) => formatPointLine(e, runEntries[0].t, indent + " "));
|
|
130
|
+
return [header, ...lines].join("\n");
|
|
131
|
+
}
|
|
132
|
+
/** Compact grouped text: flow → run → points with inter-point deltas. Assumes entries sorted by t. */
|
|
133
|
+
export function formatFlowpoints(entries) {
|
|
134
|
+
const lastRuns = resolveLastRuns(entries);
|
|
135
|
+
const byName = new Map();
|
|
136
|
+
for (const entry of entries) {
|
|
137
|
+
let runs = byName.get(entry.name);
|
|
138
|
+
if (!runs) {
|
|
139
|
+
runs = new Map();
|
|
140
|
+
byName.set(entry.name, runs);
|
|
141
|
+
}
|
|
142
|
+
let run = runs.get(entry.run);
|
|
143
|
+
if (!run) {
|
|
144
|
+
run = [];
|
|
145
|
+
runs.set(entry.run, run);
|
|
146
|
+
}
|
|
147
|
+
run.push(entry);
|
|
148
|
+
}
|
|
149
|
+
const blocks = [];
|
|
150
|
+
for (const [name, runs] of byName) {
|
|
151
|
+
const runIds = [...runs.keys()];
|
|
152
|
+
if (runIds.length === 1) {
|
|
153
|
+
const runEntries = runs.get(runIds[0]);
|
|
154
|
+
const span = runEntries[runEntries.length - 1].t - runEntries[0].t;
|
|
155
|
+
const header = `Flow "${name}" run ${runIds[0]} — ${runEntries.length} points (${span}ms span):`;
|
|
156
|
+
blocks.push([header, ...runEntries.map((e) => formatPointLine(e, runEntries[0].t, " "))].join("\n"));
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
const header = `Flow "${name}" — ${runIds.length} runs`;
|
|
160
|
+
const runBlocks = runIds.map((id) => formatRunBlock(id, runs.get(id), id === lastRuns.get(name), " "));
|
|
161
|
+
blocks.push([header, ...runBlocks].join("\n"));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return blocks.join("\n\n");
|
|
165
|
+
}
|
|
166
|
+
const flowpointStores = new Map();
|
|
167
|
+
export function getFlowpointStore(deviceName) {
|
|
168
|
+
let store = flowpointStores.get(deviceName);
|
|
169
|
+
if (!store) {
|
|
170
|
+
store = createFlowpointStore();
|
|
171
|
+
flowpointStores.set(deviceName, store);
|
|
172
|
+
}
|
|
173
|
+
return store;
|
|
174
|
+
}
|
|
175
|
+
/** All stored entries across devices, sorted chronologically. */
|
|
176
|
+
export function allStoredFlowpoints() {
|
|
177
|
+
const all = [];
|
|
178
|
+
for (const store of flowpointStores.values()) {
|
|
179
|
+
all.push(...store.entries);
|
|
180
|
+
}
|
|
181
|
+
return all.sort((a, b) => a.t - b.t);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Remove entries from the server stores. Cursors/contextIds are kept so cleared
|
|
185
|
+
* entries never re-drain. When deviceName is given, only that device's store is
|
|
186
|
+
* touched; otherwise all stores are.
|
|
187
|
+
*/
|
|
188
|
+
export function clearFlowpointStores(name, deviceName) {
|
|
189
|
+
let removed = 0;
|
|
190
|
+
const stores = deviceName !== undefined ? [getFlowpointStore(deviceName)] : [...flowpointStores.values()];
|
|
191
|
+
for (const store of stores) {
|
|
192
|
+
if (name === undefined) {
|
|
193
|
+
removed += store.entries.length;
|
|
194
|
+
store.entries = [];
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
const before = store.entries.length;
|
|
198
|
+
store.entries = store.entries.filter((e) => e.name !== name);
|
|
199
|
+
removed += before - store.entries.length;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return removed;
|
|
203
|
+
}
|
|
204
|
+
const LOGBOX_FLOWPOINTS_OUTDATED = "An AI agent tried to use flowpoints, but this app's execbro-sdk version does not support them.\n" +
|
|
205
|
+
"Upgrade it: npm install execbro-sdk@latest, then rebuild/reload.";
|
|
206
|
+
const LOGBOX_FLOWPOINTS_UNINITIALIZED = "An AI agent tried to use flowpoints, but execbro-sdk is not initialized.\n" +
|
|
207
|
+
"Install it (npm install execbro-sdk) and call init() at app start.";
|
|
208
|
+
// Once per device+reason per server session — LogBox banners must not repeat on every poll.
|
|
209
|
+
const flowpointLogBoxNotified = new Set();
|
|
210
|
+
export const SDK_FLOWPOINTS_MISSING = "Flowpoints require the execbro-sdk: npm install execbro-sdk, call init() at app start, " +
|
|
211
|
+
"then instrument the flow with flowpoint({ name, step }). Older SDK versions without " +
|
|
212
|
+
"flowpoint support must be upgraded. A notice with these instructions was also shown on " +
|
|
213
|
+
'the device (LogBox error banner). See get_usage_guide(topic="flowpoints").';
|
|
214
|
+
export const SDK_FLOWPOINTS_OUTDATED = "This app's execbro-sdk version predates flowpoints. Upgrade it (npm install execbro-sdk@latest), " +
|
|
215
|
+
"rebuild/reload the app, then retry. A notice with these instructions was also shown on the " +
|
|
216
|
+
'device (LogBox error banner). See get_usage_guide(topic="flowpoints").';
|
|
217
|
+
export async function drainFlowpoints(deviceName, device) {
|
|
218
|
+
const result = await executeInApp(buildDrainExpression(), false, { timeoutMs: 5000, originatingToolName: "flowpoints" }, device);
|
|
219
|
+
if (!result.success) {
|
|
220
|
+
return { ok: false, error: result.error || "executeInApp failed" };
|
|
221
|
+
}
|
|
222
|
+
const parsed = parseDrainResult(result.result ?? "");
|
|
223
|
+
if (parsed === null) {
|
|
224
|
+
return { ok: false, error: "Failed to parse flowpoint snapshot from the app" };
|
|
225
|
+
}
|
|
226
|
+
if ("missing" in parsed) {
|
|
227
|
+
const notifyKey = `${deviceName}:${parsed.reason}`;
|
|
228
|
+
if (!flowpointLogBoxNotified.has(notifyKey)) {
|
|
229
|
+
flowpointLogBoxNotified.add(notifyKey);
|
|
230
|
+
await pushLogBox(parsed.reason === "outdated" ? LOGBOX_FLOWPOINTS_OUTDATED : LOGBOX_FLOWPOINTS_UNINITIALIZED, "error", false, "logbox", "Flowpoints", device);
|
|
231
|
+
}
|
|
232
|
+
return {
|
|
233
|
+
ok: false,
|
|
234
|
+
error: parsed.reason === "outdated" ? SDK_FLOWPOINTS_OUTDATED : SDK_FLOWPOINTS_MISSING,
|
|
235
|
+
sdkMissing: true,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
applyDrain(getFlowpointStore(deviceName), parsed);
|
|
239
|
+
return { ok: true };
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Subsequence assertion: expected steps must appear in order within the run; extra
|
|
243
|
+
* points in between are allowed. Unexpected error-level points fail the verification
|
|
244
|
+
* unless allowErrors is true or the error point matched an expected step.
|
|
245
|
+
*/
|
|
246
|
+
export function verifyFlow(name, runId, runEntries, expect, allowErrors) {
|
|
247
|
+
const matchers = expect.map((x) => (typeof x === "string" ? { step: x } : x));
|
|
248
|
+
const t0 = runEntries.length > 0 ? runEntries[0].t : 0;
|
|
249
|
+
const matchedIndexes = new Set();
|
|
250
|
+
const lines = [];
|
|
251
|
+
let pass = true;
|
|
252
|
+
let cursor = 0;
|
|
253
|
+
for (const matcher of matchers) {
|
|
254
|
+
let found = -1;
|
|
255
|
+
for (let i = cursor; i < runEntries.length; i++) {
|
|
256
|
+
if (matchesPoint(runEntries[i], matcher)) {
|
|
257
|
+
found = i;
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
if (found === -1) {
|
|
262
|
+
pass = false;
|
|
263
|
+
lines.push(` ✗ ${matcher.step} — not seen`);
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
matchedIndexes.add(found);
|
|
267
|
+
cursor = found + 1;
|
|
268
|
+
lines.push(` ✓ ${matcher.step} (+${runEntries[found].t - t0}ms)`);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
if (!allowErrors) {
|
|
272
|
+
runEntries.forEach((entry, i) => {
|
|
273
|
+
if (entry.level === "error" && !matchedIndexes.has(i)) {
|
|
274
|
+
pass = false;
|
|
275
|
+
const meta = entry.meta !== undefined ? ` ${formatMeta(entry.meta)}` : "";
|
|
276
|
+
lines.push(` ! ${entry.step} [error] (+${entry.t - t0}ms)${meta} — unexpected error point`);
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
const header = `${pass ? "PASS" : "FAIL"} — flow "${name}" run ${runId}:`;
|
|
281
|
+
return { pass, text: [header, ...lines].join("\n") };
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=flowpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flowpoints.js","sourceRoot":"","sources":["../../src/pro/flowpoints.ts"],"names":[],"mappings":"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"}
|
package/build/tools/metaTools.js
CHANGED
|
@@ -14,7 +14,7 @@ export function registerMetaTools(server, opts) {
|
|
|
14
14
|
topic: z
|
|
15
15
|
.string()
|
|
16
16
|
.optional()
|
|
17
|
-
.describe("Topic to get the full guide for. Available topics: setup, inspect, layout, interact, logs, network, state, bundle. Omit to see the overview of all topics.")
|
|
17
|
+
.describe("Topic to get the full guide for. Available topics: setup, inspect, layout, interact, logs, network, state, bundle, feedback, flowpoints. Omit to see the overview of all topics.")
|
|
18
18
|
}
|
|
19
19
|
}, async ({ topic }) => {
|
|
20
20
|
if (!topic) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metaTools.js","sourceRoot":"","sources":["../../src/tools/metaTools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAE5C,OAAO,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAOtE,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,IAAqB;IACtE,+BAA+B;IAC/B,yBAAyB,CACrB,MAAM,EACN,iBAAiB,EACjB;QACI,WAAW,EACP,4NAA4N;QAChO,WAAW,EAAE;YACT,KAAK,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACL,
|
|
1
|
+
{"version":3,"file":"metaTools.js","sourceRoot":"","sources":["../../src/tools/metaTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenshotTools.d.ts","sourceRoot":"","sources":["../../src/tools/screenshotTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6BzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"screenshotTools.d.ts","sourceRoot":"","sources":["../../src/tools/screenshotTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6BzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwvB/D"}
|
|
@@ -22,13 +22,24 @@ export function registerScreenshotTools(server) {
|
|
|
22
22
|
udid: z
|
|
23
23
|
.string()
|
|
24
24
|
.optional()
|
|
25
|
-
.describe("Optional iOS target. Accepts a simulator UDID, the simulator name (e.g. 'iPhone 17 Pro'), or a substring of the connected RN device name. Uses booted simulator if not specified.")
|
|
25
|
+
.describe("Optional iOS target. Accepts a simulator UDID, the simulator name (e.g. 'iPhone 17 Pro'), or a substring of the connected RN device name. Uses booted simulator if not specified."),
|
|
26
|
+
device: z
|
|
27
|
+
.string()
|
|
28
|
+
.optional()
|
|
29
|
+
.describe("Alias for `udid` — same accepted values. Provided for consistency with tap/get_screen_layout/get_screen_state, which all use `device`. If both are given, `udid` wins.")
|
|
26
30
|
}
|
|
27
|
-
}, async ({ outputPath, udid }) => {
|
|
28
|
-
const resolved = await resolveIosUdid(udid);
|
|
31
|
+
}, async ({ outputPath, udid, device }) => {
|
|
32
|
+
const resolved = await resolveIosUdid(udid ?? device);
|
|
29
33
|
if (!resolved.ok)
|
|
30
34
|
return resolved.response;
|
|
31
|
-
|
|
35
|
+
// Resolve ONCE to a single canonical UDID and use it for BOTH the
|
|
36
|
+
// framebuffer capture and the pressable/screen-state enrichment, so
|
|
37
|
+
// the pixels and the element list always describe the same simulator.
|
|
38
|
+
// Previously the capture used the fuzzy-resolved UDID while enrichment
|
|
39
|
+
// fell back to the raw arg (getActiveOrBootedSimulatorUdid) — on a
|
|
40
|
+
// multi-sim setup that split the image and the tree across two sims.
|
|
41
|
+
const targetUdid = resolved.udid ?? (await getActiveOrBootedSimulatorUdid());
|
|
42
|
+
const result = await iosScreenshot(outputPath, targetUdid ?? undefined);
|
|
32
43
|
if (!result.success) {
|
|
33
44
|
return {
|
|
34
45
|
content: [
|
|
@@ -48,7 +59,7 @@ export function registerScreenshotTools(server) {
|
|
|
48
59
|
// Resolve the RN app running on THIS simulator so enrichment pulls
|
|
49
60
|
// fiber/layout data from the right app (not the first-connected one,
|
|
50
61
|
// which may belong to a different simulator).
|
|
51
|
-
const resolvedUdid =
|
|
62
|
+
const resolvedUdid = targetUdid;
|
|
52
63
|
const targetApp = resolvedUdid ? getConnectedAppBySimulatorUdid(resolvedUdid) : null;
|
|
53
64
|
const targetDeviceName = targetApp?.deviceInfo.deviceName;
|
|
54
65
|
// Store screenshot metadata on the matching app (not an arbitrary one)
|
|
@@ -65,7 +76,7 @@ export function registerScreenshotTools(server) {
|
|
|
65
76
|
let scaleFactor = 3; // Default to 3x for modern iPhones
|
|
66
77
|
let safeAreaTop = 59; // Default safe area offset
|
|
67
78
|
try {
|
|
68
|
-
const describeResult = await iosDescribeAll(
|
|
79
|
+
const describeResult = await iosDescribeAll(targetUdid ?? undefined);
|
|
69
80
|
if (describeResult.success && describeResult.elements && describeResult.elements.length > 0) {
|
|
70
81
|
// First element is typically the Application with full screen frame
|
|
71
82
|
const rootElement = describeResult.elements[0];
|
|
@@ -186,6 +197,11 @@ export function registerScreenshotTools(server) {
|
|
|
186
197
|
else {
|
|
187
198
|
infoText = `Screenshot captured (${pixelWidth}x${pixelHeight} pixels)`;
|
|
188
199
|
}
|
|
200
|
+
// Echo the simulator actually captured so a wrong-device grab is
|
|
201
|
+
// detectable at a glance (esp. with multiple sims booted).
|
|
202
|
+
if (targetUdid) {
|
|
203
|
+
infoText += `\n📸 Captured from: ${targetDeviceName ? `${targetDeviceName} ` : ""}(${targetUdid})`;
|
|
204
|
+
}
|
|
189
205
|
infoText += `\n📱 iOS screen: ${pointWidth}x${pointHeight} points (${scaleFactor}x scale)`;
|
|
190
206
|
infoText += `\n📐 tap() handles pixel-to-point conversion automatically — pass pixel coords from this image directly`;
|
|
191
207
|
infoText += `\n⚠️ Status bar + safe area: ${safeAreaTop} points (${safeAreaOffsetPixels} pixels) from top`;
|