515 lines
20 KiB
JSON
515 lines
20 KiB
JSON
{
|
|
"nodes": [
|
|
{
|
|
"id": "stores_protecteddevices_useprotecteddevicesstore",
|
|
"label": "useProtectedDevicesStore (Zustand store for mac/windows protected devices: load, enroll, confirmInstalled, remove)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/stores/protectedDevices.ts",
|
|
"source_location": "line 32",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "stores_protecteddevices_protecteddevice",
|
|
"label": "ProtectedDevice (interface: id, platform mac|windows, label, status pending|active|revoked|degraded, installedAt, createdAt)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/stores/protectedDevices.ts",
|
|
"source_location": "line 6",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "stores_mailconsent_usemailconsentstore",
|
|
"label": "useMailConsentStore (Zustand store: show/hide pending consent connections for mail scanning)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/stores/mailConsent.ts",
|
|
"source_location": "line 17",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "stores_community_usecommunitystore",
|
|
"label": "useCommunityStore (Zustand store: community feed active category, optimistic likes, compose focus state)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/stores/community.ts",
|
|
"source_location": "line 77",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "stores_community_communitypost",
|
|
"label": "CommunityPost (interface: id, category, content, likes, dislikes, isAnonymous, author, botType lyra|rebreak, challengeId, domain_vote submission with yesVotes/noVotes)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/stores/community.ts",
|
|
"source_location": "line 14",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "stores_devicelimit_usedevicelimitstore",
|
|
"label": "useDeviceLimitStore (Zustand store: device-limit modal, list of registered devices with platform/model/osVersion, plan)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/stores/deviceLimit.ts",
|
|
"source_location": "line 26",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "stores_aplock_useapplockstore",
|
|
"label": "useAppLockStore (Zustand store: Face ID / Touch ID app lock — enabled/locked/available, AsyncStorage key @rebreak/app-lock-enabled, expo-local-authentication defensive load)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/stores/appLock.ts",
|
|
"source_location": "line 58",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "stores_lyravoice_uselyravoicestore",
|
|
"label": "useLyraVoiceStore (Zustand store: Lyra TTS auto-play preference, AsyncStorage key @rebreak/lyraVoiceEnabled, toggle/reset)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/stores/lyraVoice.ts",
|
|
"source_location": "line 26",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "stores_theme_usethemestore",
|
|
"label": "useThemeStore (Zustand store: system/light/dark theme mode, Appearance.addChangeListener, AsyncStorage key @rebreak/theme)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/stores/theme.ts",
|
|
"source_location": "line 23",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "stores_mailconnectdraft_usemailconnectdraft",
|
|
"label": "useMailConnectDraft (Zustand store: mail provider connection wizard draft — view consent|grid|form|oauth_warning|oauth_pending, selectedProvider, email, pendingOAuthConnectionId)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/stores/mailConnectDraft.ts",
|
|
"source_location": "line 46",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "stores_coach_usecoachstore",
|
|
"label": "useCoachStore (Zustand store: Lyra AI coach messages, loadHistory from /api/coach/history, sendMessage to /api/coach/message, welcomeBackShownThisSession flag)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/stores/coach.ts",
|
|
"source_location": "line 33",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "stores_realtimedebug_userealtimefebugstore",
|
|
"label": "useRealtimeDebugStore (Zustand store: Supabase realtime debug — monkey-patches socket open/close/error and RealtimeChannel.subscribe, logs to in-memory ring buffer of 100 entries)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/stores/realtimeDebug.ts",
|
|
"source_location": "line 26",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "stores_auth_useauthstore",
|
|
"label": "useAuthStore (Zustand store: Supabase session/user, signInWithPassword + DEVICE_LOCKED check, signUp, signOut resets all stores, OAuth Google/Apple, verifyOtp, updatePassword)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/stores/auth.ts",
|
|
"source_location": "line 61",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "stores_auth_devicelockederror",
|
|
"label": "DeviceLockedError (type: DEVICE_LOCKED with lockedUntil and releaseRequestable — signaled when POST /api/devices/check-lock returns 409)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/stores/auth.ts",
|
|
"source_location": "line 33",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "ios_podfileproperties_config",
|
|
"label": "Podfile.properties.json (iOS build config: Hermes JS engine, New Architecture enabled, deployment target 15.1, static frameworks, privacy manifest aggregation)",
|
|
"file_type": "document",
|
|
"source_file": "apps/rebreak-native/ios/Podfile.properties.json",
|
|
"source_location": null,
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "ios_packettunnel_hashlist",
|
|
"label": "HashList (Swift class: memory-mapped binary blocklist of sorted 64-bit big-endian hashes, mmap via os_unfair_lock snapshot swap, binary search O(log n), subdomain suffix matching up to 5 levels)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/ios/RebreakPacketTunnelExtension/HashList.swift",
|
|
"source_location": "line 24",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "ios_packettunnel_domainhasher",
|
|
"label": "DomainHasher (Swift enum: normalize domain lowercase+strip www+strip path, SHA-256 first 8 bytes as big-endian UInt64 — bit-identical to Android DomainHasher.kt and server domainHash.ts)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/ios/RebreakPacketTunnelExtension/DomainHasher.swift",
|
|
"source_location": "line 16",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "ios_packettunnel_packettunnelprovider",
|
|
"label": "PacketTunnelProvider (Swift NEPacketTunnelProvider subclass: DNS sinkhole VPN Layer-1 — TUN subnet 10.0.0.0/24, DNS to 10.0.0.1, read loop, DnsFilter classify, NXDOMAIN block or forward to 1.1.1.1, in-flight cap 32, Darwin notification blocklist reload + DNS cache flush via settings re-apply)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/ios/RebreakPacketTunnelExtension/PacketTunnelProvider.swift",
|
|
"source_location": "line 74",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "ios_packettunnel_extlog",
|
|
"label": "ExtLog (Swift enum: shared App-Group UserDefaults writer for PacketTunnel extension debug logs, suite group.org.rebreak.app, key url_filter_logs, max 200 entries)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/ios/RebreakPacketTunnelExtension/PacketTunnelProvider.swift",
|
|
"source_location": "line 60",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "ios_packettunnel_dnsfilter",
|
|
"label": "DnsFilter (Swift enum: IPv4/UDP/DNS packet parser — classify block|forward|drop, NXDOMAIN response builder, SERVFAIL response builder K2, forward response wrapper, IP checksum recompute RFC 791, QNAME parser with fail-open for compression pointer H3)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/ios/RebreakPacketTunnelExtension/DnsFilter.swift",
|
|
"source_location": "line 44",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "ios_packettunnel_dnsfilerdecision",
|
|
"label": "DnsFilterDecision (Swift enum: block(response:Data, domain:String) | forward(domain:String) | drop)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/ios/RebreakPacketTunnelExtension/DnsFilter.swift",
|
|
"source_location": "line 34",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "ios_rebreak_appdelegate",
|
|
"label": "AppDelegate (Swift ExpoAppDelegate subclass: bootstraps ExpoReactNativeFactory + ReactNativeDelegate, handles URL deep links and universal links via RCTLinkingManager)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/ios/ReBreak/AppDelegate.swift",
|
|
"source_location": "line 6",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "ios_rebreak_reactnativedelegate",
|
|
"label": "ReactNativeDelegate (Swift ExpoReactNativeFactoryDelegate: DEBUG=metro virtual entry .expo/.virtual-metro-entry, RELEASE=main.jsbundle from Bundle.main)",
|
|
"file_type": "code",
|
|
"source_file": "apps/rebreak-native/ios/ReBreak/AppDelegate.swift",
|
|
"source_location": "line 55",
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "ios_rebreak_appicon_1024",
|
|
"label": "ReBreak App Icon 1024x1024 (iOS app icon: broken chain link logo in dark navy blue on white background, wordmark ReBreak below in bold dark navy)",
|
|
"file_type": "image",
|
|
"source_file": "apps/rebreak-native/ios/ReBreak/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png",
|
|
"source_location": null,
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
},
|
|
{
|
|
"id": "ios_rebreak_splashscreencolor",
|
|
"label": "SplashScreenBackground colorset (dark navy sRGB r=0.059 g=0.090 b=0.165 — matches ReBreak brand dark navy used in app icon and theme)",
|
|
"file_type": "document",
|
|
"source_file": "apps/rebreak-native/ios/ReBreak/Images.xcassets/SplashScreenBackground.colorset/Contents.json",
|
|
"source_location": null,
|
|
"source_url": null,
|
|
"captured_at": null,
|
|
"author": null,
|
|
"contributor": null
|
|
}
|
|
],
|
|
"edges": [
|
|
{
|
|
"source": "stores_protecteddevices_useprotecteddevicesstore",
|
|
"target": "stores_protecteddevices_protecteddevice",
|
|
"relation": "references",
|
|
"confidence": "EXTRACTED",
|
|
"confidence_score": 1.0,
|
|
"source_file": "apps/rebreak-native/stores/protectedDevices.ts",
|
|
"source_location": "line 32",
|
|
"weight": 1.0
|
|
},
|
|
{
|
|
"source": "stores_auth_useauthstore",
|
|
"target": "stores_devicelimit_usedevicelimitstore",
|
|
"relation": "calls",
|
|
"confidence": "EXTRACTED",
|
|
"confidence_score": 1.0,
|
|
"source_file": "apps/rebreak-native/stores/auth.ts",
|
|
"source_location": "line 155",
|
|
"weight": 1.0
|
|
},
|
|
{
|
|
"source": "stores_auth_useauthstore",
|
|
"target": "stores_protecteddevices_useprotecteddevicesstore",
|
|
"relation": "calls",
|
|
"confidence": "EXTRACTED",
|
|
"confidence_score": 1.0,
|
|
"source_file": "apps/rebreak-native/stores/auth.ts",
|
|
"source_location": "line 155",
|
|
"weight": 1.0
|
|
},
|
|
{
|
|
"source": "stores_auth_useauthstore",
|
|
"target": "stores_mailconsent_usemailconsentstore",
|
|
"relation": "calls",
|
|
"confidence": "EXTRACTED",
|
|
"confidence_score": 1.0,
|
|
"source_file": "apps/rebreak-native/stores/auth.ts",
|
|
"source_location": "line 156",
|
|
"weight": 1.0
|
|
},
|
|
{
|
|
"source": "stores_auth_useauthstore",
|
|
"target": "stores_community_usecommunitystore",
|
|
"relation": "calls",
|
|
"confidence": "EXTRACTED",
|
|
"confidence_score": 1.0,
|
|
"source_file": "apps/rebreak-native/stores/auth.ts",
|
|
"source_location": "line 157",
|
|
"weight": 1.0
|
|
},
|
|
{
|
|
"source": "stores_auth_useauthstore",
|
|
"target": "stores_coach_usecoachstore",
|
|
"relation": "calls",
|
|
"confidence": "EXTRACTED",
|
|
"confidence_score": 1.0,
|
|
"source_file": "apps/rebreak-native/stores/auth.ts",
|
|
"source_location": "line 158",
|
|
"weight": 1.0
|
|
},
|
|
{
|
|
"source": "stores_auth_useauthstore",
|
|
"target": "stores_mailconnectdraft_usemailconnectdraft",
|
|
"relation": "calls",
|
|
"confidence": "EXTRACTED",
|
|
"confidence_score": 1.0,
|
|
"source_file": "apps/rebreak-native/stores/auth.ts",
|
|
"source_location": "line 160",
|
|
"weight": 1.0
|
|
},
|
|
{
|
|
"source": "stores_auth_useauthstore",
|
|
"target": "stores_lyravoice_uselyravoicestore",
|
|
"relation": "calls",
|
|
"confidence": "EXTRACTED",
|
|
"confidence_score": 1.0,
|
|
"source_file": "apps/rebreak-native/stores/auth.ts",
|
|
"source_location": "line 161",
|
|
"weight": 1.0
|
|
},
|
|
{
|
|
"source": "stores_auth_useauthstore",
|
|
"target": "stores_auth_devicelockederror",
|
|
"relation": "references",
|
|
"confidence": "EXTRACTED",
|
|
"confidence_score": 1.0,
|
|
"source_file": "apps/rebreak-native/stores/auth.ts",
|
|
"source_location": "line 33",
|
|
"weight": 1.0
|
|
},
|
|
{
|
|
"source": "stores_auth_useauthstore",
|
|
"target": "stores_realtimedebug_userealtimefebugstore",
|
|
"relation": "conceptually_related_to",
|
|
"confidence": "INFERRED",
|
|
"confidence_score": 0.65,
|
|
"source_file": "apps/rebreak-native/stores/auth.ts",
|
|
"source_location": "line 67",
|
|
"weight": 0.65
|
|
},
|
|
{
|
|
"source": "stores_aplock_useapplockstore",
|
|
"target": "stores_auth_useauthstore",
|
|
"relation": "conceptually_related_to",
|
|
"confidence": "INFERRED",
|
|
"confidence_score": 0.75,
|
|
"source_file": "apps/rebreak-native/stores/appLock.ts",
|
|
"source_location": "line 24",
|
|
"weight": 0.75
|
|
},
|
|
{
|
|
"source": "ios_packettunnel_packettunnelprovider",
|
|
"target": "ios_packettunnel_hashlist",
|
|
"relation": "calls",
|
|
"confidence": "EXTRACTED",
|
|
"confidence_score": 1.0,
|
|
"source_file": "apps/rebreak-native/ios/RebreakPacketTunnelExtension/PacketTunnelProvider.swift",
|
|
"source_location": "line 169",
|
|
"weight": 1.0
|
|
},
|
|
{
|
|
"source": "ios_packettunnel_packettunnelprovider",
|
|
"target": "ios_packettunnel_dnsfilter",
|
|
"relation": "calls",
|
|
"confidence": "EXTRACTED",
|
|
"confidence_score": 1.0,
|
|
"source_file": "apps/rebreak-native/ios/RebreakPacketTunnelExtension/PacketTunnelProvider.swift",
|
|
"source_location": "line 274",
|
|
"weight": 1.0
|
|
},
|
|
{
|
|
"source": "ios_packettunnel_packettunnelprovider",
|
|
"target": "ios_packettunnel_extlog",
|
|
"relation": "calls",
|
|
"confidence": "EXTRACTED",
|
|
"confidence_score": 1.0,
|
|
"source_file": "apps/rebreak-native/ios/RebreakPacketTunnelExtension/PacketTunnelProvider.swift",
|
|
"source_location": "line 67",
|
|
"weight": 1.0
|
|
},
|
|
{
|
|
"source": "ios_packettunnel_dnsfilter",
|
|
"target": "ios_packettunnel_hashlist",
|
|
"relation": "calls",
|
|
"confidence": "EXTRACTED",
|
|
"confidence_score": 1.0,
|
|
"source_file": "apps/rebreak-native/ios/RebreakPacketTunnelExtension/DnsFilter.swift",
|
|
"source_location": "line 98",
|
|
"weight": 1.0
|
|
},
|
|
{
|
|
"source": "ios_packettunnel_dnsfilter",
|
|
"target": "ios_packettunnel_dnsfilerdecision",
|
|
"relation": "references",
|
|
"confidence": "EXTRACTED",
|
|
"confidence_score": 1.0,
|
|
"source_file": "apps/rebreak-native/ios/RebreakPacketTunnelExtension/DnsFilter.swift",
|
|
"source_location": "line 57",
|
|
"weight": 1.0
|
|
},
|
|
{
|
|
"source": "ios_packettunnel_hashlist",
|
|
"target": "ios_packettunnel_domainhasher",
|
|
"relation": "calls",
|
|
"confidence": "EXTRACTED",
|
|
"confidence_score": 1.0,
|
|
"source_file": "apps/rebreak-native/ios/RebreakPacketTunnelExtension/HashList.swift",
|
|
"source_location": "line 139",
|
|
"weight": 1.0
|
|
},
|
|
{
|
|
"source": "ios_packettunnel_domainhasher",
|
|
"target": "ios_packettunnel_hashlist",
|
|
"relation": "conceptually_related_to",
|
|
"confidence": "INFERRED",
|
|
"confidence_score": 0.95,
|
|
"source_file": "apps/rebreak-native/ios/RebreakPacketTunnelExtension/DomainHasher.swift",
|
|
"source_location": "line 16",
|
|
"weight": 0.95
|
|
},
|
|
{
|
|
"source": "ios_rebreak_appdelegate",
|
|
"target": "ios_rebreak_reactnativedelegate",
|
|
"relation": "calls",
|
|
"confidence": "EXTRACTED",
|
|
"confidence_score": 1.0,
|
|
"source_file": "apps/rebreak-native/ios/ReBreak/AppDelegate.swift",
|
|
"source_location": "line 17",
|
|
"weight": 1.0
|
|
},
|
|
{
|
|
"source": "ios_rebreak_appicon_1024",
|
|
"target": "ios_rebreak_splashscreencolor",
|
|
"relation": "conceptually_related_to",
|
|
"confidence": "INFERRED",
|
|
"confidence_score": 0.75,
|
|
"source_file": "apps/rebreak-native/ios/ReBreak/Images.xcassets/SplashScreenBackground.colorset/Contents.json",
|
|
"source_location": null,
|
|
"weight": 0.75
|
|
},
|
|
{
|
|
"source": "stores_mailconsent_usemailconsentstore",
|
|
"target": "stores_mailconnectdraft_usemailconnectdraft",
|
|
"relation": "conceptually_related_to",
|
|
"confidence": "INFERRED",
|
|
"confidence_score": 0.85,
|
|
"source_file": "apps/rebreak-native/stores/mailConsent.ts",
|
|
"source_location": "line 1",
|
|
"weight": 0.85
|
|
},
|
|
{
|
|
"source": "stores_coach_usecoachstore",
|
|
"target": "stores_lyravoice_uselyravoicestore",
|
|
"relation": "conceptually_related_to",
|
|
"confidence": "INFERRED",
|
|
"confidence_score": 0.75,
|
|
"source_file": "apps/rebreak-native/stores/coach.ts",
|
|
"source_location": "line 33",
|
|
"weight": 0.75
|
|
},
|
|
{
|
|
"source": "ios_packettunnel_packettunnelprovider",
|
|
"target": "ios_packettunnel_domainhasher",
|
|
"relation": "conceptually_related_to",
|
|
"confidence": "INFERRED",
|
|
"confidence_score": 0.85,
|
|
"source_file": "apps/rebreak-native/ios/RebreakPacketTunnelExtension/PacketTunnelProvider.swift",
|
|
"source_location": "line 74",
|
|
"weight": 0.85
|
|
}
|
|
],
|
|
"hyperedges": [],
|
|
"input_tokens": 0,
|
|
"output_tokens": 0
|
|
}
|