@buoy-gg/agent-core 7.0.40 → 7.0.41
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/lib/commonjs/catalog/catalog.g.js +364 -15
- package/lib/commonjs/catalog/catalog.g.js.map +1 -1
- package/lib/commonjs/catalog/catalog.source.json +407 -12
- package/lib/commonjs/catalog/catalog.types.g.js +6 -4
- package/lib/commonjs/catalog/catalog.types.g.js.map +1 -1
- package/lib/commonjs/effects/ledger.js +20 -0
- package/lib/commonjs/effects/ledger.js.map +1 -1
- package/lib/commonjs/engine/effectFor.js +47 -0
- package/lib/commonjs/engine/effectFor.js.map +1 -1
- package/lib/commonjs/engine/runAgentTurn.js +37 -4
- package/lib/commonjs/engine/runAgentTurn.js.map +1 -1
- package/lib/module/catalog/catalog.g.js +364 -15
- package/lib/module/catalog/catalog.g.js.map +1 -1
- package/lib/module/catalog/catalog.source.json +407 -12
- package/lib/module/catalog/catalog.types.g.js +6 -4
- package/lib/module/catalog/catalog.types.g.js.map +1 -1
- package/lib/module/effects/ledger.js +20 -0
- package/lib/module/effects/ledger.js.map +1 -1
- package/lib/module/engine/effectFor.js +47 -0
- package/lib/module/engine/effectFor.js.map +1 -1
- package/lib/module/engine/runAgentTurn.js +37 -4
- package/lib/module/engine/runAgentTurn.js.map +1 -1
- package/lib/typescript/catalog/catalog.g.d.ts +3 -3
- package/lib/typescript/catalog/catalog.g.d.ts.map +1 -1
- package/lib/typescript/catalog/catalog.types.g.d.ts +6 -4
- package/lib/typescript/catalog/catalog.types.g.d.ts.map +1 -1
- package/lib/typescript/effects/ledger.d.ts +16 -1
- package/lib/typescript/effects/ledger.d.ts.map +1 -1
- package/lib/typescript/engine/effectFor.d.ts.map +1 -1
- package/lib/web/index.mjs +153 -0
- package/package.json +24 -3
|
@@ -556,7 +556,7 @@
|
|
|
556
556
|
},
|
|
557
557
|
{
|
|
558
558
|
"action": "setState",
|
|
559
|
-
"summary": "Change a live zustand store. Ask Buoy MERGES by default (replace:false): it
|
|
559
|
+
"summary": "Change a live zustand store. Ask Buoy MERGES by default (replace:false): it merges the fields you send, including inside nested objects (so {\"member\":{\"crowns\":5}} changes crowns and keeps member's other fields), and KEEPS the store's action functions (setQty, removeLine, …) and untouched keys. Never send replace:true unless you mean to reset the whole store — replacing drops the functions (they can't cross the wire), and the app's buttons that call them then crash. To change a list in the store, ADDRESS ITEMS BY THEIR OWN id instead of resending the list: {\"lines\":{\"seed-1\":{\"qty\":5}}} changes one field of one item, {\"lines\":{\"seed-2\":null}} removes that item, and a key that isn't in the list yet appends a new item (send all its fields). Items you don't name are untouched, so this is the only safe form when you haven't seen the whole list — a capped read means you CANNOT resend it without deleting what you weren't shown. Sending a plain ARRAY still works and still replaces the whole list, which is how you deliberately empty it. On a merge it's a TYPED EDIT: you can only change a field that already exists, to the same type, and any list item you add must match the shape of the ones already there — a wrong type, an unknown field, or a malformed new item is refused with the exact path. force:true bypasses. To change a single value, `path` + `value` is the safest form (path:\"lines[lineId=seed-1].qty\", value:5): it is always a merge and there is no nesting to get wrong.",
|
|
560
560
|
"params": {
|
|
561
561
|
"type": "object",
|
|
562
562
|
"properties": {
|
|
@@ -1289,7 +1289,7 @@
|
|
|
1289
1289
|
{
|
|
1290
1290
|
"toolId": "events",
|
|
1291
1291
|
"title": "Events",
|
|
1292
|
-
"summary": "The cross-tool activity timeline: one chronological ring buffer (max 200, newest-first) that aggregates events from every other installed Buoy tool — network requests, redux/zustand/jotai state changes, react-query query/mutation updates, AsyncStorage/MMKV writes, route navigations, and component renders. Reach for it first for any \"what just happened in the app?\" question, before drilling into a single-tool reader. It exposes 3 actions: exportEvents (formatted read), setEnabledSources (choose what the device records), clearEvents (wipe the timeline). CRITICAL: it only records while something is watching — a cold exportEvents on a freshly connected session usually returns 0 events because nothing has ever armed capture, which is NOT the same as \"the app did nothing\".",
|
|
1292
|
+
"summary": "The cross-tool activity timeline: one chronological ring buffer (max 200, newest-first) that aggregates events from every other installed Buoy tool — network requests, redux/zustand/jotai state changes, react-query query/mutation updates, AsyncStorage/MMKV writes, route navigations, and component renders. Reach for it first for any \"what just happened in the app?\" question, before drilling into a single-tool reader. It exposes 3 actions: exportEvents (formatted read), setEnabledSources (choose what the device records), clearEvents (wipe the timeline). CRITICAL: it only records while something is watching — a cold exportEvents on a freshly connected session usually returns 0 events because nothing has ever armed capture, which is NOT the same as \"the app did nothing\". Swift captures network, storage-async, storage-mmkv, and route. React state and render sources are unavailable. Native export accepts format, includeEventData, includeSource, includeStatus, includeTitle, includeSubtitle, includeSummaryHeader, filterMode, filterSources, dataSizeThreshold, and timestampFormat; other settings are rejected. Native detail inherits source snapshot payload limits.",
|
|
1293
1293
|
"actions": [
|
|
1294
1294
|
{
|
|
1295
1295
|
"action": "exportEvents",
|
|
@@ -1441,7 +1441,7 @@
|
|
|
1441
1441
|
},
|
|
1442
1442
|
"effect": "read",
|
|
1443
1443
|
"release": "works",
|
|
1444
|
-
"description": "Runs the device's own \"Copy Settings\" formatter over the unified store and returns {output: string, returned: number, totalAvailable: number, includedData: boolean, format: string}. The store is a 200-event ring, newest-first. Defaults are compact: includeEventData=false, so heavy raw payloads (network bodies, redux state trees, query data) stay on the device — pass settings.includeEventData=true only when you actually need them.\n\nTHREE traps a caller must know:\n(1) COLD READS ARE EMPTY. Sources are only subscribed while a consumer holds a watch on toolId \"events\" (the adapter's subscribe() calls ensureRemoteSourcesDefault) or the on-device Events modal is open. A bare call_action does NOT arm capture — the MCP SyncClient only watches on getSnapshot, never on callAction (packages/mcp/src/tools/packs/events.ts:80). If totalAvailable is 0, say \"nothing was being recorded\", not \"nothing happened\": arm it first (read the events snapshot, or call setEnabledSources), reproduce, then export.\n(2) limit IS APPLIED BEFORE FILTERING. The adapter does all.slice(0, limit) and only then does generateExport filter by settings.filterSources / filterMode (packages/events/src/sync/eventsSyncAdapter.ts:378-381 + eventExportFormatter.ts:616). Filtering to one source with limit:25 can produce an EMPTY output while `returned` still reports 25 — `returned` counts events handed to the formatter, not events in the output. When filtering by source, pass a large limit (or omit it, which uses the whole buffer).\n(3) filterSources takes GRANULAR EventSource values, not friendly names. \"storage\" matches nothing — use [\"storage-async\",\"storage-mmkv\"]; react-query is three values ([\"react-query\",\"react-query-query\",\"react-query-mutation\"]). The MCP get_events wrapper expands those aliases for you; a direct call_action does not.\n\nAn unrecognized preset name silently falls back to DEFAULT_COPY_SETTINGS instead of erroring. settings is shallow-merged OVER the preset.",
|
|
1444
|
+
"description": "Runs the device's own \"Copy Settings\" formatter over the unified store and returns {output: string, returned: number, totalAvailable: number, includedData: boolean, format: string}. The store is a 200-event ring, newest-first. Defaults are compact: includeEventData=false, so heavy raw payloads (network bodies, redux state trees, query data) stay on the device — pass settings.includeEventData=true only when you actually need them.\n\nTHREE traps a caller must know:\n(1) COLD READS ARE EMPTY. Sources are only subscribed while a consumer holds a watch on toolId \"events\" (the adapter's subscribe() calls ensureRemoteSourcesDefault) or the on-device Events modal is open. A bare call_action does NOT arm capture — the MCP SyncClient only watches on getSnapshot, never on callAction (packages/mcp/src/tools/packs/events.ts:80). If totalAvailable is 0, say \"nothing was being recorded\", not \"nothing happened\": arm it first (read the events snapshot, or call setEnabledSources), reproduce, then export.\n(2) limit IS APPLIED BEFORE FILTERING. The adapter does all.slice(0, limit) and only then does generateExport filter by settings.filterSources / filterMode (packages/events/src/sync/eventsSyncAdapter.ts:378-381 + eventExportFormatter.ts:616). Filtering to one source with limit:25 can produce an EMPTY output while `returned` still reports 25 — `returned` counts events handed to the formatter, not events in the output. When filtering by source, pass a large limit (or omit it, which uses the whole buffer).\n(3) filterSources takes GRANULAR EventSource values, not friendly names. \"storage\" matches nothing — use [\"storage-async\",\"storage-mmkv\"]; react-query is three values ([\"react-query\",\"react-query-query\",\"react-query-mutation\"]). The MCP get_events wrapper expands those aliases for you; a direct call_action does not.\n\nAn unrecognized preset name silently falls back to DEFAULT_COPY_SETTINGS instead of erroring. settings is shallow-merged OVER the preset. Swift captures network, storage-async, storage-mmkv, and route. React state and render sources are unavailable. Native export accepts format, includeEventData, includeSource, includeStatus, includeTitle, includeSubtitle, includeSummaryHeader, filterMode, filterSources, dataSizeThreshold, and timestampFormat; other settings are rejected. Native detail inherits source snapshot payload limits.",
|
|
1445
1445
|
"requires": [
|
|
1446
1446
|
"@buoy-gg/events installed and auto-discovered by FloatingDevTools",
|
|
1447
1447
|
"a live watch on toolId \"events\" (an events snapshot read, a desktop Events panel, or a prior setEnabledSources call) before the window you want recorded — otherwise the buffer is empty",
|
|
@@ -2171,7 +2171,7 @@
|
|
|
2171
2171
|
{
|
|
2172
2172
|
"toolId": "time-machine",
|
|
2173
2173
|
"title": "Time Machine",
|
|
2174
|
-
"summary": "Save and restore the app's entire client-side state (device storage, redux, zustand, jotai, react-query) as named snapshots (\"restore points\"), plus the route it was captured on. Reach for it to put the app back into a known state before re-running a flow, to preview exactly what a restore would change before committing, or to wipe the app to fresh-install state. Snapshot payloads stay on-device — `list` returns metadata only; use `inspect` for one source's actual captured data and `preview` for item-level diffs.",
|
|
2174
|
+
"summary": "Save and restore the app's entire client-side state (device storage, redux, zustand, jotai, react-query) as named snapshots (\"restore points\"), plus the route it was captured on. Reach for it to put the app back into a known state before re-running a flow, to preview exactly what a restore would change before committing, or to wipe the app to fresh-install state. Snapshot payloads stay on-device — `list` returns metadata only; use `inspect` for one source's actual captured data and `preview` for item-level diffs. Swift supports live restore of registered providers, with UserDefaults and MMKV supplied by default. Keychain is excluded. Read provider detail and restoreModes. Native capabilities omit captureBaseline and wipeAll, and mode reload is rejected before writes. Snapshots include a safety copy before restoration; this is not a full process reset.",
|
|
2175
2175
|
"actions": [
|
|
2176
2176
|
{
|
|
2177
2177
|
"action": "list",
|
|
@@ -2183,7 +2183,7 @@
|
|
|
2183
2183
|
},
|
|
2184
2184
|
"effect": "read",
|
|
2185
2185
|
"release": "works",
|
|
2186
|
-
"description": "Same payload as the tool's synced snapshot. Returns { snapshots, busy, lastOutcome, providers, route }. `snapshots[]` = { id (e.g. \"snap_m1x2y3_4\"), name, createdAt, sizeBytes, baseline?, route?:{pathname,href}, restoreRoute?, scope?, excludedKeys?, sources:{ [sourceId]: { warnings:string[] } } } — METADATA ONLY, no captured values. `providers[]` = { id, label, canCapture, canRestore, detail } for the registered sources: \"storage\", \"redux\", \"zustand\", \"jotai\", \"query\" (plus any custom ones the app registered). Read `detail` before reporting a source as broken — e.g. redux says \"Auto-instrumented store cannot be restored\" when the app didn't wrap its root reducer. `route.available` is false on apps without expo-router (those snapshots record no route). `lastOutcome` is the previous restore's per-source result. Call this first — every other action needs an `id` from here.",
|
|
2186
|
+
"description": "Same payload as the tool's synced snapshot. Returns { snapshots, busy, lastOutcome, providers, route }. `snapshots[]` = { id (e.g. \"snap_m1x2y3_4\"), name, createdAt, sizeBytes, baseline?, route?:{pathname,href}, restoreRoute?, scope?, excludedKeys?, sources:{ [sourceId]: { warnings:string[] } } } — METADATA ONLY, no captured values. `providers[]` = { id, label, canCapture, canRestore, detail } for the registered sources: \"storage\", \"redux\", \"zustand\", \"jotai\", \"query\" (plus any custom ones the app registered). Read `detail` before reporting a source as broken — e.g. redux says \"Auto-instrumented store cannot be restored\" when the app didn't wrap its root reducer. `route.available` is false on apps without expo-router (those snapshots record no route). `lastOutcome` is the previous restore's per-source result. Call this first — every other action needs an `id` from here. Swift supports live restore of registered providers, with UserDefaults and MMKV supplied by default. Keychain is excluded. Read provider detail and restoreModes. Native capabilities omit captureBaseline and wipeAll, and mode reload is rejected before writes. Snapshots include a safety copy before restoration; this is not a full process reset.",
|
|
2187
2187
|
"requires": [
|
|
2188
2188
|
"@buoy-gg/time-machine registered in FloatingDevTools"
|
|
2189
2189
|
]
|
|
@@ -2283,7 +2283,7 @@
|
|
|
2283
2283
|
},
|
|
2284
2284
|
"effect": "destructive",
|
|
2285
2285
|
"release": "works",
|
|
2286
|
-
"description": "Requires `id` (throws \"restore requires a snapshot `id`\" without it). mode \"live\" (default) replaces state in place source by source in a fixed order (storage → redux → zustand → jotai → query); mode \"reload\" restores ONLY persisted storage and then reloads the JS bundle so in-memory stores rebuild themselves. A baseline snapshot ALWAYS takes the clear+reload path regardless of mode. Storage restore is a diff — app keys missing from the snapshot are DELETED. Returns a RestoreOutcome: read `results[sourceId].applied` / `.skipped[].reason` / `.warnings` rather than assuming success (a source with canRestore:false comes back skipped with a reason, not an error), and read `willReload` and `route.status` (\"navigated\" | \"deferred\" | \"failed\" | \"unavailable\"). TWO GOTCHAS: (1) omitting `excludeKeys` makes the snapshot's own SAVED excludedKeys apply, and a saved `scope` narrows the restore to only the scoped items — passing an explicit `excludeKeys` array disables that saved scope. (2) omitting `restoreRoute` does NOT mean false: it falls back to the snapshot's own setting, which is ON whenever the snapshot captured a route. Pass restoreRoute:false to keep the app on the current screen.",
|
|
2286
|
+
"description": "Requires `id` (throws \"restore requires a snapshot `id`\" without it). mode \"live\" (default) replaces state in place source by source in a fixed order (storage → redux → zustand → jotai → query); mode \"reload\" restores ONLY persisted storage and then reloads the JS bundle so in-memory stores rebuild themselves. A baseline snapshot ALWAYS takes the clear+reload path regardless of mode. Storage restore is a diff — app keys missing from the snapshot are DELETED. Returns a RestoreOutcome: read `results[sourceId].applied` / `.skipped[].reason` / `.warnings` rather than assuming success (a source with canRestore:false comes back skipped with a reason, not an error), and read `willReload` and `route.status` (\"navigated\" | \"deferred\" | \"failed\" | \"unavailable\"). TWO GOTCHAS: (1) omitting `excludeKeys` makes the snapshot's own SAVED excludedKeys apply, and a saved `scope` narrows the restore to only the scoped items — passing an explicit `excludeKeys` array disables that saved scope. (2) omitting `restoreRoute` does NOT mean false: it falls back to the snapshot's own setting, which is ON whenever the snapshot captured a route. Pass restoreRoute:false to keep the app on the current screen. Swift supports live restore of registered providers, with UserDefaults and MMKV supplied by default. Keychain is excluded. Read provider detail and restoreModes. Native capabilities omit captureBaseline and wipeAll, and mode reload is rejected before writes. Snapshots include a safety copy before restoration; this is not a full process reset.",
|
|
2287
2287
|
"requires": [
|
|
2288
2288
|
"a source's provider must report canRestore:true or that source is skipped with a reason",
|
|
2289
2289
|
"expo-router for the route leg",
|
|
@@ -2520,6 +2520,18 @@
|
|
|
2520
2520
|
"title": "Storage",
|
|
2521
2521
|
"summary": "Read and write the app's persisted state across all three backends — AsyncStorage, every registered MMKV instance, and registered Expo SecureStore keys — plus a recorded timeline of storage writes with per-event undo/jump. Reach for this first when a value is wrong, stale, missing, or only broken after a restart/upgrade: the bad value is usually sitting in storage. Buoy's own devtool keys (@react_buoy*, @buoy*, buoy-*) are stripped from every read path, so results are app data only. Nothing here is __DEV__-gated — every action really runs in a release build.",
|
|
2522
2522
|
"actions": [
|
|
2523
|
+
{
|
|
2524
|
+
"action": "getRequiredKeys",
|
|
2525
|
+
"summary": "List the storage keys the app declares as required, with their expected types and backends.",
|
|
2526
|
+
"params": {
|
|
2527
|
+
"type": "object",
|
|
2528
|
+
"properties": {},
|
|
2529
|
+
"additionalProperties": false
|
|
2530
|
+
},
|
|
2531
|
+
"effect": "read",
|
|
2532
|
+
"release": "works",
|
|
2533
|
+
"description": "Returns the requiredStorageKeys array given to createStorageTool (or the FloatingDevTools requiredStorageKeys prop): each entry is a key, or an object with key, expectedType or expectedValue, description and storageType (async, mmkv or secure). Returns [] when the app declared none. It reports the configuration only; read the keys themselves to see whether they are present and valid. Swift returns the requirements configured through BuoyStorageModule.configure(requiredKeys:)."
|
|
2534
|
+
},
|
|
2523
2535
|
{
|
|
2524
2536
|
"action": "async.getAllKeys",
|
|
2525
2537
|
"summary": "List every AsyncStorage key in the app (Buoy's own devtool keys stripped).",
|
|
@@ -3028,7 +3040,7 @@
|
|
|
3028
3040
|
{
|
|
3029
3041
|
"toolId": "highlight-updates",
|
|
3030
3042
|
"title": "Highlight Updates",
|
|
3031
|
-
"summary": "
|
|
3043
|
+
"summary": "Read and drive the live screen with describeScreen, tapElement, and waitFor. RN also exposes React render tracking; native Swift does not. Inspect the connected device’s actions before calling a platform-specific operation. The touch-capture actions support Scenarios recording. Native capture is restricted to development builds and excludes Buoy controls and secure text inputs.",
|
|
3032
3044
|
"actions": [
|
|
3033
3045
|
{
|
|
3034
3046
|
"action": "describeScreen",
|
|
@@ -3371,9 +3383,62 @@
|
|
|
3371
3383
|
"requires": [
|
|
3372
3384
|
"@buoy-gg/highlight-updates installed and registered with <FloatingDevTools>"
|
|
3373
3385
|
]
|
|
3386
|
+
},
|
|
3387
|
+
{
|
|
3388
|
+
"action": "startTouchCapture",
|
|
3389
|
+
"summary": "Start recording supported host interactions.",
|
|
3390
|
+
"description": "Returns capture status and a reason if unavailable. RN uses its touch stream; Swift uses UIKit events and native-driver interactions in development builds. Read the status before driving the app. This does not save a scenario.",
|
|
3391
|
+
"params": {
|
|
3392
|
+
"type": "object",
|
|
3393
|
+
"properties": {},
|
|
3394
|
+
"additionalProperties": false
|
|
3395
|
+
},
|
|
3396
|
+
"effect": "write",
|
|
3397
|
+
"release": "empty"
|
|
3398
|
+
},
|
|
3399
|
+
{
|
|
3400
|
+
"action": "stopTouchCapture",
|
|
3401
|
+
"summary": "Stop capturing new interactions and retain recorded data.",
|
|
3402
|
+
"description": "Read retained records with readTouchCapture. Stopping does not save a scenario.",
|
|
3403
|
+
"params": {
|
|
3404
|
+
"type": "object",
|
|
3405
|
+
"properties": {},
|
|
3406
|
+
"additionalProperties": false
|
|
3407
|
+
},
|
|
3408
|
+
"effect": "write",
|
|
3409
|
+
"release": "works"
|
|
3410
|
+
},
|
|
3411
|
+
{
|
|
3412
|
+
"action": "clearTouchCapture",
|
|
3413
|
+
"summary": "Clear retained interactions and reset the sequence number.",
|
|
3414
|
+
"description": "Existing recording data is removed. Start subsequent reads with sinceSeq:0.",
|
|
3415
|
+
"params": {
|
|
3416
|
+
"type": "object",
|
|
3417
|
+
"properties": {},
|
|
3418
|
+
"additionalProperties": false
|
|
3419
|
+
},
|
|
3420
|
+
"effect": "destructive",
|
|
3421
|
+
"release": "works"
|
|
3422
|
+
},
|
|
3423
|
+
{
|
|
3424
|
+
"action": "readTouchCapture",
|
|
3425
|
+
"summary": "Read captured interactions after a sequence number.",
|
|
3426
|
+
"description": "Returns {status, reason, records, seq}. Pass the last returned seq as sinceSeq on the next read. Coverage depends on platform; records do not prove every gesture was captured or replayable.",
|
|
3427
|
+
"params": {
|
|
3428
|
+
"type": "object",
|
|
3429
|
+
"properties": {
|
|
3430
|
+
"sinceSeq": {
|
|
3431
|
+
"type": "number",
|
|
3432
|
+
"description": "Return records with a sequence number greater than this value. Default 0."
|
|
3433
|
+
}
|
|
3434
|
+
},
|
|
3435
|
+
"additionalProperties": false
|
|
3436
|
+
},
|
|
3437
|
+
"effect": "read",
|
|
3438
|
+
"release": "works"
|
|
3374
3439
|
}
|
|
3375
3440
|
],
|
|
3376
|
-
"unavailableWhen": "
|
|
3441
|
+
"unavailableWhen": "RN requires @buoy-gg/highlight-updates registered with FloatingDevTools; React inspection and render tracking depend on a development build. Swift exposes native interaction and touch-capture actions under this ID, without React render tracking. Inspect the connected device’s available actions. Swift touch capture refuses production builds."
|
|
3377
3442
|
},
|
|
3378
3443
|
{
|
|
3379
3444
|
"toolId": "scenarios",
|
|
@@ -3845,7 +3910,7 @@
|
|
|
3845
3910
|
},
|
|
3846
3911
|
{
|
|
3847
3912
|
"toolId": "perf-monitor",
|
|
3848
|
-
"title": "
|
|
3913
|
+
"title": "Bench",
|
|
3849
3914
|
"summary": "Measures runtime performance on the device: live JS/UI FPS, CPU and memory sampled every 250ms, plus recorded \"benchmark runs\" saved to disk and an automation mode that navigates a screen with different query params and ranks the variants. Reach for it to answer \"is this screen slow / which variant is faster / did my fix land\", not to inspect data — it reads no app state. Two traps: live metrics are all zeros until `setEnabled {enabled:true}` arms sampling, and `startAutomation` swallows every validation error, so a bad config returns ok and simply never runs.",
|
|
3850
3915
|
"actions": [
|
|
3851
3916
|
{
|
|
@@ -4315,7 +4380,7 @@
|
|
|
4315
4380
|
{
|
|
4316
4381
|
"toolId": "assets",
|
|
4317
4382
|
"title": "Assets",
|
|
4318
|
-
"summary": "Inventory of what the app SHIPS — every bundled asset (images, fonts, video, audio, data) with dimensions, @1x/@2x/@3x scale coverage, content hash, byte size, loaded-vs-never-loaded state, audit findings (duplicates, unused, WebP candidates, over-decode, heavy GIFs/fonts, scale gaps), and a diff vs a saved baseline. Reach for it for bundle-size questions (\"what's making the app big\", \"did this branch add megabytes\", \"which images ship but are never used\"); use the images tool instead for what the app actually RENDERS. Nothing here is __DEV__-gated (zero `__DEV__` in packages/assets/src), but the Metro dev server is what supplies the full-bundle graph and real byte sizes — in an embedded/release bundle the inventory shrinks to registry-only records with estimated sizes.",
|
|
4383
|
+
"summary": "Inventory of what the app SHIPS — every bundled asset (images, fonts, video, audio, data) with dimensions, @1x/@2x/@3x scale coverage, content hash, byte size, loaded-vs-never-loaded state, audit findings (duplicates, unused, WebP candidates, over-decode, heavy GIFs/fonts, scale gaps), and a diff vs a saved baseline. Reach for it for bundle-size questions (\"what's making the app big\", \"did this branch add megabytes\", \"which images ship but are never used\"); use the images tool instead for what the app actually RENDERS. Nothing here is __DEV__-gated (zero `__DEV__` in packages/assets/src), but the Metro dev server is what supplies the full-bundle graph and real byte sizes — in an embedded/release bundle the inventory shrinks to registry-only records with estimated sizes. Swift inventories loose resources in the main bundle and explicitly registered app resource bundles. Buoy resource bundles are excluded. Compiled Assets.car files are aggregate records, not per-image inventory. Native loaded status requires host calls to BuoyAssets.markLoaded; unobserved does not mean unused. Native scale and decoded-memory insight arrays are currently empty. Check scanStatus.coverage and warnings.",
|
|
4319
4384
|
"actions": [
|
|
4320
4385
|
{
|
|
4321
4386
|
"action": "list",
|
|
@@ -4349,7 +4414,7 @@
|
|
|
4349
4414
|
},
|
|
4350
4415
|
"effect": "read",
|
|
4351
4416
|
"release": "works",
|
|
4352
|
-
"description": "Returns { stats, scanStatus, insights, diff, total, records }. `records` is sorted by size descending and sliced to `limit`; `total` is the count AFTER kind/loadedOnly filtering but BEFORE the slice. Each record: { id, key, registryId, name, type, kind, hash, location, width, height, scales, uri, loaded, sizeBytes, sizeSource }. `sizeSource` is \"measured\" (real bytes from the Metro dev server) or \"estimate\" (decoded RGBA memory, width*scale*height*scale*4) — never present them as the same number. `insights` carries id lists: duplicates (grouped by content hash, with wastedBytes), neverLoaded, webpCandidates (png/jpg >= 50KB), overDecode (decodes to >2 screenfuls), heavyGifs (>= 100KB), heavyFonts (>= 150KB), scaleGaps, scaleAnomalies. If `scanStatus.lastScanAt` is null or `graphCount` is null, run `rescan` first — the inventory is registry-only until the Metro graph is merged. If `scanStatus.measuring` is true, byte totals are partial; re-run shortly.",
|
|
4417
|
+
"description": "Returns { stats, scanStatus, insights, diff, total, records }. `records` is sorted by size descending and sliced to `limit`; `total` is the count AFTER kind/loadedOnly filtering but BEFORE the slice. Each record: { id, key, registryId, name, type, kind, hash, location, width, height, scales, uri, loaded, sizeBytes, sizeSource }. `sizeSource` is \"measured\" (real bytes from the Metro dev server) or \"estimate\" (decoded RGBA memory, width*scale*height*scale*4) — never present them as the same number. `insights` carries id lists: duplicates (grouped by content hash, with wastedBytes), neverLoaded, webpCandidates (png/jpg >= 50KB), overDecode (decodes to >2 screenfuls), heavyGifs (>= 100KB), heavyFonts (>= 150KB), scaleGaps, scaleAnomalies. If `scanStatus.lastScanAt` is null or `graphCount` is null, run `rescan` first — the inventory is registry-only until the Metro graph is merged. If `scanStatus.measuring` is true, byte totals are partial; re-run shortly. Swift inventories loose resources in the main bundle and explicitly registered app resource bundles. Buoy resource bundles are excluded. Compiled Assets.car files are aggregate records, not per-image inventory. Native loaded status requires host calls to BuoyAssets.markLoaded; unobserved does not mean unused. Native scale and decoded-memory insight arrays are currently empty. Check scanStatus.coverage and warnings.",
|
|
4353
4418
|
"requires": [
|
|
4354
4419
|
"@buoy-gg/assets imported in the app",
|
|
4355
4420
|
"Metro dev server (for full-bundle coverage, never-loaded detection and measured bytes)"
|
|
@@ -4465,7 +4530,7 @@
|
|
|
4465
4530
|
},
|
|
4466
4531
|
"effect": "read",
|
|
4467
4532
|
"release": "works",
|
|
4468
|
-
"description": "Returns { registryAvailable, patched, registryCount, graphSupported, graphCount, graphError, lastScanAt, measuring, measuredCount, fontFamilies: string[], localAssetCount }. Use it to explain a thin or surprising inventory before drawing conclusions: registryAvailable:false means the RN asset registry could not be required at all; graphCount:null with a graphError means only runtime-registered assets are known (so 'never loaded' is unanswerable); measuring:true means byte totals are still landing. lastScanAt:null means nothing has scanned yet — call rescan."
|
|
4533
|
+
"description": "Returns { registryAvailable, patched, registryCount, graphSupported, graphCount, graphError, lastScanAt, measuring, measuredCount, fontFamilies: string[], localAssetCount }. Use it to explain a thin or surprising inventory before drawing conclusions: registryAvailable:false means the RN asset registry could not be required at all; graphCount:null with a graphError means only runtime-registered assets are known (so 'never loaded' is unanswerable); measuring:true means byte totals are still landing. lastScanAt:null means nothing has scanned yet — call rescan. Swift inventories loose resources in the main bundle and explicitly registered app resource bundles. Buoy resource bundles are excluded. Compiled Assets.car files are aggregate records, not per-image inventory. Native loaded status requires host calls to BuoyAssets.markLoaded; unobserved does not mean unused. Native scale and decoded-memory insight arrays are currently empty. Check scanStatus.coverage and warnings."
|
|
4469
4534
|
}
|
|
4470
4535
|
],
|
|
4471
4536
|
"unavailableWhen": "The app doesn't import @buoy-gg/assets (autoExternalSync only registers the adapter when the module resolves — packages/devtools-floating-menu/src/floatingMenu/autoExternalSync.tsx:391), or the app is a release/production JS bundle that didn't opt in with `externalSync.enableInRelease` plus a real Pro license, in which case the device never connects to the broker at all."
|
|
@@ -5130,5 +5195,335 @@
|
|
|
5130
5195
|
}
|
|
5131
5196
|
],
|
|
5132
5197
|
"unavailableWhen": "Only present while an Ask Buoy session is running — which is exactly when this catalog is in use, so in practice always available to you."
|
|
5198
|
+
},
|
|
5199
|
+
{
|
|
5200
|
+
"toolId": "push-notifications",
|
|
5201
|
+
"title": "Push Notifications",
|
|
5202
|
+
"summary": "Inspect notification receipt, responses, presentation decisions, background-task results and tokens from an explicitly configured Expo capture adapter. Use test IDs to correlate stages. Simulator sending lives in the desktop host and is not a device action. Real-provider sending is not implemented.",
|
|
5203
|
+
"unavailableWhen": "Capture requires @buoy-gg/notifications and early installExpoNotificationCapture setup with the app SDK. Release capture needs an explicit enableInRelease option; release desktop sync separately requires its own opt-in and Pro. Background evidence requires the app task wrapper. Native delivery validation covers Expo 56 on iOS.",
|
|
5204
|
+
"actions": [
|
|
5205
|
+
{
|
|
5206
|
+
"action": "getSnapshot",
|
|
5207
|
+
"summary": "Read captured notification evidence and tokens.",
|
|
5208
|
+
"description": "Returns the bounded journal, session, provider capabilities, permissions and token observations. A missing callback does not prove that no OS alert appeared.",
|
|
5209
|
+
"effect": "read",
|
|
5210
|
+
"release": "works",
|
|
5211
|
+
"params": {
|
|
5212
|
+
"type": "object",
|
|
5213
|
+
"properties": {},
|
|
5214
|
+
"additionalProperties": false
|
|
5215
|
+
}
|
|
5216
|
+
},
|
|
5217
|
+
{
|
|
5218
|
+
"action": "getCapabilities",
|
|
5219
|
+
"summary": "Check notification capture setup.",
|
|
5220
|
+
"description": "Returns provider/version, app ID, platform, supported operations and durable-storage state. No device tokens are registered by this action.",
|
|
5221
|
+
"effect": "read",
|
|
5222
|
+
"release": "works",
|
|
5223
|
+
"params": {
|
|
5224
|
+
"type": "object",
|
|
5225
|
+
"properties": {},
|
|
5226
|
+
"additionalProperties": false
|
|
5227
|
+
}
|
|
5228
|
+
},
|
|
5229
|
+
{
|
|
5230
|
+
"action": "getEvent",
|
|
5231
|
+
"summary": "Read one captured event by id.",
|
|
5232
|
+
"description": "Returns an event by its Buoy record ID, or null after eviction. Native notification ID and test ID are separate fields.",
|
|
5233
|
+
"effect": "read",
|
|
5234
|
+
"release": "works",
|
|
5235
|
+
"params": {
|
|
5236
|
+
"type": "object",
|
|
5237
|
+
"properties": {
|
|
5238
|
+
"id": {
|
|
5239
|
+
"type": "string",
|
|
5240
|
+
"description": "Buoy event record id from getSnapshot.events."
|
|
5241
|
+
}
|
|
5242
|
+
},
|
|
5243
|
+
"additionalProperties": false,
|
|
5244
|
+
"required": [
|
|
5245
|
+
"id"
|
|
5246
|
+
]
|
|
5247
|
+
}
|
|
5248
|
+
},
|
|
5249
|
+
{
|
|
5250
|
+
"action": "getPermissions",
|
|
5251
|
+
"summary": "Refresh notification permission settings.",
|
|
5252
|
+
"description": "Reads the existing OS settings through Expo. Does not display a permission prompt.",
|
|
5253
|
+
"effect": "read",
|
|
5254
|
+
"release": "works",
|
|
5255
|
+
"params": {
|
|
5256
|
+
"type": "object",
|
|
5257
|
+
"properties": {},
|
|
5258
|
+
"additionalProperties": false
|
|
5259
|
+
}
|
|
5260
|
+
},
|
|
5261
|
+
{
|
|
5262
|
+
"action": "listPresented",
|
|
5263
|
+
"summary": "Inspect notifications currently in the system tray.",
|
|
5264
|
+
"description": "Reads a current snapshot through Expo. This is not a historical record and does not dismiss notifications.",
|
|
5265
|
+
"effect": "read",
|
|
5266
|
+
"release": "works",
|
|
5267
|
+
"params": {
|
|
5268
|
+
"type": "object",
|
|
5269
|
+
"properties": {},
|
|
5270
|
+
"additionalProperties": false
|
|
5271
|
+
}
|
|
5272
|
+
},
|
|
5273
|
+
{
|
|
5274
|
+
"action": "refreshToken",
|
|
5275
|
+
"summary": "Register a token with type \"device\" or \"expo\". Expo registration requires a configured projectId.",
|
|
5276
|
+
"description": "May register with APNs/FCM or contact Expo Push Service. Expo tokens require projectId in app setup. Never invoke merely to open the inspector.",
|
|
5277
|
+
"effect": "write",
|
|
5278
|
+
"release": "works",
|
|
5279
|
+
"params": {
|
|
5280
|
+
"type": "object",
|
|
5281
|
+
"properties": {
|
|
5282
|
+
"type": {
|
|
5283
|
+
"type": "string",
|
|
5284
|
+
"enum": [
|
|
5285
|
+
"device",
|
|
5286
|
+
"expo"
|
|
5287
|
+
],
|
|
5288
|
+
"description": "device returns APNs on iOS or FCM on Android; expo requests an Expo token."
|
|
5289
|
+
}
|
|
5290
|
+
},
|
|
5291
|
+
"additionalProperties": false,
|
|
5292
|
+
"required": [
|
|
5293
|
+
"type"
|
|
5294
|
+
]
|
|
5295
|
+
}
|
|
5296
|
+
},
|
|
5297
|
+
{
|
|
5298
|
+
"action": "setCaptureSession",
|
|
5299
|
+
"summary": "Set runId and optional durationMs to arm capture, or runId:null to stop.",
|
|
5300
|
+
"description": "Arm while the app is connected, before backgrounding or stopping it. Await durable:true before relying on cold-launch recovery. Sessions last at most one hour.",
|
|
5301
|
+
"effect": "write",
|
|
5302
|
+
"release": "works",
|
|
5303
|
+
"params": {
|
|
5304
|
+
"type": "object",
|
|
5305
|
+
"properties": {
|
|
5306
|
+
"runId": {
|
|
5307
|
+
"type": [
|
|
5308
|
+
"string",
|
|
5309
|
+
"null"
|
|
5310
|
+
],
|
|
5311
|
+
"description": "A test-run label of 1 to 128 characters, or null to stop capture."
|
|
5312
|
+
},
|
|
5313
|
+
"durationMs": {
|
|
5314
|
+
"type": "number",
|
|
5315
|
+
"minimum": 1000,
|
|
5316
|
+
"maximum": 3600000,
|
|
5317
|
+
"description": "Capture duration in milliseconds. Default 1800000."
|
|
5318
|
+
}
|
|
5319
|
+
},
|
|
5320
|
+
"additionalProperties": false,
|
|
5321
|
+
"required": [
|
|
5322
|
+
"runId"
|
|
5323
|
+
]
|
|
5324
|
+
}
|
|
5325
|
+
},
|
|
5326
|
+
{
|
|
5327
|
+
"action": "clearCapturedEvents",
|
|
5328
|
+
"summary": "Clear Buoy notification history.",
|
|
5329
|
+
"description": "Deletes retained captured events. Leaves device tokens, OS notifications and the capture session unchanged.",
|
|
5330
|
+
"effect": "destructive",
|
|
5331
|
+
"release": "works",
|
|
5332
|
+
"params": {
|
|
5333
|
+
"type": "object",
|
|
5334
|
+
"properties": {},
|
|
5335
|
+
"additionalProperties": false
|
|
5336
|
+
}
|
|
5337
|
+
},
|
|
5338
|
+
{
|
|
5339
|
+
"action": "scheduleLocal",
|
|
5340
|
+
"summary": "Schedule a local notification with title, body, optional data and a delay in seconds.",
|
|
5341
|
+
"description": "This tests local notification behavior, not APNs or FCM delivery. The app must be connected before scheduling. Uses the app SDK and notification settings.",
|
|
5342
|
+
"effect": "write",
|
|
5343
|
+
"release": "works",
|
|
5344
|
+
"params": {
|
|
5345
|
+
"type": "object",
|
|
5346
|
+
"properties": {
|
|
5347
|
+
"title": {
|
|
5348
|
+
"type": "string",
|
|
5349
|
+
"description": "Displayed title."
|
|
5350
|
+
},
|
|
5351
|
+
"body": {
|
|
5352
|
+
"type": "string",
|
|
5353
|
+
"description": "Displayed message."
|
|
5354
|
+
},
|
|
5355
|
+
"data": {
|
|
5356
|
+
"type": "object",
|
|
5357
|
+
"description": "Custom notification data. Include __buoyTestId to correlate with a test run."
|
|
5358
|
+
},
|
|
5359
|
+
"seconds": {
|
|
5360
|
+
"type": "number",
|
|
5361
|
+
"minimum": 1,
|
|
5362
|
+
"maximum": 3600,
|
|
5363
|
+
"description": "Delay before local delivery."
|
|
5364
|
+
}
|
|
5365
|
+
},
|
|
5366
|
+
"additionalProperties": false,
|
|
5367
|
+
"required": [
|
|
5368
|
+
"title",
|
|
5369
|
+
"body",
|
|
5370
|
+
"seconds"
|
|
5371
|
+
]
|
|
5372
|
+
}
|
|
5373
|
+
}
|
|
5374
|
+
]
|
|
5375
|
+
},
|
|
5376
|
+
{
|
|
5377
|
+
"toolId": "image-overlay",
|
|
5378
|
+
"title": "Image Overlay",
|
|
5379
|
+
"summary": "Control the Swift design-image overlay. Uses the same state as the on-device controls. Read getSnapshot after loadImage to check loading and error. Available on Swift iOS only; check device capabilities.",
|
|
5380
|
+
"actions": [
|
|
5381
|
+
{
|
|
5382
|
+
"action": "getSnapshot",
|
|
5383
|
+
"summary": "Read overlay loading, image presence, placement, selected target and settings.",
|
|
5384
|
+
"params": {
|
|
5385
|
+
"type": "object",
|
|
5386
|
+
"properties": {},
|
|
5387
|
+
"additionalProperties": false
|
|
5388
|
+
},
|
|
5389
|
+
"effect": "read",
|
|
5390
|
+
"release": "works"
|
|
5391
|
+
},
|
|
5392
|
+
{
|
|
5393
|
+
"action": "listTargets",
|
|
5394
|
+
"summary": "Scan visible app image-overlay targets and return their ids, labels and frames.",
|
|
5395
|
+
"params": {
|
|
5396
|
+
"type": "object",
|
|
5397
|
+
"properties": {},
|
|
5398
|
+
"additionalProperties": false
|
|
5399
|
+
},
|
|
5400
|
+
"effect": "read",
|
|
5401
|
+
"release": "works"
|
|
5402
|
+
},
|
|
5403
|
+
{
|
|
5404
|
+
"action": "selectTarget",
|
|
5405
|
+
"summary": "Attach the overlay to a visible target.",
|
|
5406
|
+
"params": {
|
|
5407
|
+
"type": "object",
|
|
5408
|
+
"properties": {
|
|
5409
|
+
"id": {
|
|
5410
|
+
"type": "string",
|
|
5411
|
+
"description": "Target id returned by listTargets."
|
|
5412
|
+
}
|
|
5413
|
+
},
|
|
5414
|
+
"additionalProperties": false,
|
|
5415
|
+
"required": [
|
|
5416
|
+
"id"
|
|
5417
|
+
]
|
|
5418
|
+
},
|
|
5419
|
+
"effect": "write",
|
|
5420
|
+
"release": "works"
|
|
5421
|
+
},
|
|
5422
|
+
{
|
|
5423
|
+
"action": "loadImage",
|
|
5424
|
+
"summary": "Start loading a design image; returns {scheduled:true}. Check getSnapshot for completion or error.",
|
|
5425
|
+
"params": {
|
|
5426
|
+
"type": "object",
|
|
5427
|
+
"properties": {
|
|
5428
|
+
"url": {
|
|
5429
|
+
"type": "string",
|
|
5430
|
+
"description": "HTTP(S) image URL."
|
|
5431
|
+
}
|
|
5432
|
+
},
|
|
5433
|
+
"additionalProperties": false,
|
|
5434
|
+
"required": [
|
|
5435
|
+
"url"
|
|
5436
|
+
]
|
|
5437
|
+
},
|
|
5438
|
+
"effect": "write",
|
|
5439
|
+
"release": "works"
|
|
5440
|
+
},
|
|
5441
|
+
{
|
|
5442
|
+
"action": "setSettings",
|
|
5443
|
+
"summary": "Update overlay settings. Invalid batches fail before any settings change.",
|
|
5444
|
+
"params": {
|
|
5445
|
+
"type": "object",
|
|
5446
|
+
"properties": {
|
|
5447
|
+
"visible": {
|
|
5448
|
+
"type": "boolean",
|
|
5449
|
+
"description": "Show the overlay."
|
|
5450
|
+
},
|
|
5451
|
+
"locked": {
|
|
5452
|
+
"type": "boolean",
|
|
5453
|
+
"description": "Lock direct manipulation."
|
|
5454
|
+
},
|
|
5455
|
+
"flipped": {
|
|
5456
|
+
"type": "boolean",
|
|
5457
|
+
"description": "Flip horizontally."
|
|
5458
|
+
},
|
|
5459
|
+
"flippedY": {
|
|
5460
|
+
"type": "boolean",
|
|
5461
|
+
"description": "Flip vertically."
|
|
5462
|
+
},
|
|
5463
|
+
"showOutline": {
|
|
5464
|
+
"type": "boolean",
|
|
5465
|
+
"description": "Show the target outline."
|
|
5466
|
+
},
|
|
5467
|
+
"autoTrack": {
|
|
5468
|
+
"type": "boolean",
|
|
5469
|
+
"description": "Follow the selected target."
|
|
5470
|
+
},
|
|
5471
|
+
"opacity": {
|
|
5472
|
+
"type": "number",
|
|
5473
|
+
"description": "Opacity from 0 to 1."
|
|
5474
|
+
},
|
|
5475
|
+
"scale": {
|
|
5476
|
+
"type": "number",
|
|
5477
|
+
"description": "Positive scale factor."
|
|
5478
|
+
},
|
|
5479
|
+
"offsetX": {
|
|
5480
|
+
"type": "number",
|
|
5481
|
+
"description": "Horizontal offset in points."
|
|
5482
|
+
},
|
|
5483
|
+
"offsetY": {
|
|
5484
|
+
"type": "number",
|
|
5485
|
+
"description": "Vertical offset in points."
|
|
5486
|
+
}
|
|
5487
|
+
},
|
|
5488
|
+
"additionalProperties": false
|
|
5489
|
+
},
|
|
5490
|
+
"effect": "write",
|
|
5491
|
+
"release": "works"
|
|
5492
|
+
},
|
|
5493
|
+
{
|
|
5494
|
+
"action": "fitToScreen",
|
|
5495
|
+
"summary": "Fit the image to the screen width while preserving its aspect ratio.",
|
|
5496
|
+
"params": {
|
|
5497
|
+
"type": "object",
|
|
5498
|
+
"properties": {},
|
|
5499
|
+
"additionalProperties": false
|
|
5500
|
+
},
|
|
5501
|
+
"effect": "write",
|
|
5502
|
+
"release": "works"
|
|
5503
|
+
},
|
|
5504
|
+
{
|
|
5505
|
+
"action": "resetSettings",
|
|
5506
|
+
"summary": "Reset opacity, flips, scale and offsets.",
|
|
5507
|
+
"params": {
|
|
5508
|
+
"type": "object",
|
|
5509
|
+
"properties": {},
|
|
5510
|
+
"additionalProperties": false
|
|
5511
|
+
},
|
|
5512
|
+
"effect": "write",
|
|
5513
|
+
"release": "works"
|
|
5514
|
+
},
|
|
5515
|
+
{
|
|
5516
|
+
"action": "remove",
|
|
5517
|
+
"summary": "Remove the image and target; cancel pending image loading.",
|
|
5518
|
+
"params": {
|
|
5519
|
+
"type": "object",
|
|
5520
|
+
"properties": {},
|
|
5521
|
+
"additionalProperties": false
|
|
5522
|
+
},
|
|
5523
|
+
"effect": "write",
|
|
5524
|
+
"release": "works"
|
|
5525
|
+
}
|
|
5526
|
+
],
|
|
5527
|
+
"unavailableWhen": "The native Swift image-overlay adapter is not registered. React Native does not expose these actions."
|
|
5133
5528
|
}
|
|
5134
5529
|
]
|
|
@@ -11,7 +11,7 @@ exports.CATALOG_ACTIONS = void 0;
|
|
|
11
11
|
* The catalog's tool ids and action names as types, so a wrong name fails
|
|
12
12
|
* at compile time. `catalog.g.ts` carries the data.
|
|
13
13
|
*
|
|
14
|
-
*
|
|
14
|
+
* 26 Buoy tools, 218 actions.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
/** Action names per tool — the runtime mirror of {@link CatalogActionMap}. */
|
|
@@ -31,14 +31,16 @@ const CATALOG_ACTIONS = exports.CATALOG_ACTIONS = {
|
|
|
31
31
|
"js-top": ["sample", "getOriginDetail", "setEnabled", "pause", "resume", "clear"],
|
|
32
32
|
"app": ["ping", "reloadApp"],
|
|
33
33
|
"time-machine": ["list", "capture", "captureBaseline", "wipeAll", "restore", "preview", "inspect", "delete", "rename", "duplicate", "setExclusions", "setScope", "setRestoreRoute"],
|
|
34
|
-
"storage": ["async.getAllKeys", "async.multiGet", "async.getItem", "async.setItem", "async.removeItem", "async.multiRemove", "async.multiSet", "async.clear", "clearAppStorage", "getEventDetail", "clearEvents", "timeTravel.undo", "timeTravel.jump", "mmkv.snapshot", "mmkv.get", "mmkv.set", "mmkv.remove", "secure.keys", "secure.snapshot", "secure.get", "secure.set", "secure.delete"],
|
|
35
|
-
"highlight-updates": ["describeScreen", "tapElement", "waitFor", "beginMeasurement", "endMeasurement", "locateComponent", "getRenderDetail", "setEnabled", "toggle", "setSilentTracking", "toggleFreeze", "setSpotlight", "clearRenderCounts"],
|
|
34
|
+
"storage": ["getRequiredKeys", "async.getAllKeys", "async.multiGet", "async.getItem", "async.setItem", "async.removeItem", "async.multiRemove", "async.multiSet", "async.clear", "clearAppStorage", "getEventDetail", "clearEvents", "timeTravel.undo", "timeTravel.jump", "mmkv.snapshot", "mmkv.get", "mmkv.set", "mmkv.remove", "secure.keys", "secure.snapshot", "secure.get", "secure.set", "secure.delete"],
|
|
35
|
+
"highlight-updates": ["describeScreen", "tapElement", "waitFor", "beginMeasurement", "endMeasurement", "locateComponent", "getRenderDetail", "setEnabled", "toggle", "setSilentTracking", "toggleFreeze", "setSpotlight", "clearRenderCounts", "startTouchCapture", "stopTouchCapture", "clearTouchCapture", "readTouchCapture"],
|
|
36
36
|
"scenarios": ["listScenarios", "getScenario", "save", "acceptDraft", "discardDraft", "preview", "run", "deactivate", "delete", "setFolder", "listFolders", "getActive", "export"],
|
|
37
37
|
"perf-monitor": ["setEnabled", "startRecording", "stopRecording", "savePending", "discardPending", "mark", "startAutomation", "cancelAutomation", "acknowledgeAutomation", "refreshIndex", "getAutomationConfig", "setAutomationConfig", "loadReport", "deleteReport", "deleteBatch", "clearAll"],
|
|
38
38
|
"assets": ["list", "getDetail", "rescan", "measureSizes", "saveBaseline", "clearBaseline", "getDiff", "clearRecords", "getScanStatus"],
|
|
39
39
|
"tv-remote": ["arm", "getEventsSince", "setMenuCapture", "disarm", "clear"],
|
|
40
40
|
"focus-inspector": ["rescan", "focusElement", "setTracking", "clearHistory"],
|
|
41
41
|
"images": ["list", "getDetail", "getCaptureStatus", "retry", "flash", "proveSavings", "setOverride", "clearOverride", "setNetworkMode", "setBlankImages", "hardReload", "evictDisk", "massAction", "clearRecords", "clearExpoCaches"],
|
|
42
|
-
"ask-buoy": ["listChanges", "undoAll", "retrieve", "openProcedure"]
|
|
42
|
+
"ask-buoy": ["listChanges", "undoAll", "retrieve", "openProcedure"],
|
|
43
|
+
"push-notifications": ["getSnapshot", "getCapabilities", "getEvent", "getPermissions", "listPresented", "refreshToken", "setCaptureSession", "clearCapturedEvents", "scheduleLocal"],
|
|
44
|
+
"image-overlay": ["getSnapshot", "listTargets", "selectTarget", "loadImage", "setSettings", "fitToScreen", "resetSettings", "remove"]
|
|
43
45
|
};
|
|
44
46
|
//# sourceMappingURL=catalog.types.g.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CATALOG_ACTIONS","exports"],"sourceRoot":"../../../src","sources":["catalog/catalog.types.g.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;
|
|
1
|
+
{"version":3,"names":["CATALOG_ACTIONS","exports"],"sourceRoot":"../../../src","sources":["catalog/catalog.types.g.ts"],"mappings":"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","ignoreList":[]}
|