@buoy-gg/agent-core 7.0.74 → 7.0.75

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.
@@ -502,7 +502,7 @@
502
502
  {
503
503
  "toolId": "zustand",
504
504
  "title": "Zustand",
505
- "summary": "Reads and writes the app's live Zustand stores: list registered stores with their top-level keys or full state, fetch one store's current state, fetch the real before/after trees for one recorded state change, and setState a store for time-travel/reset. Reach for it when on-screen data disagrees with the API, or when a QA user needs the app put into a specific state. The change TIMELINE (history over time) is better read via get_events sources:['zustand']; this tool is for CURRENT state plus on-demand detail. Everything here works in release builds \u2014 but setState defaults to replace:true, which wipes the store's action functions.",
505
+ "summary": "Reads and writes the app's live Zustand stores (on Vue, its Pinia stores too, named by store id and marked library \"pinia\"): list registered stores with their top-level keys or full state, fetch one store's current state, fetch the real before/after trees for one recorded state change, and setState a store for time-travel/reset. Reach for it when on-screen data disagrees with the API, or when a QA user needs the app put into a specific state. The change TIMELINE (history over time) is better read via get_events sources:['zustand']; this tool is for CURRENT state plus on-demand detail. Everything here works in release builds \u2014 but setState defaults to replace:true, which wipes the store's action functions.",
506
506
  "actions": [
507
507
  {
508
508
  "action": "getSnapshot",
@@ -4447,6 +4447,32 @@
4447
4447
  "dev build (__DEV__ === true)"
4448
4448
  ]
4449
4449
  },
4450
+ {
4451
+ "action": "getComponentSource",
4452
+ "summary": "Find the code file behind a part of the screen, and the parts around it. Pass query (a component name, testID or text from describeScreen) or nativeTag. Use this when someone asks which file or component draws something, instead of guessing a path.",
4453
+ "params": {
4454
+ "type": "object",
4455
+ "properties": {
4456
+ "query": {
4457
+ "type": "string",
4458
+ "description": "A component name, testID or visible text from describeScreen, e.g. 'RequestOptions' or 'Send'."
4459
+ },
4460
+ "nativeTag": {
4461
+ "type": "number",
4462
+ "description": "The exact nativeTag from describeScreen. Wins over query."
4463
+ }
4464
+ },
4465
+ "additionalProperties": false
4466
+ },
4467
+ "effect": "read",
4468
+ "release": "empty",
4469
+ "description": "Returns {found:true, component, owners[], sourceKind?} or {found:false, reason}. component and each owner have {name, source?:{fileName, lineNumber?, columnNumber?}, reason?}; owners run outward, up to six. React gives where each component is USED (the JSX line in its parent's file); with sourceKind \"definition\" (Vue and other DOM frameworks) each fileName is the file the component is DEFINED in, with no line. React 19 may give rawStack (bundle URLs) instead of source: read the file name out of it, and say the line may be off. A part with no file says why in reason (a library component, for example). Read only: nothing on screen moves. Needs a dev build.",
4470
+ "releaseNote": "packages/highlight-updates/src/highlight-updates/utils/componentSource.ts \u2014 React's _debugSource and the debug stack exist only in dev, and Vue sets __file only in dev, so a release build answers {found:false, reason}.",
4471
+ "requires": [
4472
+ "@buoy-gg/highlight-updates installed and registered with <FloatingDevTools>",
4473
+ "dev build (__DEV__ === true)"
4474
+ ]
4475
+ },
4450
4476
  {
4451
4477
  "action": "getRenderDetail",
4452
4478
  "summary": "Fetch one tracked component's full renderHistory and lastRenderCause (including hook-change values), which the synced snapshot omits.",
@@ -1 +1 @@
1
- "use strict";export const CATALOG_ACTIONS={"env":["getSnapshot"],"console":["getSnapshot","clearEntries"],"sentry":["getSnapshot","clearEnvelopes"],"jotai":["getSnapshot","listAtoms","getAtomValue","getChangeDetail","setAtom","clearEvents"],"route-events":["getSnapshot","getCurrentRoute","navigate","stackGoBack","stackNavigateToIndex","stackPopToIndex","stackPopToTop","clearEvents"],"debug-borders":["cycleMode","setMode"],"zustand":["getSnapshot","listStores","getStoreState","getChangeDetail","setState","rehydrate","clearEvents"],"redux":["getSnapshot","getState","getActionDetail","dispatch","setState","clearEvents"],"impersonate":["getSnapshot","searchUsers","startImpersonation","stopImpersonation","pauseImpersonation","resumeImpersonation","updateSettings","removeFromHistory","clearHistory"],"query":["listQueries","getQueryData","refetch","invalidate","reset","remove","setQueryData","triggerError","restoreError","triggerLoading","restoreLoading","clearQueryCache","clearMutationCache","setOnline"],"events":["exportEvents","setEnabledSources","clearEvents"],"network":["getSnapshot","getCaptureStatus","getEventBody","setPinned","setSaved","removeSavedRecord","clearSavedRequests","clearPinnedRequests","clearEvents","listOverrideRules","getOverrideRuleBody","debugOverrides","upsertOverrideRule","setOverrideRuleEnabled","setOverridesEnabled","deleteOverrideRule","clearOverrideRules","getNetworkConditions","setNetworkConditions"],"js-top":["sample","getOriginDetail","setEnabled","pause","resume","clear"],"app":["ping","reloadApp"],"time-machine":["list","capture","captureBaseline","wipeAll","restore","preview","inspect","delete","rename","duplicate","setExclusions","setScope","setRestoreRoute"],"clock":["getState","setTime","shift","freeze","resume","setRate","reset","updateSettings","jumpToTokenExpiry","failNextRequest","stopTokenCheck"],"lifecycle":["getState","background","interrupt","returnToApp","memoryWarning","openUrl","pressBack","setColorScheme","setPower","resetPower","relaunch","runRecipe","clearReport","reset"],"location":["getState","setLocation","startRoute","pauseRoute","resumeRoute","stopRoute","seekRoute","setSpeed","enterRegion","exitRegion","setConditions","setSignal","setServices","tune","useRealLocation","reset","updateSettings","clearLog"],"permissions":["getState","setOverride","clearOverride","resetAll","requestReal","updateSettings","simulateReturnFromSettings","clearLog"],"storage":["getSnapshot","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"],"highlight-updates":["describeScreen","tapElement","waitFor","beginMeasurement","endMeasurement","locateComponent","getRenderDetail","setEnabled","toggle","setSilentTracking","toggleFreeze","setSpotlight","clearRenderCounts","startTouchCapture","stopTouchCapture","clearTouchCapture","readTouchCapture"],"scenarios":["listScenarios","getScenario","save","acceptDraft","discardDraft","preview","run","deactivate","delete","setFolder","listFolders","getActive","export"],"perf-monitor":["setEnabled","startRecording","stopRecording","savePending","discardPending","mark","startAutomation","cancelAutomation","acknowledgeAutomation","refreshIndex","getAutomationConfig","setAutomationConfig","loadReport","deleteReport","deleteBatch","clearAll"],"assets":["list","getDetail","rescan","measureSizes","saveBaseline","clearBaseline","getDiff","clearRecords","getScanStatus"],"tv-remote":["arm","getEventsSince","setMenuCapture","disarm","clear"],"focus-inspector":["rescan","focusElement","setTracking","clearHistory"],"images":["list","getDetail","getCaptureStatus","retry","flash","proveSavings","setOverride","clearOverride","setNetworkMode","setBlankImages","hardReload","evictDisk","massAction","clearRecords","clearExpoCaches"],"ask-buoy":["listChanges","undoChange","undoAll","retrieve","openProcedure"],"push-notifications":["getSnapshot","getCapabilities","getEvent","getPermissions","listPresented","refreshToken","setCaptureSession","clearCapturedEvents","scheduleLocal"],"image-overlay":["getSnapshot","listTargets","selectTarget","loadImage","setSettings","fitToScreen","resetSettings","remove"],"three":["getScene","getStats","action"]};
1
+ "use strict";export const CATALOG_ACTIONS={"env":["getSnapshot"],"console":["getSnapshot","clearEntries"],"sentry":["getSnapshot","clearEnvelopes"],"jotai":["getSnapshot","listAtoms","getAtomValue","getChangeDetail","setAtom","clearEvents"],"route-events":["getSnapshot","getCurrentRoute","navigate","stackGoBack","stackNavigateToIndex","stackPopToIndex","stackPopToTop","clearEvents"],"debug-borders":["cycleMode","setMode"],"zustand":["getSnapshot","listStores","getStoreState","getChangeDetail","setState","rehydrate","clearEvents"],"redux":["getSnapshot","getState","getActionDetail","dispatch","setState","clearEvents"],"impersonate":["getSnapshot","searchUsers","startImpersonation","stopImpersonation","pauseImpersonation","resumeImpersonation","updateSettings","removeFromHistory","clearHistory"],"query":["listQueries","getQueryData","refetch","invalidate","reset","remove","setQueryData","triggerError","restoreError","triggerLoading","restoreLoading","clearQueryCache","clearMutationCache","setOnline"],"events":["exportEvents","setEnabledSources","clearEvents"],"network":["getSnapshot","getCaptureStatus","getEventBody","setPinned","setSaved","removeSavedRecord","clearSavedRequests","clearPinnedRequests","clearEvents","listOverrideRules","getOverrideRuleBody","debugOverrides","upsertOverrideRule","setOverrideRuleEnabled","setOverridesEnabled","deleteOverrideRule","clearOverrideRules","getNetworkConditions","setNetworkConditions"],"js-top":["sample","getOriginDetail","setEnabled","pause","resume","clear"],"app":["ping","reloadApp"],"time-machine":["list","capture","captureBaseline","wipeAll","restore","preview","inspect","delete","rename","duplicate","setExclusions","setScope","setRestoreRoute"],"clock":["getState","setTime","shift","freeze","resume","setRate","reset","updateSettings","jumpToTokenExpiry","failNextRequest","stopTokenCheck"],"lifecycle":["getState","background","interrupt","returnToApp","memoryWarning","openUrl","pressBack","setColorScheme","setPower","resetPower","relaunch","runRecipe","clearReport","reset"],"location":["getState","setLocation","startRoute","pauseRoute","resumeRoute","stopRoute","seekRoute","setSpeed","enterRegion","exitRegion","setConditions","setSignal","setServices","tune","useRealLocation","reset","updateSettings","clearLog"],"permissions":["getState","setOverride","clearOverride","resetAll","requestReal","updateSettings","simulateReturnFromSettings","clearLog"],"storage":["getSnapshot","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"],"highlight-updates":["describeScreen","tapElement","waitFor","beginMeasurement","endMeasurement","locateComponent","getComponentSource","getRenderDetail","setEnabled","toggle","setSilentTracking","toggleFreeze","setSpotlight","clearRenderCounts","startTouchCapture","stopTouchCapture","clearTouchCapture","readTouchCapture"],"scenarios":["listScenarios","getScenario","save","acceptDraft","discardDraft","preview","run","deactivate","delete","setFolder","listFolders","getActive","export"],"perf-monitor":["setEnabled","startRecording","stopRecording","savePending","discardPending","mark","startAutomation","cancelAutomation","acknowledgeAutomation","refreshIndex","getAutomationConfig","setAutomationConfig","loadReport","deleteReport","deleteBatch","clearAll"],"assets":["list","getDetail","rescan","measureSizes","saveBaseline","clearBaseline","getDiff","clearRecords","getScanStatus"],"tv-remote":["arm","getEventsSince","setMenuCapture","disarm","clear"],"focus-inspector":["rescan","focusElement","setTracking","clearHistory"],"images":["list","getDetail","getCaptureStatus","retry","flash","proveSavings","setOverride","clearOverride","setNetworkMode","setBlankImages","hardReload","evictDisk","massAction","clearRecords","clearExpoCaches"],"ask-buoy":["listChanges","undoChange","undoAll","retrieve","openProcedure"],"push-notifications":["getSnapshot","getCapabilities","getEvent","getPermissions","listPresented","refreshToken","setCaptureSession","clearCapturedEvents","scheduleLocal"],"image-overlay":["getSnapshot","listTargets","selectTarget","loadImage","setSettings","fitToScreen","resetSettings","remove"],"three":["getScene","getStats","action"]};
@@ -1,4 +1,4 @@
1
- "use strict";export function buildSystemPrompt(a){const{context:e,isRelease:n,readOnly:r,readOnlySource:s,requireApproval:i,approvalsBypassed:h,appName:d,platform:l,availableToolIds:c}=a;const t=[];t.push(`You are Ask Buoy, an assistant embedded inside ${d?`the ${d} app`:"a React Native app"} via Buoy devtools${l?` on ${l}`:""}.
1
+ "use strict";export function buildSystemPrompt(a){const{context:e,isRelease:n,readOnly:r,readOnlySource:s,requireApproval:i,approvalsBypassed:h,appName:d,platform:l,availableToolIds:c}=a;const t=[];t.push(`You are Ask Buoy, an assistant embedded inside ${d?`the ${d} app`:"this app"} via Buoy devtools${l?` on ${l}`:""}.
2
2
 
3
3
  The people who talk to you are usually NOT developers \u2014 QA testers, customer support, product managers. Write like you are talking to a smart colleague who does not read code. Never show raw JSON, stack traces, or internal ids unless they ask. Say what you found and what it means.
4
4
 
@@ -2,10 +2,10 @@
2
2
  * GENERATED by scripts/gen-agent-catalog.mjs — do not edit.
3
3
  * Source: packages/agent-core/src/catalog/catalog.source.json
4
4
  *
5
- * 31 Buoy tools, 279 actions.
5
+ * 31 Buoy tools, 280 actions.
6
6
  */
7
7
  import type { ToolDescriptor } from "../types";
8
8
  export declare const CATALOG: ToolDescriptor[];
9
9
  export declare const CATALOG_TOOL_COUNT = 31;
10
- export declare const CATALOG_ACTION_COUNT = 279;
10
+ export declare const CATALOG_ACTION_COUNT = 280;
11
11
  //# sourceMappingURL=catalog.g.d.ts.map
@@ -5,7 +5,7 @@
5
5
  * The catalog's tool ids and action names as types, so a wrong name fails
6
6
  * at compile time. `catalog.g.ts` carries the data.
7
7
  *
8
- * 31 Buoy tools, 279 actions.
8
+ * 31 Buoy tools, 280 actions.
9
9
  */
10
10
  export type CatalogToolId = "env" | "console" | "sentry" | "jotai" | "route-events" | "debug-borders" | "zustand" | "redux" | "impersonate" | "query" | "events" | "network" | "js-top" | "app" | "time-machine" | "clock" | "lifecycle" | "location" | "permissions" | "storage" | "highlight-updates" | "scenarios" | "perf-monitor" | "assets" | "tv-remote" | "focus-inspector" | "images" | "ask-buoy" | "push-notifications" | "image-overlay" | "three";
11
11
  export interface CatalogActionMap {
@@ -29,7 +29,7 @@ export interface CatalogActionMap {
29
29
  "location": "getState" | "setLocation" | "startRoute" | "pauseRoute" | "resumeRoute" | "stopRoute" | "seekRoute" | "setSpeed" | "enterRegion" | "exitRegion" | "setConditions" | "setSignal" | "setServices" | "tune" | "useRealLocation" | "reset" | "updateSettings" | "clearLog";
30
30
  "permissions": "getState" | "setOverride" | "clearOverride" | "resetAll" | "requestReal" | "updateSettings" | "simulateReturnFromSettings" | "clearLog";
31
31
  "storage": "getSnapshot" | "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";
32
- "highlight-updates": "describeScreen" | "tapElement" | "waitFor" | "beginMeasurement" | "endMeasurement" | "locateComponent" | "getRenderDetail" | "setEnabled" | "toggle" | "setSilentTracking" | "toggleFreeze" | "setSpotlight" | "clearRenderCounts" | "startTouchCapture" | "stopTouchCapture" | "clearTouchCapture" | "readTouchCapture";
32
+ "highlight-updates": "describeScreen" | "tapElement" | "waitFor" | "beginMeasurement" | "endMeasurement" | "locateComponent" | "getComponentSource" | "getRenderDetail" | "setEnabled" | "toggle" | "setSilentTracking" | "toggleFreeze" | "setSpotlight" | "clearRenderCounts" | "startTouchCapture" | "stopTouchCapture" | "clearTouchCapture" | "readTouchCapture";
33
33
  "scenarios": "listScenarios" | "getScenario" | "save" | "acceptDraft" | "discardDraft" | "preview" | "run" | "deactivate" | "delete" | "setFolder" | "listFolders" | "getActive" | "export";
34
34
  "perf-monitor": "setEnabled" | "startRecording" | "stopRecording" | "savePending" | "discardPending" | "mark" | "startAutomation" | "cancelAutomation" | "acknowledgeAutomation" | "refreshIndex" | "getAutomationConfig" | "setAutomationConfig" | "loadReport" | "deleteReport" | "deleteBatch" | "clearAll";
35
35
  "assets": "list" | "getDetail" | "rescan" | "measureSizes" | "saveBaseline" | "clearBaseline" | "getDiff" | "clearRecords" | "getScanStatus";