@buoy-gg/agent-core 7.0.84 → 7.0.86

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.
@@ -1956,11 +1956,10 @@
1956
1956
  "additionalProperties": false
1957
1957
  },
1958
1958
  "effect": "write",
1959
- "release": "noop",
1959
+ "release": "works",
1960
1960
  "description": "Create (or replace by id) a rule that forces matching requests to return a chosen status/body, fail outright, or arrive late. Pick this over query.setQueryData when the change must survive a refetch or reload, or when the ask is about what the API returns; follow it with query.invalidate so the mounted screen refetches through the rule. To change ONE value of the real response send fromRequestId plus `bodyPath` and `bodyValue` (bodyPath:\"sprites.front_default\", or \"stats[stat.name=hp].base_stat\" for one row of a list) \u2014 there is no nesting to get wrong, which matters most here because you read that body through a wire that truncates at 24,000 characters. For several fields use `bodyPatch` with ONLY those fields; never paste a whole captured body back. For \"just the NEXT call\" / \"once, then let it work again\", send rule.times:1 \u2014 the rule auto-disables after one match. Without times it overrides EVERY matching request until deleted. Never fake one-shot by triggering the request yourself and deleting the rule: that spends the failure the user wanted to see. No captured request is needed: urlPattern + methods + status/body (or kind/delayMs) works for a call the app has not made yet \u2014 use fromRequestId only when you need the real response to edit.",
1961
- "releaseNote": "packages/network/src/network/overrides/engine.ts:74 \u2014 overrideForRequest returns null when __DEV__ === false. The rule is still created, persisted and listed, and this action still returns ok:true, but it is NEVER applied to real traffic in a release build. Confirm with debugOverrides \u2192 engine.devFlag before telling anyone the override took effect.",
1961
+ "releaseNote": "A release build needs a paid Buoy plan and the Buoy menu on screen, or this is refused or saved without applying.",
1962
1962
  "requires": [
1963
- "a __DEV__ build for the rule to actually apply",
1964
1963
  "something holding the interceptor open (an enabled rule pins it itself)",
1965
1964
  "Buoy Pro only to keep more than 1 rule \u2014 and only in the on-device UI; this action is not license-gated"
1966
1965
  ]
@@ -1986,12 +1985,10 @@
1986
1985
  "additionalProperties": false
1987
1986
  },
1988
1987
  "effect": "write",
1989
- "release": "noop",
1988
+ "release": "works",
1990
1989
  "description": "Flips a single rule's enabled flag without touching the other rules or the master switch. Use it to stage a rule and arm it later, or to silence one you want to keep. WARNING on optionality: `enabled` is read with a truthiness cast, so omitting it means DISABLE. Returns {ok:true} even when no rule has that id \u2014 it does not verify; confirm with listOverrideRules. Returns {ok:false,error:\"Missing rule id.\"} when `id` is absent. Note that arming a rule here does NOT turn the master switch on (unlike upsertOverrideRule), so a rule can read as enabled and still be dark.",
1991
- "releaseNote": "packages/network/src/network/overrides/engine.ts:74 \u2014 overrideForRequest returns null when __DEV__ === false, so arming a rule in a release build changes the flag and nothing else. The action still returns ok:true.",
1992
- "requires": [
1993
- "a __DEV__ build for the rule to actually apply"
1994
- ],
1990
+ "releaseNote": "A release build needs a paid Buoy plan and the Buoy menu on screen, or this is refused or saved without applying.",
1991
+ "requires": [],
1995
1992
  "undo": {
1996
1993
  "action": "setOverrideRuleEnabled",
1997
1994
  "note": "Call again with the same id and the inverted `enabled` value."
@@ -2012,12 +2009,10 @@
2012
2009
  "additionalProperties": false
2013
2010
  },
2014
2011
  "effect": "write",
2015
- "release": "noop",
2012
+ "release": "works",
2016
2013
  "description": "One call changes how every matching request in the app behaves, so treat it as a broad-blast action rather than a toggle. WARNING on optionality: `enabled` is read with a truthiness cast, so calling this with no params DISABLES all overrides. Returns {ok:true, enabled:<the resulting state>} \u2014 read that back rather than assuming. This is also the re-arm for the auto-pause state: when listOverrideRules reports autoPaused:true the launch guard turned overrides off by itself after 3 launches with rules armed and untouched, and only this puts them back. Individual rules keep their own enabled flags underneath.",
2017
- "releaseNote": "packages/network/src/network/overrides/engine.ts:74 \u2014 overrideForRequest returns null when __DEV__ === false, so flipping the master switch in a release build changes nothing about real traffic in either direction. The action still returns ok:true with the new flag.",
2018
- "requires": [
2019
- "a __DEV__ build for rules to actually apply"
2020
- ],
2014
+ "releaseNote": "A release build needs a paid Buoy plan and the Buoy menu on screen, or this is refused or saved without applying.",
2015
+ "requires": [],
2021
2016
  "undo": {
2022
2017
  "action": "setOverridesEnabled",
2023
2018
  "note": "Call again with the inverted `enabled` value. Per-rule enabled flags are untouched either way."
@@ -2068,7 +2063,7 @@
2068
2063
  },
2069
2064
  {
2070
2065
  "action": "setNetworkConditions",
2071
- "summary": "Set profile for speed. Set connection for app link state. These work in dev builds. Down caps pace bytes in JS. Up caps wait before send based on body bytes. The socket is not paced. Set profile alone to normal to clear both. Reload clears them too. Set at least one field.",
2066
+ "summary": "Set profile for speed. Set connection for app link state. These work in dev builds. A release build needs a paid Buoy plan and the Buoy menu on screen. Down caps pace bytes in JS. Up caps wait before send based on body bytes. The socket is not paced. Set profile alone to normal to clear both. Reload clears them too. Set at least one field.",
2072
2067
  "params": {
2073
2068
  "type": "object",
2074
2069
  "properties": {
@@ -2101,8 +2096,8 @@
2101
2096
  "additionalProperties": false
2102
2097
  },
2103
2098
  "effect": "write",
2104
- "release": "throws",
2105
- "releaseNote": "Release builds refuse active conditions. Normal can still clear the profile."
2099
+ "release": "works",
2100
+ "releaseNote": "A release build needs a paid Buoy plan and the Buoy menu on screen, or this is refused or saved without applying."
2106
2101
  }
2107
2102
  ],
2108
2103
  "unavailableWhen": "The app does not mount the network tool (the @buoy-gg/network preset is absent from the FloatingDevTools apps list), or the runtime has no XMLHttpRequest/fetch to intercept (Node/headless/desktop-mirror \u2014 there getCaptureStatus reports interceptorInstalled:null and debugOverrides throws). The override actions are additionally Pro-gated by the MCP/dashboard layer (requireProDevice)."
@@ -5183,13 +5178,12 @@
5183
5178
  "additionalProperties": false
5184
5179
  },
5185
5180
  "effect": "destructive",
5186
- "release": "throws",
5181
+ "release": "works",
5187
5182
  "description": "Atomic pre-flight runs first: on failure it returns {ok:false, preflightErrors:[...], conflict} and NOTHING is applied. Otherwise returns a RunReport {ok, scenarioId, name, steps:[{label, ok, error, skipped, ms}], effects:[{kind,label,...}]}. Steps run in order and STOP at the first failure \u2014 later steps are marked skipped, and the steps before it already applied, leaving the device in a partial state (call deactivate). Exclusive activation: running a different scenario while one is active deactivates the active one first. Budgets are 10s per step and 60s overall. Effects vary in reversibility \u2014 a network override rule is removed on deactivate, but a storage write has NO automatic inverse and will be reported as unrestored. Drafts cannot run. After this, the device shows a SIMULATED banner: anything the user observes is partly fake until deactivate.",
5188
- "releaseNote": "packages/scenarios/src/store/scenariosStore.ts:98-104 (isRunnableInThisBuild) \u2014 in a release bundle checkBeforeRun injects \"Scenarios cannot run in a production build.\", so the adapter returns {ok:false, preflightErrors:[...]} and applies nothing; scenariosStore.run() at :346-348 throws the same message. Verified by packages/scenarios/src/__tests__/runGate.release.test.ts. Report the refusal \u2014 never claim the scenario was applied.",
5183
+ "releaseNote": "A release build needs a paid Buoy plan and the Buoy menu on screen, or this is refused or saved without applying.",
5189
5184
  "requires": [
5190
5185
  "Scenarios tool installed in the app",
5191
- "every tool a step targets must be installed on the device (network, storage, impersonate, route-events, query, time-machine)",
5192
- "a development build \u2014 release builds refuse"
5186
+ "every tool a step targets must be installed on the device (network, storage, impersonate, route-events, query, time-machine)"
5193
5187
  ]
5194
5188
  },
5195
5189
  {
@@ -5201,9 +5195,9 @@
5201
5195
  "additionalProperties": false
5202
5196
  },
5203
5197
  "effect": "write",
5204
- "release": "empty",
5198
+ "release": "works",
5205
5199
  "description": "Returns {ok:true, report:{removedRules, stoppedImpersonation, clearedTransients, unrestoredStorageKeys[], undoStepsRan, errors[]}}. Deletes the override rules the run created, stops impersonation, and runs the author's undoSteps if any (which clears unrestoredStorageKeys). `unrestoredStorageKeys` names keys the app still holds scenario values for \u2014 surface those verbatim to the user, they are real leftover state. Safe when nothing is active: returns an all-zero report. Also the right call after a failed/partial run.",
5206
- "releaseNote": "Not itself __DEV__-gated, but run is (packages/scenarios/src/store/scenariosStore.ts:98-104), so a release build can never have an active scenario \u2014 expect an all-zero report rather than a real reversal.",
5200
+ "releaseNote": "Works in a release build for a signed-in account.",
5207
5201
  "requires": [
5208
5202
  "Scenarios tool installed in the app"
5209
5203
  ]
@@ -7322,7 +7316,7 @@
7322
7316
  {
7323
7317
  "toolId": "bug-links",
7324
7318
  "title": "Bug links",
7325
- "summary": "One-tap bug reports a teammate can load. `report` captures the app's state, recent web calls, console, taps and screen, scrubs private data on the device, locks the case with a key that lives only in the link (after #), sends it and returns the link. `load` puts a case into this dev build: every web call is answered from the recording and all others are blocked, and the state, clock and screen are set to the reporter's. A dark pill at the top shows a case is loaded; `loadAgain` is the check after a fix and `undo` (Restore my app) puts the app back. Never paste a link's key into chat or logs; links returned here include it only where noted.",
7319
+ "summary": "One-tap bug reports a teammate can load. `report` captures the app's state, recent web calls, console, taps and screen, scrubs private data on the device, locks the case with a key that lives only in the link (after #), sends it and returns the link. `load` puts a case into this app: every web call is answered from the recording and all others are blocked, and the state, clock and screen are set to the reporter's. A dark pill at the top shows a case is loaded; `loadAgain` is the check after a fix and `undo` (Restore my app) puts the app back. Never paste a link's key into chat or logs; links returned here include it only where noted.",
7326
7320
  "actions": [
7327
7321
  {
7328
7322
  "action": "getState",
@@ -7419,12 +7413,11 @@
7419
7413
  "action": "undo",
7420
7414
  "note": "Restore my app: state, clock and screen first, then real web calls. If it stops short, follow its steps and call undo again, or end."
7421
7415
  },
7422
- "release": "noop",
7423
- "releaseNote": "Release builds never fake web calls, so load refuses with loaded:false and changes nothing.",
7416
+ "release": "works",
7417
+ "releaseNote": "A release build needs a paid Buoy plan and the Buoy menu on screen, or this is refused or saved without applying.",
7424
7418
  "description": "Returns {ok, report:{steps[], replay, loaded}}. Each step is {part, ok, detail, warn?}; warn means it loaded but this phone differs from the reporter's (app version, language, time zone, dark mode, screen size), so a bug that needs those may not show. Always `undo` when done.",
7425
7419
  "requires": [
7426
- "Bug links tool installed in the app (@buoy-gg/bug-links)",
7427
- "A dev build"
7420
+ "Bug links tool installed in the app (@buoy-gg/bug-links)"
7428
7421
  ]
7429
7422
  },
7430
7423
  {
@@ -7440,12 +7433,12 @@
7440
7433
  "action": "undo",
7441
7434
  "note": "Restore my app: state, clock and screen first, then real web calls. If it stops short, follow its steps and call undo again, or end."
7442
7435
  },
7443
- "release": "noop",
7436
+ "release": "works",
7444
7437
  "description": "Returns {ok, report}. Refuses when the case wasn't saved on the phone.",
7445
7438
  "requires": [
7446
7439
  "Bug links tool installed in the app (@buoy-gg/bug-links)"
7447
7440
  ],
7448
- "releaseNote": "Release builds never fake web calls, so nothing is ever loaded to load again."
7441
+ "releaseNote": "A release build needs a paid Buoy plan and the Buoy menu on screen, or this is refused or saved without applying."
7449
7442
  },
7450
7443
  {
7451
7444
  "action": "undo",
@@ -7456,12 +7449,12 @@
7456
7449
  "additionalProperties": false
7457
7450
  },
7458
7451
  "effect": "write",
7459
- "release": "noop",
7452
+ "release": "works",
7460
7453
  "description": "Returns {ok, steps[]}. ok is false when Restore stopped short (a store whose screen isn't open, Network rules that couldn't come back): the case stays loaded and web calls stay blocked. Follow the step's advice and call undo again, or `end`.",
7461
7454
  "requires": [
7462
7455
  "Bug links tool installed in the app (@buoy-gg/bug-links)"
7463
7456
  ],
7464
- "releaseNote": "Nothing can be loaded in a release build, so there is nothing to put back."
7457
+ "releaseNote": "Works in a release build for a signed-in account."
7465
7458
  },
7466
7459
  {
7467
7460
  "action": "end",
@@ -7472,12 +7465,12 @@
7472
7465
  "additionalProperties": false
7473
7466
  },
7474
7467
  "effect": "destructive",
7475
- "release": "noop",
7468
+ "release": "works",
7476
7469
  "description": "Only for when undo can't finish. Takes the sandbox off; the app keeps the case's data.",
7477
7470
  "requires": [
7478
7471
  "Bug links tool installed in the app (@buoy-gg/bug-links)"
7479
7472
  ],
7480
- "releaseNote": "Nothing can be loaded in a release build, so there is nothing to end."
7473
+ "releaseNote": "Works in a release build for a signed-in account."
7481
7474
  },
7482
7475
  {
7483
7476
  "action": "leaveSandbox",
@@ -7488,12 +7481,12 @@
7488
7481
  "additionalProperties": false
7489
7482
  },
7490
7483
  "effect": "write",
7491
- "release": "noop",
7484
+ "release": "works",
7492
7485
  "description": "Returns {ok, detail?}. The app's own Network rules come back.",
7493
7486
  "requires": [
7494
7487
  "Bug links tool installed in the app (@buoy-gg/bug-links)"
7495
7488
  ],
7496
- "releaseNote": "Release builds never fake web calls, so there is no sandbox to leave."
7489
+ "releaseNote": "Works in a release build for a signed-in account."
7497
7490
  },
7498
7491
  {
7499
7492
  "action": "listLinks",
@@ -7604,6 +7597,6 @@
7604
7597
  ]
7605
7598
  }
7606
7599
  ],
7607
- "unavailableWhen": "The app does not install @buoy-gg/bug-links (FloatingDevTools picks it up on its own when it is installed), so \"bug-links\" is absent from the device's capability list. Reports need a Pro plan and a Buoy sign-in on the phone; loading needs a dev build."
7600
+ "unavailableWhen": "The app does not install @buoy-gg/bug-links (FloatingDevTools picks it up on its own when it is installed), so \"bug-links\" is absent from the device's capability list. Reports need a Pro plan and a Buoy sign-in on the phone; in a release build, loading also needs a paid Buoy plan and the Buoy menu on screen."
7608
7601
  }
7609
7602
  ]