@buoy-gg/shared-ui 7.0.41 → 7.0.43
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/dataViewer.js +1 -9
- package/floating.js +1 -2
- package/history.js +1 -7
- package/hooks.js +1 -7
- package/lib/commonjs/JsModal.js +1 -1766
- package/lib/commonjs/JsModal.web.js +1 -1589
- package/lib/commonjs/clipboard/autoDetectClipboard.js +1 -67
- package/lib/commonjs/clipboard/clipboard-impl.js +1 -128
- package/lib/commonjs/clipboard/clipboard-impl.web.js +1 -21
- package/lib/commonjs/clipboard/copyToClipboard.js +1 -64
- package/lib/commonjs/clipboard/index.js +1 -25
- package/lib/commonjs/colors/index.js +1 -49
- package/lib/commonjs/context/HintsContext.js +1 -49
- package/lib/commonjs/context/index.js +1 -24
- package/lib/commonjs/dataViewer/CyberpunkInput.js +1 -388
- package/lib/commonjs/dataViewer/DataTreeActionBar.js +1 -390
- package/lib/commonjs/dataViewer/DataTreeActionDock.js +1 -226
- package/lib/commonjs/dataViewer/DataViewer.js +1 -158
- package/lib/commonjs/dataViewer/DiffSummary.js +1 -134
- package/lib/commonjs/dataViewer/IndentGuides.js +1 -128
- package/lib/commonjs/dataViewer/IndentGuidesOverlay.js +1 -104
- package/lib/commonjs/dataViewer/JsonStringNotice.js +1 -59
- package/lib/commonjs/dataViewer/LiveExplorer.js +1 -943
- package/lib/commonjs/dataViewer/SplitDiffViewer.js +1 -421
- package/lib/commonjs/dataViewer/ThemedSplitView.js +1 -642
- package/lib/commonjs/dataViewer/TimestampDeltaBar.js +1 -96
- package/lib/commonjs/dataViewer/TypeLegend.js +1 -111
- package/lib/commonjs/dataViewer/ValueEditModal.js +1 -386
- package/lib/commonjs/dataViewer/VirtualizedDataExplorer.js +1 -1270
- package/lib/commonjs/dataViewer/diffThemes.js +1 -113
- package/lib/commonjs/dataViewer/index.js +1 -320
- package/lib/commonjs/dataViewer/jsonOps.js +1 -320
- package/lib/commonjs/dataViewer/jsonStringValue.js +1 -94
- package/lib/commonjs/dataViewer/lineDiff.js +1 -568
- package/lib/commonjs/dataViewer/nestedPath.js +1 -115
- package/lib/commonjs/dataViewer/objectDiff.js +1 -304
- package/lib/commonjs/dataViewer/timestampDiff.js +1 -146
- package/lib/commonjs/dataViewer/tree/TreeDiffViewer.js +1 -915
- package/lib/commonjs/dataViewer/treeActions.js +1 -168
- package/lib/commonjs/dataViewer/useTreeDraft.js +1 -125
- package/lib/commonjs/dataViewer/useTreeEditor.js +1 -105
- package/lib/commonjs/env/EnvironmentIndicator.js +1 -129
- package/lib/commonjs/env/EnvironmentIndicator.web.js +1 -114
- package/lib/commonjs/env/EnvironmentSelector.js +1 -205
- package/lib/commonjs/env/EnvironmentSelectorInline.js +1 -299
- package/lib/commonjs/env/EnvironmentSelectorInline.web.js +1 -178
- package/lib/commonjs/history/HistoryProvider.js +1 -246
- package/lib/commonjs/history/components/HistoryEntryRow.js +1 -146
- package/lib/commonjs/history/components/HistoryList.js +1 -174
- package/lib/commonjs/history/components/index.js +1 -25
- package/lib/commonjs/history/index.js +1 -61
- package/lib/commonjs/history/types.js +1 -5
- package/lib/commonjs/hooks/index.js +1 -77
- package/lib/commonjs/hooks/safe-area-impl.js +1 -28
- package/lib/commonjs/hooks/useChangeLog.js +1 -55
- package/lib/commonjs/hooks/useDeviceInfo.js +1 -524
- package/lib/commonjs/hooks/useEventStoreEvents.js +1 -65
- package/lib/commonjs/hooks/useFilterManager.js +1 -136
- package/lib/commonjs/hooks/usePersistedState.js +1 -106
- package/lib/commonjs/hooks/useSafeAreaInsets.js +1 -250
- package/lib/commonjs/hooks/useSafeAreaInsets.web.js +1 -41
- package/lib/commonjs/icons/BenchmarkIcon.js +1 -109
- package/lib/commonjs/icons/EnvLaptopIcon.js +1 -204
- package/lib/commonjs/icons/IconBackground.js +1 -279
- package/lib/commonjs/icons/ReactQueryIcon.js +1 -17
- package/lib/commonjs/icons/RenderCountIcon.js +1 -147
- package/lib/commonjs/icons/RouteMapIcon.js +1 -250
- package/lib/commonjs/icons/SentryBugIcon.js +1 -19
- package/lib/commonjs/icons/StackPulseIcon.js +1 -158
- package/lib/commonjs/icons/StorageStackIcon.js +1 -156
- package/lib/commonjs/icons/WifiCircuitIcon.js +1 -169
- package/lib/commonjs/icons/index.js +1 -840
- package/lib/commonjs/icons/lucide-icons-original-full.js +1 -3248
- package/lib/commonjs/icons/lucide-icons.js +1 -2476
- package/lib/commonjs/icons/primitives/GlobeIcon.js +1 -66
- package/lib/commonjs/icons/primitives/icon-primitives.js +1 -169
- package/lib/commonjs/icons/primitives/index.js +1 -49
- package/lib/commonjs/index.js +1 -1132
- package/lib/commonjs/license/AccountSetup.js +1 -35
- package/lib/commonjs/license/AccountSetup.web.js +2 -83
- package/lib/commonjs/license/AccountSetupContent.js +1 -482
- package/lib/commonjs/license/FeatureGate.js +1 -788
- package/lib/commonjs/license/FreeAccountPrompt.js +1 -59
- package/lib/commonjs/license/LicenseEntryModal.js +2 -387
- package/lib/commonjs/license/accountRuntime.js +1 -8
- package/lib/commonjs/license/accountRuntime.web.js +1 -9
- package/lib/commonjs/license/index.js +1 -106
- package/lib/commonjs/license/licenseModule.js +1 -121
- package/lib/commonjs/license/openPricing.js +1 -36
- package/lib/commonjs/license/tierLimits.js +1 -128
- package/lib/commonjs/logger/index-sentry.js +1 -245
- package/lib/commonjs/logger/index.js +1 -62
- package/lib/commonjs/logger/logDump.js +1 -19
- package/lib/commonjs/logger/types.js +1 -38
- package/lib/commonjs/settings/components/BubbleSettingsSection.js +1 -384
- package/lib/commonjs/settings/index.js +1 -24
- package/lib/commonjs/storage/definePersistedSetting.js +1 -67
- package/lib/commonjs/storage/devToolsStorageKeys.js +1 -359
- package/lib/commonjs/storage/index.js +1 -25
- package/lib/commonjs/stores/BaseEventStore.js +1 -343
- package/lib/commonjs/stores/ChangeLog.js +1 -197
- package/lib/commonjs/stores/createToolStore.js +1 -193
- package/lib/commonjs/stores/floatingToolStore.js +1 -71
- package/lib/commonjs/stores/floatingToolStore.test.js +1 -112
- package/lib/commonjs/stores/ignoredPatternsCore.js +1 -75
- package/lib/commonjs/stores/ignoredPatternsStore.js +1 -16
- package/lib/commonjs/stores/ignoredPatternsStore.shared.js +1 -205
- package/lib/commonjs/stores/ignoredPatternsStore.web.js +1 -16
- package/lib/commonjs/stores/index.js +1 -51
- package/lib/commonjs/sync/keyedArrays.js +1 -209
- package/lib/commonjs/sync/toolActionRegistry.js +1 -249
- package/lib/commonjs/sync/toolAttention.test.js +1 -51
- package/lib/commonjs/sync/toolSyncAdapter.js +1 -63
- package/lib/commonjs/sync/toolUiBridge.js +1 -132
- package/lib/commonjs/sync/typedEdit.js +1 -228
- package/lib/commonjs/sync/valuePath.js +1 -337
- package/lib/commonjs/sync/valueShape.js +1 -161
- package/lib/commonjs/sync/wireBudget.js +1 -97
- package/lib/commonjs/sync/wireForm.js +1 -172
- package/lib/commonjs/tools/defineTool.js +1 -79
- package/lib/commonjs/types/types.d.js +1 -1
- package/lib/commonjs/types/types.js +1 -37
- package/lib/commonjs/ui/backgrounds/BackgroundSwitcher.js +1 -354
- package/lib/commonjs/ui/backgrounds/ToolBackground.js +1 -76
- package/lib/commonjs/ui/backgrounds/backgroundStore.js +1 -130
- package/lib/commonjs/ui/backgrounds/index.js +1 -167
- package/lib/commonjs/ui/backgrounds/primitives.js +1 -369
- package/lib/commonjs/ui/backgrounds/registry.js +1 -98
- package/lib/commonjs/ui/backgrounds/rng.js +1 -93
- package/lib/commonjs/ui/backgrounds/skyClock.js +1 -45
- package/lib/commonjs/ui/backgrounds/types.js +1 -1
- package/lib/commonjs/ui/backgrounds/variants/daylight.js +1 -453
- package/lib/commonjs/ui/backgrounds/variants/deepField.js +1 -381
- package/lib/commonjs/ui/backgrounds/variants/hyperspace.js +1 -218
- package/lib/commonjs/ui/backgrounds/variants/liveSky.js +1 -898
- package/lib/commonjs/ui/backgrounds/variants/meteors.js +1 -401
- package/lib/commonjs/ui/backgrounds/variants/moonlight.js +1 -472
- package/lib/commonjs/ui/backgrounds/variants/underwater.js +1 -757
- package/lib/commonjs/ui/backgrounds/variants/wormhole/motion.js +1 -48
- package/lib/commonjs/ui/backgrounds/variants/wormhole/textures.js +1 -3
- package/lib/commonjs/ui/backgrounds/variants/wormhole.js +1 -136
- package/lib/commonjs/ui/components/BackButton.js +1 -47
- package/lib/commonjs/ui/components/Badge.js +1 -226
- package/lib/commonjs/ui/components/ChangeRow.js +1 -111
- package/lib/commonjs/ui/components/ChipStrip.js +1 -94
- package/lib/commonjs/ui/components/ClipboardHintBanner.js +1 -149
- package/lib/commonjs/ui/components/CollapsibleSection.js +1 -170
- package/lib/commonjs/ui/components/CompactFilterChips.js +1 -114
- package/lib/commonjs/ui/components/CompactRow.js +1 -295
- package/lib/commonjs/ui/components/CopyButton.js +1 -307
- package/lib/commonjs/ui/components/DataInspector.js +1 -323
- package/lib/commonjs/ui/components/DetailView.js +1 -358
- package/lib/commonjs/ui/components/DetailViewToggle.js +1 -130
- package/lib/commonjs/ui/components/DevToolsCard.js +1 -126
- package/lib/commonjs/ui/components/DraggableHeader.js +1 -215
- package/lib/commonjs/ui/components/DynamicFilterView.js +1 -758
- package/lib/commonjs/ui/components/EmptyState.js +1 -151
- package/lib/commonjs/ui/components/EntityFilterView.js +1 -355
- package/lib/commonjs/ui/components/EventHistoryViewer/CompareBar.js +1 -211
- package/lib/commonjs/ui/components/EventHistoryViewer/DiffModeTabs.js +1 -99
- package/lib/commonjs/ui/components/EventHistoryViewer/EventHistoryViewer.js +1 -184
- package/lib/commonjs/ui/components/EventHistoryViewer/EventPickerModal.js +1 -208
- package/lib/commonjs/ui/components/EventHistoryViewer/ViewToggleCards.js +1 -137
- package/lib/commonjs/ui/components/EventHistoryViewer/index.js +1 -40
- package/lib/commonjs/ui/components/EventHistoryViewer/types.js +1 -5
- package/lib/commonjs/ui/components/EventListItem.js +1 -247
- package/lib/commonjs/ui/components/EventStepperFooter.js +1 -185
- package/lib/commonjs/ui/components/ExpandablePopover.js +1 -381
- package/lib/commonjs/ui/components/ExpandedInfoRow.js +1 -108
- package/lib/commonjs/ui/components/ExportPreview.js +1 -174
- package/lib/commonjs/ui/components/FilterComponents.js +1 -291
- package/lib/commonjs/ui/components/GripVerticalIcon.js +1 -65
- package/lib/commonjs/ui/components/HeaderSearchButton.js +1 -50
- package/lib/commonjs/ui/components/InfoRow.js +1 -91
- package/lib/commonjs/ui/components/ListItem.js +1 -173
- package/lib/commonjs/ui/components/ModalHeader.js +1 -305
- package/lib/commonjs/ui/components/ModalHintBanner.js +1 -147
- package/lib/commonjs/ui/components/Pill.js +1 -115
- package/lib/commonjs/ui/components/PowerToggleButton.js +1 -78
- package/lib/commonjs/ui/components/SearchBar.js +1 -165
- package/lib/commonjs/ui/components/SectionHeader.js +1 -129
- package/lib/commonjs/ui/components/StatsCard.js +1 -198
- package/lib/commonjs/ui/components/StatusIndicator.js +1 -231
- package/lib/commonjs/ui/components/StorageTypeBadge.js +1 -97
- package/lib/commonjs/ui/components/TabSelector.js +1 -102
- package/lib/commonjs/ui/components/TimeDisplay.js +1 -142
- package/lib/commonjs/ui/components/ToggleRow.js +1 -116
- package/lib/commonjs/ui/components/ToolButton.js +1 -93
- package/lib/commonjs/ui/components/ToolEmptyState.js +1 -154
- package/lib/commonjs/ui/components/ToolFooter.js +1 -205
- package/lib/commonjs/ui/components/ValueTypeBadge.js +1 -147
- package/lib/commonjs/ui/components/WindowControls.js +1 -387
- package/lib/commonjs/ui/components/index.js +1 -507
- package/lib/commonjs/ui/components/windowDrag.js +1 -45
- package/lib/commonjs/ui/console/CyberpunkButtonOutline.js +1 -261
- package/lib/commonjs/ui/console/CyberpunkIconContainer.js +1 -186
- package/lib/commonjs/ui/console/CyberpunkSectionButton.js +1 -123
- package/lib/commonjs/ui/floating/FloatingTool.js +1 -1010
- package/lib/commonjs/ui/floating/FloatingTool.web.js +1 -601
- package/lib/commonjs/ui/floating/FloatingToolHost.js +1 -32
- package/lib/commonjs/ui/floating/FloatingToolHost.web.js +1 -28
- package/lib/commonjs/ui/floating/index.js +1 -105
- package/lib/commonjs/ui/floating/index.web.js +1 -105
- package/lib/commonjs/ui/floating/onboardingConstants.js +1 -70
- package/lib/commonjs/ui/floating/onboardingConstants.web.js +1 -34
- package/lib/commonjs/ui/fonts.js +1 -12
- package/lib/commonjs/ui/gameUI/components/GameUICollapsibleSection.js +1 -121
- package/lib/commonjs/ui/gameUI/components/GameUICompactStats.js +1 -336
- package/lib/commonjs/ui/gameUI/components/GameUIIssuesList.js +1 -284
- package/lib/commonjs/ui/gameUI/components/GameUIStatusHeader.js +1 -145
- package/lib/commonjs/ui/gameUI/constants/gameUIColors.js +1 -224
- package/lib/commonjs/ui/gameUI/constants/macOSDesignSystemColors.js +1 -224
- package/lib/commonjs/ui/gameUI/hooks/useGameUIAlertState.js +1 -110
- package/lib/commonjs/ui/gameUI/index.js +1 -72
- package/lib/commonjs/ui/index.js +1 -217
- package/lib/commonjs/ui/listPresets.js +1 -43
- package/lib/commonjs/ui/night/nightTheme.js +1 -130
- package/lib/commonjs/ui/night/primitives.js +1 -524
- package/lib/commonjs/ui/otto/OttoSceneView.js +1 -69
- package/lib/commonjs/ui/otto/OttoSprite.js +1 -510
- package/lib/commonjs/ui/otto/index.js +1 -60
- package/lib/commonjs/ui/otto/ottoEngine.js +1 -2737
- package/lib/commonjs/ui/otto/ottoScenes.js +1 -949
- package/lib/commonjs/ui/otto/ottoSheet.js +1 -191
- package/lib/commonjs/ui/toolTheme.js +1 -97
- package/lib/commonjs/utils/absoluteFill.js +1 -28
- package/lib/commonjs/utils/browserAsyncStorage.js +1 -157
- package/lib/commonjs/utils/browserNavigation.js +1 -116
- package/lib/commonjs/utils/devServer.js +1 -66
- package/lib/commonjs/utils/devServer.web.js +1 -10
- package/lib/commonjs/utils/displayValue.js +1 -41
- package/lib/commonjs/utils/domRuntime.js +1 -143
- package/lib/commonjs/utils/expoRouterModule.js +1 -51
- package/lib/commonjs/utils/expoRouterModule.web.js +1 -14
- package/lib/commonjs/utils/formatting/dataFormatting.js +1 -102
- package/lib/commonjs/utils/formatting/httpFormatting.js +1 -147
- package/lib/commonjs/utils/formatting/index.js +1 -27
- package/lib/commonjs/utils/getSafeAreaInsets.js +1 -40
- package/lib/commonjs/utils/getSafeAreaInsets.web.js +1 -35
- package/lib/commonjs/utils/index.js +1 -416
- package/lib/commonjs/utils/loadOptionalModule.js +1 -94
- package/lib/commonjs/utils/loadToolModule.js +1 -46
- package/lib/commonjs/utils/loadToolModule.web.js +1 -12
- package/lib/commonjs/utils/minimalSuperJSON.js +1 -347
- package/lib/commonjs/utils/modalStorage.js +1 -42
- package/lib/commonjs/utils/nativeWeb.js +1 -454
- package/lib/commonjs/utils/persistentStorage.js +1 -609
- package/lib/commonjs/utils/persistentStorage.web.js +1 -78
- package/lib/commonjs/utils/realNow.js +1 -0
- package/lib/commonjs/utils/reloadApp.js +1 -105
- package/lib/commonjs/utils/reloadPlatform.js +1 -37
- package/lib/commonjs/utils/reloadPlatform.web.js +1 -17
- package/lib/commonjs/utils/renderCaptureRegistry.js +1 -59
- package/lib/commonjs/utils/safeExpoRouter.js +1 -200
- package/lib/commonjs/utils/safeExpoRouter.web.js +1 -48
- package/lib/commonjs/utils/safeStringify.js +1 -229
- package/lib/commonjs/utils/snapshotProviderKit.js +1 -167
- package/lib/commonjs/utils/stateSnapshotRegistry.js +1 -71
- package/lib/commonjs/utils/stateTools.js +1 -160
- package/lib/commonjs/utils/subscribable.js +1 -113
- package/lib/commonjs/utils/subscriberCountNotifier.js +1 -72
- package/lib/commonjs/utils/time/RelativeTime.js +1 -31
- package/lib/commonjs/utils/time/TickContext.js +1 -43
- package/lib/commonjs/utils/time/formatRelativeTime.js +1 -34
- package/lib/commonjs/utils/time/index.js +1 -39
- package/lib/commonjs/utils/time/useRelativeTime.js +1 -36
- package/lib/commonjs/utils/toolModules.js +1 -25
- package/lib/commonjs/utils/typeHelpers.js +1 -142
- package/lib/commonjs/utils/valueFormatting.js +1 -140
- package/lib/module/JsModal.js +1 -1762
- package/lib/module/JsModal.web.js +1 -1585
- package/lib/module/clipboard/autoDetectClipboard.js +1 -45
- package/lib/module/clipboard/clipboard-impl.js +1 -121
- package/lib/module/clipboard/clipboard-impl.web.js +1 -14
- package/lib/module/clipboard/copyToClipboard.js +1 -60
- package/lib/module/clipboard/index.js +1 -5
- package/lib/module/colors/index.js +1 -21
- package/lib/module/context/HintsContext.js +1 -43
- package/lib/module/context/index.js +1 -3
- package/lib/module/dataViewer/CyberpunkInput.js +1 -384
- package/lib/module/dataViewer/DataTreeActionBar.js +1 -385
- package/lib/module/dataViewer/DataTreeActionDock.js +1 -222
- package/lib/module/dataViewer/DataViewer.js +1 -153
- package/lib/module/dataViewer/DiffSummary.js +1 -129
- package/lib/module/dataViewer/IndentGuides.js +1 -124
- package/lib/module/dataViewer/IndentGuidesOverlay.js +1 -99
- package/lib/module/dataViewer/JsonStringNotice.js +1 -54
- package/lib/module/dataViewer/LiveExplorer.js +1 -937
- package/lib/module/dataViewer/SplitDiffViewer.js +1 -416
- package/lib/module/dataViewer/ThemedSplitView.js +1 -637
- package/lib/module/dataViewer/TimestampDeltaBar.js +1 -91
- package/lib/module/dataViewer/TypeLegend.js +1 -105
- package/lib/module/dataViewer/ValueEditModal.js +1 -382
- package/lib/module/dataViewer/VirtualizedDataExplorer.js +1 -1265
- package/lib/module/dataViewer/diffThemes.js +1 -109
- package/lib/module/dataViewer/index.js +1 -57
- package/lib/module/dataViewer/jsonOps.js +1 -311
- package/lib/module/dataViewer/jsonStringValue.js +1 -89
- package/lib/module/dataViewer/lineDiff.js +1 -564
- package/lib/module/dataViewer/nestedPath.js +1 -109
- package/lib/module/dataViewer/objectDiff.js +1 -297
- package/lib/module/dataViewer/timestampDiff.js +1 -139
- package/lib/module/dataViewer/tree/TreeDiffViewer.js +1 -909
- package/lib/module/dataViewer/treeActions.js +1 -162
- package/lib/module/dataViewer/useTreeDraft.js +1 -121
- package/lib/module/dataViewer/useTreeEditor.js +1 -101
- package/lib/module/env/EnvironmentIndicator.js +1 -125
- package/lib/module/env/EnvironmentIndicator.web.js +1 -108
- package/lib/module/env/EnvironmentSelector.js +1 -201
- package/lib/module/env/EnvironmentSelectorInline.js +1 -295
- package/lib/module/env/EnvironmentSelectorInline.web.js +1 -173
- package/lib/module/history/HistoryProvider.js +1 -237
- package/lib/module/history/components/HistoryEntryRow.js +1 -142
- package/lib/module/history/components/HistoryList.js +1 -169
- package/lib/module/history/components/index.js +1 -8
- package/lib/module/history/index.js +1 -15
- package/lib/module/history/types.js +1 -3
- package/lib/module/hooks/index.js +1 -9
- package/lib/module/hooks/safe-area-impl.js +1 -23
- package/lib/module/hooks/useChangeLog.js +1 -50
- package/lib/module/hooks/useDeviceInfo.js +1 -519
- package/lib/module/hooks/useEventStoreEvents.js +1 -61
- package/lib/module/hooks/useFilterManager.js +1 -132
- package/lib/module/hooks/usePersistedState.js +1 -102
- package/lib/module/hooks/useSafeAreaInsets.js +1 -245
- package/lib/module/hooks/useSafeAreaInsets.web.js +1 -30
- package/lib/module/icons/BenchmarkIcon.js +1 -104
- package/lib/module/icons/EnvLaptopIcon.js +1 -199
- package/lib/module/icons/IconBackground.js +1 -274
- package/lib/module/icons/ReactQueryIcon.js +1 -12
- package/lib/module/icons/RenderCountIcon.js +1 -142
- package/lib/module/icons/RouteMapIcon.js +1 -245
- package/lib/module/icons/SentryBugIcon.js +1 -14
- package/lib/module/icons/StackPulseIcon.js +1 -153
- package/lib/module/icons/StorageStackIcon.js +1 -151
- package/lib/module/icons/WifiCircuitIcon.js +1 -164
- package/lib/module/icons/index.js +1 -63
- package/lib/module/icons/lucide-icons-original-full.js +1 -3178
- package/lib/module/icons/lucide-icons.js +1 -2420
- package/lib/module/icons/primitives/GlobeIcon.js +1 -61
- package/lib/module/icons/primitives/icon-primitives.js +1 -161
- package/lib/module/icons/primitives/index.js +1 -15
- package/lib/module/index.js +1 -111
- package/lib/module/license/AccountSetup.js +1 -31
- package/lib/module/license/AccountSetup.web.js +3 -80
- package/lib/module/license/AccountSetupContent.js +1 -476
- package/lib/module/license/FeatureGate.js +1 -778
- package/lib/module/license/FreeAccountPrompt.js +1 -50
- package/lib/module/license/LicenseEntryModal.js +2 -381
- package/lib/module/license/accountRuntime.js +1 -3
- package/lib/module/license/accountRuntime.web.js +1 -4
- package/lib/module/license/index.js +1 -9
- package/lib/module/license/licenseModule.js +1 -109
- package/lib/module/license/openPricing.js +1 -31
- package/lib/module/license/tierLimits.js +1 -122
- package/lib/module/logger/index-sentry.js +1 -230
- package/lib/module/logger/index.js +1 -13
- package/lib/module/logger/logDump.js +1 -13
- package/lib/module/logger/types.js +1 -37
- package/lib/module/settings/components/BubbleSettingsSection.js +1 -378
- package/lib/module/settings/index.js +1 -3
- package/lib/module/storage/definePersistedSetting.js +1 -63
- package/lib/module/storage/devToolsStorageKeys.js +1 -352
- package/lib/module/storage/index.js +1 -4
- package/lib/module/stores/BaseEventStore.js +1 -339
- package/lib/module/stores/ChangeLog.js +1 -192
- package/lib/module/stores/createToolStore.js +1 -189
- package/lib/module/stores/floatingToolStore.js +1 -61
- package/lib/module/stores/floatingToolStore.test.js +1 -111
- package/lib/module/stores/ignoredPatternsCore.js +1 -69
- package/lib/module/stores/ignoredPatternsStore.js +1 -3
- package/lib/module/stores/ignoredPatternsStore.shared.js +1 -189
- package/lib/module/stores/ignoredPatternsStore.web.js +1 -3
- package/lib/module/stores/index.js +1 -10
- package/lib/module/sync/keyedArrays.js +1 -204
- package/lib/module/sync/toolActionRegistry.js +1 -236
- package/lib/module/sync/toolAttention.test.js +1 -50
- package/lib/module/sync/toolSyncAdapter.js +1 -58
- package/lib/module/sync/toolUiBridge.js +1 -123
- package/lib/module/sync/typedEdit.js +1 -220
- package/lib/module/sync/valuePath.js +1 -330
- package/lib/module/sync/valueShape.js +1 -153
- package/lib/module/sync/wireBudget.js +1 -92
- package/lib/module/sync/wireForm.js +1 -159
- package/lib/module/tools/defineTool.js +1 -74
- package/lib/module/types/types.d.js +1 -1
- package/lib/module/types/types.js +1 -32
- package/lib/module/ui/backgrounds/BackgroundSwitcher.js +1 -350
- package/lib/module/ui/backgrounds/ToolBackground.js +1 -72
- package/lib/module/ui/backgrounds/backgroundStore.js +1 -125
- package/lib/module/ui/backgrounds/index.js +1 -19
- package/lib/module/ui/backgrounds/primitives.js +1 -365
- package/lib/module/ui/backgrounds/registry.js +1 -91
- package/lib/module/ui/backgrounds/rng.js +1 -85
- package/lib/module/ui/backgrounds/skyClock.js +1 -39
- package/lib/module/ui/backgrounds/types.js +1 -1
- package/lib/module/ui/backgrounds/variants/daylight.js +1 -449
- package/lib/module/ui/backgrounds/variants/deepField.js +1 -378
- package/lib/module/ui/backgrounds/variants/hyperspace.js +1 -214
- package/lib/module/ui/backgrounds/variants/liveSky.js +1 -893
- package/lib/module/ui/backgrounds/variants/meteors.js +1 -397
- package/lib/module/ui/backgrounds/variants/moonlight.js +1 -468
- package/lib/module/ui/backgrounds/variants/underwater.js +1 -753
- package/lib/module/ui/backgrounds/variants/wormhole/motion.js +1 -44
- package/lib/module/ui/backgrounds/variants/wormhole/textures.js +1 -3
- package/lib/module/ui/backgrounds/variants/wormhole.js +1 -132
- package/lib/module/ui/components/BackButton.js +1 -43
- package/lib/module/ui/components/Badge.js +1 -218
- package/lib/module/ui/components/ChangeRow.js +1 -106
- package/lib/module/ui/components/ChipStrip.js +1 -91
- package/lib/module/ui/components/ClipboardHintBanner.js +1 -145
- package/lib/module/ui/components/CollapsibleSection.js +1 -166
- package/lib/module/ui/components/CompactFilterChips.js +1 -110
- package/lib/module/ui/components/CompactRow.js +1 -291
- package/lib/module/ui/components/CopyButton.js +1 -303
- package/lib/module/ui/components/DataInspector.js +1 -319
- package/lib/module/ui/components/DetailView.js +1 -354
- package/lib/module/ui/components/DetailViewToggle.js +1 -125
- package/lib/module/ui/components/DevToolsCard.js +1 -122
- package/lib/module/ui/components/DraggableHeader.js +1 -211
- package/lib/module/ui/components/DynamicFilterView.js +1 -754
- package/lib/module/ui/components/EmptyState.js +1 -144
- package/lib/module/ui/components/EntityFilterView.js +1 -351
- package/lib/module/ui/components/EventHistoryViewer/CompareBar.js +1 -206
- package/lib/module/ui/components/EventHistoryViewer/DiffModeTabs.js +1 -94
- package/lib/module/ui/components/EventHistoryViewer/EventHistoryViewer.js +1 -179
- package/lib/module/ui/components/EventHistoryViewer/EventPickerModal.js +1 -203
- package/lib/module/ui/components/EventHistoryViewer/ViewToggleCards.js +1 -132
- package/lib/module/ui/components/EventHistoryViewer/index.js +1 -19
- package/lib/module/ui/components/EventHistoryViewer/types.js +1 -3
- package/lib/module/ui/components/EventListItem.js +1 -243
- package/lib/module/ui/components/EventStepperFooter.js +1 -180
- package/lib/module/ui/components/ExpandablePopover.js +1 -378
- package/lib/module/ui/components/ExpandedInfoRow.js +1 -103
- package/lib/module/ui/components/ExportPreview.js +1 -169
- package/lib/module/ui/components/FilterComponents.js +1 -282
- package/lib/module/ui/components/GripVerticalIcon.js +1 -61
- package/lib/module/ui/components/HeaderSearchButton.js +1 -46
- package/lib/module/ui/components/InfoRow.js +1 -87
- package/lib/module/ui/components/ListItem.js +1 -169
- package/lib/module/ui/components/ModalHeader.js +1 -297
- package/lib/module/ui/components/ModalHintBanner.js +1 -143
- package/lib/module/ui/components/Pill.js +1 -111
- package/lib/module/ui/components/PowerToggleButton.js +1 -74
- package/lib/module/ui/components/SearchBar.js +1 -161
- package/lib/module/ui/components/SectionHeader.js +1 -125
- package/lib/module/ui/components/StatsCard.js +1 -194
- package/lib/module/ui/components/StatusIndicator.js +1 -227
- package/lib/module/ui/components/StorageTypeBadge.js +1 -93
- package/lib/module/ui/components/TabSelector.js +1 -98
- package/lib/module/ui/components/TimeDisplay.js +1 -138
- package/lib/module/ui/components/ToggleRow.js +1 -112
- package/lib/module/ui/components/ToolButton.js +1 -89
- package/lib/module/ui/components/ToolEmptyState.js +1 -149
- package/lib/module/ui/components/ToolFooter.js +1 -197
- package/lib/module/ui/components/ValueTypeBadge.js +1 -143
- package/lib/module/ui/components/WindowControls.js +1 -383
- package/lib/module/ui/components/index.js +1 -52
- package/lib/module/ui/components/windowDrag.js +1 -41
- package/lib/module/ui/console/CyberpunkButtonOutline.js +1 -257
- package/lib/module/ui/console/CyberpunkIconContainer.js +1 -182
- package/lib/module/ui/console/CyberpunkSectionButton.js +1 -119
- package/lib/module/ui/floating/FloatingTool.js +1 -1003
- package/lib/module/ui/floating/FloatingTool.web.js +1 -600
- package/lib/module/ui/floating/FloatingToolHost.js +1 -29
- package/lib/module/ui/floating/FloatingToolHost.web.js +1 -25
- package/lib/module/ui/floating/index.js +1 -6
- package/lib/module/ui/floating/index.web.js +1 -6
- package/lib/module/ui/floating/onboardingConstants.js +1 -64
- package/lib/module/ui/floating/onboardingConstants.web.js +1 -27
- package/lib/module/ui/fonts.js +1 -8
- package/lib/module/ui/gameUI/components/GameUICollapsibleSection.js +1 -117
- package/lib/module/ui/gameUI/components/GameUICompactStats.js +1 -332
- package/lib/module/ui/gameUI/components/GameUIIssuesList.js +1 -280
- package/lib/module/ui/gameUI/components/GameUIStatusHeader.js +1 -141
- package/lib/module/ui/gameUI/constants/gameUIColors.js +1 -220
- package/lib/module/ui/gameUI/constants/macOSDesignSystemColors.js +1 -219
- package/lib/module/ui/gameUI/hooks/useGameUIAlertState.js +1 -105
- package/lib/module/ui/gameUI/index.js +1 -19
- package/lib/module/ui/index.js +1 -31
- package/lib/module/ui/listPresets.js +1 -39
- package/lib/module/ui/night/nightTheme.js +1 -126
- package/lib/module/ui/night/primitives.js +1 -511
- package/lib/module/ui/otto/OttoSceneView.js +1 -64
- package/lib/module/ui/otto/OttoSprite.js +1 -496
- package/lib/module/ui/otto/index.js +1 -22
- package/lib/module/ui/otto/ottoEngine.js +1 -2729
- package/lib/module/ui/otto/ottoScenes.js +1 -942
- package/lib/module/ui/otto/ottoSheet.js +1 -180
- package/lib/module/ui/toolTheme.js +1 -93
- package/lib/module/utils/absoluteFill.js +1 -24
- package/lib/module/utils/browserAsyncStorage.js +1 -151
- package/lib/module/utils/browserNavigation.js +1 -108
- package/lib/module/utils/devServer.js +1 -62
- package/lib/module/utils/devServer.web.js +1 -6
- package/lib/module/utils/displayValue.js +1 -36
- package/lib/module/utils/domRuntime.js +1 -134
- package/lib/module/utils/expoRouterModule.js +1 -46
- package/lib/module/utils/expoRouterModule.web.js +1 -9
- package/lib/module/utils/formatting/dataFormatting.js +1 -93
- package/lib/module/utils/formatting/httpFormatting.js +1 -142
- package/lib/module/utils/formatting/index.js +1 -8
- package/lib/module/utils/getSafeAreaInsets.js +1 -36
- package/lib/module/utils/getSafeAreaInsets.web.js +1 -31
- package/lib/module/utils/index.js +1 -23
- package/lib/module/utils/loadOptionalModule.js +1 -89
- package/lib/module/utils/loadToolModule.js +1 -42
- package/lib/module/utils/loadToolModule.web.js +1 -8
- package/lib/module/utils/minimalSuperJSON.js +1 -342
- package/lib/module/utils/modalStorage.js +1 -37
- package/lib/module/utils/nativeWeb.js +1 -107
- package/lib/module/utils/persistentStorage.js +1 -603
- package/lib/module/utils/persistentStorage.web.js +1 -72
- package/lib/module/utils/realNow.js +1 -0
- package/lib/module/utils/reloadApp.js +1 -99
- package/lib/module/utils/reloadPlatform.js +1 -31
- package/lib/module/utils/reloadPlatform.web.js +1 -11
- package/lib/module/utils/renderCaptureRegistry.js +1 -54
- package/lib/module/utils/safeExpoRouter.js +1 -189
- package/lib/module/utils/safeExpoRouter.web.js +1 -37
- package/lib/module/utils/safeStringify.js +1 -225
- package/lib/module/utils/snapshotProviderKit.js +1 -156
- package/lib/module/utils/stateSnapshotRegistry.js +1 -64
- package/lib/module/utils/stateTools.js +1 -154
- package/lib/module/utils/subscribable.js +1 -108
- package/lib/module/utils/subscriberCountNotifier.js +1 -66
- package/lib/module/utils/time/RelativeTime.js +1 -28
- package/lib/module/utils/time/TickContext.js +1 -38
- package/lib/module/utils/time/formatRelativeTime.js +1 -30
- package/lib/module/utils/time/index.js +1 -6
- package/lib/module/utils/time/useRelativeTime.js +1 -33
- package/lib/module/utils/toolModules.js +1 -19
- package/lib/module/utils/typeHelpers.js +1 -130
- package/lib/module/utils/valueFormatting.js +1 -131
- package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
- package/lib/typescript/commonjs/icons/index.d.ts +1 -0
- package/lib/typescript/commonjs/index.d.ts +1 -1
- package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts +8 -0
- package/lib/typescript/commonjs/ui/night/primitives.d.ts +9 -3
- package/lib/typescript/commonjs/utils/index.d.ts +1 -0
- package/lib/typescript/commonjs/utils/realNow.d.ts +11 -0
- package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
- package/lib/typescript/module/icons/index.d.ts +1 -0
- package/lib/typescript/module/index.d.ts +1 -1
- package/lib/typescript/module/storage/devToolsStorageKeys.d.ts +8 -0
- package/lib/typescript/module/ui/night/primitives.d.ts +9 -3
- package/lib/typescript/module/utils/index.d.ts +1 -0
- package/lib/typescript/module/utils/realNow.d.ts +11 -0
- package/lib/web/asyncStorage.mjs +1 -2
- package/lib/web/chunks/chunk-26OV3QDY.mjs +1 -0
- package/lib/web/chunks/chunk-3UTMGIUG.mjs +1 -2
- package/lib/web/chunks/chunk-53J2FMUD.mjs +1 -2
- package/lib/web/chunks/chunk-5KWAGM5V.mjs +1 -0
- package/lib/web/chunks/chunk-5NZOQR6Q.mjs +1 -2
- package/lib/web/chunks/chunk-7PRKERDN.mjs +1 -0
- package/lib/web/chunks/chunk-CE5U3CSQ.mjs +1 -2
- package/lib/web/chunks/chunk-D4RXBAOO.mjs +15 -0
- package/lib/web/chunks/chunk-ER3T3IDI.mjs +1 -0
- package/lib/web/chunks/chunk-GF5C5DVX.mjs +1 -2
- package/lib/web/chunks/chunk-K7CGIEFU.mjs +1 -2
- package/lib/web/chunks/{chunk-GTYIS7H7.mjs → chunk-L3AFTHWX.mjs} +8 -9
- package/lib/web/chunks/chunk-LZ7FZZ7R.mjs +1 -2
- package/lib/web/chunks/chunk-PTK5FO6C.mjs +1 -2
- package/lib/web/chunks/chunk-TJUBBXXK.mjs +1 -0
- package/lib/web/chunks/chunk-UKYVRCMZ.mjs +1 -0
- package/lib/web/chunks/chunk-XYUAUO57.mjs +1 -2
- package/lib/web/chunks/persistentStorage.web-6OAJAVRK.mjs +1 -0
- package/lib/web/colors.mjs +1 -2
- package/lib/web/dataViewer.mjs +2 -3
- package/lib/web/floating.mjs +1 -2
- package/lib/web/history.mjs +1 -2
- package/lib/web/hooks.mjs +1 -2
- package/lib/web/index.mjs +2 -3
- package/lib/web/native.mjs +1 -2
- package/lib/web/ui.mjs +1 -2
- package/lib/web/utils.mjs +1 -2
- package/package.json +9 -15
- package/scripts/detect-clipboard.js +5 -121
- package/scripts/detect-safe-area.js +3 -127
- package/ui.js +1 -7
- package/utils.js +1 -7
- package/lib/typescript/commonjs/JsModal.d.ts.map +0 -1
- package/lib/typescript/commonjs/JsModal.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/clipboard/autoDetectClipboard.d.ts.map +0 -1
- package/lib/typescript/commonjs/clipboard/clipboard-impl.d.ts.map +0 -1
- package/lib/typescript/commonjs/clipboard/clipboard-impl.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/clipboard/copyToClipboard.d.ts.map +0 -1
- package/lib/typescript/commonjs/clipboard/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/colors/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/context/HintsContext.d.ts.map +0 -1
- package/lib/typescript/commonjs/context/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/CyberpunkInput.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/DataTreeActionBar.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/DataTreeActionDock.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/DataViewer.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/DiffSummary.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/IndentGuides.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/IndentGuidesOverlay.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/JsonStringNotice.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/LiveExplorer.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/SplitDiffViewer.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/ThemedSplitView.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/TimestampDeltaBar.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/TypeLegend.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/ValueEditModal.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/VirtualizedDataExplorer.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/diffThemes.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/jsonOps.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/jsonStringValue.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/lineDiff.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/nestedPath.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/objectDiff.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/timestampDiff.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/tree/TreeDiffViewer.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/treeActions.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/useTreeDraft.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/useTreeEditor.d.ts.map +0 -1
- package/lib/typescript/commonjs/env/EnvironmentIndicator.d.ts.map +0 -1
- package/lib/typescript/commonjs/env/EnvironmentIndicator.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/env/EnvironmentSelector.d.ts.map +0 -1
- package/lib/typescript/commonjs/env/EnvironmentSelectorInline.d.ts.map +0 -1
- package/lib/typescript/commonjs/env/EnvironmentSelectorInline.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/history/HistoryProvider.d.ts.map +0 -1
- package/lib/typescript/commonjs/history/components/HistoryEntryRow.d.ts.map +0 -1
- package/lib/typescript/commonjs/history/components/HistoryList.d.ts.map +0 -1
- package/lib/typescript/commonjs/history/components/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/history/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/history/types.d.ts.map +0 -1
- package/lib/typescript/commonjs/hooks/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts.map +0 -1
- package/lib/typescript/commonjs/hooks/useChangeLog.d.ts.map +0 -1
- package/lib/typescript/commonjs/hooks/useDeviceInfo.d.ts.map +0 -1
- package/lib/typescript/commonjs/hooks/useEventStoreEvents.d.ts.map +0 -1
- package/lib/typescript/commonjs/hooks/useFilterManager.d.ts.map +0 -1
- package/lib/typescript/commonjs/hooks/usePersistedState.d.ts.map +0 -1
- package/lib/typescript/commonjs/hooks/useSafeAreaInsets.d.ts.map +0 -1
- package/lib/typescript/commonjs/hooks/useSafeAreaInsets.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/BenchmarkIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/EnvLaptopIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/IconBackground.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/ReactQueryIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/RenderCountIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/RouteMapIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/SentryBugIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/StackPulseIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/StorageStackIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/WifiCircuitIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/lucide-icons-original-full.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/lucide-icons.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/primitives/GlobeIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/primitives/icon-primitives.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/primitives/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/AccountSetup.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/AccountSetup.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/AccountSetupContent.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/FeatureGate.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/FreeAccountPrompt.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/LicenseEntryModal.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/accountRuntime.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/accountRuntime.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/licenseModule.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/openPricing.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/tierLimits.d.ts.map +0 -1
- package/lib/typescript/commonjs/logger/index-sentry.d.ts.map +0 -1
- package/lib/typescript/commonjs/logger/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/logger/logDump.d.ts.map +0 -1
- package/lib/typescript/commonjs/logger/types.d.ts.map +0 -1
- package/lib/typescript/commonjs/settings/components/BubbleSettingsSection.d.ts.map +0 -1
- package/lib/typescript/commonjs/settings/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/storage/definePersistedSetting.d.ts.map +0 -1
- package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts.map +0 -1
- package/lib/typescript/commonjs/storage/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/BaseEventStore.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/ChangeLog.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/createToolStore.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/floatingToolStore.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/floatingToolStore.test.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/ignoredPatternsCore.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/ignoredPatternsStore.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/ignoredPatternsStore.shared.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/ignoredPatternsStore.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/keyedArrays.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/toolActionRegistry.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/toolAttention.test.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/toolSyncAdapter.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/toolUiBridge.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/typedEdit.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/valuePath.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/valueShape.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/wireBudget.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/wireForm.d.ts.map +0 -1
- package/lib/typescript/commonjs/tools/defineTool.d.ts.map +0 -1
- package/lib/typescript/commonjs/types/types.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/BackgroundSwitcher.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/ToolBackground.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/backgroundStore.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/primitives.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/registry.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/rng.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/skyClock.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/types.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/daylight.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/deepField.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/hyperspace.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/liveSky.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/meteors.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/moonlight.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/underwater.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole/motion.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole/textures.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/BackButton.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/Badge.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ChangeRow.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ChipStrip.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ClipboardHintBanner.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/CollapsibleSection.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/CompactFilterChips.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/CompactRow.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/CopyButton.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/DataInspector.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/DetailView.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/DetailViewToggle.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/DevToolsCard.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/DraggableHeader.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/DynamicFilterView.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EmptyState.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EntityFilterView.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EventHistoryViewer/CompareBar.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EventHistoryViewer/DiffModeTabs.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EventHistoryViewer/EventHistoryViewer.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EventHistoryViewer/EventPickerModal.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EventHistoryViewer/ViewToggleCards.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EventHistoryViewer/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EventHistoryViewer/types.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EventListItem.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EventStepperFooter.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ExpandablePopover.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ExpandedInfoRow.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ExportPreview.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/FilterComponents.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/GripVerticalIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/HeaderSearchButton.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/InfoRow.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ListItem.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ModalHeader.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ModalHintBanner.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/Pill.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/PowerToggleButton.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/SearchBar.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/SectionHeader.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/StatsCard.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/StatusIndicator.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/StorageTypeBadge.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/TabSelector.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/TimeDisplay.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ToggleRow.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ToolButton.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ToolEmptyState.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ToolFooter.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ValueTypeBadge.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/WindowControls.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/windowDrag.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/console/CyberpunkButtonOutline.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/console/CyberpunkIconContainer.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/console/CyberpunkSectionButton.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/floating/FloatingTool.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/floating/FloatingTool.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/floating/FloatingToolHost.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/floating/FloatingToolHost.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/floating/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/floating/index.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/floating/onboardingConstants.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/floating/onboardingConstants.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/fonts.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/gameUI/components/GameUICollapsibleSection.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/gameUI/components/GameUICompactStats.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/gameUI/components/GameUIIssuesList.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/gameUI/components/GameUIStatusHeader.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/gameUI/constants/macOSDesignSystemColors.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/gameUI/hooks/useGameUIAlertState.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/gameUI/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/listPresets.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/night/nightTheme.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/night/primitives.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/otto/OttoSceneView.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/otto/OttoSprite.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/otto/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/otto/ottoEngine.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/otto/ottoScenes.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/otto/ottoSheet.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/toolTheme.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/absoluteFill.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/browserAsyncStorage.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/browserNavigation.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/devServer.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/devServer.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/displayValue.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/domRuntime.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/expoRouterModule.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/expoRouterModule.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/formatting/dataFormatting.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/formatting/httpFormatting.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/formatting/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/getSafeAreaInsets.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/getSafeAreaInsets.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/loadOptionalModule.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/loadToolModule.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/loadToolModule.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/minimalSuperJSON.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/modalStorage.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/nativeWeb.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/persistentStorage.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/persistentStorage.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/reloadApp.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/reloadPlatform.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/reloadPlatform.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/renderCaptureRegistry.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/safeExpoRouter.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/safeExpoRouter.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/safeStringify.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/snapshotProviderKit.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/stateSnapshotRegistry.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/stateTools.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/subscribable.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/subscriberCountNotifier.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/time/RelativeTime.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/time/TickContext.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/time/formatRelativeTime.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/time/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/time/useRelativeTime.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/toolModules.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/typeHelpers.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/valueFormatting.d.ts.map +0 -1
- package/lib/typescript/module/JsModal.d.ts.map +0 -1
- package/lib/typescript/module/JsModal.web.d.ts.map +0 -1
- package/lib/typescript/module/clipboard/autoDetectClipboard.d.ts.map +0 -1
- package/lib/typescript/module/clipboard/clipboard-impl.d.ts.map +0 -1
- package/lib/typescript/module/clipboard/clipboard-impl.web.d.ts.map +0 -1
- package/lib/typescript/module/clipboard/copyToClipboard.d.ts.map +0 -1
- package/lib/typescript/module/clipboard/index.d.ts.map +0 -1
- package/lib/typescript/module/colors/index.d.ts.map +0 -1
- package/lib/typescript/module/context/HintsContext.d.ts.map +0 -1
- package/lib/typescript/module/context/index.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/CyberpunkInput.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/DataTreeActionBar.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/DataTreeActionDock.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/DataViewer.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/DiffSummary.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/IndentGuides.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/IndentGuidesOverlay.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/JsonStringNotice.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/LiveExplorer.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/SplitDiffViewer.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/ThemedSplitView.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/TimestampDeltaBar.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/TypeLegend.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/ValueEditModal.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/VirtualizedDataExplorer.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/diffThemes.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/index.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/jsonOps.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/jsonStringValue.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/lineDiff.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/nestedPath.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/objectDiff.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/timestampDiff.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/tree/TreeDiffViewer.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/treeActions.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/useTreeDraft.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/useTreeEditor.d.ts.map +0 -1
- package/lib/typescript/module/env/EnvironmentIndicator.d.ts.map +0 -1
- package/lib/typescript/module/env/EnvironmentIndicator.web.d.ts.map +0 -1
- package/lib/typescript/module/env/EnvironmentSelector.d.ts.map +0 -1
- package/lib/typescript/module/env/EnvironmentSelectorInline.d.ts.map +0 -1
- package/lib/typescript/module/env/EnvironmentSelectorInline.web.d.ts.map +0 -1
- package/lib/typescript/module/history/HistoryProvider.d.ts.map +0 -1
- package/lib/typescript/module/history/components/HistoryEntryRow.d.ts.map +0 -1
- package/lib/typescript/module/history/components/HistoryList.d.ts.map +0 -1
- package/lib/typescript/module/history/components/index.d.ts.map +0 -1
- package/lib/typescript/module/history/index.d.ts.map +0 -1
- package/lib/typescript/module/history/types.d.ts.map +0 -1
- package/lib/typescript/module/hooks/index.d.ts.map +0 -1
- package/lib/typescript/module/hooks/safe-area-impl.d.ts.map +0 -1
- package/lib/typescript/module/hooks/useChangeLog.d.ts.map +0 -1
- package/lib/typescript/module/hooks/useDeviceInfo.d.ts.map +0 -1
- package/lib/typescript/module/hooks/useEventStoreEvents.d.ts.map +0 -1
- package/lib/typescript/module/hooks/useFilterManager.d.ts.map +0 -1
- package/lib/typescript/module/hooks/usePersistedState.d.ts.map +0 -1
- package/lib/typescript/module/hooks/useSafeAreaInsets.d.ts.map +0 -1
- package/lib/typescript/module/hooks/useSafeAreaInsets.web.d.ts.map +0 -1
- package/lib/typescript/module/icons/BenchmarkIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/EnvLaptopIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/IconBackground.d.ts.map +0 -1
- package/lib/typescript/module/icons/ReactQueryIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/RenderCountIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/RouteMapIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/SentryBugIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/StackPulseIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/StorageStackIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/WifiCircuitIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/index.d.ts.map +0 -1
- package/lib/typescript/module/icons/lucide-icons-original-full.d.ts.map +0 -1
- package/lib/typescript/module/icons/lucide-icons.d.ts.map +0 -1
- package/lib/typescript/module/icons/primitives/GlobeIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/primitives/icon-primitives.d.ts.map +0 -1
- package/lib/typescript/module/icons/primitives/index.d.ts.map +0 -1
- package/lib/typescript/module/index.d.ts.map +0 -1
- package/lib/typescript/module/license/AccountSetup.d.ts.map +0 -1
- package/lib/typescript/module/license/AccountSetup.web.d.ts.map +0 -1
- package/lib/typescript/module/license/AccountSetupContent.d.ts.map +0 -1
- package/lib/typescript/module/license/FeatureGate.d.ts.map +0 -1
- package/lib/typescript/module/license/FreeAccountPrompt.d.ts.map +0 -1
- package/lib/typescript/module/license/LicenseEntryModal.d.ts.map +0 -1
- package/lib/typescript/module/license/accountRuntime.d.ts.map +0 -1
- package/lib/typescript/module/license/accountRuntime.web.d.ts.map +0 -1
- package/lib/typescript/module/license/index.d.ts.map +0 -1
- package/lib/typescript/module/license/licenseModule.d.ts.map +0 -1
- package/lib/typescript/module/license/openPricing.d.ts.map +0 -1
- package/lib/typescript/module/license/tierLimits.d.ts.map +0 -1
- package/lib/typescript/module/logger/index-sentry.d.ts.map +0 -1
- package/lib/typescript/module/logger/index.d.ts.map +0 -1
- package/lib/typescript/module/logger/logDump.d.ts.map +0 -1
- package/lib/typescript/module/logger/types.d.ts.map +0 -1
- package/lib/typescript/module/settings/components/BubbleSettingsSection.d.ts.map +0 -1
- package/lib/typescript/module/settings/index.d.ts.map +0 -1
- package/lib/typescript/module/storage/definePersistedSetting.d.ts.map +0 -1
- package/lib/typescript/module/storage/devToolsStorageKeys.d.ts.map +0 -1
- package/lib/typescript/module/storage/index.d.ts.map +0 -1
- package/lib/typescript/module/stores/BaseEventStore.d.ts.map +0 -1
- package/lib/typescript/module/stores/ChangeLog.d.ts.map +0 -1
- package/lib/typescript/module/stores/createToolStore.d.ts.map +0 -1
- package/lib/typescript/module/stores/floatingToolStore.d.ts.map +0 -1
- package/lib/typescript/module/stores/floatingToolStore.test.d.ts.map +0 -1
- package/lib/typescript/module/stores/ignoredPatternsCore.d.ts.map +0 -1
- package/lib/typescript/module/stores/ignoredPatternsStore.d.ts.map +0 -1
- package/lib/typescript/module/stores/ignoredPatternsStore.shared.d.ts.map +0 -1
- package/lib/typescript/module/stores/ignoredPatternsStore.web.d.ts.map +0 -1
- package/lib/typescript/module/stores/index.d.ts.map +0 -1
- package/lib/typescript/module/sync/keyedArrays.d.ts.map +0 -1
- package/lib/typescript/module/sync/toolActionRegistry.d.ts.map +0 -1
- package/lib/typescript/module/sync/toolAttention.test.d.ts.map +0 -1
- package/lib/typescript/module/sync/toolSyncAdapter.d.ts.map +0 -1
- package/lib/typescript/module/sync/toolUiBridge.d.ts.map +0 -1
- package/lib/typescript/module/sync/typedEdit.d.ts.map +0 -1
- package/lib/typescript/module/sync/valuePath.d.ts.map +0 -1
- package/lib/typescript/module/sync/valueShape.d.ts.map +0 -1
- package/lib/typescript/module/sync/wireBudget.d.ts.map +0 -1
- package/lib/typescript/module/sync/wireForm.d.ts.map +0 -1
- package/lib/typescript/module/tools/defineTool.d.ts.map +0 -1
- package/lib/typescript/module/types/types.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/BackgroundSwitcher.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/ToolBackground.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/backgroundStore.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/index.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/primitives.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/registry.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/rng.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/skyClock.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/types.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/daylight.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/deepField.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/hyperspace.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/liveSky.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/meteors.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/moonlight.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/underwater.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/wormhole/motion.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/wormhole/textures.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/wormhole.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/BackButton.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/Badge.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ChangeRow.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ChipStrip.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ClipboardHintBanner.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/CollapsibleSection.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/CompactFilterChips.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/CompactRow.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/CopyButton.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/DataInspector.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/DetailView.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/DetailViewToggle.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/DevToolsCard.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/DraggableHeader.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/DynamicFilterView.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EmptyState.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EntityFilterView.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EventHistoryViewer/CompareBar.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EventHistoryViewer/DiffModeTabs.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EventHistoryViewer/EventHistoryViewer.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EventHistoryViewer/EventPickerModal.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EventHistoryViewer/ViewToggleCards.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EventHistoryViewer/index.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EventHistoryViewer/types.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EventListItem.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EventStepperFooter.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ExpandablePopover.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ExpandedInfoRow.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ExportPreview.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/FilterComponents.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/GripVerticalIcon.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/HeaderSearchButton.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/InfoRow.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ListItem.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ModalHeader.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ModalHintBanner.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/Pill.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/PowerToggleButton.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/SearchBar.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/SectionHeader.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/StatsCard.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/StatusIndicator.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/StorageTypeBadge.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/TabSelector.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/TimeDisplay.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ToggleRow.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ToolButton.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ToolEmptyState.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ToolFooter.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ValueTypeBadge.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/WindowControls.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/index.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/windowDrag.d.ts.map +0 -1
- package/lib/typescript/module/ui/console/CyberpunkButtonOutline.d.ts.map +0 -1
- package/lib/typescript/module/ui/console/CyberpunkIconContainer.d.ts.map +0 -1
- package/lib/typescript/module/ui/console/CyberpunkSectionButton.d.ts.map +0 -1
- package/lib/typescript/module/ui/floating/FloatingTool.d.ts.map +0 -1
- package/lib/typescript/module/ui/floating/FloatingTool.web.d.ts.map +0 -1
- package/lib/typescript/module/ui/floating/FloatingToolHost.d.ts.map +0 -1
- package/lib/typescript/module/ui/floating/FloatingToolHost.web.d.ts.map +0 -1
- package/lib/typescript/module/ui/floating/index.d.ts.map +0 -1
- package/lib/typescript/module/ui/floating/index.web.d.ts.map +0 -1
- package/lib/typescript/module/ui/floating/onboardingConstants.d.ts.map +0 -1
- package/lib/typescript/module/ui/floating/onboardingConstants.web.d.ts.map +0 -1
- package/lib/typescript/module/ui/fonts.d.ts.map +0 -1
- package/lib/typescript/module/ui/gameUI/components/GameUICollapsibleSection.d.ts.map +0 -1
- package/lib/typescript/module/ui/gameUI/components/GameUICompactStats.d.ts.map +0 -1
- package/lib/typescript/module/ui/gameUI/components/GameUIIssuesList.d.ts.map +0 -1
- package/lib/typescript/module/ui/gameUI/components/GameUIStatusHeader.d.ts.map +0 -1
- package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts.map +0 -1
- package/lib/typescript/module/ui/gameUI/constants/macOSDesignSystemColors.d.ts.map +0 -1
- package/lib/typescript/module/ui/gameUI/hooks/useGameUIAlertState.d.ts.map +0 -1
- package/lib/typescript/module/ui/gameUI/index.d.ts.map +0 -1
- package/lib/typescript/module/ui/index.d.ts.map +0 -1
- package/lib/typescript/module/ui/listPresets.d.ts.map +0 -1
- package/lib/typescript/module/ui/night/nightTheme.d.ts.map +0 -1
- package/lib/typescript/module/ui/night/primitives.d.ts.map +0 -1
- package/lib/typescript/module/ui/otto/OttoSceneView.d.ts.map +0 -1
- package/lib/typescript/module/ui/otto/OttoSprite.d.ts.map +0 -1
- package/lib/typescript/module/ui/otto/index.d.ts.map +0 -1
- package/lib/typescript/module/ui/otto/ottoEngine.d.ts.map +0 -1
- package/lib/typescript/module/ui/otto/ottoScenes.d.ts.map +0 -1
- package/lib/typescript/module/ui/otto/ottoSheet.d.ts.map +0 -1
- package/lib/typescript/module/ui/toolTheme.d.ts.map +0 -1
- package/lib/typescript/module/utils/absoluteFill.d.ts.map +0 -1
- package/lib/typescript/module/utils/browserAsyncStorage.d.ts.map +0 -1
- package/lib/typescript/module/utils/browserNavigation.d.ts.map +0 -1
- package/lib/typescript/module/utils/devServer.d.ts.map +0 -1
- package/lib/typescript/module/utils/devServer.web.d.ts.map +0 -1
- package/lib/typescript/module/utils/displayValue.d.ts.map +0 -1
- package/lib/typescript/module/utils/domRuntime.d.ts.map +0 -1
- package/lib/typescript/module/utils/expoRouterModule.d.ts.map +0 -1
- package/lib/typescript/module/utils/expoRouterModule.web.d.ts.map +0 -1
- package/lib/typescript/module/utils/formatting/dataFormatting.d.ts.map +0 -1
- package/lib/typescript/module/utils/formatting/httpFormatting.d.ts.map +0 -1
- package/lib/typescript/module/utils/formatting/index.d.ts.map +0 -1
- package/lib/typescript/module/utils/getSafeAreaInsets.d.ts.map +0 -1
- package/lib/typescript/module/utils/getSafeAreaInsets.web.d.ts.map +0 -1
- package/lib/typescript/module/utils/index.d.ts.map +0 -1
- package/lib/typescript/module/utils/loadOptionalModule.d.ts.map +0 -1
- package/lib/typescript/module/utils/loadToolModule.d.ts.map +0 -1
- package/lib/typescript/module/utils/loadToolModule.web.d.ts.map +0 -1
- package/lib/typescript/module/utils/minimalSuperJSON.d.ts.map +0 -1
- package/lib/typescript/module/utils/modalStorage.d.ts.map +0 -1
- package/lib/typescript/module/utils/nativeWeb.d.ts.map +0 -1
- package/lib/typescript/module/utils/persistentStorage.d.ts.map +0 -1
- package/lib/typescript/module/utils/persistentStorage.web.d.ts.map +0 -1
- package/lib/typescript/module/utils/reloadApp.d.ts.map +0 -1
- package/lib/typescript/module/utils/reloadPlatform.d.ts.map +0 -1
- package/lib/typescript/module/utils/reloadPlatform.web.d.ts.map +0 -1
- package/lib/typescript/module/utils/renderCaptureRegistry.d.ts.map +0 -1
- package/lib/typescript/module/utils/safeExpoRouter.d.ts.map +0 -1
- package/lib/typescript/module/utils/safeExpoRouter.web.d.ts.map +0 -1
- package/lib/typescript/module/utils/safeStringify.d.ts.map +0 -1
- package/lib/typescript/module/utils/snapshotProviderKit.d.ts.map +0 -1
- package/lib/typescript/module/utils/stateSnapshotRegistry.d.ts.map +0 -1
- package/lib/typescript/module/utils/stateTools.d.ts.map +0 -1
- package/lib/typescript/module/utils/subscribable.d.ts.map +0 -1
- package/lib/typescript/module/utils/subscriberCountNotifier.d.ts.map +0 -1
- package/lib/typescript/module/utils/time/RelativeTime.d.ts.map +0 -1
- package/lib/typescript/module/utils/time/TickContext.d.ts.map +0 -1
- package/lib/typescript/module/utils/time/formatRelativeTime.d.ts.map +0 -1
- package/lib/typescript/module/utils/time/index.d.ts.map +0 -1
- package/lib/typescript/module/utils/time/useRelativeTime.d.ts.map +0 -1
- package/lib/typescript/module/utils/toolModules.d.ts.map +0 -1
- package/lib/typescript/module/utils/typeHelpers.d.ts.map +0 -1
- package/lib/typescript/module/utils/valueFormatting.d.ts.map +0 -1
- package/lib/web/chunks/chunk-2MHKRRQW.mjs +0 -8
- package/lib/web/chunks/chunk-2Q3SDPH2.mjs +0 -14
- package/lib/web/chunks/chunk-34YQ42KI.mjs +0 -2
- package/lib/web/chunks/chunk-3NNNCQYP.mjs +0 -14
- package/lib/web/chunks/chunk-46CXXOQB.mjs +0 -2
- package/lib/web/chunks/chunk-475BSDCB.mjs +0 -2
- package/lib/web/chunks/chunk-552W4COI.mjs +0 -2
- package/lib/web/chunks/chunk-56TTTMX4.mjs +0 -6145
- package/lib/web/chunks/chunk-5LOQZINQ.mjs +0 -14
- package/lib/web/chunks/chunk-5NOIO6ZM.mjs +0 -16
- package/lib/web/chunks/chunk-6CCRCSA2.mjs +0 -2
- package/lib/web/chunks/chunk-6Q52HRBL.mjs +0 -2
- package/lib/web/chunks/chunk-6TEDFSNM.mjs +0 -655
- package/lib/web/chunks/chunk-7BMRSMHN.mjs +0 -2
- package/lib/web/chunks/chunk-A2SOFE47.mjs +0 -24
- package/lib/web/chunks/chunk-A7KJCK4R.mjs +0 -14
- package/lib/web/chunks/chunk-AEXGGXS7.mjs +0 -2
- package/lib/web/chunks/chunk-AGD7ZT6O.mjs +0 -15
- package/lib/web/chunks/chunk-AIEOQWNG.mjs +0 -2
- package/lib/web/chunks/chunk-ASTM35HG.mjs +0 -16
- package/lib/web/chunks/chunk-AZBMFPMX.mjs +0 -1421
- package/lib/web/chunks/chunk-B2V2UDCU.mjs +0 -16
- package/lib/web/chunks/chunk-BFGKGTAC.mjs +0 -2
- package/lib/web/chunks/chunk-BHW6AFO6.mjs +0 -2
- package/lib/web/chunks/chunk-BWRW3NJ2.mjs +0 -16
- package/lib/web/chunks/chunk-CBM2IZAK.mjs +0 -2
- package/lib/web/chunks/chunk-CDLCFF44.mjs +0 -2
- package/lib/web/chunks/chunk-CI5CO7FQ.mjs +0 -2
- package/lib/web/chunks/chunk-CIB4U2YK.mjs +0 -2
- package/lib/web/chunks/chunk-CLLTZQGD.mjs +0 -596
- package/lib/web/chunks/chunk-D5HQLRFW.mjs +0 -655
- package/lib/web/chunks/chunk-DZDTNXXK.mjs +0 -2
- package/lib/web/chunks/chunk-FDOZ6YSS.mjs +0 -2
- package/lib/web/chunks/chunk-FMEWNGQO.mjs +0 -2
- package/lib/web/chunks/chunk-G4DH7GMT.mjs +0 -2
- package/lib/web/chunks/chunk-GBUZCZE4.mjs +0 -2
- package/lib/web/chunks/chunk-GLMS5ZLJ.mjs +0 -445
- package/lib/web/chunks/chunk-GNGMIA7V.mjs +0 -2
- package/lib/web/chunks/chunk-HJ36IONA.mjs +0 -15
- package/lib/web/chunks/chunk-HXPTZMAZ.mjs +0 -2
- package/lib/web/chunks/chunk-I27M4JCS.mjs +0 -2
- package/lib/web/chunks/chunk-IVCT27JB.mjs +0 -2
- package/lib/web/chunks/chunk-JG4QSK5B.mjs +0 -2
- package/lib/web/chunks/chunk-JR7BJW6B.mjs +0 -389
- package/lib/web/chunks/chunk-K46ZJUXJ.mjs +0 -90
- package/lib/web/chunks/chunk-K4LXMO4D.mjs +0 -2
- package/lib/web/chunks/chunk-KBTYK5YE.mjs +0 -662
- package/lib/web/chunks/chunk-KHP6CSSM.mjs +0 -2
- package/lib/web/chunks/chunk-KRDRIW7T.mjs +0 -14
- package/lib/web/chunks/chunk-L2DTKDER.mjs +0 -2
- package/lib/web/chunks/chunk-LFDFDGHY.mjs +0 -655
- package/lib/web/chunks/chunk-MAIUUK4E.mjs +0 -2
- package/lib/web/chunks/chunk-MKJKS3IG.mjs +0 -275
- package/lib/web/chunks/chunk-MRQKVLXG.mjs +0 -2
- package/lib/web/chunks/chunk-NK3OISOL.mjs +0 -14
- package/lib/web/chunks/chunk-NLJDDIXW.mjs +0 -2
- package/lib/web/chunks/chunk-OENR3XFI.mjs +0 -11
- package/lib/web/chunks/chunk-OZB3VKZE.mjs +0 -2
- package/lib/web/chunks/chunk-P64PFJT3.mjs +0 -17618
- package/lib/web/chunks/chunk-PACPGYH7.mjs +0 -2
- package/lib/web/chunks/chunk-PART6HOE.mjs +0 -14
- package/lib/web/chunks/chunk-PMRXUQRH.mjs +0 -2
- package/lib/web/chunks/chunk-PZ45TQ55.mjs +0 -14
- package/lib/web/chunks/chunk-Q5LN7GET.mjs +0 -17624
- package/lib/web/chunks/chunk-QCD6T6L4.mjs +0 -297
- package/lib/web/chunks/chunk-QD5EUANU.mjs +0 -2
- package/lib/web/chunks/chunk-QJTECJCO.mjs +0 -2
- package/lib/web/chunks/chunk-QPIZURPZ.mjs +0 -2
- package/lib/web/chunks/chunk-QPY45R5F.mjs +0 -274
- package/lib/web/chunks/chunk-R2SGZIG5.mjs +0 -2
- package/lib/web/chunks/chunk-S3GYQYVJ.mjs +0 -16
- package/lib/web/chunks/chunk-SCCXVTDM.mjs +0 -2
- package/lib/web/chunks/chunk-SHJHD646.mjs +0 -2
- package/lib/web/chunks/chunk-TCRVZ55E.mjs +0 -2
- package/lib/web/chunks/chunk-TJ6ZVV2L.mjs +0 -15
- package/lib/web/chunks/chunk-TPSY4RC3.mjs +0 -14
- package/lib/web/chunks/chunk-U5KNX5O6.mjs +0 -17624
- package/lib/web/chunks/chunk-UCKELQSM.mjs +0 -2
- package/lib/web/chunks/chunk-UGGCYHRH.mjs +0 -15
- package/lib/web/chunks/chunk-UNYQJZET.mjs +0 -16
- package/lib/web/chunks/chunk-VE72SWLV.mjs +0 -15
- package/lib/web/chunks/chunk-VKONO6MI.mjs +0 -2
- package/lib/web/chunks/chunk-W4BGMPJO.mjs +0 -2
- package/lib/web/chunks/chunk-WHNEEKLR.mjs +0 -2
- package/lib/web/chunks/chunk-WLGUP3KY.mjs +0 -16
- package/lib/web/chunks/chunk-WY7D4WBZ.mjs +0 -2
- package/lib/web/chunks/chunk-XRNB2MHO.mjs +0 -107
- package/lib/web/chunks/chunk-XXTIAXQY.mjs +0 -2
- package/lib/web/chunks/chunk-YG6DIKQD.mjs +0 -2
- package/lib/web/chunks/chunk-YIZFMU66.mjs +0 -2
- package/lib/web/chunks/chunk-YOGAPOGC.mjs +0 -2
- package/lib/web/chunks/chunk-Z7373DS5.mjs +0 -2
- package/lib/web/chunks/chunk-Z76GRN66.mjs +0 -17627
- package/lib/web/chunks/persistentStorage.web-4FBAOYJ4.mjs +0 -12
- package/lib/web/chunks/persistentStorage.web-7W3Y6Q24.mjs +0 -12
- package/lib/web/chunks/persistentStorage.web-GOWNFMVT.mjs +0 -2
- package/lib/web/chunks/persistentStorage.web-RF47FXIK.mjs +0 -12
- package/scripts/generate-wormhole-textures.cjs +0 -261
- package/scripts/test-wormhole-motion.cjs +0 -59
|
@@ -1,204 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Id-addressed list edits — one implementation, shared by every adapter that
|
|
5
|
-
* takes a merge patch.
|
|
6
|
-
*
|
|
7
|
-
* WHY. Resending a whole array is correct only when the caller has SEEN the
|
|
8
|
-
* whole array, and reads are capped. Measured with a 20-item list truncated to
|
|
9
|
-
* 5 (`pnpm ai:array --truncate=5`): the whole-array form scored 0/9 across three
|
|
10
|
-
* models — two refused outright, and one silently sent back only the 5 items it
|
|
11
|
-
* had been shown, destroying the other 15. Addressed edits scored 9/9.
|
|
12
|
-
*
|
|
13
|
-
* It also makes mass deletion impossible BY OMISSION: an addressed edit can only
|
|
14
|
-
* remove ids it names. Sending a real array still replaces the list, which is
|
|
15
|
-
* how a caller deliberately empties one.
|
|
16
|
-
*
|
|
17
|
-
* This lives here rather than in one adapter because react-query, zustand and
|
|
18
|
-
* network all take merge patches, and a second copy of a data-destroying safety
|
|
19
|
-
* rule is a copy that drifts.
|
|
20
|
-
*/
|
|
21
|
-
const isPlainObject = v => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
22
|
-
|
|
23
|
-
/** Fields we will treat as an item's stable identity, best first. */
|
|
24
|
-
const ID_FIELDS = ["id", "lineId", "key", "uuid", "_id", "slug", "name"];
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* The field that identifies items in this list, or undefined if there isn't one.
|
|
28
|
-
*
|
|
29
|
-
* Every item must carry it, and every value must be a distinct string/number —
|
|
30
|
-
* a duplicated id would make an addressed edit ambiguous, and silently picking
|
|
31
|
-
* the first match is exactly the kind of "helpful" guess that loses data.
|
|
32
|
-
*/
|
|
33
|
-
export function identityField(items) {
|
|
34
|
-
if (!items.length || !items.every(isPlainObject)) return undefined;
|
|
35
|
-
const first = items[0];
|
|
36
|
-
for (const f of ID_FIELDS) {
|
|
37
|
-
if (!(f in first)) continue;
|
|
38
|
-
const values = items.map(it => it[f]);
|
|
39
|
-
const usable = values.every(v => typeof v === "string" || typeof v === "number");
|
|
40
|
-
if (!usable) continue;
|
|
41
|
-
if (new Set(values.map(String)).size !== values.length) continue;
|
|
42
|
-
return f;
|
|
43
|
-
}
|
|
44
|
-
return undefined;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* The identity an ADDED item should carry.
|
|
49
|
-
*
|
|
50
|
-
* `Object.entries` hands back STRING keys, so `{"9901": {id: 9901, …}}` was
|
|
51
|
-
* written as `{id: "9901"}` — the caller's own numeric id replaced by text, and
|
|
52
|
-
* then refused by the typed-edit guard as `[2].id: number → string`. The caller
|
|
53
|
-
* recovers by resending the WHOLE array, which is exactly the truncation-unsafe
|
|
54
|
-
* move this module exists to prevent. Measured on a live QA run: one added
|
|
55
|
-
* offer cost a refusal, a full-list retransmission and 35 seconds.
|
|
56
|
-
*
|
|
57
|
-
* So the id the caller WROTE wins. With no id in the body, the key is coerced
|
|
58
|
-
* to the type the existing items use, and only when the text round-trips
|
|
59
|
-
* exactly: "007" is not 7, and inventing that identity is worse than a refusal
|
|
60
|
-
* the caller can read.
|
|
61
|
-
*/
|
|
62
|
-
function identityForAdd(current, idField, key, edit) {
|
|
63
|
-
const supplied = edit[idField];
|
|
64
|
-
if (typeof supplied === "string" || typeof supplied === "number") {
|
|
65
|
-
// An item whose id disagrees with the address it was sent under is
|
|
66
|
-
// ambiguous — either could be the one the caller meant. Say so rather than
|
|
67
|
-
// silently picking one and writing an item nobody asked for.
|
|
68
|
-
if (String(supplied) !== key) {
|
|
69
|
-
return {
|
|
70
|
-
ok: false,
|
|
71
|
-
error: `The new item is addressed as \`${key}\` but carries \`${idField}\`: ${JSON.stringify(supplied)}. Use the same value for both — address it by the id it carries.`
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
return {
|
|
75
|
-
ok: true,
|
|
76
|
-
value: supplied
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
const numericList = current.every(it => typeof it[idField] === "number");
|
|
80
|
-
if (numericList && key.trim() !== "" && String(Number(key)) === key) {
|
|
81
|
-
return {
|
|
82
|
-
ok: true,
|
|
83
|
-
value: Number(key)
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
return {
|
|
87
|
-
ok: true,
|
|
88
|
-
value: key
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Let a caller address list items by their own id instead of resending the list.
|
|
94
|
-
*
|
|
95
|
-
* { lines: { "seed-1": { qty: 5 } } } change one field of one item
|
|
96
|
-
* { lines: { "seed-2": null } } remove that item
|
|
97
|
-
* { lines: { "new-1": { …all fields… } } } append (id not already present)
|
|
98
|
-
*
|
|
99
|
-
* WHY THIS EXISTS. Resending the whole array is correct only when the caller has
|
|
100
|
-
* SEEN the whole array, and reads are capped — so on a long list the honest
|
|
101
|
-
* agents refuse and the careless ones send back only the items they were shown,
|
|
102
|
-
* silently destroying the rest. Measured: with a 20-item bag truncated to 5, the
|
|
103
|
-
* whole-array form scored 0/9 across three models and one of them deleted 15
|
|
104
|
-
* lines without a word. Addressed edits scored 9/9. (`pnpm ai:array`.)
|
|
105
|
-
*
|
|
106
|
-
* It also makes mass deletion impossible BY OMISSION: `lines: []` empties a bag,
|
|
107
|
-
* but a keyed edit can only remove ids it names.
|
|
108
|
-
*
|
|
109
|
-
* Returns the patch with keyed objects expanded into real arrays, so everything
|
|
110
|
-
* downstream — the typed-edit guard, the receipt, the store write — is unchanged
|
|
111
|
-
* and keeps all of its protections.
|
|
112
|
-
*/
|
|
113
|
-
export function expandKeyedArrays(current, patch, path = "", notes = []) {
|
|
114
|
-
if (Array.isArray(current) && isPlainObject(patch)) {
|
|
115
|
-
const idField = identityField(current);
|
|
116
|
-
if (!idField) {
|
|
117
|
-
// No stable identity: leave it alone and let the normal guard report the
|
|
118
|
-
// object-vs-array type change, which says something truer than we could.
|
|
119
|
-
return {
|
|
120
|
-
patch,
|
|
121
|
-
notes
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
const byId = new Map(current.map(it => [String(it[idField]), it]));
|
|
125
|
-
const next = current.slice();
|
|
126
|
-
let removed = 0;
|
|
127
|
-
let changed = 0;
|
|
128
|
-
let added = 0;
|
|
129
|
-
for (const [id, edit] of Object.entries(patch)) {
|
|
130
|
-
const i = next.findIndex(it => String(it[idField]) === id);
|
|
131
|
-
if (edit === null) {
|
|
132
|
-
if (i === -1) return {
|
|
133
|
-
patch,
|
|
134
|
-
notes
|
|
135
|
-
};
|
|
136
|
-
next.splice(i, 1);
|
|
137
|
-
removed++;
|
|
138
|
-
} else if (i === -1) {
|
|
139
|
-
if (!isPlainObject(edit)) return {
|
|
140
|
-
patch,
|
|
141
|
-
notes
|
|
142
|
-
};
|
|
143
|
-
const identity = identityForAdd(current, idField, id, edit);
|
|
144
|
-
if (!identity.ok) {
|
|
145
|
-
return {
|
|
146
|
-
patch,
|
|
147
|
-
notes,
|
|
148
|
-
error: identity.error
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
next.push({
|
|
152
|
-
...edit,
|
|
153
|
-
[idField]: identity.value
|
|
154
|
-
});
|
|
155
|
-
added++;
|
|
156
|
-
} else {
|
|
157
|
-
const merged = expandKeyedArrays(byId.get(id), edit, `${path}[${id}]`, notes);
|
|
158
|
-
if (merged.error) return {
|
|
159
|
-
patch,
|
|
160
|
-
notes,
|
|
161
|
-
error: merged.error
|
|
162
|
-
};
|
|
163
|
-
const base = next[i];
|
|
164
|
-
next[i] = isPlainObject(base) && isPlainObject(merged.patch) ? {
|
|
165
|
-
...base,
|
|
166
|
-
...merged.patch
|
|
167
|
-
} : merged.patch;
|
|
168
|
-
changed++;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
notes.push(`${path || "(root)"}: addressed by \`${idField}\` — ${changed} changed, ${added} added, ${removed} removed, ${next.length} item(s) remain`);
|
|
172
|
-
return {
|
|
173
|
-
patch: next,
|
|
174
|
-
notes
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
if (isPlainObject(current) && isPlainObject(patch)) {
|
|
178
|
-
const outPatch = {};
|
|
179
|
-
for (const [k, v] of Object.entries(patch)) {
|
|
180
|
-
const p = path ? `${path}.${k}` : k;
|
|
181
|
-
if (!(k in current)) {
|
|
182
|
-
outPatch[k] = v;
|
|
183
|
-
continue;
|
|
184
|
-
}
|
|
185
|
-
const inner = expandKeyedArrays(current[k], v, p, notes);
|
|
186
|
-
// A refusal deep in the tree is the whole patch's refusal: writing the
|
|
187
|
-
// rest of it would apply half of what the caller asked for.
|
|
188
|
-
if (inner.error) return {
|
|
189
|
-
patch,
|
|
190
|
-
notes,
|
|
191
|
-
error: inner.error
|
|
192
|
-
};
|
|
193
|
-
outPatch[k] = inner.patch;
|
|
194
|
-
}
|
|
195
|
-
return {
|
|
196
|
-
patch: outPatch,
|
|
197
|
-
notes
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
|
-
return {
|
|
201
|
-
patch,
|
|
202
|
-
notes
|
|
203
|
-
};
|
|
204
|
-
}
|
|
1
|
+
"use strict";const d=e=>typeof e==="object"&&e!==null&&!Array.isArray(e);const m=["id","lineId","key","uuid","_id","slug","name"];export function identityField(e){if(!e.length||!e.every(d))return void 0;const i=e[0];for(const t of m){if(!(t in i))continue;const r=e.map(o=>o[t]);const n=r.every(o=>typeof o==="string"||typeof o==="number");if(!n)continue;if(new Set(r.map(String)).size!==r.length)continue;return t}return void 0}function $(e,i,t,r){const n=r[i];if(typeof n==="string"||typeof n==="number"){if(String(n)!==t){return{ok:false,error:`The new item is addressed as \`${t}\` but carries \`${i}\`: ${JSON.stringify(n)}. Use the same value for both \u2014 address it by the id it carries.`}}return{ok:true,value:n}}const o=e.every(s=>typeof s[i]==="number");if(o&&t.trim()!==""&&String(Number(t))===t){return{ok:true,value:Number(t)}}return{ok:true,value:t}}export function expandKeyedArrays(e,i,t="",r=[]){if(Array.isArray(e)&&d(i)){const n=identityField(e);if(!n){return{patch:i,notes:r}}const o=new Map(e.map(f=>[String(f[n]),f]));const s=e.slice();let y=0;let c=0;let b=0;for(const[f,a]of Object.entries(i)){const l=s.findIndex(u=>String(u[n])===f);if(a===null){if(l===-1)return{patch:i,notes:r};s.splice(l,1);y++}else if(l===-1){if(!d(a))return{patch:i,notes:r};const u=$(e,n,f,a);if(!u.ok){return{patch:i,notes:r,error:u.error}}s.push({...a,[n]:u.value});b++}else{const u=expandKeyedArrays(o.get(f),a,`${t}[${f}]`,r);if(u.error)return{patch:i,notes:r,error:u.error};const g=s[l];s[l]=d(g)&&d(u.patch)?{...g,...u.patch}:u.patch;c++}}r.push(`${t||"(root)"}: addressed by \`${n}\` \u2014 ${c} changed, ${b} added, ${y} removed, ${s.length} item(s) remain`);return{patch:s,notes:r}}if(d(e)&&d(i)){const n={};for(const[o,s]of Object.entries(i)){const y=t?`${t}.${o}`:o;if(!(o in e)){n[o]=s;continue}const c=expandKeyedArrays(e[o],s,y,r);if(c.error)return{patch:i,notes:r,error:c.error};n[o]=c.patch}return{patch:n,notes:r}}return{patch:i,notes:r}}
|
|
@@ -1,236 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { assertAccountAccess, hasAccountAccess, subscribeAccountAccess } from "../license/licenseModule.js";
|
|
4
|
-
/**
|
|
5
|
-
* toolActionRegistry — the on-device twin of the broker's action dispatch.
|
|
6
|
-
*
|
|
7
|
-
* Buoy already has exactly one place where `{toolId, action, params}` becomes a
|
|
8
|
-
* real call into a tool: `handleAction` in external-sync, fed by the adapter
|
|
9
|
-
* map that `autoExternalSync` assembles. That map was private to the React
|
|
10
|
-
* tree, so anything running ON the device (the Scenarios runner) had no way to
|
|
11
|
-
* reach it and would have had to duplicate the map — two dispatch paths that
|
|
12
|
-
* drift the first time an adapter changes.
|
|
13
|
-
*
|
|
14
|
-
* This module publishes the SAME map through a global seam, so a scenario step,
|
|
15
|
-
* a desktop click and an MCP call are one code path with two entry points.
|
|
16
|
-
*
|
|
17
|
-
* WHY A GLOBAL, NOT AN IMPORT: the map is built inside a component (the
|
|
18
|
-
* react-query adapter is a hook, the env adapter is a factory closed over a
|
|
19
|
-
* prop, and custom tools arrive as props), so it cannot be a module constant.
|
|
20
|
-
* Meanwhile the consumer must not import `@buoy-gg/core` — that package imports
|
|
21
|
-
* the tools, and a tool importing it back is the require cycle that puts a
|
|
22
|
-
* LogBox on every reload. Same reasoning, and the same shape, as
|
|
23
|
-
* `crashFlush.ts` in external-sync.
|
|
24
|
-
*
|
|
25
|
-
* WE STORE A GETTER, NOT A SNAPSHOT, for the reason `attachDeviceSync` does:
|
|
26
|
-
* the adapter map is re-created on renders that change its inputs, and a stale
|
|
27
|
-
* captured copy would keep dispatching into adapters the tree has replaced.
|
|
28
|
-
*
|
|
29
|
-
* SAFETY: this registry is populated only while `AutoExternalSync` is mounted,
|
|
30
|
-
* which is itself gated (dev, or release + an explicit opt-in + a real Pro
|
|
31
|
-
* license). It is deliberately NOT a substitute for a caller's own production
|
|
32
|
-
* gate — anything that bends app state through it must check `__DEV__` itself,
|
|
33
|
-
* because the actions reachable here (network overrides, storage writes,
|
|
34
|
-
* impersonation) have no business running in a shipped app.
|
|
35
|
-
*/
|
|
36
|
-
|
|
37
|
-
const REGISTRY_KEY = "__buoyToolActionRegistry";
|
|
38
|
-
|
|
39
|
-
/** The duck-typed adapter shape, matching external-sync's `ToolSyncAdapter`. */
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* A SET of getters, not one slot — React can briefly mount two providers, or
|
|
43
|
-
* re-run an effect's setup before the previous cleanup. A last-writer-wins slot
|
|
44
|
-
* would let the second registration silently blank the first.
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
|
-
function sources() {
|
|
48
|
-
const g = globalThis;
|
|
49
|
-
if (!g[REGISTRY_KEY]) g[REGISTRY_KEY] = new Set();
|
|
50
|
-
return g[REGISTRY_KEY];
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Publish the live adapter map. Called by `autoExternalSync` with a getter that
|
|
55
|
-
* reads its current `useMemo` value. Returns the unregister function.
|
|
56
|
-
*/
|
|
57
|
-
export function registerToolAdapters(getTools) {
|
|
58
|
-
const set = sources();
|
|
59
|
-
set.add(getTools);
|
|
60
|
-
let disposed = false;
|
|
61
|
-
const dispose = () => {
|
|
62
|
-
if (disposed) return;
|
|
63
|
-
disposed = true;
|
|
64
|
-
const raw = getTools();
|
|
65
|
-
// Private inverse operations only. No credential bypass reaches public dispatch.
|
|
66
|
-
const cleanup = async (toolId, action, params) => {
|
|
67
|
-
if (!(toolId === "network" && action === "deleteOverrideRule" || toolId === "impersonate" && action === "stopImpersonation")) {
|
|
68
|
-
throw new Error("Unsupported account-lock cleanup operation");
|
|
69
|
-
}
|
|
70
|
-
if (toolId === "impersonate") return raw[toolId]?.dispose?.(cleanup);
|
|
71
|
-
const fn = raw[toolId]?.actions?.[action];
|
|
72
|
-
if (!fn) throw new Error(`Cleanup unavailable for ${toolId}`);
|
|
73
|
-
return fn(params);
|
|
74
|
-
};
|
|
75
|
-
for (const adapter of Object.values(raw)) {
|
|
76
|
-
try {
|
|
77
|
-
Promise.resolve(adapter.dispose?.(cleanup)).catch(error => console.warn("[Buoy] Tool cleanup failed", error));
|
|
78
|
-
} catch (error) {
|
|
79
|
-
console.warn("[Buoy] Tool cleanup failed", error);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
const off = subscribeAccountAccess(() => {
|
|
84
|
-
if (!hasAccountAccess()) dispose();else disposed = false;
|
|
85
|
-
});
|
|
86
|
-
return () => {
|
|
87
|
-
off();
|
|
88
|
-
set.delete(getTools);
|
|
89
|
-
// A second provider still owns these adapters during Strict Mode/remount.
|
|
90
|
-
Promise.resolve().then(() => {
|
|
91
|
-
if (set.size === 0) dispose();
|
|
92
|
-
});
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/** The merged adapter map across every live source. */
|
|
97
|
-
export function getToolAdapters() {
|
|
98
|
-
if (!hasAccountAccess()) return {};
|
|
99
|
-
const merged = {};
|
|
100
|
-
for (const get of sources()) {
|
|
101
|
-
try {
|
|
102
|
-
Object.assign(merged, get());
|
|
103
|
-
} catch {
|
|
104
|
-
// A source that throws must not take the whole registry down.
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
return Object.fromEntries(Object.entries(merged).map(([id, adapter]) => [id, guardToolAdapter(adapter)]));
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/** Tool ids currently dispatchable. */
|
|
111
|
-
export function listToolIds() {
|
|
112
|
-
return Object.keys(getToolAdapters());
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/** `toolId -> action names`, for pre-flight validation and capability display. */
|
|
116
|
-
export function listToolActions() {
|
|
117
|
-
const out = {};
|
|
118
|
-
for (const [id, adapter] of Object.entries(getToolAdapters())) {
|
|
119
|
-
out[id] = Object.keys(adapter.actions ?? {});
|
|
120
|
-
}
|
|
121
|
-
return out;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Tool ids whose adapter publishes a `getSnapshot`.
|
|
126
|
-
*
|
|
127
|
-
* Buoy's read surface is split in two: some tools answer through `actions`
|
|
128
|
-
* (`listQueries`, `async.getAllKeys`), and some answer only through the
|
|
129
|
-
* snapshot the sync layer polls — console entries, network events, the route
|
|
130
|
-
* sitemap, the env table. Anything driving tools ON the device sees only the
|
|
131
|
-
* first half unless it asks for the second, which is why the console and
|
|
132
|
-
* network panels look empty to an in-app agent that has an action for
|
|
133
|
-
* everything except reading them.
|
|
134
|
-
*/
|
|
135
|
-
export function listSnapshotToolIds() {
|
|
136
|
-
return Object.entries(getToolAdapters()).filter(([, adapter]) => typeof adapter.getSnapshot === "function").map(([id]) => id);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Read one tool's snapshot — the same value `attachDeviceSync` puts on the wire
|
|
141
|
-
* for MCP's `get_snapshot`, without a socket.
|
|
142
|
-
*
|
|
143
|
-
* Async to match {@link dispatchToolAction}: every caller already awaits, and
|
|
144
|
-
* an adapter is free to make this a promise later without breaking them.
|
|
145
|
-
*/
|
|
146
|
-
export async function readToolSnapshot(toolId) {
|
|
147
|
-
assertAccountAccess();
|
|
148
|
-
const tools = getToolAdapters();
|
|
149
|
-
const adapter = tools[toolId];
|
|
150
|
-
if (!adapter) throw new Error(`Unknown tool "${toolId}"`);
|
|
151
|
-
if (typeof adapter.getSnapshot !== "function") {
|
|
152
|
-
throw new Error(`Tool "${toolId}" has no snapshot to read`);
|
|
153
|
-
}
|
|
154
|
-
return await adapter.getSnapshot();
|
|
155
|
-
}
|
|
156
|
-
export function isToolRegistryReady() {
|
|
157
|
-
return hasAccountAccess() && sources().size > 0;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* Dispatch one action, shaping failures exactly as `handleAction` does: an
|
|
162
|
-
* unknown tool and an unknown action are distinguishable, and adapter errors
|
|
163
|
-
* surface as plain messages rather than objects nobody can read on a phone.
|
|
164
|
-
*/
|
|
165
|
-
export async function dispatchToolAction(toolId, action, params) {
|
|
166
|
-
assertAccountAccess();
|
|
167
|
-
const tools = getToolAdapters();
|
|
168
|
-
const tool = tools[toolId];
|
|
169
|
-
const fn = tool?.actions?.[action];
|
|
170
|
-
if (!fn) {
|
|
171
|
-
throw new Error(tool ? `Unknown action "${action}" on tool "${toolId}"` : `Unknown tool "${toolId}"`);
|
|
172
|
-
}
|
|
173
|
-
return await fn(params);
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* Wait for the registry to be populated, for the narrow window between first
|
|
178
|
-
* frame and `AutoExternalSync` mounting. Resolves false on timeout so the
|
|
179
|
-
* caller can say "Buoy tools are still starting up" instead of "unknown tool".
|
|
180
|
-
*/
|
|
181
|
-
export async function waitForToolRegistry(timeoutMs = 2000) {
|
|
182
|
-
if (isToolRegistryReady()) return true;
|
|
183
|
-
const deadline = Date.now() + timeoutMs;
|
|
184
|
-
while (Date.now() < deadline) {
|
|
185
|
-
await new Promise(r => setTimeout(r, 50));
|
|
186
|
-
if (isToolRegistryReady()) return true;
|
|
187
|
-
}
|
|
188
|
-
return false;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/** Guard retained references too, and discard results completed after revocation. */
|
|
192
|
-
export function guardToolAdapter(adapter) {
|
|
193
|
-
const guard = fn => (...args) => {
|
|
194
|
-
assertAccountAccess();
|
|
195
|
-
let revoked = false;
|
|
196
|
-
const off = subscribeAccountAccess(() => {
|
|
197
|
-
if (!hasAccountAccess()) revoked = true;
|
|
198
|
-
});
|
|
199
|
-
const check = () => {
|
|
200
|
-
if (revoked) throw new Error("Buoy account access ended while the operation was pending.");
|
|
201
|
-
assertAccountAccess();
|
|
202
|
-
};
|
|
203
|
-
try {
|
|
204
|
-
const result = fn.apply(adapter, args);
|
|
205
|
-
if (result && typeof result.then === "function") {
|
|
206
|
-
return Promise.resolve(result).then(value => {
|
|
207
|
-
check();
|
|
208
|
-
return value;
|
|
209
|
-
}).finally(off);
|
|
210
|
-
}
|
|
211
|
-
check();
|
|
212
|
-
off();
|
|
213
|
-
return result;
|
|
214
|
-
} catch (error) {
|
|
215
|
-
off();
|
|
216
|
-
throw error;
|
|
217
|
-
}
|
|
218
|
-
};
|
|
219
|
-
return {
|
|
220
|
-
...adapter,
|
|
221
|
-
...(adapter.getSnapshot ? {
|
|
222
|
-
getSnapshot: guard(adapter.getSnapshot)
|
|
223
|
-
} : {}),
|
|
224
|
-
...(adapter.actions ? {
|
|
225
|
-
actions: Object.fromEntries(Object.entries(adapter.actions).map(([name, action]) => [name, guard(action)]))
|
|
226
|
-
} : {}),
|
|
227
|
-
...(adapter.subscribe ? {
|
|
228
|
-
subscribe: listener => {
|
|
229
|
-
assertAccountAccess();
|
|
230
|
-
return adapter.subscribe(() => {
|
|
231
|
-
if (hasAccountAccess()) listener();
|
|
232
|
-
});
|
|
233
|
-
}
|
|
234
|
-
} : {})
|
|
235
|
-
};
|
|
236
|
-
}
|
|
1
|
+
"use strict";import{assertAccountAccess as u,hasAccountAccess as f,subscribeAccountAccess as w}from"../license/licenseModule.js";import{realNow as y}from"../utils/realNow.js";const l="__buoyToolActionRegistry";function p(){const e=globalThis;if(!e[l])e[l]=new Set;return e[l]}export function registerToolAdapters(e){const o=p();o.add(e);let t=false;const c=()=>{if(t)return;t=true;const r=e();const a=async(n,s,b)=>{if(!(n==="network"&&s==="deleteOverrideRule"||n==="impersonate"&&s==="stopImpersonation")){throw new Error("Unsupported account-lock cleanup operation")}if(n==="impersonate")return r[n]?.dispose?.(a);const h=r[n]?.actions?.[s];if(!h)throw new Error(`Cleanup unavailable for ${n}`);return h(b)};for(const n of Object.values(r)){try{Promise.resolve(n.dispose?.(a)).catch(s=>console.warn("[Buoy] Tool cleanup failed",s))}catch(s){console.warn("[Buoy] Tool cleanup failed",s)}}};const i=w(()=>{if(!f())c();else t=false});return()=>{i();o.delete(e);Promise.resolve().then(()=>{if(o.size===0)c()})}}export function getToolAdapters(){if(!f())return{};const e={};for(const o of p()){try{Object.assign(e,o())}catch{}}return Object.fromEntries(Object.entries(e).map(([o,t])=>[o,guardToolAdapter(t)]))}export function listToolIds(){return Object.keys(getToolAdapters())}export function listToolActions(){const e={};for(const[o,t]of Object.entries(getToolAdapters())){e[o]=Object.keys(t.actions??{})}return e}export function listSnapshotToolIds(){return Object.entries(getToolAdapters()).filter(([,e])=>typeof e.getSnapshot==="function").map(([e])=>e)}export async function readToolSnapshot(e){u();const o=getToolAdapters();const t=o[e];if(!t)throw new Error(`Unknown tool "${e}"`);if(typeof t.getSnapshot!=="function"){throw new Error(`Tool "${e}" has no snapshot to read`)}return await t.getSnapshot()}export function isToolRegistryReady(){return f()&&p().size>0}export async function dispatchToolAction(e,o,t){u();const c=getToolAdapters();const i=c[e];const r=i?.actions?.[o];if(!r){throw new Error(i?`Unknown action "${o}" on tool "${e}"`:`Unknown tool "${e}"`)}return await r(t)}export async function waitForToolRegistry(e=2e3){if(isToolRegistryReady())return true;const o=y()+e;while(y()<o){await new Promise(t=>setTimeout(t,50));if(isToolRegistryReady())return true}return false}export function guardToolAdapter(e){const o=t=>(...c)=>{u();let i=false;const r=w(()=>{if(!f())i=true});const a=()=>{if(i)throw new Error("Buoy account access ended while the operation was pending.");u()};try{const n=t.apply(e,c);if(n&&typeof n.then==="function"){return Promise.resolve(n).then(s=>{a();return s}).finally(r)}a();r();return n}catch(n){r();throw n}};return{...e,...e.getSnapshot?{getSnapshot:o(e.getSnapshot)}:{},...e.actions?{actions:Object.fromEntries(Object.entries(e.actions).map(([t,c])=>[t,o(c)]))}:{},...e.subscribe?{subscribe:t=>{u();return e.subscribe(()=>{if(f())t()})}}:{}}}
|
|
@@ -1,50 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* The attention badge seam: a tool says "I need you" and the rail hears it.
|
|
5
|
-
*/
|
|
6
|
-
import { describe, expect, it, vi } from "vitest";
|
|
7
|
-
import { getToolAttention, setToolAttention, subscribeToolAttention } from "./toolUiBridge.js";
|
|
8
|
-
describe("toolAttention", () => {
|
|
9
|
-
it("stores, replaces and clears a badge, notifying once per change", () => {
|
|
10
|
-
const fn = vi.fn();
|
|
11
|
-
const off = subscribeToolAttention(fn);
|
|
12
|
-
setToolAttention("ask-buoy", {
|
|
13
|
-
kind: "needsInput",
|
|
14
|
-
label: "Needs your approval"
|
|
15
|
-
});
|
|
16
|
-
expect(getToolAttention("ask-buoy")).toEqual({
|
|
17
|
-
kind: "needsInput",
|
|
18
|
-
label: "Needs your approval"
|
|
19
|
-
});
|
|
20
|
-
expect(fn).toHaveBeenCalledTimes(1);
|
|
21
|
-
// Same value again is not a change.
|
|
22
|
-
setToolAttention("ask-buoy", {
|
|
23
|
-
kind: "needsInput",
|
|
24
|
-
label: "Needs your approval"
|
|
25
|
-
});
|
|
26
|
-
expect(fn).toHaveBeenCalledTimes(1);
|
|
27
|
-
setToolAttention("ask-buoy", {
|
|
28
|
-
kind: "done",
|
|
29
|
-
label: "Finished"
|
|
30
|
-
});
|
|
31
|
-
expect(fn).toHaveBeenCalledTimes(2);
|
|
32
|
-
setToolAttention("ask-buoy", null);
|
|
33
|
-
expect(getToolAttention("ask-buoy")).toBeNull();
|
|
34
|
-
expect(fn).toHaveBeenCalledTimes(3);
|
|
35
|
-
// Clearing what is already clear is silent.
|
|
36
|
-
setToolAttention("ask-buoy", null);
|
|
37
|
-
expect(fn).toHaveBeenCalledTimes(3);
|
|
38
|
-
off();
|
|
39
|
-
});
|
|
40
|
-
it("keeps tools apart", () => {
|
|
41
|
-
setToolAttention("a", {
|
|
42
|
-
kind: "failed",
|
|
43
|
-
label: "x"
|
|
44
|
-
});
|
|
45
|
-
setToolAttention("b", null);
|
|
46
|
-
expect(getToolAttention("a")?.kind).toBe("failed");
|
|
47
|
-
expect(getToolAttention("b")).toBeNull();
|
|
48
|
-
setToolAttention("a", null);
|
|
49
|
-
});
|
|
50
|
-
});
|
|
1
|
+
"use strict";import{describe as s,expect as e,it as n,vi as i}from"vitest";import{getToolAttention as a,setToolAttention as o,subscribeToolAttention as d}from"./toolUiBridge.js";s("toolAttention",()=>{n("stores, replaces and clears a badge, notifying once per change",()=>{const l=i.fn();const t=d(l);o("ask-buoy",{kind:"needsInput",label:"Needs your approval"});e(a("ask-buoy")).toEqual({kind:"needsInput",label:"Needs your approval"});e(l).toHaveBeenCalledTimes(1);o("ask-buoy",{kind:"needsInput",label:"Needs your approval"});e(l).toHaveBeenCalledTimes(1);o("ask-buoy",{kind:"done",label:"Finished"});e(l).toHaveBeenCalledTimes(2);o("ask-buoy",null);e(a("ask-buoy")).toBeNull();e(l).toHaveBeenCalledTimes(3);o("ask-buoy",null);e(l).toHaveBeenCalledTimes(3);t()});n("keeps tools apart",()=>{o("a",{kind:"failed",label:"x"});o("b",null);e(a("a")?.kind).toBe("failed");e(a("b")).toBeNull();o("a",null)})});
|
|
@@ -1,58 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* ToolSyncAdapter — the contract a tool implements to sync to Buoy Desktop /
|
|
5
|
-
* the MCP server, plus `createSyncAdapter`, the one way to build one.
|
|
6
|
-
*
|
|
7
|
-
* Every tool package used to declare its adapter as a bare object literal
|
|
8
|
-
* with the comment "structurally matches external-sync's ToolSyncAdapter so
|
|
9
|
-
* this package doesn't need a dependency on it". That kept the packages
|
|
10
|
-
* decoupled but left the contract unchecked: storage shipped `version: 3`
|
|
11
|
-
* while every sibling was on 2 and nothing noticed. The type now lives here,
|
|
12
|
-
* in shared (which every tool already depends on), and external-sync
|
|
13
|
-
* re-exports it — one definition, checked everywhere.
|
|
14
|
-
*
|
|
15
|
-
* `createSyncAdapter` is deliberately thin. It:
|
|
16
|
-
* - type-checks the literal against the contract (a wrong `subscribe`
|
|
17
|
-
* signature or a non-function action fails at compile time),
|
|
18
|
-
* - keeps the CONCRETE `actions` type, so `adapter.actions.getChangeDetail()`
|
|
19
|
-
* stays typed for tests and callers,
|
|
20
|
-
* - merges several change sources into one `subscribe` (a store plus its
|
|
21
|
-
* registry, envelopes plus drops) — the second most-copied block.
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
/** A remote-invocable action. Thrown errors are reported back to the dashboard. */
|
|
25
|
-
|
|
26
|
-
/** Anything that can tell the bridge "something changed". */
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* The contract each dev tool implements to become remotely syncable.
|
|
30
|
-
* Works with BaseEventStore, ChangeLog, createToolStore, or any pattern
|
|
31
|
-
* exposing subscribe + getSnapshot.
|
|
32
|
-
*
|
|
33
|
-
* Payloads (snapshots and action results) must be JSON-serializable —
|
|
34
|
-
* no functions, circular references, or class instances.
|
|
35
|
-
*/
|
|
36
|
-
|
|
37
|
-
/** Subscribe to every source; the returned function unsubscribes from all. */
|
|
38
|
-
export function mergeChangeSources(sources) {
|
|
39
|
-
if (sources.length === 1) return sources[0];
|
|
40
|
-
return onChange => {
|
|
41
|
-
const offs = sources.map(source => source(onChange));
|
|
42
|
-
return () => {
|
|
43
|
-
for (const off of offs) off();
|
|
44
|
-
};
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
export function createSyncAdapter(definition) {
|
|
48
|
-
const subscribe = Array.isArray(definition.subscribe) ? mergeChangeSources(definition.subscribe) : definition.subscribe;
|
|
49
|
-
const adapter = {
|
|
50
|
-
version: definition.version,
|
|
51
|
-
getSnapshot: definition.getSnapshot,
|
|
52
|
-
subscribe,
|
|
53
|
-
...(definition.actions ? {
|
|
54
|
-
actions: definition.actions
|
|
55
|
-
} : {})
|
|
56
|
-
};
|
|
57
|
-
return adapter;
|
|
58
|
-
}
|
|
1
|
+
"use strict";export function mergeChangeSources(r){if(r.length===1)return r[0];return s=>{const t=r.map(e=>e(s));return()=>{for(const e of t)e()}}}export function createSyncAdapter(r){const s=Array.isArray(r.subscribe)?mergeChangeSources(r.subscribe):r.subscribe;const t={version:r.version,getSnapshot:r.getSnapshot,subscribe:s,...r.actions?{actions:r.actions}:{}};return t}
|
|
@@ -1,123 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* toolUiBridge — let a tool ask the host to bring another tool back on screen.
|
|
5
|
-
*
|
|
6
|
-
* WHY THIS EXISTS. Buoy's tool overlays (the SIMULATED banner, the recording
|
|
7
|
-
* banner, the perf HUD) render as siblings of `AppHostProvider`, not inside it,
|
|
8
|
-
* so none of them can reach the host that knows how to open and restore tools.
|
|
9
|
-
* That is usually fine — an overlay's job is to be seen, not to navigate. It
|
|
10
|
-
* stops being fine the moment an overlay is the ONLY thing on screen and the
|
|
11
|
-
* next step lives inside a tool: the macro recorder minimizes Scenarios so a
|
|
12
|
-
* tester can drive the app, and when they stop, the review screen they need is
|
|
13
|
-
* behind a tool icon they have to know to hunt for.
|
|
14
|
-
*
|
|
15
|
-
* The alternative was moving every overlay inside the provider, which would
|
|
16
|
-
* re-order the stacking of six unrelated tools to fix one banner's button. This
|
|
17
|
-
* is the same global-seam shape `toolActionRegistry` already uses for the same
|
|
18
|
-
* reason: the capability lives inside a component tree, the caller must not
|
|
19
|
-
* import `@buoy-gg/core` (that package imports the tools, and a tool importing
|
|
20
|
-
* it back is a require cycle), so it is published through a global.
|
|
21
|
-
*
|
|
22
|
-
* A SET of openers, not one slot, for the reason the action registry keeps one:
|
|
23
|
-
* React can briefly mount two providers, or re-run an effect's setup before the
|
|
24
|
-
* previous cleanup, and a last-writer-wins slot lets the second registration
|
|
25
|
-
* silently blank the first.
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
const BRIDGE_KEY = "__buoyToolUiBridge";
|
|
29
|
-
|
|
30
|
-
/** Returns true when the tool was actually brought back on screen. */
|
|
31
|
-
|
|
32
|
-
function openers() {
|
|
33
|
-
const g = globalThis;
|
|
34
|
-
if (!g[BRIDGE_KEY]) g[BRIDGE_KEY] = new Set();
|
|
35
|
-
return g[BRIDGE_KEY];
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/** Published by the host, inside the provider that owns open tools. */
|
|
39
|
-
export function registerToolOpener(opener) {
|
|
40
|
-
const set = openers();
|
|
41
|
-
set.add(opener);
|
|
42
|
-
return () => {
|
|
43
|
-
set.delete(opener);
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Ask the host to show a tool.
|
|
49
|
-
*
|
|
50
|
-
* Returns false when nothing could do it — no host mounted, or the tool isn't
|
|
51
|
-
* open for it to restore. Callers must treat that as a real answer and say so,
|
|
52
|
-
* rather than rendering a button that silently does nothing.
|
|
53
|
-
*/
|
|
54
|
-
export function openBuoyTool(toolId) {
|
|
55
|
-
for (const opener of openers()) {
|
|
56
|
-
try {
|
|
57
|
-
if (opener(toolId)) return true;
|
|
58
|
-
} catch {
|
|
59
|
-
// A host that throws must not stop another from answering.
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return false;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/** True when some host is listening — for deciding whether to offer the button. */
|
|
66
|
-
export function canOpenBuoyTools() {
|
|
67
|
-
return openers().size > 0;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// ─── Attention ───────────────────────────────────────────────────────────────
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* "This tool needs you" — shown as a badge on its chip in the minimized rail.
|
|
74
|
-
*
|
|
75
|
-
* The case: Ask Buoy is minimized so a tester can watch the app, and the
|
|
76
|
-
* agent hits a step that needs a tap. Nobody can see the card. The sheet used
|
|
77
|
-
* to fail safe by DECLINING the change and ending the turn — which made
|
|
78
|
-
* minimize mean "stop", the opposite of what it is for. Now the approval
|
|
79
|
-
* holds, the chip gets a badge, and tapping the chip (the existing restore
|
|
80
|
-
* path) brings the card back. Same seam shape as the opener above: the rail
|
|
81
|
-
* lives inside the host, the tool cannot import the host, so it publishes
|
|
82
|
-
* through a global.
|
|
83
|
-
*
|
|
84
|
-
* `done` and `failed` cover the other thing a hidden tool cannot say — that
|
|
85
|
-
* the work you minimized it to wait for has finished.
|
|
86
|
-
*/
|
|
87
|
-
|
|
88
|
-
const ATTENTION_KEY = "__buoyToolAttention";
|
|
89
|
-
function attention() {
|
|
90
|
-
const g = globalThis;
|
|
91
|
-
if (!g[ATTENTION_KEY]) g[ATTENTION_KEY] = {
|
|
92
|
-
byTool: new Map(),
|
|
93
|
-
listeners: new Set()
|
|
94
|
-
};
|
|
95
|
-
return g[ATTENTION_KEY];
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/** Set, replace or (with null) clear a tool's badge. No-op when nothing changed. */
|
|
99
|
-
export function setToolAttention(toolId, next) {
|
|
100
|
-
const store = attention();
|
|
101
|
-
const prev = store.byTool.get(toolId) ?? null;
|
|
102
|
-
if (prev === next || prev && next && prev.kind === next.kind && prev.label === next.label) return;
|
|
103
|
-
if (next) store.byTool.set(toolId, next);else store.byTool.delete(toolId);
|
|
104
|
-
for (const fn of store.listeners) {
|
|
105
|
-
try {
|
|
106
|
-
fn();
|
|
107
|
-
} catch {
|
|
108
|
-
// A throwing subscriber must not stop the others from hearing.
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
export function getToolAttention(toolId) {
|
|
113
|
-
return attention().byTool.get(toolId) ?? null;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
/** For `useSyncExternalStore` in the rail. */
|
|
117
|
-
export function subscribeToolAttention(fn) {
|
|
118
|
-
const store = attention();
|
|
119
|
-
store.listeners.add(fn);
|
|
120
|
-
return () => {
|
|
121
|
-
store.listeners.delete(fn);
|
|
122
|
-
};
|
|
123
|
-
}
|
|
1
|
+
"use strict";const r="__buoyToolUiBridge";function s(){const t=globalThis;if(!t[r])t[r]=new Set;return t[r]}export function registerToolOpener(t){const o=s();o.add(t);return()=>{o.delete(t)}}export function openBuoyTool(t){for(const o of s()){try{if(o(t))return true}catch{}}return false}export function canOpenBuoyTools(){return s().size>0}const i="__buoyToolAttention";function l(){const t=globalThis;if(!t[i])t[i]={byTool:new Map,listeners:new Set};return t[i]}export function setToolAttention(t,o){const e=l();const n=e.byTool.get(t)??null;if(n===o||n&&o&&n.kind===o.kind&&n.label===o.label)return;if(o)e.byTool.set(t,o);else e.byTool.delete(t);for(const u of e.listeners){try{u()}catch{}}}export function getToolAttention(t){return l().byTool.get(t)??null}export function subscribeToolAttention(t){const o=l();o.listeners.add(t);return()=>{o.listeners.delete(t)}}
|